@kaleidorg/mind 0.8.0 → 0.9.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 (103) hide show
  1. package/README.md +7 -5
  2. package/dist/bitrefill/index.d.ts +4 -0
  3. package/dist/bitrefill/index.d.ts.map +1 -0
  4. package/dist/bitrefill/index.js +3 -0
  5. package/dist/bitrefill/index.js.map +1 -0
  6. package/dist/capabilities.d.ts +3 -3
  7. package/dist/capabilities.d.ts.map +1 -1
  8. package/dist/capabilities.js +4 -4
  9. package/dist/capabilities.js.map +1 -1
  10. package/dist/engine/answer.d.ts +37 -0
  11. package/dist/engine/answer.d.ts.map +1 -0
  12. package/dist/engine/answer.js +35 -0
  13. package/dist/engine/answer.js.map +1 -0
  14. package/dist/engine.d.ts +15 -3
  15. package/dist/engine.d.ts.map +1 -1
  16. package/dist/engine.js +171 -170
  17. package/dist/engine.js.map +1 -1
  18. package/dist/evidence.d.ts +1 -1
  19. package/dist/evidence.d.ts.map +1 -1
  20. package/dist/fastpath/fastpath.d.ts +6 -1
  21. package/dist/fastpath/fastpath.d.ts.map +1 -1
  22. package/dist/fastpath/fastpath.js +16 -2
  23. package/dist/fastpath/fastpath.js.map +1 -1
  24. package/dist/fastpath/render.d.ts +2 -0
  25. package/dist/fastpath/render.d.ts.map +1 -0
  26. package/dist/fastpath/render.js +58 -0
  27. package/dist/fastpath/render.js.map +1 -0
  28. package/dist/flashnet/index.d.ts +5 -0
  29. package/dist/flashnet/index.d.ts.map +1 -0
  30. package/dist/flashnet/index.js +4 -0
  31. package/dist/flashnet/index.js.map +1 -0
  32. package/dist/funnel.d.ts.map +1 -1
  33. package/dist/funnel.js +11 -14
  34. package/dist/funnel.js.map +1 -1
  35. package/dist/index.d.ts +6 -23
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +10 -27
  38. package/dist/index.js.map +1 -1
  39. package/dist/kaleidoswap/index.d.ts +8 -0
  40. package/dist/kaleidoswap/index.d.ts.map +1 -0
  41. package/dist/kaleidoswap/index.js +7 -0
  42. package/dist/kaleidoswap/index.js.map +1 -0
  43. package/dist/knowledge/index.d.ts +9 -0
  44. package/dist/knowledge/index.d.ts.map +1 -0
  45. package/dist/knowledge/index.js +6 -0
  46. package/dist/knowledge/index.js.map +1 -0
  47. package/dist/lsps1/index.d.ts +4 -0
  48. package/dist/lsps1/index.d.ts.map +1 -0
  49. package/dist/lsps1/index.js +3 -0
  50. package/dist/lsps1/index.js.map +1 -0
  51. package/dist/providers/types.d.ts +16 -3
  52. package/dist/providers/types.d.ts.map +1 -1
  53. package/dist/providers/types.js +3 -3
  54. package/dist/qvac/index.d.ts +0 -1
  55. package/dist/qvac/index.d.ts.map +1 -1
  56. package/dist/qvac/index.js +0 -1
  57. package/dist/qvac/index.js.map +1 -1
  58. package/dist/qvac/provider.d.ts +15 -6
  59. package/dist/qvac/provider.d.ts.map +1 -1
  60. package/dist/qvac/provider.js +14 -16
  61. package/dist/qvac/provider.js.map +1 -1
  62. package/dist/qvac/stream.d.ts +4 -3
  63. package/dist/qvac/stream.d.ts.map +1 -1
  64. package/dist/qvac/stream.js.map +1 -1
  65. package/dist/qvac/voice.d.ts +1 -1
  66. package/dist/submarine/index.d.ts +5 -0
  67. package/dist/submarine/index.d.ts.map +1 -0
  68. package/dist/submarine/index.js +4 -0
  69. package/dist/submarine/index.js.map +1 -0
  70. package/dist/tools/in-process.d.ts +2 -2
  71. package/dist/tools/in-process.js +2 -2
  72. package/package.json +32 -2
  73. package/src/bitrefill/index.ts +13 -0
  74. package/src/capabilities.ts +7 -7
  75. package/src/context/context.test.ts +2 -2
  76. package/src/engine/answer.ts +66 -0
  77. package/src/engine.test.ts +39 -0
  78. package/src/engine.ts +199 -188
  79. package/src/evidence.ts +1 -1
  80. package/src/fastpath/fastpath.ts +22 -2
  81. package/src/fastpath/render.test.ts +39 -0
  82. package/src/fastpath/render.ts +56 -0
  83. package/src/flashnet/index.ts +14 -0
  84. package/src/funnel.mind.test.ts +11 -15
  85. package/src/funnel.ts +11 -15
  86. package/src/index.ts +10 -107
  87. package/src/kaleidoswap/index.ts +19 -0
  88. package/src/knowledge/index.ts +14 -0
  89. package/src/lsps1/index.ts +13 -0
  90. package/src/providers/types.ts +16 -3
  91. package/src/qvac/index.ts +0 -8
  92. package/src/qvac/provider.test.ts +20 -17
  93. package/src/qvac/provider.ts +28 -26
  94. package/src/qvac/stream.ts +4 -3
  95. package/src/qvac/voice.ts +1 -1
  96. package/src/submarine/index.ts +17 -0
  97. package/src/tools/in-process.ts +2 -2
  98. package/dist/qvac/delegate.d.ts +0 -50
  99. package/dist/qvac/delegate.d.ts.map +0 -1
  100. package/dist/qvac/delegate.js +0 -53
  101. package/dist/qvac/delegate.js.map +0 -1
  102. package/src/qvac/delegate.test.ts +0 -68
  103. package/src/qvac/delegate.ts +0 -73
