pi-harness-runtime 1.1.237 → 1.1.239
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/index.ts +63 -18
- package/package.json +1 -1
- package/packages/a2a-adapter/package.json +1 -1
- package/packages/agent-policy/package.json +1 -1
- package/packages/architecture-generator/package.json +1 -1
- package/packages/auth/package.json +1 -1
- package/packages/autonomous-refactor/package.json +1 -1
- package/packages/autonomous-runtime/package.json +1 -1
- package/packages/cache-strategy/package.json +1 -1
- package/packages/capability-registry/package.json +1 -1
- package/packages/checkpoint/package.json +1 -1
- package/packages/cli-plugin-sdk/package.json +1 -1
- package/packages/clipboard/package.json +1 -1
- package/packages/clipboard-plugin/package.json +1 -1
- package/packages/code-generation/package.json +1 -1
- package/packages/code-review/package.json +1 -1
- package/packages/codex-adapter/package.json +1 -1
- package/packages/codex-watcher/package.json +1 -1
- package/packages/config-capture/package.json +1 -1
- package/packages/context-compiler/package.json +1 -1
- package/packages/context-discovery/package.json +1 -1
- package/packages/context-manager/package.json +1 -1
- package/packages/cookie-sanitizer/package.json +1 -1
- package/packages/cost-optimizer/package.json +1 -1
- package/packages/dependency-analyzer/package.json +1 -1
- package/packages/django-plugin/package.json +1 -1
- package/packages/doc-generator/package.json +1 -1
- package/packages/e2e-tester/package.json +1 -1
- package/packages/evaluation-engine/package.json +1 -1
- package/packages/evaluation-runner/package.json +1 -1
- package/packages/event-bus/package.json +1 -1
- package/packages/event-store/package.json +1 -1
- package/packages/experience-replay/package.json +1 -1
- package/packages/feedback-collector/package.json +1 -1
- package/packages/file-copy-helper/package.json +1 -1
- package/packages/framework-detector/package.json +1 -1
- package/packages/framework-plugin-sdk/package.json +1 -1
- package/packages/frappe-plugin/package.json +1 -1
- package/packages/generic-web-plugin/package.json +1 -1
- package/packages/health-monitor/package.json +1 -1
- package/packages/intent-analyzer/package.json +1 -1
- package/packages/jev-judge/dist/continuation-controller.d.ts +24 -0
- package/packages/jev-judge/dist/continuation-controller.d.ts.map +1 -1
- package/packages/jev-judge/dist/continuation-controller.js +63 -6
- package/packages/jev-judge/dist/continuation-controller.js.map +1 -1
- package/packages/jev-judge/dist/task-intake.d.ts +31 -1
- package/packages/jev-judge/dist/task-intake.d.ts.map +1 -1
- package/packages/jev-judge/dist/task-intake.js +70 -13
- package/packages/jev-judge/dist/task-intake.js.map +1 -1
- package/packages/jev-judge/package.json +1 -1
- package/packages/jev-judge/src/continuation-controller.ts +71 -6
- package/packages/jev-judge/src/task-intake.ts +84 -17
- package/packages/knowledge-graph/package.json +1 -1
- package/packages/knowledge-retrieval/package.json +1 -1
- package/packages/laravel-plugin/package.json +1 -1
- package/packages/learning-engine/package.json +1 -1
- package/packages/mcp-adapter/package.json +1 -1
- package/packages/memory-engine/package.json +1 -1
- package/packages/milestone-manager/package.json +1 -1
- package/packages/model-registry/package.json +1 -1
- package/packages/nextjs-plugin/package.json +1 -1
- package/packages/notification/package.json +1 -1
- package/packages/observability/package.json +1 -1
- package/packages/okf-indexer/package.json +1 -1
- package/packages/paperclip-integration/package.json +1 -1
- package/packages/performance-optimizer/package.json +1 -1
- package/packages/privilege-broker/package.json +1 -1
- package/packages/project-analyzer/package.json +1 -1
- package/packages/project-bootstrap/package.json +1 -1
- package/packages/projection-engine/package.json +1 -1
- package/packages/prompt-compiler/package.json +1 -1
- package/packages/prompt-versioning/package.json +1 -1
- package/packages/provider-adapter-sdk/package.json +1 -1
- package/packages/provider-router/package.json +1 -1
- package/packages/provider-selector/package.json +1 -1
- package/packages/providers/package.json +1 -1
- package/packages/qdrant-skills/package.json +1 -1
- package/packages/quota-manager/package.json +1 -1
- package/packages/rate-limiter/package.json +1 -1
- package/packages/react-vite-plugin/package.json +1 -1
- package/packages/release-manager/package.json +1 -1
- package/packages/requirement-compiler/package.json +1 -1
- package/packages/runtime/package.json +1 -1
- package/packages/scheduler/package.json +1 -1
- package/packages/scheduler-adapter/package.json +1 -1
- package/packages/session/package.json +1 -1
- package/packages/session-api/package.json +1 -1
- package/packages/session-export/package.json +1 -1
- package/packages/shared-context/package.json +1 -1
- package/packages/skill-mcp-client/package.json +1 -1
- package/packages/skill-registry/package.json +1 -1
- package/packages/skills/package.json +1 -1
- package/packages/sprint-planner/package.json +1 -1
- package/packages/subscription-engine/package.json +1 -1
- package/packages/task-compiler/package.json +1 -1
- package/packages/telegram/package.json +1 -1
- package/packages/tencentdb-memory/package.json +1 -1
- package/packages/tencentdb-sync/package.json +1 -1
- package/packages/test-data-generator/package.json +1 -1
- package/packages/test-generator/package.json +1 -1
- package/packages/todo-bd-sync/package.json +1 -1
- package/packages/token-estimation/package.json +1 -1
- package/packages/token-optimizer/package.json +1 -1
- package/packages/trajectory/package.json +1 -1
- package/packages/tui/package.json +1 -1
- package/packages/types/package.json +1 -1
- package/packages/webmcp-tester/package.json +1 -1
- package/packages/workflow-events/package.json +1 -1
- package/packages/workspace-scanner/package.json +1 -1
- package/packages/worktree/package.json +1 -1
- package/packages/write-review/package.json +1 -1
|
@@ -33,11 +33,13 @@ export class TodoContinuationController {
|
|
|
33
33
|
lastMessageId: null,
|
|
34
34
|
continuationQueued: false,
|
|
35
35
|
userPaused: false,
|
|
36
|
+
explicitPause: false,
|
|
36
37
|
lastSteerMessage: null,
|
|
37
38
|
steerAttemptsForCurrentItem: 0,
|
|
38
39
|
lastItemContinued: null,
|
|
39
40
|
lastEvaluationResult: null,
|
|
40
41
|
};
|
|
42
|
+
_inFlight = false; // Guard against concurrent dispatches
|
|
41
43
|
constructor(ctx, config) {
|
|
42
44
|
this.ctx = ctx;
|
|
43
45
|
this.todoProvider = createTodoProvider(ctx);
|
|
@@ -53,8 +55,9 @@ export class TodoContinuationController {
|
|
|
53
55
|
* Check if continuation is allowed (not paused, session idle)
|
|
54
56
|
*/
|
|
55
57
|
canContinue() {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
+
// Only blocked by explicit pause, not by temporary user input pause
|
|
59
|
+
if (this.state.explicitPause) {
|
|
60
|
+
debugLog("TodoContinuation", "Explicitly paused, not continuing");
|
|
58
61
|
return false;
|
|
59
62
|
}
|
|
60
63
|
if (this.ctx.isIdle?.() === false) {
|
|
@@ -67,6 +70,47 @@ export class TodoContinuationController {
|
|
|
67
70
|
}
|
|
68
71
|
return true;
|
|
69
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* User explicitly paused - only this clears on explicit resume
|
|
75
|
+
*/
|
|
76
|
+
explicitPause() {
|
|
77
|
+
debugLog("TodoContinuation", "Explicit pause requested");
|
|
78
|
+
this.state.explicitPause = true;
|
|
79
|
+
this.state.userPaused = true;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Resume from explicit pause
|
|
83
|
+
*/
|
|
84
|
+
resume() {
|
|
85
|
+
if (this.state.explicitPause) {
|
|
86
|
+
debugLog("TodoContinuation", "Resuming from explicit pause");
|
|
87
|
+
this.state.explicitPause = false;
|
|
88
|
+
this.state.userPaused = false;
|
|
89
|
+
this.clearQueue();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get current todo snapshot (exposed for task intake)
|
|
94
|
+
*/
|
|
95
|
+
async getSnapshot() {
|
|
96
|
+
return this.todoProvider.getSnapshot();
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Temporary pause for user input processing
|
|
100
|
+
* Does not require explicit resume
|
|
101
|
+
*/
|
|
102
|
+
tempPause() {
|
|
103
|
+
debugLog("TodoContinuation", "Temporary pause for user input");
|
|
104
|
+
this.state.userPaused = true;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Clear continuation queue (called when work completes or starts)
|
|
108
|
+
*/
|
|
109
|
+
clearQueue() {
|
|
110
|
+
this.state.continuationQueued = false;
|
|
111
|
+
this._inFlight = false;
|
|
112
|
+
debugLog("TodoContinuation", "Continuation queue cleared");
|
|
113
|
+
}
|
|
70
114
|
/**
|
|
71
115
|
* Public method to evaluate and execute continuation
|
|
72
116
|
* Called by external handlers (e.g., agent_settled)
|
|
@@ -175,11 +219,17 @@ export class TodoContinuationController {
|
|
|
175
219
|
}
|
|
176
220
|
/**
|
|
177
221
|
* Guarded dispatch - checks all conditions before sending
|
|
222
|
+
* Uses in-flight guard to prevent race conditions
|
|
178
223
|
*/
|
|
179
224
|
async guardedDispatch(itemId, message) {
|
|
180
|
-
//
|
|
181
|
-
if (this.
|
|
182
|
-
debugLog("TodoContinuation", "Guarded dispatch:
|
|
225
|
+
// 0. Acquire in-flight guard to prevent concurrent dispatches
|
|
226
|
+
if (this._inFlight) {
|
|
227
|
+
debugLog("TodoContinuation", "Guarded dispatch: already in-flight, skipping");
|
|
228
|
+
return false;
|
|
229
|
+
}
|
|
230
|
+
// 1. Check if paused by explicit user pause
|
|
231
|
+
if (this.state.explicitPause) {
|
|
232
|
+
debugLog("TodoContinuation", "Guarded dispatch: explicitly paused, skipping");
|
|
183
233
|
return false;
|
|
184
234
|
}
|
|
185
235
|
// 2. Check if session is still idle
|
|
@@ -192,18 +242,21 @@ export class TodoContinuationController {
|
|
|
192
242
|
debugLog("TodoContinuation", "Guarded dispatch: already queued, skipping");
|
|
193
243
|
return false;
|
|
194
244
|
}
|
|
195
|
-
// 4. Verify item still needs work (not completed)
|
|
245
|
+
// 4. Verify item still needs work (not completed) - acquire guard BEFORE await
|
|
246
|
+
this._inFlight = true;
|
|
196
247
|
try {
|
|
197
248
|
const snapshot = await this.todoProvider.getSnapshot();
|
|
198
249
|
const item = snapshot.items.find((i) => i.id === itemId);
|
|
199
250
|
if (item?.status === "completed") {
|
|
200
251
|
debugLog("TodoContinuation", "Guarded dispatch: item completed, skipping");
|
|
252
|
+
this._inFlight = false;
|
|
201
253
|
return false;
|
|
202
254
|
}
|
|
203
255
|
}
|
|
204
256
|
catch {
|
|
205
257
|
// If we can't read todos, skip dispatch
|
|
206
258
|
debugLog("TodoContinuation", "Guarded dispatch: failed to read todos, skipping");
|
|
259
|
+
this._inFlight = false;
|
|
207
260
|
return false;
|
|
208
261
|
}
|
|
209
262
|
// All checks passed - dispatch
|
|
@@ -211,11 +264,13 @@ export class TodoContinuationController {
|
|
|
211
264
|
this.state.lastSteerMessage = message;
|
|
212
265
|
try {
|
|
213
266
|
await this.config.dispatch(message);
|
|
267
|
+
// Queue stays set while agent processes - cleared on agent_settled
|
|
214
268
|
return true;
|
|
215
269
|
}
|
|
216
270
|
catch (err) {
|
|
217
271
|
debugLog("TodoContinuation", "Guarded dispatch failed:", String(err));
|
|
218
272
|
this.state.continuationQueued = false;
|
|
273
|
+
this._inFlight = false;
|
|
219
274
|
return false;
|
|
220
275
|
}
|
|
221
276
|
}
|
|
@@ -270,11 +325,13 @@ export class TodoContinuationController {
|
|
|
270
325
|
lastMessageId: null,
|
|
271
326
|
continuationQueued: false,
|
|
272
327
|
userPaused: false,
|
|
328
|
+
explicitPause: false,
|
|
273
329
|
lastSteerMessage: null,
|
|
274
330
|
steerAttemptsForCurrentItem: 0,
|
|
275
331
|
lastItemContinued: null,
|
|
276
332
|
lastEvaluationResult: null,
|
|
277
333
|
};
|
|
334
|
+
this._inFlight = false;
|
|
278
335
|
}
|
|
279
336
|
/**
|
|
280
337
|
* Cleanup on shutdown
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continuation-controller.js","sourceRoot":"","sources":["../src/continuation-controller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"continuation-controller.js","sourceRoot":"","sources":["../src/continuation-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,8 @@ export interface TaskIntakeResult {
|
|
|
30
30
|
modifiesExisting: boolean;
|
|
31
31
|
/** Recommended action */
|
|
32
32
|
action: "create" | "skip" | "amend" | "investigate";
|
|
33
|
+
/** Existing todo ID if duplicate/modifies */
|
|
34
|
+
existingTodoId?: number;
|
|
33
35
|
}
|
|
34
36
|
/**
|
|
35
37
|
* Task Intake Controller
|
|
@@ -42,6 +44,8 @@ export declare class TaskIntakeController {
|
|
|
42
44
|
private config;
|
|
43
45
|
private lastRequest;
|
|
44
46
|
private lastResult;
|
|
47
|
+
private recentCaptures;
|
|
48
|
+
private readonly CAPTURE_COOLDOWN_MS;
|
|
45
49
|
constructor(config: TaskIntakeConfig);
|
|
46
50
|
/**
|
|
47
51
|
* Check if Jev is available
|
|
@@ -51,14 +55,40 @@ export declare class TaskIntakeController {
|
|
|
51
55
|
* Evaluate a user request for task capture
|
|
52
56
|
*/
|
|
53
57
|
evaluate(userMessage: string, existingTodos?: string[]): Promise<TaskIntakeResult>;
|
|
58
|
+
/**
|
|
59
|
+
* Evaluate with actual todo items from continuation controller
|
|
60
|
+
*/
|
|
61
|
+
evaluateWithTodos(userMessage: string, controller: {
|
|
62
|
+
getSnapshot: () => Promise<{
|
|
63
|
+
items: Array<{
|
|
64
|
+
id: number;
|
|
65
|
+
subject: string;
|
|
66
|
+
status: string;
|
|
67
|
+
}>;
|
|
68
|
+
}>;
|
|
69
|
+
}): Promise<TaskIntakeResult>;
|
|
70
|
+
/**
|
|
71
|
+
* Hash a message for deduplication
|
|
72
|
+
*/
|
|
73
|
+
private hashMessage;
|
|
74
|
+
/**
|
|
75
|
+
* Record a capture request to prevent re-triggering
|
|
76
|
+
*/
|
|
77
|
+
private _recordCapture;
|
|
78
|
+
/**
|
|
79
|
+
* Internal evaluation logic
|
|
80
|
+
*/
|
|
81
|
+
private _evaluate;
|
|
54
82
|
/**
|
|
55
83
|
* Simple heuristic when Jev is not available
|
|
56
84
|
*/
|
|
57
85
|
private simpleHeuristic;
|
|
58
86
|
/**
|
|
59
87
|
* Dispatch a capture request to the agent
|
|
88
|
+
* @param userMessage - The original user message to capture
|
|
89
|
+
* @param customType - Optional custom type for the message (default: "task-capture")
|
|
60
90
|
*/
|
|
61
|
-
requestCapture(userMessage: string,
|
|
91
|
+
requestCapture(userMessage: string, customType?: string): Promise<void>;
|
|
62
92
|
/**
|
|
63
93
|
* Reset state
|
|
64
94
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-intake.d.ts","sourceRoot":"","sources":["../src/task-intake.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACvD,yDAAyD;IACzD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sDAAsD;IACtD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,gEAAgE;IAChE,UAAU,EAAE,OAAO,CAAC;IACpB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,WAAW,EAAE,OAAO,CAAC;IACrB,kDAAkD;IAClD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yBAAyB;IACzB,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"task-intake.d.ts","sourceRoot":"","sources":["../src/task-intake.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACvD,yDAAyD;IACzD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sDAAsD;IACtD,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,gEAAgE;IAChE,UAAU,EAAE,OAAO,CAAC;IACpB,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,WAAW,EAAE,OAAO,CAAC;IACrB,kDAAkD;IAClD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yBAAyB;IACzB,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;IACpD,6CAA6C;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,qBAAa,oBAAoB;IAChC,OAAO,CAAC,GAAG,CAAyB;IACpC,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,UAAU,CAAiC;IAEnD,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAE7C,YAAY,MAAM,EAAE,gBAAgB,EAUnC;IAED;;OAEG;IACH,WAAW,IAAI,OAAO,CAErB;IAED;;OAEG;IACG,QAAQ,CACb,WAAW,EAAE,MAAM,EACnB,aAAa,GAAE,MAAM,EAAO,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAE3B;IAED;;OAEG;IACG,iBAAiB,CACtB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE;QAAE,WAAW,EAAE,MAAM,OAAO,CAAC;YAAE,KAAK,EAAE,KAAK,CAAC;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAC,CAAA;KAAE,GAC3G,OAAO,CAAC,gBAAgB,CAAC,CAoC3B;IAED;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;OAEG;IACH,OAAO,CAAC,cAAc;IAStB;;OAEG;YACW,SAAS;IAwFvB;;OAEG;IACH,OAAO,CAAC,eAAe;IA0EvB;;;;OAIG;IACG,cAAc,CACnB,WAAW,EAAE,MAAM,EACnB,UAAU,GAAE,MAAuB,GACjC,OAAO,CAAC,IAAI,CAAC,CAOf;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAGZ;CACD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,oBAAoB,CAE/E"}
|
|
@@ -18,6 +18,9 @@ export class TaskIntakeController {
|
|
|
18
18
|
config;
|
|
19
19
|
lastRequest = null;
|
|
20
20
|
lastResult = null;
|
|
21
|
+
// Track recent capture request hashes to prevent self-triggering
|
|
22
|
+
recentCaptures = new Set();
|
|
23
|
+
CAPTURE_COOLDOWN_MS = 30000; // Don't re-trigger for same content within 30s
|
|
21
24
|
constructor(config) {
|
|
22
25
|
this.config = {
|
|
23
26
|
actionableThreshold: 0.7,
|
|
@@ -38,6 +41,68 @@ export class TaskIntakeController {
|
|
|
38
41
|
* Evaluate a user request for task capture
|
|
39
42
|
*/
|
|
40
43
|
async evaluate(userMessage, existingTodos = []) {
|
|
44
|
+
return this._evaluate(userMessage, existingTodos);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Evaluate with actual todo items from continuation controller
|
|
48
|
+
*/
|
|
49
|
+
async evaluateWithTodos(userMessage, controller) {
|
|
50
|
+
// Check for harness-internal messages (prevent self-triggering)
|
|
51
|
+
if (userMessage.includes("[harness:task-capture]")) {
|
|
52
|
+
return {
|
|
53
|
+
actionable: false,
|
|
54
|
+
probability: 0,
|
|
55
|
+
isDuplicate: false,
|
|
56
|
+
modifiesExisting: false,
|
|
57
|
+
action: "skip",
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// Check recent captures to prevent rapid re-triggering
|
|
61
|
+
const hash = this.hashMessage(userMessage);
|
|
62
|
+
if (this.recentCaptures.has(hash)) {
|
|
63
|
+
return {
|
|
64
|
+
actionable: false,
|
|
65
|
+
probability: 0,
|
|
66
|
+
isDuplicate: false,
|
|
67
|
+
modifiesExisting: false,
|
|
68
|
+
action: "skip",
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
// Get actual todos from the continuation controller
|
|
72
|
+
let existingTodos = [];
|
|
73
|
+
try {
|
|
74
|
+
const snapshot = await controller.getSnapshot();
|
|
75
|
+
existingTodos = snapshot.items
|
|
76
|
+
.filter((i) => i.status !== "completed" && i.status !== "deleted")
|
|
77
|
+
.map((i) => i.subject);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Ignore errors, use empty list
|
|
81
|
+
}
|
|
82
|
+
return this._evaluate(userMessage, existingTodos);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Hash a message for deduplication
|
|
86
|
+
*/
|
|
87
|
+
hashMessage(msg) {
|
|
88
|
+
// Simple hash - just use first 100 chars
|
|
89
|
+
return msg.slice(0, 100).trim();
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Record a capture request to prevent re-triggering
|
|
93
|
+
*/
|
|
94
|
+
_recordCapture(userMessage) {
|
|
95
|
+
const hash = this.hashMessage(userMessage);
|
|
96
|
+
this.recentCaptures.add(hash);
|
|
97
|
+
// Clean up old entries after cooldown
|
|
98
|
+
setTimeout(() => {
|
|
99
|
+
this.recentCaptures.delete(hash);
|
|
100
|
+
}, this.CAPTURE_COOLDOWN_MS);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Internal evaluation logic
|
|
104
|
+
*/
|
|
105
|
+
async _evaluate(userMessage, existingTodos) {
|
|
41
106
|
// Deduplicate identical requests
|
|
42
107
|
if (userMessage === this.lastRequest && this.lastResult) {
|
|
43
108
|
return this.lastResult;
|
|
@@ -183,21 +248,13 @@ export class TaskIntakeController {
|
|
|
183
248
|
}
|
|
184
249
|
/**
|
|
185
250
|
* Dispatch a capture request to the agent
|
|
251
|
+
* @param userMessage - The original user message to capture
|
|
252
|
+
* @param customType - Optional custom type for the message (default: "task-capture")
|
|
186
253
|
*/
|
|
187
|
-
async requestCapture(userMessage,
|
|
188
|
-
const result = await this.evaluate(userMessage, existingTodos);
|
|
189
|
-
if (result.action === "skip") {
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
254
|
+
async requestCapture(userMessage, customType = "task-capture") {
|
|
192
255
|
// Build a message to prompt the agent to create todos
|
|
193
|
-
let message =
|
|
194
|
-
if
|
|
195
|
-
message += "Potential duplicate detected. ";
|
|
196
|
-
}
|
|
197
|
-
if (result.modifiesExisting) {
|
|
198
|
-
message += "Existing task modification detected. ";
|
|
199
|
-
}
|
|
200
|
-
message += `Please capture this work in the todo list if not already tracked.`;
|
|
256
|
+
let message = `[${customType}] Work detected in user request: "${userMessage.slice(0, 200)}"`;
|
|
257
|
+
message += "\n\nPlease capture this work in the todo list if not already tracked.";
|
|
201
258
|
await this.config.dispatch(message);
|
|
202
259
|
}
|
|
203
260
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-intake.js","sourceRoot":"","sources":["../src/task-intake.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"task-intake.js","sourceRoot":"","sources":["../src/task-intake.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,7 @@ export interface ContinuationState {
|
|
|
45
45
|
lastMessageId: string | null;
|
|
46
46
|
continuationQueued: boolean;
|
|
47
47
|
userPaused: boolean;
|
|
48
|
+
explicitPause: boolean; // True when user explicitly paused
|
|
48
49
|
lastSteerMessage: string | null;
|
|
49
50
|
steerAttemptsForCurrentItem: number;
|
|
50
51
|
lastItemContinued: number | null;
|
|
@@ -80,12 +81,15 @@ export class TodoContinuationController {
|
|
|
80
81
|
lastMessageId: null,
|
|
81
82
|
continuationQueued: false,
|
|
82
83
|
userPaused: false,
|
|
84
|
+
explicitPause: false,
|
|
83
85
|
lastSteerMessage: null,
|
|
84
86
|
steerAttemptsForCurrentItem: 0,
|
|
85
87
|
lastItemContinued: null,
|
|
86
88
|
lastEvaluationResult: null,
|
|
87
89
|
};
|
|
88
90
|
|
|
91
|
+
private _inFlight = false; // Guard against concurrent dispatches
|
|
92
|
+
|
|
89
93
|
constructor(ctx: TodoContext, config?: ContinuationConfig) {
|
|
90
94
|
this.ctx = ctx;
|
|
91
95
|
this.todoProvider = createTodoProvider(ctx);
|
|
@@ -102,8 +106,9 @@ export class TodoContinuationController {
|
|
|
102
106
|
* Check if continuation is allowed (not paused, session idle)
|
|
103
107
|
*/
|
|
104
108
|
private canContinue(): boolean {
|
|
105
|
-
|
|
106
|
-
|
|
109
|
+
// Only blocked by explicit pause, not by temporary user input pause
|
|
110
|
+
if (this.state.explicitPause) {
|
|
111
|
+
debugLog("TodoContinuation", "Explicitly paused, not continuing");
|
|
107
112
|
return false;
|
|
108
113
|
}
|
|
109
114
|
if (this.ctx.isIdle?.() === false) {
|
|
@@ -117,6 +122,52 @@ export class TodoContinuationController {
|
|
|
117
122
|
return true;
|
|
118
123
|
}
|
|
119
124
|
|
|
125
|
+
/**
|
|
126
|
+
* User explicitly paused - only this clears on explicit resume
|
|
127
|
+
*/
|
|
128
|
+
explicitPause(): void {
|
|
129
|
+
debugLog("TodoContinuation", "Explicit pause requested");
|
|
130
|
+
this.state.explicitPause = true;
|
|
131
|
+
this.state.userPaused = true;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Resume from explicit pause
|
|
136
|
+
*/
|
|
137
|
+
resume(): void {
|
|
138
|
+
if (this.state.explicitPause) {
|
|
139
|
+
debugLog("TodoContinuation", "Resuming from explicit pause");
|
|
140
|
+
this.state.explicitPause = false;
|
|
141
|
+
this.state.userPaused = false;
|
|
142
|
+
this.clearQueue();
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Get current todo snapshot (exposed for task intake)
|
|
148
|
+
*/
|
|
149
|
+
async getSnapshot() {
|
|
150
|
+
return this.todoProvider.getSnapshot();
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Temporary pause for user input processing
|
|
155
|
+
* Does not require explicit resume
|
|
156
|
+
*/
|
|
157
|
+
tempPause(): void {
|
|
158
|
+
debugLog("TodoContinuation", "Temporary pause for user input");
|
|
159
|
+
this.state.userPaused = true;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Clear continuation queue (called when work completes or starts)
|
|
164
|
+
*/
|
|
165
|
+
clearQueue(): void {
|
|
166
|
+
this.state.continuationQueued = false;
|
|
167
|
+
this._inFlight = false;
|
|
168
|
+
debugLog("TodoContinuation", "Continuation queue cleared");
|
|
169
|
+
}
|
|
170
|
+
|
|
120
171
|
/**
|
|
121
172
|
* Public method to evaluate and execute continuation
|
|
122
173
|
* Called by external handlers (e.g., agent_settled)
|
|
@@ -244,11 +295,18 @@ export class TodoContinuationController {
|
|
|
244
295
|
|
|
245
296
|
/**
|
|
246
297
|
* Guarded dispatch - checks all conditions before sending
|
|
298
|
+
* Uses in-flight guard to prevent race conditions
|
|
247
299
|
*/
|
|
248
300
|
private async guardedDispatch(itemId: number, message: string): Promise<boolean> {
|
|
249
|
-
//
|
|
250
|
-
if (this.
|
|
251
|
-
debugLog("TodoContinuation", "Guarded dispatch:
|
|
301
|
+
// 0. Acquire in-flight guard to prevent concurrent dispatches
|
|
302
|
+
if (this._inFlight) {
|
|
303
|
+
debugLog("TodoContinuation", "Guarded dispatch: already in-flight, skipping");
|
|
304
|
+
return false;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
// 1. Check if paused by explicit user pause
|
|
308
|
+
if (this.state.explicitPause) {
|
|
309
|
+
debugLog("TodoContinuation", "Guarded dispatch: explicitly paused, skipping");
|
|
252
310
|
return false;
|
|
253
311
|
}
|
|
254
312
|
|
|
@@ -264,17 +322,20 @@ export class TodoContinuationController {
|
|
|
264
322
|
return false;
|
|
265
323
|
}
|
|
266
324
|
|
|
267
|
-
// 4. Verify item still needs work (not completed)
|
|
325
|
+
// 4. Verify item still needs work (not completed) - acquire guard BEFORE await
|
|
326
|
+
this._inFlight = true;
|
|
268
327
|
try {
|
|
269
328
|
const snapshot = await this.todoProvider.getSnapshot();
|
|
270
329
|
const item = snapshot.items.find((i) => i.id === itemId);
|
|
271
330
|
if (item?.status === "completed") {
|
|
272
331
|
debugLog("TodoContinuation", "Guarded dispatch: item completed, skipping");
|
|
332
|
+
this._inFlight = false;
|
|
273
333
|
return false;
|
|
274
334
|
}
|
|
275
335
|
} catch {
|
|
276
336
|
// If we can't read todos, skip dispatch
|
|
277
337
|
debugLog("TodoContinuation", "Guarded dispatch: failed to read todos, skipping");
|
|
338
|
+
this._inFlight = false;
|
|
278
339
|
return false;
|
|
279
340
|
}
|
|
280
341
|
|
|
@@ -284,10 +345,12 @@ export class TodoContinuationController {
|
|
|
284
345
|
|
|
285
346
|
try {
|
|
286
347
|
await this.config.dispatch(message);
|
|
348
|
+
// Queue stays set while agent processes - cleared on agent_settled
|
|
287
349
|
return true;
|
|
288
350
|
} catch (err) {
|
|
289
351
|
debugLog("TodoContinuation", "Guarded dispatch failed:", String(err));
|
|
290
352
|
this.state.continuationQueued = false;
|
|
353
|
+
this._inFlight = false;
|
|
291
354
|
return false;
|
|
292
355
|
}
|
|
293
356
|
}
|
|
@@ -350,11 +413,13 @@ export class TodoContinuationController {
|
|
|
350
413
|
lastMessageId: null,
|
|
351
414
|
continuationQueued: false,
|
|
352
415
|
userPaused: false,
|
|
416
|
+
explicitPause: false,
|
|
353
417
|
lastSteerMessage: null,
|
|
354
418
|
steerAttemptsForCurrentItem: 0,
|
|
355
419
|
lastItemContinued: null,
|
|
356
420
|
lastEvaluationResult: null,
|
|
357
421
|
};
|
|
422
|
+
this._inFlight = false;
|
|
358
423
|
}
|
|
359
424
|
|
|
360
425
|
/**
|