pi-harness-runtime 1.1.234 → 1.1.236
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 +64 -7
- 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 +6 -4
- package/packages/jev-judge/dist/continuation-controller.d.ts.map +1 -1
- package/packages/jev-judge/dist/continuation-controller.js +77 -88
- package/packages/jev-judge/dist/continuation-controller.js.map +1 -1
- package/packages/jev-judge/dist/typesafe-provider.js +2 -2
- package/packages/jev-judge/dist/typesafe-provider.js.map +1 -1
- package/packages/jev-judge/package.json +1 -1
- package/packages/jev-judge/src/continuation-controller.ts +87 -99
- package/packages/jev-judge/src/typesafe-provider.ts +2 -2
- 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
package/index.ts
CHANGED
|
@@ -282,6 +282,17 @@ async function initAutoContinue(pi: ExtensionAPI): Promise<void> {
|
|
|
282
282
|
return null;
|
|
283
283
|
}
|
|
284
284
|
|
|
285
|
+
// Detect routine continuation questions ("Should I continue?")
|
|
286
|
+
// These should NOT block immediate continuation - let Jev/todo controller decide
|
|
287
|
+
// Detect routine continuation questions ("Should I continue?")
|
|
288
|
+
// These should NOT block immediate continuation - let Jev/todo controller decide
|
|
289
|
+
function isRoutineContinuation(question: string): boolean {
|
|
290
|
+
const lower = question.toLowerCase();
|
|
291
|
+
// Match patterns like "should i continue?", "should we continue?", etc.
|
|
292
|
+
return (/\b(should i|should we|should the|can i continue|can we continue)\b/.test(lower)
|
|
293
|
+
&& /\b(continue|proceed|with the next|to the next|move on)\b/.test(lower));
|
|
294
|
+
}
|
|
295
|
+
|
|
285
296
|
// Detect when agent asks for continuation
|
|
286
297
|
pi.on("message_end", async (event) => {
|
|
287
298
|
const msg = event.message as { role?: string; content?: string | Array<{ type?: string; text?: string }> } | undefined;
|
|
@@ -291,7 +302,13 @@ async function initAutoContinue(pi: ExtensionAPI): Promise<void> {
|
|
|
291
302
|
const detectedQuestion = detectConfirmationRequest(content);
|
|
292
303
|
|
|
293
304
|
// Only trigger if: we found a question AND it's different from last notification
|
|
305
|
+
// Skip routine continuation questions - let Jev/todo controller decide
|
|
294
306
|
if (detectedQuestion && detectedQuestion !== _lastNotifiedQuestion && !waitingForUserSince) {
|
|
307
|
+
// Skip routine continuation - don't block automatic continuation
|
|
308
|
+
if (isRoutineContinuation(detectedQuestion)) {
|
|
309
|
+
logToFile("[auto-continue]", "Routine continuation detected, not blocking");
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
295
312
|
_lastNotifiedQuestion = detectedQuestion;
|
|
296
313
|
waitingForUserSince = new Date();
|
|
297
314
|
|
|
@@ -439,6 +456,45 @@ async function initAutoContinue(pi: ExtensionAPI): Promise<void> {
|
|
|
439
456
|
}
|
|
440
457
|
};
|
|
441
458
|
|
|
459
|
+
// --- todo continuation: Retain one controller per session ----------
|
|
460
|
+
let todoContinuationController: import("./packages/jev-judge/dist/continuation-controller.js").TodoContinuationController | null = null;
|
|
461
|
+
|
|
462
|
+
// Create controller on session_start with proper dispatch callback
|
|
463
|
+
pi.on("session_start", async (_event, ctx) => {
|
|
464
|
+
try {
|
|
465
|
+
const { TodoContinuationController } = await import("./packages/jev-judge/dist/continuation-controller.js");
|
|
466
|
+
// SAFETY: ctx is ExtensionContext with sessionManager, isIdle, hasPendingMessages
|
|
467
|
+
// dispatch uses pi.sendUserMessage for actual message delivery
|
|
468
|
+
todoContinuationController = new TodoContinuationController(
|
|
469
|
+
ctx as unknown as import("./packages/jev-judge/dist/todo-provider.js").TodoContext,
|
|
470
|
+
{
|
|
471
|
+
dispatch: async (content: string) => {
|
|
472
|
+
await pi.sendUserMessage(content, { deliverAs: "steer" });
|
|
473
|
+
},
|
|
474
|
+
}
|
|
475
|
+
);
|
|
476
|
+
logToFile("[auto-continue]", "Todo continuation controller initialized");
|
|
477
|
+
} catch (err) {
|
|
478
|
+
logToFile("[auto-continue]", "Failed to create todo continuation controller:", String(err));
|
|
479
|
+
}
|
|
480
|
+
});
|
|
481
|
+
|
|
482
|
+
// Clean up controller on session shutdown
|
|
483
|
+
pi.on("session_shutdown", () => {
|
|
484
|
+
todoContinuationController = null;
|
|
485
|
+
});
|
|
486
|
+
|
|
487
|
+
// Wire user input to pause the continuation controller
|
|
488
|
+
pi.on("message_start", (event) => {
|
|
489
|
+
const msg = (event as { message?: { role?: string } }).message;
|
|
490
|
+
if (msg?.role === "user") {
|
|
491
|
+
if (todoContinuationController) {
|
|
492
|
+
todoContinuationController.pause();
|
|
493
|
+
logToFile("[auto-continue]", "User input received, pausing continuation");
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
});
|
|
497
|
+
|
|
442
498
|
// --- agent_settled: Check todos and continue work ---------------
|
|
443
499
|
pi.on("agent_settled", async (_event, ctx) => {
|
|
444
500
|
// Don't continue if user is waiting for response
|
|
@@ -450,17 +506,18 @@ async function initAutoContinue(pi: ExtensionAPI): Promise<void> {
|
|
|
450
506
|
// Don't continue if session is not idle or has pending messages
|
|
451
507
|
if (!ctx.isIdle?.() || ctx.hasPendingMessages?.()) return;
|
|
452
508
|
|
|
453
|
-
//
|
|
509
|
+
// Use the retained controller (not a new one per event)
|
|
454
510
|
try {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
511
|
+
if (!todoContinuationController) {
|
|
512
|
+
logToFile("[auto-continue]", "No todo continuation controller available");
|
|
513
|
+
return;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
const result = await todoContinuationController.decide();
|
|
460
517
|
|
|
461
518
|
if (result.action === "continue" && result.nextItemId) {
|
|
462
519
|
updateAutoContinueStatus("CONTINUING");
|
|
463
|
-
await
|
|
520
|
+
await todoContinuationController.steerToContinue(result.nextItemId);
|
|
464
521
|
setTimeout(() => updateAutoContinueStatus("IDLE"), 2000);
|
|
465
522
|
} else if (result.action === "blocked") {
|
|
466
523
|
updateAutoContinueStatus("ERROR", "blocked");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-harness/capability-registry",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.236",
|
|
4
4
|
"description": "Capability Registry for pi-harness-runtime — tracks model capabilities and enables capability-based routing",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -3,6 +3,8 @@ import type { TodoItem, TodoContext } from "./todo-provider.js";
|
|
|
3
3
|
* Continuation configuration
|
|
4
4
|
*/
|
|
5
5
|
export interface ContinuationConfig {
|
|
6
|
+
/** Dispatch function to send messages to the agent (required) */
|
|
7
|
+
dispatch: (content: string) => Promise<void>;
|
|
6
8
|
/** Minimum wait before Jev fallback (ms) */
|
|
7
9
|
jevFallbackMinWaitMs?: number;
|
|
8
10
|
/** Threshold for routine continuation */
|
|
@@ -59,14 +61,14 @@ export declare class TodoContinuationController {
|
|
|
59
61
|
* Checks blockers and pause BEFORE selecting a task
|
|
60
62
|
*/
|
|
61
63
|
decide(): Promise<ContinuationResult>;
|
|
62
|
-
/**
|
|
63
|
-
* Evaluate continuation decision and execute it
|
|
64
|
-
*/
|
|
65
|
-
private evaluateContinuation;
|
|
66
64
|
/**
|
|
67
65
|
* Continue a specific todo item
|
|
68
66
|
*/
|
|
69
67
|
continueItem(item: TodoItem): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Guarded dispatch - checks all conditions before sending
|
|
70
|
+
*/
|
|
71
|
+
private guardedDispatch;
|
|
70
72
|
/**
|
|
71
73
|
* Steer to continue a todo item
|
|
72
74
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"continuation-controller.d.ts","sourceRoot":"","sources":["../src/continuation-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAmBhE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,2BAA2B,EAAE,MAAM,CAAC;IACpC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,qBAAa,0BAA0B;IACtC,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,YAAY,CAAwC;IAE5D,OAAO,CAAC,KAAK,CAaX;IAEF,YAAY,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,kBAAkB,EAUxD;IAED;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"continuation-controller.d.ts","sourceRoot":"","sources":["../src/continuation-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAmBhE;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,iEAAiE;IACjE,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,4CAA4C;IAC5C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,2BAA2B,EAAE,MAAM,CAAC;IACpC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,qBAAa,0BAA0B;IACtC,OAAO,CAAC,GAAG,CAAc;IACzB,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,YAAY,CAAwC;IAE5D,OAAO,CAAC,KAAK,CAaX;IAEF,YAAY,GAAG,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,kBAAkB,EAUxD;IAED;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;;;OAIG;IACG,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAmF1C;IAED;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BhD;IAED;;OAEG;YACW,eAAe;IA+C7B;;OAEG;IACG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBnD;IAED;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjD;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAIZ;IAED;;OAEG;IACH,MAAM,IAAI,IAAI,CAeb;IAED;;OAEG;IACH,QAAQ,IAAI,IAAI,CAIf;IAED;;OAEG;IACH,QAAQ,IAAI;QAAE,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;QAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAM7E;CACD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,GAAG,EAAE,WAAW,EAChB,MAAM,CAAC,EAAE,kBAAkB,GACzB,0BAA0B,CAE5B"}
|