pi-harness-runtime 1.1.211 → 1.1.212
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 -21
- 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
|
@@ -3016,8 +3016,15 @@ Run \`bd ready\` to see current bd issues.
|
|
|
3016
3016
|
},
|
|
3017
3017
|
});
|
|
3018
3018
|
|
|
3019
|
-
// --- Harness
|
|
3020
|
-
//
|
|
3019
|
+
// --- Harness widget state (like Todos extension) -----------------------
|
|
3020
|
+
// Learn from Todos extension:
|
|
3021
|
+
// - setWidget with placement: "aboveEditor" (fixed above input)
|
|
3022
|
+
// - Capture tui.requestRender from factory
|
|
3023
|
+
// - Return [] when hidden (removes widget height)
|
|
3024
|
+
// - Call requestRender(true) on hide for forced redraw
|
|
3025
|
+
// - Tree characters like Todos (├─ └─)
|
|
3026
|
+
// - Trailing spacer line for breathing room
|
|
3027
|
+
const HARNESS_WIDGET_KEY = "pi-harness-startup";
|
|
3021
3028
|
interface HarnessMessage {
|
|
3022
3029
|
id: string;
|
|
3023
3030
|
label: string;
|
|
@@ -3025,29 +3032,47 @@ Run \`bd ready\` to see current bd issues.
|
|
|
3025
3032
|
status: "wait" | "ok" | "err";
|
|
3026
3033
|
}
|
|
3027
3034
|
const harnessMessages: HarnessMessage[] = [];
|
|
3035
|
+
let startupVisible = true;
|
|
3036
|
+
let harnessTUI: { requestRender: (forced?: boolean) => void } | null = null;
|
|
3037
|
+
let harnessWidgetRegistered = false;
|
|
3038
|
+
let sessionGeneration = 0;
|
|
3028
3039
|
|
|
3029
3040
|
function addHarnessMessage(label: string, text: string, status: "wait" | "ok" | "err" = "wait") {
|
|
3030
3041
|
const id = `${label}-${Date.now()}`;
|
|
3031
3042
|
harnessMessages.push({ id, label, text, status });
|
|
3043
|
+
harnessTUI?.requestRender();
|
|
3032
3044
|
}
|
|
3033
3045
|
|
|
3034
|
-
function
|
|
3035
|
-
|
|
3046
|
+
function hideHarnessBlock() {
|
|
3047
|
+
startupVisible = false;
|
|
3048
|
+
harnessTUI?.requestRender(true); // Force redraw like Todos
|
|
3049
|
+
}
|
|
3050
|
+
|
|
3051
|
+
function truncateToWidth(text: string, width: number): string {
|
|
3052
|
+
if (text.length <= width) return text;
|
|
3053
|
+
return text.substring(0, width - 1) + "…";
|
|
3036
3054
|
}
|
|
3037
3055
|
|
|
3038
3056
|
function getHarnessLines(width: number): string[] {
|
|
3057
|
+
if (!startupVisible || harnessMessages.length === 0) return [];
|
|
3058
|
+
|
|
3039
3059
|
const lines: string[] = [];
|
|
3040
|
-
|
|
3060
|
+
const heading = truncateToWidth("[pi-harness]", width);
|
|
3061
|
+
lines.push(heading);
|
|
3041
3062
|
|
|
3042
|
-
|
|
3043
|
-
|
|
3063
|
+
for (let i = 0; i < harnessMessages.length; i++) {
|
|
3064
|
+
const msg = harnessMessages[i];
|
|
3044
3065
|
const marker = msg.status === "ok" ? "[OK]" : msg.status === "err" ? "[ERR]" : "[WAIT]";
|
|
3045
|
-
|
|
3046
|
-
|
|
3047
|
-
|
|
3048
|
-
|
|
3066
|
+
const isLast = i === harnessMessages.length - 1;
|
|
3067
|
+
const treeChar = isLast ? "└─" : "├─";
|
|
3068
|
+
let text = `${treeChar} ${marker} ${msg.label}: ${msg.text}`;
|
|
3069
|
+
text = truncateToWidth(text, width);
|
|
3049
3070
|
lines.push(text);
|
|
3050
3071
|
}
|
|
3072
|
+
|
|
3073
|
+
// Trailing spacer for breathing room (like Todos)
|
|
3074
|
+
lines.push("");
|
|
3075
|
+
|
|
3051
3076
|
return lines;
|
|
3052
3077
|
}
|
|
3053
3078
|
|
|
@@ -3064,14 +3089,30 @@ Run \`bd ready\` to see current bd issues.
|
|
|
3064
3089
|
() => lastActiveProvider,
|
|
3065
3090
|
);
|
|
3066
3091
|
|
|
3067
|
-
//
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3092
|
+
// Increment session generation to fence late callbacks
|
|
3093
|
+
sessionGeneration++;
|
|
3094
|
+
const mySession = sessionGeneration;
|
|
3095
|
+
startupVisible = true;
|
|
3096
|
+
harnessMessages.length = 0;
|
|
3097
|
+
|
|
3098
|
+
// --- Install harness widget (like Todos with placement: "aboveEditor") -------
|
|
3099
|
+
// Use setWidget with placement: "aboveEditor" - fixed above input field
|
|
3100
|
+
if (!harnessWidgetRegistered) {
|
|
3101
|
+
ctx.ui.setWidget(
|
|
3102
|
+
HARNESS_WIDGET_KEY,
|
|
3103
|
+
(tui, _theme) => {
|
|
3104
|
+
harnessTUI = tui;
|
|
3105
|
+
return {
|
|
3106
|
+
render: (width: number) => getHarnessLines(width),
|
|
3107
|
+
invalidate: () => {},
|
|
3108
|
+
};
|
|
3109
|
+
},
|
|
3110
|
+
{ placement: "aboveEditor" }, // Like Todos!
|
|
3111
|
+
);
|
|
3112
|
+
harnessWidgetRegistered = true;
|
|
3113
|
+
} else {
|
|
3114
|
+
harnessTUI?.requestRender();
|
|
3115
|
+
}
|
|
3075
3116
|
|
|
3076
3117
|
// Add initial harness message
|
|
3077
3118
|
addHarnessMessage("Runtime", "initializing", "wait");
|
|
@@ -3084,6 +3125,9 @@ Run \`bd ready\` to see current bd issues.
|
|
|
3084
3125
|
Promise.allSettled(asyncInitPromises),
|
|
3085
3126
|
startupTimeout,
|
|
3086
3127
|
]).then(() => {
|
|
3128
|
+
// Fence: ignore if session changed or already hidden
|
|
3129
|
+
if (mySession !== sessionGeneration || !startupVisible) return;
|
|
3130
|
+
|
|
3087
3131
|
// Update Runtime status
|
|
3088
3132
|
const runtimeMsg = harnessMessages.find((m) => m.label === "Runtime");
|
|
3089
3133
|
if (runtimeMsg) {
|
|
@@ -3112,11 +3156,11 @@ Run \`bd ready\` to see current bd issues.
|
|
|
3112
3156
|
});
|
|
3113
3157
|
});
|
|
3114
3158
|
|
|
3115
|
-
//
|
|
3159
|
+
// Hide harness block on first user input (like [Prompts]/[Extensions] disappear)
|
|
3116
3160
|
pi.on("message_start", (event) => {
|
|
3117
3161
|
const msg = event.message as { role?: string };
|
|
3118
3162
|
if (msg?.role === "user") {
|
|
3119
|
-
|
|
3163
|
+
hideHarnessBlock();
|
|
3120
3164
|
}
|
|
3121
3165
|
});
|
|
3122
3166
|
|
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.212",
|
|
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.212",
|
|
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",
|