@vibes.diy/api-svc 14.0.21 → 14.0.23

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 (94) hide show
  1. package/create-handler.js +12 -0
  2. package/create-handler.js.map +1 -1
  3. package/evento-handler-manifest.js +2 -0
  4. package/evento-handler-manifest.js.map +1 -1
  5. package/intern/agent-assembly.d.ts +1 -0
  6. package/intern/agent-assembly.js +6 -1
  7. package/intern/agent-assembly.js.map +1 -1
  8. package/intern/agent-belt.d.ts +4 -1
  9. package/intern/agent-belt.js +12 -3
  10. package/intern/agent-belt.js.map +1 -1
  11. package/intern/agent-build-tools.d.ts +4 -0
  12. package/intern/agent-build-tools.js +6 -0
  13. package/intern/agent-build-tools.js.map +1 -1
  14. package/intern/agent-dispatcher.d.ts +1 -1
  15. package/intern/agent-dispatcher.js +4 -4
  16. package/intern/agent-dispatcher.js.map +1 -1
  17. package/intern/agent-evidence.d.ts +12 -0
  18. package/intern/agent-evidence.js +70 -0
  19. package/intern/agent-evidence.js.map +1 -0
  20. package/intern/agent-file-tools.d.ts +12 -0
  21. package/intern/agent-file-tools.js +162 -0
  22. package/intern/agent-file-tools.js.map +1 -0
  23. package/intern/agent-file-validation.d.ts +9 -0
  24. package/intern/agent-file-validation.js +81 -0
  25. package/intern/agent-file-validation.js.map +1 -0
  26. package/intern/agent-instruction.d.ts +1 -1
  27. package/intern/agent-instruction.js +1 -1
  28. package/intern/agent-lane-flag.d.ts +7 -0
  29. package/intern/agent-lane-flag.js +3 -0
  30. package/intern/agent-lane-flag.js.map +1 -1
  31. package/intern/agent-session-instruction.d.ts +1 -0
  32. package/intern/agent-session-instruction.js +43 -0
  33. package/intern/agent-session-instruction.js.map +1 -0
  34. package/intern/agent-session-runtime.d.ts +39 -0
  35. package/intern/agent-session-runtime.js +247 -0
  36. package/intern/agent-session-runtime.js.map +1 -0
  37. package/intern/agent-session-store.d.ts +6 -0
  38. package/intern/agent-session-store.js +52 -0
  39. package/intern/agent-session-store.js.map +1 -0
  40. package/intern/agent-session.d.ts +193 -0
  41. package/intern/agent-session.js +180 -0
  42. package/intern/agent-session.js.map +1 -0
  43. package/intern/agent-turn.d.ts +5 -1
  44. package/intern/agent-turn.js +7 -3
  45. package/intern/agent-turn.js.map +1 -1
  46. package/intern/agent-wake.d.ts +10 -6
  47. package/intern/agent-wake.js +3 -1
  48. package/intern/agent-wake.js.map +1 -1
  49. package/intern/llm-tool-loop.d.ts +11 -1
  50. package/intern/llm-tool-loop.js +79 -7
  51. package/intern/llm-tool-loop.js.map +1 -1
  52. package/intern/mint-fire-core.js +3 -3
  53. package/intern/mint-fire-core.js.map +1 -1
  54. package/intern/open-turn-store.js +2 -2
  55. package/intern/open-turn-store.js.map +1 -1
  56. package/intern/process-access-bindings.d.ts +1 -0
  57. package/intern/process-access-bindings.js +1 -1
  58. package/intern/process-access-bindings.js.map +1 -1
  59. package/intern/prompt-dispatch-context.d.ts +4 -0
  60. package/intern/prompt-dispatch-context.js +19 -0
  61. package/intern/prompt-dispatch-context.js.map +1 -0
  62. package/intern/work-tools.d.ts +1 -0
  63. package/intern/work-tools.js +1 -1
  64. package/intern/work-tools.js.map +1 -1
  65. package/package.json +12 -11
  66. package/public/fork-app.js +24 -26
  67. package/public/fork-app.js.map +1 -1
  68. package/public/fs-prompt.d.ts +2 -1
  69. package/public/fs-prompt.js +57 -2
  70. package/public/fs-prompt.js.map +1 -1
  71. package/public/llm-dispatch.d.ts +2 -2
  72. package/public/llm-dispatch.js +26 -1
  73. package/public/llm-dispatch.js.map +1 -1
  74. package/public/open-chat.d.ts +2 -2
  75. package/public/open-chat.js +25 -0
  76. package/public/open-chat.js.map +1 -1
  77. package/public/prompt-chat-section.js +302 -12
  78. package/public/prompt-chat-section.js.map +1 -1
  79. package/public/report-top-vibes-by-traffic.d.ts +5 -0
  80. package/public/report-top-vibes-by-traffic.js +69 -0
  81. package/public/report-top-vibes-by-traffic.js.map +1 -0
  82. package/public/vibe-traffic-source.d.ts +114 -0
  83. package/public/vibe-traffic-source.js +322 -0
  84. package/public/vibe-traffic-source.js.map +1 -0
  85. package/types.d.ts +5 -0
  86. package/types.js.map +1 -1
  87. package/usage-report/codegen-delivery-alert.js +2 -2
  88. package/usage-report/codegen-delivery-alert.js.map +1 -1
  89. package/usage-report/vibe-traffic-alert-util.d.ts +74 -0
  90. package/usage-report/vibe-traffic-alert-util.js +237 -0
  91. package/usage-report/vibe-traffic-alert-util.js.map +1 -0
  92. package/usage-report/vibe-traffic-alert.d.ts +2 -0
  93. package/usage-report/vibe-traffic-alert.js +99 -0
  94. package/usage-report/vibe-traffic-alert.js.map +1 -0
