@polpo-ai/core 0.11.1 → 0.12.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 (109) hide show
  1. package/dist/__tests__/mission-store.test.js +9 -13
  2. package/dist/__tests__/mission-store.test.js.map +1 -1
  3. package/dist/adapter.d.ts +10 -19
  4. package/dist/adapter.d.ts.map +1 -1
  5. package/dist/adapter.js +0 -7
  6. package/dist/adapter.js.map +1 -1
  7. package/dist/approval-manager.js +11 -11
  8. package/dist/approval-manager.js.map +1 -1
  9. package/dist/assessment-orchestrator.d.ts +1 -1
  10. package/dist/assessment-orchestrator.js +46 -46
  11. package/dist/assessment-orchestrator.js.map +1 -1
  12. package/dist/context-compactor.d.ts +1 -0
  13. package/dist/context-compactor.d.ts.map +1 -1
  14. package/dist/context-compactor.js.map +1 -1
  15. package/dist/escalation-manager.js +8 -8
  16. package/dist/escalation-manager.js.map +1 -1
  17. package/dist/events.d.ts +1 -25
  18. package/dist/events.d.ts.map +1 -1
  19. package/dist/hooks.d.ts +15 -9
  20. package/dist/hooks.d.ts.map +1 -1
  21. package/dist/hooks.js.map +1 -1
  22. package/dist/in-memory-stores.d.ts +21 -0
  23. package/dist/in-memory-stores.d.ts.map +1 -0
  24. package/dist/in-memory-stores.js +43 -0
  25. package/dist/in-memory-stores.js.map +1 -0
  26. package/dist/index.d.ts +2 -2
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +1 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/loop/hooks.d.ts +10 -28
  31. package/dist/loop/hooks.d.ts.map +1 -1
  32. package/dist/loop/hooks.js +2 -83
  33. package/dist/loop/hooks.js.map +1 -1
  34. package/dist/loop/step-helpers.d.ts +20 -0
  35. package/dist/loop/step-helpers.d.ts.map +1 -0
  36. package/dist/loop/step-helpers.js +69 -0
  37. package/dist/loop/step-helpers.js.map +1 -0
  38. package/dist/mission-executor.d.ts +16 -22
  39. package/dist/mission-executor.d.ts.map +1 -1
  40. package/dist/mission-executor.js +204 -459
  41. package/dist/mission-executor.js.map +1 -1
  42. package/dist/mission-gating.d.ts +89 -0
  43. package/dist/mission-gating.d.ts.map +1 -0
  44. package/dist/mission-gating.js +281 -0
  45. package/dist/mission-gating.js.map +1 -0
  46. package/dist/mission-store.d.ts +14 -8
  47. package/dist/mission-store.d.ts.map +1 -1
  48. package/dist/mission-store.js +19 -8
  49. package/dist/mission-store.js.map +1 -1
  50. package/dist/orchestrator-context.d.ts +1 -1
  51. package/dist/orchestrator-context.d.ts.map +1 -1
  52. package/dist/orchestrator-engine.d.ts +6 -6
  53. package/dist/orchestrator-engine.d.ts.map +1 -1
  54. package/dist/orchestrator-engine.js +10 -10
  55. package/dist/orchestrator-engine.js.map +1 -1
  56. package/dist/playbook-logic.d.ts +1 -1
  57. package/dist/playbook-logic.js +1 -1
  58. package/dist/scheduler.js +1 -1
  59. package/dist/scheduler.js.map +1 -1
  60. package/dist/schemas.d.ts +2 -2
  61. package/dist/session-store.d.ts +0 -2
  62. package/dist/session-store.d.ts.map +1 -1
  63. package/dist/session-store.js.map +1 -1
  64. package/dist/sla-monitor.js +3 -3
  65. package/dist/sla-monitor.js.map +1 -1
  66. package/dist/task-manager.d.ts +1 -1
  67. package/dist/task-manager.d.ts.map +1 -1
  68. package/dist/task-manager.js +37 -37
  69. package/dist/task-manager.js.map +1 -1
  70. package/dist/task-runner.d.ts.map +1 -1
  71. package/dist/task-runner.js +19 -36
  72. package/dist/task-runner.js.map +1 -1
  73. package/dist/task-store.d.ts +5 -19
  74. package/dist/task-store.d.ts.map +1 -1
  75. package/dist/tool-types.d.ts +0 -2
  76. package/dist/tool-types.d.ts.map +1 -1
  77. package/dist/types/agent.d.ts +186 -0
  78. package/dist/types/agent.d.ts.map +1 -0
  79. package/dist/types/agent.js +23 -0
  80. package/dist/types/agent.js.map +1 -0
  81. package/dist/types/assessment.d.ts +134 -0
  82. package/dist/types/assessment.d.ts.map +1 -0
  83. package/dist/types/assessment.js +18 -0
  84. package/dist/types/assessment.js.map +1 -0
  85. package/dist/types/config.d.ts +193 -0
  86. package/dist/types/config.d.ts.map +1 -0
  87. package/dist/types/config.js +8 -0
  88. package/dist/types/config.js.map +1 -0
  89. package/dist/types/mission.d.ts +226 -0
  90. package/dist/types/mission.d.ts.map +1 -0
  91. package/dist/types/mission.js +6 -0
  92. package/dist/types/mission.js.map +1 -0
  93. package/dist/types/notifications.d.ts +162 -0
  94. package/dist/types/notifications.d.ts.map +1 -0
  95. package/dist/types/notifications.js +6 -0
  96. package/dist/types/notifications.js.map +1 -0
  97. package/dist/types/task.d.ts +191 -0
  98. package/dist/types/task.d.ts.map +1 -0
  99. package/dist/types/task.js +5 -0
  100. package/dist/types/task.js.map +1 -0
  101. package/dist/types.d.ts +17 -1150
  102. package/dist/types.d.ts.map +1 -1
  103. package/dist/types.js +18 -31
  104. package/dist/types.js.map +1 -1
  105. package/package.json +1 -1
  106. package/dist/attachment-store.d.ts +0 -42
  107. package/dist/attachment-store.d.ts.map +0 -1
  108. package/dist/attachment-store.js +0 -13
  109. package/dist/attachment-store.js.map +0 -1
