@harness-nexus/cli 0.1.0-alpha.1 → 0.1.0-alpha.3

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 (64) hide show
  1. package/dist/daemon/acp/adapters.d.ts.map +1 -1
  2. package/dist/daemon/acp/adapters.js +9 -3
  3. package/dist/daemon/acp/adapters.js.map +1 -1
  4. package/dist/daemon/acp/agent-connection.d.ts +30 -1
  5. package/dist/daemon/acp/agent-connection.d.ts.map +1 -1
  6. package/dist/daemon/acp/agent-connection.js +59 -6
  7. package/dist/daemon/acp/agent-connection.js.map +1 -1
  8. package/dist/daemon/chat.d.ts +9 -1
  9. package/dist/daemon/chat.d.ts.map +1 -1
  10. package/dist/daemon/chat.js +642 -37
  11. package/dist/daemon/chat.js.map +1 -1
  12. package/dist/daemon/client.d.ts +10 -2
  13. package/dist/daemon/client.d.ts.map +1 -1
  14. package/dist/daemon/client.js +99 -23
  15. package/dist/daemon/client.js.map +1 -1
  16. package/dist/daemon/config-view.d.ts +42 -0
  17. package/dist/daemon/config-view.d.ts.map +1 -0
  18. package/dist/daemon/config-view.js +159 -0
  19. package/dist/daemon/config-view.js.map +1 -0
  20. package/dist/daemon/dsh-sessions.d.ts +161 -0
  21. package/dist/daemon/dsh-sessions.d.ts.map +1 -0
  22. package/dist/daemon/dsh-sessions.js +674 -0
  23. package/dist/daemon/dsh-sessions.js.map +1 -0
  24. package/dist/daemon/dsh-tap/index.mjs +99 -0
  25. package/dist/daemon/dsh-tap-listener.d.ts +62 -0
  26. package/dist/daemon/dsh-tap-listener.d.ts.map +1 -0
  27. package/dist/daemon/dsh-tap-listener.js +196 -0
  28. package/dist/daemon/dsh-tap-listener.js.map +1 -0
  29. package/dist/daemon/jobs.d.ts +8 -5
  30. package/dist/daemon/jobs.d.ts.map +1 -1
  31. package/dist/daemon/jobs.js +28 -8
  32. package/dist/daemon/jobs.js.map +1 -1
  33. package/dist/daemon/runtime-config.d.ts +34 -0
  34. package/dist/daemon/runtime-config.d.ts.map +1 -0
  35. package/dist/daemon/runtime-config.js +343 -0
  36. package/dist/daemon/runtime-config.js.map +1 -0
  37. package/dist/daemon/runtime.d.ts +49 -0
  38. package/dist/daemon/runtime.d.ts.map +1 -0
  39. package/dist/daemon/runtime.js +218 -0
  40. package/dist/daemon/runtime.js.map +1 -0
  41. package/dist/daemon/sessions.d.ts +21 -0
  42. package/dist/daemon/sessions.d.ts.map +1 -0
  43. package/dist/daemon/sessions.js +125 -0
  44. package/dist/daemon/sessions.js.map +1 -0
  45. package/dist/daemon/workspace.d.ts +3 -0
  46. package/dist/daemon/workspace.d.ts.map +1 -0
  47. package/dist/daemon/workspace.js +27 -0
  48. package/dist/daemon/workspace.js.map +1 -0
  49. package/dist/install/adapters/deepseek.d.ts +4 -0
  50. package/dist/install/adapters/deepseek.d.ts.map +1 -1
  51. package/dist/install/adapters/deepseek.js +4 -2
  52. package/dist/install/adapters/deepseek.js.map +1 -1
  53. package/dist/inventory/common.d.ts +2 -0
  54. package/dist/inventory/common.d.ts.map +1 -1
  55. package/dist/inventory/common.js.map +1 -1
  56. package/dist/inventory/runtime.d.ts +40 -0
  57. package/dist/inventory/runtime.d.ts.map +1 -0
  58. package/dist/inventory/runtime.js +114 -0
  59. package/dist/inventory/runtime.js.map +1 -0
  60. package/dist/inventory/scanners/claude-code.d.ts +2 -0
  61. package/dist/inventory/scanners/claude-code.d.ts.map +1 -1
  62. package/dist/inventory/scanners/claude-code.js +103 -39
  63. package/dist/inventory/scanners/claude-code.js.map +1 -1
  64. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../../src/daemon/acp/adapters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AA2BzD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,UAAU,GAAG,IAAI,CAQhG"}
