pi-harness-runtime 1.1.305 → 1.1.307
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 +82 -1
- 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/dist/adapters/telegram-adapter.d.ts +8 -1
- package/packages/notification/dist/adapters/telegram-adapter.d.ts.map +1 -1
- package/packages/notification/dist/adapters/telegram-adapter.js +22 -18
- package/packages/notification/dist/adapters/telegram-adapter.js.map +1 -1
- package/packages/notification/dist/types.d.ts +1 -1
- package/packages/notification/dist/types.d.ts.map +1 -1
- package/packages/notification/package.json +1 -1
- package/packages/notification/src/adapters/telegram-adapter.ts +23 -20
- package/packages/notification/src/types.ts +2 -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
|
@@ -932,6 +932,10 @@ const codexSessionState = {
|
|
|
932
932
|
currentProjectRoot: null as string | null,
|
|
933
933
|
currentPlanCandidate: null as { ordinal: number; text: string; timestamp: number } | null,
|
|
934
934
|
pendingActions: new Map<string, PendingPINGPONGAction>(),
|
|
935
|
+
// --- greeting state ---
|
|
936
|
+
greetingBaselineSessionId: null as string | null, // set on watcher startup
|
|
937
|
+
greetedSessions: new Set<string>(), // "piSessionId:codexSessionId"
|
|
938
|
+
pendingGreeting: null as { sessionId: string; projectRoot: string; timestamp: number } | null,
|
|
935
939
|
};
|
|
936
940
|
|
|
937
941
|
// PING_PONG callback action type (different from generic APPROVE/REJECT)
|
|
@@ -1110,7 +1114,7 @@ async function initTelegram(pi: ExtensionAPI): Promise<void> {
|
|
|
1110
1114
|
const { parseCallbackData, CallbackActions } = await import(
|
|
1111
1115
|
"./packages/notification/dist/telegram-webhook-handler.js"
|
|
1112
1116
|
);
|
|
1113
|
-
center.setCallbackHandler(async (data: string, _query: { id: string; from: { id: number } }) => {
|
|
1117
|
+
center.setCallbackHandler(async (data: string, _query: { id: string; from: { id: number } }, acknowledge) => {
|
|
1114
1118
|
const parsed = parseCallbackData(data);
|
|
1115
1119
|
logToFile("[TelegramCallback]", `action=${parsed.action} target=${parsed.targetId}`);
|
|
1116
1120
|
|
|
@@ -1131,8 +1135,10 @@ async function initTelegram(pi: ExtensionAPI): Promise<void> {
|
|
|
1131
1135
|
const result = await advanceCodexTask(parsed.targetId, internalAction, pi);
|
|
1132
1136
|
if (result.success) {
|
|
1133
1137
|
logToFile("[TelegramCallback]", `PING_PONG ${internalAction} succeeded`);
|
|
1138
|
+
await acknowledge(`Action ${internalAction} applied`);
|
|
1134
1139
|
} else {
|
|
1135
1140
|
logToFile("[TelegramCallback]", `PING_PONG ${internalAction} failed: ${result.error}`);
|
|
1141
|
+
await acknowledge(`Action failed: ${result.error}`);
|
|
1136
1142
|
}
|
|
1137
1143
|
return; // Don't fall through to generic handlers
|
|
1138
1144
|
}
|
|
@@ -2514,12 +2520,87 @@ export default function (pi: ExtensionAPI) {
|
|
|
2514
2520
|
}, _SETTLE_DELAY_MS);
|
|
2515
2521
|
}
|
|
2516
2522
|
|
|
2523
|
+
// --- greeting: Track baseline session on watcher startup ---
|
|
2524
|
+
// Get the current Codex session ID as baseline - don't greet it
|
|
2525
|
+
try {
|
|
2526
|
+
const { getLatestSession } = await import("./packages/codex-watcher/dist/index.js");
|
|
2527
|
+
const baseline = getLatestSession();
|
|
2528
|
+
if (baseline) {
|
|
2529
|
+
codexSessionState.greetingBaselineSessionId = baseline.id;
|
|
2530
|
+
logToFile("[codex-greeting]", "Baseline session set:", baseline.id);
|
|
2531
|
+
}
|
|
2532
|
+
} catch {
|
|
2533
|
+
logToFile("[codex-greeting]", "Could not get baseline session");
|
|
2534
|
+
}
|
|
2535
|
+
|
|
2536
|
+
// Deliver any pending greeting if Pi session is now active
|
|
2537
|
+
if (codexSessionState.pendingGreeting && _piSessionCwd) {
|
|
2538
|
+
const pg = codexSessionState.pendingGreeting;
|
|
2539
|
+
// Check expiry (5 minutes)
|
|
2540
|
+
if (Date.now() - pg.timestamp > 5 * 60 * 1000) {
|
|
2541
|
+
logToFile("[codex-greeting]", "Pending greeting expired");
|
|
2542
|
+
codexSessionState.pendingGreeting = null;
|
|
2543
|
+
} else if (_piSessionCwd === pg.projectRoot) {
|
|
2544
|
+
// Roots match - send greeting
|
|
2545
|
+
const greetKey = `${_piSessionCwd}:${pg.sessionId}`;
|
|
2546
|
+
if (!codexSessionState.greetedSessions.has(greetKey)) {
|
|
2547
|
+
logToFile("[codex-greeting]", "Delivering pending greeting for:", pg.sessionId);
|
|
2548
|
+
void pi.sendUserMessage(
|
|
2549
|
+
`Codex opened in this workspace (session ${pg.sessionId.slice(0, 8)}...). Say hello briefly, then wait for the user's next instruction.`
|
|
2550
|
+
);
|
|
2551
|
+
codexSessionState.greetedSessions.add(greetKey);
|
|
2552
|
+
}
|
|
2553
|
+
codexSessionState.pendingGreeting = null;
|
|
2554
|
+
}
|
|
2555
|
+
}
|
|
2556
|
+
|
|
2517
2557
|
const codexHandle = startWatcher({
|
|
2518
2558
|
pollIntervalMs: 5000,
|
|
2519
2559
|
maxIdlePolls: Infinity,
|
|
2520
2560
|
onSessionChange: (session) => {
|
|
2521
2561
|
if (session) {
|
|
2522
2562
|
logToFile("[codex]", `Session started: ${session.threadName}, root: ${session.projectRoot}`);
|
|
2563
|
+
|
|
2564
|
+
// --- Same-workspace greeting ---
|
|
2565
|
+
const codexSessionId = session.id;
|
|
2566
|
+
const codexProjectRoot = session.projectRoot;
|
|
2567
|
+
|
|
2568
|
+
// Skip if this is the baseline session (Pi just restarted)
|
|
2569
|
+
if (codexSessionId === codexSessionState.greetingBaselineSessionId) {
|
|
2570
|
+
logToFile("[codex-greeting]", "Skipping baseline session:", codexSessionId);
|
|
2571
|
+
} else {
|
|
2572
|
+
// Check for duplicate greeting
|
|
2573
|
+
const piCwd = _piSessionCwd || "";
|
|
2574
|
+
const greetKey = `${piCwd}:${codexSessionId}`;
|
|
2575
|
+
if (!codexSessionState.greetedSessions.has(greetKey)) {
|
|
2576
|
+
// Check root match
|
|
2577
|
+
if (piCwd && codexProjectRoot && piCwd === codexProjectRoot) {
|
|
2578
|
+
logToFile("[codex-greeting]", "Same workspace detected:", codexSessionId);
|
|
2579
|
+
|
|
2580
|
+
if (codexSessionState.currentCodexSessionId) {
|
|
2581
|
+
// Pi session active - send greeting now
|
|
2582
|
+
logToFile("[codex-greeting]", "Sending greeting for:", codexSessionId);
|
|
2583
|
+
void pi.sendUserMessage(
|
|
2584
|
+
`Codex opened in this workspace (session ${codexSessionId.slice(0, 8)}...). Say hello briefly, then wait for the user's next instruction.`
|
|
2585
|
+
);
|
|
2586
|
+
codexSessionState.greetedSessions.add(greetKey);
|
|
2587
|
+
} else {
|
|
2588
|
+
// Pi session not active yet - queue for delivery on session_start
|
|
2589
|
+
logToFile("[codex-greeting]", "Pi not active, queueing greeting for:", codexSessionId);
|
|
2590
|
+
codexSessionState.pendingGreeting = {
|
|
2591
|
+
sessionId: codexSessionId,
|
|
2592
|
+
projectRoot: codexProjectRoot,
|
|
2593
|
+
timestamp: Date.now(),
|
|
2594
|
+
};
|
|
2595
|
+
}
|
|
2596
|
+
} else {
|
|
2597
|
+
logToFile("[codex-greeting]", "Different workspace or Pi cwd unknown, skipping greeting");
|
|
2598
|
+
}
|
|
2599
|
+
} else {
|
|
2600
|
+
logToFile("[codex-greeting]", "Already greeted:", greetKey);
|
|
2601
|
+
}
|
|
2602
|
+
}
|
|
2603
|
+
|
|
2523
2604
|
codexSessionState.currentCodexSessionId = session.id;
|
|
2524
2605
|
codexSessionState.currentProjectRoot = session.projectRoot;
|
|
2525
2606
|
nc("CodexSessionStarted", {
|
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.307",
|
|
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",
|
|
@@ -88,7 +88,14 @@ export declare class TelegramAdapter extends BaseChannelAdapter {
|
|
|
88
88
|
*/
|
|
89
89
|
private parseCallbackQuery;
|
|
90
90
|
/**
|
|
91
|
-
*
|
|
91
|
+
* Acknowledge a callback query - call this after validation in the handler
|
|
92
|
+
* @param callbackQueryId - The callback query ID to acknowledge
|
|
93
|
+
* @param message - Optional message to show in the popup alert
|
|
94
|
+
*/
|
|
95
|
+
acknowledgeCallback(callbackQueryId: string, message?: string): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Answer a callback query to remove loading state (internal legacy)
|
|
98
|
+
* @deprecated Use acknowledgeCallback() from the handler instead
|
|
92
99
|
*/
|
|
93
100
|
private answerCallbackQuery;
|
|
94
101
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/telegram-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAUH,OAAO,KAAK,EAEX,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EAEvB,cAAc,EACd,MAAM,aAAa,CAAC;AAErB;;GAEG;AAEH,KAAK,sBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAY9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxD,qBAAa,eAAgB,SAAQ,kBAAkB;IACvD,QAAQ,CAAC,EAAE,cAAc;IACzB,QAAQ,CAAC,IAAI,cAAc;IAC3B,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,gBAAgB,CAAsC;IAC9D,OAAO,CAAC,eAAe,CAAqC;IAC5D,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,aAAa,CAA6C;IAClE,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,kBAAkB,CAAqB;IAC/C,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,gBAAgB,CAA2B;IAEnD,0BAA0B,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI,CAEpD;IAED,kBAAkB,IAAI,OAAO,CAE5B;IAED,YAAY,MAAM,EAAE,cAAc,EAEjC;IAED;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAEzD;IAED;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAEvD;IAED;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAErC;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAEpC;IAEM,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CA8BnC;IAED;;OAEG;IACH,YAAY,IAAI,IAAI,CAWnB;IAED;;OAEG;IACH,WAAW,IAAI,IAAI,CAOlB;IAED;;OAEG;YACW,IAAI;IA0DlB;;OAEG;YACW,aAAa;
|
|
1
|
+
{"version":3,"file":"telegram-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/telegram-adapter.ts"],"names":[],"mappings":"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"}
|