@@ -6,7 +6,7 @@ function storeWithMissions() {
6
6
  return {
7
7
  getMission: async (id) => byId.get(id),
8
8
  getMissionByName: async (name) => [...byId.values()].find((m) => m.name === name),
9
- getAllMissions: async () => [...byId.values()],
9
+ listMissions: async () => [...byId.values()],
10
10
  };
11
11
  }
12
12
  function storeWithoutMissions() {
@@ -17,14 +17,14 @@ describe("taskStoreMissionAdapter", () => {
17
17
  const withMissions = taskStoreMissionAdapter(storeWithMissions());
18
18
  expect((await withMissions.getMission("m1"))?.name).toBe("Launch");
19
19
  expect((await withMissions.getMissionByName("Launch"))?.id).toBe("m1");
20
- expect(await withMissions.getAllMissions()).toHaveLength(1);
20
+ expect(await withMissions.listMissions()).toHaveLength(1);
21
21
  const without = taskStoreMissionAdapter(storeWithoutMissions());
22
22
  expect(await without.getMission("m1")).toBeUndefined();
23
- expect(await without.getAllMissions()).toEqual([]);
23
+ expect(await without.listMissions()).toEqual([]);
24
24
  });
25
25
  it("throws descriptive errors for writes on stores without mission support", async () => {
26
26
  const adapter = taskStoreMissionAdapter(storeWithoutMissions());
27
- await expect(adapter.saveMission({})).rejects.toThrow("Store does not support missions");
27
+ await expect(adapter.createMission({})).rejects.toThrow("Store does not support missions");
28
28
  await expect(adapter.updateMission("m1", {})).rejects.toThrow("Store does not support missions");
29
29
  await expect(adapter.deleteMission("m1")).rejects.toThrow("Store does not support missions");
30
30
  });
@@ -36,22 +36,18 @@ describe("taskStoreMissionAdapter", () => {
36
36
  describe("resolveMissionStore", () => {
37
37
  it("prefers the explicit missionStore port", async () => {
38
38
  const explicit = { getMission: async () => mission("mx", "Explicit") };
39
- const resolved = resolveMissionStore({ missionStore: explicit, registry: storeWithMissions() });
39
+ const resolved = resolveMissionStore({ missionStore: explicit, taskStore: storeWithMissions() });
40
40
  expect((await resolved.getMission("whatever"))?.name).toBe("Explicit");
41
41
  });
42
42
  it("falls back to the task-store adapter", async () => {
43
- const resolved = resolveMissionStore({ registry: storeWithMissions() });
43
+ const resolved = resolveMissionStore({ taskStore: storeWithMissions() });
44
44
  expect((await resolved.getMission("m1"))?.name).toBe("Launch");
45
45
  });
46
46
  });
47
- describe("resolveMissionForTask — legacy fallback in one place", () => {
47
+ describe("resolveMissionForTask", () => {
48
48
  const missions = taskStoreMissionAdapter(storeWithMissions());
49
- it("prefers the missionId FK", async () => {
50
- const m = await resolveMissionForTask(missions, { missionId: "m1", group: "ignored" });
51
- expect(m?.id).toBe("m1");
52
- });
53
- it("falls back to group-name lookup for legacy tasks", async () => {
54
- const m = await resolveMissionForTask(missions, { group: "Launch" });
49
+ it("resolves via the missionId FK", async () => {
50
+ const m = await resolveMissionForTask(missions, { missionId: "m1" });
55
51
  expect(m?.id).toBe("m1");
56
52
  });
57
53
  it("returns undefined for tasks outside any mission", async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"mission-store.test.js","sourceRoot":"","sources":["../../src/__tests__/mission-store.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mission-store.test.js","sourceRoot":"","sources":["../../src/__tests__/mission-store.test.ts"],"names":[],"mappings":"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"}
package/dist/adapter.d.ts CHANGED
@@ -1,13 +1,8 @@
1
- /**
2
- * Agent adapter type definitions.
3
- * Pure interfaces no runtime dependencies.
4
- *
5
- * SpawnContext uses generic types for vault/whatsapp to avoid
6
- * coupling @polpo-ai/core to specific runtime implementations.
7
- */
8
- import type { AgentActivity, TaskResult, TaskOutcome, ReasoningLevel } from "./types.js";
9
- import type { FileSystem } from "./filesystem.js";
10
- import type { Shell } from "./shell.js";
1
+ import type { AgentActivity, TaskResult, TaskOutcome, ReasoningLevel } from "@polpo-ai/core/types";
2
+ import type { VaultStore } from "@polpo-ai/core/vault-store";
3
+ import type { MemoryStore } from "@polpo-ai/core/memory-store";
4
+ import type { FileSystem } from "@polpo-ai/core/filesystem";
5
+ import type { Shell } from "@polpo-ai/core/shell";
11
6
  /**
12
7
  * Handle returned by the engine after spawning an agent.
13
8
  * The orchestrator uses this to monitor and control the agent.
@@ -53,19 +48,15 @@ export interface SpawnContext {
53
48
  emailAllowedDomains?: string[];
54
49
  /** Global reasoning level from settings — used as fallback when agent doesn't specify one. */
55
50
  reasoning?: ReasoningLevel;
56
- /** Encrypted vault store — runtime-specific, provided by the shell layer. */
57
- vaultStore?: unknown;
58
- /** WhatsApp message store — runtime-specific, provided by the shell layer. */
59
- whatsappStore?: unknown;
60
- /** WhatsApp send function — runtime-specific, provided by the shell layer. */
61
- whatsappSendMessage?: (jid: string, text: string) => Promise<string | undefined>;
51
+ /** Vault store — for resolving agent credentials at runtime. */
52
+ vaultStore?: VaultStore;
53
+ /** Memory store — for agent-scoped memory_* tools. */
54
+ memoryStore?: MemoryStore;
62
55
  /** FileSystem implementation — created by the orchestrator, passed down to tools. */
63
56
  fs?: FileSystem;
64
57
  /** Shell implementation — created by the orchestrator, passed down to tools. */
65
58
  shell?: Shell;
66
- /** LLM gateway configuration — passed per-request for gateway routing. */
59
+ /** LLM gateway configuration — passed per-request for multi-tenant support. */
67
60
  gatewayConfig?: unknown;
68
- /** MemoryStore — passed down so memory_* tools can scope to the agent. */
69
- memoryStore?: unknown;
70
61
  }
71
62
  //# sourceMappingURL=adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,QAAQ,EAAE,aAAa,CAAC;IACxB,4DAA4D;IAC5D,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1B,0CAA0C;IAC1C,OAAO,IAAI,OAAO,CAAC;IACnB,6BAA6B;IAC7B,IAAI,IAAI,IAAI,CAAC;IACb;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACxD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,wDAAwD;AACxD,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,QAAQ,EAAE,MAAM,CAAC;IACjB,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,8FAA8F;IAC9F,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,6EAA6E;IAC7E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8EAA8E;IAC9E,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACjF,qFAAqF;IACrF,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,gFAAgF;IAChF,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,0EAA0E;IAC1E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,aAAa,EAAQ,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0DAA0D;IAC1D,QAAQ,EAAE,aAAa,CAAC;IACxB,4DAA4D;IAC5D,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAC1B,0CAA0C;IAC1C,OAAO,IAAI,OAAO,CAAC;IACnB,6BAA6B;IAC7B,IAAI,IAAI,IAAI,CAAC;IACb;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACxD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,wDAAwD;AACxD,MAAM,WAAW,YAAY;IAC3B,gFAAgF;IAChF,QAAQ,EAAE,MAAM,CAAC;IACjB,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,8FAA8F;IAC9F,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,gEAAgE;IAChE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,sDAAsD;IACtD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,qFAAqF;IACrF,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,gFAAgF;IAChF,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,+EAA+E;IAC/E,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB"}
package/dist/adapter.js CHANGED
@@ -1,9 +1,2 @@
1
- /**
2
- * Agent adapter type definitions.
3
- * Pure interfaces — no runtime dependencies.
4
- *
5
- * SpawnContext uses generic types for vault/whatsapp to avoid
6
- * coupling @polpo-ai/core to specific runtime implementations.
7
- */
8
1
  export {};
9
2
  //# sourceMappingURL=adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":""}
@@ -72,7 +72,7 @@ export class ApprovalManager {
72
72
  const taskId = this.extractTaskId(ctx.data);
73
73
  if (taskId) {
74
74
  // Fire-and-forget async transition
75
- this.ctx.registry.transition(taskId, "awaiting_approval").catch(() => {
75
+ this.ctx.taskStore.transition(taskId, "awaiting_approval").catch(() => {
76
76
  /* Task may already be in a state that doesn't allow this transition */
77
77
  });
78
78
  }
@@ -115,7 +115,7 @@ export class ApprovalManager {
115
115
  return null;
116
116
  const gate = this.ctx.config.settings.approvalGates?.find(g => g.id === request.gateId);
117
117
  const maxRevisions = gate?.maxRevisions ?? 3;
118
- const task = await this.ctx.registry.getTask(request.taskId);
118
+ const task = await this.ctx.taskStore.getTask(request.taskId);
119
119
  if (!task)
120
120
  return null;
121
121
  const currentCount = task.revisionCount ?? 0;
@@ -128,11 +128,11 @@ export class ApprovalManager {
128
128
  await this.store.upsert(request);
129
129
  this.clearTimer(requestId);
130
130
  const newCount = currentCount + 1;
131
- await this.ctx.registry.updateTask(request.taskId, { revisionCount: newCount });
131
+ await this.ctx.taskStore.updateTask(request.taskId, { revisionCount: newCount });
132
132
  const separator = "\n\n---\n";
133
133
  const feedbackBlock = `**Rejection #${newCount} feedback:** ${feedback}`;
134
134
  const updatedDescription = task.description + separator + feedbackBlock;
135
- await this.ctx.registry.updateTask(request.taskId, { description: updatedDescription });
135
+ await this.ctx.taskStore.updateTask(request.taskId, { description: updatedDescription });
136
136
  this.ctx.emitter.emit("approval:rejected", {
137
137
  requestId,
138
138
  taskId: request.taskId,
@@ -140,9 +140,9 @@ export class ApprovalManager {
140
140
  rejectionCount: newCount,
141
141
  resolvedBy: request.resolvedBy,
142
142
  });
143
- await this.ctx.registry.updateTask(request.taskId, { outcomes: [] });
143
+ await this.ctx.taskStore.updateTask(request.taskId, { outcomes: [] });
144
144
  try {
145
- await this.ctx.registry.transition(request.taskId, "pending");
145
+ await this.ctx.taskStore.transition(request.taskId, "pending");
146
146
  }
147
147
  catch { /* Task may have been modified externally */ }
148
148
  return request;
@@ -154,7 +154,7 @@ export class ApprovalManager {
154
154
  }
155
155
  const gate = this.ctx.config.settings.approvalGates?.find(g => g.id === request.gateId);
156
156
  const maxRejections = gate?.maxRevisions ?? 3;
157
- const task = await this.ctx.registry.getTask(request.taskId);
157
+ const task = await this.ctx.taskStore.getTask(request.taskId);
158
158
  const currentCount = task?.revisionCount ?? 0;
159
159
  return { allowed: currentCount < maxRejections, rejectionCount: currentCount, maxRejections };
160
160
  }
@@ -178,10 +178,10 @@ export class ApprovalManager {
178
178
  if (status === "approved") {
179
179
  const gate = this.ctx.config.settings.approvalGates?.find(g => g.id === request.gateId);
180
180
  const targetStatus = gate?.hook === "task:complete" ? "done" : "assigned";
181
- await this.ctx.registry.transition(request.taskId, targetStatus);
181
+ await this.ctx.taskStore.transition(request.taskId, targetStatus);
182
182
  }
183
183
  else {
184
- await this.ctx.registry.transition(request.taskId, "failed");
184
+ await this.ctx.taskStore.transition(request.taskId, "failed");
185
185
  }
186
186
  }
187
187
  catch { /* Task may have been modified externally */ }
@@ -203,10 +203,10 @@ export class ApprovalManager {
203
203
  if (request.taskId) {
204
204
  try {
205
205
  if (action === "approve") {
206
- await this.ctx.registry.transition(request.taskId, "assigned");
206
+ await this.ctx.taskStore.transition(request.taskId, "assigned");
207
207
  }
208
208
  else {
209
- await this.ctx.registry.transition(request.taskId, "failed");
209
+ await this.ctx.taskStore.transition(request.taskId, "failed");
210
210
  }
211
211
  }
212
212
  catch { /* Task may have been modified externally */ }
@@ -1 +1 @@
1
- {"version":3,"file":"approval-manager.js","sourceRoot":"","sources":["../src/approval-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approval-manager.js","sourceRoot":"","sources":["../src/approval-manager.ts"],"names":[],"mappings":"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"}
@@ -76,7 +76,7 @@ export declare class AssessmentOrchestrator {
76
76
  */
77
77
  private resolveAndRerun;
78
78
  /**
79
- * Inline answer generation using ctx.memoryStore + ctx.registry + ctx.queryLLM.
79
+ * Inline answer generation using ctx.memoryStore + ctx.taskStore + ctx.queryLLM.
80
80
  * Equivalent to the shell's generateAnswer() but without Node.js dependencies.
81
81
  */
82
82
  private generateAnswerInline;
@@ -83,8 +83,8 @@ export class AssessmentOrchestrator {
83
83
  to: "done",
84
84
  task: { ...task, status: "done" },
85
85
  });
86
- await this.ctx.registry.transition(taskId, "done");
87
- await this.ctx.registry.updateTask(taskId, { phase: undefined });
86
+ await this.ctx.taskStore.transition(taskId, "done");
87
+ await this.ctx.taskStore.updateTask(taskId, { phase: undefined });
88
88
  // Fire after:task:complete (async, fire-and-forget)
89
89
  this.ctx.hooks.runAfter("task:complete", { taskId, task, result }).catch(() => { });
90
90
  return true;
@@ -101,7 +101,7 @@ export class AssessmentOrchestrator {
101
101
  return task.expectations.some(e => failedTypes.has(e.type) && this.getConfidence(e) === "estimated");
102
102
  }
103
103
  async handleResult(taskId, result) {
104
- const task = await this.ctx.registry.getTask(taskId);
104
+ const task = await this.ctx.taskStore.getTask(taskId);
105
105
  if (!task)
106
106
  return;
107
107
  // Skip if already terminal
@@ -116,8 +116,8 @@ export class AssessmentOrchestrator {
116
116
  });
117
117
  // Ensure we're in review state
118
118
  if (task.status === "in_progress") {
119
- await this.ctx.registry.transition(taskId, "review");
120
- await this.ctx.registry.updateTask(taskId, { phase: "review" });
119
+ await this.ctx.taskStore.transition(taskId, "review");
120
+ await this.ctx.taskStore.updateTask(taskId, { phase: "review" });
121
121
  }
122
122
  // Question detection: intercept before assessment
123
123
  const maxQRounds = this.ctx.config.settings.maxQuestionRounds ?? 2;
@@ -169,19 +169,19 @@ export class AssessmentOrchestrator {
169
169
  : this.generateAnswerInline(task, question);
170
170
  answerPromise.then(async (answer) => {
171
171
  this.ctx.emitter.emit("task:answered", { taskId, question, answer });
172
- const current = await this.ctx.registry.getTask(taskId);
172
+ const current = await this.ctx.taskStore.getTask(taskId);
173
173
  if (!current)
174
174
  return;
175
175
  // Save original description before first Q&A
176
176
  if (!current.originalDescription) {
177
- await this.ctx.registry.updateTask(taskId, { originalDescription: current.description });
177
+ await this.ctx.taskStore.updateTask(taskId, { originalDescription: current.description });
178
178
  }
179
179
  // Clear old outcomes before re-run — the agent will produce fresh ones.
180
- await this.ctx.registry.updateTask(taskId, { outcomes: [] });
180
+ await this.ctx.taskStore.updateTask(taskId, { outcomes: [] });
181
181
  // Append Q&A to description and re-run (no retry burn)
182
182
  const qaBlock = `\n\n[Polpo Clarification]\nQ: ${question}\nA: ${answer}`;
183
- await this.ctx.registry.unsafeSetStatus(taskId, "pending", "Q&A re-run — no retry burn");
184
- await this.ctx.registry.updateTask(taskId, {
183
+ await this.ctx.taskStore.unsafeSetStatus(taskId, "pending", "Q&A re-run — no retry burn");
184
+ await this.ctx.taskStore.updateTask(taskId, {
185
185
  phase: "execution",
186
186
  description: current.description + qaBlock,
187
187
  questionRounds: (current.questionRounds ?? 0) + 1,
@@ -192,7 +192,7 @@ export class AssessmentOrchestrator {
192
192
  });
193
193
  }
194
194
  /**
195
- * Inline answer generation using ctx.memoryStore + ctx.registry + ctx.queryLLM.
195
+ * Inline answer generation using ctx.memoryStore + ctx.taskStore + ctx.queryLLM.
196
196
  * Equivalent to the shell's generateAnswer() but without Node.js dependencies.
197
197
  */
198
198
  async generateAnswerInline(task, question) {
@@ -200,7 +200,7 @@ export class AssessmentOrchestrator {
200
200
  throw new Error("queryLLM port not available");
201
201
  }
202
202
  const memory = (await this.ctx.memoryStore?.get()) ?? "";
203
- const state = await this.ctx.registry.getState();
203
+ const state = await this.ctx.taskStore.getState();
204
204
  // Sibling tasks in the same plan group for additional context
205
205
  const siblings = task.group
206
206
  ? state.tasks.filter(t => t.group === task.group && t.id !== task.id)
@@ -264,7 +264,7 @@ export class AssessmentOrchestrator {
264
264
  message: `[${taskId}] Assessment blocked by hook: ${hookResult.cancelReason ?? "no reason"}`,
265
265
  });
266
266
  // Skip assessment — mark done with result as-is
267
- await this.ctx.registry.updateTask(taskId, { result });
267
+ await this.ctx.taskStore.updateTask(taskId, { result });
268
268
  if (result.exitCode === 0) {
269
269
  this.transitionToDone(taskId, task, result).catch(() => { });
270
270
  }
@@ -279,7 +279,7 @@ export class AssessmentOrchestrator {
279
279
  });
280
280
  }
281
281
  else {
282
- await this.ctx.registry.updateTask(taskId, { result });
282
+ await this.ctx.taskStore.updateTask(taskId, { result });
283
283
  if (result.exitCode === 0) {
284
284
  this.transitionToDone(taskId, task, result).catch(() => { });
285
285
  }
@@ -306,7 +306,7 @@ export class AssessmentOrchestrator {
306
306
  const reviewContext = await this.buildReviewContext(taskId, task, result);
307
307
  this.runAssessmentWithRetry(task, this.ctx.agentWorkDir, progressCb, reviewContext, checkProgressCb).then(async (assessment) => {
308
308
  setAssessment(result, assessment, "initial");
309
- await this.ctx.registry.updateTask(taskId, { result });
309
+ await this.ctx.taskStore.updateTask(taskId, { result });
310
310
  if (assessment.passed && result.exitCode === 0) {
311
311
  this.ctx.emitter.emit("assessment:complete", {
312
312
  taskId,
@@ -328,7 +328,7 @@ export class AssessmentOrchestrator {
328
328
  message: exitMsg,
329
329
  details: result.stderr || undefined,
330
330
  });
331
- await this.ctx.registry.updateTask(taskId, { result });
331
+ await this.ctx.taskStore.updateTask(taskId, { result });
332
332
  this.ctx.emitter.emit("assessment:complete", {
333
333
  taskId,
334
334
  passed: false,
@@ -375,7 +375,7 @@ export class AssessmentOrchestrator {
375
375
  }
376
376
  }).catch(async (err) => {
377
377
  this.ctx.emitter.emit("log", { level: "error", message: `[${taskId}] Assessment error: ${err.message}` });
378
- await this.ctx.registry.updateTask(taskId, { result });
378
+ await this.ctx.taskStore.updateTask(taskId, { result });
379
379
  await this.retryOrFail(taskId, task, result);
380
380
  });
381
381
  }
@@ -459,10 +459,10 @@ export class AssessmentOrchestrator {
459
459
  for (const [idx, paths] of corrections) {
460
460
  newExpectations[idx] = { ...newExpectations[idx], paths };
461
461
  }
462
- await this.ctx.registry.updateTask(taskId, { expectations: newExpectations });
462
+ await this.ctx.taskStore.updateTask(taskId, { expectations: newExpectations });
463
463
  this.ctx.emitter.emit("assessment:corrected", { taskId, corrections: corrections.size });
464
464
  // Re-assess with corrected expectations
465
- const current = await this.ctx.registry.getTask(taskId);
465
+ const current = await this.ctx.taskStore.getTask(taskId);
466
466
  if (!current)
467
467
  return false;
468
468
  try {
@@ -470,7 +470,7 @@ export class AssessmentOrchestrator {
470
470
  const reCtx = await this.buildReviewContext(taskId, task, result);
471
471
  const newAssessment = await this.ctx.assessFn(current, this.ctx.agentWorkDir, progressCb, reCtx, this.ctx.config.settings.reasoning);
472
472
  setAssessment(result, newAssessment, "auto-correct");
473
- await this.ctx.registry.updateTask(taskId, { result });
473
+ await this.ctx.taskStore.updateTask(taskId, { result });
474
474
  if (newAssessment.passed) {
475
475
  this.ctx.emitter.emit("assessment:complete", {
476
476
  taskId,
@@ -583,10 +583,10 @@ export class AssessmentOrchestrator {
583
583
  }
584
584
  if (correctionCount === 0)
585
585
  return false;
586
- await this.ctx.registry.updateTask(taskId, { expectations: newExpectations });
586
+ await this.ctx.taskStore.updateTask(taskId, { expectations: newExpectations });
587
587
  this.ctx.emitter.emit("assessment:corrected", { taskId, corrections: correctionCount });
588
588
  // Re-assess with corrected expectations
589
- const current = await this.ctx.registry.getTask(taskId);
589
+ const current = await this.ctx.taskStore.getTask(taskId);
590
590
  if (!current)
591
591
  return false;
592
592
  try {
@@ -594,7 +594,7 @@ export class AssessmentOrchestrator {
594
594
  const judgeCtx = await this.buildReviewContext(taskId, task, result);
595
595
  const newAssessment = await this.ctx.assessFn(current, this.ctx.agentWorkDir, progressCb, judgeCtx, this.ctx.config.settings.reasoning);
596
596
  setAssessment(result, newAssessment, "judge");
597
- await this.ctx.registry.updateTask(taskId, { result });
597
+ await this.ctx.taskStore.updateTask(taskId, { result });
598
598
  if (newAssessment.passed) {
599
599
  this.ctx.emitter.emit("assessment:complete", {
600
600
  taskId,
@@ -640,7 +640,7 @@ export class AssessmentOrchestrator {
640
640
  * without burning a full retry. After maxFixAttempts, fall back to full retry.
641
641
  */
642
642
  async fixOrRetry(taskId, _task, result) {
643
- const current = await this.ctx.registry.getTask(taskId);
643
+ const current = await this.ctx.taskStore.getTask(taskId);
644
644
  if (!current)
645
645
  return;
646
646
  // Side-effects guard: block automatic fix/retry for tasks with irreversible actions.
@@ -652,13 +652,13 @@ export class AssessmentOrchestrator {
652
652
  this.ctx.emitter.emit("log", { level: "warn", message: `[${taskId}] ${reason}` });
653
653
  // Preserve original description and prepare fix prompt for when approval comes
654
654
  if (!current.originalDescription) {
655
- await this.ctx.registry.updateTask(taskId, { originalDescription: current.description });
655
+ await this.ctx.taskStore.updateTask(taskId, { originalDescription: current.description });
656
656
  }
657
- await this.ctx.registry.updateTask(taskId, {
657
+ await this.ctx.taskStore.updateTask(taskId, {
658
658
  description: buildSideEffectFixPrompt(current, result),
659
659
  phase: "fix",
660
660
  });
661
- await this.ctx.registry.transition(taskId, "awaiting_approval");
661
+ await this.ctx.taskStore.transition(taskId, "awaiting_approval");
662
662
  return;
663
663
  }
664
664
  const maxFix = this.ctx.config.settings.maxFixAttempts ?? 2;
@@ -666,14 +666,14 @@ export class AssessmentOrchestrator {
666
666
  if (fixAttempts <= maxFix) {
667
667
  // Save original description before first fix/retry
668
668
  if (!current.originalDescription) {
669
- await this.ctx.registry.updateTask(taskId, { originalDescription: current.description });
669
+ await this.ctx.taskStore.updateTask(taskId, { originalDescription: current.description });
670
670
  }
671
671
  this.ctx.emitter.emit("task:fix", { taskId, attempt: fixAttempts, maxFix });
672
672
  // Clear old outcomes — the agent will produce fresh ones on re-execution.
673
- await this.ctx.registry.updateTask(taskId, { outcomes: [] });
673
+ await this.ctx.taskStore.updateTask(taskId, { outcomes: [] });
674
674
  // unsafeSetStatus bypasses retry increment (fix attempts are NOT real failures)
675
- await this.ctx.registry.unsafeSetStatus(taskId, "pending", "fix phase — no retry burn");
676
- await this.ctx.registry.updateTask(taskId, {
675
+ await this.ctx.taskStore.unsafeSetStatus(taskId, "pending", "fix phase — no retry burn");
676
+ await this.ctx.taskStore.updateTask(taskId, {
677
677
  phase: "fix",
678
678
  fixAttempts,
679
679
  description: buildFixPrompt(current, result),
@@ -682,7 +682,7 @@ export class AssessmentOrchestrator {
682
682
  else {
683
683
  // Fix attempts exhausted → full retry (burns 1 retry)
684
684
  this.ctx.emitter.emit("log", { level: "warn", message: `[${taskId}] Fix attempts exhausted (${maxFix}), falling back to full retry` });
685
- await this.ctx.registry.updateTask(taskId, {
685
+ await this.ctx.taskStore.updateTask(taskId, {
686
686
  phase: "execution",
687
687
  fixAttempts: 0,
688
688
  });
@@ -691,7 +691,7 @@ export class AssessmentOrchestrator {
691
691
  }
692
692
  /** @internal — exposed for test access via Orchestrator facade */
693
693
  async retryOrFail(taskId, _task, result) {
694
- const current = await this.ctx.registry.getTask(taskId);
694
+ const current = await this.ctx.taskStore.getTask(taskId);
695
695
  if (!current)
696
696
  return;
697
697
  // Side-effects guard: block automatic retry for tasks with irreversible actions.
@@ -701,13 +701,13 @@ export class AssessmentOrchestrator {
701
701
  this.ctx.emitter.emit("log", { level: "warn", message: `[${taskId}] ${reason}` });
702
702
  // Preserve original description and prepare retry prompt for when approval comes
703
703
  if (!current.originalDescription) {
704
- await this.ctx.registry.updateTask(taskId, { originalDescription: current.description });
704
+ await this.ctx.taskStore.updateTask(taskId, { originalDescription: current.description });
705
705
  }
706
- await this.ctx.registry.updateTask(taskId, {
706
+ await this.ctx.taskStore.updateTask(taskId, {
707
707
  description: buildSideEffectRetryPrompt(current, result),
708
708
  phase: "execution",
709
709
  });
710
- await this.ctx.registry.transition(taskId, "awaiting_approval");
710
+ await this.ctx.taskStore.transition(taskId, "awaiting_approval");
711
711
  return;
712
712
  }
713
713
  // Don't retry tasks from cancelled missions — resolve via missionId (direct FK) first
@@ -715,7 +715,7 @@ export class AssessmentOrchestrator {
715
715
  const mission = await resolveMissionForTask(resolveMissionStore(this.ctx), current);
716
716
  if (mission && mission.status === "cancelled") {
717
717
  this.ctx.emitter.emit("log", { level: "debug", message: `[${taskId}] Skipping retry — mission cancelled` });
718
- await this.ctx.registry.transition(taskId, "failed");
718
+ await this.ctx.taskStore.transition(taskId, "failed");
719
719
  return;
720
720
  }
721
721
  }
@@ -724,7 +724,7 @@ export class AssessmentOrchestrator {
724
724
  const nextAttempt = current.retries + 1;
725
725
  // Save original description before first retry
726
726
  if (!current.originalDescription) {
727
- await this.ctx.registry.updateTask(taskId, { originalDescription: current.description });
727
+ await this.ctx.taskStore.updateTask(taskId, { originalDescription: current.description });
728
728
  }
729
729
  // Check if we should escalate to a different agent
730
730
  // fallbackAgent resolution: explicit policy > agent.reportsTo (org chart)
@@ -743,10 +743,10 @@ export class AssessmentOrchestrator {
743
743
  this.ctx.emitter.emit("task:retry", { taskId, attempt: nextAttempt, maxRetries: current.maxRetries });
744
744
  // Clear old outcomes — the agent will produce fresh ones on re-execution.
745
745
  // Without this, outcomes accumulate across retries and all get re-sent via notifications.
746
- await this.ctx.registry.updateTask(taskId, { outcomes: [] });
747
- await this.ctx.registry.transition(taskId, "failed");
748
- await this.ctx.registry.transition(taskId, "pending");
749
- await this.ctx.registry.updateTask(taskId, {
746
+ await this.ctx.taskStore.updateTask(taskId, { outcomes: [] });
747
+ await this.ctx.taskStore.transition(taskId, "failed");
748
+ await this.ctx.taskStore.transition(taskId, "pending");
749
+ await this.ctx.taskStore.updateTask(taskId, {
750
750
  description: buildRetryPrompt(current, result),
751
751
  assignTo,
752
752
  phase: "execution",
@@ -769,8 +769,8 @@ export class AssessmentOrchestrator {
769
769
  });
770
770
  return; // Escalation manager (or other hook) is handling this
771
771
  }
772
- await this.ctx.registry.transition(taskId, "failed");
773
- await this.ctx.registry.updateTask(taskId, { phase: undefined });
772
+ await this.ctx.taskStore.transition(taskId, "failed");
773
+ await this.ctx.taskStore.updateTask(taskId, { phase: undefined });
774
774
  // Fire after:task:fail
775
775
  this.ctx.hooks.runAfter("task:fail", {
776
776
  taskId,
@@ -780,8 +780,8 @@ export class AssessmentOrchestrator {
780
780
  }).catch(() => { });
781
781
  }).catch(async () => {
782
782
  // Hook failed — fail the task normally
783
- await this.ctx.registry.transition(taskId, "failed");
784
- await this.ctx.registry.updateTask(taskId, { phase: undefined });
783
+ await this.ctx.taskStore.transition(taskId, "failed");
784
+ await this.ctx.taskStore.updateTask(taskId, { phase: undefined });
785
785
  });
786
786
  }
787
787
  }