polpo-ai 0.4.10 → 0.5.1

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 (57) hide show
  1. package/dist/adapters/engine.d.ts +3 -3
  2. package/dist/adapters/engine.d.ts.map +1 -1
  3. package/dist/adapters/engine.js +205 -151
  4. package/dist/adapters/engine.js.map +1 -1
  5. package/dist/assessment/llm-review.d.ts +8 -8
  6. package/dist/assessment/llm-review.d.ts.map +1 -1
  7. package/dist/assessment/llm-review.js +209 -338
  8. package/dist/assessment/llm-review.js.map +1 -1
  9. package/dist/core/index.d.ts +1 -1
  10. package/dist/core/index.d.ts.map +1 -1
  11. package/dist/core/orchestrator.d.ts.map +1 -1
  12. package/dist/core/orchestrator.js +3 -4
  13. package/dist/core/orchestrator.js.map +1 -1
  14. package/dist/llm/pi-client.d.ts +81 -45
  15. package/dist/llm/pi-client.d.ts.map +1 -1
  16. package/dist/llm/pi-client.js +341 -244
  17. package/dist/llm/pi-client.js.map +1 -1
  18. package/dist/server/app.d.ts.map +1 -1
  19. package/dist/server/app.js +3 -5
  20. package/dist/server/app.js.map +1 -1
  21. package/dist/setup/providers.d.ts +3 -3
  22. package/dist/setup/providers.d.ts.map +1 -1
  23. package/dist/setup/providers.js +2 -2
  24. package/dist/stores/file-session-store.d.ts +3 -3
  25. package/dist/stores/file-session-store.d.ts.map +1 -1
  26. package/dist/stores/file-session-store.js.map +1 -1
  27. package/dist/tools/attachment-tools.d.ts +1 -1
  28. package/dist/tools/attachment-tools.d.ts.map +1 -1
  29. package/dist/tools/audio-tools.d.ts +1 -1
  30. package/dist/tools/audio-tools.d.ts.map +1 -1
  31. package/dist/tools/browser-tools.d.ts +1 -1
  32. package/dist/tools/browser-tools.d.ts.map +1 -1
  33. package/dist/tools/docx-tools.d.ts +1 -1
  34. package/dist/tools/docx-tools.d.ts.map +1 -1
  35. package/dist/tools/email-tools.d.ts +1 -1
  36. package/dist/tools/email-tools.d.ts.map +1 -1
  37. package/dist/tools/excel-tools.d.ts +1 -1
  38. package/dist/tools/excel-tools.d.ts.map +1 -1
  39. package/dist/tools/http-tools.d.ts +1 -1
  40. package/dist/tools/http-tools.d.ts.map +1 -1
  41. package/dist/tools/image-tools.d.ts +1 -1
  42. package/dist/tools/image-tools.d.ts.map +1 -1
  43. package/dist/tools/memory-tools.d.ts +1 -1
  44. package/dist/tools/memory-tools.d.ts.map +1 -1
  45. package/dist/tools/outcome-tools.d.ts +1 -1
  46. package/dist/tools/outcome-tools.d.ts.map +1 -1
  47. package/dist/tools/pdf-tools.d.ts +1 -1
  48. package/dist/tools/pdf-tools.d.ts.map +1 -1
  49. package/dist/tools/phone-tools.d.ts +1 -1
  50. package/dist/tools/phone-tools.d.ts.map +1 -1
  51. package/dist/tools/search-tools.d.ts +1 -1
  52. package/dist/tools/search-tools.d.ts.map +1 -1
  53. package/dist/tools/system-tools.d.ts +1 -1
  54. package/dist/tools/system-tools.d.ts.map +1 -1
  55. package/dist/tools/vault-tools.d.ts +1 -1
  56. package/dist/tools/vault-tools.d.ts.map +1 -1
  57. package/package.json +7 -6
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Polpo Engine — the built-in agentic runtime.
3
3
  *
