pi-harness-runtime 1.1.147 → 1.1.150
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/CHANGELOG.md +2 -0
- package/index.ts +41 -26
- package/package.json +3 -2
- package/packages/a2a-adapter/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/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/dist/src/extension.js +186 -0
- 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/email-adapter.d.ts +17 -0
- package/packages/notification/dist/adapters/email-adapter.d.ts.map +1 -0
- package/packages/notification/dist/adapters/email-adapter.js +89 -0
- package/packages/notification/dist/adapters/email-adapter.js.map +1 -0
- package/packages/notification/dist/adapters/line-adapter.d.ts +17 -0
- package/packages/notification/dist/adapters/line-adapter.d.ts.map +1 -0
- package/packages/notification/dist/adapters/line-adapter.js +99 -0
- package/packages/notification/dist/adapters/line-adapter.js.map +1 -0
- package/packages/notification/dist/adapters/ntfy-adapter.d.ts +17 -0
- package/packages/notification/dist/adapters/ntfy-adapter.d.ts.map +1 -0
- package/packages/notification/dist/adapters/ntfy-adapter.js +84 -0
- package/packages/notification/dist/adapters/ntfy-adapter.js.map +1 -0
- package/packages/notification/dist/adapters/telegram-adapter.d.ts +56 -0
- package/packages/notification/dist/adapters/telegram-adapter.d.ts.map +1 -0
- package/packages/notification/dist/adapters/telegram-adapter.js +251 -0
- package/packages/notification/dist/adapters/telegram-adapter.js.map +1 -0
- package/packages/notification/dist/adapters/webhook-adapter.d.ts +15 -0
- package/packages/notification/dist/adapters/webhook-adapter.d.ts.map +1 -0
- package/packages/notification/dist/adapters/webhook-adapter.js +64 -0
- package/packages/notification/dist/adapters/webhook-adapter.js.map +1 -0
- package/packages/notification/dist/base-adapter.d.ts +36 -0
- package/packages/notification/dist/base-adapter.d.ts.map +1 -0
- package/packages/notification/dist/base-adapter.js +39 -0
- package/packages/notification/dist/base-adapter.js.map +1 -0
- package/packages/notification/dist/index.d.ts +12 -0
- package/packages/notification/dist/index.d.ts.map +1 -0
- package/packages/notification/dist/index.js +12 -0
- package/packages/notification/dist/index.js.map +1 -0
- package/packages/notification/dist/notification-center.d.ts +89 -0
- package/packages/notification/dist/notification-center.d.ts.map +1 -0
- package/packages/notification/dist/notification-center.js +356 -0
- package/packages/notification/dist/notification-center.js.map +1 -0
- package/packages/notification/dist/notification-policy.d.ts +66 -0
- package/packages/notification/dist/notification-policy.d.ts.map +1 -0
- package/packages/notification/dist/notification-policy.js +153 -0
- package/packages/notification/dist/notification-policy.js.map +1 -0
- package/packages/notification/dist/telegram-webhook-handler.d.ts +86 -0
- package/packages/notification/dist/telegram-webhook-handler.d.ts.map +1 -0
- package/packages/notification/dist/telegram-webhook-handler.js +149 -0
- package/packages/notification/dist/telegram-webhook-handler.js.map +1 -0
- package/packages/notification/dist/types.d.ts +106 -0
- package/packages/notification/dist/types.d.ts.map +1 -0
- package/packages/notification/dist/types.js +7 -0
- package/packages/notification/dist/types.js.map +1 -0
- 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/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/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/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [1.1.138](https://github.com/ManotLuijiu/pi-harness-runtime/compare/v1.1.147...v1.1.138) (2026-10-04)
|
|
6
|
+
|
|
5
7
|
### [1.1.75](https://github.com/ManotLuijiu/pi-harness-runtime/compare/v1.1.95...v1.1.75) (2026-09-29)
|
|
6
8
|
|
|
7
9
|
|
package/index.ts
CHANGED
|
@@ -297,7 +297,7 @@ async function initTelegram(): Promise<void> {
|
|
|
297
297
|
|
|
298
298
|
await center.initialize();
|
|
299
299
|
if (!center.hasChannels()) {
|
|
300
|
-
|
|
300
|
+
logStartup("[pi-harness] Telegram: initialization failed — skipping");
|
|
301
301
|
return;
|
|
302
302
|
}
|
|
303
303
|
|
|
@@ -544,7 +544,7 @@ function initLangChain(pi: {
|
|
|
544
544
|
if (!coderKeyExists) missingKeys.push("coder-api-key.txt");
|
|
545
545
|
console.error(`[pi-harness] /langchain missing API keys: ${missingKeys.join(", ")}`);
|
|
546
546
|
} else {
|
|
547
|
-
|
|
547
|
+
logStartup(`[pi-harness] /langchain ready (${activeConfig.planner.id} + ${activeConfig.coder.id} + ${activeConfig.reviewer.id})`);
|
|
548
548
|
}
|
|
549
549
|
|
|
550
550
|
pi.registerCommand("langchain", {
|
|
@@ -762,19 +762,19 @@ async function initHermesSkills(pi: ExtensionAPI): Promise<void> {
|
|
|
762
762
|
|
|
763
763
|
// Scan skills from default locations
|
|
764
764
|
const result = initSkills();
|
|
765
|
-
|
|
765
|
+
logStartup(`[pi-harness] Scanned ${result.skills.length} skills`);
|
|
766
766
|
|
|
767
767
|
// Register /skill commands
|
|
768
768
|
try {
|
|
769
769
|
const { initSkillCommands } = await import("./packages/skills/src/skill-commands.js");
|
|
770
770
|
initSkillCommands(pi);
|
|
771
|
-
|
|
771
|
+
logStartup("[pi-harness] Registered skill commands");
|
|
772
772
|
} catch (err) {
|
|
773
|
-
|
|
773
|
+
logStartup(`[pi-harness] Failed to register skill commands:`, err instanceof Error ? err.message : String(err));
|
|
774
774
|
}
|
|
775
775
|
|
|
776
776
|
} catch (err) {
|
|
777
|
-
|
|
777
|
+
logStartup(`[pi-harness] Failed to initialize skills:`, err instanceof Error ? err.message : String(err));
|
|
778
778
|
}
|
|
779
779
|
}
|
|
780
780
|
|
|
@@ -947,7 +947,7 @@ function ensureHarnessDir() {
|
|
|
947
947
|
}
|
|
948
948
|
// Create symlink so pi.dev discovers our skills
|
|
949
949
|
ensurePiSkillsSymlink();
|
|
950
|
-
|
|
950
|
+
logStartup(
|
|
951
951
|
`[pi-harness] Initialized ~/.pi-harness-runtime/ with skills/, memory/, trajectory/, cookies/`,
|
|
952
952
|
);
|
|
953
953
|
}
|
|
@@ -971,7 +971,7 @@ function ensurePiSkillsSymlink(): void {
|
|
|
971
971
|
|
|
972
972
|
// Create symlink: ~/.pi/skills -> ~/.pi-harness-runtime/skills
|
|
973
973
|
symlinkSync(SKILLS_DIR, PI_SKILLS_DIR, "junction");
|
|
974
|
-
|
|
974
|
+
logStartup(`[pi-harness] Created skills symlink: ~/.pi/skills -> ~/.pi-harness-runtime/skills`);
|
|
975
975
|
} catch {
|
|
976
976
|
// Ignore errors (may fail due to permissions or existing file)
|
|
977
977
|
// User can create the symlink manually if needed
|
|
@@ -1157,6 +1157,9 @@ export default function (pi: ExtensionAPI) {
|
|
|
1157
1157
|
const mirrorStore = new MirrorStore();
|
|
1158
1158
|
ensureHarnessDir();
|
|
1159
1159
|
|
|
1160
|
+
// Collect async init promises so we can wait for them before showing startup notification
|
|
1161
|
+
const asyncInitPromises: Promise<unknown>[] = [];
|
|
1162
|
+
|
|
1160
1163
|
// --- todo-bd-sync: Initialize two-way sync with bd ---------------
|
|
1161
1164
|
// Start async init but don't await - runs in background
|
|
1162
1165
|
void initTodoBdSync(pi);
|
|
@@ -1177,16 +1180,17 @@ export default function (pi: ExtensionAPI) {
|
|
|
1177
1180
|
void initAutoContinue(pi);
|
|
1178
1181
|
|
|
1179
1182
|
// --- qdrant-vector-search: Qdrant integration for semantic skill search ----
|
|
1180
|
-
|
|
1183
|
+
// Collect promise so we can wait for initialization before showing startup notification
|
|
1184
|
+
asyncInitPromises.push(initQdrant());
|
|
1181
1185
|
|
|
1182
1186
|
// --- telegram-notifications: Telegram bot for harness event notifications ----
|
|
1183
|
-
|
|
1187
|
+
// Collect promise so we can wait for initialization before showing startup notification
|
|
1188
|
+
asyncInitPromises.push(initTelegram());
|
|
1184
1189
|
|
|
1185
1190
|
// --- codex-watcher: Inject Codex plans into pi.dev + Telegram --------------
|
|
1186
1191
|
// Lightweight: polls ~/.codex/sessions/ every 5s, no LangChain daemon.
|
|
1187
1192
|
// On plan detected: sends Telegram alert + steer message to pi.dev.
|
|
1188
1193
|
try {
|
|
1189
|
-
let latestCodexSession = "";
|
|
1190
1194
|
let latestPlanOrdinal = 0;
|
|
1191
1195
|
|
|
1192
1196
|
const codexHandle = startWatcher({
|
|
@@ -1194,7 +1198,6 @@ export default function (pi: ExtensionAPI) {
|
|
|
1194
1198
|
maxIdlePolls: Infinity,
|
|
1195
1199
|
onSessionChange: (session) => {
|
|
1196
1200
|
if (session) {
|
|
1197
|
-
latestCodexSession = session.id;
|
|
1198
1201
|
console.error(`[codex] Session started: ${session.threadName}`);
|
|
1199
1202
|
nc("CodexSessionStarted", {
|
|
1200
1203
|
requirement: session.threadName || "Codex session",
|
|
@@ -1236,15 +1239,14 @@ ${planPreview}`,
|
|
|
1236
1239
|
});
|
|
1237
1240
|
|
|
1238
1241
|
// Clean up when pi session ends
|
|
1239
|
-
|
|
1240
|
-
codexHandle.stop();
|
|
1241
|
-
});
|
|
1242
|
+
pi.on("session_shutdown", () => codexHandle.stop());
|
|
1242
1243
|
} catch {
|
|
1243
1244
|
// Codex watcher unavailable (e.g. no codex package installed)
|
|
1244
1245
|
}
|
|
1245
1246
|
|
|
1246
1247
|
// --- honcho-memory: Honcho MCP for peer/user memory (honcho_profile, etc.) ----
|
|
1247
|
-
|
|
1248
|
+
// Collect promise so we can wait for initialization before showing startup notification
|
|
1249
|
+
asyncInitPromises.push(initHoncho(pi));
|
|
1248
1250
|
|
|
1249
1251
|
// --- moocoding-sync-hint: Suggest skill sync if skills dir is empty --------
|
|
1250
1252
|
void initMoocodingSyncHint();
|
|
@@ -1297,7 +1299,8 @@ ${planPreview}`,
|
|
|
1297
1299
|
|
|
1298
1300
|
// --- Hermes-style skills: Initialize skill system ----------------------
|
|
1299
1301
|
// Scan skills from ~/.pi-harness-runtime/skills/ and register with pi.dev
|
|
1300
|
-
|
|
1302
|
+
// Collect promise so we can wait for initialization before showing startup notification
|
|
1303
|
+
asyncInitPromises.push(initHermesSkills(pi));
|
|
1301
1304
|
|
|
1302
1305
|
// --- Job pipe watcher: Listen for Telegram callback commands -----------
|
|
1303
1306
|
// Watch for resume/cancel commands from telegram-callback-processor
|
|
@@ -2654,20 +2657,32 @@ Run \`bd ready\` to see current bd issues.
|
|
|
2654
2657
|
() => lastActiveProvider,
|
|
2655
2658
|
);
|
|
2656
2659
|
|
|
2657
|
-
// --- Show harness
|
|
2660
|
+
// --- Show harness startup block (pi header stays intact) -----------
|
|
2658
2661
|
// Do NOT call setHeader() — that replaces pi's ASCII header which shows
|
|
2659
2662
|
// community shortcuts (ctrl+c/d, /, !, ctrl+o). Keep pi's header and add
|
|
2660
2663
|
// harness info as a small separate notify line.
|
|
2664
|
+
//
|
|
2665
|
+
// Wait for all async init promises to complete so startupMessages includes
|
|
2666
|
+
// messages from async initializations (Qdrant, Telegram, Honcho, HermesSkills).
|
|
2667
|
+
// Use a timeout to avoid indefinite blocking if an init stalls.
|
|
2661
2668
|
if (ctx.hasUI) {
|
|
2662
|
-
ctx.ui.notify(
|
|
2663
|
-
}
|
|
2669
|
+
const notify = ctx.ui.notify.bind(ctx.ui);
|
|
2664
2670
|
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
+
// Wait for async inits to complete, then emit notification
|
|
2672
|
+
// Use Promise.race with a timeout to avoid indefinite blocking
|
|
2673
|
+
const startupTimeout = new Promise<void>((resolve) => {
|
|
2674
|
+
setTimeout(resolve, 5000); // 5 second timeout
|
|
2675
|
+
});
|
|
2676
|
+
Promise.race([
|
|
2677
|
+
Promise.allSettled(asyncInitPromises),
|
|
2678
|
+
startupTimeout,
|
|
2679
|
+
]).then(() => {
|
|
2680
|
+
const lines = [
|
|
2681
|
+
`Harness v${HARNESS_VERSION} — quota management, automation, memory, multi-agent`,
|
|
2682
|
+
...startupMessages,
|
|
2683
|
+
];
|
|
2684
|
+
notify(lines.join("\n"), "info");
|
|
2685
|
+
});
|
|
2671
2686
|
}
|
|
2672
2687
|
});
|
|
2673
2688
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pi-harness-runtime",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.150",
|
|
4
4
|
"description": "[BETA] Codex-style /usage status + autonomous coding harness for pi. Not production ready — expect breaking changes.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
"build": "for pkg in packages/*/; do [ -f \"${pkg}tsconfig.json\" ] && [ \"$pkg\" != \"packages/provider-router/\" ] && node_modules/.bin/tsc -p \"${pkg}tsconfig.json\" --skipLibCheck > /dev/null 2>&1 || true; done",
|
|
20
20
|
"prepublishOnly": "bun run build",
|
|
21
21
|
"test:harness": "bun test harness/langchain/",
|
|
22
|
-
"test:all": "node --test && bun test harness/langchain/"
|
|
22
|
+
"test:all": "node --test && bun test harness/langchain/",
|
|
23
|
+
"prepublish": "bun run build"
|
|
23
24
|
},
|
|
24
25
|
"bin": {
|
|
25
26
|
"harness-auth": "packages/auth/src/run-minimax-auth.ts"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-harness/capability-registry",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.150",
|
|
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",
|