@polpo-ai/core 0.11.0 → 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.
- package/dist/__tests__/mission-store.test.js +9 -13
- package/dist/__tests__/mission-store.test.js.map +1 -1
- package/dist/adapter.d.ts +10 -19
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +0 -7
- package/dist/adapter.js.map +1 -1
- package/dist/approval-manager.js +11 -11
- package/dist/approval-manager.js.map +1 -1
- package/dist/assessment-orchestrator.d.ts +1 -1
- package/dist/assessment-orchestrator.js +46 -46
- package/dist/assessment-orchestrator.js.map +1 -1
- package/dist/context-compactor.d.ts +1 -0
- package/dist/context-compactor.d.ts.map +1 -1
- package/dist/context-compactor.js.map +1 -1
- package/dist/escalation-manager.js +8 -8
- package/dist/escalation-manager.js.map +1 -1
- package/dist/events.d.ts +1 -25
- package/dist/events.d.ts.map +1 -1
- package/dist/hooks.d.ts +15 -9
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js.map +1 -1
- package/dist/in-memory-stores.d.ts +21 -0
- package/dist/in-memory-stores.d.ts.map +1 -0
- package/dist/in-memory-stores.js +43 -0
- package/dist/in-memory-stores.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/loop/hooks.d.ts +10 -28
- package/dist/loop/hooks.d.ts.map +1 -1
- package/dist/loop/hooks.js +2 -83
- package/dist/loop/hooks.js.map +1 -1
- package/dist/loop/step-helpers.d.ts +20 -0
- package/dist/loop/step-helpers.d.ts.map +1 -0
- package/dist/loop/step-helpers.js +69 -0
- package/dist/loop/step-helpers.js.map +1 -0
- package/dist/mission-executor.d.ts +16 -22
- package/dist/mission-executor.d.ts.map +1 -1
- package/dist/mission-executor.js +204 -459
- package/dist/mission-executor.js.map +1 -1
- package/dist/mission-gating.d.ts +89 -0
- package/dist/mission-gating.d.ts.map +1 -0
- package/dist/mission-gating.js +281 -0
- package/dist/mission-gating.js.map +1 -0
- package/dist/mission-store.d.ts +14 -8
- package/dist/mission-store.d.ts.map +1 -1
- package/dist/mission-store.js +19 -8
- package/dist/mission-store.js.map +1 -1
- package/dist/orchestrator-context.d.ts +1 -1
- package/dist/orchestrator-context.d.ts.map +1 -1
- package/dist/orchestrator-engine.d.ts +6 -6
- package/dist/orchestrator-engine.d.ts.map +1 -1
- package/dist/orchestrator-engine.js +10 -10
- package/dist/orchestrator-engine.js.map +1 -1
- package/dist/playbook-logic.d.ts +1 -1
- package/dist/playbook-logic.js +1 -1
- package/dist/scheduler.js +1 -1
- package/dist/scheduler.js.map +1 -1
- package/dist/schemas.d.ts +2 -2
- package/dist/session-store.d.ts +0 -2
- package/dist/session-store.d.ts.map +1 -1
- package/dist/session-store.js.map +1 -1
- package/dist/sla-monitor.js +3 -3
- package/dist/sla-monitor.js.map +1 -1
- package/dist/task-manager.d.ts +1 -1
- package/dist/task-manager.d.ts.map +1 -1
- package/dist/task-manager.js +37 -37
- package/dist/task-manager.js.map +1 -1
- package/dist/task-runner.d.ts.map +1 -1
- package/dist/task-runner.js +19 -36
- package/dist/task-runner.js.map +1 -1
- package/dist/task-store.d.ts +5 -19
- package/dist/task-store.d.ts.map +1 -1
- package/dist/tool-types.d.ts +0 -2
- package/dist/tool-types.d.ts.map +1 -1
- package/dist/types/agent.d.ts +186 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +23 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/assessment.d.ts +134 -0
- package/dist/types/assessment.d.ts.map +1 -0
- package/dist/types/assessment.js +18 -0
- package/dist/types/assessment.js.map +1 -0
- package/dist/types/config.d.ts +193 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +8 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/mission.d.ts +226 -0
- package/dist/types/mission.d.ts.map +1 -0
- package/dist/types/mission.js +6 -0
- package/dist/types/mission.js.map +1 -0
- package/dist/types/notifications.d.ts +162 -0
- package/dist/types/notifications.d.ts.map +1 -0
- package/dist/types/notifications.js +6 -0
- package/dist/types/notifications.js.map +1 -0
- package/dist/types/task.d.ts +191 -0
- package/dist/types/task.d.ts.map +1 -0
- package/dist/types/task.js +5 -0
- package/dist/types/task.js.map +1 -0
- package/dist/types.d.ts +17 -1150
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +18 -31
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/attachment-store.d.ts +0 -42
- package/dist/attachment-store.d.ts.map +0 -1
- package/dist/attachment-store.js +0 -13
- 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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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,
|
|
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({
|
|
43
|
+
const resolved = resolveMissionStore({ taskStore: storeWithMissions() });
|
|
44
44
|
expect((await resolved.getMission("m1"))?.name).toBe("Launch");
|
|
45
45
|
});
|
|
46
46
|
});
|
|
47
|
-
describe("resolveMissionForTask
|
|
47
|
+
describe("resolveMissionForTask", () => {
|
|
48
48
|
const missions = taskStoreMissionAdapter(storeWithMissions());
|
|
49
|
-
it("
|
|
50
|
-
const m = await resolveMissionForTask(missions, { missionId: "m1"
|
|
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":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,qBAAqB,GAEtB,MAAM,qBAAqB,CAAC;AAI7B,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,IAAY,EAAW,EAAE,CACpD,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAY,CAAC;AAEtF,SAAS,iBAAiB;IACxB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,OAAO;QACL,UAAU,EAAE,KAAK,EAAE,EAAU,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9C,gBAAgB,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;QACzF,
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
/**
|
|
57
|
-
vaultStore?:
|
|
58
|
-
/**
|
|
59
|
-
|
|
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
|
|
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
|
package/dist/adapter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA
|
|
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
|
package/dist/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":""}
|
package/dist/approval-manager.js
CHANGED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
143
|
+
await this.ctx.taskStore.updateTask(request.taskId, { outcomes: [] });
|
|
144
144
|
try {
|
|
145
|
-
await this.ctx.
|
|
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.
|
|
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.
|
|
181
|
+
await this.ctx.taskStore.transition(request.taskId, targetStatus);
|
|
182
182
|
}
|
|
183
183
|
else {
|
|
184
|
-
await this.ctx.
|
|
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.
|
|
206
|
+
await this.ctx.taskStore.transition(request.taskId, "assigned");
|
|
207
207
|
}
|
|
208
208
|
else {
|
|
209
|
-
await this.ctx.
|
|
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.
|
|
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.
|
|
87
|
-
await this.ctx.
|
|
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.
|
|
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.
|
|
120
|
-
await this.ctx.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
184
|
-
await this.ctx.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
655
|
+
await this.ctx.taskStore.updateTask(taskId, { originalDescription: current.description });
|
|
656
656
|
}
|
|
657
|
-
await this.ctx.
|
|
657
|
+
await this.ctx.taskStore.updateTask(taskId, {
|
|
658
658
|
description: buildSideEffectFixPrompt(current, result),
|
|
659
659
|
phase: "fix",
|
|
660
660
|
});
|
|
661
|
-
await this.ctx.
|
|
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.
|
|
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.
|
|
673
|
+
await this.ctx.taskStore.updateTask(taskId, { outcomes: [] });
|
|
674
674
|
// unsafeSetStatus bypasses retry increment (fix attempts are NOT real failures)
|
|
675
|
-
await this.ctx.
|
|
676
|
-
await this.ctx.
|
|
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.
|
|
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.
|
|
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.
|
|
704
|
+
await this.ctx.taskStore.updateTask(taskId, { originalDescription: current.description });
|
|
705
705
|
}
|
|
706
|
-
await this.ctx.
|
|
706
|
+
await this.ctx.taskStore.updateTask(taskId, {
|
|
707
707
|
description: buildSideEffectRetryPrompt(current, result),
|
|
708
708
|
phase: "execution",
|
|
709
709
|
});
|
|
710
|
-
await this.ctx.
|
|
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.
|
|
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.
|
|
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.
|
|
747
|
-
await this.ctx.
|
|
748
|
-
await this.ctx.
|
|
749
|
-
await this.ctx.
|
|
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.
|
|
773
|
-
await this.ctx.
|
|
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.
|
|
784
|
-
await this.ctx.
|
|
783
|
+
await this.ctx.taskStore.transition(taskId, "failed");
|
|
784
|
+
await this.ctx.taskStore.updateTask(taskId, { phase: undefined });
|
|
785
785
|
});
|
|
786
786
|
}
|
|
787
787
|
}
|