@polpo-ai/core 0.15.143 → 0.16.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 (180) hide show
  1. package/README.md +30 -0
  2. package/dist/__tests__/custom-tool-runner.test.d.ts +2 -0
  3. package/dist/__tests__/custom-tool-runner.test.d.ts.map +1 -0
  4. package/dist/__tests__/custom-tool-runner.test.js +121 -0
  5. package/dist/__tests__/custom-tool-runner.test.js.map +1 -0
  6. package/dist/__tests__/mcp-runner-client.test.d.ts +2 -0
  7. package/dist/__tests__/mcp-runner-client.test.d.ts.map +1 -0
  8. package/dist/__tests__/mcp-runner-client.test.js +144 -0
  9. package/dist/__tests__/mcp-runner-client.test.js.map +1 -0
  10. package/dist/__tests__/mission-execution.test.d.ts +2 -0
  11. package/dist/__tests__/mission-execution.test.d.ts.map +1 -0
  12. package/dist/__tests__/mission-execution.test.js +68 -0
  13. package/dist/__tests__/mission-execution.test.js.map +1 -0
  14. package/dist/__tests__/run-state-monitor.test.d.ts +2 -0
  15. package/dist/__tests__/run-state-monitor.test.d.ts.map +1 -0
  16. package/dist/__tests__/run-state-monitor.test.js +59 -0
  17. package/dist/__tests__/run-state-monitor.test.js.map +1 -0
  18. package/dist/__tests__/runtime-metadata.test.d.ts +2 -0
  19. package/dist/__tests__/runtime-metadata.test.d.ts.map +1 -0
  20. package/dist/__tests__/runtime-metadata.test.js +17 -0
  21. package/dist/__tests__/runtime-metadata.test.js.map +1 -0
  22. package/dist/__tests__/task-execution-router.test.js +1 -1
  23. package/dist/__tests__/task-execution-router.test.js.map +1 -1
  24. package/dist/__tests__/task-runner-agent-lifetime.test.d.ts +2 -0
  25. package/dist/__tests__/task-runner-agent-lifetime.test.d.ts.map +1 -0
  26. package/dist/__tests__/task-runner-agent-lifetime.test.js +136 -0
  27. package/dist/__tests__/task-runner-agent-lifetime.test.js.map +1 -0
  28. package/dist/adapter.d.ts +20 -0
  29. package/dist/adapter.d.ts.map +1 -1
  30. package/dist/agent-manager.d.ts +3 -0
  31. package/dist/agent-manager.d.ts.map +1 -1
  32. package/dist/agent-manager.js +28 -2
  33. package/dist/agent-manager.js.map +1 -1
  34. package/dist/agent-store.d.ts +70 -1
  35. package/dist/agent-store.d.ts.map +1 -1
  36. package/dist/agent-store.js +103 -1
  37. package/dist/agent-store.js.map +1 -1
  38. package/dist/approval-manager.d.ts +24 -4
  39. package/dist/approval-manager.d.ts.map +1 -1
  40. package/dist/approval-manager.js +160 -112
  41. package/dist/approval-manager.js.map +1 -1
  42. package/dist/approval-manager.test.d.ts +2 -0
  43. package/dist/approval-manager.test.d.ts.map +1 -0
  44. package/dist/approval-manager.test.js +116 -0
  45. package/dist/approval-manager.test.js.map +1 -0
  46. package/dist/assessment-orchestrator.d.ts +12 -1
  47. package/dist/assessment-orchestrator.d.ts.map +1 -1
  48. package/dist/assessment-orchestrator.js +181 -83
  49. package/dist/assessment-orchestrator.js.map +1 -1
  50. package/dist/custom-tool-runner.d.ts +56 -0
  51. package/dist/custom-tool-runner.d.ts.map +1 -0
  52. package/dist/custom-tool-runner.js +197 -0
  53. package/dist/custom-tool-runner.js.map +1 -0
  54. package/dist/data/data.test.d.ts +2 -0
  55. package/dist/data/data.test.d.ts.map +1 -0
  56. package/dist/data/data.test.js +233 -0
  57. package/dist/data/data.test.js.map +1 -0
  58. package/dist/data/index.d.ts +384 -0
  59. package/dist/data/index.d.ts.map +1 -0
  60. package/dist/data/index.js +598 -0
  61. package/dist/data/index.js.map +1 -0
  62. package/dist/escalation-manager.d.ts +2 -0
  63. package/dist/escalation-manager.d.ts.map +1 -1
  64. package/dist/escalation-manager.js +79 -25
  65. package/dist/escalation-manager.js.map +1 -1
  66. package/dist/events.d.ts +4 -0
  67. package/dist/events.d.ts.map +1 -1
  68. package/dist/hooks.d.ts.map +1 -1
  69. package/dist/hooks.js +6 -0
  70. package/dist/hooks.js.map +1 -1
  71. package/dist/index.d.ts +19 -3
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +13 -1
  74. package/dist/index.js.map +1 -1
  75. package/dist/mcp-capability.d.ts +40 -0
  76. package/dist/mcp-capability.d.ts.map +1 -0
  77. package/dist/mcp-capability.js +2 -0
  78. package/dist/mcp-capability.js.map +1 -0
  79. package/dist/mcp-runner.d.ts +45 -0
  80. package/dist/mcp-runner.d.ts.map +1 -0
  81. package/dist/mcp-runner.js +238 -0
  82. package/dist/mcp-runner.js.map +1 -0
  83. package/dist/mission-cancellation.d.ts +14 -0
  84. package/dist/mission-cancellation.d.ts.map +1 -0
  85. package/dist/mission-cancellation.js +43 -0
  86. package/dist/mission-cancellation.js.map +1 -0
  87. package/dist/mission-execution.d.ts +103 -0
  88. package/dist/mission-execution.d.ts.map +1 -0
  89. package/dist/mission-execution.js +196 -0
  90. package/dist/mission-execution.js.map +1 -0
  91. package/dist/mission-executor.d.ts +18 -16
  92. package/dist/mission-executor.d.ts.map +1 -1
  93. package/dist/mission-executor.js +339 -203
  94. package/dist/mission-executor.js.map +1 -1
  95. package/dist/mission-gating.d.ts +11 -15
  96. package/dist/mission-gating.d.ts.map +1 -1
  97. package/dist/mission-gating.js +25 -33
  98. package/dist/mission-gating.js.map +1 -1
  99. package/dist/mission-inspection.d.ts +29 -0
  100. package/dist/mission-inspection.d.ts.map +1 -0
  101. package/dist/mission-inspection.js +99 -0
  102. package/dist/mission-inspection.js.map +1 -0
  103. package/dist/mission-store.d.ts +7 -0
  104. package/dist/mission-store.d.ts.map +1 -1
  105. package/dist/mission-store.js +8 -0
  106. package/dist/mission-store.js.map +1 -1
  107. package/dist/orchestrator-context.d.ts +3 -0
  108. package/dist/orchestrator-context.d.ts.map +1 -1
  109. package/dist/orchestrator-engine.d.ts +39 -39
  110. package/dist/orchestrator-engine.d.ts.map +1 -1
  111. package/dist/orchestrator-engine.js +124 -24
  112. package/dist/orchestrator-engine.js.map +1 -1
  113. package/dist/run-state-monitor.d.ts +14 -0
  114. package/dist/run-state-monitor.d.ts.map +1 -0
  115. package/dist/run-state-monitor.js +63 -0
  116. package/dist/run-state-monitor.js.map +1 -0
  117. package/dist/run-store.d.ts +15 -0
  118. package/dist/run-store.d.ts.map +1 -1
  119. package/dist/runner-capability.d.ts +43 -0
  120. package/dist/runner-capability.d.ts.map +1 -0
  121. package/dist/runner-capability.js +55 -0
  122. package/dist/runner-capability.js.map +1 -0
  123. package/dist/runtime-metadata.d.ts +5 -0
  124. package/dist/runtime-metadata.d.ts.map +1 -0
  125. package/dist/runtime-metadata.js +21 -0
  126. package/dist/runtime-metadata.js.map +1 -0
  127. package/dist/scheduler.d.ts +2 -1
  128. package/dist/scheduler.d.ts.map +1 -1
  129. package/dist/scheduler.js +16 -6
  130. package/dist/scheduler.js.map +1 -1
  131. package/dist/schemas.d.ts +8 -6
  132. package/dist/schemas.d.ts.map +1 -1
  133. package/dist/schemas.js +10 -0
  134. package/dist/schemas.js.map +1 -1
  135. package/dist/spawner.d.ts +12 -0
  136. package/dist/spawner.d.ts.map +1 -1
  137. package/dist/steering.d.ts +4 -1
  138. package/dist/steering.d.ts.map +1 -1
  139. package/dist/steering.js.map +1 -1
  140. package/dist/task-approval-coordinator.d.ts +29 -0
  141. package/dist/task-approval-coordinator.d.ts.map +1 -0
  142. package/dist/task-approval-coordinator.js +216 -0
  143. package/dist/task-approval-coordinator.js.map +1 -0
  144. package/dist/task-dispatch.d.ts +40 -0
  145. package/dist/task-dispatch.d.ts.map +1 -0
  146. package/dist/task-dispatch.js +136 -0
  147. package/dist/task-dispatch.js.map +1 -0
  148. package/dist/task-execution.d.ts +146 -0
  149. package/dist/task-execution.d.ts.map +1 -0
  150. package/dist/task-execution.js +357 -0
  151. package/dist/task-execution.js.map +1 -0
  152. package/dist/task-manager.d.ts +31 -22
  153. package/dist/task-manager.d.ts.map +1 -1
  154. package/dist/task-manager.js +74 -7
  155. package/dist/task-manager.js.map +1 -1
  156. package/dist/task-runner.d.ts +30 -3
  157. package/dist/task-runner.d.ts.map +1 -1
  158. package/dist/task-runner.js +429 -90
  159. package/dist/task-runner.js.map +1 -1
  160. package/dist/task-store.d.ts +9 -3
  161. package/dist/task-store.d.ts.map +1 -1
  162. package/dist/tool-invocation.d.ts +4 -0
  163. package/dist/tool-invocation.d.ts.map +1 -1
  164. package/dist/tool-invocation.js +8 -1
  165. package/dist/tool-invocation.js.map +1 -1
  166. package/dist/tool-invocation.test.d.ts +2 -0
  167. package/dist/tool-invocation.test.d.ts.map +1 -0
  168. package/dist/tool-invocation.test.js +40 -0
  169. package/dist/tool-invocation.test.js.map +1 -0
  170. package/dist/types/agent.d.ts +4 -0
  171. package/dist/types/agent.d.ts.map +1 -1
  172. package/dist/types/agent.js.map +1 -1
  173. package/dist/types/config.d.ts +3 -0
  174. package/dist/types/config.d.ts.map +1 -1
  175. package/dist/types/config.js.map +1 -1
  176. package/dist/types/mission.d.ts +23 -1
  177. package/dist/types/mission.d.ts.map +1 -1
  178. package/dist/types/task.d.ts +10 -0
  179. package/dist/types/task.d.ts.map +1 -1
  180. package/package.json +21 -1
