pi-harness-runtime 1.1.39 → 1.1.42
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/harness/langchain/daemon.ts +7 -3
- package/harness/langchain/graph.ts +133 -9
- package/harness/langchain/scoreboard.test.ts +222 -0
- package/harness/langchain/widget.test.ts +25 -18
- package/harness/langchain/widget.ts +61 -44
- package/package.json +1 -1
- 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/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/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/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/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/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/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/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/packages/write-review/src/blackboard.ts +56 -12
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pi-harness/provider-router",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.42",
|
|
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",
|
|
@@ -200,36 +200,80 @@ export class WriteReviewBlackboard {
|
|
|
200
200
|
}
|
|
201
201
|
|
|
202
202
|
/**
|
|
203
|
-
* Export status as markdown for display
|
|
203
|
+
* Export status as markdown for display.
|
|
204
|
+
* Injected into every agent prompt so each agent sees the shared scoreboard.
|
|
205
|
+
* Matches the pi-lens pattern: persistent artifact encountered naturally.
|
|
204
206
|
*/
|
|
205
207
|
toMarkdown(): string {
|
|
206
208
|
if (!this.status) return "No active write-review session.";
|
|
207
209
|
|
|
208
|
-
const {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
210
|
+
const {
|
|
211
|
+
phase,
|
|
212
|
+
iteration,
|
|
213
|
+
verdict,
|
|
214
|
+
verdictMessage,
|
|
215
|
+
codeFiles,
|
|
216
|
+
changesRequested,
|
|
217
|
+
} = this.status;
|
|
218
|
+
|
|
219
|
+
const verdictIcon =
|
|
220
|
+
verdict === "approved"
|
|
221
|
+
? "✅"
|
|
222
|
+
: verdict === "blocked"
|
|
223
|
+
? "⛔"
|
|
224
|
+
: verdict === "changes_requested"
|
|
225
|
+
? "🔄"
|
|
226
|
+
: "⏳";
|
|
227
|
+
|
|
228
|
+
const lines: string[] = [
|
|
229
|
+
`## Write-Review Scoreboard`,
|
|
212
230
|
``,
|
|
213
231
|
`| Field | Value |`,
|
|
214
232
|
`|-------|-------|`,
|
|
215
|
-
`| Phase | ${phase} |`,
|
|
233
|
+
`| Phase | ${verdictIcon} ${phase} |`,
|
|
216
234
|
`| Iteration | ${iteration} |`,
|
|
217
|
-
`| Verdict | ${verdict ?? "
|
|
235
|
+
`| Verdict | ${verdict ?? "(none yet)"} |`,
|
|
218
236
|
];
|
|
219
237
|
|
|
220
238
|
if (verdictMessage) {
|
|
221
|
-
lines.push(`|
|
|
239
|
+
lines.push(`| Summary | ${verdictMessage} |`);
|
|
222
240
|
}
|
|
223
241
|
|
|
224
242
|
if (codeFiles && codeFiles.length > 0) {
|
|
225
|
-
lines.push(``, `### Code Files`);
|
|
243
|
+
lines.push(``, `### Code Files Written`);
|
|
226
244
|
for (const file of codeFiles) {
|
|
227
245
|
lines.push(`- ${file}`);
|
|
228
246
|
}
|
|
229
247
|
}
|
|
230
248
|
|
|
249
|
+
if (changesRequested && changesRequested.length > 0) {
|
|
250
|
+
lines.push(``, `### Changes Requested (${changesRequested.length})`);
|
|
251
|
+
for (const change of changesRequested) {
|
|
252
|
+
lines.push(`- ${change}`);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
231
256
|
return lines.join("\n");
|
|
232
257
|
}
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Extract file paths from a fenced code block string.
|
|
261
|
+
* Looks for common patterns: ```path/to/file
|
|
262
|
+
*/
|
|
263
|
+
extractFilePaths(code: string): string[] {
|
|
264
|
+
const files = new Set<string>();
|
|
265
|
+
// Match ```<whitespace>path (with optional language tag)
|
|
266
|
+
const fencedRe = /^```(?:\w+)?\s+([^\n]+)/gm;
|
|
267
|
+
let match;
|
|
268
|
+
while ((match = fencedRe.exec(code)) !== null) {
|
|
269
|
+
const path = match[1]!.trim();
|
|
270
|
+
// Skip if it looks like a filename with spaces (not a path)
|
|
271
|
+
if (path && !path.includes(" ") && (path.includes("/") || path.includes("\\") || path.endsWith(".ts") || path.endsWith(".js") || path.endsWith(".tsx") || path.endsWith(".json") || path.endsWith(".md"))) {
|
|
272
|
+
files.add(path);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return [...files];
|
|
276
|
+
}
|
|
233
277
|
}
|
|
234
278
|
|
|
235
279
|
/**
|
|
@@ -240,10 +284,10 @@ export function createBlackboard(
|
|
|
240
284
|
dir?: string,
|
|
241
285
|
): WriteReviewBlackboard {
|
|
242
286
|
const bb = new WriteReviewBlackboard(projectPath, dir);
|
|
243
|
-
if (
|
|
244
|
-
bb.init();
|
|
245
|
-
} else {
|
|
287
|
+
if (bb.exists()) {
|
|
246
288
|
bb.load();
|
|
289
|
+
} else {
|
|
290
|
+
bb.init();
|
|
247
291
|
}
|
|
248
292
|
return bb;
|
|
249
293
|
}
|