4
- * Uses @mariozechner/pi-agent-core Agent class for the agentic loop,
5
- * with pi-ai for multi-provider LLM abstraction.
4
+ * Uses Vercel AI SDK streamText in a manual loop for the agentic loop,
5
+ * with AI Gateway for multi-provider LLM abstraction.
6
6
  * Works with any LLM provider (Anthropic, OpenAI, Google, Groq, etc.)
7
7
  */
8
8
  import type { AgentConfig, AgentActivity, Task } from "../core/types.js";
@@ -14,7 +14,7 @@ export declare function createActivity(): AgentActivity;
14
14
  */
15
15
  export declare function buildSystemPrompt(agent: AgentConfig, cwd: string, polpoDir?: string, outputDir?: string, allowedPaths?: string[]): string;
16
16
  /**
17
- * Spawn an agent using Polpo's built-in engine (Pi Agent).
17
+ * Spawn an agent using Polpo's built-in engine (AI SDK streamText loop).
18
18
  *
19
19
  * This is the default execution path — used when no adapter is specified
20
20
  * on an agent config.
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/adapters/engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAwC,MAAM,kBAAkB,CAAC;AAC/G,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIpE,0CAA0C;AAC1C,wBAAgB,cAAc,IAAI,aAAa,CAQ9C;AA2MD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAoDzI;AA0DD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,WAAW,CA+S9G"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/adapters/engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAwC,MAAM,kBAAkB,CAAC;AAC/G,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIpE,0CAA0C;AAC1C,wBAAgB,cAAc,IAAI,aAAa,CAQ9C;AAiND;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAoDzI;AA4GD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,YAAY,GAAG,WAAW,CA4U9G"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Polpo Engine — the built-in agentic runtime.
3
3
  *
4
- * Uses @mariozechner/pi-agent-core Agent class for the agentic loop,
5
- * with pi-ai for multi-provider LLM abstraction.
4
+ * Uses Vercel AI SDK streamText in a manual loop for the agentic loop,
5
+ * with AI Gateway for multi-provider LLM abstraction.
6
6
  * Works with any LLM provider (Anthropic, OpenAI, Google, Groq, etc.)
7
7
  */
8
8
  import { resolveAgentVault } from "../vault/index.js";
@@ -17,14 +17,13 @@ export function createActivity() {
17
17
  lastUpdate: new Date().toISOString(),
18
18
  };
19
19
  }
20
- import { Agent } from "@mariozechner/pi-agent-core";
21
20
  import { join, sep } from "node:path";
22
- import { resolveModel, resolveApiKeyAsync, enforceModelAllowlist } from "../llm/pi-client.js";
21
+ import { streamText, generateText, jsonSchema, tool as aiTool, } from "ai";
22
+ import { resolveModel, enforceModelAllowlist, mapReasoningToProviderOptions } from "../llm/pi-client.js";
23
23
  import { createSystemTools, createAllTools } from "../tools/system-tools.js";
24
24
  import { loadAgentSkills } from "../llm/skills.js";
25
25
  import { nanoid } from "nanoid";
26
26
  import { compactIfNeeded } from "@polpo-ai/core";
