@coralai/sps-cli 0.19.0 → 0.20.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 (52) hide show
  1. package/README.md +53 -7
  2. package/dist/commands/acpCommand.d.ts +2 -0
  3. package/dist/commands/acpCommand.d.ts.map +1 -0
  4. package/dist/commands/acpCommand.js +98 -0
  5. package/dist/commands/acpCommand.js.map +1 -0
  6. package/dist/core/acpState.d.ts +4 -0
  7. package/dist/core/acpState.d.ts.map +1 -0
  8. package/dist/core/acpState.js +38 -0
  9. package/dist/core/acpState.js.map +1 -0
  10. package/dist/core/config.d.ts +5 -0
  11. package/dist/core/config.d.ts.map +1 -1
  12. package/dist/core/config.js +5 -0
  13. package/dist/core/config.js.map +1 -1
  14. package/dist/core/paths.d.ts +2 -0
  15. package/dist/core/paths.d.ts.map +1 -1
  16. package/dist/core/paths.js +1 -0
  17. package/dist/core/paths.js.map +1 -1
  18. package/dist/interfaces/ACPClient.d.ts +55 -0
  19. package/dist/interfaces/ACPClient.d.ts.map +1 -0
  20. package/dist/interfaces/ACPClient.js +2 -0
  21. package/dist/interfaces/ACPClient.js.map +1 -0
  22. package/dist/interfaces/AgentRuntime.d.ts +8 -0
  23. package/dist/interfaces/AgentRuntime.d.ts.map +1 -0
  24. package/dist/interfaces/AgentRuntime.js +2 -0
  25. package/dist/interfaces/AgentRuntime.js.map +1 -0
  26. package/dist/main.js +16 -1
  27. package/dist/main.js.map +1 -1
  28. package/dist/models/acp.d.ts +33 -0
  29. package/dist/models/acp.d.ts.map +1 -0
  30. package/dist/models/acp.js +2 -0
  31. package/dist/models/acp.js.map +1 -0
  32. package/dist/providers/ACPWorkerRuntime.d.ts +19 -0
  33. package/dist/providers/ACPWorkerRuntime.d.ts.map +1 -0
  34. package/dist/providers/ACPWorkerRuntime.js +200 -0
  35. package/dist/providers/ACPWorkerRuntime.js.map +1 -0
  36. package/dist/providers/LocalACPClient.d.ts +11 -0
  37. package/dist/providers/LocalACPClient.d.ts.map +1 -0
  38. package/dist/providers/LocalACPClient.js +35 -0
  39. package/dist/providers/LocalACPClient.js.map +1 -0
  40. package/dist/providers/acpTmux.d.ts +6 -0
  41. package/dist/providers/acpTmux.d.ts.map +1 -0
  42. package/dist/providers/acpTmux.js +51 -0
  43. package/dist/providers/acpTmux.js.map +1 -0
  44. package/dist/providers/adapters/ClaudeACPAdapter.d.ts +11 -0
  45. package/dist/providers/adapters/ClaudeACPAdapter.d.ts.map +1 -0
  46. package/dist/providers/adapters/ClaudeACPAdapter.js +150 -0
  47. package/dist/providers/adapters/ClaudeACPAdapter.js.map +1 -0
  48. package/dist/providers/adapters/CodexACPAdapter.d.ts +11 -0
  49. package/dist/providers/adapters/CodexACPAdapter.d.ts.map +1 -0
  50. package/dist/providers/adapters/CodexACPAdapter.js +152 -0
  51. package/dist/providers/adapters/CodexACPAdapter.js.map +1 -0
  52. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp.d.ts","sourceRoot":"","sources":["../../src/models/acp.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEzC,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,WAAW,GACX,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,OAAO,GACP,MAAM,GACN,UAAU,GACV,SAAS,CAAC;AAEd,MAAM,MAAM,YAAY,GACpB,WAAW,GACX,SAAS,GACT,eAAe,GACf,WAAW,GACX,QAAQ,GACR,WAAW,GACX,MAAM,CAAC;AAEX,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,aAAa,CAAC;IACtB,YAAY,EAAE,gBAAgB,CAAC;IAC/B,UAAU,EAAE,YAAY,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC5C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=acp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acp.js","sourceRoot":"","sources":["../../src/models/acp.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import type { ProjectContext } from '../core/context.js';
