@gtc6244/immediacy-daemon 0.1.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 (133) hide show
  1. package/dist/src/actions.d.ts +22 -0
  2. package/dist/src/actions.js +44 -0
  3. package/dist/src/actions.js.map +1 -0
  4. package/dist/src/agent/agent.d.ts +89 -0
  5. package/dist/src/agent/agent.js +22 -0
  6. package/dist/src/agent/agent.js.map +1 -0
  7. package/dist/src/agent/claude.d.ts +70 -0
  8. package/dist/src/agent/claude.js +404 -0
  9. package/dist/src/agent/claude.js.map +1 -0
  10. package/dist/src/agent/codex.d.ts +44 -0
  11. package/dist/src/agent/codex.js +303 -0
  12. package/dist/src/agent/codex.js.map +1 -0
  13. package/dist/src/agent/mock.d.ts +31 -0
  14. package/dist/src/agent/mock.js +155 -0
  15. package/dist/src/agent/mock.js.map +1 -0
  16. package/dist/src/agent/model-error.d.ts +8 -0
  17. package/dist/src/agent/model-error.js +25 -0
  18. package/dist/src/agent/model-error.js.map +1 -0
  19. package/dist/src/agent/openrouter.d.ts +38 -0
  20. package/dist/src/agent/openrouter.js +60 -0
  21. package/dist/src/agent/openrouter.js.map +1 -0
  22. package/dist/src/agent/workspace-scope.d.ts +25 -0
  23. package/dist/src/agent/workspace-scope.js +71 -0
  24. package/dist/src/agent/workspace-scope.js.map +1 -0
  25. package/dist/src/allowlist.d.ts +56 -0
  26. package/dist/src/allowlist.js +141 -0
  27. package/dist/src/allowlist.js.map +1 -0
  28. package/dist/src/chatlog.d.ts +50 -0
  29. package/dist/src/chatlog.js +179 -0
  30. package/dist/src/chatlog.js.map +1 -0
  31. package/dist/src/cli/paths.d.ts +40 -0
  32. package/dist/src/cli/paths.js +76 -0
  33. package/dist/src/cli/paths.js.map +1 -0
  34. package/dist/src/cli/service.d.ts +20 -0
  35. package/dist/src/cli/service.js +245 -0
  36. package/dist/src/cli/service.js.map +1 -0
  37. package/dist/src/cli.d.ts +2 -0
  38. package/dist/src/cli.js +227 -0
  39. package/dist/src/cli.js.map +1 -0
  40. package/dist/src/config.d.ts +33 -0
  41. package/dist/src/config.js +122 -0
  42. package/dist/src/config.js.map +1 -0
  43. package/dist/src/credentials.d.ts +38 -0
  44. package/dist/src/credentials.js +120 -0
  45. package/dist/src/credentials.js.map +1 -0
  46. package/dist/src/crypto.d.ts +49 -0
  47. package/dist/src/crypto.js +202 -0
  48. package/dist/src/crypto.js.map +1 -0
  49. package/dist/src/daemon-identity.d.ts +31 -0
  50. package/dist/src/daemon-identity.js +97 -0
  51. package/dist/src/daemon-identity.js.map +1 -0
  52. package/dist/src/envelope.d.ts +14 -0
  53. package/dist/src/envelope.js +28 -0
  54. package/dist/src/envelope.js.map +1 -0
  55. package/dist/src/events.d.ts +40 -0
  56. package/dist/src/events.js +24 -0
  57. package/dist/src/events.js.map +1 -0
  58. package/dist/src/forward.d.ts +51 -0
  59. package/dist/src/forward.js +170 -0
  60. package/dist/src/forward.js.map +1 -0
  61. package/dist/src/fs-scope.d.ts +17 -0
  62. package/dist/src/fs-scope.js +47 -0
  63. package/dist/src/fs-scope.js.map +1 -0
  64. package/dist/src/github.d.ts +70 -0
  65. package/dist/src/github.js +178 -0
  66. package/dist/src/github.js.map +1 -0
  67. package/dist/src/gitops.d.ts +113 -0
  68. package/dist/src/gitops.js +557 -0
  69. package/dist/src/gitops.js.map +1 -0
  70. package/dist/src/hub.d.ts +50 -0
  71. package/dist/src/hub.js +92 -0
  72. package/dist/src/hub.js.map +1 -0
  73. package/dist/src/index.d.ts +22 -0
  74. package/dist/src/index.js +56 -0
  75. package/dist/src/index.js.map +1 -0
  76. package/dist/src/jobs/scheduler.d.ts +94 -0
  77. package/dist/src/jobs/scheduler.js +373 -0
  78. package/dist/src/jobs/scheduler.js.map +1 -0
  79. package/dist/src/jobs/store.d.ts +33 -0
  80. package/dist/src/jobs/store.js +111 -0
  81. package/dist/src/jobs/store.js.map +1 -0
  82. package/dist/src/log.d.ts +61 -0
  83. package/dist/src/log.js +166 -0
  84. package/dist/src/log.js.map +1 -0
  85. package/dist/src/migrate-state-dir.d.ts +1 -0
  86. package/dist/src/migrate-state-dir.js +47 -0
  87. package/dist/src/migrate-state-dir.js.map +1 -0
  88. package/dist/src/models.d.ts +36 -0
  89. package/dist/src/models.js +71 -0
  90. package/dist/src/models.js.map +1 -0
  91. package/dist/src/permission-gate.d.ts +48 -0
  92. package/dist/src/permission-gate.js +93 -0
  93. package/dist/src/permission-gate.js.map +1 -0
  94. package/dist/src/permission-scope.d.ts +77 -0
  95. package/dist/src/permission-scope.js +244 -0
  96. package/dist/src/permission-scope.js.map +1 -0
  97. package/dist/src/ports.d.ts +71 -0
  98. package/dist/src/ports.js +216 -0
  99. package/dist/src/ports.js.map +1 -0
  100. package/dist/src/projects.d.ts +83 -0
  101. package/dist/src/projects.js +205 -0
  102. package/dist/src/projects.js.map +1 -0
  103. package/dist/src/protocol.d.ts +1226 -0
  104. package/dist/src/protocol.js +16 -0
  105. package/dist/src/protocol.js.map +1 -0
  106. package/dist/src/repo-sync.d.ts +49 -0
  107. package/dist/src/repo-sync.js +83 -0
  108. package/dist/src/repo-sync.js.map +1 -0
  109. package/dist/src/server.d.ts +33 -0
  110. package/dist/src/server.js +973 -0
  111. package/dist/src/server.js.map +1 -0
  112. package/dist/src/terminal.d.ts +32 -0
  113. package/dist/src/terminal.js +92 -0
  114. package/dist/src/terminal.js.map +1 -0
  115. package/dist/src/titler.d.ts +15 -0
  116. package/dist/src/titler.js +72 -0
  117. package/dist/src/titler.js.map +1 -0
  118. package/dist/src/types.d.ts +99 -0
  119. package/dist/src/types.js +3 -0
  120. package/dist/src/types.js.map +1 -0
  121. package/dist/src/usage-limit.d.ts +49 -0
  122. package/dist/src/usage-limit.js +83 -0
  123. package/dist/src/usage-limit.js.map +1 -0
  124. package/dist/src/usage.d.ts +23 -0
  125. package/dist/src/usage.js +63 -0
  126. package/dist/src/usage.js.map +1 -0
  127. package/dist/src/workspace.d.ts +303 -0
  128. package/dist/src/workspace.js +1086 -0
  129. package/dist/src/workspace.js.map +1 -0
  130. package/dist/src/worktree.d.ts +133 -0
  131. package/dist/src/worktree.js +561 -0
  132. package/dist/src/worktree.js.map +1 -0
  133. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../../src/agent/claude.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * CodexAgent — real headless OpenAI Codex via the `codex` CLI.
