anchor-ai-sdk 0.1.8 → 0.2.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 (144) hide show
  1. package/README.md +186 -59
  2. package/dist/agents/coding/index.d.ts +1 -1
  3. package/dist/agents/coding/index.d.ts.map +1 -1
  4. package/dist/agents/coding/index.js +1 -1
  5. package/dist/agents/coding/index.js.map +1 -1
  6. package/dist/agents/coding/prompts/index.d.ts +11 -0
  7. package/dist/agents/coding/prompts/index.d.ts.map +1 -1
  8. package/dist/agents/coding/prompts/index.js +11 -0
  9. package/dist/agents/coding/prompts/index.js.map +1 -1
  10. package/dist/anchor.d.ts +35 -0
  11. package/dist/anchor.d.ts.map +1 -0
  12. package/dist/anchor.js +57 -0
  13. package/dist/anchor.js.map +1 -0
  14. package/dist/engine/compaction.d.ts +48 -1
  15. package/dist/engine/compaction.d.ts.map +1 -1
  16. package/dist/engine/compaction.js +210 -0
  17. package/dist/engine/compaction.js.map +1 -1
  18. package/dist/engine/context.d.ts +1 -1
  19. package/dist/engine/context.d.ts.map +1 -1
  20. package/dist/engine/context.js +6 -2
  21. package/dist/engine/context.js.map +1 -1
  22. package/dist/engine/events.d.ts +23 -2
  23. package/dist/engine/events.d.ts.map +1 -1
  24. package/dist/engine/inbox.d.ts +9 -8
  25. package/dist/engine/inbox.d.ts.map +1 -1
  26. package/dist/engine/inbox.js +13 -11
  27. package/dist/engine/inbox.js.map +1 -1
  28. package/dist/engine/loop.d.ts +4 -3
  29. package/dist/engine/loop.d.ts.map +1 -1
  30. package/dist/engine/loop.js +542 -179
  31. package/dist/engine/loop.js.map +1 -1
  32. package/dist/engine/prompt.d.ts +16 -0
  33. package/dist/engine/prompt.d.ts.map +1 -0
  34. package/dist/engine/prompt.js +8 -0
  35. package/dist/engine/prompt.js.map +1 -0
  36. package/dist/engine/strategy.d.ts +0 -1
  37. package/dist/engine/strategy.d.ts.map +1 -1
  38. package/dist/engine/thread.d.ts +4 -1
  39. package/dist/engine/thread.d.ts.map +1 -1
  40. package/dist/engine/thread.js.map +1 -1
  41. package/dist/engine/types.d.ts +25 -14
  42. package/dist/engine/types.d.ts.map +1 -1
  43. package/dist/engine/types.js +13 -1
  44. package/dist/engine/types.js.map +1 -1
  45. package/dist/index.d.ts +4 -2
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +3 -1
  48. package/dist/index.js.map +1 -1
  49. package/dist/ledger/alignment.d.ts +1 -1
  50. package/dist/ledger/alignment.d.ts.map +1 -1
  51. package/dist/ledger/alignment.js +1 -1
  52. package/dist/ledger/alignment.js.map +1 -1
  53. package/dist/ledger/compiler.d.ts +1 -1
  54. package/dist/ledger/compiler.d.ts.map +1 -1
  55. package/dist/ledger/compiler.js +11 -5
  56. package/dist/ledger/compiler.js.map +1 -1
  57. package/dist/ledger/config.d.ts +10 -3
  58. package/dist/ledger/config.d.ts.map +1 -1
  59. package/dist/ledger/index.d.ts +1 -0
  60. package/dist/ledger/index.d.ts.map +1 -1
  61. package/dist/ledger/index.js +1 -0
  62. package/dist/ledger/index.js.map +1 -1
  63. package/dist/ledger/ledger.d.ts +2 -1
  64. package/dist/ledger/ledger.d.ts.map +1 -1
  65. package/dist/ledger/ledger.js +10 -4
  66. package/dist/ledger/ledger.js.map +1 -1
  67. package/dist/ledger/types.d.ts +5 -0
  68. package/dist/ledger/types.d.ts.map +1 -1
  69. package/dist/llm/from-catalog.d.ts +2 -0
  70. package/dist/llm/from-catalog.d.ts.map +1 -1
  71. package/dist/llm/from-catalog.js +3 -0
  72. package/dist/llm/from-catalog.js.map +1 -1
  73. package/dist/llm/index.d.ts +2 -0
  74. package/dist/llm/index.d.ts.map +1 -1
  75. package/dist/llm/index.js +1 -0
  76. package/dist/llm/index.js.map +1 -1
  77. package/dist/llm/openai-compatible.d.ts +7 -1
  78. package/dist/llm/openai-compatible.d.ts.map +1 -1
  79. package/dist/llm/openai-compatible.js +47 -11
  80. package/dist/llm/openai-compatible.js.map +1 -1
  81. package/dist/llm/types.d.ts +29 -0
  82. package/dist/llm/types.d.ts.map +1 -1
  83. package/dist/lsp/index.d.ts +10 -5
  84. package/dist/lsp/index.d.ts.map +1 -1
  85. package/dist/lsp/index.js +6 -4
  86. package/dist/lsp/index.js.map +1 -1
  87. package/dist/lsp/python.d.ts +22 -0
  88. package/dist/lsp/python.d.ts.map +1 -0
  89. package/dist/lsp/python.js +33 -0
  90. package/dist/lsp/python.js.map +1 -0
  91. package/dist/lsp/server.d.ts +184 -0
  92. package/dist/lsp/server.d.ts.map +1 -0
  93. package/dist/lsp/server.js +687 -0
  94. package/dist/lsp/server.js.map +1 -0
  95. package/dist/lsp/tools.d.ts +16 -2
  96. package/dist/lsp/tools.d.ts.map +1 -1
  97. package/dist/lsp/tools.js +565 -27
  98. package/dist/lsp/tools.js.map +1 -1
  99. package/dist/lsp/typescript.d.ts +13 -54
  100. package/dist/lsp/typescript.d.ts.map +1 -1
  101. package/dist/lsp/typescript.js +37 -262
  102. package/dist/lsp/typescript.js.map +1 -1
  103. package/dist/sandbox/daytona/index.d.ts +3 -1
  104. package/dist/sandbox/daytona/index.d.ts.map +1 -1
  105. package/dist/sandbox/daytona/index.js +9 -0
  106. package/dist/sandbox/daytona/index.js.map +1 -1
  107. package/dist/sandbox/docker/index.d.ts.map +1 -1
  108. package/dist/sandbox/docker/index.js +1 -0
  109. package/dist/sandbox/docker/index.js.map +1 -1
  110. package/dist/sandbox/e2b/index.d.ts +2 -1
  111. package/dist/sandbox/e2b/index.d.ts.map +1 -1
  112. package/dist/sandbox/e2b/index.js +9 -0
  113. package/dist/sandbox/e2b/index.js.map +1 -1
  114. package/dist/sandbox/heyo/index.d.ts.map +1 -1
  115. package/dist/sandbox/heyo/index.js +1 -0
  116. package/dist/sandbox/heyo/index.js.map +1 -1
  117. package/dist/sandbox/local/index.d.ts.map +1 -1
  118. package/dist/sandbox/local/index.js +1 -0
  119. package/dist/sandbox/local/index.js.map +1 -1
  120. package/dist/sandbox/provider.d.ts +2 -0
  121. package/dist/sandbox/provider.d.ts.map +1 -1
  122. package/dist/sandbox/types.d.ts +11 -0
  123. package/dist/sandbox/types.d.ts.map +1 -1
  124. package/dist/sandbox/types.js.map +1 -1
  125. package/dist/testing.d.ts.map +1 -1
  126. package/dist/testing.js +16 -0
  127. package/dist/testing.js.map +1 -1
  128. package/dist/tools/index.d.ts +2 -0
  129. package/dist/tools/index.d.ts.map +1 -1
  130. package/dist/tools/index.js +1 -0
  131. package/dist/tools/index.js.map +1 -1
  132. package/dist/tools/view-image.d.ts +20 -0
  133. package/dist/tools/view-image.d.ts.map +1 -0
  134. package/dist/tools/view-image.js +111 -0
  135. package/dist/tools/view-image.js.map +1 -0
  136. package/dist/verify/index.d.ts +3 -0
  137. package/dist/verify/index.d.ts.map +1 -0
  138. package/dist/verify/index.js +2 -0
  139. package/dist/verify/index.js.map +1 -0
  140. package/dist/verify/judge.d.ts +42 -0
  141. package/dist/verify/judge.d.ts.map +1 -0
  142. package/dist/verify/judge.js +119 -0
  143. package/dist/verify/judge.js.map +1 -0
  144. package/package.json +1 -1
