@inbrowser/agent 0.1.0 → 0.3.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 (130) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +2 -2
  3. package/dist/cli/commands/run.js.map +1 -1
  4. package/dist/cli/fixtures.d.ts +2 -2
  5. package/dist/cli/fixtures.d.ts.map +1 -1
  6. package/dist/cli/fixtures.js +7 -16
  7. package/dist/cli/fixtures.js.map +1 -1
  8. package/dist/cli/llm/openrouter.d.ts +4 -4
  9. package/dist/cli/llm/openrouter.d.ts.map +1 -1
  10. package/dist/cli/llm/openrouter.js +20 -31
  11. package/dist/cli/llm/openrouter.js.map +1 -1
  12. package/dist/diagnostics/index.d.ts +5 -0
  13. package/dist/diagnostics/index.d.ts.map +1 -0
  14. package/dist/diagnostics/index.js +3 -0
  15. package/dist/diagnostics/index.js.map +1 -0
  16. package/dist/diagnostics/timing.d.ts +48 -0
  17. package/dist/diagnostics/timing.d.ts.map +1 -0
  18. package/dist/diagnostics/timing.js +85 -0
  19. package/dist/diagnostics/timing.js.map +1 -0
  20. package/dist/diagnostics/truthfulness.d.ts +36 -0
  21. package/dist/diagnostics/truthfulness.d.ts.map +1 -0
  22. package/dist/diagnostics/truthfulness.js +180 -0
  23. package/dist/diagnostics/truthfulness.js.map +1 -0
  24. package/dist/dispatch-memoization.d.ts +84 -0
  25. package/dist/dispatch-memoization.d.ts.map +1 -0
  26. package/dist/dispatch-memoization.js +197 -0
  27. package/dist/dispatch-memoization.js.map +1 -0
  28. package/dist/eval/comparison-report.d.ts +164 -0
  29. package/dist/eval/comparison-report.d.ts.map +1 -0
  30. package/dist/eval/comparison-report.js +316 -0
  31. package/dist/eval/comparison-report.js.map +1 -0
  32. package/dist/eval/fixture.d.ts +74 -0
  33. package/dist/eval/fixture.d.ts.map +1 -0
  34. package/dist/eval/fixture.js +217 -0
  35. package/dist/eval/fixture.js.map +1 -0
  36. package/dist/eval/index.d.ts +13 -0
  37. package/dist/eval/index.d.ts.map +1 -0
  38. package/dist/eval/index.js +7 -0
  39. package/dist/eval/index.js.map +1 -0
  40. package/dist/eval/load-node.d.ts +16 -0
  41. package/dist/eval/load-node.d.ts.map +1 -0
  42. package/dist/eval/load-node.js +58 -0
  43. package/dist/eval/load-node.js.map +1 -0
  44. package/dist/eval/metric-collector.d.ts +209 -0
  45. package/dist/eval/metric-collector.d.ts.map +1 -0
  46. package/dist/eval/metric-collector.js +293 -0
  47. package/dist/eval/metric-collector.js.map +1 -0
  48. package/dist/eval/run-record.d.ts +76 -0
  49. package/dist/eval/run-record.d.ts.map +1 -0
  50. package/dist/eval/run-record.js +32 -0
  51. package/dist/eval/run-record.js.map +1 -0
  52. package/dist/eval/runner.d.ts +140 -0
  53. package/dist/eval/runner.d.ts.map +1 -0
  54. package/dist/eval/runner.js +310 -0
  55. package/dist/eval/runner.js.map +1 -0
  56. package/dist/eval/spec-framework.d.ts +113 -0
  57. package/dist/eval/spec-framework.d.ts.map +1 -0
  58. package/dist/eval/spec-framework.js +100 -0
  59. package/dist/eval/spec-framework.js.map +1 -0
  60. package/dist/eval/spec-helpers.d.ts +245 -0
  61. package/dist/eval/spec-helpers.d.ts.map +1 -0
  62. package/dist/eval/spec-helpers.js +605 -0
  63. package/dist/eval/spec-helpers.js.map +1 -0
  64. package/dist/index.d.ts +32 -8
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +14 -3
  67. package/dist/index.js.map +1 -1
  68. package/dist/llm-adapter.d.ts +30 -34
  69. package/dist/llm-adapter.d.ts.map +1 -1
  70. package/dist/llm-adapter.js +61 -51
  71. package/dist/llm-adapter.js.map +1 -1
  72. package/dist/mcp/connect.d.ts +68 -0
  73. package/dist/mcp/connect.d.ts.map +1 -0
  74. package/dist/mcp/connect.js +111 -0
  75. package/dist/mcp/connect.js.map +1 -0
  76. package/dist/metrics.js +4 -4
  77. package/dist/metrics.js.map +1 -1
  78. package/dist/node.d.ts +3 -0
  79. package/dist/node.d.ts.map +1 -1
  80. package/dist/node.js +2 -0
  81. package/dist/node.js.map +1 -1
  82. package/dist/planner-executor.d.ts +132 -0
  83. package/dist/planner-executor.d.ts.map +1 -0
  84. package/dist/planner-executor.js +274 -0
  85. package/dist/planner-executor.js.map +1 -0
  86. package/dist/retrieval.d.ts +74 -0
  87. package/dist/retrieval.d.ts.map +1 -0
  88. package/dist/retrieval.js +287 -0
  89. package/dist/retrieval.js.map +1 -0
  90. package/dist/session.d.ts.map +1 -1
  91. package/dist/session.js +8 -2
  92. package/dist/session.js.map +1 -1
  93. package/dist/skill-catalog.d.ts +81 -0
  94. package/dist/skill-catalog.d.ts.map +1 -0
  95. package/dist/skill-catalog.js +388 -0
  96. package/dist/skill-catalog.js.map +1 -0
  97. package/dist/skill-router.d.ts +95 -0
  98. package/dist/skill-router.d.ts.map +1 -0
  99. package/dist/skill-router.js +130 -0
  100. package/dist/skill-router.js.map +1 -0
  101. package/dist/strategy.d.ts +22 -2
  102. package/dist/strategy.d.ts.map +1 -1
  103. package/dist/strategy.js +358 -28
  104. package/dist/strategy.js.map +1 -1
  105. package/dist/tools.d.ts +15 -1
  106. package/dist/tools.d.ts.map +1 -1
  107. package/dist/tools.js +18 -0
  108. package/dist/tools.js.map +1 -1
  109. package/dist/types/agent.d.ts +2 -3
  110. package/dist/types/agent.d.ts.map +1 -1
  111. package/dist/types/agent.js +1 -1
  112. package/dist/types/chat.d.ts +0 -15
  113. package/dist/types/chat.d.ts.map +1 -1
  114. package/dist/types/llm.d.ts +11 -64
  115. package/dist/types/llm.d.ts.map +1 -1
  116. package/dist/types/llm.js +7 -8
  117. package/dist/types/llm.js.map +1 -1
  118. package/dist/types/metrics.d.ts +2 -2
  119. package/dist/types/metrics.d.ts.map +1 -1
  120. package/dist/types/session.d.ts +2 -2
  121. package/dist/types/session.d.ts.map +1 -1
  122. package/dist/types/strategy.d.ts +60 -3
  123. package/dist/types/strategy.d.ts.map +1 -1
  124. package/dist/types/tools.d.ts +18 -0
  125. package/dist/types/tools.d.ts.map +1 -1
  126. package/dist/types/trace.d.ts +67 -15
  127. package/dist/types/trace.d.ts.map +1 -1
  128. package/dist/types/trace.js +5 -3
  129. package/dist/types/trace.js.map +1 -1
  130. package/package.json +3 -2
