open-agents-ai 0.187.444 → 0.187.445

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.
package/dist/index.js CHANGED
@@ -531832,6 +531832,7 @@ Recent tasks: ${ctx3.entries.slice(-3).map(
531832
531832
  (e2) => `[${e2.completed ? "done" : "partial"}] ${normalizeSessionText(e2.summary || e2.task, 80)}`
531833
531833
  ).join(", ")}
531834
531834
  </session-recap>` : "";
531835
+ clearTaskHandoff(repoRoot);
531835
531836
  return handoffPrompt + baseCtx;
531836
531837
  }
531837
531838
  if (!ctx3 || ctx3.entries.length === 0) return null;
@@ -584718,6 +584719,10 @@ ${entry.fullContent}`
584718
584719
  const filesTouched = /* @__PURE__ */ new Set();
584719
584720
  const sessionToolsUsed = /* @__PURE__ */ new Set();
584720
584721
  const toolSequence = [];
584722
+ const memoriesRecalled = [];
584723
+ const validationStatus = { testsRan: false, testsPassed: false, buildSucceeded: true };
584724
+ const taskAccomplishments = [];
584725
+ const taskFindings = [];
584721
584726
  const editSessionId = `task-${Date.now()}`;
584722
584727
  const editHistory = createEditHistoryLogger(repoRoot, editSessionId);
584723
584728
  let lastToolCall = null;
@@ -584779,6 +584784,13 @@ ${entry.fullContent}`
584779
584784
  tool: event.toolName ?? "unknown",
584780
584785
  argKeys: Object.keys(event.toolArgs ?? {})
584781
584786
  });
584787
+ if (event.toolName === "memory_read" || event.toolName === "memory_search") {
584788
+ const topic = String(event.toolArgs?.topic ?? event.toolArgs?.query ?? "");
584789
+ const key = String(event.toolArgs?.key ?? "");
584790
+ if (topic) {
584791
+ memoriesRecalled.push({ topic, key, relevance: "accessed during task" });
584792
+ }
584793
+ }
584782
584794
  if (event.toolArgs?.path && typeof event.toolArgs.path === "string") {
584783
584795
  const name10 = event.toolName ?? "";
584784
584796
  if (name10 === "file_write" || name10 === "file_edit" || name10 === "file_patch" || name10 === "batch_edit") {
@@ -584832,6 +584844,16 @@ ${entry.fullContent}`
584832
584844
  editHistory.logToolCall(lastToolCall.name, lastToolCall.args, event.success ?? false);
584833
584845
  lastToolCall = null;
584834
584846
  }
584847
+ if (event.toolName === "shell" && event.content) {
584848
+ const output = String(event.content);
584849
+ if (/npm\s+test|pnpm\s+test|yarn\s+test|vitest|jest|pytest/i.test(output)) {
584850
+ validationStatus.testsRan = true;
584851
+ validationStatus.testsPassed = (event.success ?? false) && !/FAIL|Error|failed/i.test(output);
584852
+ }
584853
+ if (/npm\s+run\s+build|pnpm\s+build|tsc|webpack|rollup/i.test(output)) {
584854
+ validationStatus.buildSucceeded = event.success ?? false;
584855
+ }
584856
+ }
584835
584857
  getActivityFeed().push({
584836
584858
  ts: Date.now(),
584837
584859
  source: "main",
@@ -585263,6 +585285,24 @@ When done, either call task_complete with your answer, or use FINAL_VAR(variable
585263
585285
  } catch {
585264
585286
  }
585265
585287
  try {
585288
+ const accomplishmentPatterns = [
585289
+ /(?:fixed|implemented|added|updated|created|refactored|resolved)\s+[^\n.]+/gi,
585290
+ /(?:✓|✅|✔)\s+[^\n]+/g
585291
+ ];
585292
+ const extractedAccomplishments = [];
585293
+ for (const pattern of accomplishmentPatterns) {
585294
+ const matches = result.summary.match(pattern) || [];
585295
+ extractedAccomplishments.push(...matches.slice(0, 5).map((m2) => m2.trim()));
585296
+ }
585297
+ const findingPatterns = [
585298
+ /(?:found|discovered|identified|detected|observed)\s+[^\n.]+/gi,
585299
+ /(?:pattern|issue|bug|regression|gap):\s*[^\n]+/gi
585300
+ ];
585301
+ const extractedFindings = [];
585302
+ for (const pattern of findingPatterns) {
585303
+ const matches = result.summary.match(pattern) || [];
585304
+ extractedFindings.push(...matches.slice(0, 3).map((m2) => m2.trim()));
585305
+ }
585266
585306
  const handoff = {
585267
585307
  base: {
585268
585308
  savedAt: (/* @__PURE__ */ new Date()).toISOString(),
@@ -585275,22 +585315,17 @@ When done, either call task_complete with your answer, or use FINAL_VAR(variable
585275
585315
  model: config.model,
585276
585316
  source: "task_complete"
585277
585317
  },
585278
- accomplishments: [],
585279
- // Populated by agent if it provides structured output
585318
+ accomplishments: extractedAccomplishments.length > 0 ? extractedAccomplishments : [`Completed task in ${result.turns} turns with ${result.toolCalls} tool calls`],
585280
585319
  files: Array.from(filesTouched).slice(0, 20).map((f2) => ({
585281
585320
  path: f2,
585282
585321
  operation: "modified"
585283
585322
  })),
585284
- memories: [],
585285
- // Populated from memory recalls during task
585286
- findings: [],
585287
- // Populated by agent
585323
+ memories: memoriesRecalled.slice(0, 10),
585324
+ findings: extractedFindings.length > 0 ? extractedFindings : [],
585288
585325
  validation: {
585289
- testsRan: false,
585290
- // Would need to track during task
585291
- testsPassed: false,
585292
- buildSucceeded: true
585293
- // Assume success if task completed
585326
+ testsRan: validationStatus.testsRan,
585327
+ testsPassed: validationStatus.testsPassed,
585328
+ buildSucceeded: validationStatus.buildSucceeded
585294
585329
  },
585295
585330
  eligible: result.completed,
585296
585331
  handoffAt: (/* @__PURE__ */ new Date()).toISOString()
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.187.444",
3
+ "version": "0.187.445",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "open-agents-ai",
9
- "version": "0.187.444",
9
+ "version": "0.187.445",
10
10
  "hasInstallScript": true,
11
11
  "license": "CC-BY-NC-4.0",
12
12
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-agents-ai",
3
- "version": "0.187.444",
3
+ "version": "0.187.445",
4
4
  "description": "AI coding agent powered by open-source models (Ollama/vLLM) — interactive TUI with agentic tool-calling loop",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",