@@ -14,12 +14,41 @@
14
14
  * message, so every kept assistant-with-tool_calls has its results with it.
15
15
  */
16
16
  import type { LLMClient, LLMMessage, LLMUsage } from "../llm/types.js";
17
+ import type { ProgressLedger } from "../ledger/types.js";
17
18
  export interface CompactionConfig {
18
19
  /** Compact when the conversation estimate exceeds this (estimated tokens, chars/4). */
19
20
  maxEstimatedTokens?: number;
20
21
  /** How much of the tail to keep verbatim. */
21
22
  keepRecentTokens?: number;
22
23
  }
24
+ /**
25
+ * Durable state that replaces the folded part of a task conversation. The
26
+ * engine builds this with structured output; consumers persist it through
27
+ * their existing ThreadStore. The core fields are SDK-owned so the next
28
+ * window can be reconstructed without trusting a prose summary.
29
+ */
30
+ export interface CompactionHandoff {
31
+ task: string;
32
+ requirements: Array<{
33
+ id: string;
34
+ text: string;
35
+ status: string;
36
+ evidence: string[];
37
+ }>;
38
+ completed: string[];
39
+ currentState: string;
40
+ openFailures: string[];
41
+ nextSteps: string[];
42
+ constraints: string[];
43
+ lastObservations: string[];
44
+ git: {
45
+ head?: string;
46
+ checkpoint?: string;
47
+ dirty?: boolean;
48
+ };
49
+ }
50
+ /** Render the durable handoff as the turn-scoped state block. */
51
+ export declare function renderCompactionHandoff(handoff: CompactionHandoff): string;
23
52
  export declare const DEFAULT_COMPACTION: {
24
53
  readonly maxEstimatedTokens: 80000;
25
54
  readonly keepRecentTokens: 30000;
@@ -49,8 +78,10 @@ export declare function estimateTokens(messages: LLMMessage[]): number;
49
78
  */
50
79
  export declare function findCompactionCut(messages: LLMMessage[], keepRecentTokens: number): number;
51
80
  export interface CompactionOutcome {
52
- /** The new running summary (prior summary + folded transcript). */
81
+ /** A compact prose view for compatibility/events; structured path also has handoff. */
53
82
  summary: string;
83
+ /** Structured state, when the task/ledger path produced it. */
84
+ handoff?: CompactionHandoff;
54
85
  /** The verbatim tail that was kept. */
55
86
  keptMessages: LLMMessage[];
56
87
  removedCount: number;
@@ -70,4 +101,20 @@ export declare function compactConversation(args: {
70
101
  keepRecentTokens: number;
71
102
  signal?: AbortSignal;
72
103
  }): Promise<CompactionOutcome | null>;
104
+ /**
105
+ * Fold a task conversation into the SDK-owned handoff contract. This is used
106
+ * only when a ledger/verifier is active; plain chat keeps the legacy summary
107
+ * path. A malformed response returns null so the caller retains the intact
108
+ * conversation rather than silently losing state.
109
+ */
110
+ export declare function compactConversationStructured(args: {
111
+ llm: LLMClient;
112
+ messages: LLMMessage[];
113
+ previousSummary?: string;
114
+ previousHandoff?: CompactionHandoff;
115
+ ledger?: ProgressLedger;
116
+ git?: CompactionHandoff["git"];
117
+ keepRecentTokens: number;
118
+ signal?: AbortSignal;
119
+ }): Promise<CompactionOutcome | null>;
73
120
  //# sourceMappingURL=compaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/engine/compaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGvE,MAAM,WAAW,gBAAgB;IAC/B,uFAAuF;IACvF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,kBAAkB;aAC7B,kBAAkB,EAAE,KAAM;aAC1B,gBAAgB,EAAE,KAAM;CAChB,CAAC;AAEX;6DAC6D;AAC7D,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAC9C,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAC3C,gFAAgF;AAChF,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAE/C;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,MAAM,EACrB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9C,gBAAgB,CAclB;AAED,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAS7D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,UAAU,EAAE,EACtB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAiBR;AAED,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,6EAA6E;IAC7E,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,QAAQ,CAAC;CACjB;AAwBD;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,GAAG,EAAE,SAAS,CAAC;IACf,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA0CpC"}
1
+ {"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/engine/compaction.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,138 @@
1
+ import { completeStructured } from "../llm/structured.js";
2
+ import { renderLedger } from "../ledger/ledger.js";
1
3
  import { conversationHistory } from "./context.js";
4
+ const HANDOFF_SCHEMA = {
5
+ type: "object",
6
+ properties: {
7
+ task: { type: "string" },
8
+ requirements: {
9
+ type: "array",
10
+ items: {
11
+ type: "object",
12
+ properties: {
13
+ id: { type: "string" },
14
+ text: { type: "string" },
15
+ status: { type: "string" },
16
+ evidence: { type: "array", items: { type: "string" } },
17
+ },
18
+ required: ["id", "text", "status", "evidence"],
19
+ additionalProperties: false,
20
+ },
21
+ },
22
+ completed: { type: "array", items: { type: "string" } },
23
+ currentState: { type: "string" },
24
+ openFailures: { type: "array", items: { type: "string" } },
25
+ nextSteps: { type: "array", items: { type: "string" } },
26
+ constraints: { type: "array", items: { type: "string" } },
27
+ lastObservations: { type: "array", items: { type: "string" } },
28
+ git: {
29
+ type: "object",
30
+ properties: {
31
+ head: { type: "string" },
32
+ checkpoint: { type: "string" },
33
+ dirty: { type: "boolean" },
34
+ },
35
+ additionalProperties: false,
36
+ },
37
+ },
38
+ required: [
39
+ "task",
40
+ "requirements",
41
+ "completed",
42
+ "currentState",
43
+ "openFailures",
44
+ "nextSteps",
45
+ "constraints",
46
+ "lastObservations",
47
+ "git",
48
+ ],
49
+ additionalProperties: false,
50
+ };
51
+ function isRecord(value) {
52
+ return typeof value === "object" && value !== null && !Array.isArray(value);
53
+ }
54
+ function strings(value) {
55
+ if (!Array.isArray(value))
56
+ throw new Error("expected an array of strings");
57
+ return value.map((item) => {
58
+ if (typeof item !== "string")
59
+ throw new Error("expected a string");
60
+ return item;
61
+ });
62
+ }
63
+ function parseCompactionHandoff(value) {
64
+ if (!isRecord(value))
65
+ throw new Error("expected an object");
66
+ if (typeof value.task !== "string")
67
+ throw new Error("task must be a string");
68
+ if (typeof value.currentState !== "string")
69
+ throw new Error("currentState must be a string");
70
+ if (!Array.isArray(value.requirements))
71
+ throw new Error("requirements must be an array");
72
+ const requirements = value.requirements.map((item) => {
73
+ if (!isRecord(item))
74
+ throw new Error("requirement must be an object");
75
+ if (typeof item.id !== "string" || typeof item.text !== "string")
76
+ throw new Error("requirement id/text must be strings");
77
+ if (typeof item.status !== "string")
78
+ throw new Error("requirement status must be a string");
79
+ return {
80
+ id: item.id,
81
+ text: item.text,
82
+ status: item.status,
83
+ evidence: strings(item.evidence),
84
+ };
85
+ });
86
+ const git = isRecord(value.git) ? value.git : {};
87
+ return {
88
+ task: value.task,
89
+ requirements,
90
+ completed: strings(value.completed),
91
+ currentState: value.currentState,
92
+ openFailures: strings(value.openFailures),
93
+ nextSteps: strings(value.nextSteps),
94
+ constraints: strings(value.constraints),
95
+ lastObservations: strings(value.lastObservations),
96
+ git: {
97
+ ...(typeof git.head === "string" ? { head: git.head } : {}),
98
+ ...(typeof git.checkpoint === "string"
99
+ ? { checkpoint: git.checkpoint }
100
+ : {}),
101
+ ...(typeof git.dirty === "boolean" ? { dirty: git.dirty } : {}),
102
+ },
103
+ };
104
+ }
105
+ /** Render the durable handoff as the turn-scoped state block. */
106
+ export function renderCompactionHandoff(handoff) {
107
+ const list = (items) => items.length ? items.map((item) => `- ${item}`).join("\n") : "- none";
108
+ return [
109
+ "## Durable task handoff",
110
+ "This is authoritative state restored after a context reset, not a new user request.",
111
+ `TASK: ${handoff.task}`,
112
+ `CURRENT STATE: ${handoff.currentState}`,
113
+ "",
114
+ "REQUIREMENTS:",
115
+ list(handoff.requirements.map((item) => `${item.id} [${item.status}] ${item.text}${item.evidence.length ? ` (evidence: ${item.evidence.join(", ")})` : ""}`)),
116
+ "",
117
+ "COMPLETED:",
118
+ list(handoff.completed),
119
+ "OPEN FAILURES:",
120
+ list(handoff.openFailures),
121
+ "NEXT STEPS:",
122
+ list(handoff.nextSteps),
123
+ "CONSTRAINTS:",
124
+ list(handoff.constraints),
125
+ "LAST OBSERVATIONS:",
126
+ list(handoff.lastObservations),
127
+ ...(handoff.git.head || handoff.git.checkpoint
128
+ ? [
129
+ "GIT:",
130
+ `- head: ${handoff.git.head ?? "unknown"}`,
131
+ `- checkpoint: ${handoff.git.checkpoint ?? "none"}`,
132
+ ]
133
+ : []),
134
+ ].join("\n");
135
+ }
2
136
  export const DEFAULT_COMPACTION = {
3
137
  maxEstimatedTokens: 80_000,
4
138
  keepRecentTokens: 30_000,
@@ -29,6 +163,11 @@ export function estimateTokens(messages) {
29
163
  let chars = 0;
30
164
  for (const m of messages) {
31
165
  chars += m.content?.length ?? 0;
166
+ // Provider image pricing varies; count the URL/alt plus a small fixed
167
+ // overhead so an image-bearing turn is not estimated as free.
168
+ for (const image of m.images ?? []) {
169
+ chars += image.url.length + (image.alt?.length ?? 0) + 400;
170
+ }
32
171
  for (const tc of m.tool_calls ?? []) {
33
172
  chars += tc.name.length + tc.arguments.length;
34
173
  }
@@ -80,6 +219,9 @@ function renderTranscript(messages) {
80
219
  else {
81
220
  parts.push(`${m.role}: ${m.content ?? ""}`);
82
221
  }
222
+ for (const image of m.images ?? []) {
223
+ parts.push(`[image ${image.id} ${image.mime}${image.alt ? `: ${image.alt}` : ""}]`);
224
+ }
83
225
  }
84
226
  return parts.join("\n");
85
227
  }
@@ -124,4 +266,72 @@ export async function compactConversation(args) {
124
266
  usage: response.usage,
125
267
  };
126
268
  }
269
+ /**
270
+ * Fold a task conversation into the SDK-owned handoff contract. This is used
271
+ * only when a ledger/verifier is active; plain chat keeps the legacy summary
272
+ * path. A malformed response returns null so the caller retains the intact
273
+ * conversation rather than silently losing state.
274
+ */
275
+ export async function compactConversationStructured(args) {
276
+ const cut = findCompactionCut(args.messages, args.keepRecentTokens);
277
+ if (cut === -1)
278
+ return null;
279
+ const summarizable = args.messages.slice(1, cut);
280
+ if (summarizable.length === 0 || estimateTokens(summarizable) === 0)
281
+ return null;
282
+ const userContent = [
283
+ args.previousSummary
284
+ ? `Previous prose summary:\n${args.previousSummary}\n`
285
+ : "",
286
+ args.previousHandoff
287
+ ? `Previous durable handoff:\n${renderCompactionHandoff(args.previousHandoff)}\n`
288
+ : "",
289
+ args.ledger ? `Authoritative ledger:\n${renderLedger(args.ledger)}\n` : "",
290
+ args.git
291
+ ? `Git state: ${JSON.stringify(args.git)}\n`
292
+ : "Git state: unknown\n",
293
+ `Transcript to fold in:\n${renderTranscript(summarizable)}`,
294
+ ]
295
+ .filter(Boolean)
296
+ .join("\n");
297
+ try {
298
+ const structured = await completeStructured(args.llm, {
299
+ name: "compaction_handoff",
300
+ messages: [
301
+ {
302
+ role: "system",
303
+ content: "You compact an agent task into a durable handoff. Preserve the task, requirements and their status, evidence ids, completed work, current state, open failures, next steps, constraints, and last observations. Do not invent completed work or evidence. The ledger is authoritative; keep its requirement ids and statuses. Return only the schema-bound object.",
304
+ },
305
+ { role: "user", content: userContent },
306
+ ],
307
+ schema: HANDOFF_SCHEMA,
308
+ parse: parseCompactionHandoff,
309
+ maxTokens: 2400,
310
+ signal: args.signal,
311
+ });
312
+ return {
313
+ handoff: {
314
+ ...structured.value,
315
+ ...(args.git ? { git: { ...structured.value.git, ...args.git } } : {}),
316
+ },
317
+ summary: renderCompactionHandoff({
318
+ ...structured.value,
319
+ ...(args.git ? { git: { ...structured.value.git, ...args.git } } : {}),
320
+ }),
321
+ keptMessages: args.messages.slice(cut),
322
+ removedCount: summarizable.length,
323
+ foldingPreview: previewFold(summarizable),
324
+ usage: structured.response.usage,
325
+ };
326
+ }
327
+ catch {
328
+ return null;
329
+ }
330
+ }
331
+ function previewFold(messages) {
332
+ const folded = renderTranscript(messages);
333
+ return folded.length > FOLDING_PREVIEW_CHARS
334
+ ? `${folded.slice(0, FOLDING_PREVIEW_CHARS)}\n[... folded transcript truncated for the record — ${folded.length} chars total ...]`
335
+ : folded;
336
+ }
127
337
  //# sourceMappingURL=compaction.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/engine/compaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/engine/compaction.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  import type { LLMMessage, LLMResponse } from "../llm/types.js";
10
10
  export declare function assistantMessage(response: LLMResponse): LLMMessage;
11
11
  export declare function toolResultMessage(toolCallId: string, content: string): LLMMessage;
12
- export declare function userMessage(content: string): LLMMessage;
12
+ export declare function userMessage(content: string, images?: LLMMessage["images"]): LLMMessage;
13
13
  /** Working memory contains real conversation and observations, not system
14
14
  * prompts or internal orchestration messages. No prefix guessing: a user's
15
15
  * text is still their text even if it happens to start with "PHASE:". */
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/engine/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE/D,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG,UAAU,CASlE;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,UAAU,CAEZ;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAEvD;AAED;;yEAEyE;AACzE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAIxE"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/engine/context.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE/D,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,WAAW,GAAG,UAAU,CASlE;AAED,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GACd,UAAU,CAEZ;AAED,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,GAC5B,UAAU,CAMZ;AAED;;yEAEyE;AACzE,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAIxE"}
@@ -10,8 +10,12 @@ export function assistantMessage(response) {
10
10
  export function toolResultMessage(toolCallId, content) {
11
11
  return { role: "tool", tool_call_id: toolCallId, content };
12
12
  }
13
- export function userMessage(content) {
14
- return { role: "user", content };
13
+ export function userMessage(content, images) {
14
+ return {
15
+ role: "user",
16
+ content,
17
+ ...(images && images.length ? { images } : {}),
18
+ };
15
19
  }
16
20
  /** Working memory contains real conversation and observations, not system
17
21
  * prompts or internal orchestration messages. No prefix guessing: a user's
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/engine/context.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,gBAAgB,CAAC,QAAqB;IACpD,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,OAAO,EACL,QAAQ,CAAC,IAAI,KAAK,EAAE,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACnD,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,QAAQ,CAAC,IAAI;QACnB,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;KAC3E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,OAAe;IAEf,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACnC,CAAC;AAED;;yEAEyE;AACzE,MAAM,UAAU,mBAAmB,CAAC,QAAsB;IACxD,OAAO,QAAQ,CAAC,MAAM,CACpB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,CACtE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/engine/context.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,gBAAgB,CAAC,QAAqB;IACpD,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,OAAO,EACL,QAAQ,CAAC,IAAI,KAAK,EAAE,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACnD,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,QAAQ,CAAC,IAAI;QACnB,UAAU,EAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;KAC3E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,UAAkB,EAClB,OAAe;IAEf,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,OAAe,EACf,MAA6B;IAE7B,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,OAAO;QACP,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED;;yEAEyE;AACzE,MAAM,UAAU,mBAAmB,CAAC,QAAsB;IACxD,OAAO,QAAQ,CAAC,MAAM,CACpB,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,CACtE,CAAC;AACJ,CAAC"}
@@ -6,7 +6,9 @@
6
6
  * it as the journal, the dashboard/chat SSE (steps 17–18) relay it. The engine
7
7
  * itself never formats anything — it only emits.
8
8
  */
9
- import type { LLMToolCall, LLMUsage } from "../llm/types.js";
9
+ import type { LLMMessage, LLMToolCall, LLMUsage } from "../llm/types.js";
10
+ import type { CompactionHandoff } from "./compaction.js";
11
+ import type { ProgressLedger } from "../ledger/types.js";
10
12
  /** What a budget-limited run says it still needs — see EngineOptions.revival. */
11
13
  export interface RevivalRequest {
12
14
  /** Plain language: the work that remains. */
@@ -17,8 +19,25 @@ export interface RevivalRequest {
17
19
  }
18
20
  export type AgentEvent = {
19
21
  type: "run_started";
20
- task: string;
22
+ /** Human-readable text of this turn's input messages. */
23
+ text: string;
24
+ /** The input message delta, when the consumer supplied messages. */
25
+ messages?: LLMMessage[];
21
26
  phases: string[];
27
+ } | {
28
+ type: "task_created";
29
+ ledger: ProgressLedger;
30
+ } | {
31
+ type: "phase_verdict";
32
+ phase: string;
33
+ cleared: boolean;
34
+ confidence: number;
35
+ judge: string;
36
+ requirements: Array<{
37
+ id: string;
38
+ status: "cleared" | "insufficient" | "unproven";
39
+ probability?: number;
40
+ }>;
22
41
  } | {
23
42
  type: "phase_started";
24
43
  phase: string;
@@ -155,6 +174,8 @@ export type AgentEvent = {
155
174
  summaryChars: number;
156
175
  /** The summary that replaced the folded span — the compaction's output. */
157
176
  summary?: string;
177
+ /** Structured handoff used by a task/ledger reset. */
178
+ compaction?: CompactionHandoff;
158
179
  /** Truncated transcript of the folded span — the compaction's input. */
159
180
  folding?: string;
160
181
  usage: LLMUsage;
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/engine/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/engine/events.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@
20
20
  * older ones), then queued messages oldest-first. A store that cannot express
21
21
  * that ordering cannot implement this interface.
22
22
  */
23
- import type { LLMUsage } from "../llm/types.js";
23
+ import type { ImageAttachment, LLMMessage, LLMUsage } from "../llm/types.js";
24
24
  import type { FinishReason } from "./types.js";
25
25
  export type InboxDelivery = "queue" | "interject";
26
26
  /** One message waiting for (or claimed by) a run. */
@@ -36,6 +36,8 @@ export interface InboxMessage {
36
36
  text: string;
37
37
  /** Optional application context for the run this message starts. */
38
38
  context?: string;
39
+ /** Image references for the run this message starts. */
40
+ images?: ImageAttachment[];
39
41
  delivery: InboxDelivery;
40
42
  }
41
43
  /** One finished run of a chain, as reported on `AgentResult.runs`. */
@@ -96,14 +98,13 @@ export declare class MemoryInboxStore implements InboxStore {
96
98
  private setStatus;
97
99
  }
98
100
  /**
99
- * Turn a claimed batch into the next run's task.
100
- *
101
- * Everything in the batch is rendered in contract order, so the model reads
102
- * the newest correction before the older queued work. A consumer that needs a
103
- * different voice supplies `render` on `EngineOptions.inbox`.
101
+ * Turn a claimed batch into the next run's input. One message per inbox row:
102
+ * a coalesced batch stays a sequence of user turns rather than becoming a
103
+ * synthetic single blob. Context is application metadata, so it is joined
104
+ * separately and never persisted as a message.
104
105
  */
105
- export declare function renderInboxTask(messages: InboxMessage[]): {
106
- task: string;
106
+ export declare function renderInboxTurn(messages: InboxMessage[]): {
107
+ messages: LLMMessage[];
107
108
  context?: string;
108
109
  };
109
110
  //# sourceMappingURL=inbox.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/engine/inbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,WAAW,CAAC;AAElD,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,sEAAsE;AACtE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC;IAC7D;;;;;OAKG;IACH,UAAU,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACnD,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,oEAAoE;IACpE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,mEAAmE;AACnE,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAGjB;IAEE,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAC,CAkBjE;IAEK,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAElD;IAEK,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASpD;IAEK,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAgBvD;IAEK,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3C;IAEK,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1C;IAED,oEAAoE;IACpE,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKpC;IAED,6EAA6E;IAC7E,OAAO,CAAC,SAAS;CAMlB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,YAAY,EAAE,GACvB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAUpC"}
1
+ {"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/engine/inbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,WAAW,CAAC;AAElD,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,sEAAsE;AACtE,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC;IAC7D;;;;;OAKG;IACH,UAAU,CAAC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C;;;;OAIG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IACnD,yEAAyE;IACzE,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,oEAAoE;IACpE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,mEAAmE;AACnE,qBAAa,gBAAiB,YAAW,UAAU;IACjD,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAGjB;IAEE,IAAI,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAC,CAkBjE;IAEK,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAElD;IAEK,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CASpD;IAEK,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAgBvD;IAEK,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3C;IAEK,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1C;IAED,oEAAoE;IACpE,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKpC;IAED,6EAA6E;IAC7E,OAAO,CAAC,SAAS;CAMlB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG;IACzD,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAaA"}
@@ -74,21 +74,23 @@ export class MemoryInboxStore {
74
74
  }
75
75
  }
76
76
  /**
77
- * Turn a claimed batch into the next run's task.
78
- *
79
- * Everything in the batch is rendered in contract order, so the model reads
80
- * the newest correction before the older queued work. A consumer that needs a
81
- * different voice supplies `render` on `EngineOptions.inbox`.
77
+ * Turn a claimed batch into the next run's input. One message per inbox row:
78
+ * a coalesced batch stays a sequence of user turns rather than becoming a
79
+ * synthetic single blob. Context is application metadata, so it is joined
80
+ * separately and never persisted as a message.
82
81
  */
83
- export function renderInboxTask(messages) {
84
- const task = messages
85
- .map((message) => message.text)
86
- .filter((text) => text.trim() !== "")
87
- .join("\n\n");
82
+ export function renderInboxTurn(messages) {
88
83
  const context = messages
89
84
  .map((message) => message.context)
90
85
  .filter((value) => typeof value === "string" && value !== "")
91
86
  .join("\n\n");
92
- return context === "" ? { task } : { task, context };
87
+ return {
88
+ messages: messages.map((message) => ({
89
+ role: "user",
90
+ content: message.text,
91
+ ...(message.images?.length ? { images: message.images } : {}),
92
+ })),
93
+ ...(context === "" ? {} : { context }),
94
+ };
93
95
  }
94
96
  //# sourceMappingURL=inbox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/engine/inbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/engine/inbox.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { RunTask, EngineOptions, AgentResult } from "./types.js";
2
- export type { RunTask, EngineOptions, AgentResult, FinishReason, GuardrailConfig, } from "./types.js";
3
- export declare function runAgent(task: RunTask, opts: EngineOptions): Promise<AgentResult>;
1
+ import type { RunInput, EngineOptions, AgentResult } from "./types.js";
2
+ export type { RunInput, EngineOptions, AgentResult, FinishReason, GuardrailConfig, } from "./types.js";
3
+ export { userTurn } from "./types.js";
4
+ export declare function runAgent(input: RunInput, opts: EngineOptions): Promise<AgentResult>;
4
5
  //# sourceMappingURL=loop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/engine/loop.ts"],"names":[],"mappings":"AAoFA,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,WAAW,EAGZ,MAAM,YAAY,CAAC;AAUpB,YAAY,EACV,OAAO,EACP,aAAa,EACb,WAAW,EACX,YAAY,EACZ,eAAe,GAChB,MAAM,YAAY,CAAC;AA0kDpB,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CAwBtB"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/engine/loop.ts"],"names":[],"mappings":"AAwFA,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,WAAW,EAGZ,MAAM,YAAY,CAAC;AAUpB,YAAY,EACV,QAAQ,EACR,aAAa,EACb,WAAW,EACX,YAAY,EACZ,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAw/DtC,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,QAAQ,EACf,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CAGtB"}