cotal-ai 0.79.0 → 0.82.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.
Files changed (56) hide show
  1. package/package.json +16 -16
  2. package/seeded-connectors/claude/.mcp.json +1 -1
  3. package/seeded-connectors/claude/dist/agui-map.d.ts +7 -0
  4. package/seeded-connectors/claude/dist/agui-map.d.ts.map +1 -1
  5. package/seeded-connectors/claude/dist/agui-source.d.ts.map +1 -1
  6. package/seeded-connectors/claude/dist/carried.d.ts +1 -1
  7. package/seeded-connectors/claude/dist/carried.d.ts.map +1 -1
  8. package/seeded-connectors/claude/dist/extension.d.ts.map +1 -1
  9. package/seeded-connectors/claude/dist/hook.cjs +37 -18
  10. package/seeded-connectors/claude/dist/hooks.d.ts +2 -0
  11. package/seeded-connectors/claude/dist/hooks.d.ts.map +1 -1
  12. package/seeded-connectors/claude/dist/index.js +13 -48
  13. package/seeded-connectors/claude/dist/mcp.cjs +960 -344
  14. package/seeded-connectors/claude/dist/mcp.d.cts +34 -0
  15. package/seeded-connectors/claude/dist/mcp.d.ts +33 -1
  16. package/seeded-connectors/claude/dist/mcp.d.ts.map +1 -1
  17. package/seeded-connectors/claude/dist/trust.d.ts +5 -7
  18. package/seeded-connectors/claude/dist/trust.d.ts.map +1 -1
  19. package/seeded-connectors/claude/hooks/hooks.json +10 -0
  20. package/seeded-connectors/claude/package.json +7 -3
  21. package/seeded-connectors/codex/dist/extension.d.ts.map +1 -1
  22. package/seeded-connectors/codex/dist/host.d.ts.map +1 -1
  23. package/seeded-connectors/codex/dist/host.js +796 -260
  24. package/seeded-connectors/codex/dist/index.js +4 -0
  25. package/seeded-connectors/codex/package.json +1 -1
  26. package/seeded-connectors/hermes/dist/launch.js +259 -182
  27. package/seeded-connectors/hermes/package.json +1 -1
  28. package/seeded-connectors/hermes/plugin/cotal/_sidecar/standalone.cjs +259 -182
  29. package/seeded-connectors/jcode/dist/agui-source.d.ts +1 -0
  30. package/seeded-connectors/jcode/dist/agui-source.d.ts.map +1 -1
  31. package/seeded-connectors/jcode/dist/host.d.ts.map +1 -1
  32. package/seeded-connectors/jcode/dist/host.js +849 -306
  33. package/seeded-connectors/jcode/dist/mcp.js +66 -45
  34. package/seeded-connectors/jcode/package.json +1 -1
  35. package/seeded-connectors/opencode/dist/agui-map.d.ts +3 -0
  36. package/seeded-connectors/opencode/dist/agui-map.d.ts.map +1 -1
  37. package/seeded-connectors/opencode/dist/agui-source.d.ts +18 -0
  38. package/seeded-connectors/opencode/dist/agui-source.d.ts.map +1 -1
  39. package/seeded-connectors/opencode/dist/launch.d.ts.map +1 -1
  40. package/seeded-connectors/opencode/dist/launch.js +26 -19
  41. package/seeded-connectors/opencode/dist/opencode2-types.d.ts +6 -0
  42. package/seeded-connectors/opencode/dist/opencode2-types.d.ts.map +1 -1
  43. package/seeded-connectors/opencode/dist/plugin/index.js +843 -297
  44. package/seeded-connectors/opencode/dist/plugin.d.ts.map +1 -1
  45. package/seeded-connectors/opencode/dist/plugin2.d.ts.map +1 -1
  46. package/seeded-connectors/opencode/dist/serve.js +26 -19
  47. package/seeded-connectors/opencode/package.json +1 -1
  48. package/seeded-connectors/pi/dist/agui-source.d.ts +1 -0
  49. package/seeded-connectors/pi/dist/agui-source.d.ts.map +1 -1
  50. package/seeded-connectors/pi/dist/events.d.ts +4 -3
  51. package/seeded-connectors/pi/dist/events.d.ts.map +1 -1
  52. package/seeded-connectors/pi/dist/extension.d.ts.map +1 -1
  53. package/seeded-connectors/pi/dist/index.js +597 -130
  54. package/seeded-connectors/pi/dist/standalone.js +802 -275
  55. package/seeded-connectors/pi/package.json +1 -1
  56. package/seeded-connectors/web/package.json +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cotal-ai",