@@ -0,0 +1,74 @@
1
+ /**
2
+ * `createRetrievalStrategy()` — a code-orchestrated retrieve-then-read
3
+ * (RAG) `AgentStrategy`.
4
+ *
5
+ * Where `createReactLoopStrategy` lets the model drive — deciding when
6
+ * to call tools and when to stop — this strategy inverts the control
7
+ * flow. The *code* does the retrieval (search + read top-K docs); the
8
+ * model is invoked exactly ONCE, with NO tools advertised, to write a
9
+ * grounded answer from the retrieved excerpts. This is the
10
+ * "zero-agency" tier-1 shape from
11
+ * `plans/retrieval-strategy-and-eval.md`: a small model (e.g. SmolLM2
12
+ * 360M) that can't reliably emit tool calls or decide when to stop
13
+ * still does one thing well — grounded generation over stuffed context.
14
+ *
15
+ * Lifecycle (`run`):
16
+ *
17
+ * 1. SEARCH (code). Synthesize a tool-call id, emit `tool_call`
18
+ * for the search tool with `{ query: input.prompt }`, dispatch it
19
+ * through `input.tools.execute`, emit `tool_result`.
20
+ * 2. READ top-K (code). Pull routes from the search result via
21
+ * `extractRoutes`, take the first `topK`, and for each emit
22
+ * `tool_call`(read) → dispatch → `tool_result`. Collect the
23
+ * extracted text until `contextBudget` chars are reached.
24
+ * 3. COMPOSE. Build `[system, ...history, user(composeContext(...))]`
25
+ * the same way the ReAct loop's `buildMessages` does — except the
26
+ * final user message is the grounded context+question, not the
27
+ * raw prompt.
28
+ * 4. GENERATE. One `input.llm.chat({ messages, tools: [],
29
+ * toolUseEnabled: false })` call; map model `text` / `thinking` /
30
+ * `usage` / `error` events straight to `StrategyEvent`s.
31
+ * 5. `turn_complete` carrying the captured usage.
32
+ *
33
+ * It emits the SAME `tool_call` / `tool_result` / `text` event surface
34
+ * the ReAct loop does, so an existing host (cards, sources, streaming)
35
+ * works unchanged — the only difference is the events are driven by
36
+ * code, not the model.
37
+ */
38
+ import type { AgentStrategy } from './types/strategy.js';
39
+ export interface RetrievalStrategyOpts {
40
+ /** Tool that returns candidate doc hits for a query. Default `'search_docs'`. */
41
+ searchTool?: string;
42
+ /** Tool that returns a single doc's content by route. Default `'get_doc'`. */
43
+ readTool?: string;
44
+ /** How many of the search hits to read. Default 3. */
45
+ topK?: number;
46
+ /**
47
+ * Pull the routes to read from the search tool's `ToolResult.data`.
48
+ * Default: `(d as { hits: { route }[] }).hits.map((h) => h.route)`.
49
+ */
50
+ extractRoutes?(searchData: unknown): string[];
51
+ /**
52
+ * Pull the context text from a read tool's `ToolResult.data`.
53
+ * Default: from `{ route, title, body }`.
54
+ */
55
+ extractText?(readData: unknown): {
56
+ route: string;
57
+ title: string;
58
+ text: string;
59
+ };
60
+ /**
61
+ * Build the grounded user message from the question + retrieved docs.
62
+ * Default: an instruction to answer ONLY from the excerpts and cite
63
+ * the route(s), the labeled excerpts, then the question.
64
+ */
65
+ composeContext?(question: string, docs: {
66
+ route: string;
67
+ title: string;
68
+ text: string;
69
+ }[]): string;
70
+ /** Cap on total context chars fed to the model. Default ~6000. */
71
+ contextBudget?: number;
72
+ }
73
+ export declare function createRetrievalStrategy(opts?: RetrievalStrategyOpts): AgentStrategy;
74
+ //# sourceMappingURL=retrieval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrieval.d.ts","sourceRoot":"","sources":["../src/retrieval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAmC,MAAM,qBAAqB,CAAC;AAE1F,MAAM,WAAW,qBAAqB;IACpC,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM,EAAE,CAAC;IAC9C;;;OAGG;IACH,WAAW,CAAC,CAAC,QAAQ,EAAE,OAAO,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAChF;;;;OAIG;IACH,cAAc,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,MAAM,CAAC;IAClG,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAoHD,wBAAgB,uBAAuB,CAAC,IAAI,GAAE,qBAA0B,GAAG,aAAa,CA4JvF"}
@@ -0,0 +1,287 @@
1
+ /**
2
+ * `createRetrievalStrategy()` — a code-orchestrated retrieve-then-read
3
+ * (RAG) `AgentStrategy`.
4
+ *
5
+ * Where `createReactLoopStrategy` lets the model drive — deciding when
6
+ * to call tools and when to stop — this strategy inverts the control
7
+ * flow. The *code* does the retrieval (search + read top-K docs); the
8
+ * model is invoked exactly ONCE, with NO tools advertised, to write a
9
+ * grounded answer from the retrieved excerpts. This is the
10
+ * "zero-agency" tier-1 shape from
11
+ * `plans/retrieval-strategy-and-eval.md`: a small model (e.g. SmolLM2
12
+ * 360M) that can't reliably emit tool calls or decide when to stop
13
+ * still does one thing well — grounded generation over stuffed context.
14
+ *
15
+ * Lifecycle (`run`):
16
+ *
17
+ * 1. SEARCH (code). Synthesize a tool-call id, emit `tool_call`
18
+ * for the search tool with `{ query: input.prompt }`, dispatch it
19
+ * through `input.tools.execute`, emit `tool_result`.
20
+ * 2. READ top-K (code). Pull routes from the search result via
21
+ * `extractRoutes`, take the first `topK`, and for each emit
22
+ * `tool_call`(read) → dispatch → `tool_result`. Collect the
23
+ * extracted text until `contextBudget` chars are reached.
24
+ * 3. COMPOSE. Build `[system, ...history, user(composeContext(...))]`
25
+ * the same way the ReAct loop's `buildMessages` does — except the
26
+ * final user message is the grounded context+question, not the
27
+ * raw prompt.
28
+ * 4. GENERATE. One `input.llm.chat({ messages, tools: [],
29
+ * toolUseEnabled: false })` call; map model `text` / `thinking` /
30
+ * `usage` / `error` events straight to `StrategyEvent`s.
31
+ * 5. `turn_complete` carrying the captured usage.
32
+ *
33
+ * It emits the SAME `tool_call` / `tool_result` / `text` event surface
34
+ * the ReAct loop does, so an existing host (cards, sources, streaming)
35
+ * works unchanged — the only difference is the events are driven by
36
+ * code, not the model.
37
+ */
38
+ const DEFAULT_SEARCH_TOOL = 'search_docs';
39
+ const DEFAULT_READ_TOOL = 'get_doc';
40
+ const DEFAULT_TOP_K = 3;
41
+ const DEFAULT_CONTEXT_BUDGET = 6000;
42
+ /** Default route extractor: `data.hits[].route`. Defensive against
43
+ * any non-conforming shape — returns `[]` rather than throwing so the
44
+ * strategy still completes (generating from whatever context it has). */
45
+ function defaultExtractRoutes(searchData) {
46
+ if (!searchData || typeof searchData !== 'object')
47
+ return [];
48
+ const hits = searchData.hits;
49
+ if (!Array.isArray(hits))
50
+ return [];
51
+ const routes = [];
52
+ for (const hit of hits) {
53
+ if (hit && typeof hit === 'object') {
54
+ const route = hit.route;
55
+ if (typeof route === 'string' && route.length > 0)
56
+ routes.push(route);
57
+ }
58
+ }
59
+ return routes;
60
+ }
61
+ /** Default text extractor: from `{ route, title, body }`. */
62
+ function defaultExtractText(readData) {
63
+ const obj = (readData && typeof readData === 'object' ? readData : {});
64
+ return {
65
+ route: typeof obj.route === 'string' ? obj.route : '',
66
+ title: typeof obj.title === 'string' ? obj.title : '',
67
+ text: typeof obj.body === 'string' ? obj.body : '',
68
+ };
69
+ }
70
+ /** Default context composer: a tight grounding instruction, the
71
+ * labeled excerpts, then the question. Mirrors the wording in the
72
+ * plan: answer ONLY from the excerpts + cite the route(s). */
73
+ function defaultComposeContext(question, docs) {
74
+ const instruction = 'Answer the question using ONLY the documentation excerpts below. ' +
75
+ 'Cite the route(s) you used. If the answer is not in the excerpts, say so.';
76
+ const excerpts = docs.map((doc) => `--- [${doc.route}] ${doc.title}\n${doc.text}`).join('\n\n');
77
+ const excerptBlock = excerpts.length > 0 ? excerpts : '(no documentation excerpts were retrieved)';
78
+ return `${instruction}\n\n${excerptBlock}\n\nQuestion: ${question}`;
79
+ }
80
+ /**
81
+ * Build `[system, ...history, user(<groundedContext>)]`. Identical to
82
+ * the ReAct loop's `buildMessages` except the trailing user message is
83
+ * the grounded context rather than the raw prompt. This strategy never
84
+ * encodes assistant tool-calls of its own — the only tool activity is
85
+ * the code-driven retrieval, which the model never sees.
86
+ */
87
+ function buildMessages(input, groundedUserText) {
88
+ const out = [];
89
+ out.push({ role: 'system', text: input.systemPrompt });
90
+ for (const m of input.history) {
91
+ if (m.role === 'system')
92
+ continue; // already emitted
93
+ if (m.role === 'assistant') {
94
+ const tc = m.toolCalls?.map((c) => ({
95
+ id: c.id,
96
+ name: c.name,
97
+ args: safeParse(c.argsJson),
98
+ ...(c.signature ? { signature: c.signature } : {}),
99
+ })) ?? [];
100
+ out.push({
101
+ role: 'assistant',
102
+ text: m.text,
103
+ ...(tc.length > 0 ? { toolCalls: tc } : {}),
104
+ });
105
+ for (const c of m.toolCalls ?? []) {
106
+ if (c.resultJson !== undefined) {
107
+ out.push({
108
+ role: 'tool',
109
+ toolCallId: c.id,
110
+ name: c.name,
111
+ resultJson: c.resultJson,
112
+ text: '',
113
+ });
114
+ }
115
+ }
116
+ }
117
+ else {
118
+ out.push({ role: m.role, text: m.text });
119
+ }
120
+ }
121
+ out.push({ role: 'user', text: groundedUserText });
122
+ return out;
123
+ }
124
+ function safeParse(s) {
125
+ try {
126
+ return JSON.parse(s);
127
+ }
128
+ catch {
129
+ return s;
130
+ }
131
+ }
132
+ let idSeq = 0;
133
+ /** Per-call id for the synthetic, code-driven tool calls. Mirrors the
134
+ * ReAct loop's per-iteration `requestId` discipline — the host only
135
+ * needs the id to be stable + unique across a single run so it can
136
+ * pair `tool_call` with `tool_result`. */
137
+ function rid(prefix) {
138
+ idSeq += 1;
139
+ return `${prefix}-${Date.now().toString(36)}-${idSeq}`;
140
+ }
141
+ export function createRetrievalStrategy(opts = {}) {
142
+ const searchTool = opts.searchTool ?? DEFAULT_SEARCH_TOOL;
143
+ const readTool = opts.readTool ?? DEFAULT_READ_TOOL;
144
+ const topK = opts.topK ?? DEFAULT_TOP_K;
145
+ const extractRoutes = opts.extractRoutes ?? defaultExtractRoutes;
146
+ const extractText = opts.extractText ?? defaultExtractText;
147
+ const composeContext = opts.composeContext ?? defaultComposeContext;
148
+ const contextBudget = opts.contextBudget ?? DEFAULT_CONTEXT_BUDGET;
149
+ return {
150
+ id: 'retrieval',
151
+ async *run(input, signal) {
152
+ if (signal.aborted) {
153
+ yield { kind: 'error', message: 'aborted' };
154
+ return;
155
+ }
156
+ // 1. SEARCH (code-driven). Emit the same `tool_call` /
157
+ // `tool_result` surface the ReAct loop emits for a model-driven
158
+ // call, so the host's "searching" UI + Sources work unchanged.
159
+ const searchId = rid('search');
160
+ yield { kind: 'tool_call', id: searchId, name: searchTool, args: { query: input.prompt } };
161
+ const searchResult = await input.tools.execute({ id: searchId, name: searchTool, args: { query: input.prompt } }, input.toolContext());
162
+ yield { kind: 'tool_result', id: searchId, result: searchResult };
163
+ // 2. READ top-K (code-driven). Even when search failed or
164
+ // returned no usable routes we still proceed to generate — the
165
+ // model grounds on whatever context we managed to collect (or
166
+ // on an explicit "nothing retrieved" note). It never crashes.
167
+ const routes = searchResult.ok ? extractRoutes(searchResult.data).slice(0, topK) : [];
168
+ const docs = [];
169
+ let usedChars = 0;
170
+ for (const route of routes) {
171
+ if (signal.aborted) {
172
+ yield { kind: 'error', message: 'aborted' };
173
+ return;
174
+ }
175
+ if (usedChars >= contextBudget)
176
+ break;
177
+ const readId = rid('read');
178
+ yield { kind: 'tool_call', id: readId, name: readTool, args: { route } };
179
+ const readResult = await input.tools.execute({ id: readId, name: readTool, args: { route } }, input.toolContext());
180
+ yield { kind: 'tool_result', id: readId, result: readResult };
181
+ if (!readResult.ok)
182
+ continue;
183
+ const doc = extractText(readResult.data);
184
+ // Trim the excerpt so the running total never exceeds the
185
+ // budget — a small local model can't hold several full bodies.
186
+ const remaining = contextBudget - usedChars;
187
+ const text = doc.text.length > remaining ? doc.text.slice(0, remaining) : doc.text;
188
+ docs.push({ route: doc.route, title: doc.title, text });
189
+ usedChars += text.length;
190
+ }
191
+ if (signal.aborted) {
192
+ yield { kind: 'error', message: 'aborted' };
193
+ return;
194
+ }
195
+ // 3. COMPOSE. The model's only input is system + history + the
196
+ // grounded question. No tools are advertised → no tool-call
197
+ // parsing, no loop.
198
+ const groundedUserText = composeContext(input.prompt, docs);
199
+ const messages = buildMessages(input, groundedUserText);
200
+ const chatRequest = {
201
+ messages,
202
+ tools: [],
203
+ toolUseEnabled: false,
204
+ };
205
+ // Emit the trace BEFORE dispatch — same agent-layer view the
206
+ // ReAct loop captures. A single-iteration run, so iteration 0.
207
+ const turnIdForReq = input.turnId ?? 'turn-anon';
208
+ const requestId = `${turnIdForReq}#0`;
209
+ if (input.tracer) {
210
+ input.tracer.emit({
211
+ kind: 'llm_request',
212
+ data: {
213
+ requestId,
214
+ turnId: turnIdForReq,
215
+ iteration: 0,
216
+ ts: Date.now(),
217
+ systemPrompt: input.systemPrompt,
218
+ messages: messages.map((m) => ({ ...m })),
219
+ tools: [],
220
+ llm: { id: input.llm.id, supportsTools: input.llm.supportsTools },
221
+ },
222
+ });
223
+ }
224
+ // 4. GENERATE (the model's ONLY job).
225
+ let turnUsage;
226
+ const turnDetails = { requestedModel: input.llm.id };
227
+ let assistantText = '';
228
+ let assistantThinking = '';
229
+ for await (const ev of input.llm.chat(chatRequest, signal)) {
230
+ if (ev.kind === 'text') {
231
+ assistantText += ev.text;
232
+ yield { kind: 'text', chunk: ev.text };
233
+ }
234
+ else if (ev.kind === 'thinking') {
235
+ assistantThinking += ev.text;
236
+ yield { kind: 'thinking', chunk: ev.text };
237
+ }
238
+ else if (ev.kind === 'usage') {
239
+ turnUsage = ev.usage;
240
+ }
241
+ else if (ev.kind === 'error') {
242
+ yield { kind: 'error', message: ev.message };
243
+ return;
244
+ }
245
+ // `tool_call` events are impossible here (toolUseEnabled:false,
246
+ // no tools advertised); a misbehaving stub that emits one is
247
+ // ignored rather than dispatched — this is a zero-agency
248
+ // strategy and the code already retrieved everything.
249
+ }
250
+ // Pair the `llm_request` with its response — the closing endpoint
251
+ // of this run's language-model wall-clock segment.
252
+ if (input.tracer) {
253
+ input.tracer.emit({
254
+ kind: 'llm_response',
255
+ data: {
256
+ requestId,
257
+ ts: Date.now(),
258
+ text: assistantText,
259
+ thinking: assistantThinking,
260
+ toolCalls: [],
261
+ ...(turnUsage
262
+ ? {
263
+ usage: {
264
+ promptTokens: turnUsage.promptTokens,
265
+ outputTokens: turnUsage.outputTokens,
266
+ ...(turnUsage.cachedTokens !== undefined
267
+ ? { cachedTokens: turnUsage.cachedTokens }
268
+ : {}),
269
+ },
270
+ }
271
+ : {}),
272
+ },
273
+ });
274
+ }
275
+ // 5. turn_complete. Synthesize a zero-usage accounting when the
276
+ // stub never emitted a `usage` event so the strategy always
277
+ // terminates with a `turn_complete` (the contract a host
278
+ // relies on), matching the plan.
279
+ yield {
280
+ kind: 'turn_complete',
281
+ usage: turnUsage ?? { promptTokens: 0, outputTokens: 0 },
282
+ details: turnDetails,
283
+ };
284
+ },
285
+ };
286
+ }
287
+ //# sourceMappingURL=retrieval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrieval.js","sourceRoot":"","sources":["../src/retrieval.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAgB,MAAM,oBAAoB,CAAC;AAOzF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CA+H3E"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAgB,MAAM,oBAAoB,CAAC;AAOzF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAsI3E"}
package/dist/session.js CHANGED
@@ -47,7 +47,13 @@ export function createAgentSession(config) {
47
47
  async function* run(prompt, signal) {
48
48
  const turnId = `t-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 6)}`;
49
49
  yield { kind: 'turn_started', turnId };
50
- // Capture the user message in history so the next turn sees it.
50
+ // The strategy receives the PRE-prompt history everything
51
+ // before this turn's prompt — and appends `prompt` itself when
52
+ // composing messages. Passing the post-append history here would
53
+ // make every LLM request carry the user prompt twice.
54
+ const priorHistory = history;
55
+ // Capture the user message in the session's own history so the
56
+ // next turn (and persistence) sees it.
51
57
  const userMsg = {
52
58
  id: `u-${turnId}`,
53
59
  role: 'user',
@@ -58,7 +64,7 @@ export function createAgentSession(config) {
58
64
  const systemPrompt = config.systemPromptBuilder(workspace, runtime);
59
65
  const strategyEvents = config.strategy.run({
60
66
  prompt,
61
- history,
67
+ history: priorHistory,
62
68
  workspace,
63
69
  runtime,
64
70
  llm: config.llm,
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,IAAI,cAAc,GAAG,CAAC,CAAC;AAEvB,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,IAAI,WAAW,EAAE,cAAc,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IACjF,IAAI,SAAS,GAAc,eAAe,CACxC,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CACjF,CAAC;IACF,IAAI,OAAO,GAAiB,cAAc,EAAE,CAAC;IAC7C,IAAI,OAAO,GAAkB,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,YAAY,GAA2B,IAAI,CAAC;IAEhD,MAAM,OAAO,GAAiB;QAC5B,EAAE;QACF,IAAI,SAAS;YACX,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,OAAO;YACT,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,CAAC,MAAM,EAAE,cAAc;YAC3B,0DAA0D;YAC1D,+CAA+C;YAC/C,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;YACpC,YAAY,GAAG,KAAK,CAAC;YACrB,MAAM,MAAM,GAAG,WAAW,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACzD,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM;YACJ,YAAY,EAAE,KAAK,EAAE,CAAC;QACxB,CAAC;KACF,CAAC;IAEF,SAAS,aAAa,CAAC,KAAqC;QAC1D,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,SAAS,GAAG,eAAe,CAAC,EAAE,GAAG,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,SAAS,WAAW,CAAC,KAAwC;QAC3D,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,OAAO,GAAG,aAAa,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,MAAc,EAAE,MAAmB;QACrD,MAAM,MAAM,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACxF,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;QAEvC,gEAAgE;QAChE,MAAM,OAAO,GAAgB;YAC3B,EAAE,EAAE,KAAK,MAAM,EAAE;YACjB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QACF,OAAO,GAAG,CAAC,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC;QAEhC,MAAM,YAAY,GAAG,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAEpE,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CACxC;YACE,MAAM;YACN,OAAO;YACP,SAAS;YACT,OAAO;YACP,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY;YACZ,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,MAAM;SACP,EACD,MAAM,CACP,CAAC;QAEF,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,KAAK,MAAM,EAAE,CAAC;QAElC,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,cAA8C,EAAE,CAAC;YACtE,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACvB,aAAa,IAAI,EAAE,CAAC,KAAK,CAAC;gBAC1B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;YAClD,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAClC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;YACtD,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBACnC,MAAM;oBACJ,IAAI,EAAE,cAAc;oBACpB,MAAM;oBACN,MAAM,EAAE,EAAE,CAAC,EAAE;oBACb,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,IAAI,EAAE,EAAE,CAAC,IAAI;oBACb,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACrD,CAAC;YACJ,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;gBACrC,MAAM,QAAQ,GAAG,aAAa,CAAE,EAAE,CAAC,MAAqB,CAAC,cAAc,CAAC,CAAC;gBACzE,MAAM,QAAQ,GAAG,WAAW,CAAE,EAAE,CAAC,MAAqB,CAAC,YAAY,CAAC,CAAC;gBACrE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;gBAC1E,IAAI,QAAQ;oBAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC;gBAC7D,IAAI,QAAQ;oBAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC;YAC3D,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;oBACxC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE;oBACpB,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,cAAc;oBAChC,UAAU,EAAE,CAAC;oBACb,QAAQ,EAAE,EAAE,CAAC,KAAK;iBACnB,CAAC,CAAC;gBACH,uCAAuC;gBACvC,MAAM,YAAY,GAAgB;oBAChC,EAAE,EAAE,WAAW;oBACf,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,aAAa;oBACnB,OAAO;oBACP,OAAO,EAAE,EAAE,CAAC,OAAO;oBACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACtB,CAAC;gBACF,OAAO,GAAG,CAAC,GAAG,OAAO,EAAE,YAAY,CAAC,CAAC;gBACrC,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC;YACzE,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC/B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC;gBACrD,OAAO;YACT,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAChC,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;YACjE,CAAC;QACH,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,eAAe,CAAC;QACrB,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,EAAE;QACT,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;KAChE,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAAC,MAA0B;IACzD,mEAAmE;IACnE,mEAAmE;IACnE,yCAAyC;IACzC,KAAK,MAAM,CAAC;IACZ,OAAO,gBAAgB,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,aAAa,CAAC;QACnB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,EAAE;QACZ,cAAc,EAAE,CAAC;KAClB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,eAAe,CAAC,CAAY;IACnC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAc,CAAC;AACtF,CAAC;AAED,SAAS,aAAa,CAAC,CAAe;IACpC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,CAAC;QACJ,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAwC;QAC/E,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAwC;KAChF,CAAiB,CAAC;AACrB,CAAC;AAED,uEAAuE;AACvE,SAAS,WAAW,CAAC,CAAc,EAAE,CAAc;IACjD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QAC3B,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,UAAU,CAAC,MAAM,CAAC;IAC3B,CAAC;IACD,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACtE,OAAO,UAAU,CAAC,MAAM,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Static catalog of skill workflows.
3
+ *
4
+ * Phase five of the implementation plan splits the planner-executor work
5
+ * into three branches: this catalog, the router that classifies a user
6
+ * prompt against the catalog, and the executor that walks a chosen
7
+ * skill's prescribed step sequence. This module is the data + types
8
+ * gate — no runtime logic. The router reads `triggerHints` to score
9
+ * candidate matches; the executor reads `steps` to materialize a plan.
10
+ *
11
+ * Each entry's `name` matches a value in the `SkillName` enum from
12
+ * `eval/fixture.ts` (re-exported here for convenience). Step
13
+ * descriptions are imperative, short, and model-agnostic. Per-step
14
+ * `verifier?` references existing starter / custom specs where one
15
+ * fits naturally; not every step has one. Leaf "compile / deploy /
16
+ * verify" steps tend to have a spec; intermediate read / draft steps
17
+ * usually don't.
18
+ *
19
+ * The catalog is hand-authored and intentionally `const`. The
20
+ * companion test in `test/skill-catalog.test.ts` asserts shape
21
+ * invariants: every `name` is in `SKILL_NAMES`, every entry has at
22
+ * least three trigger hints, every entry has between four and nine
23
+ * steps, every step id is unique and kebab-case within its plan, and
24
+ * every `verifier?.name` matches a spec registered by
25
+ * `registerAllSpecs(createSpecRegistry())`.
26
+ */
27
+ import type { SkillName, SuccessSpecReference } from './eval/fixture.js';
28
+ /**
29
+ * One ordered step in a skill's prescribed workflow.
30
+ *
31
+ * `id` is a stable kebab-case identifier, unique within the parent
32
+ * plan. The executor uses it as the scratch key for the step's
33
+ * bounded sub-loop. `description` is an imperative one-liner — what
34
+ * the step does, in the project's voice. `verifier?` is an optional
35
+ * `SuccessSpecReference` the executor can run after the step finishes
36
+ * to gate whether the plan advances; the same shape that fixtures
37
+ * use, so the executor can re-use `evaluateSpec` without translation.
38
+ */
39
+ export interface PlanStep {
40
+ /** Stable kebab-case id, unique within the plan. */
41
+ id: string;
42
+ /** Short imperative description of what the step does. */
43
+ description: string;
44
+ /** Optional reference to a success spec that verifies this step. */
45
+ verifier?: SuccessSpecReference;
46
+ }
47
+ /**
48
+ * One row in the skill catalog. Describes a single skill workflow as
49
+ * a triple of (router signals, plan, identity).
50
+ */
51
+ export interface SkillCatalogEntry {
52
+ /** Matches a value in `SKILL_NAMES` from `eval/fixture.ts`. */
53
+ name: SkillName;
54
+ /** One-line description used by the router and surfaced in the plan. */
55
+ description: string;
56
+ /**
57
+ * Lowercase keyword tokens the router scans the user prompt for.
58
+ * Order does not matter; at least one hit signals a candidate match.
59
+ */
60
+ triggerHints: readonly string[];
61
+ /** Prescribed workflow as an ordered sequence of steps. */
62
+ steps: readonly PlanStep[];
63
+ }
64
+ /** Read-only view over the catalog. */
65
+ export type SkillCatalog = readonly SkillCatalogEntry[];
66
+ export declare const SKILL_CATALOG: SkillCatalog;
67
+ /**
68
+ * Look up a catalog entry by skill name. Returns `undefined` when the
69
+ * name is not in the catalog. The router will use this to materialize
70
+ * an entry after picking a winner; the executor will use it to
71
+ * unwrap a router decision into a plan.
72
+ */
73
+ export declare function getSkillEntry(name: SkillName): SkillCatalogEntry | undefined;
74
+ /**
75
+ * List every skill name present in the catalog, in catalog order. The
76
+ * router uses this to iterate candidates when scoring a prompt; the
77
+ * test suite uses it to assert the catalog covers every value in
78
+ * `SKILL_NAMES`.
79
+ */
80
+ export declare function listSkillNames(): readonly SkillName[];
81
+ //# sourceMappingURL=skill-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-catalog.d.ts","sourceRoot":"","sources":["../src/skill-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAWzE;;;;;;;;;;GAUG;AACH,MAAM,WAAW,QAAQ;IACvB,oDAAoD;IACpD,EAAE,EAAE,MAAM,CAAC;IACX,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,IAAI,EAAE,SAAS,CAAC;IAChB,wEAAwE;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,2DAA2D;IAC3D,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;CAC5B;AAED,uCAAuC;AACvC,MAAM,MAAM,YAAY,GAAG,SAAS,iBAAiB,EAAE,CAAC;AAQxD,eAAO,MAAM,aAAa,EAAE,YA8V3B,CAAC;AAcF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,iBAAiB,GAAG,SAAS,CAE5E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,SAAS,SAAS,EAAE,CAErD"}