@@ -0,0 +1,146 @@
1
+ import type { ApprovalRequest, Task, TaskStatus } from "./types.js";
2
+ import type { RunRecord } from "./run-store.js";
3
+ import type { ApprovalStore } from "./approval-store.js";
4
+ /** Host-owned pointer to a durable, single-use approval batch. Never accepted
5
+ * from authored Tasks, generic patches, or caller metadata. */
6
+ export interface TaskApprovalState {
7
+ batchId: string;
8
+ phase: "waiting" | "ready" | "claimed";
9
+ revision: number;
10
+ runId?: string;
11
+ }
12
+ export interface TaskApprovalBinding {
13
+ version: 1;
14
+ batchId: string;
15
+ hook: "task:spawn" | "task:complete";
16
+ requestIds: string[];
17
+ gates: import("./types.js").ApprovalGate[];
18
+ /** Durable input and the effective post-hook invocation are both bound. */
19
+ source: Task;
20
+ invocation: {
21
+ task: Task;
22
+ agent?: import("./types.js").AgentConfig;
23
+ agentIdentity?: import("./agent-store.js").AgentIdentity;
24
+ result?: import("./types.js").TaskResult;
25
+ overrides?: TaskDispatchOverrides;
26
+ };
27
+ }
28
+ /** Non-secret execution preferences captured separately from durable Task
29
+ * authority. A ready approval replays them on an ordinary scheduler claim. */
30
+ export interface TaskDispatchOverrides {
31
+ model?: import("./types/config.js").ProfiledModelSelection;
32
+ sandbox?: import("./runtime-sandbox.js").RuntimeSandboxOptions;
33
+ routing?: import("./types.js").RuntimeRoutingOptions;
34
+ loop?: string;
35
+ }
36
+ /** Host-owned identity of one task attempt. Revision zero represents old rows. */
37
+ export interface TaskExecutionReference {
38
+ taskId: string;
39
+ revision: number;
40
+ runId?: string;
41
+ }
42
+ export type TaskExecutionPatch = Partial<Omit<Task, "id" | "status" | "executionRevision" | "activeRunId" | "retries" | "approvalState">>;
43
+ export type TaskExecutionMutation = {
44
+ type: "patch";
45
+ updates: TaskExecutionPatch;
46
+ } | {
47
+ type: "transition";
48
+ status: TaskStatus;
49
+ updates?: TaskExecutionPatch;
50
+ } | {
51
+ type: "requeue";
52
+ countRetry: boolean;
53
+ reason: string;
54
+ onlyIfRunRunning?: boolean;
55
+ updates?: TaskExecutionPatch;
56
+ } | {
57
+ type: "cancel";
58
+ reason?: string;
59
+ };
60
+ export interface TaskExecutionState {
61
+ task: Task;
62
+ run?: RunRecord;
63
+ }
64
+ export interface TaskDispatchClaim extends TaskExecutionState {
65
+ run: RunRecord;
66
+ overrides?: TaskDispatchOverrides;
67
+ }
68
+ /** Task and Run changes in these operations form one durable transaction.
69
+ * A stale reference rejects without chasing or modifying a newer attempt. */
70
+ export interface TaskExecutionStore {
71
+ claimTaskExecution(expected: TaskExecutionReference, runId: string): Promise<TaskExecutionState & {
72
+ run: RunRecord;
73
+ }>;
74
+ mutateTaskExecution(expected: TaskExecutionReference, mutation: TaskExecutionMutation): Promise<TaskExecutionState>;
75
+ }
76
+ /** A captured row (or its absence) used to make an asynchronous decision.
77
+ * Full snapshots also fence edits that do not advance the execution generation. */
78
+ export interface TaskExecutionPrecondition {
79
+ taskId: string;
80
+ snapshot: Task | null;
81
+ }
82
+ export interface ConditionalTaskExecutionStore extends TaskExecutionStore {
83
+ mutateTaskExecutionConditionally(expected: TaskExecutionReference, mutation: TaskExecutionMutation, preconditions: readonly TaskExecutionPrecondition[]): Promise<TaskExecutionState>;
84
+ }
85
+ /** An approval read condition and optional replacement in the SAME transaction
86
+ * as Task/Run state. null asserts absence; omitted next is a read condition only. */
87
+ export interface TaskApprovalChange {
88
+ id: string;
89
+ expected: ApprovalRequest | null;
90
+ next?: ApprovalRequest;
91
+ }
92
+ export interface TaskApprovalDecision {
93
+ expected: TaskExecutionReference;
94
+ /** Must include the complete captured target Task, not only its generation. */
95
+ tasks: TaskExecutionPrecondition[];
96
+ approvals: TaskApprovalChange[];
97
+ /** Omit for a partial gate decision which must leave the waiting Task intact. */
98
+ operation?: TaskExecutionMutation | {
99
+ type: "claim";
100
+ runId: string;
101
+ };
102
+ /** Explicit authority change, separate from the public Task patch surface. */
103
+ approvalState?: TaskApprovalState | null;
104
+ }
105
+ /** This is a persistence capability, not permission to approve arbitrary work.
106
+ * The runtime must bind gate policy and one-use consent to the execution. */
107
+ export interface TaskApprovalExecutionStore extends ConditionalTaskExecutionStore {
108
+ commitTaskApprovalDecision(decision: TaskApprovalDecision): Promise<TaskExecutionState>;
109
+ /** The request adapter bound to the SAME durable project as this Task store. */
110
+ getTaskApprovalStore(): ApprovalStore;
111
+ }
112
+ export declare function isTaskApprovalExecutionStore(value: unknown): value is TaskApprovalExecutionStore;
113
+ export declare class TaskApprovalError extends Error {
114
+ readonly code: "task_approval_invalid" | "task_approval_conflict" | "task_approval_unsupported";
115
+ constructor(code: "task_approval_invalid" | "task_approval_conflict" | "task_approval_unsupported", message: string);
116
+ }
117
+ export declare function normalizeTaskApprovalDecision(raw: TaskApprovalDecision): TaskApprovalDecision;
118
+ /** Apply only inside the same Task/Run/Approval transaction. */
119
+ export declare function applyTaskApprovalState(state: TaskExecutionState, authority: TaskApprovalState | null | undefined): TaskExecutionState;
120
+ /** Call while all approval reads, including absence, are protected until commit. */
121
+ export declare function assertTaskApprovalPreconditions(changes: readonly TaskApprovalChange[], read: (id: string) => ApprovalRequest | undefined): void;
122
+ export declare function isConditionalTaskExecutionStore(value: unknown): value is ConditionalTaskExecutionStore;
123
+ /** Capture the decision's whole dependency graph before asynchronous work. */
124
+ export declare function taskDependencyPreconditions(task: Task, allTasks: readonly Task[]): TaskExecutionPrecondition[];
125
+ export declare class TaskExecutionError extends Error {
126
+ readonly code: "task_execution_invalid" | "task_execution_conflict" | "task_execution_unsupported";
127
+ constructor(code: "task_execution_invalid" | "task_execution_conflict" | "task_execution_unsupported", message: string);
128
+ }
129
+ export declare function isTaskExecutionStore(value: unknown): value is TaskExecutionStore;
130
+ export declare function normalizeTaskExecutionReference(expected: TaskExecutionReference): TaskExecutionReference;
131
+ export declare function taskExecutionReference(task: Task): TaskExecutionReference;
132
+ export declare function nextTaskExecutionRevision(task: Task): number;
133
+ /** Copy before any I/O, retaining explicit undefined (optional-field clearing). */
134
+ export declare function normalizeTaskExecutionMutation(mutation: TaskExecutionMutation): TaskExecutionMutation;
135
+ /** Copy and validate before any I/O; a legacy adapter cannot silently ignore these checks. */
136
+ export declare function normalizeTaskExecutionPreconditions(input: readonly TaskExecutionPrecondition[]): TaskExecutionPrecondition[];
137
+ /** The adapter must keep the read rows/absence stable until its write commits. */
138
+ export declare function assertTaskExecutionPreconditions(conditions: readonly TaskExecutionPrecondition[], read: (id: string) => Task | undefined): void;
139
+ /** Called only while holding the Task/Run transaction. Initial Run state comes
140
+ * from the persisted Task, never from a delayed caller's mutable configuration. */
141
+ export declare function prepareTaskExecutionClaim(task: Task | undefined, expected: TaskExecutionReference, runId: string, now: string): TaskExecutionState & {
142
+ run: RunRecord;
143
+ };
144
+ /** Pure state calculation shared by SQL and file transaction adapters. */
145
+ export declare function prepareTaskExecutionMutation(task: Task | undefined, run: RunRecord | undefined, expected: TaskExecutionReference, mutation: TaskExecutionMutation, now: string): TaskExecutionState;
146
+ //# sourceMappingURL=task-execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-execution.d.ts","sourceRoot":"","sources":["../src/task-execution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,357 @@
1
+ import { assertValidTransition } from "./state-machine.js";
2
+ import { normalizeRuntimeMetadata } from "./runtime-metadata.js";
3
+ export function isTaskApprovalExecutionStore(value) {
4
+ return isConditionalTaskExecutionStore(value)
5
+ && typeof value.commitTaskApprovalDecision === "function"
6
+ && typeof value.getTaskApprovalStore === "function";
7
+ }
8
+ export class TaskApprovalError extends Error {
9
+ code;
10
+ constructor(code, message) {
11
+ super(message);
12
+ this.code = code;
13
+ this.name = "TaskApprovalError";
14
+ }
15
+ }
16
+ function invalidApproval() { throw new TaskApprovalError("task_approval_invalid", "Invalid Task approval decision"); }
17
+ function approvalSnapshotKey(value) {
18
+ const stable = (input) => input === null || typeof input !== "object" ? JSON.stringify(input)
19
+ : Array.isArray(input) ? `[${input.map(stable).join(",")}]`
20
+ : `{${Object.keys(input).sort().map(key => `${JSON.stringify(key)}:${stable(input[key])}`).join(",")}}`;
21
+ try {
22
+ return stable(JSON.parse(JSON.stringify(value)));
23
+ }
24
+ catch {
25
+ return invalidApproval();
26
+ }
27
+ }
28
+ function checkApproval(request, id, taskId) {
29
+ if (!request || typeof request !== "object" || Array.isArray(request) || request.id !== id || request.taskId !== taskId
30
+ || typeof request.gateId !== "string" || typeof request.gateName !== "string" || typeof request.requestedAt !== "string"
31
+ || !["pending", "approved", "rejected", "timeout"].includes(request.status)
32
+ || [request.missionId, request.resolvedAt, request.resolvedBy, request.note].some(value => value !== undefined && typeof value !== "string"))
33
+ invalidApproval();
34
+ const fields = new Set(["id", "gateId", "gateName", "taskId", "missionId", "status", "payload", "requestedAt", "resolvedAt", "resolvedBy", "note", "taskExecution"]);
35
+ if (Object.keys(request).some(key => !fields.has(key)))
36
+ invalidApproval();
37
+ if (request.taskExecution !== undefined) {
38
+ const binding = request.taskExecution;
39
+ if (binding.version !== 1 || !validId(binding.batchId) || !["task:spawn", "task:complete"].includes(binding.hook)
40
+ || !Array.isArray(binding.requestIds) || !binding.requestIds.includes(id) || binding.requestIds.some(id => !validId(id))
41
+ || new Set(binding.requestIds).size !== binding.requestIds.length || !binding.requestIds.length || binding.requestIds.length > 1000
42
+ || !Array.isArray(binding.gates) || binding.gates.length !== binding.requestIds.length
43
+ || binding.gates[binding.requestIds.indexOf(id)]?.id !== request.gateId
44
+ || binding.source?.id !== taskId || binding.invocation?.task?.id !== taskId)
45
+ invalidApproval();
46
+ }
47
+ approvalSnapshotKey(request);
48
+ }
49
+ export function normalizeTaskApprovalDecision(raw) {
50
+ let input;
51
+ try {
52
+ input = structuredClone(raw);
53
+ }
54
+ catch {
55
+ return invalidApproval();
56
+ }
57
+ if (!input || !Array.isArray(input.approvals) || input.approvals.length === 0 || input.approvals.length > 1000)
58
+ invalidApproval();
59
+ input.expected = normalizeTaskExecutionReference(input.expected);
60
+ input.tasks = normalizeTaskExecutionPreconditions(input.tasks);
61
+ const target = input.tasks.find(condition => condition.taskId === input.expected.taskId)?.snapshot;
62
+ if (!target || JSON.stringify(taskExecutionReference(target)) !== JSON.stringify(input.expected))
63
+ invalidApproval();
64
+ const seen = new Set();
65
+ for (const change of input.approvals) {
66
+ if (!change || !validId(change.id) || seen.has(change.id))
67
+ invalidApproval();
68
+ seen.add(change.id);
69
+ if (change.expected !== null)
70
+ checkApproval(change.expected, change.id, input.expected.taskId);
71
+ if (change.next !== undefined) {
72
+ checkApproval(change.next, change.id, input.expected.taskId);
73
+ if (change.expected === null) {
74
+ if (change.next.status !== "pending" || change.next.resolvedAt !== undefined || change.next.resolvedBy !== undefined)
75
+ invalidApproval();
76
+ }
77
+ else {
78
+ // Resolution cannot silently replace the captured gate, subject or input.
79
+ const immutable = (request) => {
80
+ const { status, resolvedAt, resolvedBy, note, ...snapshot } = request;
81
+ return snapshot;
82
+ };
83
+ if (approvalSnapshotKey(immutable(change.expected)) !== approvalSnapshotKey(immutable(change.next)))
84
+ invalidApproval();
85
+ if (change.expected.status !== "pending" && approvalSnapshotKey(change.expected) !== approvalSnapshotKey(change.next))
86
+ invalidApproval();
87
+ }
88
+ }
89
+ }
90
+ if (input.operation !== undefined) {
91
+ if (input.operation?.type === "claim")
92
+ normalizeTaskExecutionReference({ taskId: input.operation.runId, revision: 0 });
93
+ else
94
+ input.operation = normalizeTaskExecutionMutation(input.operation);
95
+ }
96
+ if (input.approvalState !== undefined && input.approvalState !== null) {
97
+ const state = input.approvalState;
98
+ if (!validId(state.batchId) || !["waiting", "ready", "claimed"].includes(state.phase))
99
+ invalidApproval();
100
+ normalizeTaskExecutionReference({ taskId: input.expected.taskId, revision: state.revision, runId: state.runId });
101
+ if (!input.operation || !input.approvals.every(change => (change.next ?? change.expected)?.taskExecution?.batchId === state.batchId))
102
+ invalidApproval();
103
+ }
104
+ return input;
105
+ }
106
+ /** Apply only inside the same Task/Run/Approval transaction. */
107
+ export function applyTaskApprovalState(state, authority) {
108
+ if (authority === undefined)
109
+ return state;
110
+ if (authority !== null) {
111
+ const ref = taskExecutionReference(state.task);
112
+ if (authority.revision !== ref.revision || authority.runId !== ref.runId
113
+ || (authority.phase === "waiting" && state.task.status !== "awaiting_approval")
114
+ || (authority.phase === "ready" && state.task.status !== "pending")
115
+ || (authority.phase === "claimed" && (state.task.status !== "in_progress" || !ref.runId)))
116
+ invalidApproval();
117
+ }
118
+ return { ...state, task: { ...state.task, approvalState: authority ?? undefined } };
119
+ }
120
+ /** Call while all approval reads, including absence, are protected until commit. */
121
+ export function assertTaskApprovalPreconditions(changes, read) {
122
+ for (const change of changes) {
123
+ const current = read(change.id);
124
+ if (change.expected === null ? current !== undefined
125
+ : current === undefined || approvalSnapshotKey(current) !== approvalSnapshotKey(change.expected)) {
126
+ throw new TaskApprovalError("task_approval_conflict", "Approval request changed");
127
+ }
128
+ }
129
+ }
130
+ export function isConditionalTaskExecutionStore(value) {
131
+ return isTaskExecutionStore(value)
132
+ && typeof value.mutateTaskExecutionConditionally === "function";
133
+ }
134
+ /** Capture the decision's whole dependency graph before asynchronous work. */
135
+ export function taskDependencyPreconditions(task, allTasks) {
136
+ const tasks = new Map(allTasks.map(value => [value.id, value]));
137
+ tasks.set(task.id, task);
138
+ const conditions = new Map(), pending = [task.id];
139
+ while (pending.length) {
140
+ const id = pending.pop();
141
+ if (conditions.has(id))
142
+ continue;
143
+ const current = tasks.get(id);
144
+ conditions.set(id, { taskId: id, snapshot: current ?? null });
145
+ if (current)
146
+ pending.push(...current.dependsOn);
147
+ }
148
+ return normalizeTaskExecutionPreconditions([...conditions.values()]);
149
+ }
150
+ export class TaskExecutionError extends Error {
151
+ code;
152
+ constructor(code, message) {
153
+ super(message);
154
+ this.code = code;
155
+ this.name = "TaskExecutionError";
156
+ }
157
+ }
158
+ export function isTaskExecutionStore(value) {
159
+ const store = value;
160
+ return !!store && typeof store.claimTaskExecution === "function" && typeof store.mutateTaskExecution === "function";
161
+ }
162
+ function invalid() { throw new TaskExecutionError("task_execution_invalid", "Invalid Task execution state"); }
163
+ function conflict() { throw new TaskExecutionError("task_execution_conflict", "Task execution changed"); }
164
+ const validId = (value) => typeof value === "string" && /^[a-zA-Z0-9_-]{1,200}$/.test(value);
165
+ export function normalizeTaskExecutionReference(expected) {
166
+ if (!expected || !validId(expected.taskId) || !Number.isSafeInteger(expected.revision)
167
+ || expected.revision < 0 || expected.revision > 2_147_483_647
168
+ || (expected.runId !== undefined && !validId(expected.runId)))
169
+ invalid();
170
+ return { taskId: expected.taskId, revision: expected.revision, ...(expected.runId === undefined ? {} : { runId: expected.runId }) };
171
+ }
172
+ export function taskExecutionReference(task) {
173
+ return normalizeTaskExecutionReference({ taskId: task.id, revision: task.executionRevision ?? 0, runId: task.activeRunId });
174
+ }
175
+ export function nextTaskExecutionRevision(task) {
176
+ const value = taskExecutionReference(task).revision + 1;
177
+ if (value > 2_147_483_647)
178
+ invalid();
179
+ return value;
180
+ }
181
+ function assertCurrent(task, expected) {
182
+ if (!task)
183
+ conflict();
184
+ const current = taskExecutionReference(task);
185
+ if (current.taskId !== expected.taskId || current.revision !== expected.revision || current.runId !== expected.runId)
186
+ conflict();
187
+ }
188
+ /** Copy before any I/O, retaining explicit undefined (optional-field clearing). */
189
+ export function normalizeTaskExecutionMutation(mutation) {
190
+ let copy;
191
+ try {
192
+ copy = structuredClone(mutation);
193
+ }
194
+ catch {
195
+ return invalid();
196
+ }
197
+ if (!copy || !["patch", "transition", "requeue", "cancel"].includes(copy.type))
198
+ invalid();
199
+ if (copy.type === "requeue" && (typeof copy.countRetry !== "boolean" || typeof copy.reason !== "string" || !copy.reason.trim()))
200
+ invalid();
201
+ if (copy.type === "requeue" && copy.onlyIfRunRunning !== undefined && typeof copy.onlyIfRunRunning !== "boolean")
202
+ invalid();
203
+ if ((copy.type === "cancel" || copy.type === "requeue") && copy.reason !== undefined
204
+ && (typeof copy.reason !== "string" || copy.reason.length > 2000))
205
+ invalid();
206
+ if (copy.type !== "cancel" && copy.updates !== undefined) {
207
+ if (!copy.updates || typeof copy.updates !== "object" || Array.isArray(copy.updates))
208
+ invalid();
209
+ for (const field of ["id", "status", "executionRevision", "activeRunId", "retries", "approvalState"]) {
210
+ if (Object.hasOwn(copy.updates, field))
211
+ invalid();
212
+ }
213
+ // A required field cannot be removed. Optional counters have a shared zero
214
+ // default, including in SQL where these columns are deliberately NOT NULL.
215
+ // Normalize here so adapters return and persist the same logical state.
216
+ for (const field of ["title", "description", "assignTo", "dependsOn", "expectations", "metrics", "maxRetries", "createdAt", "updatedAt"]) {
217
+ if (Object.hasOwn(copy.updates, field) && copy.updates[field] == null)
218
+ invalid();
219
+ }
220
+ for (const field of ["fixAttempts", "questionRounds", "resolutionAttempts"]) {
221
+ if (Object.hasOwn(copy.updates, field) && copy.updates[field] === undefined)
222
+ copy.updates[field] = 0;
223
+ const value = copy.updates[field];
224
+ if (value !== undefined && (!Number.isSafeInteger(value) || value < 0 || value > 2_147_483_647))
225
+ invalid();
226
+ }
227
+ if (copy.updates.metadata !== undefined)
228
+ copy.updates.metadata = normalizeRuntimeMetadata(copy.updates.metadata);
229
+ }
230
+ if (copy.type === "patch" && copy.updates === undefined)
231
+ invalid();
232
+ return copy;
233
+ }
234
+ /** Copy and validate before any I/O; a legacy adapter cannot silently ignore these checks. */
235
+ export function normalizeTaskExecutionPreconditions(input) {
236
+ let copied;
237
+ try {
238
+ copied = structuredClone(input);
239
+ }
240
+ catch {
241
+ return invalid();
242
+ }
243
+ if (!Array.isArray(copied) || !copied.length || copied.length > 10000)
244
+ invalid();
245
+ const seen = new Set();
246
+ for (const condition of copied) {
247
+ if (!condition || !validId(condition.taskId) || seen.has(condition.taskId))
248
+ invalid();
249
+ seen.add(condition.taskId);
250
+ if (condition.snapshot !== null) {
251
+ if (!condition.snapshot || condition.snapshot.id !== condition.taskId)
252
+ invalid();
253
+ taskExecutionReference(condition.snapshot);
254
+ taskSnapshotKey(condition.snapshot);
255
+ }
256
+ }
257
+ return copied;
258
+ }
259
+ function taskSnapshotKey(task) {
260
+ // SQL supplies zero defaults and file rows may omit them. JSON object key
261
+ // order is not semantic; optional undefined fields represent absence.
262
+ const normalized = { ...task, executionRevision: task.executionRevision ?? 0,
263
+ fixAttempts: task.fixAttempts ?? 0, questionRounds: task.questionRounds ?? 0, resolutionAttempts: task.resolutionAttempts ?? 0 };
264
+ const stable = (value) => value === null || typeof value !== "object" ? JSON.stringify(value)
265
+ : Array.isArray(value) ? `[${value.map(stable).join(",")}]`
266
+ : `{${Object.keys(value).sort().map(key => `${JSON.stringify(key)}:${stable(value[key])}`).join(",")}}`;
267
+ try {
268
+ return stable(JSON.parse(JSON.stringify(normalized)));
269
+ }
270
+ catch {
271
+ return invalid();
272
+ }
273
+ }
274
+ /** The adapter must keep the read rows/absence stable until its write commits. */
275
+ export function assertTaskExecutionPreconditions(conditions, read) {
276
+ for (const condition of conditions) {
277
+ const current = read(condition.taskId);
278
+ if (condition.snapshot === null) {
279
+ if (current)
280
+ conflict();
281
+ }
282
+ else if (!current || taskSnapshotKey(current) !== taskSnapshotKey(condition.snapshot))
283
+ conflict();
284
+ }
285
+ }
286
+ /** Called only while holding the Task/Run transaction. Initial Run state comes
287
+ * from the persisted Task, never from a delayed caller's mutable configuration. */
288
+ export function prepareTaskExecutionClaim(task, expected, runId, now) {
289
+ assertCurrent(task, expected);
290
+ if (task.status !== "pending" || task.activeRunId !== undefined)
291
+ conflict();
292
+ if (!validId(runId))
293
+ invalid();
294
+ const claimed = { ...task, executionRevision: nextTaskExecutionRevision(task), activeRunId: runId,
295
+ status: "in_progress", phase: task.phase ?? "execution", updatedAt: now, approvalState: undefined };
296
+ const run = { id: runId, taskId: task.id, taskExecutionRevision: claimed.executionRevision,
297
+ agentName: task.assignTo, user: task.user, pid: 0, status: "running", startedAt: now, updatedAt: now,
298
+ activity: { filesCreated: [], filesEdited: [], toolCalls: 0, totalTokens: 0, lastUpdate: now },
299
+ configPath: `pending://${runId}`, engine: "agent", delivery: "background" };
300
+ return { task: claimed, run };
301
+ }
302
+ /** Pure state calculation shared by SQL and file transaction adapters. */
303
+ export function prepareTaskExecutionMutation(task, run, expected, mutation, now) {
304
+ assertCurrent(task, expected);
305
+ if (task.activeRunId !== undefined && (!run || run.id !== task.activeRunId || run.taskId !== task.id
306
+ || run.taskExecutionRevision !== task.executionRevision))
307
+ invalid();
308
+ if (task.activeRunId === undefined && run !== undefined)
309
+ invalid();
310
+ const terminalTask = task.status === "done" || task.status === "failed";
311
+ if (mutation.type === "cancel" && terminalTask && task.activeRunId === undefined && task.approvalState === undefined)
312
+ return { task, run };
313
+ const requeue = mutation.type === "requeue" || (mutation.type === "transition" && mutation.status === "pending");
314
+ const awaitingApproval = mutation.type === "transition" && mutation.status === "awaiting_approval";
315
+ if (mutation.type === "transition")
316
+ assertValidTransition(task.status, mutation.status);
317
+ if (mutation.type === "requeue") {
318
+ // Recovery cannot discard a completion which won after its liveness read.
319
+ if (mutation.onlyIfRunRunning && run?.status !== "running")
320
+ conflict();
321
+ // Escalation may replace work that is still queued. Publishing its new
322
+ // input also advances the generation so a scheduler holding the previous
323
+ // pending snapshot cannot claim it. Counted retries still require a run.
324
+ if (task.status === "draft" || task.status === "done")
325
+ conflict();
326
+ if (mutation.countRetry && !["failed", "review", "in_progress", "assigned"].includes(task.status))
327
+ conflict();
328
+ }
329
+ const updated = { ...task, ...(mutation.type === "cancel" ? {} : mutation.updates), updatedAt: now };
330
+ if (mutation.type === "transition")
331
+ updated.status = mutation.status;
332
+ if (requeue || awaitingApproval || mutation.type === "cancel") {
333
+ updated.executionRevision = nextTaskExecutionRevision(task);
334
+ updated.activeRunId = undefined;
335
+ updated.approvalState = undefined;
336
+ if (requeue) {
337
+ updated.status = "pending";
338
+ const countRetry = mutation.type === "requeue" ? mutation.countRetry : task.status === "failed";
339
+ updated.retries = task.retries + (countRetry ? 1 : 0);
340
+ }
341
+ else if (mutation.type === "cancel") {
342
+ // The old Run remains history, but no longer owns the Task generation.
343
+ if (!terminalTask) {
344
+ updated.status = "failed";
345
+ updated.result = { exitCode: 1, stdout: "", stderr: mutation.reason || "Task cancelled", duration: 0 };
346
+ updated.phase = undefined;
347
+ }
348
+ }
349
+ if (run?.status === "running") {
350
+ run = { ...run, status: "killed", completedAt: now, updatedAt: now,
351
+ result: { exitCode: 1, stdout: "", stderr: mutation.type === "cancel" ? mutation.reason || "Task cancelled" : awaitingApproval ? "Task awaiting approval" : "Task requeued",
352
+ duration: Math.max(0, Date.parse(now) - Date.parse(run.startedAt)) } };
353
+ }
354
+ }
355
+ return { task: updated, run };
356
+ }
357
+ //# sourceMappingURL=task-execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-execution.js","sourceRoot":"","sources":["../src/task-execution.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,27 @@
1
1
  import type { OrchestratorContext } from "./orchestrator-context.js";