@@ -0,0 +1,247 @@
1
+ import { Result, exception2Result } from "@adviser/cement";
2
+ import { AGENT_SESSION_IDLE, createAgentSession } from "./agent-session.js";
3
+ import { readAgentSession, saveAgentSession } from "./agent-session-store.js";
4
+ import { registerTurnTerminalWaiter } from "./turn-terminal.js";
5
+ import { renderBuildSettledSentence } from "./agent-wake.js";
6
+ import { and, eq } from "drizzle-orm";
7
+ import { PromptAndBlockMsgs, parseArrayWarning, editVibeToolInput, agentFileCommit, } from "@vibes.diy/api-types";
8
+ import { type } from "arktype";
9
+ import { peekBuildLockEntry, BUILD_LOCK_DEADLINE_MS } from "./codegen-build-lock.js";
10
+ const sessions = new WeakMap();
11
+ async function readBuildTerminal(vctx, input) {
12
+ const table = vctx.sql.tables.chatSections;
13
+ const rows = await exception2Result(() => vctx.sql.db
14
+ .select({ blocks: table.blocks })
15
+ .from(table)
16
+ .where(and(eq(table.chatId, input.chatId), eq(table.promptId, input.promptId))));
17
+ if (rows.isErr())
18
+ return Result.Err(rows.Err());
19
+ return Result.Ok(rows.Ok().some((row) => parseArrayWarning(row.blocks, PromptAndBlockMsgs).filtered.some((block) => block.type === "block.end")));
20
+ }
21
+ export function hasLiveAgentSession(scope, chatId) {
22
+ return sessions.get(scope)?.has(chatId) === true;
23
+ }
24
+ export async function deliverAgentSession(vctx, input, event) {
25
+ for (;;) {
26
+ const acquired = await acquireAgentSession(vctx, input);
27
+ if (acquired.isErr())
28
+ return Result.Err(acquired.Err());
29
+ const { live, created } = acquired.Ok();
30
+ if (live.session.snapshot().acceptedIds.includes(event.id)) {
31
+ if (created)
32
+ live.close();
33
+ return Result.Ok({ live, created: false });
34
+ }
35
+ const accepted = await live.session.deliver(event);
36
+ if (accepted.isOk())
37
+ return acquired;
38
+ if (accepted.Err().message === AGENT_SESSION_IDLE) {
39
+ live.close();
40
+ continue;
41
+ }
42
+ if (created)
43
+ live.close();
44
+ return Result.Err(accepted.Err());
45
+ }
46
+ }
47
+ export async function acquireAgentSession(vctx, input, readTerminal = readBuildTerminal) {
48
+ let registry = sessions.get(vctx.connections);
49
+ if (registry === undefined) {
50
+ registry = new Map();
51
+ sessions.set(vctx.connections, registry);
52
+ }
53
+ const existing = registry.get(input.chatId);
54
+ if (existing !== undefined) {
55
+ const found = await existing;
56
+ if (registry.get(input.chatId) !== existing)
57
+ return acquireAgentSession(vctx, input, readTerminal);
58
+ if (found.isErr())
59
+ return Result.Err(found.Err());
60
+ if (found.Ok().session.snapshot().status !== "idle")
61
+ return Result.Ok({ live: found.Ok(), created: false });
62
+ found.Ok().close();
63
+ }
64
+ const owner = registry;
65
+ const started = start();
66
+ owner.set(input.chatId, started);
67
+ const result = await started;
68
+ if (result.isErr()) {
69
+ if (owner.get(input.chatId) === started)
70
+ owner.delete(input.chatId);
71
+ return Result.Err(result.Err());
72
+ }
73
+ return Result.Ok({ live: result.Ok(), created: true });
74
+ async function start() {
75
+ const stored = await readAgentSession(vctx.sql, input.chatId);
76
+ if (stored.isErr())
77
+ return Result.Err(stored.Err());
78
+ const snapshot = stored.Ok();
79
+ const promptId = vctx.sthis.nextId(12).str;
80
+ const session = createAgentSession({
81
+ snapshot: snapshot === undefined ? undefined : { ...snapshot, status: "running" },
82
+ idleMs: 1_000,
83
+ save: (snapshot) => saveAgentSession(vctx.sql, input, { ...snapshot, activePromptId: promptId }),
84
+ });
85
+ const waiters = new Map();
86
+ let execute;
87
+ let commitFiles;
88
+ let pumping = false;
89
+ let closed = false;
90
+ async function report(id, text, resultHandleId) {
91
+ const saved = await session.settle(id, text, resultHandleId);
92
+ if (saved.isErr())
93
+ vctx.logger.Error().Err(saved).Str("chatId", input.chatId).Msg("agent-session-result-save-failed");
94
+ else
95
+ vctx.logger.Info().Any("event", { chatId: input.chatId, handleId: id }).Msg("agent-session-result-recorded");
96
+ }
97
+ async function watch(promptId, id = promptId) {
98
+ if (waiters.has(id) || closed)
99
+ return;
100
+ const deadlineAt = session.snapshot().handles.find((handle) => handle.id === id)?.deadlineAt ?? Date.now() + BUILD_LOCK_DEADLINE_MS;
101
+ const waiter = registerTurnTerminalWaiter({
102
+ scope: vctx.connections,
103
+ chatId: input.chatId,
104
+ promptId,
105
+ deadlineMs: Math.max(0, deadlineAt - Date.now()),
106
+ });
107
+ waiters.set(id, waiter);
108
+ const saved = await session.register({ id, promptId, state: "running", deadlineAt });
109
+ if (saved.isErr()) {
110
+ waiter.cancel();
111
+ waiters.delete(id);
112
+ vctx.logger.Error().Err(saved).Msg("agent-session-handle-save-failed");
113
+ return;
114
+ }
115
+ const terminal = await readTerminal(vctx, { chatId: input.chatId, promptId });
116
+ if (terminal.isErr()) {
117
+ vctx.logger.Error().Err(terminal).Str("promptId", promptId).Msg("agent-session-terminal-read-failed");
118
+ closed = true;
119
+ session.fail(terminal.Err());
120
+ for (const pending of waiters.values())
121
+ pending.cancel();
122
+ waiters.clear();
123
+ return;
124
+ }
125
+ if (terminal.Ok()) {
126
+ waiter.cancel();
127
+ waiters.delete(id);
128
+ await report(id, "[build result] The previously dispatched build reached its terminal. Read the current app before making another change.");
129
+ return;
130
+ }
131
+ void waiter.promise.then(async (landing) => {
132
+ waiters.delete(id);
133
+ if (closed)
134
+ return;
135
+ await report(id, landing.kind === "settled"
136
+ ? `[build result] ${renderBuildSettledSentence(landing.outcome)}`
137
+ : "[build result] The build did not report a result before its deadline. Its outcome is unknown; inspect the app before retrying.");
138
+ await pump();
139
+ });
140
+ }
141
+ async function pump() {
142
+ const dispatchEdit = execute;
143
+ if (pumping || closed || dispatchEdit === undefined)
144
+ return;
145
+ if (session.snapshot().handles.some((handle) => handle.state === "running" || handle.state === "dispatching"))
146
+ return;
147
+ pumping = true;
148
+ const held = peekBuildLockEntry(vctx.connections, input.chatId);
149
+ if (held !== undefined) {
150
+ if (session.snapshot().handles.some((handle) => handle.promptId === held.promptId) === false)
151
+ await watch(held.promptId);
152
+ pumping = false;
153
+ return;
154
+ }
155
+ const queued = session.snapshot().handles.find((handle) => handle.state === "queued");
156
+ if (queued === undefined) {
157
+ pumping = false;
158
+ return;
159
+ }
160
+ const parsed = queued.kind === "commit" ? agentFileCommit(queued.input) : editVibeToolInput(queued.input);
161
+ if (parsed instanceof type.errors) {
162
+ await report(queued.id, `[build result] Queued edit is invalid: ${parsed.summary}`);
163
+ pumping = false;
164
+ await pump();
165
+ return;
166
+ }
167
+ const saved = await session.register({ ...queued, state: "dispatching" });
168
+ if (saved.isErr()) {
169
+ vctx.logger.Error().Err(saved).Msg("agent-session-queue-save-failed");
170
+ pumping = false;
171
+ return;
172
+ }
173
+ const result = await exception2Result(async () => {
174
+ if (queued.kind === "commit") {
175
+ const commit = agentFileCommit(queued.input);
176
+ if (commit instanceof type.errors)
177
+ return Result.Err(commit.summary);
178
+ if (commitFiles === undefined)
179
+ return Result.Err("Direct editing is unavailable on this invocation.");
180
+ return commitFiles(commit);
181
+ }
182
+ const edit = editVibeToolInput(queued.input);
183
+ if (edit instanceof type.errors)
184
+ return Result.Err(edit.summary);
185
+ return dispatchEdit(edit);
186
+ });
187
+ if (result.isErr())
188
+ await report(queued.id, queued.kind === "commit"
189
+ ? `[commit result] ${JSON.stringify({ ok: false, message: result.Err().message })}`
190
+ : `[build result] The queued edit could not start: ${String(result.Err())}`);
191
+ else {
192
+ const receipt = type({ promptId: "string" });
193
+ const value = result.Ok();
194
+ await report(queued.id, queued.kind === "commit"
195
+ ? `[commit result] ${JSON.stringify(result.Ok())}`
196
+ : `[queued edit] Dispatch receipt: ${JSON.stringify(value)}. Wait for its build result before claiming completion.`, queued.kind !== "commit" && receipt.allows(value) ? value.promptId : undefined);
197
+ }
198
+ pumping = false;
199
+ await pump();
200
+ }
201
+ const live = {
202
+ session,
203
+ promptId,
204
+ ...(snapshot?.activePromptId !== undefined ? { supersedes: snapshot.activePromptId } : {}),
205
+ watch,
206
+ async queue(edit) {
207
+ const handleId = vctx.sthis.nextId(12).str;
208
+ const saved = await session.register({ id: handleId, state: "queued", input: edit });
209
+ if (saved.isErr())
210
+ return Result.Err(saved.Err());
211
+ void pump();
212
+ return Result.Ok({ handleId, queued: true });
213
+ },
214
+ async queueCommit() {
215
+ const handleId = vctx.sthis.nextId(12).str;
216
+ const saved = await session.queueDraft(handleId);
217
+ if (saved.isErr())
218
+ return Result.Err(saved.Err());
219
+ void pump();
220
+ return Result.Ok({ handleId, queued: true });
221
+ },
222
+ async bind(next, commit) {
223
+ execute = next;
224
+ commitFiles = commit;
225
+ for (const handle of session.snapshot().handles) {
226
+ if (handle.state === "running" && handle.promptId !== undefined)
227
+ await watch(handle.promptId, handle.id);
228
+ if (closed)
229
+ return;
230
+ if (handle.state === "dispatching")
231
+ await report(handle.id, "[build result] Session restarted during dispatch. The outcome is unknown; inspect the app before retrying this edit.");
232
+ }
233
+ await pump();
234
+ },
235
+ close() {
236
+ closed = true;
237
+ session.stop();
238
+ for (const waiter of waiters.values())
239
+ waiter.cancel();
240
+ if (owner.get(input.chatId) === started)
241
+ owner.delete(input.chatId);
242
+ },
243
+ };
244
+ return Result.Ok(live);
245
+ }
246
+ }
247
+ //# sourceMappingURL=agent-session-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-session-runtime.js","sourceRoot":"","sources":["../../jsr/intern/agent-session-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Result } from "@adviser/cement";
2
+ import type { OpenTurnInput, OpenTurnSql } from "./open-turn-store.js";
3
+ import { type AgentSessionSnapshot } from "./agent-session.js";
4
+ export declare const AGENT_SESSION_RECORD_ID = "@agent-session";
5
+ export declare function readAgentSession(sql: OpenTurnSql, chatId: string): Promise<Result<AgentSessionSnapshot | undefined>>;
6
+ export declare function saveAgentSession(sql: OpenTurnSql, input: Omit<OpenTurnInput, "promptId" | "kind" | "variant">, snapshot: AgentSessionSnapshot): Promise<Result<void>>;
@@ -0,0 +1,52 @@
1
+ import { Result, exception2Result } from "@adviser/cement";
2
+ import { and, eq } from "drizzle-orm";
3
+ import { type } from "arktype";
4
+ import { agentSessionSnapshot } from "./agent-session.js";
5
+ export const AGENT_SESSION_RECORD_ID = "@agent-session";
6
+ export async function readAgentSession(sql, chatId) {
7
+ const table = sql.tables.openTurns;
8
+ const rows = await exception2Result(() => sql.db
9
+ .select({ value: table.agentSession })
10
+ .from(table)
11
+ .where(and(eq(table.chatId, chatId), eq(table.promptId, AGENT_SESSION_RECORD_ID)))
12
+ .limit(1));
13
+ if (rows.isErr())
14
+ return Result.Err(rows.Err());
15
+ const value = rows.Ok()[0]?.value;
16
+ if (value === undefined || value === null)
17
+ return Result.Ok(undefined);
18
+ const json = exception2Result(() => JSON.parse(value));
19
+ if (json.isErr())
20
+ return Result.Err(json.Err());
21
+ const parsed = agentSessionSnapshot(json.Ok());
22
+ if (parsed instanceof type.errors)
23
+ return Result.Err(parsed.summary);
24
+ return Result.Ok(parsed);
25
+ }
26
+ export async function saveAgentSession(sql, input, snapshot) {
27
+ const table = sql.tables.openTurns;
28
+ const now = new Date().toISOString();
29
+ const value = JSON.stringify(snapshot);
30
+ const saved = await exception2Result(() => sql.db
31
+ .insert(table)
32
+ .values({
33
+ ...input,
34
+ promptId: AGENT_SESSION_RECORD_ID,
35
+ kind: "codegen",
36
+ status: "closed",
37
+ startedAt: now,
38
+ deadlineAt: now,
39
+ closedAt: now,
40
+ created: now,
41
+ updated: now,
42
+ agentSession: value,
43
+ })
44
+ .onConflictDoUpdate({
45
+ target: [table.chatId, table.promptId],
46
+ set: { agentSession: value, updated: now },
47
+ }));
48
+ if (saved.isErr())
49
+ return Result.Err(saved.Err());
50
+ return Result.Ok();
51
+ }
52
+ //# sourceMappingURL=agent-session-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-session-store.js","sourceRoot":"","sources":["../../jsr/intern/agent-session-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,193 @@
1
+ import { Result } from "@adviser/cement";
2
+ import { LLMMessage } from "@vibes.diy/call-ai-v2";
3
+ import { type AgentFileChange } from "@vibes.diy/api-types";
4
+ declare const sessionInput: import("arktype/internal/variants/object.ts").ObjectType<{
5
+ id: string;
6
+ messages: ({
7
+ role: "assistant" | "system" | "user";
8
+ content: ({
9
+ type: "text";
10
+ text: string;
11
+ cache_control?: {
12
+ type: "ephemeral";
13
+ ttl?: "1h" | "5m" | undefined;
14
+ } | undefined;
15
+ } | {
16
+ type: "image_url";
17
+ image_url: {
18
+ url: string;
19
+ };
20
+ cache_control?: {
21
+ type: "ephemeral";
22
+ ttl?: "1h" | "5m" | undefined;
23
+ } | undefined;
24
+ } | {
25
+ type: "vibes_file";
26
+ uploadId: string;
27
+ name: string;
28
+ mimeType: string;
29
+ kind: "image" | "text";
30
+ originalUploadId?: string | undefined;
31
+ size?: number | undefined;
32
+ })[];
33
+ } | {
34
+ role: "assistant";
35
+ content: string | null;
36
+ tool_calls: {
37
+ id: string;
38
+ type: "function";
39
+ function: {
40
+ name: string;
41
+ arguments: string;
42
+ };
43
+ }[];
44
+ } | {
45
+ role: "tool";
46
+ content: string;
47
+ tool_call_id: string;
48
+ })[];
49
+ }, {}>;
50
+ declare const sessionHandle: import("arktype/internal/variants/object.ts").ObjectType<{
51
+ id: string;
52
+ state: "dispatching" | "queued" | "running" | "settled";
53
+ promptId?: string | undefined;
54
+ input?: unknown;
55
+ result?: string | undefined;
56
+ deadlineAt?: number | undefined;
57
+ kind?: "commit" | undefined;
58
+ resultHandleId?: string | undefined;
59
+ }, {}>;
60
+ export declare const agentSessionSnapshot: import("arktype/internal/variants/object.ts").ObjectType<{
61
+ version: 1;
62
+ status: "idle" | "running";
63
+ messages: ({
64
+ role: "assistant" | "system" | "user";
65
+ content: ({
66
+ type: "text";
67
+ text: string;
68
+ cache_control?: {
69
+ type: "ephemeral";
70
+ ttl?: "1h" | "5m" | undefined;
71
+ } | undefined;
72
+ } | {
73
+ type: "image_url";
74
+ image_url: {
75
+ url: string;
76
+ };
77
+ cache_control?: {
78
+ type: "ephemeral";
79
+ ttl?: "1h" | "5m" | undefined;
80
+ } | undefined;
81
+ } | {
82
+ type: "vibes_file";
83
+ uploadId: string;
84
+ name: string;
85
+ mimeType: string;
86
+ kind: "image" | "text";
87
+ originalUploadId?: string | undefined;
88
+ size?: number | undefined;
89
+ })[];
90
+ } | {
91
+ role: "assistant";
92
+ content: string | null;
93
+ tool_calls: {
94
+ id: string;
95
+ type: "function";
96
+ function: {
97
+ name: string;
98
+ arguments: string;
99
+ };
100
+ }[];
101
+ } | {
102
+ role: "tool";
103
+ content: string;
104
+ tool_call_id: string;
105
+ })[];
106
+ inbox: {
107
+ id: string;
108
+ messages: ({
109
+ role: "assistant" | "system" | "user";
110
+ content: ({
111
+ type: "text";
112
+ text: string;
113
+ cache_control?: {
114
+ type: "ephemeral";
115
+ ttl?: "1h" | "5m" | undefined;
116
+ } | undefined;
117
+ } | {
118
+ type: "image_url";
119
+ image_url: {
120
+ url: string;
121
+ };
122
+ cache_control?: {
123
+ type: "ephemeral";
124
+ ttl?: "1h" | "5m" | undefined;
125
+ } | undefined;
126
+ } | {
127
+ type: "vibes_file";
128
+ uploadId: string;
129
+ name: string;
130
+ mimeType: string;
131
+ kind: "image" | "text";
132
+ originalUploadId?: string | undefined;
133
+ size?: number | undefined;
134
+ })[];
135
+ } | {
136
+ role: "assistant";
137
+ content: string | null;
138
+ tool_calls: {
139
+ id: string;
140
+ type: "function";
141
+ function: {
142
+ name: string;
143
+ arguments: string;
144
+ };
145
+ }[];
146
+ } | {
147
+ role: "tool";
148
+ content: string;
149
+ tool_call_id: string;
150
+ })[];
151
+ }[];
152
+ handles: {
153
+ id: string;
154
+ state: "dispatching" | "queued" | "running" | "settled";
155
+ promptId?: string | undefined;
156
+ input?: unknown;
157
+ result?: string | undefined;
158
+ deadlineAt?: number | undefined;
159
+ kind?: "commit" | undefined;
160
+ resultHandleId?: string | undefined;
161
+ }[];
162
+ acceptedIds: string[];
163
+ draft?: {
164
+ path: string;
165
+ original?: string | undefined;
166
+ contents: string;
167
+ }[] | undefined;
168
+ activePromptId?: string | undefined;
169
+ }, {}>;
170
+ export type AgentSessionSnapshot = typeof agentSessionSnapshot.infer;
171
+ export type AgentSessionHandle = typeof sessionHandle.infer;
172
+ export type AgentSessionInput = typeof sessionInput.infer;
173
+ export declare const AGENT_SESSION_IDLE = "agent-session-idle";
174
+ export interface AgentSession {
175
+ messages(): LLMMessage[];
176
+ snapshot(): AgentSessionSnapshot;
177
+ takenResults(): AgentSessionHandle[];
178
+ deliver(input: AgentSessionInput): Promise<Result<void>>;
179
+ register(handle: AgentSessionHandle): Promise<Result<void>>;
180
+ settle(id: string, result: string, resultHandleId?: string): Promise<Result<void>>;
181
+ checkpoint(messages: readonly LLMMessage[]): Promise<Result<void>>;
182
+ next(): Promise<Result<LLMMessage[] | undefined>>;
183
+ fail(error: Error): void;
184
+ stage(change: AgentFileChange): Promise<Result<void>>;
185
+ queueDraft(id: string): Promise<Result<void>>;
186
+ stop(): void;
187
+ }
188
+ export declare function createAgentSession(args: {
189
+ readonly snapshot?: AgentSessionSnapshot;
190
+ readonly save: (snapshot: AgentSessionSnapshot) => Promise<Result<void>>;
191
+ readonly idleMs: number;
192
+ }): AgentSession;
193
+ export {};