pi-harness-runtime 1.1.308 → 1.1.310
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 +65 -25
- 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/package.json +1 -1
- 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
|
@@ -385,12 +385,38 @@ async function initAutoContinue(pi: ExtensionAPI): Promise<void> {
|
|
|
385
385
|
const _SETTLE_DELAY_MS = 5000; // Wait 5 seconds after plan ready
|
|
386
386
|
|
|
387
387
|
// Capture our Pi session's cwd on session_start
|
|
388
|
-
pi.on("session_start", () => {
|
|
388
|
+
pi.on("session_start", async () => {
|
|
389
389
|
try {
|
|
390
390
|
_piSessionCwd = realpathSync(process.cwd());
|
|
391
391
|
logToFile("[codex-trigger]", "Pi session cwd captured:", _piSessionCwd);
|
|
392
|
+
|
|
393
|
+
// --- Drain pending greeting when Pi becomes active ---
|
|
394
|
+
if (codexSessionState.pendingGreeting) {
|
|
395
|
+
const pg = codexSessionState.pendingGreeting;
|
|
396
|
+
// Check expiry (5 minutes)
|
|
397
|
+
if (Date.now() - pg.timestamp > 5 * 60 * 1000) {
|
|
398
|
+
logToFile("[codex-greeting]", "Pending greeting expired");
|
|
399
|
+
codexSessionState.pendingGreeting = null;
|
|
400
|
+
} else if (_piSessionCwd === pg.projectRoot) {
|
|
401
|
+
// Roots match - send greeting with followUp mode
|
|
402
|
+
const greetKey = `${_piSessionCwd}:${pg.sessionId}`;
|
|
403
|
+
if (!codexSessionState.greetedSessions.has(greetKey)) {
|
|
404
|
+
logToFile("[codex-greeting]", "Delivering pending greeting for:", pg.sessionId);
|
|
405
|
+
try {
|
|
406
|
+
await pi.sendUserMessage(
|
|
407
|
+
`Codex opened in this workspace (session ${pg.sessionId.slice(0, 8)}...). Say hello briefly, then wait for the user's next instruction.`,
|
|
408
|
+
{ deliverAs: "followUp" }
|
|
409
|
+
);
|
|
410
|
+
codexSessionState.greetedSessions.add(greetKey);
|
|
411
|
+
} catch (err) {
|
|
412
|
+
logToFile("[codex-greeting]", "Failed to deliver greeting:", String(err));
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
codexSessionState.pendingGreeting = null;
|
|
416
|
+
}
|
|
417
|
+
}
|
|
392
418
|
} catch {
|
|
393
|
-
|
|
419
|
+
logToFile("[codex-greeting]", "Error in session_start greeting drain");
|
|
394
420
|
}
|
|
395
421
|
});
|
|
396
422
|
|
|
@@ -2527,9 +2553,11 @@ export default function (pi: ExtensionAPI) {
|
|
|
2527
2553
|
try {
|
|
2528
2554
|
const { getLatestSession } = await import("./packages/codex-watcher/dist/index.js");
|
|
2529
2555
|
const baseline = getLatestSession();
|
|
2530
|
-
if (baseline) {
|
|
2531
|
-
|
|
2532
|
-
const
|
|
2556
|
+
if (baseline && baseline.updatedAt) {
|
|
2557
|
+
// Parse ISO-8601 timestamp to milliseconds
|
|
2558
|
+
const updatedAtMs = Date.parse(baseline.updatedAt);
|
|
2559
|
+
const sessionAgeMs = Date.now() - updatedAtMs;
|
|
2560
|
+
const isRecent = updatedAtMs > 0 && sessionAgeMs < 10 * 60 * 1000;
|
|
2533
2561
|
if (isRecent) {
|
|
2534
2562
|
codexSessionState.greetingBaselineSessionId = baseline.id;
|
|
2535
2563
|
logToFile("[codex-greeting]", "Baseline session set (recent):", baseline.id, `age=${Math.round(sessionAgeMs/1000)}s`);
|
|
@@ -2542,6 +2570,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
2542
2570
|
}
|
|
2543
2571
|
|
|
2544
2572
|
// Deliver any pending greeting if Pi session is now active
|
|
2573
|
+
// This runs on watcher startup; pending greetings are also drained in session_start
|
|
2545
2574
|
if (codexSessionState.pendingGreeting && _piSessionCwd) {
|
|
2546
2575
|
const pg = codexSessionState.pendingGreeting;
|
|
2547
2576
|
// Check expiry (5 minutes)
|
|
@@ -2549,14 +2578,19 @@ export default function (pi: ExtensionAPI) {
|
|
|
2549
2578
|
logToFile("[codex-greeting]", "Pending greeting expired");
|
|
2550
2579
|
codexSessionState.pendingGreeting = null;
|
|
2551
2580
|
} else if (_piSessionCwd === pg.projectRoot) {
|
|
2552
|
-
// Roots match - send greeting
|
|
2581
|
+
// Roots match - send greeting with followUp mode
|
|
2553
2582
|
const greetKey = `${_piSessionCwd}:${pg.sessionId}`;
|
|
2554
2583
|
if (!codexSessionState.greetedSessions.has(greetKey)) {
|
|
2555
2584
|
logToFile("[codex-greeting]", "Delivering pending greeting for:", pg.sessionId);
|
|
2556
|
-
|
|
2557
|
-
|
|
2558
|
-
|
|
2559
|
-
|
|
2585
|
+
try {
|
|
2586
|
+
await pi.sendUserMessage(
|
|
2587
|
+
`Codex opened in this workspace (session ${pg.sessionId.slice(0, 8)}...). Say hello briefly, then wait for the user's next instruction.`,
|
|
2588
|
+
{ deliverAs: "followUp" }
|
|
2589
|
+
);
|
|
2590
|
+
codexSessionState.greetedSessions.add(greetKey);
|
|
2591
|
+
} catch (err) {
|
|
2592
|
+
logToFile("[codex-greeting]", "Failed to deliver greeting:", String(err));
|
|
2593
|
+
}
|
|
2560
2594
|
}
|
|
2561
2595
|
codexSessionState.pendingGreeting = null;
|
|
2562
2596
|
}
|
|
@@ -2585,21 +2619,27 @@ export default function (pi: ExtensionAPI) {
|
|
|
2585
2619
|
if (piCwd && codexProjectRoot && piCwd === codexProjectRoot) {
|
|
2586
2620
|
logToFile("[codex-greeting]", "Same workspace detected:", codexSessionId);
|
|
2587
2621
|
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
|
|
2595
|
-
|
|
2596
|
-
|
|
2597
|
-
|
|
2598
|
-
|
|
2599
|
-
|
|
2600
|
-
|
|
2601
|
-
|
|
2602
|
-
|
|
2622
|
+
// Use _piSessionCwd (Pi state) to check if Pi is active, not Codex state
|
|
2623
|
+
if (piCwd) {
|
|
2624
|
+
// Pi session active - send greeting now with await for safe delivery
|
|
2625
|
+
logToFile("[codex-greeting]", "Sending greeting for:", codexSessionId);
|
|
2626
|
+
try {
|
|
2627
|
+
await pi.sendUserMessage(
|
|
2628
|
+
`Codex opened in this workspace (session ${codexSessionId.slice(0, 8)}...). Say hello briefly, then wait for the user's next instruction.`,
|
|
2629
|
+
{ deliverAs: "followUp" }
|
|
2630
|
+
);
|
|
2631
|
+
codexSessionState.greetedSessions.add(greetKey);
|
|
2632
|
+
} catch (err) {
|
|
2633
|
+
logToFile("[codex-greeting]", "Failed to deliver greeting:", String(err));
|
|
2634
|
+
}
|
|
2635
|
+
} else {
|
|
2636
|
+
// Pi session not active yet - queue for delivery on session_start
|
|
2637
|
+
logToFile("[codex-greeting]", "Pi not active, queueing greeting for:", codexSessionId);
|
|
2638
|
+
codexSessionState.pendingGreeting = {
|
|
2639
|
+
sessionId: codexSessionId,
|
|
2640
|
+
projectRoot: codexProjectRoot,
|
|
2641
|
+
timestamp: Date.now(),
|
|
2642
|
+
};
|
|
2603
2643
|
}
|
|
2604
2644
|
} else {
|
|
2605
2645
|
logToFile("[codex-greeting]", "Different workspace or Pi cwd unknown, skipping greeting");
|
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.310",
|
|
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",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-harness/provider-router",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.310",
|
|
4
4
|
"description": "Enhanced Provider Router for pi-harness-runtime — intelligent routing with capabilities, costs, and quotas",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/provider-router.js",
|