2
2
  import type { Task, TaskExpectation, ExpectedOutcome, RetryPolicy, ScopedNotificationRules, RuntimeRoutingOptions, RuntimeSandboxOptions } from "./types.js";
3
+ import { type TaskExecutionReference, type TaskExecutionMutation, type TaskExecutionPrecondition, type TaskExecutionState } from "./task-execution.js";
4
+ export type CreateTaskOptions = {
5
+ title: string;
6
+ description: string;
7
+ assignTo: string;
8
+ loop?: string;
9
+ expectations?: TaskExpectation[];
10
+ expectedOutcomes?: ExpectedOutcome[];
11
+ dependsOn?: string[];
12
+ group?: string;
13
+ missionId?: string;
14
+ maxDuration?: number;
15
+ retryPolicy?: RetryPolicy;
16
+ notifications?: ScopedNotificationRules;
17
+ sideEffects?: boolean;
18
+ executionMode?: import("./types/config.js").ExecutionMode;
19
+ sandbox?: RuntimeSandboxOptions;
20
+ routing?: RuntimeRoutingOptions;
21
+ user?: string;
22
+ metadata?: Record<string, string>;
23
+ draft?: boolean;
24
+ };
3
25
  /**
4
26
  * Task CRUD: add, update, retry, reassess, kill, abort, clear.
5
27
  */