package/dist/engine.js CHANGED
@@ -11,22 +11,14 @@
11
11
  * `{role:'tool'}` results into history each round, loop until the model stops
12
12
  * calling tools. Money tools pause for an `onConfirm` gate; their handlers run
13
13
  * wherever the ToolSource lives (on the phone for the wallet), even when
14
- * inference is delegated to a remote provider.
14
+ * inference runs on a remote server.
15
15
  */
16
16
  import { compressToolResult } from './context/compress.js';
17
- import { callKey, declinedToolResult, detectWalletAction, hasCapableTool, noToolReply, findUngroundedPaymentData, fixSatsBtcConversions, ungroundedReply, validateToolArgs, } from './guards.js';
17
+ import { callKey, declinedToolResult, detectWalletAction, hasCapableTool, noToolReply, validateToolArgs } from './guards.js';
18
18
  import { confirmReadback } from './wallet/confirm.js';
19
- import { annotateRgbBalances, fixRgbBalanceUnits } from './context/rgb-units.js';
19
+ import { annotateRgbBalances } from './context/rgb-units.js';
20
+ import { REPEATED_CALL_REPLY, TOOL_CALL_FAILED_REPLY, cancelledReply, engine, finalizeAnswer, model, toolErrorFeedback, } from './engine/answer.js';
20
21
  import { selectAvailableSkill } from './skills/select.js';
