@sigil0/looking-glass 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 (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +572 -0
  3. package/dist/agents/coordinator.d.ts +21 -0
  4. package/dist/agents/coordinator.d.ts.map +1 -0
  5. package/dist/agents/coordinator.js +171 -0
  6. package/dist/agents/coordinator.js.map +1 -0
  7. package/dist/app.d.ts +44 -0
  8. package/dist/app.d.ts.map +1 -0
  9. package/dist/app.js +215 -0
  10. package/dist/app.js.map +1 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +419 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/config.d.ts +4 -0
  16. package/dist/config.d.ts.map +1 -0
  17. package/dist/config.js +132 -0
  18. package/dist/config.js.map +1 -0
  19. package/dist/engine/context.d.ts +6 -0
  20. package/dist/engine/context.d.ts.map +1 -0
  21. package/dist/engine/context.js +65 -0
  22. package/dist/engine/context.js.map +1 -0
  23. package/dist/engine/engine.d.ts +74 -0
  24. package/dist/engine/engine.d.ts.map +1 -0
  25. package/dist/engine/engine.js +573 -0
  26. package/dist/engine/engine.js.map +1 -0
  27. package/dist/engine/types.d.ts +35 -0
  28. package/dist/engine/types.d.ts.map +1 -0
  29. package/dist/engine/types.js +2 -0
  30. package/dist/engine/types.js.map +1 -0
  31. package/dist/instructions.d.ts +8 -0
  32. package/dist/instructions.d.ts.map +1 -0
  33. package/dist/instructions.js +60 -0
  34. package/dist/instructions.js.map +1 -0
  35. package/dist/model/codex-lb.d.ts +141 -0
  36. package/dist/model/codex-lb.d.ts.map +1 -0
  37. package/dist/model/codex-lb.js +471 -0
  38. package/dist/model/codex-lb.js.map +1 -0
  39. package/dist/paths.d.ts +7 -0
  40. package/dist/paths.d.ts.map +1 -0
  41. package/dist/paths.js +41 -0
  42. package/dist/paths.js.map +1 -0
  43. package/dist/scheduler/daemon.d.ts +40 -0
  44. package/dist/scheduler/daemon.d.ts.map +1 -0
  45. package/dist/scheduler/daemon.js +189 -0
  46. package/dist/scheduler/daemon.js.map +1 -0
  47. package/dist/scheduler/index.d.ts +8 -0
  48. package/dist/scheduler/index.d.ts.map +1 -0
  49. package/dist/scheduler/index.js +6 -0
  50. package/dist/scheduler/index.js.map +1 -0
  51. package/dist/scheduler/runner.d.ts +18 -0
  52. package/dist/scheduler/runner.d.ts.map +1 -0
  53. package/dist/scheduler/runner.js +173 -0
  54. package/dist/scheduler/runner.js.map +1 -0
  55. package/dist/scheduler/schedule.d.ts +7 -0
  56. package/dist/scheduler/schedule.d.ts.map +1 -0
  57. package/dist/scheduler/schedule.js +94 -0
  58. package/dist/scheduler/schedule.js.map +1 -0
  59. package/dist/scheduler/store.d.ts +55 -0
  60. package/dist/scheduler/store.d.ts.map +1 -0
  61. package/dist/scheduler/store.js +1203 -0
  62. package/dist/scheduler/store.js.map +1 -0
  63. package/dist/scheduler/systemd.d.ts +7 -0
  64. package/dist/scheduler/systemd.d.ts.map +1 -0
  65. package/dist/scheduler/systemd.js +97 -0
  66. package/dist/scheduler/systemd.js.map +1 -0
  67. package/dist/scheduler/types.d.ts +145 -0
  68. package/dist/scheduler/types.d.ts.map +1 -0
  69. package/dist/scheduler/types.js +7 -0
  70. package/dist/scheduler/types.js.map +1 -0
  71. package/dist/security.d.ts +6 -0
  72. package/dist/security.d.ts.map +1 -0
  73. package/dist/security.js +27 -0
  74. package/dist/security.js.map +1 -0
  75. package/dist/storage/artifact-store.d.ts +19 -0
  76. package/dist/storage/artifact-store.d.ts.map +1 -0
  77. package/dist/storage/artifact-store.js +47 -0
  78. package/dist/storage/artifact-store.js.map +1 -0
  79. package/dist/storage/database.d.ts +5 -0
  80. package/dist/storage/database.d.ts.map +1 -0
  81. package/dist/storage/database.js +395 -0
  82. package/dist/storage/database.js.map +1 -0
  83. package/dist/storage/session-store.d.ts +114 -0
  84. package/dist/storage/session-store.d.ts.map +1 -0
  85. package/dist/storage/session-store.js +731 -0
  86. package/dist/storage/session-store.js.map +1 -0
  87. package/dist/tools/agents.d.ts +14 -0
  88. package/dist/tools/agents.d.ts.map +1 -0
  89. package/dist/tools/agents.js +35 -0
  90. package/dist/tools/agents.js.map +1 -0
  91. package/dist/tools/apply-patch.d.ts +7 -0
  92. package/dist/tools/apply-patch.d.ts.map +1 -0
  93. package/dist/tools/apply-patch.js +429 -0
  94. package/dist/tools/apply-patch.js.map +1 -0
  95. package/dist/tools/ask.d.ts +8 -0
  96. package/dist/tools/ask.d.ts.map +1 -0
  97. package/dist/tools/ask.js +27 -0
  98. package/dist/tools/ask.js.map +1 -0
  99. package/dist/tools/bash.d.ts +9 -0
  100. package/dist/tools/bash.d.ts.map +1 -0
  101. package/dist/tools/bash.js +98 -0
  102. package/dist/tools/bash.js.map +1 -0
  103. package/dist/tools/index.d.ts +9 -0
  104. package/dist/tools/index.d.ts.map +1 -0
  105. package/dist/tools/index.js +34 -0
  106. package/dist/tools/index.js.map +1 -0
  107. package/dist/tools/paths.d.ts +3 -0
  108. package/dist/tools/paths.d.ts.map +1 -0
  109. package/dist/tools/paths.js +34 -0
  110. package/dist/tools/paths.js.map +1 -0
  111. package/dist/tools/process.d.ts +21 -0
  112. package/dist/tools/process.d.ts.map +1 -0
  113. package/dist/tools/process.js +104 -0
  114. package/dist/tools/process.js.map +1 -0
  115. package/dist/tools/read.d.ts +9 -0
  116. package/dist/tools/read.d.ts.map +1 -0
  117. package/dist/tools/read.js +95 -0
  118. package/dist/tools/read.js.map +1 -0
  119. package/dist/tools/registry.d.ts +19 -0
  120. package/dist/tools/registry.d.ts.map +1 -0
  121. package/dist/tools/registry.js +188 -0
  122. package/dist/tools/registry.js.map +1 -0
  123. package/dist/tools/safety.d.ts +9 -0
  124. package/dist/tools/safety.d.ts.map +1 -0
  125. package/dist/tools/safety.js +199 -0
  126. package/dist/tools/safety.js.map +1 -0
  127. package/dist/tools/schedule.d.ts +4 -0
  128. package/dist/tools/schedule.d.ts.map +1 -0
  129. package/dist/tools/schedule.js +191 -0
  130. package/dist/tools/schedule.js.map +1 -0
  131. package/dist/tools/search.d.ts +16 -0
  132. package/dist/tools/search.d.ts.map +1 -0
  133. package/dist/tools/search.js +75 -0
  134. package/dist/tools/search.js.map +1 -0
  135. package/dist/tools/types.d.ts +54 -0
  136. package/dist/tools/types.d.ts.map +1 -0
  137. package/dist/tools/types.js +10 -0
  138. package/dist/tools/types.js.map +1 -0
  139. package/dist/types.d.ts +90 -0
  140. package/dist/types.d.ts.map +1 -0
  141. package/dist/types.js +2 -0
  142. package/dist/types.js.map +1 -0
  143. package/dist/ui/stdio.d.ts +5 -0
  144. package/dist/ui/stdio.d.ts.map +1 -0
  145. package/dist/ui/stdio.js +65 -0
  146. package/dist/ui/stdio.js.map +1 -0
  147. package/dist/ui/tui.d.ts +93 -0
  148. package/dist/ui/tui.d.ts.map +1 -0
  149. package/dist/ui/tui.js +2246 -0
  150. package/dist/ui/tui.js.map +1 -0
  151. package/package.json +53 -0
@@ -0,0 +1,573 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { isStaleResponseError } from "../model/codex-lb.js";
3
+ import { ToolDeniedError, ToolPreflightError, toolApprovalSignature } from "../tools/registry.js";
4
+ import { projectContext } from "./context.js";
5
+ import { configuredCredentialValues, redactSensitiveText, redactSensitiveValue } from "../security.js";
6
+ function userItem(text) {
7
+ return { role: "user", content: [{ type: "input_text", text }] };
8
+ }
9
+ function functionCalls(response) {
10
+ return response.output.filter((item) => item.type === "function_call");
11
+ }
12
+ function toolOutputItem(callId, output) {
13
+ return { type: "function_call_output", call_id: callId, output };
14
+ }
15
+ function errorMessage(error) {
16
+ if (error instanceof Error)
17
+ return error.message;
18
+ return String(error);
19
+ }
20
+ function errorCode(error) {
21
+ if (!error || typeof error !== "object" || !("code" in error))
22
+ return undefined;
23
+ const value = error.code;
24
+ return typeof value === "string" ? value : undefined;
25
+ }
26
+ function isContextOverflowError(error) {
27
+ const code = errorCode(error)?.toLowerCase();
28
+ if (code && ["context_length_exceeded", "context_window_exceeded", "max_tokens_exceeded", "prompt_too_long"].includes(code)) {
29
+ return true;
30
+ }
31
+ const message = errorMessage(error).toLowerCase();
32
+ return /context (?:length|window).*(?:exceed|maximum|limit)|prompt.*(?:too long|token limit)|maximum context length/.test(message);
33
+ }
34
+ function utf8Prefix(value, maxBytes) {
35
+ const data = Buffer.from(value);
36
+ let end = Math.min(data.length, Math.max(0, maxBytes));
37
+ const decoder = new TextDecoder("utf-8", { fatal: true });
38
+ while (end > 0) {
39
+ try {
40
+ return decoder.decode(data.subarray(0, end));
41
+ }
42
+ catch {
43
+ end -= 1;
44
+ }
45
+ }
46
+ return "";
47
+ }
48
+ export class ConversationEngine {
49
+ config;
50
+ workspace;
51
+ store;
52
+ artifacts;
53
+ clientOrResolver;
54
+ tools;
55
+ instructions;
56
+ operationOwner = randomUUID();
57
+ constructor(config, workspace, store, artifacts, clientOrResolver, tools, instructions) {
58
+ this.config = config;
59
+ this.workspace = workspace;
60
+ this.store = store;
61
+ this.artifacts = artifacts;
62
+ this.clientOrResolver = clientOrResolver;
63
+ this.tools = tools;
64
+ this.instructions = instructions;
65
+ }
66
+ clientFor(provider) {
67
+ return typeof this.clientOrResolver === "function"
68
+ ? this.clientOrResolver(provider)
69
+ : this.clientOrResolver;
70
+ }
71
+ toolSummary(name, args) {
72
+ try {
73
+ return this.tools.get(name)?.summarize(args) ?? name;
74
+ }
75
+ catch {
76
+ return name;
77
+ }
78
+ }
79
+ toolDefinitions(session) {
80
+ const definitions = this.tools.definitions();
81
+ return session.agentsEnabled ? definitions : definitions.filter((tool) => tool.name !== "run_agents");
82
+ }
83
+ boundReplayOutput(sessionId, name, output, limit) {
84
+ if (Buffer.byteLength(output) <= limit)
85
+ return output;
86
+ const artifact = this.artifacts.save(sessionId, `${name}-replay-output`, output, { tool: name, replay: true });
87
+ const suffix = `\n\n[Replayed output truncated. Full output: ${artifact.uri}]`;
88
+ return Buffer.byteLength(suffix) >= limit
89
+ ? utf8Prefix(`[Truncated: ${artifact.uri}]`, limit)
90
+ : `${utf8Prefix(output, limit - Buffer.byteLength(suffix))}${suffix}`;
91
+ }
92
+ async turn(sessionId, text, options) {
93
+ return this.withOperationLease(sessionId, "turn", options.signal, async (signal, executionToken) => {
94
+ return this.turnLocked(sessionId, text, { ...options, signal }, executionToken);
95
+ });
96
+ }
97
+ async turnReserved(sessionId, text, options, reservation) {
98
+ return this.withOperationLease(sessionId, "turn", options.signal, async (signal, executionToken) => {
99
+ return this.turnLocked(sessionId, text, { ...options, signal }, executionToken);
100
+ }, reservation);
101
+ }
102
+ async turnLocked(sessionId, text, options, executionToken) {
103
+ this.store.reconcileToolCallEvents(sessionId, executionToken);
104
+ if (this.store.hasUnanchoredContext(sessionId) && this.store.get(sessionId)?.lastResponseId) {
105
+ if (!this.store.resetContinuityFenced(sessionId, executionToken)) {
106
+ throw new Error("Session operation lease was lost during continuity recovery");
107
+ }
108
+ }
109
+ const session = this.requireSession(sessionId);
110
+ const client = this.clientFor(session.provider);
111
+ const secrets = configuredCredentialValues(this.config);
112
+ const firstInput = userItem(text);
113
+ const storedText = redactSensitiveText(text, secrets);
114
+ if (!this.store.appendUserAndSetTitleFenced(sessionId, executionToken, storedText, { item: userItem(storedText) })) {
115
+ throw new Error("Session operation lease was lost before recording the user message");
116
+ }
117
+ const responseContinuity = client.supportsResponseContinuity?.() !== false;
118
+ let previousResponseId = responseContinuity ? session.lastResponseId ?? undefined : undefined;
119
+ let pendingInput = previousResponseId
120
+ ? [firstInput]
121
+ : projectContext(this.store, sessionId).input;
122
+ let response = null;
123
+ let toolCallCount = 0;
124
+ let compacted = false;
125
+ try {
126
+ for (let round = 0; round < this.config.tools.maxToolRounds; round += 1) {
127
+ options.callbacks?.onStatus?.(round === 0 ? "Thinking" : `Tool round ${round}`);
128
+ options.callbacks?.onResponseStart?.(round);
129
+ const request = await this.requestWithRecovery(this.requireSession(sessionId), pendingInput, previousResponseId, options, executionToken);
130
+ response = request.response;
131
+ compacted = request.compacted || compacted;
132
+ const payload = {
133
+ response: {
134
+ id: response.id,
135
+ status: response.status ?? null,
136
+ output: redactSensitiveValue(response.output, secrets),
137
+ usage: response.usage ? {
138
+ input_tokens: response.usage.input_tokens,
139
+ output_tokens: response.usage.output_tokens,
140
+ total_tokens: response.usage.total_tokens,
141
+ } : null,
142
+ },
143
+ };
144
+ if (!this.store.appendResponseAndSetContinuityFenced(sessionId, executionToken, payload, response.id)) {
145
+ throw new Error("Session operation lease was lost before recording the response");
146
+ }
147
+ const calls = functionCalls(response);
148
+ if (calls.length === 0) {
149
+ if (session.kind !== "agent") {
150
+ try {
151
+ compacted = await this.autoCompact(sessionId, response, options.modelInfo, options, executionToken)
152
+ || compacted;
153
+ }
154
+ catch (error) {
155
+ if (options.signal.aborted)
156
+ throw error;
157
+ const message = `Context compaction deferred: ${errorMessage(error)}`;
158
+ options.callbacks?.onWarning?.(message);
159
+ this.store.appendEventFenced(sessionId, executionToken, "error", {
160
+ message,
161
+ code: "compaction_deferred",
162
+ recoverable: true,
163
+ });
164
+ }
165
+ }
166
+ options.callbacks?.onStatus?.("Ready");
167
+ return { response, text: response.output_text, toolCalls: toolCallCount, compacted };
168
+ }
169
+ toolCallCount += calls.length;
170
+ const outputs = await this.executeCalls(sessionId, calls, options, executionToken);
171
+ if (await this.shouldCompact(sessionId, response, options.modelInfo)) {
172
+ await this.compactLocked(sessionId, options, executionToken);
173
+ compacted = true;
174
+ pendingInput = projectContext(this.store, sessionId).input;
175
+ previousResponseId = undefined;
176
+ }
177
+ else if (responseContinuity) {
178
+ pendingInput = outputs;
179
+ previousResponseId = response.id;
180
+ }
181
+ else {
182
+ pendingInput = projectContext(this.store, sessionId).input;
183
+ previousResponseId = undefined;
184
+ }
185
+ }
186
+ throw new Error(`Stopped after ${this.config.tools.maxToolRounds} tool rounds`);
187
+ }
188
+ catch (error) {
189
+ const code = errorCode(error);
190
+ const payload = {
191
+ message: redactSensitiveText(errorMessage(error), secrets),
192
+ ...(code ? { code } : {}),
193
+ recoverable: true,
194
+ };
195
+ this.store.appendEventFenced(sessionId, executionToken, "error", payload);
196
+ throw error;
197
+ }
198
+ }
199
+ async compactNow(sessionId, options) {
200
+ return this.withOperationLease(sessionId, "compact", options.signal, async (signal, executionToken) => {
201
+ return this.compactLocked(sessionId, { ...options, signal }, executionToken);
202
+ });
203
+ }
204
+ async compactLocked(sessionId, options, executionToken) {
205
+ const session = this.requireSession(sessionId);
206
+ const context = projectContext(this.store, sessionId);
207
+ if (context.input.length === 0)
208
+ return;
209
+ options.callbacks?.onStatus?.("Compacting context");
210
+ const compact = await this.clientFor(session.provider).compact({
211
+ model: session.model,
212
+ instructions: this.instructions,
213
+ input: context.input,
214
+ promptCacheKey: session.promptCacheKey,
215
+ fast: session.fast,
216
+ signal: options.signal,
217
+ });
218
+ const usage = compact.usage;
219
+ const inputTokens = usage && typeof usage === "object" && !Array.isArray(usage)
220
+ && typeof usage.input_tokens === "number"
221
+ ? usage.input_tokens
222
+ : null;
223
+ if (!this.store.saveCheckpointAndResetContinuityFenced(sessionId, executionToken, context.latestSequence, compact, inputTokens)) {
224
+ throw new Error("Session operation lease was lost before saving the compacted context");
225
+ }
226
+ options.callbacks?.onStatus?.("Context compacted");
227
+ }
228
+ async requestWithRecovery(session, input, previousResponseId, options, executionToken) {
229
+ const client = this.clientFor(session.provider);
230
+ const anchorAbort = new AbortController();
231
+ let anchorTimedOut = false;
232
+ let firstEventTimer;
233
+ const clearFirstEventTimer = () => {
234
+ if (firstEventTimer)
235
+ clearTimeout(firstEventTimer);
236
+ firstEventTimer = undefined;
237
+ };
238
+ if (previousResponseId) {
239
+ firstEventTimer = setTimeout(() => {
240
+ anchorTimedOut = true;
241
+ anchorAbort.abort();
242
+ }, 30_000);
243
+ firstEventTimer.unref();
244
+ }
245
+ try {
246
+ const streamed = await client.stream({
247
+ model: session.model,
248
+ instructions: this.instructions,
249
+ input,
250
+ tools: this.toolDefinitions(session),
251
+ promptCacheKey: session.promptCacheKey,
252
+ reasoningEffort: session.reasoningEffort,
253
+ supportsReasoning: options.modelInfo.supportsReasoning,
254
+ verbosity: session.verbosity,
255
+ fast: session.fast,
256
+ ...(previousResponseId ? { previousResponseId } : {}),
257
+ signal: previousResponseId ? AbortSignal.any([options.signal, anchorAbort.signal]) : options.signal,
258
+ }, {
259
+ ...options.callbacks,
260
+ onEvent: clearFirstEventTimer,
261
+ });
262
+ return { response: streamed, compacted: false };
263
+ }
264
+ catch (error) {
265
+ const recoveryError = anchorTimedOut
266
+ ? Object.assign(new Error("Previous response produced no stream event within 30 seconds"), {
267
+ code: "previous_response_first_event_timeout",
268
+ })
269
+ : error;
270
+ if (isContextOverflowError(recoveryError) && !options.signal.aborted) {
271
+ options.callbacks?.onStatus?.("Recovering context overflow");
272
+ await this.compactLocked(session.id, options, executionToken);
273
+ const recoverySession = this.requireSession(session.id);
274
+ const streamed = await client.stream({
275
+ model: recoverySession.model,
276
+ instructions: this.instructions,
277
+ input: projectContext(this.store, session.id).input,
278
+ tools: this.toolDefinitions(recoverySession),
279
+ promptCacheKey: recoverySession.promptCacheKey,
280
+ reasoningEffort: recoverySession.reasoningEffort,
281
+ supportsReasoning: options.modelInfo.supportsReasoning,
282
+ verbosity: recoverySession.verbosity,
283
+ fast: recoverySession.fast,
284
+ signal: options.signal,
285
+ }, options.callbacks);
286
+ return { response: streamed, compacted: true };
287
+ }
288
+ if (!previousResponseId || !isStaleResponseError(recoveryError, true) || options.signal.aborted)
289
+ throw recoveryError;
290
+ options.callbacks?.onStatus?.("Recovering conversation context");
291
+ const context = projectContext(this.store, session.id);
292
+ const recoverySession = this.store.resetContinuityFenced(session.id, executionToken);
293
+ if (!recoverySession)
294
+ throw new Error("Session operation lease was lost during stale-anchor recovery");
295
+ const streamed = await client.stream({
296
+ model: recoverySession.model,
297
+ instructions: this.instructions,
298
+ input: context.input,
299
+ tools: this.toolDefinitions(recoverySession),
300
+ promptCacheKey: recoverySession.promptCacheKey,
301
+ reasoningEffort: recoverySession.reasoningEffort,
302
+ supportsReasoning: options.modelInfo.supportsReasoning,
303
+ verbosity: recoverySession.verbosity,
304
+ fast: recoverySession.fast,
305
+ signal: options.signal,
306
+ }, options.callbacks);
307
+ return { response: streamed, compacted: false };
308
+ }
309
+ finally {
310
+ clearFirstEventTimer();
311
+ }
312
+ }
313
+ async executeCalls(sessionId, calls, options, executionToken) {
314
+ const modelOutputBytes = Math.max(1, Math.floor(this.config.tools.maxOutputBytes / Math.max(1, calls.length)));
315
+ const readOnly = calls.every((call) => {
316
+ const tool = this.tools.get(call.name);
317
+ return tool?.risk === "read" && call.name !== "ask_user";
318
+ });
319
+ if (readOnly) {
320
+ const settled = await Promise.allSettled(calls.map((call) => this.executeCall(sessionId, call, options, executionToken, modelOutputBytes)));
321
+ const failure = settled.find((result) => result.status === "rejected");
322
+ if (failure)
323
+ throw failure.reason;
324
+ return settled.map((result) => result.value);
325
+ }
326
+ const outputs = [];
327
+ for (const call of calls) {
328
+ outputs.push(await this.executeCall(sessionId, call, options, executionToken, modelOutputBytes));
329
+ }
330
+ return outputs;
331
+ }
332
+ async executeCall(sessionId, call, options, executionToken, modelOutputBytes) {
333
+ let args;
334
+ try {
335
+ args = this.tools.parseArguments(call.name, call.arguments);
336
+ }
337
+ catch (error) {
338
+ args = { raw_arguments: call.arguments };
339
+ const storedArgs = redactSensitiveValue(args, configuredCredentialValues(this.config));
340
+ const claim = this.store.beginToolCall(sessionId, call.call_id, call.name, storedArgs, executionToken);
341
+ if (!claim.acquired) {
342
+ const output = claim.record.output ?? claim.record.error ?? "Tool call failed";
343
+ return toolOutputItem(call.call_id, this.boundReplayOutput(sessionId, call.name, output, modelOutputBytes));
344
+ }
345
+ const output = `Tool argument error: ${errorMessage(error)}`;
346
+ return this.persistToolOutput(sessionId, call, executionToken, "failed", output, output, undefined, true, options);
347
+ }
348
+ const storedArgs = redactSensitiveValue(args, configuredCredentialValues(this.config));
349
+ let claim = this.store.beginToolCall(sessionId, call.call_id, call.name, storedArgs, executionToken);
350
+ let record = claim.record;
351
+ if (!claim.acquired && (record.name !== call.name
352
+ || toolApprovalSignature(record.name, record.arguments) !== toolApprovalSignature(call.name, storedArgs))) {
353
+ return toolOutputItem(call.call_id, "Tool call ID was reused with a different name or arguments; execution was blocked.");
354
+ }
355
+ if (record.state === "completed" || record.state === "failed" || record.state === "denied") {
356
+ const output = record.output ?? record.error ?? `Previous ${record.state} tool call has no result`;
357
+ return toolOutputItem(call.call_id, this.boundReplayOutput(sessionId, call.name, output, modelOutputBytes));
358
+ }
359
+ if (!claim.acquired && record.state === "unknown") {
360
+ if (record.name !== call.name
361
+ || toolApprovalSignature(record.name, record.arguments) !== toolApprovalSignature(call.name, args)) {
362
+ return toolOutputItem(call.call_id, "Tool was not rerun because its name or arguments changed after the previous outcome became unknown.");
363
+ }
364
+ const authorizationSessionId = options.authorizationSessionId ?? sessionId;
365
+ const signature = toolApprovalSignature(`uncertain-rerun:${call.name}`, record.arguments);
366
+ const remembered = this.store.hasCommandApproval(authorizationSessionId, signature);
367
+ const unrestricted = this.requireSession(sessionId).approvalMode === "unrestricted";
368
+ if (options.automated && !remembered && !unrestricted) {
369
+ return toolOutputItem(call.call_id, "Tool was not rerun because its previous outcome is unknown and no remembered approval exists.");
370
+ }
371
+ const rerun = remembered || unrestricted ? "once" : await options.interaction.approve({
372
+ tool: call.name,
373
+ risk: "critical",
374
+ summary: `Rerun uncertain tool call ${call.name}`,
375
+ details: [
376
+ "Looking Glass stopped before recording whether this tool completed. Rerunning may repeat side effects.",
377
+ `Original arguments:\n${JSON.stringify(record.arguments, null, 2)}`,
378
+ ].join("\n\n"),
379
+ canAlwaysApprove: true,
380
+ });
381
+ options.signal.throwIfAborted();
382
+ if (rerun === "always")
383
+ this.store.registerCommandApproval(authorizationSessionId, signature);
384
+ if (rerun !== "once" && rerun !== "always") {
385
+ return toolOutputItem(call.call_id, this.boundReplayOutput(sessionId, call.name, record.output ?? "Tool was not rerun because its previous outcome is unknown.", modelOutputBytes));
386
+ }
387
+ claim = this.store.resetUnknownToolCall(sessionId, call.call_id, executionToken);
388
+ if (!claim.acquired)
389
+ throw new Error(`Uncertain tool call was claimed by another process: ${call.call_id}`);
390
+ }
391
+ else if (!claim.acquired) {
392
+ throw new Error(`Tool call is already running: ${call.call_id}`);
393
+ }
394
+ const tool = this.tools.get(call.name);
395
+ const summary = this.toolSummary(call.name, storedArgs);
396
+ options.callbacks?.onToolStart?.({ callId: call.call_id, name: call.name, summary });
397
+ if (call.name === "run_agents" && !this.requireSession(sessionId).agentsEnabled) {
398
+ const output = "Agents are disabled for this session. Use /agents on to enable delegation.";
399
+ return this.persistToolOutput(sessionId, call, executionToken, "denied", output, output, undefined, true, options, "tool_denied");
400
+ }
401
+ const context = {
402
+ workspace: this.workspace,
403
+ sessionId,
404
+ ...(options.authorizationSessionId ? { authorizationSessionId: options.authorizationSessionId } : {}),
405
+ callId: call.call_id,
406
+ config: this.config,
407
+ approvalMode: this.requireSession(sessionId).approvalMode,
408
+ artifacts: this.artifacts,
409
+ sessions: this.store,
410
+ signal: options.signal,
411
+ ...(options.readOnly !== undefined ? { readOnly: options.readOnly } : {}),
412
+ ...(options.automated !== undefined ? { automated: options.automated } : {}),
413
+ modelOutputBytes,
414
+ reportProgress: (message) => options.callbacks?.onToolProgress?.({
415
+ callId: call.call_id,
416
+ name: call.name,
417
+ summary,
418
+ output: message,
419
+ }),
420
+ approve: options.interaction.approve,
421
+ ask: options.interaction.ask,
422
+ };
423
+ try {
424
+ if (!this.store.assertOperationToken(sessionId, executionToken)) {
425
+ throw new Error("Session operation lease was lost before tool execution");
426
+ }
427
+ options.signal.throwIfAborted();
428
+ const result = await this.tools.execute(call.name, args, context);
429
+ if (options.signal.aborted) {
430
+ this.persistUnknownToolOutput(sessionId, call, executionToken, options);
431
+ throw new Error("Tool execution was interrupted; its outcome is unknown");
432
+ }
433
+ return this.persistToolOutput(sessionId, call, executionToken, "completed", result.output, null, result, false, options);
434
+ }
435
+ catch (error) {
436
+ if (options.signal.aborted) {
437
+ if (this.store.getToolCall(sessionId, call.call_id)?.state === "started") {
438
+ this.persistUnknownToolOutput(sessionId, call, executionToken, options);
439
+ }
440
+ throw error;
441
+ }
442
+ if (error instanceof ToolDeniedError) {
443
+ const output = error.message;
444
+ return this.persistToolOutput(sessionId, call, executionToken, "denied", output, output, undefined, true, options, "tool_denied");
445
+ }
446
+ if (error instanceof ToolPreflightError) {
447
+ const output = `Tool preflight error: ${error.message}`;
448
+ return this.persistToolOutput(sessionId, call, executionToken, "failed", output, output, undefined, true, options);
449
+ }
450
+ const output = `Tool error: ${errorMessage(error)}`;
451
+ if (tool && tool.risk !== "read") {
452
+ this.persistUnknownToolOutput(sessionId, call, executionToken, options, output);
453
+ throw error;
454
+ }
455
+ return this.persistToolOutput(sessionId, call, executionToken, "failed", output, output, undefined, true, options);
456
+ }
457
+ }
458
+ persistToolOutput(sessionId, call, executionToken, state, output, error, result, failed, options, kind = "tool_result") {
459
+ const secrets = configuredCredentialValues(this.config);
460
+ output = redactSensitiveText(output, secrets);
461
+ error = error === null ? null : redactSensitiveText(error, secrets);
462
+ const item = toolOutputItem(call.call_id, output);
463
+ const payload = {
464
+ name: call.name,
465
+ callId: call.call_id,
466
+ item,
467
+ output,
468
+ ...(result?.artifactUri ? { artifactUri: result.artifactUri } : {}),
469
+ ...(result?.truncated ? { truncated: true } : {}),
470
+ };
471
+ this.store.finishToolCallWithEvent(sessionId, call.call_id, executionToken, state, output, error, kind, payload);
472
+ options.callbacks?.onToolFinish?.({
473
+ callId: call.call_id,
474
+ name: call.name,
475
+ summary: this.toolSummary(call.name, this.store.getToolCall(sessionId, call.call_id)?.arguments),
476
+ output,
477
+ failed,
478
+ });
479
+ return item;
480
+ }
481
+ persistUnknownToolOutput(sessionId, call, executionToken, options, detail = "Tool execution was interrupted; its side effects may have occurred.") {
482
+ const output = redactSensitiveText(detail, configuredCredentialValues(this.config));
483
+ const item = toolOutputItem(call.call_id, output);
484
+ const payload = {
485
+ name: call.name,
486
+ callId: call.call_id,
487
+ item,
488
+ output,
489
+ };
490
+ this.store.markToolCallUnknownWithEvent(sessionId, call.call_id, executionToken, payload);
491
+ options.callbacks?.onToolFinish?.({
492
+ callId: call.call_id,
493
+ name: call.name,
494
+ summary: call.name,
495
+ output,
496
+ failed: true,
497
+ });
498
+ }
499
+ async autoCompact(sessionId, response, model, options, executionToken) {
500
+ if (!await this.shouldCompact(sessionId, response, model))
501
+ return false;
502
+ await this.compactLocked(sessionId, options, executionToken);
503
+ return true;
504
+ }
505
+ async shouldCompact(sessionId, response, model) {
506
+ const checkpointSequence = this.store.latestCheckpoint(sessionId)?.throughSequence ?? 0;
507
+ const semanticGrowth = this.store.semanticEventCount(sessionId, checkpointSequence);
508
+ const reserve = Math.max(20_000, model.maxOutputTokens ?? 0);
509
+ const usableTokens = Math.max(1, model.contextWindow - reserve);
510
+ const threshold = usableTokens * 0.8;
511
+ const providerTokens = response.usage?.input_tokens ?? 0;
512
+ if (providerTokens > 0)
513
+ return semanticGrowth >= 2 && providerTokens >= threshold;
514
+ const context = projectContext(this.store, sessionId).input;
515
+ const estimatedTokens = Math.ceil((this.instructions.length
516
+ + JSON.stringify(this.toolDefinitions(this.requireSession(sessionId))).length
517
+ + JSON.stringify(context).length) / 4) + 2_000;
518
+ return estimatedTokens >= usableTokens;
519
+ }
520
+ async withOperationLease(sessionId, kind, callerSignal, operation, reservation) {
521
+ callerSignal.throwIfAborted();
522
+ const owner = reservation?.owner ?? this.operationOwner;
523
+ const token = reservation?.token ?? randomUUID();
524
+ const leaseMs = 30_000;
525
+ if (reservation) {
526
+ if (!this.store.assertOperationLease(sessionId, owner, token)) {
527
+ throw new Error("Reserved session operation lease is unavailable or expired");
528
+ }
529
+ }
530
+ else if (!this.store.acquireOperationLease(sessionId, owner, token, kind, Date.now(), leaseMs)) {
531
+ throw new Error("Session is busy with another turn or compaction");
532
+ }
533
+ const leaseAbort = new AbortController();
534
+ const signal = AbortSignal.any([callerSignal, leaseAbort.signal]);
535
+ let leaseError = null;
536
+ const heartbeat = setInterval(() => {
537
+ try {
538
+ if (!this.store.renewOperationLease(sessionId, owner, token, Date.now(), leaseMs)) {
539
+ leaseError = new Error("Session operation lease was lost");
540
+ leaseAbort.abort();
541
+ }
542
+ }
543
+ catch (error) {
544
+ leaseError = new Error(`Session operation heartbeat failed: ${errorMessage(error)}`);
545
+ leaseAbort.abort();
546
+ }
547
+ }, Math.floor(leaseMs / 3));
548
+ heartbeat.unref();
549
+ try {
550
+ const result = await operation(signal, token);
551
+ if (leaseError || !this.store.assertOperationLease(sessionId, owner, token)) {
552
+ throw leaseError ?? new Error("Session operation lease expired before completion");
553
+ }
554
+ return result;
555
+ }
556
+ catch (error) {
557
+ if (leaseError)
558
+ throw leaseError;
559
+ throw error;
560
+ }
561
+ finally {
562
+ clearInterval(heartbeat);
563
+ this.store.releaseOperationLease(sessionId, owner, token);
564
+ }
565
+ }
566
+ requireSession(id) {
567
+ const session = this.store.get(id);
568
+ if (!session)
569
+ throw new Error(`Session not found: ${id}`);
570
+ return session;
571
+ }
572
+ }
573
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/engine/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { ResponseInputItem } from "openai/resources/responses/responses";
2
+ export interface StoredUserPayload {
3
+ item: ResponseInputItem;
4
+ }
5
+ export interface StoredResponsePayload {
6
+ response: {
7
+ id: string;
8
+ status: string | null;
9
+ output: unknown[];
10
+ usage?: {
11
+ input_tokens?: number;
12
+ output_tokens?: number;
13
+ total_tokens?: number;
14
+ } | null;
15
+ };
16
+ }
17
+ export interface StoredToolResultPayload {
18
+ name: string;
19
+ callId: string;
20
+ item: ResponseInputItem;
21
+ output: string;
22
+ artifactUri?: string;
23
+ truncated?: boolean;
24
+ }
25
+ export interface StoredErrorPayload {
26
+ message: string;
27
+ code?: string;
28
+ recoverable: boolean;
29
+ }
30
+ export interface ProjectedContext {
31
+ input: ResponseInputItem[];
32
+ checkpointSequence: number;
33
+ latestSequence: number;
34
+ }
35
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/engine/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,MAAM,EAAE,OAAO,EAAE,CAAC;QAClB,KAAK,CAAC,EAAE;YACN,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,YAAY,CAAC,EAAE,MAAM,CAAC;SACvB,GAAG,IAAI,CAAC;KACV,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB"}