3
+ *
4
+ * Unlike the Claude Agent SDK (one long-lived streaming session), `codex exec`
5
+ * is one process per turn. We therefore spawn a fresh `codex exec` for each
6
+ * prompt and keep continuity by resuming the recorded thread id on later turns
7
+ * (`codex exec resume <thread_id>`). Prompts that arrive mid-turn are queued and
8
+ * run in order.
9
+ *
10
+ * Streaming: `--json` emits JSONL events on stdout; we map them onto the same
11
+ * AgentEvent surface the UI already renders for Claude.
12
+ *
13
+ * Permissions: Codex's non-interactive `exec` mode can't defer each tool call to
14
+ * the phone the way the Claude SDK's `canUseTool` does. Instead we sandbox it —
15
+ * `-s workspace-write` confines writes to the worktree and `approval_policy=never`
16
+ * refuses (rather than performs) any action that would escape the sandbox. We
17
+ * still surface every file edit / command as an `event.tool_use` for visibility.
18
+ * No `--dangerously-bypass-approvals-and-sandbox`, ever.
19
+ */
20
+ import { BaseAgent, AgentContext, AgentAttachment, PermissionResponse } from "./agent.js";
21
+ export declare class CodexAgent extends BaseAgent {
22
+ private ctx;
23
+ private envOverride?;
24
+ private queue;
25
+ private child;
26
+ private closed;
27
+ private sessionId?;
28
+ /**
29
+ * @param envOverride Extra environment for the `codex` subprocess, merged over
30
+ * `process.env` at spawn (below) without mutating it. Used to inject a stored
31
+ * OPENAI_API_KEY; when omitted, Codex falls back to its own cached ChatGPT
32
+ * login (the SSO path).
33
+ */
34
+ constructor(ctx: AgentContext, envOverride?: Record<string, string | undefined> | undefined);
35
+ prompt(text: string, attachments?: AgentAttachment[]): void;
36
+ respondPermission(_requestId: string, _decision: PermissionResponse): void;
37
+ stop(): Promise<void>;
38
+ private runNext;
39
+ /** Current process is done; kick off the next queued prompt, if any. */
40
+ private finishTurn;
41
+ private handleLine;
42
+ /** Map a Codex item to assistant text (on completion) or a tool_use event. */
43
+ private handleItem;
44
+ }
@@ -0,0 +1,303 @@
1
+ /**
2
+ * CodexAgent — real headless OpenAI Codex via the `codex` CLI.
3
+ *
4
+ * Unlike the Claude Agent SDK (one long-lived streaming session), `codex exec`
5
+ * is one process per turn. We therefore spawn a fresh `codex exec` for each
6
+ * prompt and keep continuity by resuming the recorded thread id on later turns
7
+ * (`codex exec resume <thread_id>`). Prompts that arrive mid-turn are queued and
8
+ * run in order.
9
+ *
10
+ * Streaming: `--json` emits JSONL events on stdout; we map them onto the same
11
+ * AgentEvent surface the UI already renders for Claude.
12
+ *
13
+ * Permissions: Codex's non-interactive `exec` mode can't defer each tool call to
14
+ * the phone the way the Claude SDK's `canUseTool` does. Instead we sandbox it —
15
+ * `-s workspace-write` confines writes to the worktree and `approval_policy=never`
16
+ * refuses (rather than performs) any action that would escape the sandbox. We
17
+ * still surface every file edit / command as an `event.tool_use` for visibility.
18
+ * No `--dangerously-bypass-approvals-and-sandbox`, ever.
19
+ */
20
+ import { spawn } from "node:child_process";
21
+ import { BaseAgent } from "./agent.js";
22
+ import { CODEX_DEFAULT_MODEL } from "../models.js";
23
+ export class CodexAgent extends BaseAgent {
24
+ ctx;
25
+ envOverride;
26
+ queue = [];
27
+ child = null;
28
+ closed = false;
29
+ sessionId;
30
+ /**
31
+ * @param envOverride Extra environment for the `codex` subprocess, merged over
32
+ * `process.env` at spawn (below) without mutating it. Used to inject a stored
33
+ * OPENAI_API_KEY; when omitted, Codex falls back to its own cached ChatGPT
34
+ * login (the SSO path).
35
+ */
36
+ constructor(ctx, envOverride) {
37
+ super();
38
+ this.ctx = ctx;
39
+ this.envOverride = envOverride;
40
+ this.sessionId = ctx.resumeSessionId;
41
+ }
42
+ prompt(text, attachments) {
43
+ if (this.closed)
44
+ return;
45
+ // `codex exec` takes a single text prompt — no content-block channel for
46
+ // images. Inline text/PDF-less documents as fenced blocks, and name any
47
+ // binary/image attachments so the agent at least knows they were sent.
48
+ this.queue.push(inlineAttachments(text, attachments));
49
+ if (!this.child)
50
+ this.runNext();
51
+ }
52
+ // Codex exec has no interactive approval channel in this mode; the sandbox is
53
+ // the boundary. Kept for interface parity with ClaudeAgent/MockAgent.
54
+ respondPermission(_requestId, _decision) { }
55
+ async stop() {
56
+ this.closed = true;
57
+ this.queue = [];
58
+ this.child?.kill("SIGTERM");
59
+ this.child = null;
60
+ }
61
+ runNext() {
62
+ if (this.closed)
63
+ return;
64
+ const text = this.queue.shift();
65
+ if (text === undefined)
66
+ return;
67
+ // The sentinel model means "use the account default" — omit -m (required on
68
+ // ChatGPT-login Codex, which rejects explicit model ids).
69
+ const model = this.ctx.model && this.ctx.model !== CODEX_DEFAULT_MODEL
70
+ ? this.ctx.model
71
+ : undefined;
72
+ const flags = [
73
+ "exec",
74
+ "--json",
75
+ "--skip-git-repo-check",
76
+ "-C",
77
+ this.ctx.worktreePath,
78
+ "-s",
79
+ "workspace-write",
80
+ "-c",
81
+ "approval_policy=never",
82
+ ...(model ? ["-m", model] : []),
83
+ ];
84
+ // Resume the recorded thread on later turns; the prompt is read from stdin
85
+ // (`-`) so it needs no argv escaping.
86
+ const args = this.sessionId
87
+ ? [...flags, "resume", this.sessionId, "-"]
88
+ : flags;
89
+ const child = spawn("codex", args, {
90
+ cwd: this.ctx.worktreePath,
91
+ env: this.envOverride
92
+ ? { ...process.env, ...this.envOverride }
93
+ : process.env,
94
+ });
95
+ this.child = child;
96
+ this.emitEvent({ kind: "status", status: "running" });
97
+ // A turn settles exactly once. `error` and `close` can both fire (e.g. a
98
+ // failed spawn), which would otherwise double-emit status and race two
99
+ // `runNext` calls on the queue.
100
+ let settled = false;
101
+ const settle = () => {
102
+ if (settled)
103
+ return;
104
+ settled = true;
105
+ this.finishTurn();
106
+ };
107
+ // If codex dies before reading stdin (bad flags / auth failure), writing to
108
+ // the closed pipe emits EPIPE on the stdin stream. With no listener that is
109
+ // an unhandled error that crashes the daemon; swallow it — `close` reports
110
+ // the real exit.
111
+ child.stdin.on("error", () => { });
112
+ child.stdin.write(text);
113
+ child.stdin.end();
114
+ let buf = "";
115
+ child.stdout.on("data", (chunk) => {
116
+ buf += chunk.toString();
117
+ let nl;
118
+ while ((nl = buf.indexOf("\n")) >= 0) {
119
+ const line = buf.slice(0, nl).trim();
120
+ buf = buf.slice(nl + 1);
121
+ if (line)
122
+ this.handleLine(line);
123
+ }
124
+ });
125
+ let stderr = "";
126
+ child.stderr.on("data", (chunk) => {
127
+ stderr += chunk.toString();
128
+ });
129
+ child.on("error", (err) => {
130
+ this.emitEvent({ kind: "error", message: `codex: ${err.message}` });
131
+ this.emitEvent({ kind: "status", status: "error" });
132
+ settle();
133
+ });
134
+ child.on("close", (code) => {
135
+ if (this.closed)
136
+ return;
137
+ if (!settled && code !== 0) {
138
+ const detail = stderr.trim().split("\n").slice(-3).join(" ").trim();
139
+ this.emitEvent({
140
+ kind: "error",
141
+ message: `codex exited ${code}${detail ? `: ${detail}` : ""}`,
142
+ });
143
+ this.emitEvent({ kind: "status", status: "error" });
144
+ }
145
+ settle();
146
+ });
147
+ }
148
+ /** Current process is done; kick off the next queued prompt, if any. */
149
+ finishTurn() {
150
+ this.child = null;
151
+ if (!this.closed && this.queue.length)
152
+ this.runNext();
153
+ }
154
+ handleLine(line) {
155
+ let ev;
156
+ try {
157
+ ev = JSON.parse(line);
158
+ }
159
+ catch {
160
+ return; // non-JSON noise
161
+ }
162
+ switch (ev.type) {
163
+ case "thread.started": {
164
+ const id = ev.thread_id;
165
+ if (typeof id === "string") {
166
+ this.sessionId = id;
167
+ this.emitEvent({ kind: "session", sessionId: id });
168
+ }
169
+ return;
170
+ }
171
+ case "item.started":
172
+ this.handleItem(ev.item, false);
173
+ return;
174
+ case "item.completed":
175
+ this.handleItem(ev.item, true);
176
+ return;
177
+ case "turn.completed":
178
+ this.emitEvent({ kind: "done" });
179
+ this.emitEvent({ kind: "status", status: "done" });
180
+ return;
181
+ case "turn.failed": {
182
+ const msg = extractError(ev);
183
+ this.emitEvent({ kind: "error", message: msg });
184
+ this.emitEvent({ kind: "status", status: "error" });
185
+ return;
186
+ }
187
+ case "error":
188
+ this.emitEvent({ kind: "error", message: extractError(ev) });
189
+ this.emitEvent({ kind: "status", status: "error" });
190
+ return;
191
+ default:
192
+ return; // reasoning/turn.started/etc. — not forwarded
193
+ }
194
+ }
195
+ /** Map a Codex item to assistant text (on completion) or a tool_use event. */
196
+ handleItem(item, completed) {
197
+ if (!item || typeof item !== "object")
198
+ return;
199
+ const it = item;
200
+ switch (it.type) {
201
+ case "agent_message": {
202
+ // Emit the final text once, on completion.
203
+ if (completed && typeof it.text === "string" && it.text.trim()) {
204
+ this.emitEvent({ kind: "assistant", text: it.text.trim() });
205
+ }
206
+ return;
207
+ }
208
+ case "file_change": {
209
+ if (completed)
210
+ return; // announce once, when it starts
211
+ const paths = Array.isArray(it.changes)
212
+ ? it.changes
213
+ .map((c) => c.path)
214
+ .filter((p) => typeof p === "string")
215
+ .map((p) => p.split("/").pop() ?? p)
216
+ .join(", ")
217
+ : "";
218
+ this.emitEvent({ kind: "tool_use", tool: "Edit", inputSummary: paths });
219
+ return;
220
+ }
221
+ case "command_execution": {
222
+ if (completed)
223
+ return;
224
+ const cmd = typeof it.command === "string" ? it.command : "";
225
+ this.emitEvent({ kind: "tool_use", tool: "Bash", inputSummary: cmd });
226
+ return;
227
+ }
228
+ case "mcp_tool_call": {
229
+ if (completed)
230
+ return;
231
+ const name = typeof it.tool === "string"
232
+ ? it.tool
233
+ : typeof it.server === "string"
234
+ ? String(it.server)
235
+ : "mcp";
236
+ this.emitEvent({ kind: "tool_use", tool: name, inputSummary: "" });
237
+ return;
238
+ }
239
+ default:
240
+ return; // reasoning, todo_list, etc.
241
+ }
242
+ }
243
+ }
244
+ /** Pull a human-readable message out of a Codex error/turn.failed event. */
245
+ function extractError(ev) {
246
+ const err = ev.error;
247
+ if (typeof err === "string")
248
+ return unwrap(err);
249
+ if (err && typeof err === "object") {
250
+ const m = err.message;
251
+ if (typeof m === "string")
252
+ return unwrap(m);
253
+ }
254
+ if (typeof ev.message === "string")
255
+ return unwrap(ev.message);
256
+ return "codex error";
257
+ }
258
+ /**
259
+ * Codex sometimes nests an API error as a JSON string inside `message`
260
+ * (e.g. `{"type":"error","error":{"message":"…"}}`). Surface the inner text.
261
+ */
262
+ function unwrap(s) {
263
+ const t = s.trim();
264
+ if (!t.startsWith("{"))
265
+ return t;
266
+ try {
267
+ const j = JSON.parse(t);
268
+ const inner = j.error?.message ?? j.message;
269
+ if (typeof inner === "string")
270
+ return inner;
271
+ }
272
+ catch {
273
+ /* not JSON — fall through */
274
+ }
275
+ return t;
276
+ }
277
+ /**
278
+ * Fold prompt attachments into a single text prompt for the `codex exec` CLI,
279
+ * which has no content-block channel. Text-decodable documents are inlined
280
+ * verbatim; images and other binary files are listed by name so the agent knows
281
+ * they exist even though it can't see their bytes.
282
+ */
283
+ function inlineAttachments(text, attachments) {
284
+ if (!attachments || attachments.length === 0)
285
+ return text;
286
+ const parts = [];
287
+ if (text.trim().length > 0)
288
+ parts.push(text);
289
+ const unseen = [];
290
+ for (const a of attachments) {
291
+ if (a.mediaType.startsWith("image/") || a.mediaType === "application/pdf") {
292
+ unseen.push(`${a.name} (${a.mediaType})`);
293
+ continue;
294
+ }
295
+ const decoded = Buffer.from(a.data, "base64").toString("utf8");
296
+ parts.push(`<attached file: ${a.name}>\n${decoded}\n</attached file>`);
297
+ }
298
+ if (unseen.length > 0) {
299
+ parts.push(`[The user also attached, but this backend can't display: ${unseen.join(", ")}]`);
300
+ }
301
+ return parts.join("\n\n");
302
+ }
303
+ //# sourceMappingURL=codex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/agent/codex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * MockAgent — a scripted agent for local/emulator testing.
3
+ *
4
+ * It is NOT a stub: it drives the real permission gate, writes a real file into
5
+ * the real git worktree (so `diff.get` returns genuine hunks), and emits every
6
+ * event type the UI must render. What it does NOT do is call a model or spend
7
+ * credits — the prompt text just chooses a canned script.
8
+ *
9
+ * Flow per prompt:
10
+ * assistant ("on it") → tool_use (Write) → permission_request → [phone] →
11
+ * allow: write file, assistant ("done"), done
12
+ * deny : assistant ("ok, skipped"), done
13
+ */
14
+ import { BaseAgent, AgentContext, AgentAttachment, PermissionResponse } from "./agent.js";
15
+ export declare class MockAgent extends BaseAgent {
16
+ private ctx;
17
+ private gate;
18
+ /** Live gated calls (see ClaudeAgent) so `allow_all` can derive a rule. */
19
+ private pendingCalls;
20
+ private sessionId;
21
+ private turn;
22
+ constructor(ctx: AgentContext);
23
+ prompt(text: string, attachments?: AgentAttachment[]): void;
24
+ respondPermission(requestId: string, decision: PermissionResponse): void;
25
+ /** See ClaudeAgent.releaseCoveredPending — same retroactive-release sweep. */
26
+ private releaseCoveredPending;
27
+ stop(): Promise<void>;
28
+ private run;
29
+ /** The approved side effect (real worktree write + done events). */
30
+ private performWrite;
31
+ }
@@ -0,0 +1,155 @@
1
+ /**
2
+ * MockAgent — a scripted agent for local/emulator testing.
3
+ *
4
+ * It is NOT a stub: it drives the real permission gate, writes a real file into
5
+ * the real git worktree (so `diff.get` returns genuine hunks), and emits every
6
+ * event type the UI must render. What it does NOT do is call a model or spend
7
+ * credits — the prompt text just chooses a canned script.
8
+ *
9
+ * Flow per prompt:
10
+ * assistant ("on it") → tool_use (Write) → permission_request → [phone] →
11
+ * allow: write file, assistant ("done"), done
12
+ * deny : assistant ("ok, skipped"), done
13
+ */
14
+ import { randomUUID } from "node:crypto";
15
+ import { writeFile } from "node:fs/promises";
16
+ import { join } from "node:path";
17
+ import { BaseAgent } from "./agent.js";
18
+ import { PermissionGate } from "../permission-gate.js";
19
+ export class MockAgent extends BaseAgent {
20
+ ctx;
21
+ gate = new PermissionGate(120_000);
22
+ /** Live gated calls (see ClaudeAgent) so `allow_all` can derive a rule. */
23
+ pendingCalls = new Map();
24
+ sessionId = randomUUID();
25
+ turn = 0;
26
+ constructor(ctx) {
27
+ super();
28
+ this.ctx = ctx;
29
+ // Surface a session id immediately, like the real init message does.
30
+ queueMicrotask(() => this.emitEvent({ kind: "session", sessionId: this.sessionId }));
31
+ }
32
+ prompt(text, attachments) {
33
+ // The mock doesn't call a model, so attachments only decorate the echoed
34
+ // prompt — enough to prove the plumbing carried them end to end.
35
+ const note = attachments && attachments.length > 0
36
+ ? `${text} [${attachments.length} attachment(s): ${attachments.map((a) => a.name).join(", ")}]`
37
+ : text;
38
+ void this.run(note);
39
+ }
40
+ respondPermission(requestId, decision) {
41
+ if (decision === "allow_all") {
42
+ const call = this.pendingCalls.get(requestId);
43
+ if (call && this.ctx.allowlist) {
44
+ void this.ctx.allowlist
45
+ .allowFromCall(call.tool, call.input, this.ctx.worktreePath, this.ctx.workspaceId)
46
+ .catch(() => { });
47
+ }
48
+ this.pendingCalls.delete(requestId);
49
+ this.gate.resolve(requestId, "allow");
50
+ // Mirror ClaudeAgent: a new rule retroactively releases matching pending
51
+ // calls (see claude.ts releaseCoveredPending).
52
+ this.releaseCoveredPending();
53
+ return;
54
+ }
55
+ this.pendingCalls.delete(requestId);
56
+ this.gate.resolve(requestId, decision);
57
+ }
58
+ /** See ClaudeAgent.releaseCoveredPending — same retroactive-release sweep. */
59
+ releaseCoveredPending() {
60
+ const allowlist = this.ctx.allowlist;
61
+ if (!allowlist)
62
+ return;
63
+ for (const [reqId, call] of [...this.pendingCalls]) {
64
+ if (!allowlist.isAllowed(call.tool, call.input, this.ctx.worktreePath))
65
+ continue;
66
+ this.pendingCalls.delete(reqId);
67
+ this.gate.resolve(reqId, "allow");
68
+ this.emitEvent({ kind: "permission_resolved", requestId: reqId, decision: "allow" });
69
+ }
70
+ }
71
+ async stop() {
72
+ this.pendingCalls.clear();
73
+ this.gate.denyAll();
74
+ }
75
+ async run(promptText) {
76
+ this.turn += 1;
77
+ // QA hook: a prompt that starts with "/limit" simulates a usage limit
78
+ // resetting ~5 minutes out, so the restart-job flow can be exercised without
79
+ // waiting on a real plan limit. Matched as a leading command so a normal
80
+ // prompt merely mentioning "/limit" isn't hijacked.
81
+ if (promptText.trim().startsWith("/limit")) {
82
+ this.emitEvent({ kind: "status", status: "running" });
83
+ await delay(200);
84
+ this.emitEvent({
85
+ kind: "limit",
86
+ message: "Claude AI usage limit reached (simulated)",
87
+ resetAt: Date.now() + 5 * 60 * 1000,
88
+ });
89
+ this.emitEvent({ kind: "status", status: "error" });
90
+ return;
91
+ }
92
+ const fileName = `mock-${this.turn}.txt`;
93
+ const filePath = join(this.ctx.worktreePath, fileName);
94
+ const contents = `Created by MockAgent for prompt:\n${promptText}\n`;
95
+ this.emitEvent({ kind: "status", status: "running" });
96
+ await delay(300);
97
+ this.emitEvent({
98
+ kind: "assistant",
99
+ text: `On it — I'll create \`${fileName}\` in the worktree.`,
100
+ });
101
+ await delay(300);
102
+ const input = { file_path: filePath };
103
+ const inputSummary = `Write ${fileName} (${contents.length} bytes)`;
104
+ this.emitEvent({ kind: "tool_use", tool: "Write", inputSummary });
105
+ // A prior "Allow all" for this folder auto-approves without a round-trip.
106
+ if (this.ctx.allowlist?.isAllowed("Write", input, this.ctx.worktreePath)) {
107
+ await this.performWrite(filePath, contents, fileName);
108
+ return;
109
+ }
110
+ // Defer the write behind the phone, exactly like a real PreToolUse gate.
111
+ const requestId = randomUUID();
112
+ this.pendingCalls.set(requestId, { tool: "Write", input });
113
+ this.emitEvent({ kind: "status", status: "awaiting_permission" });
114
+ this.emitEvent({ kind: "permission", requestId, tool: "Write", inputSummary });
115
+ const decision = await this.gate.wait(requestId);
116
+ this.pendingCalls.delete(requestId);
117
+ if (decision === "deny") {
118
+ this.emitEvent({ kind: "status", status: "running" });
119
+ await delay(200);
120
+ this.emitEvent({
121
+ kind: "assistant",
122
+ text: `Understood — I won't create \`${fileName}\`.`,
123
+ });
124
+ this.emitEvent({ kind: "done", summary: "skipped (denied)", usage: MOCK_USAGE });
125
+ this.emitEvent({ kind: "status", status: "done" });
126
+ return;
127
+ }
128
+ // Approved: perform the real side effect so the diff is genuine.
129
+ await this.performWrite(filePath, contents, fileName);
130
+ }
131
+ /** The approved side effect (real worktree write + done events). */
132
+ async performWrite(filePath, contents, fileName) {
133
+ this.emitEvent({ kind: "status", status: "running" });
134
+ await writeFile(filePath, contents, "utf8");
135
+ await delay(200);
136
+ this.emitEvent({
137
+ kind: "assistant",
138
+ text: `Done. Wrote \`${fileName}\`. Check the Codebase pane for the diff.`,
139
+ });
140
+ this.emitEvent({ kind: "done", summary: `wrote ${fileName}`, usage: MOCK_USAGE });
141
+ this.emitEvent({ kind: "status", status: "done" });
142
+ }
143
+ }
144
+ /** Fixed sample usage so the "✓ done" cost line is exercisable under AGENT_MODE=mock. */
145
+ const MOCK_USAGE = {
146
+ inputTokens: 1840,
147
+ outputTokens: 1120,
148
+ cacheReadTokens: 10450,
149
+ cacheCreationTokens: 0,
150
+ costUsd: 0.0412,
151
+ };
152
+ function delay(ms) {
153
+ return new Promise((r) => setTimeout(r, ms));
154
+ }
155
+ //# sourceMappingURL=mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.js","sourceRoot":"","sources":["../../../src/agent/mock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Classify a model-backend failure into a small, stable set of classes so the
3
+ * Logs pane can say *why* a call failed, not just "error". Deterministic and
4
+ * first-match-wins over the error's message + any numeric status, so it unit
5
+ * tests against canned strings without touching the network.
6
+ */
7
+ export type ModelErrorClass = "auth" | "rate_limit" | "timeout" | "network" | "unknown";
8
+ export declare function classifyModelError(err: unknown): ModelErrorClass;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Classify a model-backend failure into a small, stable set of classes so the
3
+ * Logs pane can say *why* a call failed, not just "error". Deterministic and
4
+ * first-match-wins over the error's message + any numeric status, so it unit
5
+ * tests against canned strings without touching the network.
6
+ */
7
+ export function classifyModelError(err) {
8
+ const status = err && typeof err === "object" && "status" in err
9
+ ? String(err.status)
10
+ : "";
11
+ const msg = (err instanceof Error ? err.message : String(err ?? "")).toLowerCase();
12
+ const hay = `${status} ${msg}`;
13
+ if (/\b401\b|\b403\b|unauthor|authentication|invalid api key|permission denied/.test(hay)) {
14
+ return "auth";
15
+ }
16
+ if (/\b429\b|\b529\b|rate.?limit|overloaded/.test(hay))
17
+ return "rate_limit";
18
+ if (/etimedout|timed out|\btimeout\b/.test(hay))
19
+ return "timeout";
20
+ if (/econnrefused|enotfound|eai_again|econnreset|fetch failed|network|socket hang up|dns/.test(hay)) {
21
+ return "network";
22
+ }
23
+ return "unknown";
24
+ }
25
+ //# sourceMappingURL=model-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-error.js","sourceRoot":"","sources":["../../../src/agent/model-error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,UAAU,kBAAkB,CAAC,GAAY;IAC7C,MAAM,MAAM,GACV,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,QAAQ,IAAI,GAAG;QAC/C,CAAC,CAAC,MAAM,CAAE,GAA2B,CAAC,MAAM,CAAC;QAC7C,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,GAAG,GAAG,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACnF,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;IAE/B,IAAI,2EAA2E,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1F,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,wCAAwC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IAC5E,IAAI,iCAAiC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAClE,IAAI,qFAAqF,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACpG,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}