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.
Files changed (111) hide show
  1. package/index.ts +63 -18
  2. package/package.json +1 -1
  3. package/packages/a2a-adapter/package.json +1 -1
  4. package/packages/agent-policy/package.json +1 -1
  5. package/packages/architecture-generator/package.json +1 -1
  6. package/packages/auth/package.json +1 -1
  7. package/packages/autonomous-refactor/package.json +1 -1
  8. package/packages/autonomous-runtime/package.json +1 -1
  9. package/packages/cache-strategy/package.json +1 -1
  10. package/packages/capability-registry/package.json +1 -1
  11. package/packages/checkpoint/package.json +1 -1
  12. package/packages/cli-plugin-sdk/package.json +1 -1
  13. package/packages/clipboard/package.json +1 -1
  14. package/packages/clipboard-plugin/package.json +1 -1
  15. package/packages/code-generation/package.json +1 -1
  16. package/packages/code-review/package.json +1 -1
  17. package/packages/codex-adapter/package.json +1 -1
  18. package/packages/codex-watcher/package.json +1 -1
  19. package/packages/config-capture/package.json +1 -1
  20. package/packages/context-compiler/package.json +1 -1
  21. package/packages/context-discovery/package.json +1 -1
  22. package/packages/context-manager/package.json +1 -1
  23. package/packages/cookie-sanitizer/package.json +1 -1
  24. package/packages/cost-optimizer/package.json +1 -1
  25. package/packages/dependency-analyzer/package.json +1 -1
  26. package/packages/django-plugin/package.json +1 -1
  27. package/packages/doc-generator/package.json +1 -1
  28. package/packages/e2e-tester/package.json +1 -1
  29. package/packages/evaluation-engine/package.json +1 -1
  30. package/packages/evaluation-runner/package.json +1 -1
  31. package/packages/event-bus/package.json +1 -1
  32. package/packages/event-store/package.json +1 -1
  33. package/packages/experience-replay/package.json +1 -1
  34. package/packages/feedback-collector/package.json +1 -1
  35. package/packages/file-copy-helper/package.json +1 -1
  36. package/packages/framework-detector/package.json +1 -1
  37. package/packages/framework-plugin-sdk/package.json +1 -1
  38. package/packages/frappe-plugin/package.json +1 -1
  39. package/packages/generic-web-plugin/package.json +1 -1
  40. package/packages/health-monitor/package.json +1 -1
  41. package/packages/intent-analyzer/package.json +1 -1
  42. package/packages/jev-judge/dist/continuation-controller.d.ts +24 -0
  43. package/packages/jev-judge/dist/continuation-controller.d.ts.map +1 -1
  44. package/packages/jev-judge/dist/continuation-controller.js +63 -6
  45. package/packages/jev-judge/dist/continuation-controller.js.map +1 -1
  46. package/packages/jev-judge/dist/task-intake.d.ts +31 -1
  47. package/packages/jev-judge/dist/task-intake.d.ts.map +1 -1
  48. package/packages/jev-judge/dist/task-intake.js +70 -13
  49. package/packages/jev-judge/dist/task-intake.js.map +1 -1
  50. package/packages/jev-judge/package.json +1 -1
  51. package/packages/jev-judge/src/continuation-controller.ts +71 -6
  52. package/packages/jev-judge/src/task-intake.ts +84 -17
  53. package/packages/knowledge-graph/package.json +1 -1
  54. package/packages/knowledge-retrieval/package.json +1 -1
  55. package/packages/laravel-plugin/package.json +1 -1
  56. package/packages/learning-engine/package.json +1 -1
  57. package/packages/mcp-adapter/package.json +1 -1
  58. package/packages/memory-engine/package.json +1 -1
  59. package/packages/milestone-manager/package.json +1 -1
  60. package/packages/model-registry/package.json +1 -1
  61. package/packages/nextjs-plugin/package.json +1 -1
  62. package/packages/notification/package.json +1 -1
  63. package/packages/observability/package.json +1 -1
  64. package/packages/okf-indexer/package.json +1 -1
  65. package/packages/paperclip-integration/package.json +1 -1
  66. package/packages/performance-optimizer/package.json +1 -1
  67. package/packages/privilege-broker/package.json +1 -1
  68. package/packages/project-analyzer/package.json +1 -1
  69. package/packages/project-bootstrap/package.json +1 -1
  70. package/packages/projection-engine/package.json +1 -1
  71. package/packages/prompt-compiler/package.json +1 -1
  72. package/packages/prompt-versioning/package.json +1 -1
  73. package/packages/provider-adapter-sdk/package.json +1 -1
  74. package/packages/provider-router/package.json +1 -1
  75. package/packages/provider-selector/package.json +1 -1
  76. package/packages/providers/package.json +1 -1
  77. package/packages/qdrant-skills/package.json +1 -1
  78. package/packages/quota-manager/package.json +1 -1
  79. package/packages/rate-limiter/package.json +1 -1
  80. package/packages/react-vite-plugin/package.json +1 -1
  81. package/packages/release-manager/package.json +1 -1
  82. package/packages/requirement-compiler/package.json +1 -1
  83. package/packages/runtime/package.json +1 -1
  84. package/packages/scheduler/package.json +1 -1
  85. package/packages/scheduler-adapter/package.json +1 -1
  86. package/packages/session/package.json +1 -1
  87. package/packages/session-api/package.json +1 -1
  88. package/packages/session-export/package.json +1 -1
  89. package/packages/shared-context/package.json +1 -1
  90. package/packages/skill-mcp-client/package.json +1 -1
  91. package/packages/skill-registry/package.json +1 -1
  92. package/packages/skills/package.json +1 -1
  93. package/packages/sprint-planner/package.json +1 -1
  94. package/packages/subscription-engine/package.json +1 -1
  95. package/packages/task-compiler/package.json +1 -1
  96. package/packages/telegram/package.json +1 -1
  97. package/packages/tencentdb-memory/package.json +1 -1
  98. package/packages/tencentdb-sync/package.json +1 -1
  99. package/packages/test-data-generator/package.json +1 -1
  100. package/packages/test-generator/package.json +1 -1
  101. package/packages/todo-bd-sync/package.json +1 -1
  102. package/packages/token-estimation/package.json +1 -1
  103. package/packages/token-optimizer/package.json +1 -1
  104. package/packages/trajectory/package.json +1 -1
  105. package/packages/tui/package.json +1 -1
  106. package/packages/types/package.json +1 -1
  107. package/packages/webmcp-tester/package.json +1 -1
  108. package/packages/workflow-events/package.json +1 -1
  109. package/packages/workspace-scanner/package.json +1 -1
  110. package/packages/worktree/package.json +1 -1
  111. 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