27
- import { completeSimple } from "@mariozechner/pi-ai";
28
27
  /**
29
28
  * Build an "## Available Tools" section for the agent's system prompt.
30
29
  *
@@ -136,8 +135,49 @@ function buildPrompt(task) {
136
135
  parts.push(``, `IMPORTANT — Orchestration contract:`, `- You are being orchestrated by a supervisor. Complete the task autonomously and EXIT.`, `- Do NOT ask clarifying questions. Make reasonable decisions and proceed.`, `- You MUST terminate after completing your work. Never block indefinitely.`, `- Your session has a timeout. If you hang, you will be killed and the task will fail.`, ``, `CRITICAL — Bash tool rules:`, `- The bash tool has a default timeout of 30 seconds. Commands that exceed it are killed.`, `- For long commands (npm install, builds, etc.), pass an explicit timeout: {"command": "...", "timeout": 120000}`, `- NEVER run a server or long-lived process in the foreground. It will block forever and kill your session.`, `- To start a background server, ALWAYS use this exact pattern:`, ` {"command": "nohup python3 server.py > /tmp/server.log 2>&1 & echo \"PID=$!\"", "timeout": 5000}`, ` Then verify separately: {"command": "sleep 2 && curl -s --max-time 5 http://127.0.0.1:PORT/", "timeout": 10000}`, `- NEVER combine server start + verification in one command (e.g. "cmd & sleep 2 && lsof" WILL hang).`, `- NEVER use "lsof" or "netstat" to check if a server is running. Use "curl" instead.`, `- NEVER use "tail -f", "watch", or any command that runs forever.`, `- If a command times out, do NOT retry the same command. Analyze why it hung and fix the approach.`, ``, `CRITICAL — Outcome tracking:`, `When you produce artifacts (files, reports, data), the orchestrator attaches them to`, `task-done notifications (Telegram, Slack, etc.) and approval reviews.`, `Outcomes are NEVER auto-collected — you MUST explicitly register every deliverable.`, ``, `Use the register_outcome tool to declare artifacts as task outcomes:`, ` register_outcome({type: 'file', label: 'Sales Report', path: 'output/report.pdf'})`, ` register_outcome({type: 'media', label: 'Chart', path: 'charts/revenue.png'})`, ` register_outcome({type: 'url', label: 'Staging Deploy', url: 'https://staging.example.com'})`, ` register_outcome({type: 'text', label: 'Summary', text: 'Revenue increased 23%...'})`, ` register_outcome({type: 'json', label: 'Metrics', data: {revenue: 1234, growth: 0.23}})`, ``, `RULES:`, ` - ALWAYS call register_outcome for every artifact you produce — files, reports, screenshots,`, ` downloads, generated media, transcriptions, analysis results, URLs, data summaries`, ` - Producing a file (via write, pdf_create, bash, etc.) does NOT auto-register it as an outcome`, ` - Only register final deliverables — not intermediate/temporary files`, ` - If the task has expectedOutcomes defined, ensure you register matching outcomes`);
137
136
  return parts.join("\n");
138
137
  }
138
+ // ─── Tool Conversion ───────────────────────────────────
139
+ //
140
+ // Convert PolpoTool[] (TypeBox schema + execute) to AI SDK ToolSet
141
+ // (Record<string, Tool> with jsonSchema() + execute wrapper).
139
142
  /**
140
- * Spawn an agent using Polpo's built-in engine (Pi Agent).
143
+ * Convert an array of PolpoTool to an AI SDK ToolSet (Record<string, Tool>).
144
+ *
145
+ * Each PolpoTool uses TypeBox for its parameter schema (which produces JSON Schema).
146
+ * AI SDK tools use `jsonSchema()` to wrap raw JSON Schema objects.
147
+ * The execute function is wrapped to adapt the PolpoTool signature to AI SDK's.
148
+ */
149
+ function convertToolsToToolSet(polpoTools, abortSignal, onToolResult) {
150
+ const toolSet = {};
151
+ for (const pt of polpoTools) {
152
+ toolSet[pt.name] = aiTool({
153
+ description: pt.description,
154
+ inputSchema: jsonSchema(pt.parameters),
155
+ execute: async (args, { toolCallId }) => {
156
+ let result;
157
+ let isError = false;
158
+ try {
159
+ result = await pt.execute(toolCallId, args, abortSignal);
160
+ }
161
+ catch (err) {
162
+ isError = true;
163
+ result = {
164
+ content: [{ type: "text", text: err instanceof Error ? err.message : String(err) }],
165
+ details: {},
166
+ };
167
+ }
168
+ // Notify caller for activity tracking
169
+ onToolResult?.(pt.name, toolCallId, result, isError);
170
+ // Return text content for the LLM — AI SDK serializes the return value
171
+ return result.content
172
+ .map(c => c.type === "text" ? c.text : `[image: ${c.mimeType}]`)
173
+ .join("\n");
174
+ },
175
+ });
176
+ }
177
+ return toolSet;
178
+ }
179
+ /**
180
+ * Spawn an agent using Polpo's built-in engine (AI SDK streamText loop).
141
181
  *
142
182
  * This is the default execution path — used when no adapter is specified
143
183
  * on an agent config.
@@ -207,65 +247,10 @@ export function spawnEngine(agentConfig, task, cwd, ctx) {
207
247
  const codingTools = createSystemTools(cwd, agentConfig.allowedTools, effectiveAllowedPaths, outputDir, undefined);
208
248
  // Resolve reasoning level: agent config > global settings (via SpawnContext) > "off"
209
249
  const thinkingLevel = agentConfig.reasoning ?? ctx?.reasoning ?? "off";
210
- // Build the system prompt once for reuse in both the Agent and context compaction
250
+ // Build the system prompt once for reuse in both the agent loop and context compaction
211
251
  const systemPrompt = buildSystemPrompt(agentConfig, cwd, ctx?.polpoDir, outputDir, effectiveAllowedPaths);
212
- // Create the pi-agent-core Agent (starts with coding tools only; extended tools added before prompt)
213
- // Pass model.maxTokens to override pi-ai's 32K default cap, so each model uses its full output capacity.
214
- const agent = new Agent({
215
- getApiKey: (provider) => resolveApiKeyAsync(provider),
216
- // Context compaction: prune old tool outputs, then LLM-summarize if still over threshold.
217
- // Runs before every LLM call. Under threshold → zero overhead (just token estimation).
218
- transformContext: async (messages) => {
219
- const summarize = async (msgs, prompt) => {
220
- const apiKey = await resolveApiKeyAsync(model.provider);
221
- const response = await completeSimple(model, {
222
- systemPrompt: prompt,
223
- messages: msgs,
224
- }, apiKey ? { apiKey, maxTokens: model.maxTokens } : { maxTokens: model.maxTokens });
225
- return response.content
226
- .filter((c) => c.type === "text")
227
- .map((c) => c.text)
228
- .join("\n")
229
- .trim();
230
- };
231
- const result = await compactIfNeeded({
232
- systemPrompt,
233
- messages,
234
- tools: agent.state.tools,
235
- config: {
236
- contextWindow: model.contextWindow ?? 200_000,
237
- maxOutputTokens: model.maxTokens ?? 8192,
238
- },
239
- summarize,
240
- mode: "task",
241
- onCompaction: (event) => {
242
- handle.onTranscript?.({
243
- type: "compaction",
244
- phase: event.phase,
245
- tokensBefore: event.tokensBefore,
246
- tokensAfter: event.tokensAfter,
247
- tokensReclaimed: event.tokensReclaimed,
248
- messagesBefore: event.messagesBefore,
249
- messagesAfter: event.messagesAfter,
250
- toolOutputsPruned: event.toolOutputsPruned,
251
- summary: event.summary,
252
- });
253
- },
254
- });
255
- return result.compacted ? result.messages : messages;
256
- },
257
- initialState: {
258
- systemPrompt,
259
- model,
260
- thinkingLevel,
261
- maxTokens: model.maxTokens,
262
- tools: codingTools,
263
- messages: [],
264
- isStreaming: false,
265
- streamMessage: null,
266
- pendingToolCalls: new Set(),
267
- },
268
- });
252
+ // AbortController for the agent used to cancel the loop
253
+ const abortController = new AbortController();
269
254
  const handle = {
270
255
  agentName: agentConfig.name,
271
256
  taskId: task.id,
@@ -275,61 +260,55 @@ export function spawnEngine(agentConfig, task, cwd, ctx) {
275
260
  done: null, // set below
276
261
  isAlive: () => alive,
277
262
  kill: () => {
278
- agent.abort();
263
+ abortController.abort();
279
264
  alive = false;
280
265
  },
281
266
  };
282
267
  // Track turns for maxTurns enforcement
283
- let turnCount = 0;
284
268
  const maxTurns = agentConfig.maxTurns ?? 150;
285
- // Subscribe to agent events for activity tracking + transcript
286
- agent.subscribe((event) => {
287
- activity.lastUpdate = new Date().toISOString();
288
- switch (event.type) {
289
- case "message_end": {
290
- const msg = event.message;
291
- if (msg && "content" in msg && msg.role === "assistant") {
292
- // Accumulate token usage
293
- if ("usage" in msg && msg.usage && typeof msg.usage === "object") {
294
- const u = msg.usage;
295
- if (u.totalTokens)
296
- activity.totalTokens += u.totalTokens;
297
- }
298
- for (const block of msg.content) {
299
- if (block.type === "text") {
300
- activity.summary = block.text.slice(0, 200);
301
- handle.onTranscript?.({ type: "assistant", text: block.text });
302
- }
303
- if (block.type === "toolCall") {
304
- activity.toolCalls++;
305
- activity.lastTool = block.name;
306
- handle.onTranscript?.({
307
- type: "tool_use",
308
- tool: block.name,
309
- toolId: block.id,
310
- input: block.arguments,
311
- });
312
- }
313
- }
314
- }
315
- break;
269
+ // Provider options for reasoning/thinking
270
+ // Cast needed: mapReasoningToProviderOptions returns Record<string, Record<string, unknown>>
271
+ // but AI SDK expects Record<string, JSONObject> (JSONValue values). The values are always
272
+ // JSON-serializable (numbers, strings, objects), so this cast is safe.
273
+ const providerOptions = mapReasoningToProviderOptions(model.provider, thinkingLevel, model.maxTokens);
274
+ // Run the agent and capture result
275
+ handle.done = (async () => {
276
+ try {
277
+ // Resolve vault credentials (async) then rebuild tools with vault included
278
+ const vaultEntries = await ctx?.vaultStore?.getAllForAgent(agentConfig.name);
279
+ const vault = resolveAgentVault(vaultEntries);
280
+ // Rebuild tools with vault resolved
281
+ let allPolpoTools = createSystemTools(cwd, agentConfig.allowedTools, effectiveAllowedPaths, outputDir, vault);
282
+ if (hasExtendedTools) {
283
+ allPolpoTools = await createAllTools({
284
+ cwd,
285
+ allowedTools: agentConfig.allowedTools,
286
+ allowedPaths: effectiveAllowedPaths,
287
+ browserSession: agentConfig.name,
288
+ browserProfileDir,
289
+ vault,
290
+ emailAllowedDomains: agentConfig.emailAllowedDomains ?? ctx?.emailAllowedDomains,
291
+ outputDir,
292
+ });
316
293
  }
317
- case "tool_execution_end": {
294
+ // Convert PolpoTool[] to AI SDK ToolSet with activity tracking
295
+ const toolSet = convertToolsToToolSet(allPolpoTools, abortController.signal, (toolName, toolCallId, result, isError) => {
296
+ activity.lastUpdate = new Date().toISOString();
318
297
  // Track file operations from tool details
319
- const details = event.result?.details;
298
+ const details = result.details;
320
299
  if (details?.path) {
321
300
  const filePath = details.path;
322
301
  activity.lastFile = filePath;
323
- if (event.toolName === "write" && !activity.filesCreated.includes(filePath)) {
302
+ if (toolName === "write" && !activity.filesCreated.includes(filePath)) {
324
303
  activity.filesCreated.push(filePath);
325
304
  }
326
- if (event.toolName === "edit" && !activity.filesEdited.includes(filePath)) {
305
+ if (toolName === "edit" && !activity.filesEdited.includes(filePath)) {
327
306
  activity.filesEdited.push(filePath);
328
307
  }
329
308
  }
330
309
  // Collect outcomes from explicit register_outcome calls
331
- if (!event.isError && details) {
332
- const outcome = collectOutcome(event.toolName, details);
310
+ if (!isError && details) {
311
+ const outcome = collectOutcome(toolName, details);
333
312
  if (outcome) {
334
313
  if (!handle.outcomes)
335
314
  handle.outcomes = [];
@@ -337,62 +316,137 @@ export function spawnEngine(agentConfig, task, cwd, ctx) {
337
316
  }
338
317
  }
339
318
  // Emit tool result transcript
340
- const resultText = event.result?.content?.map((c) => c.text ?? "").join("") ?? "";
319
+ const resultText = result.content
320
+ .map((c) => c.text ?? "")
321
+ .join("");
341
322
  handle.onTranscript?.({
342
323
  type: "tool_result",
343
- toolId: event.toolCallId,
344
- tool: event.toolName,
324
+ toolId: toolCallId,
325
+ tool: toolName,
345
326
  content: resultText.slice(0, 2000),
346
- isError: event.isError,
347
- });
348
- break;
349
- }
350
- case "turn_end": {
351
- turnCount++;
352
- if (turnCount >= maxTurns) {
353
- agent.abort();
354
- }
355
- break;
356
- }
357
- }
358
- });
359
- // Run the agent and capture result
360
- handle.done = (async () => {
361
- try {
362
- // Resolve vault credentials (async) — then rebuild tools with vault included
363
- const vaultEntries = await ctx?.vaultStore?.getAllForAgent(agentConfig.name);
364
- const vault = resolveAgentVault(vaultEntries);
365
- // Rebuild tools with vault resolved
366
- let allTools = createSystemTools(cwd, agentConfig.allowedTools, effectiveAllowedPaths, outputDir, vault);
367
- if (hasExtendedTools) {
368
- allTools = await createAllTools({
369
- cwd,
370
- allowedTools: agentConfig.allowedTools,
371
- allowedPaths: effectiveAllowedPaths,
372
- browserSession: agentConfig.name,
373
- browserProfileDir,
374
- vault,
375
- emailAllowedDomains: agentConfig.emailAllowedDomains ?? ctx?.emailAllowedDomains,
376
- outputDir,
327
+ isError,
377
328
  });
378
- }
379
- agent.setTools(allTools);
329
+ });
330
+ // Build the user prompt
380
331
  const prompt = buildPrompt(task);
381
- await agent.prompt(prompt);
382
- // Extract final text from the last assistant message
383
- const messages = agent.state.messages;
332
+ // Build the summarize function for context compaction (uses AI SDK generateText)
333
+ const summarize = async (msgs, compactionPrompt) => {
334
+ const response = await generateText({
335
+ model: model.aiModel,
336
+ system: compactionPrompt,
337
+ messages: msgs,
338
+ maxOutputTokens: model.maxTokens,
339
+ abortSignal: abortController.signal,
340
+ providerOptions,
341
+ });
342
+ return response.text;
343
+ };
344
+ // ─── Manual Agent Loop ───────────────────────────────
345
+ //
346
+ // Each iteration: context compaction → streamText (1 step) → process stream → append messages.
347
+ // The loop continues until the model finishes without tool calls (finishReason !== "tool-calls")
348
+ // or maxTurns is reached.
349
+ let messages = [{ role: "user", content: prompt }];
384
350
  let resultText = "";
385
- for (let i = messages.length - 1; i >= 0; i--) {
386
- const msg = messages[i];
387
- if (msg && "role" in msg && msg.role === "assistant" && "content" in msg) {
388
- for (const block of msg.content) {
389
- if (block.type === "text") {
390
- resultText = block.text;
351
+ for (let turn = 0; turn < maxTurns; turn++) {
352
+ if (abortController.signal.aborted)
353
+ break;
354
+ // Context compaction prune old tool outputs, then LLM-summarize if still over threshold.
355
+ // Under threshold → zero overhead (just token estimation).
356
+ const compactionResult = await compactIfNeeded({
357
+ systemPrompt,
358
+ messages,
359
+ tools: Object.values(toolSet).map(t => ({ description: t.description ?? "" })),
360
+ config: {
361
+ contextWindow: model.contextWindow ?? 200_000,
362
+ maxOutputTokens: model.maxTokens ?? 8192,
363
+ },
364
+ summarize,
365
+ mode: "task",
366
+ onCompaction: (event) => {
367
+ handle.onTranscript?.({
368
+ type: "compaction",
369
+ phase: event.phase,
370
+ tokensBefore: event.tokensBefore,
371
+ tokensAfter: event.tokensAfter,
372
+ tokensReclaimed: event.tokensReclaimed,
373
+ messagesBefore: event.messagesBefore,
374
+ messagesAfter: event.messagesAfter,
375
+ toolOutputsPruned: event.toolOutputsPruned,
376
+ summary: event.summary,
377
+ });
378
+ },
379
+ });
380
+ if (compactionResult.compacted) {
381
+ messages = compactionResult.messages;
382
+ }
383
+ // Single LLM call (streamText default: stopWhen = stepCountIs(1))
384
+ // This does one step: LLM generates text/tool-calls → tools are executed automatically
385
+ const stream = streamText({
386
+ model: model.aiModel,
387
+ system: systemPrompt,
388
+ messages,
389
+ tools: toolSet,
390
+ maxOutputTokens: model.maxTokens,
391
+ abortSignal: abortController.signal,
392
+ providerOptions,
393
+ onStepFinish: async ({ usage }) => {
394
+ // Accumulate token usage
395
+ if (usage) {
396
+ activity.totalTokens += (usage.totalTokens ?? 0);
397
+ }
398
+ activity.lastUpdate = new Date().toISOString();
399
+ },
400
+ });
401
+ // Process the full stream for transcript events
402
+ let stepAssistantText = "";
403
+ for await (const part of stream.fullStream) {
404
+ switch (part.type) {
405
+ case "text-delta": {
406
+ stepAssistantText += part.text;
407
+ break;
408
+ }
409
+ case "tool-call": {
410
+ // Track tool call in activity
411
+ activity.toolCalls++;
412
+ activity.lastTool = part.toolName;
413
+ activity.lastUpdate = new Date().toISOString();
414
+ handle.onTranscript?.({
415
+ type: "tool_use",
416
+ tool: part.toolName,
417
+ toolId: part.toolCallId,
418
+ input: part.input,
419
+ });
420
+ break;
421
+ }
422
+ // tool-result and tool-error are handled in the convertToolsToToolSet callback
423
+ case "error": {
424
+ handle.onTranscript?.({
425
+ type: "error",
426
+ message: part.error instanceof Error ? part.error.message : String(part.error),
427
+ });
391
428
  break;
392
429
  }
393
430
  }
394
- if (resultText)
395
- break;
431
+ }
432
+ // Emit assistant text transcript
433
+ if (stepAssistantText) {
434
+ activity.summary = stepAssistantText.slice(0, 200);
435
+ handle.onTranscript?.({ type: "assistant", text: stepAssistantText });
436
+ }
437
+ // Get the finish reason and response messages
438
+ const finishReason = await stream.finishReason;
439
+ const responseMessages = (await stream.response).messages;
440
+ // Append the response messages to history (assistant message + tool results if any)
441
+ messages.push(...responseMessages);
442
+ // If the model finished without requesting tool calls, we're done
443
+ if (finishReason !== "tool-calls") {
444
+ resultText = await stream.text;
445
+ break;
446
+ }
447
+ // If we completed the last allowed turn with tool calls still pending, grab what text we have
448
+ if (turn === maxTurns - 1) {
449
+ resultText = await stream.text;
396
450
  }
397
451
  }
398
452
  alive = false;
@@ -424,7 +478,7 @@ export function spawnEngine(agentConfig, task, cwd, ctx) {
424
478
  })();
425
479
  return handle;
426
480
  }
427
- // ─── Outcome Collection ─────────────────────────────
481
+ // ─── Outcome Collection ────���────────────────────────
428
482
  //
429
483
  // Outcomes are ONLY created via the `register_outcome` tool.
430
484
  // The agent explicitly decides what artifacts are deliverables.
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/adapters/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/adapters/engine.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,17 @@
1
1
  /**
2
- * G-Eval LLM-as-Judge review using pi-ai.
2
+ * G-Eval LLM-as-Judge review using Vercel AI SDK.
3
3
  *
4
4
  * Architecture: 2-phase review for reliability.
5
5
  *
6
- * Phase 1 — EXPLORATION (tool loop)
6
+ * Phase 1 — EXPLORATION (tool loop via generateText + maxSteps)
7
7
  * The reviewer explores the codebase using read_file, glob, grep.
8
- * No submit_review tool is available the LLM just investigates freely.
8
+ * AI SDK handles the tool loop internally via `stopWhen: stepCountIs(20)`.
9
9
  * After exploration, we collect all assistant text as the "analysis".
10
10
  *
11
- * Phase 2 — SCORING (forced structured output)
12
- * A separate LLM call receives the full analysis from Phase 1
13
- * and MUST call submit_review. We force this via toolChoice where
14
- * supported, and via strong prompting + retry as fallback.
11
+ * Phase 2 — SCORING (structured output via Output.object)
12
+ * A separate generateText call receives the full analysis from Phase 1
13
+ * and produces structured scores via Output.object() the provider
14
+ * enforces JSON schema compliance, zero manual parsing needed.
15
15
  *
16
16
  * This separation makes the system robust: exploration failures don't
17
17
  * block scoring, and scoring failures are isolated from exploration.
@@ -25,7 +25,7 @@ export type LLMQueryFn = (prompt: string, cwd: string) => Promise<string>;
25
25
  * Run a G-Eval LLM-as-Judge review (2-phase architecture).
26
26
  *
27
27
  * Phase 1: Each reviewer explores the codebase with tools (read_file, glob, grep).
28
- * Phase 2: A forced scoring call extracts structured scores from the analysis.
28
+ * Phase 2: Structured scoring via Output.object() extracts validated scores.
29
29
  *
30
30
  * Runs 3 independent reviewers in parallel (multi-evaluator consensus).
31
31
  * Falls back to single-reviewer if <2 succeed.
@@ -1 +1 @@
1
- {"version":3,"file":"llm-review.d.ts","sourceRoot":"","sources":["../../src/assessment/llm-review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAMH,OAAO,KAAK,EAAE,eAAe,EAAiC,WAAW,EAAE,aAAa,EAAmB,MAAM,kBAAkB,CAAC;AAKpI,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvD,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAk0B1E;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,eAAe,EAC5B,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAClC,OAAO,CAAC,EAAE,aAAa,EACvB,SAAS,CAAC,EAAE,cAAc,GACzB,OAAO,CAAC,WAAW,CAAC,CAuEtB"}
1
+ {"version":3,"file":"llm-review.d.ts","sourceRoot":"","sources":["../../src/assessment/llm-review.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAYH,OAAO,KAAK,EAAE,eAAe,EAAiC,WAAW,EAAE,aAAa,EAAmB,MAAM,kBAAkB,CAAC;AAOpI,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAkrB1E;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,WAAW,EAAE,eAAe,EAC5B,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,EAClC,OAAO,CAAC,EAAE,aAAa,EACvB,SAAS,CAAC,EAAE,cAAc,GACzB,OAAO,CAAC,WAAW,CAAC,CAuEtB"}