3
- "version": "0.79.0",
3
+ "version": "0.82.0",
4
4
  "description": "Cotal — lateral agent coordination over NATS. Run `npx cotal-ai` for the CLI.",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -33,24 +33,24 @@
33
33
  "node": ">=22"
34
34
  },
35
35
  "dependencies": {
36
- "@cotal-ai/auth": "0.79.0",
37
- "@cotal-ai/cli": "0.79.0",
38
- "@cotal-ai/connector-core": "0.79.0",
39
- "@cotal-ai/core": "0.79.0",
40
- "@cotal-ai/delivery": "0.79.0",
41
- "@cotal-ai/manager": "0.79.0",
42
- "@cotal-ai/runtime": "0.79.0",
43
- "@cotal-ai/workspace": "0.79.0"
36
+ "@cotal-ai/auth": "0.82.0",
37
+ "@cotal-ai/cli": "0.82.0",
38
+ "@cotal-ai/connector-core": "0.82.0",
39
+ "@cotal-ai/core": "0.82.0",
40
+ "@cotal-ai/delivery": "0.82.0",
41
+ "@cotal-ai/manager": "0.82.0",
42
+ "@cotal-ai/runtime": "0.82.0",
43
+ "@cotal-ai/workspace": "0.82.0"
44
44
  },
45
45
  "devDependencies": {
46
- "@cotal-ai/connector-claude-code": "0.79.0",
47
- "@cotal-ai/connector-codex": "0.79.0",
48
- "@cotal-ai/connector-hermes": "0.79.0",
49
- "@cotal-ai/connector-jcode": "0.79.0",
50
- "@cotal-ai/connector-opencode": "0.79.0",
51
- "@cotal-ai/pi": "0.79.0",
46
+ "@cotal-ai/connector-claude-code": "0.82.0",
47
+ "@cotal-ai/connector-codex": "0.82.0",
48
+ "@cotal-ai/connector-hermes": "0.82.0",
49
+ "@cotal-ai/connector-jcode": "0.82.0",
50
+ "@cotal-ai/connector-opencode": "0.82.0",
51
+ "@cotal-ai/pi": "0.82.0",
52
52
  "@cotal-ai/smoke-kit": "0.0.0",
53
- "@cotal-ai/web": "0.79.0",
53
+ "@cotal-ai/web": "0.82.0",
54
54
  "@nats-io/jetstream": "^3.4.0",
55
55
  "@nats-io/transport-node": "^3.4.0",
56
56
  "typescript": "^5.9.3"
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "cotal": {
4
4
  "command": "node",
5
- "args": ["${CLAUDE_PLUGIN_ROOT}/dist/mcp.cjs"]
5
+ "args": ["--optimize-for-size", "--max-semi-space-size=1", "${CLAUDE_PLUGIN_ROOT}/dist/mcp.cjs"]
6
6
  }
7
7
  }
8
8
  }