@@ -7,26 +29,11 @@ export declare class TaskManager {
7
29
  private ctx;
8
30
  private idMap;
9
31
  constructor(ctx: OrchestratorContext);
10
- createTask(opts: {
11
- title: string;
12
- description: string;
13
- assignTo: string;
14
- loop?: string;
15
- expectations?: TaskExpectation[];
16
- expectedOutcomes?: ExpectedOutcome[];
17
- dependsOn?: string[];
18
- group?: string;
19
- missionId?: string;
20
- maxDuration?: number;
21
- retryPolicy?: RetryPolicy;
22
- notifications?: ScopedNotificationRules;
23
- sideEffects?: boolean;
24
- executionMode?: import("./types/config.js").ExecutionMode;
25
- sandbox?: RuntimeSandboxOptions;
26
- routing?: RuntimeRoutingOptions;
27
- user?: string;
28
- draft?: boolean;
29
- }): Promise<Task>;
32
+ createTask(opts: CreateTaskOptions): Promise<Task>;
33
+ /** Run planning hooks and validation without publishing a runnable task. */
34
+ prepareTask(opts: CreateTaskOptions): Promise<Parameters<OrchestratorContext["taskStore"]["createTask"]>[0]>;
35
+ /** Publish only after the task (or whole Mission admission) has committed. */
36
+ notifyTaskCreated(task: Task): void;
30
37
  updateTaskDescription(taskId: string, description: string): Promise<void>;
31
38
  updateTaskAssignment(taskId: string, agentName: string): Promise<void>;
32
39
  updateTaskExpectations(taskId: string, expectations: TaskExpectation[]): Promise<void>;
@@ -37,7 +44,9 @@ export declare class TaskManager {
37
44
  clearTasks(filter: (task: Task) => boolean): Promise<number>;
38
45
  /** Load initial tasks from config (non-interactive mode). */
39
46
  seedTasks(): Promise<void>;
40
- /** Force a task through the state machine to failed (used by deadlock resolver). */
41
- forceFailTask(taskId: string): Promise<void>;
47
+ /** Commit a decision against every row it observed, then notify its Run owner. */
48
+ applyTaskExecutionDecision(expected: TaskExecutionReference, mutation: TaskExecutionMutation, preconditions: readonly TaskExecutionPrecondition[]): Promise<TaskExecutionState>;
49
+ /** Fail one captured attempt, including its still-owned Run. */
50
+ forceFailTask(taskId: string, expected?: TaskExecutionReference): Promise<void>;
42
51
  }
43
52
  //# sourceMappingURL=task-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"task-manager.d.ts","sourceRoot":"","sources":["../src/task-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAiB,uBAAuB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAI5K;;GAEG;AACH,qBAAa,WAAW;IAGV,OAAO,CAAC,GAAG;IAFvB,OAAO,CAAC,KAAK,CAA6B;gBAEtB,GAAG,EAAE,mBAAmB;IAEtC,UAAU,CAAC,IAAI,EAAE;QACrB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;QACjC,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;QACrC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,aAAa,CAAC,EAAE,uBAAuB,CAAC;QACxC,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,aAAa,CAAC,EAAE,OAAO,mBAAmB,EAAE,aAAa,CAAC;QAC1D,OAAO,CAAC,EAAE,qBAAqB,CAAC;QAChC,OAAO,CAAC,EAAE,qBAAqB,CAAC;QAChC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkFX,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzE,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItE,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAatF,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxC,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyF3C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB1C,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB1C,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAalE,6DAA6D;IACvD,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAuChC,oFAAoF;IAC9E,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAWnD"}
1
+ {"version":3,"file":"task-manager.d.ts","sourceRoot":"","sources":["../src/task-manager.ts"],"names":[],"mappings":"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"}