- if (this.state.userPaused) {
57
- debugLog("TodoContinuation", "User paused, not continuing");
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
- // 1. Check if paused by user
181
- if (this.state.userPaused) {
182
- debugLog("TodoContinuation", "Guarded dispatch: user paused, skipping");
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, existingTodos?: string[]): Promise<void>;
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;CACpD;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,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,CAmF3B;IAED;;OAEG;IACH,OAAO,CAAC,eAAe;IA0EvB;;OAEG;IACG,cAAc,CACnB,WAAW,EAAE,MAAM,EACnB,aAAa,GAAE,MAAM,EAAO,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqBf;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAGZ;CACD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,oBAAoB,CAE/E"}
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, existingTodos = []) {
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 = "Work detected in user request. ";
194
- if (result.isDuplicate) {
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":"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"}
1
+ {"version":3,"file":"task-intake.js","sourceRoot":"","sources":["../src/task-intake.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/jev-judge",
3
- "version": "1.1.237",
3
+ "version": "1.1.239",
4
4
  "description": "Jev Judge - Structured decision model for agent routing, E2E testing, and automated decisions",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -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
- if (this.state.userPaused) {
106
- debugLog("TodoContinuation", "User paused, not continuing");
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
- // 1. Check if paused by user
250
- if (this.state.userPaused) {
251
- debugLog("TodoContinuation", "Guarded dispatch: user paused, skipping");
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
  /**