@@ -137,6 +137,13 @@ export interface ClaudeMapperOptions {
137
137
  threadId: string;
138
138
  /** Mints a `runId`. Connector-minted by §3.1, so every `RUN_STARTED` carries `runIdSource`. */
139
139
  mintRunId: () => string;
140
+ /**
141
+ * The run the write-ahead log has open when this mapper is built, so a mapper built for a
142
+ * re-established plane attributes the next assistant records to it. Without it the mapper
143
+ * opens with no run, drops every assistant record until the next prompt, and that prompt's
144
+ * `RUN_STARTED` is refused by brackets that still hold the earlier run open.
145
+ */
146
+ resumeRunId?: string;
140
147
  /**
141
148
  * Emit `REASONING_*` for `thinking` blocks. **Off by default (§7 Q1).** The `signature` is never
142
149
  * emitted at any setting (§3.5) and is not read by this module at all.
@@ -1 +1 @@
1
- {"version":3,"file":"agui-map.d.ts","sourceRoot":"","sources":["../src/agui-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AACH,OAAO,EAEL,KAAK,YAAY,EAalB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6FAA6F;IAC7F,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;KAClC,CAAC;CACH;AAmHD,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oBAAoB;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,gGAAgG;IAChG,QAAQ,EAAE,MAAM,CAAC;IACjB,+FAA+F;IAC/F,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,uGAAuG;AACvG,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IAC/B;;;;;;;;;;;;;;;OAeG;IACH,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAiBD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY,CAwM1E"}
1
+ {"version":3,"file":"agui-map.d.ts","sourceRoot":"","sources":["../src/agui-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AACH,OAAO,EAEL,KAAK,YAAY,EAalB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6FAA6F;IAC7F,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;KAClC,CAAC;CACH;AAmHD,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oBAAoB;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,gGAAgG;IAChG,QAAQ,EAAE,MAAM,CAAC;IACjB,+FAA+F;IAC/F,SAAS,EAAE,MAAM,MAAM,CAAC;IACxB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,uGAAuG;AACvG,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IAC/B;;;;;;;;;;;;;;;OAeG;IACH,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAiBD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,GAAG,YAAY,CA2M1E"}
@@ -1 +1 @@
1
- {"version":3,"file":"agui-source.d.ts","sourceRoot":"","sources":["../src/agui-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAqC,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAClH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAUjD,MAAM,WAAW,0BAA0B;IACzC;uCACmC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAID,wBAAsB,8BAA8B,CAAC,CAAC,EACpD,IAAI,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAClC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAC9D,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAiCxB;AA2BD,8FAA8F;AAC9F,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,OAAO,EACtB,IAAI,GAAE,0BAA+B,GACpC,aAAa,CAAC,WAAW,CAAC,CAiB5B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,OAAO,EACtB,IAAI,GAAE,0BAA+B,GACpC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAKrC"}
1
+ {"version":3,"file":"agui-source.d.ts","sourceRoot":"","sources":["../src/agui-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAqC,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAClH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAUjD,MAAM,WAAW,0BAA0B;IACzC;uCACmC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAID,wBAAsB,8BAA8B,CAAC,CAAC,EACpD,IAAI,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAClC,IAAI,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,GAC9D,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAiCxB;AA+BD,8FAA8F;AAC9F,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,OAAO,EACtB,IAAI,GAAE,0BAA+B,GACpC,aAAa,CAAC,WAAW,CAAC,CAiB5B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,OAAO,EACtB,IAAI,GAAE,0BAA+B,GACpC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAKrC"}
@@ -8,7 +8,7 @@ export declare function refuseCarriedLaunch(binary: string, seatEnv: Record<stri
8
8
  /** Where a carried seat writes its fork record: the manager's {@link LaunchSpec.resumeRecordPath}. */
9
9
  export declare function carriedForkRecord(home: string): string;
10
10
  /** Fill the seat's home: the carried transcript where `--resume` finds it, and the first-run state a
11
- * fresh home would otherwise prompt for, trusting only the launch directory already checked. */
11
+ * fresh home would otherwise prompt for, trusting the authorized launch directory. */
12
12
  export declare function placeCarried(home: string, transcript: string, resume: string | undefined, cwd: string): Record<string, string>;
13
13
  /**
14
14
  * Write a carried seat's fork record once Claude has forked: the digest of the transcript its
@@ -1 +1 @@
1
- {"version":3,"file":"carried.d.ts","sourceRoot":"","sources":["../src/carried.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAiD9D,eAAO,MAAM,sBAAsB,EAAE,uBAqBpC,CAAC;AAUF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAWzF;AAED,sGAAsG;AACtG,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;iGACiG;AACjG,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ9H;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAY3F"}
1
+ {"version":3,"file":"carried.d.ts","sourceRoot":"","sources":["../src/carried.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAiD9D,eAAO,MAAM,sBAAsB,EAAE,uBAqBpC,CAAC;AAUF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAWzF;AAED,sGAAsG;AACtG,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED;uFACuF;AACvF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ9H;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAY3F"}
@@ -1 +1 @@
1
- {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgD,KAAK,SAAS,EAAoC,MAAM,gBAAgB,CAAC;AAQhI;;;;;;;;;4FAS4F;AAC5F,eAAO,MAAM,oBAAoB,8/DA4EvB,CAAC;AAgDX;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,SAyM7B,CAAC"}
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgD,KAAK,SAAS,EAAoC,MAAM,gBAAgB,CAAC;AAQhI;;;;;;;;;4FAS4F;AAC5F,eAAO,MAAM,oBAAoB,8/DA4EvB,CAAC;AAgDX;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,SA4M7B,CAAC"}
@@ -24153,6 +24153,8 @@ var AJV_PROFILE_OPTIONS = Object.freeze({
24153
24153
  // a caller starts reading `errors.length`, or a verdict diverges between the settings — this
24154
24154
  // pin must be re-measured before it stays.
24155
24155
  allErrors: true,
24156
+ // JSON members are own properties. Host prototype names never satisfy required/properties.
24157
+ ownProperties: true,
24156
24158
  validateFormats: false,
24157
24159
  loadSchema: void 0,
24158
24160
  // PINNED, never inherited from Ajv's default: the safe-pattern analyzer models `/u`
@@ -24622,18 +24624,6 @@ var MANAGER_ADMIN_SNAP = Object.freeze([...MANAGER_ADMIN_COMMANDS]);
24622
24624
  // ../../packages/core/dist/lifecycle-state.js
24623
24625
  var dec3 = new TextDecoder();
24624
24626
 
24625
- // ../../packages/core/dist/lifecycle-saga.js
24626
- var enc3 = new TextEncoder();
24627
- var dec4 = new TextDecoder();
24628
-
24629
- // ../../packages/core/dist/endpoint-cluster.js
24630
- var TRAIT_GUARDED = "ai.cotal.guarded";
24631
- var TRAIT_PRICED = "ai.cotal.priced";
24632
- var GOVERNED_TRAIT_URNS = Object.freeze([TRAIT_GUARDED, TRAIT_PRICED]);
24633
-
24634
- // ../../packages/core/dist/evict.js
24635
- var import_transport_node3 = __toESM(require_transport_node(), 1);
24636
-
24637
24627
  // ../../node_modules/.pnpm/@nats-io+jwt@0.0.10-5/node_modules/@nats-io/jwt/esm/jwt.js
24638
24628
  var Types;
24639
24629
  (function(Types2) {
@@ -26244,6 +26234,25 @@ var Algorithms;
26244
26234
  // ../../packages/core/dist/identity.js
26245
26235
  var import_nkeys = __toESM(require_mod2(), 1);
26246
26236
 
26237
+ // ../../packages/core/dist/remote-manager-authority.js
26238
+ var REMOTE_MANAGER_AUTHORITY_OPERATIONS = Object.freeze(["prepare", "activate", "renew", "session", "retire", "renewStandingBundle", "renewRunDriver", "transferReader"]);
26239
+ var MANAGED_AGENT_RUNTIME_STATES = Object.freeze(["reserved", "creating", "bound", "create-unknown", "closing", "closed"]);
26240
+ var MANAGED_AGENT_RUNTIME_READINESS = Object.freeze(["ready", "bound-not-ready", "none"]);
26241
+ var MANAGED_AGENT_RETIREMENT_PHASES = Object.freeze(["intent", "released", "retired", "deprovisioned", "terminal"]);
26242
+ var REMOTE_MANAGER_IDENTITY_NAMES = Object.freeze(["supervisor", "executor", "serve", "goalWriter", "sessionLedger"]);
26243
+
26244
+ // ../../packages/core/dist/lifecycle-saga.js
26245
+ var enc3 = new TextEncoder();
26246
+ var dec4 = new TextDecoder();
26247
+
26248
+ // ../../packages/core/dist/endpoint-cluster.js
26249
+ var TRAIT_GUARDED = "ai.cotal.guarded";
26250
+ var TRAIT_PRICED = "ai.cotal.priced";
26251
+ var GOVERNED_TRAIT_URNS = Object.freeze([TRAIT_GUARDED, TRAIT_PRICED]);
26252
+
26253
+ // ../../packages/core/dist/evict.js
26254
+ var import_transport_node3 = __toESM(require_transport_node(), 1);
26255
+
26247
26256
  // ../../packages/core/dist/endpoint-service.js
26248
26257
  var SOURCE_CHAIN_ID = "[A-Za-z0-9_-]{1,64}";
26249
26258
  var SOURCE_CHAIN_ELEMENT = new RegExp(`^(root|handle\\.${SOURCE_CHAIN_ID}\\.${SOURCE_CHAIN_ID}|session\\.${SOURCE_CHAIN_ID})$`);
@@ -26502,6 +26511,10 @@ var CREDENTIAL_LIFETIMES = {
26502
26511
  "transfer-reader": { class: "one-shot", defaultTtlSeconds: FIVE_MINUTES, note: "one transcript-receive or sweep over the minting instance's own transfer bucket" },
26503
26512
  "endpoint-evictor": { class: "one-shot", defaultTtlSeconds: 60, note: "one re-registration's verify-evict window: a scoped delivery-admin caller that kicks+verifies the SUPERSEDED serve family before the epoch advances; 60s bounds a copied cred to a minute" },
26504
26513
  "remote-manager": { class: "standing-renewable", defaultTtlSeconds: STANDING_RENEWABLE_TTL_SEC, renewalOwner: "auth-service", note: "the scoped remote manager lifecycle: own lease/presence plus same-owner agent provisioning; issued only by the typed supervise protocol, never by cotal mint or a raw view/profile string" },
26514
+ "environment-bootstrap": { class: "one-shot", defaultTtlSeconds: FIVE_MINUTES, note: "one admitted environment's bootstrap caller; explicit expiry capped by admission and five minutes" },
26515
+ "environment-manager-supervisor": { class: "standing-renewable", renewalOwner: "environment-authority", note: "own lease/presence/liveness; explicit expiry capped by admission, no auth-store access" },
26516
+ "environment-manager-executor": { class: "standing-renewable", renewalOwner: "environment-authority", note: "own admitted authority instance RPC; explicit expiry capped by admission, no direct store access" },
26517
+ "environment-manager-goal-writer": { class: "standing-renewable", renewalOwner: "environment-authority", note: "manager goal rows without the auth-read belt; explicit expiry capped by admission" },
26505
26518
  "membership-observer": { class: "rotation-renewed", defaultTtlSeconds: ROTATION_RENEWED_TTL_SEC, renewalOwner: "system-account rotation", note: "$SYS-account CONNZ observer; NOT online-renewable ($SYS seed dies at `up`) - bounded exp, renewed only by rotateSystemAccount + broker restart; doctor warns near expiry" },
26506
26519
  "connection-evictor": { class: "rotation-renewed", defaultTtlSeconds: ROTATION_RENEWED_TTL_SEC, renewalOwner: "system-account rotation", note: "$SYS-account KICK-only live-eviction cred; same rotation-renewed posture as the observer" }
26507
26520
  };
@@ -26619,12 +26632,18 @@ var Registry = class {
26619
26632
  };
26620
26633
  var registry2 = new Registry();
26621
26634
 
26622
- // ../../packages/core/dist/remote-manager-authority.js
26623
- var REMOTE_MANAGER_AUTHORITY_OPERATIONS = Object.freeze(["prepare", "activate", "renew", "session", "retire", "renewStandingBundle", "renewRunDriver", "transferReader"]);
26624
- var MANAGED_AGENT_RUNTIME_STATES = Object.freeze(["reserved", "creating", "bound", "create-unknown", "closing", "closed"]);
26625
- var MANAGED_AGENT_RUNTIME_READINESS = Object.freeze(["ready", "bound-not-ready", "none"]);
26626
- var MANAGED_AGENT_RETIREMENT_PHASES = Object.freeze(["intent", "released", "retired", "deprovisioned", "terminal"]);
26627
- var REMOTE_MANAGER_IDENTITY_NAMES = Object.freeze(["supervisor", "executor", "serve", "goalWriter", "sessionLedger"]);
26635
+ // ../../packages/core/dist/delegated-recovery.js
26636
+ var DELEGATED_RECOVERY_REASONS = Object.freeze([
26637
+ "provider-unknown",
26638
+ "store-unavailable",
26639
+ "authority-unavailable",
26640
+ "identity-unverified",
26641
+ "descriptor-incomplete",
26642
+ "retiring",
26643
+ "authority-drift",
26644
+ "identity-changed",
26645
+ "scope-changed"
26646
+ ]);
26628
26647
 
26629
26648
  // ../../packages/core/dist/agui-kind.js
26630
26649
  var AGUI_EVENT_TYPE = Object.freeze({
@@ -2,6 +2,8 @@ import { type MeshAgent, type InboxItem, type HookEvent, type HookHandle } from
2
2
  import type { AguiEmitterHolder } from "@cotal-ai/connector-core";
3
3
  import type { ClaudeEntry } from "./agui-map.js";
4
4
  export interface ClaudeHandleDeps {
5
+ /** Launch environment for a hosted session's carried-fork record. Omitted uses the process env. */
6
+ env?: NodeJS.ProcessEnv;
5
7
  /** The session's AG-UI emitter, read lazily — `mcp.ts` assigns it after the handler exists. */
6
8
  events?: () => AguiEmitterHolder<ClaudeEntry, unknown> | undefined;
7
9
  /** Told which inbox items a frame surfaced; pass {@link WakePolicy.surfaced}. */
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAcA,OAAO,EAML,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA+EjD,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACnE,iFAAiF;IACjF,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,KAAK,IAAI,CAAC;CAClD;AAOD;;+DAE+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,iDAAiD;IACjD,OAAO,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CACtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,gBAAqB,GAAG,WAAW,CA4S3E;AAED,wEAAwE;AACxE,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5H,MAAM,WAAW,UAAU;IACzB,+EAA+E;IAC/E,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC;+FAC2F;IAC3F,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAAC;IAC5C,sCAAsC;IACtC,IAAI,IAAI,IAAI,CAAC;CACd;AAKD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAe,GAAG,UAAU,CAsH3H"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAcA,OAAO,EAML,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,UAAU,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA+EjD,MAAM,WAAW,gBAAgB;IAC/B,mGAAmG;IACnG,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,iBAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACnE,iFAAiF;IACjF,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,KAAK,IAAI,CAAC;CAClD;AAOD;;+DAE+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,iDAAiD;IACjD,OAAO,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CACtD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,gBAAqB,GAAG,WAAW,CAoU3E;AAED,wEAAwE;AACxE,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5H,MAAM,WAAW,UAAU;IACzB,+EAA+E;IAC/E,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACxC;+FAC2F;IAC3F,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAAC;IAC5C,sCAAsC;IACtC,IAAI,IAAI,IAAI,CAAC;CACd;AAKD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAe,GAAG,UAAU,CAsH3H"}
@@ -15120,8 +15120,8 @@ var claudeSetupProvider = {
15120
15120
  run(prompt) {
15121
15121
  const sessionArgs = assistSession ? ["--resume", assistSession] : ["--session-id", assistSession = randomUUID()];
15122
15122
  const child = spawn("claude", [prompt, "--permission-mode", "auto", ...sessionArgs], { stdio: "inherit" });
15123
- return new Promise((resolve3, reject) => {
15124
- child.on("exit", () => resolve3());
15123
+ return new Promise((resolve2, reject) => {
15124
+ child.on("exit", () => resolve2());
15125
15125
  child.on("error", reject);
15126
15126
  });
15127
15127
  }
@@ -15138,7 +15138,7 @@ var claudeSetupProvider = {
15138
15138
  registry3.register(claudeSetupProvider);
15139
15139
 
15140
15140
  // src/extension.ts
15141
- import { resolve as resolve2 } from "node:path";
15141
+ import { resolve } from "node:path";
15142
15142
  import { fileURLToPath as fileURLToPath2 } from "node:url";
15143
15143
  import { loadAgentFile as loadAgentFile2, registry as registry4, writeLaunchArtifact } from "@cotal-ai/core";
15144
15144
 
@@ -15234,46 +15234,10 @@ function placeCarried(home, transcript, resume, cwd) {
15234
15234
  }
15235
15235
 
15236
15236
  // src/trust.ts
15237
- import { existsSync as existsSync2, readFileSync as readFileSync3, realpathSync, statSync } from "node:fs";
15238
- import { homedir as homedir3 } from "node:os";
15239
- import { basename, dirname as dirname2, join as join4, resolve } from "node:path";
15240
- function stateFile(env) {
15241
- return env.CLAUDE_CONFIG_DIR ? join4(env.CLAUDE_CONFIG_DIR, ".claude.json") : join4(env.HOME || homedir3(), ".claude.json");
15242
- }
15243
- function repoRoot(dir) {
15244
- for (; ; dir = dirname2(dir)) {
15245
- if (existsSync2(join4(dir, ".git"))) return dir;
15246
- if (dirname2(dir) === dir) return void 0;
15247
- }
15248
- }
15249
- function trustKey(root) {
15250
- const dotGit = join4(root, ".git");
15251
- const link = statSync(dotGit).isFile() && /^gitdir:(.*)/.exec(readFileSync3(dotGit, "utf8").trim());
15252
- if (!link) return root;
15253
- const gitDir = resolve(root, link[1].trim());
15254
- const pointer = (name) => existsSync2(join4(gitDir, name)) ? resolve(gitDir, readFileSync3(join4(gitDir, name), "utf8").trim()) : void 0;
15255
- const common = pointer("commondir"), back = pointer("gitdir");
15256
- if (common === void 0 || back === void 0 || dirname2(gitDir) !== join4(common, "worktrees")) return root;
15257
- if (!existsSync2(back) || realpathSync(back) !== join4(realpathSync(root), ".git")) return root;
15258
- return basename(common) === ".git" ? dirname2(common) : common;
15259
- }
15260
- function refuseUntrustedCwd(cwd) {
15261
- let projects;
15262
- try {
15263
- projects = JSON.parse(readFileSync3(stateFile(process.env), "utf8")).projects;
15264
- } catch (e) {
15265
- if (e.code !== "ENOENT") throw e;
15266
- }
15267
- const trusted = (dir) => projects?.[dir]?.hasTrustDialogAccepted === true;
15268
- const root = repoRoot(cwd);
15269
- if (root !== void 0 && trusted(trustKey(root))) return;
15270
- for (let dir = cwd; !trusted(dir); dir = dirname2(dir)) {
15271
- if (dir === root || dirname2(dir) === dir)
15272
- throw new Error(
15273
- `claude connector: the manager's Claude home does not trust ${cwd}, and a supervised seat cannot answer Claude's workspace-trust dialog; open \`claude\` in that directory on the manager host once and trust it, then launch again`
15274
- );
15275
- }
15276
- }
15237
+ var CLAUDE_WORKSPACE_TRUST_REPLIES = Object.freeze([
15238
+ Object.freeze({ prompt: "\u276F No, exit\nYes, I trust this folder", key: "Down" }),
15239
+ Object.freeze({ prompt: "No, exit\n\u276F Yes, I trust this folder", key: "Enter" })
15240
+ ]);
15277
15241
 
15278
15242
  // src/extension.ts
15279
15243
  var MCP_SERVER_NAME = "cotal";
@@ -15356,7 +15320,7 @@ var CLAUDE_PROVIDER_KEYS = [
15356
15320
  ];
15357
15321
  var CHANNEL_REF = `server:${MCP_SERVER_NAME}`;
15358
15322
  var PLUGIN_ROOT = fileURLToPath2(new URL("..", import.meta.url));
15359
- var MCP_CJS = resolve2(PLUGIN_ROOT, "dist", "mcp.cjs");
15323
+ var MCP_CJS = resolve(PLUGIN_ROOT, "dist", "mcp.cjs");
15360
15324
  function assertServableModel(model) {
15361
15325
  if (!model.includes("/") || model.startsWith("arn:")) return;
15362
15326
  throw new Error(
@@ -15411,8 +15375,6 @@ var claudeConnector = {
15411
15375
  }
15412
15376
  const binary = opts.resolvedBinaries?.claude ?? "claude";
15413
15377
  if (opts.carried) refuseCarriedLaunch(binary, env);
15414
- if (opts.cwd) refuseUntrustedCwd(opts.cwd);
15415
- if (opts.carried && opts.carried.cwd !== opts.cwd) refuseUntrustedCwd(opts.carried.cwd);
15416
15378
  if (opts.role) env.COTAL_ROLE = opts.role;
15417
15379
  if (opts.id) env.COTAL_ID = opts.id;
15418
15380
  if (opts.lifecycleUid) env.COTAL_LIFECYCLE_UID = opts.lifecycleUid;
@@ -15423,8 +15385,8 @@ var claudeConnector = {
15423
15385
  throw new Error("claude connector: an initial prompt was given but it is empty, there is no first turn to submit");
15424
15386
  const args = prompt ? [prompt, "--dangerously-load-development-channels", CHANNEL_REF, "--plugin-dir", PLUGIN_ROOT] : ["--dangerously-load-development-channels", CHANNEL_REF, "--plugin-dir", PLUGIN_ROOT];
15425
15387
  args.push("--allowedTools", "WebFetch(domain:github.com),WebFetch(domain:raw.githubusercontent.com)");
15426
- const mcpServers = { ...shared, [MCP_SERVER_NAME]: { command: "node", args: [MCP_CJS] } };
15427
- const agentFile = opts.configPath ? resolve2(opts.configPath) : void 0;
15388
+ const mcpServers = { ...shared, [MCP_SERVER_NAME]: { command: "node", args: ["--optimize-for-size", "--max-semi-space-size=1", MCP_CJS] } };
15389
+ const agentFile = opts.configPath ? resolve(opts.configPath) : void 0;
15428
15390
  const def = agentFile ? loadAgentFile2(agentFile) : void 0;
15429
15391
  if (opts.model) assertServableModel(opts.model);
15430
15392
  const passthrough = connectorLaunchOptions("claude", opts.launchOptions).map(([k, v]) => [k, String(v)]);
@@ -15446,6 +15408,8 @@ var claudeConnector = {
15446
15408
  }
15447
15409
  if (opts.resume) args.push("--resume", opts.resume, "--fork-session");
15448
15410
  if (opts.carried) Object.assign(env, placeCarried(opts.carried.home, opts.carried.transcript, opts.resume, opts.carried.cwd));
15411
+ if (!passthrough.some(([k]) => k === "permission-mode" || k === "dangerously-skip-permissions"))
15412
+ args.push("--permission-mode", "bypassPermissions");
15449
15413
  for (const [k, val] of passthrough) {
15450
15414
  if (val === "") args.push(`--${k}`);
15451
15415
  else args.push(`--${k}`, val);
@@ -15458,6 +15422,7 @@ var claudeConnector = {
15458
15422
  // "Enter to confirm" footer, which the workspace-trust dialog also renders with a different
15459
15423
  // default action. The runtime presses Enter once when this connector-owned text appears.
15460
15424
  confirm: "WARNING: Loading development channels",
15425
+ ...opts.cwd ? { confirmBefore: CLAUDE_WORKSPACE_TRUST_REPLIES } : {},
15461
15426
  control,
15462
15427
  ...opts.carried ? { resumeRecordPath: carriedForkRecord(opts.carried.home) } : {},
15463
15428
  ...artifacts.length > 0 ? { artifacts } : {}