21
- const STOPPED_MESSAGE = 'I had to stop after several steps — please try a more specific request.';
22
- const TOOL_CALL_FAILED_MESSAGE = "I couldn't put together a valid request for that. Please rephrase it with the exact values (asset, amount, recipient).";
23
- function toolErrorMessage(errors, cutOff) {
24
- if (cutOff) {
25
- return 'Your tool call was cut off because the output got too long. Make ONE tool call at a time with only the required arguments, or answer from the results you already have.';
26
- }
27
- const detail = errors.map((e) => e.message).join('; ');
28
- return `Your tool call could not be read (${detail}). Call the tool again with valid JSON arguments that match its schema, or ask the user for the missing values.`;
29
- }
30
22
  export class Engine {
31
23
  provider;
32
24
  registry;
@@ -35,6 +27,7 @@ export class Engine {
35
27
  compressOpts;
36
28
  guardPaymentData;
37
29
  fixAmounts;
30
+ thinkOnForcedCalls;
38
31
  guardMissingTools;
39
32
  endTurnOnDecline;
40
33
  constructor(opts) {
@@ -44,6 +37,7 @@ export class Engine {
44
37
  this.defaultMaxTurns = opts.defaultMaxTurns ?? 5;
45
38
  this.guardPaymentData = opts.guardUngroundedPaymentData ?? true;
46
39
  this.fixAmounts = opts.fixAmountConversions ?? true;
40
+ this.thinkOnForcedCalls = opts.thinkOnForcedCalls ?? false;
47
41
  this.guardMissingTools = opts.guardMissingTools ?? true;
48
42
  this.endTurnOnDecline = opts.endTurnOnDecline ?? true;
49
43
  this.compressOpts = opts.compressToolOutput
@@ -65,211 +59,218 @@ export class Engine {
65
59
  return { skill, ...skills.compose(base, skill) };
66
60
  }
67
61
  async runAgentic(messages, opts = {}) {
68
- const maxTurns = opts.maxTurns ?? this.defaultMaxTurns;
69
- const hasSystem = messages.some((m) => m.role === 'system');
70
- const system = hasSystem ? undefined : this.defaultSystem;
62
+ const sessionKey = opts.sessionKey ?? `mind-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
63
+ try {
64
+ return await this.runAgenticSession(messages, { ...opts, sessionKey });
65
+ }
66
+ finally {
67
+ if (!opts.sessionKey)
68
+ await this.provider.endSession?.(sessionKey).catch(() => { });
69
+ }
70
+ }
71
+ async runAgenticSession(messages, opts) {
71
72
  const startedAt = Date.now();
72
- const history = [...messages];
73
+ const maxTurns = opts.maxTurns ?? this.defaultMaxTurns;
73
74
  const registryTools = await this.registry.listTools();
74
- // Progressive disclosure: expose only the active skill's tools when set.
75
- const allTools = opts.allowedTools
76
- ? registryTools.filter((t) => opts.allowedTools.includes(t.name))
77
- : registryTools;
78
- const executed = [];
79
- let lastRequestId;
80
- let finalText = '';
81
- // Set when finalText is one of the engine's own fixed replies, which the
82
- // answer guards below must not rewrite.
83
- let engineReply = false;
84
- let turns = 0;
85
- const inference = [];
86
- const seen = new Map();
87
- let toolErrorRetries = 0;
75
+ const state = {
76
+ history: [...messages],
77
+ system: messages.some((m) => m.role === 'system') ? undefined : this.defaultSystem,
78
+ // Progressive disclosure: expose only the active skill's tools when set.
79
+ tools: opts.allowedTools ? registryTools.filter((t) => opts.allowedTools.includes(t.name)) : registryTools,
80
+ executed: [],
81
+ inference: [],
82
+ seen: new Map(),
83
+ };
88
84
  const lastUser = [...messages].reverse().find((m) => m.role === 'user')?.content ?? '';
89
85
  const action = this.guardMissingTools ? detectWalletAction(lastUser) : null;
90
- if (action && !hasCapableTool(action, allTools.map((t) => t.name))) {
86
+ if (action && !hasCapableTool(action, state.tools.map((t) => t.name))) {
91
87
  const text = noToolReply(action);
92
- history.push({ role: 'assistant', content: text });
93
- return { text, turns: 0, toolCalls: [], messages: history, latencyMs: Date.now() - startedAt, inference };
88
+ state.history.push({ role: 'assistant', content: text });
89
+ return { text, turns: 0, toolCalls: [], messages: state.history, latencyMs: Date.now() - startedAt, inference: state.inference };
94
90
  }
91
+ let answer = model('');
92
+ let turns = 0;
93
+ let toolErrorRetries = 0;
95
94
  // A retry after an unreadable tool call does not count against maxTurns.
96
95
  for (let turn = 1; turn <= maxTurns + toolErrorRetries; turn++) {
97
96
  turns = turn;
98
97
  if (opts.signal?.aborted)
99
98
  break;
100
- const out = await this.provider.runTurn({
101
- messages: history,
102
- tools: allTools,
103
- system,
104
- ...(turn === 1 && opts.firstTurnToolChoice && allTools.length
105
- ? { toolChoice: opts.firstTurnToolChoice }
106
- : {}),
107
- onToken: opts.onToken ? (t) => opts.onToken(t, turn) : undefined,
108
- signal: opts.signal,
99
+ // A forced first call only picks the tool and its arguments; reasoning
100
+ // there costs most of the turn's time on small models.
101
+ const forced = turn === 1 && opts.firstTurnToolChoice && state.tools.length;
102
+ const out = await this.callModel(state, opts, turn, {
103
+ tools: state.tools,
104
+ ...(forced ? { toolChoice: opts.firstTurnToolChoice, ...(this.thinkOnForcedCalls ? {} : { thinking: 'off' }) } : {}),
109
105
  });
110
- lastRequestId = out.requestId;
111
- if (out.inference)
112
- inference.push(out.inference);
113
106
  if (out.requestId)
114
107
  opts.onStart?.(out.requestId, turn);
115
- finalText = out.incomplete ? '' : (out.text || '').trim();
116
- // The model tried to call a tool but the call didn't parse: tell it what
117
- // went wrong and let it try again (once) instead of showing the broken
118
- // frame as the answer.
119
- if ((!out.toolCalls || out.toolCalls.length === 0) && out.toolErrors?.length) {
120
- if (toolErrorRetries < 1) {
121
- toolErrorRetries += 1;
122
- const cutOff = out.inference?.status === 'truncated';
123
- history.push({ role: 'assistant', content: out.rawContent || finalText });
124
- history.push({ role: 'tool', content: JSON.stringify({ error: toolErrorMessage(out.toolErrors, cutOff) }) });
125
- continue;
108
+ answer = model(out.incomplete ? '' : (out.text || '').trim());
109
+ if (!out.toolCalls?.length) {
110
+ // The model tried to call a tool but the call didn't parse: tell it
111
+ // what went wrong and let it try once more instead of showing the
112
+ // broken frame as the answer.
113
+ if (out.toolErrors?.length) {
114
+ if (toolErrorRetries < 1) {
115
+ toolErrorRetries += 1;
116
+ state.history.push({ role: 'assistant', content: out.rawContent || answer.text });
117
+ state.history.push({
118
+ role: 'tool',
119
+ content: JSON.stringify({ error: toolErrorFeedback(out.toolErrors, out.inference?.status === 'truncated') }),
120
+ });
121
+ continue;
122
+ }
123
+ answer = engine(TOOL_CALL_FAILED_REPLY);
124
+ break;
126
125
  }
127
- finalText = TOOL_CALL_FAILED_MESSAGE;
128
- engineReply = true;
129
- break;
130
- }
131
- // No tool calls ⇒ the model produced its final answer.
132
- if (!out.toolCalls || out.toolCalls.length === 0) {
133
- if (!finalText && executed.length)
134
- finalText = await this.recoverAnswer(history, system, executed, inference, opts, turn);
135
- else if (!finalText && out.incomplete)
136
- finalText = (out.text || '').trim();
126
+ // No tool calls ⇒ the model produced its final answer.
127
+ if (!answer.text && state.executed.length)
128
+ answer = await this.recoverAnswer(state, opts, turn);
129
+ else if (!answer.text && out.incomplete)
130
+ answer = model((out.text || '').trim());
137
131
  break;
138
132
  }
139
133
  // Anchor the next turn with the raw assistant frame.
140
- history.push({ role: 'assistant', content: out.rawContent || finalText });
134
+ state.history.push({ role: 'assistant', content: out.rawContent || answer.text });
141
135
  let repeatedAgain = false;
142
- const declinedThisTurn = [];
136
+ const declined = [];
143
137
  for (const call of out.toolCalls) {
144
- opts.onToolCall?.({ name: call.name, arguments: call.arguments }, turn);
145
- const def = await this.registry.getDef(call.name);
146
- const key = callKey(call.name, call.arguments);
147
- const previous = seen.get(key);
148
- let args = call.arguments;
149
- let result;
150
- if (previous) {
151
- previous.count += 1;
152
- if (previous.count > 2)
153
- repeatedAgain = true;
154
- result = {
155
- error: `You already called ${call.name} with these arguments; the result was: ` +
156
- `${this.toHistoryContent(previous.result)}. Do not call it again — answer the user now.`,
157
- };
158
- }
159
- else if (!def) {
160
- result = { error: `Unknown tool "${call.name}".` };
161
- }
162
- else {
163
- const check = validateToolArgs(def, call.arguments);
164
- if (!check.ok) {
165
- result = {
166
- error: `Invalid arguments for ${call.name}: ${check.errors.join('; ')}. Fix them or ask the user for the missing values.`,
167
- };
168
- }
169
- else if (def.requiresConfirmation) {
170
- args = check.args;
171
- const summary = confirmReadback({ name: call.name, arguments: args }) ?? undefined;
172
- const decision = opts.onConfirm
173
- ? await opts.onConfirm({ name: call.name, arguments: args, ...(summary ? { summary } : {}) })
174
- : { approved: false, reason: 'no confirmation handler available' };
175
- if (decision.approved) {
176
- result = await this.safeExecute(call.name, args);
177
- }
178
- else {
179
- result = declinedToolResult(call.name, decision.reason);
180
- declinedThisTurn.push(summary ? summary.replace(/\.?\s*Confirm\?$/, '') : call.name.replace(/_/g, ' '));
181
- }
182
- }
183
- else {
184
- args = check.args;
185
- result = await this.safeExecute(call.name, args);
186
- }
187
- }
188
- if (!previous) {
189
- // A mutating (confirm-gated) call can change what reads return.
190
- if (def?.requiresConfirmation)
191
- seen.clear();
192
- seen.set(key, { result, count: 1 });
193
- }
194
- executed.push({ name: call.name, arguments: args, result });
195
- opts.onToolResult?.({ name: call.name, arguments: args, result }, turn);
196
- history.push({ role: 'tool', content: this.toHistoryContent(this.fixAmounts ? annotateRgbBalances(result) : result) });
138
+ const step = await this.executeCall(state, call, opts, turn);
139
+ repeatedAgain ||= step.repeatedAgain;
140
+ if (step.declined)
141
+ declined.push(step.declined);
197
142
  }
198
- if (this.endTurnOnDecline && declinedThisTurn.length && declinedThisTurn.length === out.toolCalls.length) {
199
- finalText = `Cancelled — you declined: ${declinedThisTurn.join('; ')}. Nothing was sent or changed.`;
200
- engineReply = true;
143
+ if (this.endTurnOnDecline && declined.length && declined.length === out.toolCalls.length) {
144
+ answer = engine(cancelledReply(declined));
201
145
  break;
202
146
  }
203
147
  if (repeatedAgain) {
204
- const forced = await this.provider.runTurn({
205
- messages: history,
206
- tools: [],
207
- system,
208
- onToken: opts.onToken ? (t) => opts.onToken(t, turn) : undefined,
209
- signal: opts.signal,
210
- });
211
- if (forced.inference)
212
- inference.push(forced.inference);
213
- finalText = (forced.text || '').trim() || 'I could not get a different result from the wallet — please try a more specific request.';
148
+ const last = await this.callModel(state, opts, turn, { tools: [] });
149
+ const text = (last.text || '').trim();
150
+ answer = text ? model(text) : engine(REPEATED_CALL_REPLY);
214
151
  break;
215
152
  }
216
153
  }
217
- // Never return an empty answer (e.g. the last turn ran out of tokens).
218
- if (!finalText && !opts.signal?.aborted) {
219
- finalText = STOPPED_MESSAGE;
220
- engineReply = true;
221
- }
222
- if (this.fixAmounts && finalText && !engineReply) {
223
- finalText = fixRgbBalanceUnits(fixSatsBtcConversions(finalText), executed.map((e) => e.result));
224
- }
225
- if (this.guardPaymentData && finalText && !engineReply) {
226
- const ungrounded = findUngroundedPaymentData(finalText, [
227
- ...messages.map((m) => m.content),
228
- ...executed.map((e) => e.result),
229
- ]);
230
- if (ungrounded.length)
231
- finalText = ungroundedReply(ungrounded);
232
- }
154
+ const text = finalizeAnswer(answer, {
155
+ fixAmounts: this.fixAmounts,
156
+ guardPaymentData: this.guardPaymentData,
157
+ sources: [...messages.map((m) => m.content), ...state.executed.map((e) => e.result)],
158
+ toolResults: state.executed.map((e) => e.result),
159
+ aborted: !!opts.signal?.aborted,
160
+ });
233
161
  // Append the final answer so the returned conversation is complete (the
234
162
  // loop breaks before pushing the no-tool-call turn).
235
- if (finalText)
236
- history.push({ role: 'assistant', content: finalText });
163
+ if (text)
164
+ state.history.push({ role: 'assistant', content: text });
237
165
  return {
238
- text: finalText,
166
+ text,
239
167
  turns,
240
- toolCalls: executed,
241
- requestId: lastRequestId,
242
- messages: history,
168
+ toolCalls: state.executed,
169
+ requestId: state.lastRequestId,
170
+ messages: state.history,
243
171
  latencyMs: Date.now() - startedAt,
244
- inference,
172
+ inference: state.inference,
245
173
  };
246
174
  }
175
+ /** One model call within the run's session; records its receipt. */
176
+ async callModel(state, opts, turn, extra) {
177
+ const out = await this.provider.runTurn({
178
+ messages: extra.messages ?? state.history,
179
+ system: state.system,
180
+ sessionKey: opts.sessionKey,
181
+ ...extra,
182
+ onToken: opts.onToken ? (t) => opts.onToken(t, turn) : undefined,
183
+ signal: opts.signal,
184
+ });
185
+ if (out.inference)
186
+ state.inference.push(out.inference);
187
+ if (out.requestId)
188
+ state.lastRequestId = out.requestId;
189
+ return out;
190
+ }
191
+ /**
192
+ * Validate, confirm (for spends) and execute one tool call, and add its
193
+ * result to the history. Returns the readback when the user declined it.
194
+ */
195
+ async executeCall(state, call, opts, turn) {
196
+ opts.onToolCall?.({ name: call.name, arguments: call.arguments }, turn);
197
+ const def = await this.registry.getDef(call.name);
198
+ const key = callKey(call.name, call.arguments);
199
+ const previous = state.seen.get(key);
200
+ let repeatedAgain = false;
201
+ let declined;
202
+ let args = call.arguments;
203
+ let result;
204
+ if (previous) {
205
+ previous.count += 1;
206
+ if (previous.count > 2)
207
+ repeatedAgain = true;
208
+ result = {
209
+ error: `You already called ${call.name} with these arguments; the result was: ` +
210
+ `${this.toHistoryContent(previous.result)}. Do not call it again — answer the user now.`,
211
+ };
212
+ }
213
+ else if (!def) {
214
+ result = { error: `Unknown tool "${call.name}".` };
215
+ }
216
+ else {
217
+ const check = validateToolArgs(def, call.arguments);
218
+ if (!check.ok) {
219
+ result = {
220
+ error: `Invalid arguments for ${call.name}: ${check.errors.join('; ')}. Fix them or ask the user for the missing values.`,
221
+ };
222
+ }
223
+ else if (def.requiresConfirmation) {
224
+ args = check.args;
225
+ const summary = confirmReadback({ name: call.name, arguments: args }) ?? undefined;
226
+ const decision = opts.onConfirm
227
+ ? await opts.onConfirm({ name: call.name, arguments: args, ...(summary ? { summary } : {}) })
228
+ : { approved: false, reason: 'no confirmation handler available' };
229
+ if (decision.approved) {
230
+ result = await this.safeExecute(call.name, args);
231
+ }
232
+ else {
233
+ result = declinedToolResult(call.name, decision.reason);
234
+ declined = summary ? summary.replace(/\.?\s*Confirm\?$/, '') : call.name.replace(/_/g, ' ');
235
+ }
236
+ }
237
+ else {
238
+ args = check.args;
239
+ result = await this.safeExecute(call.name, args);
240
+ }
241
+ }
242
+ if (!previous) {
243
+ // A mutating (confirm-gated) call can change what reads return.
244
+ if (def?.requiresConfirmation)
245
+ state.seen.clear();
246
+ state.seen.set(key, { result, count: 1 });
247
+ }
248
+ state.executed.push({ name: call.name, arguments: args, result });
249
+ opts.onToolResult?.({ name: call.name, arguments: args, result }, turn);
250
+ state.history.push({ role: 'tool', content: this.toHistoryContent(this.fixAmounts ? annotateRgbBalances(result) : result) });
251
+ return { repeatedAgain, ...(declined ? { declined } : {}) };
252
+ }
247
253
  /**
248
254
  * The model ran tools but produced no visible answer (e.g. reasoning used the
249
255
  * whole output budget). Ask once more without tools; if that is empty too,
250
256
  * show the last tool result instead of an empty reply.
251
257
  */
252
- async recoverAnswer(history, system, executed, inference, opts, turn) {
258
+ async recoverAnswer(state, opts, turn) {
253
259
  if (opts.signal?.aborted)
254
- return '';
255
- const retry = await this.provider.runTurn({
260
+ return model('');
261
+ const retry = await this.callModel(state, opts, turn, {
262
+ tools: [],
256
263
  messages: [
257
- ...history,
264
+ ...state.history,
258
265
  { role: 'user', content: 'Answer my question now from the tool results above, in a few short sentences.' },
259
266
  ],
260
- tools: [],
261
- system,
262
- onToken: opts.onToken ? (t) => opts.onToken(t, turn) : undefined,
263
- signal: opts.signal,
264
267
  });
265
- if (retry.inference)
266
- inference.push(retry.inference);
267
268
  const text = retry.incomplete ? '' : (retry.text || '').trim();
268
269
  if (text)
269
- return text;
270
- const last = executed[executed.length - 1];
270
+ return model(text);
271
+ const last = state.executed[state.executed.length - 1];
271
272
  const body = compressToolResult(last.result, this.compressOpts ?? {}).content;
272
- return `I couldn't phrase an answer in time. Here is what ${last.name.replace(/_/g, ' ')} returned:\n\n${body.length > 2000 ? `${body.slice(0, 2000)}…` : body}`;
273
+ return engine(`I couldn't phrase an answer in time. Here is what ${last.name.replace(/_/g, ' ')} returned:\n\n${body.length > 2000 ? `${body.slice(0, 2000)}…` : body}`);
273
274
  }
274
275
  async cancel(requestId) {
275
276
  await this.provider.cancel?.(requestId);
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,EAAE,kBAAkB,EAAyB,MAAM,uBAAuB,CAAC;AAClF,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,yBAAyB,EACzB,qBAAqB,EACrB,eAAe,EACf,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAuF1D,MAAM,eAAe,GAAG,yEAAyE,CAAC;AAElG,MAAM,wBAAwB,GAC5B,wHAAwH,CAAC;AAE3H,SAAS,gBAAgB,CAAC,MAAuB,EAAE,MAAe;IAChE,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,yKAAyK,CAAC;IACnL,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,qCAAqC,MAAM,iHAAiH,CAAC;AACtK,CAAC;AAED,MAAM,OAAO,MAAM;IACA,QAAQ,CAAc;IACtB,QAAQ,CAAe;IACvB,aAAa,CAAU;IACvB,eAAe,CAAS;IACxB,YAAY,CAAoB;IAChC,gBAAgB,CAAU;IAC1B,UAAU,CAAU;IACpB,iBAAiB,CAAU;IAC3B,gBAAgB,CAAU;IAE3C,YAAY,IAAmB;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC;QAChE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC;QACpD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC;QACxD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC;QACtD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,kBAAkB;YACzC,CAAC,CAAC,IAAI,CAAC,kBAAkB,KAAK,IAAI;gBAChC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,IAAI,CAAC,kBAAkB;YAC3B,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,YAAY,CAAC,MAAqB,EAAE,KAAa,EAAE,IAAY;QACnE,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;QACnF,OAAO,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAmB,EAAE,IAAI,GAAmB,EAAE;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC;QACvD,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QAE1D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAc,CAAC,GAAG,QAAQ,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;QACtD,yEAAyE;QACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY;YAChC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAClE,CAAC,CAAC,aAAa,CAAC;QAClB,MAAM,QAAQ,GAAiB,EAAE,CAAC;QAClC,IAAI,aAAiC,CAAC;QACtC,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,yEAAyE;QACzE,wCAAwC;QACxC,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,MAAM,SAAS,GAAuB,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,GAAG,EAA8C,CAAC;QACnE,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAEzB,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,OAAO,IAAI,EAAE,CAAC;QACvF,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5E,IAAI,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YACnE,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,SAAS,EAAE,CAAC;QAC5G,CAAC;QAED,yEAAyE;QACzE,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,QAAQ,GAAG,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC;YAC/D,KAAK,GAAG,IAAI,CAAC;YACb,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO;gBAAE,MAAM;YAEhC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gBACtC,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,QAAQ;gBACf,MAAM;gBACN,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,CAAC,mBAAmB,IAAI,QAAQ,CAAC,MAAM;oBAC3D,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,mBAAmB,EAAE;oBAC1C,CAAC,CAAC,EAAE,CAAC;gBACP,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;gBACjE,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;YAEH,aAAa,GAAG,GAAG,CAAC,SAAS,CAAC;YAC9B,IAAI,GAAG,CAAC,SAAS;gBAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACjD,IAAI,GAAG,CAAC,SAAS;gBAAE,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACvD,SAAS,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAE1D,yEAAyE;YACzE,uEAAuE;YACvE,uBAAuB;YACvB,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;gBAC7E,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;oBACzB,gBAAgB,IAAI,CAAC,CAAC;oBACtB,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,WAAW,CAAC;oBACrD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS,EAAE,CAAC,CAAC;oBAC1E,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;oBAC7G,SAAS;gBACX,CAAC;gBACD,SAAS,GAAG,wBAAwB,CAAC;gBACrC,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;YACR,CAAC;YAED,uDAAuD;YACvD,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjD,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM;oBAAE,SAAS,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;qBACrH,IAAI,CAAC,SAAS,IAAI,GAAG,CAAC,UAAU;oBAAE,SAAS,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC3E,MAAM;YACR,CAAC;YAED,qDAAqD;YACrD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS,EAAE,CAAC,CAAC;YAE1E,IAAI,aAAa,GAAG,KAAK,CAAC;YAC1B,MAAM,gBAAgB,GAAa,EAAE,CAAC;YACtC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;gBACxE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAE/B,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC1B,IAAI,MAAe,CAAC;gBACpB,IAAI,QAAQ,EAAE,CAAC;oBACb,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;oBACpB,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC;wBAAE,aAAa,GAAG,IAAI,CAAC;oBAC7C,MAAM,GAAG;wBACP,KAAK,EACH,sBAAsB,IAAI,CAAC,IAAI,yCAAyC;4BACxE,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,+CAA+C;qBAC3F,CAAC;gBACJ,CAAC;qBAAM,IAAI,CAAC,GAAG,EAAE,CAAC;oBAChB,MAAM,GAAG,EAAE,KAAK,EAAE,iBAAiB,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrD,CAAC;qBAAM,CAAC;oBACN,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;oBACpD,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;wBACd,MAAM,GAAG;4BACP,KAAK,EAAE,yBAAyB,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,oDAAoD;yBAC1H,CAAC;oBACJ,CAAC;yBAAM,IAAI,GAAG,CAAC,oBAAoB,EAAE,CAAC;wBACpC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;wBAClB,MAAM,OAAO,GAAG,eAAe,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,IAAI,SAAS,CAAC;wBACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS;4BAC7B,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;4BAC7F,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC;wBACrE,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;4BACtB,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;wBACnD,CAAC;6BAAM,CAAC;4BACN,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;4BACxD,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;wBAC1G,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;wBAClB,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;oBACnD,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,gEAAgE;oBAChE,IAAI,GAAG,EAAE,oBAAoB;wBAAE,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACtC,CAAC;gBACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC5D,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;gBACxE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzH,CAAC;YAED,IAAI,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,KAAK,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;gBACzG,SAAS,GAAG,6BAA6B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC;gBACrG,WAAW,GAAG,IAAI,CAAC;gBACnB,MAAM;YACR,CAAC;YAED,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;oBACzC,QAAQ,EAAE,OAAO;oBACjB,KAAK,EAAE,EAAE;oBACT,MAAM;oBACN,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;oBACjE,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB,CAAC,CAAC;gBACH,IAAI,MAAM,CAAC,SAAS;oBAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACvD,SAAS,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,0FAA0F,CAAC;gBACrI,MAAM;YACR,CAAC;QAEH,CAAC;QAED,uEAAuE;QACvE,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACxC,SAAS,GAAG,eAAe,CAAC;YAC5B,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;YACjD,SAAS,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAClG,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,IAAI,SAAS,IAAI,CAAC,WAAW,EAAE,CAAC;YACvD,MAAM,UAAU,GAAG,yBAAyB,CAAC,SAAS,EAAE;gBACtD,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;gBACjC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;aACjC,CAAC,CAAC;YACH,IAAI,UAAU,CAAC,MAAM;gBAAE,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QACjE,CAAC;QAED,wEAAwE;QACxE,qDAAqD;QACrD,IAAI,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;QAEvE,OAAO;YACL,IAAI,EAAE,SAAS;YACf,KAAK;YACL,SAAS,EAAE,QAAQ;YACnB,SAAS,EAAE,aAAa;YACxB,QAAQ,EAAE,OAAO;YACjB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YACjC,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,aAAa,CACzB,OAAkB,EAClB,MAA0B,EAC1B,QAAsB,EACtB,SAA6B,EAC7B,IAAoB,EACpB,IAAY;QAEZ,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO;YAAE,OAAO,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YACxC,QAAQ,EAAE;gBACR,GAAG,OAAO;gBACV,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,+EAA+E,EAAE;aAC3G;YACD,KAAK,EAAE,EAAE;YACT,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;YACjE,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,SAAS;YAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/D,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;QACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;QAC9E,OAAO,qDAAqD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,iBAAiB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnK,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,SAAiB;QAC5B,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACK,gBAAgB,CAAC,MAAe;QACtC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC;IAC/D,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,IAAY,EAAE,IAA6B;QACnE,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACrE,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ export interface EvidenceEvent {
17
17
  model?: {
18
18
  name: string;
19
19
  version?: string;
20
- source?: 'local' | 'delegated';
20
+ source?: 'local' | 'remote';
21
21
  };
22
22
  hardware?: {
23
23
  device: string;
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,eAAO,MAAM,eAAe,EAAG,yBAAkC,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AACpE,MAAM,MAAM,iBAAiB,GACzB,YAAY,GACZ,cAAc,GACd,WAAW,GACX,WAAW,GACX,aAAa,GACb,cAAc,GACd,OAAO,CAAC;AAEZ,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,KAAK,EAAE,iBAAiB,CAAC;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;KAChC,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAClD,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;AAEjE,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,GAAG,IAAI,IAAI,CAAC;CACb;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,UAAU,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,aAAa,CAAC;CACpD;AAED,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,uBAAuB,EAAI;IAExD,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CASzD;CACF;AAkBD,sFAAsF;AACtF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAazE"}
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../src/evidence.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,eAAO,MAAM,eAAe,EAAG,yBAAkC,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AACpE,MAAM,MAAM,iBAAiB,GACzB,YAAY,GACZ,cAAc,GACd,WAAW,GACX,WAAW,GACX,aAAa,GACb,cAAc,GACd,OAAO,CAAC;AAEZ,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,KAAK,EAAE,iBAAiB,CAAC;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,eAAe,CAAC;IACzB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;KAC7B,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;QACf,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAClD,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC;AAEjE,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,GAAG,IAAI,IAAI,CAAC;CACb;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,UAAU,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,aAAa,CAAC;CACpD;AAED,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,IAAI;IAAjC,YAA6B,IAAI,EAAE,uBAAuB,EAAI;IAExD,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CASzD;CACF;AAkBD,sFAAsF;AACtF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAazE"}
@@ -15,6 +15,8 @@ export interface FastIntent {
15
15
  name: string;
16
16
  /** Contract tool to call when this intent matches. */
17
17
  tool: string;
18
+ /** Equivalent tools to try, in order, when the host doesn't expose `tool`. */
19
+ fallbackTools?: string[];
18
20
  /** True only when this intent UNAMBIGUOUSLY matches the text. */
19
21
  match: (text: string) => boolean;
20
22
  /** Optional args derived from the text (default: none). */
@@ -22,7 +24,10 @@ export interface FastIntent {
22
24
  }
23
25
  export interface FastHit {
24
26
  intent: FastIntent;
27
+ /** The intent's primary tool. */
25
28
  tool: string;
29
+ /** Primary tool first, then the fallbacks. */
30
+ tools: string[];
26
31
  args: Record<string, unknown>;
27
32
  }
28
33
  export declare class FastPath {
@@ -33,6 +38,6 @@ export declare class FastPath {
33
38
  /** The first unambiguously-matching intent, or null. */
34
39
  select(text: string): FastHit | null;
35
40
  }
36
- /** Default wallet read intents (balance / receive address / price). */
41
+ /** Default wallet read intents (balance / RGB assets / receive address / price). */
37
42
  export declare const WALLET_FAST_INTENTS: FastIntent[];
38
43
  //# sourceMappingURL=fastpath.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fastpath.d.ts","sourceRoot":"","sources":["../../src/fastpath/fastpath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACjC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAe;IAC9B,YAAY,OAAO,GAAE,UAAU,EAAO,EAErC;IACD,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAE5B;IACD,IAAI,IAAI,UAAU,EAAE,CAEnB;IACD,wDAAwD;IACxD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAGnC;CACF;AAMD,uEAAuE;AACvE,eAAO,MAAM,mBAAmB,EAAE,UAAU,EAgB3C,CAAC"}
1
+ {"version":3,"file":"fastpath.d.ts","sourceRoot":"","sources":["../../src/fastpath/fastpath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,iEAAiE;IACjE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACjC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,UAAU,CAAC;IACnB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAe;IAC9B,YAAY,OAAO,GAAE,UAAU,EAAO,EAErC;IACD,GAAG,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAE5B;IACD,IAAI,IAAI,UAAU,EAAE,CAEnB;IACD,wDAAwD;IACxD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAKnC;CACF;AAQD,oFAAoF;AACpF,eAAO,MAAM,mBAAmB,EAAE,UAAU,EA2B3C,CAAC"}
@@ -25,22 +25,36 @@ export class FastPath {
25
25
  /** The first unambiguously-matching intent, or null. */
26
26
  select(text) {
27
27
  const intent = this.intents.find((i) => i.match(text));
28
- return intent ? { intent, tool: intent.tool, args: intent.args?.(text) ?? {} } : null;
28
+ return intent
29
+ ? { intent, tool: intent.tool, tools: [intent.tool, ...(intent.fallbackTools ?? [])], args: intent.args?.(text) ?? {} }
30
+ : null;
29
31
  }
30
32
  }
31
33
  // A "spend or compound" guard — never fast-path anything that moves money or
32
34
  // chains another action ("send", "pay", "and then", "swap").
33
35
  const ACTIONY = /\b(send|pay|transfer|swap|buy|sell|then|after that)\b/i;
34
- /** Default wallet read intents (balance / receive address / price). */
36
+ // Asks that create something are not reads, even when they mention assets.
37
+ const CREATEY = /\b(issue|mint|create|make|new|generate|invoice|receive|request)\b/i;
38
+ /** Default wallet read intents (balance / RGB assets / receive address / price). */
35
39
  export const WALLET_FAST_INTENTS = [
36
40
  {
37
41
  name: 'balance',
38
42
  tool: 'get_balances',
43
+ fallbackTools: ['rln_get_balances', 'wdk_get_balances'],
39
44
  match: (t) => !ACTIONY.test(t) && /\b(balance|funds|how much (do i|have i|i have)|how much.* (do i have|in my wallet))\b/i.test(t),
40
45
  },
46
+ {
47
+ name: 'assets',
48
+ tool: 'rln_list_assets',
49
+ fallbackTools: ['wdk_list_assets'],
50
+ match: (t) => !ACTIONY.test(t) &&
51
+ !CREATEY.test(t) &&
52
+ /\b(which|what|list|show|my)\b[^.?!]*\b(rgb assets?|assets?|tokens?)\b|\b(rgb assets?|tokens?) (do i|i) (have|hold|own)\b/i.test(t),
53
+ },
41
54
  {
42
55
  name: 'address',
43
56
  tool: 'spark_get_address',
57
+ fallbackTools: ['rln_get_address', 'wdk_get_address'],
44
58
  match: (t) => !ACTIONY.test(t) && /\b(receive address|deposit address|my address|an address|get .*address|where.* receive)\b/i.test(t),
45
59
  },
46
60
  {
@@ -1 +1 @@
1
- {"version":3,"file":"fastpath.js","sourceRoot":"","sources":["../../src/fastpath/fastpath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAkBH,MAAM,OAAO,QAAQ;IACX,OAAO,CAAe;IAC9B,YAAY,OAAO,GAAiB,EAAE;QACpC,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,GAAG,CAAC,MAAkB;QACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,wDAAwD;IACxD,MAAM,CAAC,IAAY;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACxF,CAAC;CACF;AAED,6EAA6E;AAC7E,6DAA6D;AAC7D,MAAM,OAAO,GAAG,wDAAwD,CAAC;AAEzE,uEAAuE;AACvE,MAAM,CAAC,MAAM,mBAAmB,GAAiB;IAC/C;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,cAAc;QACpB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,wFAAwF,CAAC,IAAI,CAAC,CAAC,CAAC;KACnI;IACD;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,mBAAmB;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,4FAA4F,CAAC,IAAI,CAAC,CAAC,CAAC;KACvI;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,2FAA2F,CAAC,IAAI,CAAC,CAAC,CAAC;KACtI;CACF,CAAC"}
1
+ {"version":3,"file":"fastpath.js","sourceRoot":"","sources":["../../src/fastpath/fastpath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAuBH,MAAM,OAAO,QAAQ;IACX,OAAO,CAAe;IAC9B,YAAY,OAAO,GAAiB,EAAE;QACpC,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;IAC9B,CAAC;IACD,GAAG,CAAC,MAAkB;QACpB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IACD,wDAAwD;IACxD,MAAM,CAAC,IAAY;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,OAAO,MAAM;YACX,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE;YACvH,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;CACF;AAED,6EAA6E;AAC7E,6DAA6D;AAC7D,MAAM,OAAO,GAAG,wDAAwD,CAAC;AACzE,2EAA2E;AAC3E,MAAM,OAAO,GAAG,oEAAoE,CAAC;AAErF,oFAAoF;AACpF,MAAM,CAAC,MAAM,mBAAmB,GAAiB;IAC/C;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,cAAc;QACpB,aAAa,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;QACvD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,wFAAwF,CAAC,IAAI,CAAC,CAAC,CAAC;KACnI;IACD;QACE,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,iBAAiB;QACvB,aAAa,EAAE,CAAC,iBAAiB,CAAC;QAClC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CACX,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAChB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAChB,2HAA2H,CAAC,IAAI,CAAC,CAAC,CAAC;KACtI;IACD;QACE,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,mBAAmB;QACzB,aAAa,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;QACrD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,4FAA4F,CAAC,IAAI,CAAC,CAAC,CAAC;KACvI;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,2FAA2F,CAAC,IAAI,CAAC,CAAC,CAAC;KACtI;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function defaultRenderFast(intent: string, result: unknown): string;
2
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/fastpath/render.ts"],"names":[],"mappings":"AA+CA,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAQzE"}