Metadata-Version: 2.4
Name: infinium-cline-connector
Version: 1.0.0
Summary: Bridge between Cline (VS Code extension) hooks and Infinium agent tracing
Project-URL: Homepage, https://github.com/xyendigital/infinium-cline-connector
Project-URL: Repository, https://github.com/xyendigital/infinium-cline-connector
Project-URL: Documentation, https://i42m.ai/docs/cline/index
Project-URL: Bug Tracker, https://github.com/xyendigital/infinium-cline-connector/issues
Author-email: Infinium <support@i42m.ai>
License: MIT License
        
        Copyright (c) 2026 Infinium
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
License-File: LICENSE
Keywords: agent,claude-dev,cline,hooks,infinium,observability,tracing,vscode
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Requires-Dist: click>=8.0.0
Requires-Dist: infinium-o2<2.0.0,>=1.0.0
Requires-Dist: keyring>=24.0.0
Provides-Extra: dev
Requires-Dist: black>=23.7.0; extra == 'dev'
Requires-Dist: isort>=5.12.0; extra == 'dev'
Requires-Dist: mypy>=1.5.0; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.21.0; extra == 'dev'
Requires-Dist: pytest-cov>=4.1.0; extra == 'dev'
Requires-Dist: pytest-mock>=3.11.0; extra == 'dev'
Requires-Dist: pytest>=7.4.0; extra == 'dev'
Provides-Extra: server
Requires-Dist: starlette>=0.27.0; extra == 'server'
Requires-Dist: uvicorn[standard]>=0.23.0; extra == 'server'
Description-Content-Type: text/markdown

# Infinium Cline Connector

Bridge between [Cline](https://github.com/cline/cline) (VS Code extension) hooks and [Infinium](https://i42m.ai) agent tracing. Automatically captures Cline tasks — tool calls, prompts, token usage — and sends structured traces to the Infinium platform for Maestro analysis.

## Quick Start

Navigate to your project, install, and set up:

```bash
cd /path/to/your/project
pip install infinium-cline-connector
infinium-cline init
infinium-cline test       # verify credentials + network
```

Then in VS Code: **Settings → Extensions → Cline → Features → Enable Hooks**.

That's it. Now just use Cline as you normally would — every task is automatically traced to Infinium.

> If `infinium-cline` is not on your PATH, use `python -m infinium_cline_connector` as a drop-in replacement.

## Requirements

- Python 3.9+
- Cline VS Code extension **v3.36+** with hooks enabled (Settings → Cline → Features → Enable Hooks)
- An Infinium agent ID and secret

## How It Works

After `infinium-cline init`, Cline fires a command hook for each event. The hook writes a JSON response on stdout (required by Cline), stores the event, and returns instantly.

```
Cline (VS Code) ──command hook──> python -m infinium_cline_connector.hook
                                      │
                                      ├─ IMMEDIATELY writes stdout response (required)
                                      ├─ append event to session JSONL file
                                      │
                                      └─ on TaskComplete / TaskCancel:
                                           spawn detached background worker
                                           → replay events → aggregate
                                           → read ui_messages.json for tokens
                                           → send trace
                                                                       │
                                                                       ▼
                                                               Infinium API
                                                           POST /agents/{id}/trace
```

1. Cline fires a command hook for each event (tool call, prompt, etc.) with a nested JSON payload.
2. The hook writes `{"cancel": false, "contextModification": null, "errorMessage": null}` to stdout — Cline hangs without it.
3. On `TaskComplete` or `TaskCancel`, a detached background worker replays all events, reads Cline's `ui_messages.json` for token usage, aggregates, and sends a trace.

## CLI Reference

### `infinium-cline init`

Interactive setup wizard. Writes hook scripts into `.clinerules/hooks/`.

```
Options:
  --agent-id TEXT        Agent ID (skip prompt)
  --agent-secret TEXT    Agent Secret (skip prompt)
  --base-url TEXT        API base URL
  --no-interactive       Use flags only, no prompts (for CI/scripting)
```

### `infinium-cline test`

Send a minimal test trace to verify credentials + network.

```
Options:
  -v, --verbose    Show the full trace payload before sending
```

### `infinium-cline status`

Show current configuration: tracing state, credentials, config source, hook locations, pending retries.

### `infinium-cline pause` / `infinium-cline resume`

Temporarily stop or restart tracing. Hooks stay installed — events are silently skipped while paused.

### `infinium-cline history`

View recently sent traces.

```
Options:
  -n, --limit N    Number of entries (default: 10)
  --json           Output raw JSON lines
  --clear          Delete all history
```

### `infinium-cline errors`

View the connector error log (network failures, bad payloads, keyring issues).

### `infinium-cline retry`

Resend traces that failed due to network issues.

### `infinium-cline update-credentials`

Update your Agent ID or Secret.

### `infinium-cline uninstall`

Remove the connector completely — hook scripts, config file, and keyring secret.

### `infinium-cline cleanup`

Remove stale session files (housekeeping).

### `infinium-cline start`

Start HTTP server mode (requires `pip install infinium-cline-connector[server]`).

## Per-Project Configuration

Each project traces to its own Infinium agent:

```bash
cd /path/to/project-a
infinium-cline init    # Agent A credentials

cd /path/to/project-b
infinium-cline init    # Agent B credentials
```

Config resolution order:
1. **Project config** (`.infinium/config.json` at or above the working directory)
2. **Environment variables** (`INFINIUM_AGENT_ID`, `INFINIUM_AGENT_SECRET` — override for CI/Docker)

Add `.infinium/` to your `.gitignore`.

## Credential Storage

- **Agent ID** and **API URL** are stored in the project config file (`.infinium/config.json`)
- **Agent Secret** is stored in your **OS keyring**:
  - Windows: Credential Manager
  - macOS: Keychain
  - Linux: Secret Service (GNOME Keyring / KWallet)
- Environment variables (`INFINIUM_AGENT_ID`, `INFINIUM_AGENT_SECRET`) override stored values — useful for CI/Docker

## What Gets Traced

| Field | Source |
|-------|--------|
| **name** | First user prompt, truncated |
| **description** | First user prompt (full) |
| **duration** | Total task duration in seconds |
| **steps** | Ordered list: user prompts, tool calls |
| **errors** | Tool failures (`success: false` in `postToolUse`) |
| **environment** | Model (provider/slug), workspace root, Cline version |
| **llm_usage** | Input / output / cache-read / cache-write tokens, total cost (from `ui_messages.json`) |

### Captured Events

| Event | What It Captures |
|-------|-----------------|
| `TaskStart` / `TaskResume` | Task description, model, workspace root |
| `UserPromptSubmit` | User prompt text (truncated) |
| `PreToolUse` / `PostToolUse` | Tool name, parameters, result, success, duration |
| `PreCompact` | Conversation length + estimated tokens before compact |
| `TaskComplete` / `TaskCancel` | Triggers trace flush |

## Configuration

Environment variables (all optional — `init` handles the common case):

```bash
# Credentials (override config file + keyring)
INFINIUM_AGENT_ID=...
INFINIUM_AGENT_SECRET=...
INFINIUM_BASE_URL=...

# Connector behavior
CONNECTOR_QUIET=false              # Suppress output
CONNECTOR_FLUSH_ON_SESSION_END=true
CONNECTOR_SESSION_TTL=1800         # Stale session cleanup threshold (seconds)
CONNECTOR_SESSION_DIR=...          # Override temp directory for session files
```

## Documentation

Full documentation: [i42m.ai/docs/cline](https://i42m.ai/docs/cline/index)

## License

MIT