1
+ {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../../src/daemon/acp/adapters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAiCzD,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,UAAU,GAAG,IAAI,CAQhG"}
@@ -9,9 +9,15 @@
9
9
  * tests at a fixture agent.
10
10
  */
11
11
  const DEFAULT_ACP_COMMANDS = {
12
- // Official Zed adapter, now powered by the Claude Agent SDK (bundles the CLI;
13
- // needs local Claude auth).
14
- 'claude-code': ['npx', '-y', '@zed-industries/claude-agent-acp'],
12
+ // The ACP project's official wrapper (took over from @zed-industries's
13
+ // 0.23.x, which the daemon shipped until 2026-09). Reason for the swap,
14
+ // rig-verified: the old wrapper never requests thinking on gateway/unknown
15
+ // models (MAX_THINKING_TOKENS on the adapter env didn't help either), so
16
+ // chat showed no thought stream; the official 0.76.0 streams
17
+ // agent_thought_chunk by default, advertises loadSession + list/resume
18
+ // (both caps shapes the daemon already detects), and returns full
19
+ // SessionInfo. Same switch the stable reference CC bridge runs.
20
+ 'claude-code': ['npx', '-y', '@agentclientprotocol/claude-agent-acp'],
15
21
  // Official Zed adapter wrapping the OpenAI Codex CLI (needs `codex` on PATH).
16
22
  codex: ['npx', '-y', '@zed-industries/codex-acp'],
17
23
  // DeepSeek Harness ships a native ACP v1 profile (needs `dsh` on PATH and a
@@ -1 +1 @@
1
- {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../../src/daemon/acp/adapters.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,oBAAoB,GAAkD;IAC1E,8EAA8E;IAC9E,4BAA4B;IAC5B,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,kCAAkC,CAAC;IAChE,8EAA8E;IAC9E,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,2BAA2B,CAAC;IACjD,4EAA4E;IAC5E,kDAAkD;IAClD,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC;IACrC,yDAAyD;IACzD,MAAM,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC;IACxC,KAAK,EAAE,IAAI,EAAE,oDAAoD;IACjE,OAAO,EAAE,IAAI;CACd,CAAC;AAOF,MAAM,UAAU,iBAAiB,CAAC,MAAmB,EAAE,GAAsB;IAC3E,MAAM,QAAQ,GAAG,GAAG,CAAC,kBAAkB,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAClF,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,MAAM,GAAG,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACzC,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../../src/daemon/acp/adapters.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,oBAAoB,GAAkD;IAC1E,uEAAuE;IACvE,wEAAwE;IACxE,2EAA2E;IAC3E,yEAAyE;IACzE,6DAA6D;IAC7D,uEAAuE;IACvE,kEAAkE;IAClE,gEAAgE;IAChE,aAAa,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,uCAAuC,CAAC;IACrE,8EAA8E;IAC9E,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,2BAA2B,CAAC;IACjD,4EAA4E;IAC5E,kDAAkD;IAClD,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC;IACrC,yDAAyD;IACzD,MAAM,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC;IACxC,KAAK,EAAE,IAAI,EAAE,oDAAoD;IACjE,OAAO,EAAE,IAAI;CACd,CAAC;AAOF,MAAM,UAAU,iBAAiB,CAAC,MAAmB,EAAE,GAAsB;IAC3E,MAAM,QAAQ,GAAG,GAAG,CAAC,kBAAkB,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAClF,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC3C,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,MAAM,GAAG,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACzC,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAE,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACxE,CAAC"}
@@ -8,6 +8,27 @@ export interface AcpAgentInfo {
8
8
  name?: string | undefined;
9
9
  version?: string | undefined;
10
10
  }
11
+ /** The resume-relevant slice of `agentCapabilities` (9 W7). */
12
+ export interface AcpSessionCaps {
13
+ /** `session/load` — resume WITH history replay (claude/codex adapters). */
14
+ load: boolean;
15
+ /** `session/resume` — resume WITHOUT replay (dsh's native adapter). */
16
+ resume: boolean;
17
+ /** `session/list` exists (the claude/codex listing path). */
18
+ list: boolean;
19
+ }
20
+ /**
21
+ * Advertised caps decide the resume dialect (9 W7): prefer `session/load`
22
+ * (replay for free), fall back to `session/resume`. `loadSession` is the
23
+ * pre-capability legacy flag — and WHERE it sits differs by adapter family:
24
+ * the Zed adapters set it at the initialize RESULT ROOT, the official
25
+ * `@agentclientprotocol/claude-agent-acp` sets it NESTED inside
26
+ * `agentCapabilities.loadSession` while its `sessionCapabilities` has `resume`
27
+ * but NOT `load`. Reading only the root made the official wrapper look like a
28
+ * resume-only adapter — claude-code channels then resumed with NO replay
29
+ * ("opening a history session shows an empty pane").
30
+ */
31
+ export declare function deriveSessionCaps(result: unknown): AcpSessionCaps;
11
32
  export declare class AcpAgentConnection {
12
33
  private proc;
13
34
  private nextId;
@@ -25,6 +46,7 @@ export declare class AcpAgentConnection {
25
46
  }): Promise<{
26
47
  conn: AcpAgentConnection;
27
48
  agentInfo: AcpAgentInfo;
49
+ sessionCaps: AcpSessionCaps;
28
50
  }>;
29
51
  /** JSON-RPC request with a timeout; rejects on error/exit. */
30
52
  request(method: string, params: unknown, timeoutMs: number): Promise<unknown>;
@@ -35,7 +57,14 @@ export declare class AcpAgentConnection {
35
57
  setPermissionHandler(handler: (jsonrpcId: number, params: Record<string, unknown>) => void): void;
36
58
  /** Fires when the subprocess exits on its own (crash/quit) — not on kill(). */
37
59
  onExit(handler: () => void): void;
38
- /** SIGTERM, then SIGKILL after `graceMs`. Idempotent. */
60
+ /**
61
+ * SIGTERM the whole process GROUP, then SIGKILL it after `graceMs`.
62
+ * Idempotent. The group signal is the point: the direct child (npm/npx)
63
+ * dying does NOT take the wrapper and the vendor binary with it — they
64
+ * reparent to init and keep running. The timer is unref'd and NOT cleared
65
+ * on leader exit: grandchildren can outlive the leader, and the follow-up
66
+ * SIGKILL to a dead group is a caught ESRCH.
67
+ */
39
68
  kill(graceMs?: number): void;
40
69
  private handleLine;
41
70
  private send;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-connection.d.ts","sourceRoot":"","sources":["../../../src/daemon/acp/agent-connection.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,iBAAiB,GAC3B;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC;AAEvE,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,cAAc,CAA4E;IAClG,OAAO,CAAC,YAAY,CACb;IACP,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO;IAwBP,mEAAmE;WACtD,KAAK,CAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAAE,GACvF,OAAO,CAAC;QAAE,IAAI,EAAE,kBAAkB,CAAC;QAAC,SAAS,EAAE,YAAY,CAAA;KAAE,CAAC;IAyBjE,8DAA8D;IAC9D,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB7E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAI7C,2EAA2E;IAC3E,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAItE,sBAAsB,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,IAAI;IAIhG,oBAAoB,CAClB,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GACpE,IAAI;IAIP,+EAA+E;IAC/E,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAIjC,yDAAyD;IACzD,IAAI,CAAC,OAAO,SAAO,GAAG,IAAI;IAU1B,OAAO,CAAC,UAAU;IAuClB,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,gBAAgB;CAGzB"}
1
+ {"version":3,"file":"agent-connection.d.ts","sourceRoot":"","sources":["../../../src/daemon/acp/agent-connection.ts"],"names":[],"mappings":"AAkBA,MAAM,MAAM,iBAAiB,GAC3B;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,WAAW,CAAA;CAAE,CAAC;AAEvE,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,+DAA+D;AAC/D,MAAM,WAAW,cAAc;IAC7B,2EAA2E;IAC3E,IAAI,EAAE,OAAO,CAAC;IACd,uEAAuE;IACvE,MAAM,EAAE,OAAO,CAAC;IAChB,6DAA6D;IAC7D,IAAI,EAAE,OAAO,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAcjE;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,IAAI,CAAe;IAC3B,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,cAAc,CAA4E;IAClG,OAAO,CAAC,YAAY,CACb;IACP,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO;IAwBP,mEAAmE;WACtD,KAAK,CAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,CAAC;QAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;KAAE,GACvF,OAAO,CAAC;QACT,IAAI,EAAE,kBAAkB,CAAC;QACzB,SAAS,EAAE,YAAY,CAAC;QACxB,WAAW,EAAE,cAAc,CAAC;KAC7B,CAAC;IAsCF,8DAA8D;IAC9D,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB7E,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAI7C,2EAA2E;IAC3E,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAItE,sBAAsB,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,IAAI;IAIhG,oBAAoB,CAClB,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GACpE,IAAI;IAIP,+EAA+E;IAC/E,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAIjC;;;;;;;OAOG;IACH,IAAI,CAAC,OAAO,SAAO,GAAG,IAAI;IAoB1B,OAAO,CAAC,UAAU;IA4ClB,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,gBAAgB;CAGzB"}
@@ -1,5 +1,27 @@
1
1
  import { spawn } from 'node:child_process';
2
2
  import { createInterface } from 'node:readline';
3
+ /**
4
+ * Advertised caps decide the resume dialect (9 W7): prefer `session/load`
5
+ * (replay for free), fall back to `session/resume`. `loadSession` is the
6
+ * pre-capability legacy flag — and WHERE it sits differs by adapter family:
7
+ * the Zed adapters set it at the initialize RESULT ROOT, the official
8
+ * `@agentclientprotocol/claude-agent-acp` sets it NESTED inside
9
+ * `agentCapabilities.loadSession` while its `sessionCapabilities` has `resume`
10
+ * but NOT `load`. Reading only the root made the official wrapper look like a
11
+ * resume-only adapter — claude-code channels then resumed with NO replay
12
+ * ("opening a history session shows an empty pane").
13
+ */
14
+ export function deriveSessionCaps(result) {
15
+ const r = (result ?? {});
16
+ const caps = r.agentCapabilities?.sessionCapabilities ?? {};
17
+ return {
18
+ load: caps['load'] !== undefined ||
19
+ r.loadSession === true ||
20
+ r.agentCapabilities?.loadSession === true,
21
+ resume: caps['resume'] !== undefined,
22
+ list: caps['list'] !== undefined,
23
+ };
24
+ }
3
25
  export class AcpAgentConnection {
4
26
  proc;
5
27
  nextId = 1;
@@ -41,6 +63,11 @@ export class AcpAgentConnection {
41
63
  cwd: opts.cwd,
42
64
  env: { ...process.env, ...(opts.env ?? {}) },
43
65
  stdio: ['pipe', 'pipe', 'pipe'],
66
+ // Own process group: adapters spawn their own trees (npm → sh →
67
+ // wrapper → the vendor binary). Signaling only the direct child
68
+ // orphaned the grandchildren — a bare `claude` binary survived every
69
+ // teardown, parented to init. kill() takes the whole group down.
70
+ detached: true,
44
71
  });
45
72
  }
46
73
  catch (e) {
@@ -52,7 +79,11 @@ export class AcpAgentConnection {
52
79
  });
53
80
  const result = (await conn.request('initialize', { protocolVersion: 1, clientCapabilities: {} }, initializeTimeoutMs));
54
81
  conn.notify('initialized', {});
55
- return { conn, agentInfo: result?.agentInfo ?? {} };
82
+ return {
83
+ conn,
84
+ agentInfo: result?.agentInfo ?? {},
85
+ sessionCaps: deriveSessionCaps(result),
86
+ };
56
87
  }
57
88
  /** JSON-RPC request with a timeout; rejects on error/exit. */
58
89
  request(method, params, timeoutMs) {
@@ -90,14 +121,33 @@ export class AcpAgentConnection {
90
121
  onExit(handler) {
91
122
  this.proc.on('exit', handler);
92
123
  }
93
- /** SIGTERM, then SIGKILL after `graceMs`. Idempotent. */
124
+ /**
125
+ * SIGTERM the whole process GROUP, then SIGKILL it after `graceMs`.
126
+ * Idempotent. The group signal is the point: the direct child (npm/npx)
127
+ * dying does NOT take the wrapper and the vendor binary with it — they
128
+ * reparent to init and keep running. The timer is unref'd and NOT cleared
129
+ * on leader exit: grandchildren can outlive the leader, and the follow-up
130
+ * SIGKILL to a dead group is a caught ESRCH.
131
+ */
94
132
  kill(graceMs = 3000) {
95
133
  if (this.exited || this.proc.stdin === null)
96
134
  return;
97
135
  this.proc.removeAllListeners('exit');
98
- const killTimer = setTimeout(() => this.proc.kill('SIGKILL'), graceMs);
99
- this.proc.on('exit', () => clearTimeout(killTimer));
100
- this.proc.kill('SIGTERM');
136
+ const pid = this.proc.pid;
137
+ const sigGroup = (sig) => {
138
+ if (pid === undefined)
139
+ return;
140
+ try {
141
+ process.kill(-pid, sig); // negative pid = the process group
142
+ }
143
+ catch {
144
+ // group already gone
145
+ }
146
+ };
147
+ const killTimer = setTimeout(() => sigGroup('SIGKILL'), graceMs);
148
+ killTimer.unref();
149
+ sigGroup('SIGTERM');
150
+ this.proc.kill('SIGTERM'); // the leader too (belt and braces)
101
151
  this.failAll(new Error('agent process killed'));
102
152
  this.exited = true;
103
153
  }
@@ -129,7 +179,10 @@ export class AcpAgentConnection {
129
179
  this.pending.delete(Number(msg.id));
130
180
  clearTimeout(pending.timer);
131
181
  if (msg.error !== undefined) {
132
- pending.reject(new Error(msg.error.message ?? 'ACP request failed'));
182
+ // Error `data` (e.g. dsh's `details: "no adapter registered for …"`)
183
+ // rides along — the callers key retry/surface logic off it.
184
+ const details = msg.error.data?.details;
185
+ pending.reject(new Error(`${msg.error.message ?? 'ACP request failed'}${details ? `: ${details}` : ''}`));
133
186
  }
134
187
  else {
135
188
  pending.resolve(msg.result);
@@ -1 +1 @@
1
- {"version":3,"file":"agent-connection.js","sourceRoot":"","sources":["../../../src/daemon/acp/agent-connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-connection.js","sourceRoot":"","sources":["../../../src/daemon/acp/agent-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAmChD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAe;IAC/C,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAGtB,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,mBAAmB,IAAI,EAAE,CAAC;IAC5D,OAAO;QACL,IAAI,EACF,IAAI,CAAC,MAAM,CAAC,KAAK,SAAS;YAC1B,CAAC,CAAC,WAAW,KAAK,IAAI;YACtB,CAAC,CAAC,iBAAiB,EAAE,WAAW,KAAK,IAAI;QAC3C,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,SAAS;QACpC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,SAAS;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,kBAAkB;IACrB,IAAI,CAAe;IACnB,MAAM,GAAG,CAAC,CAAC;IACX,OAAO,GAAG,IAAI,GAAG,EAA0B,CAAC;IAC5C,UAAU,GAAa,EAAE,CAAC;IAC1B,cAAc,GAAuE,IAAI,CAAC;IAC1F,YAAY,GAClB,IAAI,CAAC;IACC,MAAM,GAAG,KAAK,CAAC;IAEvB,YAAoB,IAAkB;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAO,EAAE,CAAC,CAAC;QACpD,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,2DAA2D;YAC3D,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;oBACpB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;oBAClC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,EAAE;wBAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;gBAC3D,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACnB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YACrF,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mEAAmE;IACnE,MAAM,CAAC,KAAK,CAAC,KAAK,CAChB,OAAe,EACf,IAAc,EACd,IAAwF;QAMxF,MAAM,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,IAAI,KAAK,CAAC;QAC9D,IAAI,IAAkB,CAAC;QACvB,IAAI,CAAC;YACH,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;gBAC1B,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;gBAC5C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;gBAC/B,gEAAgE;gBAChE,gEAAgE;gBAChE,qEAAqE;gBACrE,iEAAiE;gBACjE,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,gCAAgC,OAAO,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACrB,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,gBAAgB,OAAO,aAAa,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,MAAM,IAAI,CAAC,OAAO,CAChC,YAAY,EACZ,EAAE,eAAe,EAAE,CAAC,EAAE,kBAAkB,EAAE,EAAE,EAAE,EAC9C,mBAAmB,CACpB,CAIA,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAC/B,OAAO;YACL,IAAI;YACJ,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,EAAE;YAClC,WAAW,EAAE,iBAAiB,CAAC,MAAM,CAAC;SACvC,CAAC;IACJ,CAAC;IAED,8DAA8D;IAC9D,OAAO,CAAC,MAAc,EAAE,MAAe,EAAE,SAAiB;QACxD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxB,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,MAAM,qBAAqB,SAAS,IAAI,CAAC,CAAC,CAAC;YAC9E,CAAC,EAAE,SAAS,CAAC,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE;gBACnB,OAAO;gBACP,MAAM;gBACN,KAAK,EAAE,KAAkC;aAC1C,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,MAAc,EAAE,MAAe;QACpC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,2EAA2E;IAC3E,iBAAiB,CAAC,SAAiB,EAAE,OAA0B;QAC7D,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,sBAAsB,CAAC,OAAkE;QACvF,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;IAChC,CAAC;IAED,oBAAoB,CAClB,OAAqE;QAErE,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;IAC9B,CAAC;IAED,+EAA+E;IAC/E,MAAM,CAAC,OAAmB;QACxB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,OAAO,GAAG,IAAI;QACjB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO;QACpD,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QAC1B,MAAM,QAAQ,GAAG,CAAC,GAAmB,EAAQ,EAAE;YAC7C,IAAI,GAAG,KAAK,SAAS;gBAAE,OAAO;YAC9B,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,mCAAmC;YAC9D,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC,CAAC;QACF,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;QACjE,SAAS,CAAC,KAAK,EAAE,CAAC;QAClB,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,mCAAmC;QAC9D,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACrB,CAAC;IAEO,UAAU,CAAC,IAAY;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,KAAK,EAAE;YAAE,OAAO;QAC3B,IAAI,GAMH,CAAC;QACF,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAe,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,4DAA4D;QACtE,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,KAAK,4BAA4B,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;YACxE,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC5C,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,OAAO,CAAC,mEAAmE;QAC7E,CAAC;QACD,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACpC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC5B,qEAAqE;gBACrE,4DAA4D;gBAC5D,MAAM,OAAO,GAAI,GAAG,CAAC,KAAyC,CAAC,IAAI,EAAE,OAAO,CAAC;gBAC7E,OAAO,CAAC,MAAM,CACZ,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,oBAAoB,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC1F,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;IACH,CAAC;IAEO,IAAI,CAAC,OAAgB;QAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QACpD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAEO,OAAO,CAAC,GAAU;QACxB,KAAK,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAEO,gBAAgB;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,CAAC;CACF;AAED,SAAS,OAAO,CAAC,CAAU;IACzB,OAAO,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC"}
@@ -5,6 +5,8 @@ export interface ChatHandlersOptions {
5
5
  env?: NodeJS.ProcessEnv;
6
6
  /** Extra env for the adapter subprocess. */
7
7
  spawnEnv?: NodeJS.ProcessEnv;
8
+ /** Overridable for tests (transcript lookup on dsh resume). */
9
+ homeDir?: string;
8
10
  }
9
11
  export declare function attachChatHandlers(socket: Socket, opts?: ChatHandlersOptions): void;
10
12
  type UnknownRecord = Record<string, unknown>;
@@ -16,7 +18,13 @@ export declare function textOf(contentBlock: unknown): string;
16
18
  * Defensive view of an ACP ToolCallUpdate: shared-schema-validated, falling
17
19
  * back to the bare id when an adapter sends something malformed (the server
18
20
  * re-validates everything crossing the wire).
21
+ *
22
+ * 9 W6 enrichment: carries `toolName` (the card registry key — from the
23
+ * update itself or the Claude `_meta.claudeCode.toolName` on the envelope),
24
+ * `rawInput` (dropped when oversized — Write-style file bodies), structured
25
+ * `content` (diff/text/terminal items), and the `rawOutput` text — the rich
26
+ * tool cards' rendering inputs.
19
27
  */
20
- export declare function toolCallView(toolCallUpdate: unknown): AcpToolCallView;
28
+ export declare function toolCallView(toolCallUpdate: unknown, metaToolName?: string): AcpToolCallView;
21
29
  export {};
22
30
  //# sourceMappingURL=chat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/daemon/chat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EASL,KAAK,eAAe,EACpB,KAAK,eAAe,EAErB,MAAM,uBAAuB,CAAC;AA0B/B,MAAM,WAAW,mBAAmB;IAClC,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAC9B;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,mBAAwB,GAAG,IAAI,CA2JvF;AA6ED,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7C,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,GAAG,IAAI,CAyB1E;AAED,2DAA2D;AAC3D,wBAAgB,MAAM,CAAC,YAAY,EAAE,OAAO,GAAG,MAAM,CAgBpD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,cAAc,EAAE,OAAO,GAAG,eAAe,CAKrE"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/daemon/chat.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAUL,KAAK,eAAe,EACpB,KAAK,eAAe,EAGrB,MAAM,uBAAuB,CAAC;AAiI/B,MAAM,WAAW,mBAAmB;IAClC,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAC7B,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,mBAAwB,GAAG,IAAI,CAkcvF;AA+OD,KAAK,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE7C,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,GAAG,IAAI,CA6C1E;AAED,2DAA2D;AAC3D,wBAAgB,MAAM,CAAC,YAAY,EAAE,OAAO,GAAG,MAAM,CAgBpD;AAaD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,cAAc,EAAE,OAAO,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,eAAe,CAK5F"}