@cotal-ai/connector-claude-code 0.10.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +69 -2
- package/dist/extension.d.ts.map +1 -1
- package/dist/extension.js +19 -2
- package/dist/extension.js.map +1 -1
- package/dist/hook.cjs +7638 -7
- package/dist/mcp.cjs +8440 -204
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -7,5 +7,72 @@ real `claude` session into a Cotal mesh peer. A thin client over
|
|
|
7
7
|
**Tier:** `extensions/`. Peer-depends [`@cotal-ai/core`](../../packages/core); self-registers on
|
|
8
8
|
import.
|
|
9
9
|
|
|
10
|
-
See [docs/claude
|
|
11
|
-
|
|
10
|
+
See [docs/connect-claude.md](../../docs/connect-claude.md) for the integration guide, and the
|
|
11
|
+
[root AGENTS.md](../../AGENTS.md) for the tier rules.
|
|
12
|
+
|
|
13
|
+
## Claude Code hook reference
|
|
14
|
+
|
|
15
|
+
The full set of Claude Code hook events, grouped by lifecycle — this is Claude *product*
|
|
16
|
+
surface, kept here with the adapter rather than in the protocol docs. Source:
|
|
17
|
+
[code.claude.com/docs/en/hooks](https://code.claude.com/docs/en/hooks) (Claude Code
|
|
18
|
+
2.1.16x, 31 events). The connector consumes the subset mapped in
|
|
19
|
+
[docs/connect-claude.md](../../docs/connect-claude.md) (presence mapping + message
|
|
20
|
+
delivery); the rest are listed for completeness.
|
|
21
|
+
|
|
22
|
+
### Once per session
|
|
23
|
+
| Event | Fires when | Matchers |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| `SessionStart` | a session begins or resumes | `startup`, `resume`, `clear`, `compact` |
|
|
26
|
+
| `Setup` | started with `--init-only`, or `--init`/`--maintenance` in `-p` | `init`, `maintenance` |
|
|
27
|
+
| `SessionEnd` | a session terminates | `clear`, `resume`, `logout`, `prompt_input_exit`, `bypass_permissions_disabled`, `other` |
|
|
28
|
+
|
|
29
|
+
### Once per turn
|
|
30
|
+
| Event | Fires when | Matchers |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| `UserPromptSubmit` | user submits a prompt, before Claude processes it | (none) |
|
|
33
|
+
| `UserPromptExpansion` | a typed command expands into a prompt | command name |
|
|
34
|
+
| `Stop` | Claude finishes responding | (none) |
|
|
35
|
+
| `StopFailure` | turn ends due to an API error | `rate_limit`, `authentication_failed`, `oauth_org_not_allowed`, `billing_error`, `invalid_request`, `model_not_found`, `server_error`, `max_output_tokens`, `unknown` |
|
|
36
|
+
|
|
37
|
+
### Per tool call (agentic loop)
|
|
38
|
+
| Event | Fires when | Matchers |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| `PreToolUse` | before a tool call executes (can block) | tool name |
|
|
41
|
+
| `PermissionRequest` | a permission dialog appears | tool name |
|
|
42
|
+
| `PermissionDenied` | a tool call denied by auto-mode classifier | tool name |
|
|
43
|
+
| `PostToolUse` | after a tool call succeeds | tool name |
|
|
44
|
+
| `PostToolUseFailure` | after a tool call fails | tool name |
|
|
45
|
+
| `PostToolBatch` | after a parallel tool batch resolves, before next model call | (none) |
|
|
46
|
+
| `SubagentStart` | a subagent is spawned | agent type |
|
|
47
|
+
| `SubagentStop` | a subagent finishes | agent type |
|
|
48
|
+
| `TaskCreated` | a task is created via `TaskCreate` | (none) |
|
|
49
|
+
| `TaskCompleted` | a task is marked completed | (none) |
|
|
50
|
+
| `TeammateIdle` | an agent-team teammate is about to go idle | (none) |
|
|
51
|
+
|
|
52
|
+
### Compaction
|
|
53
|
+
| Event | Fires when | Matchers |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| `PreCompact` | before context compaction | `manual`, `auto` |
|
|
56
|
+
| `PostCompact` | after compaction completes | `manual`, `auto` |
|
|
57
|
+
|
|
58
|
+
### Async / background
|
|
59
|
+
| Event | Fires when | Matchers |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| `CwdChanged` | working directory changes | (none) |
|
|
62
|
+
| `FileChanged` | a watched file changes on disk | literal filenames |
|
|
63
|
+
| `ConfigChange` | a config file changes mid-session | `user_settings`, `project_settings`, `local_settings`, `policy_settings`, `skills` |
|
|
64
|
+
| `InstructionsLoaded` | CLAUDE.md / `.claude/rules/*.md` loaded into context | `session_start`, `nested_traversal`, `path_glob_match`, `include`, `compact` |
|
|
65
|
+
| `Notification` | Claude Code emits a notification | `permission_prompt`, `idle_prompt`, `auth_success`, `elicitation_dialog`, `elicitation_complete`, `elicitation_response` |
|
|
66
|
+
| `MessageDisplay` | while assistant message text is displayed (display-only) | (none) |
|
|
67
|
+
|
|
68
|
+
### Worktree
|
|
69
|
+
| Event | Fires when | Matchers |
|
|
70
|
+
|---|---|---|
|
|
71
|
+
| `WorktreeCreate` | a worktree is created (`--worktree` / `isolation: "worktree"`) | (none) |
|
|
72
|
+
| `WorktreeRemove` | a worktree is removed | (none) |
|
|
73
|
+
|
|
74
|
+
### MCP elicitation
|
|
75
|
+
| Event | Fires when | Matchers |
|
|
76
|
+
|---|---|---|
|
|
77
|
+
| `Elicitation` | an MCP server requests user input during a tool call | MCP server name |
|
|
78
|
+
| `ElicitationResult` | after the user responds, before it is sent to the server | MCP server name |
|
package/dist/extension.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2D,KAAK,SAAS,EAAoC,MAAM,gBAAgB,CAAC;AAoB3I;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2D,KAAK,SAAS,EAAoC,MAAM,gBAAgB,CAAC;AAoB3I;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,SAmI7B,CAAC"}
|
package/dist/extension.js
CHANGED
|
@@ -3,7 +3,7 @@ import { tmpdir } from "node:os";
|
|
|
3
3
|
import { join, resolve } from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
5
|
import { hardenPrivate, loadAgentFile, registry, writeSecretFile } from "@cotal-ai/core";
|
|
6
|
-
import { aclEnv, controlEndpoint, launchEnv, mcpServerEnvKeys, transcriptChannel } from "@cotal-ai/connector-core";
|
|
6
|
+
import { aclEnv, connectorLaunchOptions, controlEndpoint, launchEnv, mcpServerEnvKeys, transcriptChannel, userAuthEnv } from "@cotal-ai/connector-core";
|
|
7
7
|
/** Name the cotal MCP server is registered under via --mcp-config (see buildLaunch). */
|
|
8
8
|
const MCP_SERVER_NAME = "cotal";
|
|
9
9
|
/** Channel ref for `--dangerously-load-development-channels`, which turns on the cotal MCP server's
|
|
@@ -33,6 +33,8 @@ export const claudeConnector = {
|
|
|
33
33
|
requires: ["claude"],
|
|
34
34
|
supportsResume: true, // renders `--resume <id> --fork-session` (fork-from, never hijack) — see buildLaunch
|
|
35
35
|
buildLaunch(opts) {
|
|
36
|
+
if (opts.variant)
|
|
37
|
+
throw new Error("claude connector: model variants are not supported");
|
|
36
38
|
// Operator MCP servers shared with this agent (default none — see the --mcp-config block).
|
|
37
39
|
const shared = opts.mcpServers ?? {};
|
|
38
40
|
// claude auths via macOS Keychain / an OAuth token, not an env key → forward NO provider key.
|
|
@@ -47,6 +49,7 @@ export const claudeConnector = {
|
|
|
47
49
|
const env = {
|
|
48
50
|
...launchEnv({ mcpKeys: mcpServerEnvKeys(shared) }),
|
|
49
51
|
...aclEnv(opts),
|
|
52
|
+
...userAuthEnv(opts),
|
|
50
53
|
COTAL_SPACE: opts.space,
|
|
51
54
|
COTAL_NAME: opts.name,
|
|
52
55
|
// Force the connector to emit channel wake-nudges: Claude doesn't advertise the
|
|
@@ -123,8 +126,10 @@ export const claudeConnector = {
|
|
|
123
126
|
model ??= def.model;
|
|
124
127
|
}
|
|
125
128
|
// The `--model` flag wins over the agent file, and applies even with no agent file.
|
|
126
|
-
if (model)
|
|
129
|
+
if (model) {
|
|
127
130
|
args.push("--model", model);
|
|
131
|
+
env.COTAL_MODEL = model;
|
|
132
|
+
}
|
|
128
133
|
// Fork an existing session INTO the mesh (opts.resume, an opaque host-local id). `--fork-session`
|
|
129
134
|
// is pushed in the SAME branch — resume here is fork-only, never a hijack: claude mints a NEW
|
|
130
135
|
// session id from that transcript and leaves the original untouched. The id is a single argv
|
|
@@ -132,6 +137,18 @@ export const claudeConnector = {
|
|
|
132
137
|
// above still applies, so the forked context runs under the current mesh persona.
|
|
133
138
|
if (opts.resume)
|
|
134
139
|
args.push("--resume", opts.resume, "--fork-session");
|
|
140
|
+
// Opaque connector options → native `claude` flags, RAW passthrough: `key=value` renders
|
|
141
|
+
// `--key value`, and an empty value (`--opt foo=`) renders a bare boolean `--foo`. No allow-list,
|
|
142
|
+
// no deny-list — the spawn capability is the trust boundary (see connectorLaunchOptions), not the
|
|
143
|
+
// flag set. An operator can already run `claude` with any flag directly, and a peer's cotal_spawn
|
|
144
|
+
// is gated by the spawn capability itself; every `claude` flag is forwarded verbatim.
|
|
145
|
+
for (const [k, v] of connectorLaunchOptions("claude", opts.launchOptions)) {
|
|
146
|
+
const val = String(v);
|
|
147
|
+
if (val === "")
|
|
148
|
+
args.push(`--${k}`);
|
|
149
|
+
else
|
|
150
|
+
args.push(`--${k}`, val);
|
|
151
|
+
}
|
|
135
152
|
return {
|
|
136
153
|
command: "claude",
|
|
137
154
|
args,
|
package/dist/extension.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAoD,MAAM,gBAAgB,CAAC;AAC3I,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
|