2
+ import type { AgentRuntime } from '../interfaces/AgentRuntime.js';
3
+ import type { ACPClient } from '../interfaces/ACPClient.js';
4
+ import type { ACPState, ACPSessionRecord, ACPTool } from '../models/acp.js';
5
+ export declare class ACPWorkerRuntime implements AgentRuntime {
6
+ private readonly ctx;
7
+ private readonly client;
8
+ constructor(ctx: ProjectContext, client?: ACPClient);
9
+ ensureSession(slot: string, tool?: ACPTool): Promise<ACPSessionRecord>;
10
+ startRun(slot: string, prompt: string, tool?: ACPTool): Promise<ACPSessionRecord>;
11
+ inspect(slot?: string): Promise<ACPState>;
12
+ stopSession(slot: string): Promise<void>;
13
+ private normalizeSlot;
14
+ private defaultTool;
15
+ private buildSessionName;
16
+ private slotStatusFromRun;
17
+ private upsertSession;
18
+ }
19
+ //# sourceMappingURL=ACPWorkerRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ACPWorkerRuntime.d.ts","sourceRoot":"","sources":["../../src/providers/ACPWorkerRuntime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,KAAK,EAEV,QAAQ,EACR,gBAAgB,EAGhB,OAAO,EACR,MAAM,kBAAkB,CAAC;AAgB1B,qBAAa,gBAAiB,YAAW,YAAY;IAEjD,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADN,GAAG,EAAE,cAAc,EACnB,MAAM,GAAE,SAAgC;IAGrD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAoCtE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA2CjF,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAwDzC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiC9C,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,aAAa;CAQtB"}
@@ -0,0 +1,200 @@
1
+ import { readACPState, writeACPState } from '../core/acpState.js';
2
+ import { LocalACPClient } from './LocalACPClient.js';
3
+ function now() {
4
+ return new Date().toISOString();
5
+ }
6
+ function previewPrompt(prompt) {
7
+ const oneLine = prompt.replace(/\s+/g, ' ').trim();
8
+ return oneLine.length > 120 ? `${oneLine.slice(0, 117)}...` : oneLine;
9
+ }
10
+ function isTerminalRunStatus(status) {
11
+ return ['completed', 'failed', 'cancelled', 'lost'].includes(status);
12
+ }
13
+ export class ACPWorkerRuntime {
14
+ ctx;
15
+ client;
16
+ constructor(ctx, client = new LocalACPClient()) {
17
+ this.ctx = ctx;
18
+ this.client = client;
19
+ }
20
+ async ensureSession(slot, tool) {
21
+ const state = readACPState(this.ctx.paths.acpStateFile);
22
+ const normalizedSlot = this.normalizeSlot(slot);
23
+ const selectedTool = tool || this.defaultTool();
24
+ const existing = state.sessions[normalizedSlot];
25
+ const sessionName = existing?.sessionName || this.buildSessionName(normalizedSlot);
26
+ const cwd = existing?.cwd || this.ctx.paths.repoDir;
27
+ const result = await this.client.ensureSession({
28
+ sessionName,
29
+ tool: selectedTool,
30
+ cwd,
31
+ resetExisting: !existing,
32
+ });
33
+ const session = this.upsertSession(state, normalizedSlot, {
34
+ slot: normalizedSlot,
35
+ tool: selectedTool,
36
+ sessionId: result.sessionId,
37
+ sessionName,
38
+ cwd,
39
+ status: result.sessionState === 'ready'
40
+ ? (existing?.currentRun ? 'active' : 'idle')
41
+ : 'launching',
42
+ sessionState: result.sessionState,
43
+ currentRun: existing?.currentRun || null,
44
+ createdAt: existing?.createdAt || now(),
45
+ updatedAt: now(),
46
+ lastSeenAt: result.lastSeenAt,
47
+ lastPaneText: result.paneText,
48
+ });
49
+ writeACPState(this.ctx.paths.acpStateFile, state, 'acp-ensure-session');
50
+ return session;
51
+ }
52
+ async startRun(slot, prompt, tool) {
53
+ const normalizedSlot = this.normalizeSlot(slot);
54
+ const state = readACPState(this.ctx.paths.acpStateFile);
55
+ const session = await this.ensureSession(normalizedSlot, tool);
56
+ if (session.sessionState !== 'ready') {
57
+ throw new Error(`ACP session ${session.sessionId} is not ready (state=${session.sessionState})`);
58
+ }
59
+ const freshState = readACPState(this.ctx.paths.acpStateFile);
60
+ const existing = freshState.sessions[normalizedSlot] || session;
61
+ if (existing.currentRun && !['completed', 'failed', 'cancelled', 'lost'].includes(existing.currentRun.status)) {
62
+ throw new Error(`Slot ${normalizedSlot} already has an active run (${existing.currentRun.runId})`);
63
+ }
64
+ const result = await this.client.startRun({
65
+ sessionName: existing.sessionName,
66
+ tool: existing.tool,
67
+ prompt,
68
+ });
69
+ const run = {
70
+ runId: result.runId,
71
+ status: result.runState,
72
+ promptPreview: previewPrompt(prompt),
73
+ startedAt: now(),
74
+ updatedAt: now(),
75
+ completedAt: result.runState === 'completed' ? now() : null,
76
+ };
77
+ const updated = this.upsertSession(freshState, normalizedSlot, {
78
+ ...existing,
79
+ status: this.slotStatusFromRun(result.runState),
80
+ sessionState: result.runState === 'completed' ? 'ready' : 'busy',
81
+ currentRun: run,
82
+ updatedAt: now(),
83
+ lastSeenAt: result.lastSeenAt,
84
+ lastPaneText: result.paneText,
85
+ });
86
+ writeACPState(this.ctx.paths.acpStateFile, freshState, 'acp-start-run');
87
+ return updated;
88
+ }
89
+ async inspect(slot) {
90
+ const state = readACPState(this.ctx.paths.acpStateFile);
91
+ const slots = slot ? [this.normalizeSlot(slot)] : Object.keys(state.sessions);
92
+ for (const slotName of slots) {
93
+ const session = state.sessions[slotName];
94
+ if (!session)
95
+ continue;
96
+ const sessionInfo = await this.client.inspectSession({
97
+ sessionName: session.sessionName,
98
+ tool: session.tool,
99
+ });
100
+ let nextStatus = session.status;
101
+ let currentRun = session.currentRun;
102
+ let paneText = sessionInfo.paneText;
103
+ if (session.currentRun && !(sessionInfo.sessionState === 'offline' && isTerminalRunStatus(session.currentRun.status))) {
104
+ const runInfo = await this.client.inspectRun({
105
+ sessionName: session.sessionName,
106
+ tool: session.tool,
107
+ activeRun: true,
108
+ });
109
+ paneText = runInfo.paneText || paneText;
110
+ if (runInfo.runState) {
111
+ currentRun = {
112
+ ...session.currentRun,
113
+ status: runInfo.runState,
114
+ updatedAt: now(),
115
+ completedAt: runInfo.runState === 'completed' ? (session.currentRun.completedAt || now()) : session.currentRun.completedAt,
116
+ };
117
+ nextStatus = this.slotStatusFromRun(runInfo.runState);
118
+ }
119
+ }
120
+ else if (sessionInfo.sessionState === 'ready') {
121
+ nextStatus = 'idle';
122
+ }
123
+ else if (sessionInfo.sessionState === 'offline') {
124
+ nextStatus = 'offline';
125
+ }
126
+ else {
127
+ nextStatus = 'launching';
128
+ }
129
+ state.sessions[slotName] = {
130
+ ...session,
131
+ status: nextStatus,
132
+ sessionState: sessionInfo.sessionState,
133
+ currentRun,
134
+ updatedAt: now(),
135
+ lastSeenAt: sessionInfo.lastSeenAt,
136
+ lastPaneText: paneText,
137
+ };
138
+ }
139
+ writeACPState(this.ctx.paths.acpStateFile, state, 'acp-inspect');
140
+ return state;
141
+ }
142
+ async stopSession(slot) {
143
+ const normalizedSlot = this.normalizeSlot(slot);
144
+ const state = readACPState(this.ctx.paths.acpStateFile);
145
+ const session = state.sessions[normalizedSlot];
146
+ if (!session) {
147
+ throw new Error(`ACP session not found for slot ${normalizedSlot}`);
148
+ }
149
+ await this.client.stopSession({
150
+ sessionName: session.sessionName,
151
+ tool: session.tool,
152
+ });
153
+ state.sessions[normalizedSlot] = {
154
+ ...session,
155
+ status: 'offline',
156
+ sessionState: 'offline',
157
+ currentRun: session.currentRun
158
+ ? {
159
+ ...session.currentRun,
160
+ status: session.currentRun.status === 'completed' ? 'completed' : 'cancelled',
161
+ updatedAt: now(),
162
+ completedAt: session.currentRun.completedAt || now(),
163
+ }
164
+ : null,
165
+ updatedAt: now(),
166
+ lastSeenAt: now(),
167
+ lastPaneText: '',
168
+ };
169
+ writeACPState(this.ctx.paths.acpStateFile, state, 'acp-stop-session');
170
+ }
171
+ normalizeSlot(slot) {
172
+ if (/^worker-\d+$/.test(slot))
173
+ return slot;
174
+ if (/^\d+$/.test(slot))
175
+ return `worker-${slot}`;
176
+ throw new Error(`Invalid slot: ${slot}. Use worker-N or N`);
177
+ }
178
+ defaultTool() {
179
+ return (this.ctx.config.ACP_AGENT || this.ctx.config.WORKER_TOOL);
180
+ }
181
+ buildSessionName(slot) {
182
+ return `sps-acp-${this.ctx.projectName}-${slot}`;
183
+ }
184
+ slotStatusFromRun(status) {
185
+ switch (status) {
186
+ case 'completed':
187
+ case 'cancelled':
188
+ case 'failed':
189
+ case 'lost':
190
+ return 'idle';
191
+ default:
192
+ return 'active';
193
+ }
194
+ }
195
+ upsertSession(state, slot, session) {
196
+ state.sessions[slot] = session;
197
+ return session;
198
+ }
199
+ }
200
+ //# sourceMappingURL=ACPWorkerRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ACPWorkerRuntime.js","sourceRoot":"","sources":["../../src/providers/ACPWorkerRuntime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ACPClient, EnsureSessionInput, EnsureSessionResult, InspectRunInput, InspectRunResult, InspectSessionInput, InspectSessionResult, StartRunInput, StartRunResult, StopSessionInput } from '../interfaces/ACPClient.js';
2
+ export declare class LocalACPClient implements ACPClient {
3
+ private readonly claude;
4
+ private readonly codex;
5
+ ensureSession(input: EnsureSessionInput): Promise<EnsureSessionResult>;
6
+ startRun(input: StartRunInput): Promise<StartRunResult>;
7
+ inspectSession(input: InspectSessionInput): Promise<InspectSessionResult>;
8
+ inspectRun(input: InspectRunInput): Promise<InspectRunResult>;
9
+ stopSession(input: StopSessionInput): Promise<void>;
10
+ }
11
+ //# sourceMappingURL=LocalACPClient.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalACPClient.d.ts","sourceRoot":"","sources":["../../src/providers/LocalACPClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AAIpC,qBAAa,cAAe,YAAW,SAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IACjD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAEzC,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAMtE,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAMvD,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAMzE,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAM7D,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAO1D"}
@@ -0,0 +1,35 @@
1
+ import { ClaudeACPAdapter } from './adapters/ClaudeACPAdapter.js';
2
+ import { CodexACPAdapter } from './adapters/CodexACPAdapter.js';
3
+ export class LocalACPClient {
4
+ claude = new ClaudeACPAdapter();
5
+ codex = new CodexACPAdapter();
6
+ async ensureSession(input) {
7
+ return input.tool === 'claude'
8
+ ? this.claude.ensureSession(input)
9
+ : this.codex.ensureSession(input);
10
+ }
11
+ async startRun(input) {
12
+ return input.tool === 'claude'
13
+ ? this.claude.startRun(input)
14
+ : this.codex.startRun(input);
15
+ }
16
+ async inspectSession(input) {
17
+ return input.tool === 'claude'
18
+ ? this.claude.inspectSession(input)
19
+ : this.codex.inspectSession(input);
20
+ }
21
+ async inspectRun(input) {
22
+ return input.tool === 'claude'
23
+ ? this.claude.inspectRun(input)
24
+ : this.codex.inspectRun(input);
25
+ }
26
+ async stopSession(input) {
27
+ if (input.tool === 'claude') {
28
+ await this.claude.stopSession(input);
29
+ }
30
+ else {
31
+ await this.codex.stopSession(input);
32
+ }
33
+ }
34
+ }
35
+ //# sourceMappingURL=LocalACPClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalACPClient.js","sourceRoot":"","sources":["../../src/providers/LocalACPClient.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAEhE,MAAM,OAAO,cAAc;IACR,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAChC,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;IAE/C,KAAK,CAAC,aAAa,CAAC,KAAyB;QAC3C,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAC5B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAoB;QACjC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAC5B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC7B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAA0B;QAC7C,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAC5B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;YACnC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAsB;QACrC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;YAC5B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC;YAC/B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAuB;QACvC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ export declare function tmux(args: string[]): string | null;
2
+ export declare function sessionExists(session: string): boolean;
3
+ export declare function capturePaneText(session: string, lines: number): string;
4
+ export declare function sleep(ms: number): Promise<void>;
5
+ export declare function pastePrompt(session: string, prompt: string): Promise<void>;
6
+ //# sourceMappingURL=acpTmux.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acpTmux.d.ts","sourceRoot":"","sources":["../../src/providers/acpTmux.ts"],"names":[],"mappings":"AAGA,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAwBlD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAsB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAErD;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQhF"}
@@ -0,0 +1,51 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { rmSync, writeFileSync } from 'node:fs';
3
+ export function tmux(args) {
4
+ try {
5
+ return execFileSync('tmux', args, {
6
+ encoding: 'utf-8',
7
+ timeout: 10_000,
8
+ stdio: ['ignore', 'pipe', 'pipe'],
9
+ });
10
+ }
11
+ catch (err) {
12
+ const stderr = err.stderr ?? '';
13
+ if (stderr.includes('server exited unexpectedly') || stderr.includes('no server running')) {
14
+ try {
15
+ const uid = process.getuid?.() ?? 1000;
16
+ rmSync(`/tmp/tmux-${uid}`, { recursive: true, force: true });
17
+ return execFileSync('tmux', args, {
18
+ encoding: 'utf-8',
19
+ timeout: 10_000,
20
+ stdio: ['ignore', 'pipe', 'pipe'],
21
+ });
22
+ }
23
+ catch {
24
+ return null;
25
+ }
26
+ }
27
+ return null;
28
+ }
29
+ }
30
+ export function sessionExists(session) {
31
+ return tmux(['has-session', '-t', session]) !== null;
32
+ }
33
+ export function capturePaneText(session, lines) {
34
+ return tmux(['capture-pane', '-t', session, '-p', '-S', `-${lines}`]) ?? '';
35
+ }
36
+ export async function sleep(ms) {
37
+ await new Promise((resolve) => setTimeout(resolve, ms));
38
+ }
39
+ export async function pastePrompt(session, prompt) {
40
+ const bufferFile = `/tmp/sps-acp-${Date.now()}.txt`;
41
+ writeFileSync(bufferFile, prompt);
42
+ tmux(['load-buffer', bufferFile]);
43
+ tmux(['paste-buffer', '-t', session]);
44
+ try {
45
+ rmSync(bufferFile, { force: true });
46
+ }
47
+ catch { /* noop */ }
48
+ await sleep(1_500);
49
+ tmux(['send-keys', '-t', session, 'Enter']);
50
+ }
51
+ //# sourceMappingURL=acpTmux.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acpTmux.js","sourceRoot":"","sources":["../../src/providers/acpTmux.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAEhD,MAAM,UAAU,IAAI,CAAC,IAAc;IACjC,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE;YAChC,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,MAAM;YACf,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;SAClC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,MAAM,GAAI,GAA2B,CAAC,MAAM,IAAI,EAAE,CAAC;QACzD,IAAI,MAAM,CAAC,QAAQ,CAAC,4BAA4B,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC1F,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,IAAI,CAAC;gBACvC,MAAM,CAAC,aAAa,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7D,OAAO,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE;oBAChC,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;iBAClC,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,KAAa;IAC5D,OAAO,IAAI,CAAC,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,EAAU;IACpC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,MAAc;IAC/D,MAAM,UAAU,GAAG,gBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IACpD,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAClC,IAAI,CAAC,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACtC,IAAI,CAAC;QAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;IACjE,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;IACnB,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { EnsureSessionInput, EnsureSessionResult, InspectRunInput, InspectRunResult, InspectSessionInput, InspectSessionResult, StartRunInput, StartRunResult, StopSessionInput } from '../../interfaces/ACPClient.js';
2
+ export declare class ClaudeACPAdapter {
3
+ ensureSession(input: EnsureSessionInput): Promise<EnsureSessionResult>;
4
+ startRun(input: StartRunInput): Promise<StartRunResult>;
5
+ inspectSession(input: InspectSessionInput): Promise<InspectSessionResult>;
6
+ inspectRun(input: InspectRunInput): Promise<InspectRunResult>;
7
+ stopSession(input: StopSessionInput): Promise<void>;
8
+ private bootstrapSession;
9
+ private waitReady;
10
+ }
11
+ //# sourceMappingURL=ClaudeACPAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaudeACPAdapter.d.ts","sourceRoot":"","sources":["../../../src/providers/adapters/ClaudeACPAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,gBAAgB,EACjB,MAAM,+BAA+B,CAAC;AAkBvC,qBAAa,gBAAgB;IACrB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAwBtE,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAyBvD,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAYzE,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqB7D,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YAO3C,gBAAgB;YAkChB,SAAS;CAoBxB"}
@@ -0,0 +1,150 @@
1
+ import { capturePaneText, pastePrompt, sessionExists, sleep, tmux } from '../acpTmux.js';
2
+ const CLAUDE_READY = /bypass permissions|\? for shortcuts|tips for shortcuts/i;
3
+ const CLAUDE_PROMPT = /❯\s*$/m;
4
+ const CONFIRMATION_PROMPT = /(Do you want to proceed|y\/n|press enter|confirm|approve)/i;
5
+ const THEME_PROMPT = /Choose the text style that looks best with your terminal|Dark mode|Light mode/i;
6
+ const LOGIN_METHOD_PROMPT = /Select login method|Claude account with subscription|Anthropic Console account/i;
7
+ const BROWSER_SIGNIN_PROMPT = /Opening browser to sign in|Browser didn't open\?|Paste code here if prompted/i;
8
+ function isReady(text) {
9
+ return CLAUDE_READY.test(text) || (/Claude Code/i.test(text) && CLAUDE_PROMPT.test(text));
10
+ }
11
+ function needsStartupInput(text) {
12
+ return THEME_PROMPT.test(text) || LOGIN_METHOD_PROMPT.test(text) || BROWSER_SIGNIN_PROMPT.test(text);
13
+ }
14
+ export class ClaudeACPAdapter {
15
+ async ensureSession(input) {
16
+ const claudeCmd = 'claude --dangerously-skip-permissions';
17
+ const ready = await this.bootstrapSession(input, claudeCmd);
18
+ if (!ready) {
19
+ const paneText = capturePaneText(input.sessionName, 80);
20
+ if (needsStartupInput(paneText)) {
21
+ return {
22
+ sessionId: input.sessionName,
23
+ sessionState: 'booting',
24
+ paneText,
25
+ lastSeenAt: new Date().toISOString(),
26
+ };
27
+ }
28
+ throw new Error('Claude ACP session did not become ready within timeout');
29
+ }
30
+ return {
31
+ sessionId: input.sessionName,
32
+ sessionState: 'ready',
33
+ paneText: capturePaneText(input.sessionName, 40),
34
+ lastSeenAt: new Date().toISOString(),
35
+ };
36
+ }
37
+ async startRun(input) {
38
+ await pastePrompt(input.sessionName, input.prompt);
39
+ for (let attempt = 0; attempt < 3; attempt++) {
40
+ await sleep(2_000);
41
+ const pane = capturePaneText(input.sessionName, 20);
42
+ if (!isReady(pane)) {
43
+ return {
44
+ runId: `${Date.now()}`,
45
+ runState: CONFIRMATION_PROMPT.test(pane) ? 'waiting_input' : 'running',
46
+ paneText: pane,
47
+ lastSeenAt: new Date().toISOString(),
48
+ };
49
+ }
50
+ tmux(['send-keys', '-t', input.sessionName, 'Enter']);
51
+ }
52
+ return {
53
+ runId: `${Date.now()}`,
54
+ runState: 'running',
55
+ paneText: capturePaneText(input.sessionName, 20),
56
+ lastSeenAt: new Date().toISOString(),
57
+ };
58
+ }
59
+ async inspectSession(input) {
60
+ if (!sessionExists(input.sessionName)) {
61
+ return { sessionState: 'offline', paneText: '', lastSeenAt: new Date().toISOString() };
62
+ }
63
+ const pane = capturePaneText(input.sessionName, 80);
64
+ return {
65
+ sessionState: isReady(pane) ? 'ready' : (needsStartupInput(pane) ? 'booting' : 'busy'),
66
+ paneText: pane,
67
+ lastSeenAt: new Date().toISOString(),
68
+ };
69
+ }
70
+ async inspectRun(input) {
71
+ if (!input.activeRun) {
72
+ return { runState: null, paneText: '', lastSeenAt: new Date().toISOString() };
73
+ }
74
+ if (!sessionExists(input.sessionName)) {
75
+ return { runState: 'lost', paneText: '', lastSeenAt: new Date().toISOString() };
76
+ }
77
+ const pane = capturePaneText(input.sessionName, 120);
78
+ let runState = 'running';
79
+ if (CONFIRMATION_PROMPT.test(pane)) {
80
+ runState = 'waiting_input';
81
+ }
82
+ else if (isReady(pane)) {
83
+ runState = 'completed';
84
+ }
85
+ return {
86
+ runState,
87
+ paneText: pane,
88
+ lastSeenAt: new Date().toISOString(),
89
+ };
90
+ }
91
+ async stopSession(input) {
92
+ if (!sessionExists(input.sessionName))
93
+ return;
94
+ tmux(['send-keys', '-t', input.sessionName, '/exit', 'Enter']);
95
+ await sleep(500);
96
+ tmux(['kill-session', '-t', input.sessionName]);
97
+ }
98
+ async bootstrapSession(input, claudeCmd) {
99
+ if (input.resetExisting && sessionExists(input.sessionName)) {
100
+ tmux(['kill-session', '-t', input.sessionName]);
101
+ await sleep(500);
102
+ }
103
+ if (sessionExists(input.sessionName)) {
104
+ const pane = capturePaneText(input.sessionName, 20);
105
+ if (isReady(pane))
106
+ return true;
107
+ tmux(['send-keys', '-t', input.sessionName, 'C-c']);
108
+ await sleep(500);
109
+ tmux(['send-keys', '-t', input.sessionName, claudeCmd, 'Enter']);
110
+ }
111
+ else {
112
+ const result = tmux(['new-session', '-d', '-s', input.sessionName, '-c', input.cwd]);
113
+ if (result === null && !sessionExists(input.sessionName)) {
114
+ throw new Error(`Failed to create tmux session: ${input.sessionName}`);
115
+ }
116
+ tmux(['send-keys', '-t', input.sessionName, claudeCmd, 'Enter']);
117
+ }
118
+ if (await this.waitReady(input.sessionName, 90_000)) {
119
+ return true;
120
+ }
121
+ tmux(['kill-session', '-t', input.sessionName]);
122
+ await sleep(500);
123
+ const recreate = tmux(['new-session', '-d', '-s', input.sessionName, '-c', input.cwd]);
124
+ if (recreate === null && !sessionExists(input.sessionName)) {
125
+ throw new Error(`Failed to recreate tmux session: ${input.sessionName}`);
126
+ }
127
+ tmux(['send-keys', '-t', input.sessionName, claudeCmd, 'Enter']);
128
+ return this.waitReady(input.sessionName, 90_000);
129
+ }
130
+ async waitReady(session, timeoutMs) {
131
+ const deadline = Date.now() + timeoutMs;
132
+ await sleep(3_000);
133
+ while (Date.now() < deadline) {
134
+ const text = capturePaneText(session, 20);
135
+ if (THEME_PROMPT.test(text) || LOGIN_METHOD_PROMPT.test(text)) {
136
+ tmux(['send-keys', '-t', session, 'Enter']);
137
+ await sleep(2_000);
138
+ continue;
139
+ }
140
+ if (BROWSER_SIGNIN_PROMPT.test(text)) {
141
+ return false;
142
+ }
143
+ if (isReady(text))
144
+ return true;
145
+ await sleep(2_000);
146
+ }
147
+ return false;
148
+ }
149
+ }
150
+ //# sourceMappingURL=ClaudeACPAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaudeACPAdapter.js","sourceRoot":"","sources":["../../../src/providers/adapters/ClaudeACPAdapter.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAEzF,MAAM,YAAY,GAAG,yDAAyD,CAAC;AAC/E,MAAM,aAAa,GAAG,QAAQ,CAAC;AAC/B,MAAM,mBAAmB,GAAG,4DAA4D,CAAC;AACzF,MAAM,YAAY,GAAG,gFAAgF,CAAC;AACtG,MAAM,mBAAmB,GAAG,iFAAiF,CAAC;AAC9G,MAAM,qBAAqB,GAAG,+EAA+E,CAAC;AAE9G,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvG,CAAC;AAED,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAC,aAAa,CAAC,KAAyB;QAC3C,MAAM,SAAS,GAAG,uCAAuC,CAAC;QAC1D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACxD,IAAI,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChC,OAAO;oBACL,SAAS,EAAE,KAAK,CAAC,WAAW;oBAC5B,YAAY,EAAE,SAAS;oBACvB,QAAQ;oBACR,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACrC,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QAC5E,CAAC;QAED,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,WAAW;YAC5B,YAAY,EAAE,OAAO;YACrB,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YAChD,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAoB;QACjC,MAAM,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAEnD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YAC7C,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;YACnB,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnB,OAAO;oBACL,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;oBACtB,QAAQ,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;oBACtE,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACrC,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;QACxD,CAAC;QAED,OAAO;YACL,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE;YACtB,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YAChD,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAA0B;QAC7C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACzF,CAAC;QACD,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACpD,OAAO;YACL,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;YACtF,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAsB;QACrC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACrB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QAChF,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QAClF,CAAC;QACD,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QACrD,IAAI,QAAQ,GAAiC,SAAS,CAAC;QACvD,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,QAAQ,GAAG,eAAe,CAAC;QAC7B,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,QAAQ,GAAG,WAAW,CAAC;QACzB,CAAC;QACD,OAAO;YACL,QAAQ;YACR,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACrC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAuB;QACvC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC;YAAE,OAAO;QAC9C,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAClD,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,KAAyB,EAAE,SAAiB;QACzE,IAAI,KAAK,CAAC,aAAa,IAAI,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5D,IAAI,CAAC,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;YAChD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,IAAI,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACpD,IAAI,OAAO,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC/B,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;YACpD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YACjB,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACrF,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;gBACzD,MAAM,IAAI,KAAK,CAAC,kCAAkC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACvF,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,oCAAoC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,OAAe,EAAE,SAAiB;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QAEnB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC1C,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9D,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC5C,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;gBACnB,SAAS;YACX,CAAC;YACD,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACrC,OAAO,KAAK,CAAC;YACf,CAAC;YACD,IAAI,OAAO,CAAC,IAAI,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC/B,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ import type { EnsureSessionInput, EnsureSessionResult, InspectRunInput, InspectRunResult, InspectSessionInput, InspectSessionResult, StartRunInput, StartRunResult, StopSessionInput } from '../../interfaces/ACPClient.js';
2
+ export declare class CodexACPAdapter {
3
+ ensureSession(input: EnsureSessionInput): Promise<EnsureSessionResult>;
4
+ startRun(input: StartRunInput): Promise<StartRunResult>;
5
+ inspectSession(input: InspectSessionInput): Promise<InspectSessionResult>;
6
+ inspectRun(input: InspectRunInput): Promise<InspectRunResult>;
7
+ stopSession(input: StopSessionInput): Promise<void>;
8
+ private bootstrapSession;
9
+ private waitReady;
10
+ }
11
+ //# sourceMappingURL=CodexACPAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodexACPAdapter.d.ts","sourceRoot":"","sources":["../../../src/providers/adapters/CodexACPAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,gBAAgB,EACjB,MAAM,+BAA+B,CAAC;AAiBvC,qBAAa,eAAe;IACpB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAetE,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC;IAyBvD,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAYzE,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqB7D,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;YAO3C,gBAAgB;YAoChB,SAAS;CAiCxB"}