pi-harness-runtime 1.1.210 → 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.
Files changed (101) hide show
  1. package/index.ts +104 -26
  2. package/package.json +1 -1
  3. package/packages/a2a-adapter/package.json +1 -1
  4. package/packages/agent-policy/package.json +1 -1
  5. package/packages/architecture-generator/package.json +1 -1
  6. package/packages/auth/package.json +1 -1
  7. package/packages/autonomous-refactor/package.json +1 -1
  8. package/packages/autonomous-runtime/package.json +1 -1
  9. package/packages/cache-strategy/package.json +1 -1
  10. package/packages/capability-registry/package.json +1 -1
  11. package/packages/checkpoint/package.json +1 -1
  12. package/packages/cli-plugin-sdk/package.json +1 -1
  13. package/packages/clipboard/package.json +1 -1
  14. package/packages/clipboard-plugin/package.json +1 -1
  15. package/packages/code-generation/package.json +1 -1
  16. package/packages/code-review/package.json +1 -1
  17. package/packages/codex-adapter/package.json +1 -1
  18. package/packages/codex-watcher/package.json +1 -1
  19. package/packages/config-capture/package.json +1 -1
  20. package/packages/context-compiler/package.json +1 -1
  21. package/packages/context-discovery/package.json +1 -1
  22. package/packages/context-manager/package.json +1 -1
  23. package/packages/cookie-sanitizer/package.json +1 -1
  24. package/packages/cost-optimizer/package.json +1 -1
  25. package/packages/dependency-analyzer/package.json +1 -1
  26. package/packages/django-plugin/package.json +1 -1
  27. package/packages/doc-generator/package.json +1 -1
  28. package/packages/e2e-tester/package.json +1 -1
  29. package/packages/evaluation-engine/package.json +1 -1
  30. package/packages/evaluation-runner/package.json +1 -1
  31. package/packages/event-bus/package.json +1 -1
  32. package/packages/event-store/package.json +1 -1
  33. package/packages/experience-replay/package.json +1 -1
  34. package/packages/feedback-collector/package.json +1 -1
  35. package/packages/file-copy-helper/package.json +1 -1
  36. package/packages/framework-detector/package.json +1 -1
  37. package/packages/framework-plugin-sdk/package.json +1 -1
  38. package/packages/frappe-plugin/package.json +1 -1
  39. package/packages/generic-web-plugin/package.json +1 -1
  40. package/packages/health-monitor/package.json +1 -1
  41. package/packages/intent-analyzer/package.json +1 -1
  42. package/packages/jev-judge/package.json +1 -1
  43. package/packages/knowledge-graph/package.json +1 -1
  44. package/packages/knowledge-retrieval/package.json +1 -1
  45. package/packages/laravel-plugin/package.json +1 -1
  46. package/packages/learning-engine/package.json +1 -1
  47. package/packages/mcp-adapter/package.json +1 -1
  48. package/packages/memory-engine/package.json +1 -1
  49. package/packages/milestone-manager/package.json +1 -1
  50. package/packages/model-registry/package.json +1 -1
  51. package/packages/nextjs-plugin/package.json +1 -1
  52. package/packages/notification/package.json +1 -1
  53. package/packages/observability/package.json +1 -1
  54. package/packages/okf-indexer/package.json +1 -1
  55. package/packages/paperclip-integration/package.json +1 -1
  56. package/packages/performance-optimizer/package.json +1 -1
  57. package/packages/privilege-broker/package.json +1 -1
  58. package/packages/project-analyzer/package.json +1 -1
  59. package/packages/project-bootstrap/package.json +1 -1
  60. package/packages/projection-engine/package.json +1 -1
  61. package/packages/prompt-compiler/package.json +1 -1
  62. package/packages/prompt-versioning/package.json +1 -1
  63. package/packages/provider-adapter-sdk/package.json +1 -1
  64. package/packages/provider-router/package.json +1 -1
  65. package/packages/provider-selector/package.json +1 -1
  66. package/packages/providers/package.json +1 -1
  67. package/packages/qdrant-skills/package.json +1 -1
  68. package/packages/quota-manager/package.json +1 -1
  69. package/packages/rate-limiter/package.json +1 -1
  70. package/packages/react-vite-plugin/package.json +1 -1
  71. package/packages/release-manager/package.json +1 -1
  72. package/packages/requirement-compiler/package.json +1 -1
  73. package/packages/runtime/package.json +1 -1
  74. package/packages/scheduler/package.json +1 -1
  75. package/packages/scheduler-adapter/package.json +1 -1
  76. package/packages/session/package.json +1 -1
  77. package/packages/session-api/package.json +1 -1
  78. package/packages/session-export/package.json +1 -1
  79. package/packages/shared-context/package.json +1 -1
  80. package/packages/skill-mcp-client/package.json +1 -1
  81. package/packages/skill-registry/package.json +1 -1
  82. package/packages/skills/package.json +1 -1
  83. package/packages/sprint-planner/package.json +1 -1
  84. package/packages/subscription-engine/package.json +1 -1
  85. package/packages/task-compiler/package.json +1 -1
  86. package/packages/telegram/package.json +1 -1
  87. package/packages/tencentdb-memory/package.json +1 -1
  88. package/packages/tencentdb-sync/package.json +1 -1
  89. package/packages/test-data-generator/package.json +1 -1
  90. package/packages/test-generator/package.json +1 -1
  91. package/packages/todo-bd-sync/package.json +1 -1
  92. package/packages/token-estimation/package.json +1 -1
  93. package/packages/token-optimizer/package.json +1 -1
  94. package/packages/trajectory/package.json +1 -1
  95. package/packages/tui/package.json +1 -1
  96. package/packages/types/package.json +1 -1
  97. package/packages/webmcp-tester/package.json +1 -1
  98. package/packages/workflow-events/package.json +1 -1
  99. package/packages/workspace-scanner/package.json +1 -1
  100. package/packages/worktree/package.json +1 -1
  101. package/packages/write-review/package.json +1 -1
package/index.ts CHANGED
@@ -3016,22 +3016,71 @@ Run \`bd ready\` to see current bd issues.
3016
3016
  },
3017
3017
  });
3018
3018
 
3019
- // --- Footer status (persistent badge) --------------------------------
3020
- const HARNESS_STATUS_KEYS = [
3021
- "harness-runtime",
3022
- "harness-qdrant",
3023
- "harness-telegram",
3024
- "harness-honcho",
3025
- "harness-skills",
3026
- ];
3027
- let harnessStatusShown = false;
3028
- let harnessSetStatus: ((key: string, value: string) => void) | null = null;
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";
3028
+ interface HarnessMessage {
3029
+ id: string;
3030
+ label: string;
3031
+ text: string;
3032
+ status: "wait" | "ok" | "err";
3033
+ }
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;
3039
+
3040
+ function addHarnessMessage(label: string, text: string, status: "wait" | "ok" | "err" = "wait") {
3041
+ const id = `${label}-${Date.now()}`;
3042
+ harnessMessages.push({ id, label, text, status });
3043
+ harnessTUI?.requestRender();
3044
+ }
3045
+
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) + "…";
3054
+ }
3055
+
3056
+ function getHarnessLines(width: number): string[] {
3057
+ if (!startupVisible || harnessMessages.length === 0) return [];
3058
+
3059
+ const lines: string[] = [];
3060
+ const heading = truncateToWidth("[pi-harness]", width);
3061
+ lines.push(heading);
3062
+
3063
+ for (let i = 0; i < harnessMessages.length; i++) {
3064
+ const msg = harnessMessages[i];
3065
+ const marker = msg.status === "ok" ? "[OK]" : msg.status === "err" ? "[ERR]" : "[WAIT]";
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);
3070
+ lines.push(text);
3071
+ }
3029
3072
 
3073
+ // Trailing spacer for breathing room (like Todos)
3074
+ lines.push("");
3075
+
3076
+ return lines;
3077
+ }
3078
+
3079
+ // --- Footer status (persistent badge) --------------------------------
3030
3080
  pi.on("session_start", async (_event, ctx) => {
3031
3081
 
3032
3082
  // Capture only the setStatus function, not the ctx
3033
3083
  footerSetStatus = ctx.ui.setStatus.bind(ctx.ui);
3034
- harnessSetStatus = ctx.ui.setStatus.bind(ctx.ui);
3035
3084
  refreshFooterStatus(
3036
3085
  footerSetStatus,
3037
3086
  tracker,
@@ -3040,10 +3089,33 @@ Run \`bd ready\` to see current bd issues.
3040
3089
  () => lastActiveProvider,
3041
3090
  );
3042
3091
 
3043
- // --- Harness startup status (appears BELOW footer) -----------
3044
- // Each setStatus key = one row. Use multiple keys for multiple rows.
3045
- harnessStatusShown = false;
3046
- harnessSetStatus("harness-runtime", "[pi-harness] Runtime: initializing...");
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
+ }
3116
+
3117
+ // Add initial harness message
3118
+ addHarnessMessage("Runtime", "initializing", "wait");
3047
3119
 
3048
3120
  // Wait for async inits to complete, then update status
3049
3121
  const startupTimeout = new Promise<void>((resolve) => {
@@ -3053,36 +3125,42 @@ Run \`bd ready\` to see current bd issues.
3053
3125
  Promise.allSettled(asyncInitPromises),
3054
3126
  startupTimeout,
3055
3127
  ]).then(() => {
3056
- harnessSetStatus?.("harness-runtime", "[pi-harness] Runtime: ready");
3128
+ // Fence: ignore if session changed or already hidden
3129
+ if (mySession !== sessionGeneration || !startupVisible) return;
3057
3130
 
3131
+ // Update Runtime status
3132
+ const runtimeMsg = harnessMessages.find((m) => m.label === "Runtime");
3133
+ if (runtimeMsg) {
3134
+ runtimeMsg.status = "ok";
3135
+ runtimeMsg.text = "initialized";
3136
+ }
3137
+
3138
+ // Add service messages from startup
3058
3139
  for (const msg of startupMessages) {
3059
3140
  if (msg.includes("Qdrant") && msg.includes("ready")) {
3060
- harnessSetStatus?.("harness-qdrant", "[pi-harness] Qdrant: connected");
3141
+ addHarnessMessage("Qdrant", "connected", "ok");
3061
3142
  }
3062
3143
  if (msg.includes("Telegram") && msg.includes("ready")) {
3063
- harnessSetStatus?.("harness-telegram", "[pi-harness] Telegram: verified");
3144
+ addHarnessMessage("Telegram", "verified", "ok");
3064
3145
  }
3065
3146
  if (msg.includes("Honcho")) {
3066
- harnessSetStatus?.("harness-honcho", "[pi-harness] Honcho: registered");
3147
+ addHarnessMessage("Honcho", "registered", "ok");
3067
3148
  }
3068
3149
  if (msg.includes("Scanned") && msg.includes("skills")) {
3069
3150
  const match = msg.match(/Scanned (\d+)/);
3070
3151
  if (match) {
3071
- harnessSetStatus?.("harness-skills", `[pi-harness] Skills: ${match[1]}`);
3152
+ addHarnessMessage("Skills", `${match[1]} discovered`, "ok");
3072
3153
  }
3073
3154
  }
3074
3155
  }
3075
3156
  });
3076
3157
  });
3077
3158
 
3078
- // Clear harness status on first user input (like [Prompts]/[Extensions] disappear)
3159
+ // Hide harness block on first user input (like [Prompts]/[Extensions] disappear)
3079
3160
  pi.on("message_start", (event) => {
3080
3161
  const msg = event.message as { role?: string };
3081
- if (msg?.role === "user" && !harnessStatusShown) {
3082
- harnessStatusShown = true;
3083
- for (const key of HARNESS_STATUS_KEYS) {
3084
- harnessSetStatus?.(key, "");
3085
- }
3162
+ if (msg?.role === "user") {
3163
+ hideHarnessBlock();
3086
3164
  }
3087
3165
  });
3088
3166
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-harness-runtime",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
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": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/a2a-adapter",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "type": "module",
5
5
  "description": "Google Agent-to-Agent (A2A) protocol adapter for pi-harness",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/agent-policy",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Agent policy runtime for pi-harness - enforces mandatory rule delivery and mutation gating",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/architecture-generator",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Generate ADR and Mermaid diagrams from project analysis",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/auth",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "pi-harness-runtime — auth",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/autonomous-refactor",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "type": "module",
5
5
  "description": "Autonomous refactoring engine",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/autonomous-runtime",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Autonomous Operations Runtime — task inbox, lease management, and worker lifecycle (RFC-0101)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/cache-strategy",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "type": "module",
5
5
  "description": "Smart caching with TTL and invalidation strategies (RFC-0022)",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/capability-registry",
3
- "version": "1.1.210",
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/checkpoint",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Enhanced checkpoint system with incremental snapshots, diff-based storage, and recovery strategies",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/cli-plugin-sdk",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "type": "module",
5
5
  "description": "CLI Plugin SDK for pi-harness — install, list, remove, update, invoke plugins",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/clipboard",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/clipboard-plugin",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/code-generation",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Code generation pipeline for pi-harness-runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/code-review",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Automated code review engine for pi-harness-runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/codex-adapter",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "type": "module",
5
5
  "description": "OpenAI Codex provider adapter for pi-harness",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/codex-watcher",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Watches Codex CLI sessions and emits visible messages for PING-PONG monitoring",
5
5
  "type": "module",
6
6
  "main": "./dist/src/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moocoding/config-capture",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Auto-capture API-fetched configuration values to AGENTS.md",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/context-compiler",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Bounded context selection engine for pi-harness-runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/context-discovery",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/context-manager",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Context Window Manager — prevents model context overflow via compaction and resume prompts (RFC-0010)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/cookie-sanitizer",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "pi-harness-runtime — cookie sanitizer (provider-quota cookie file normaliser)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/cost-optimizer",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Cost Optimizer for pi-harness-runtime — budget tracking, forecasting, and model selection optimization",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/dependency-analyzer",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/django-plugin",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Django framework analysis — models, management commands, settings",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/doc-generator",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Auto-Doc Generator — generate documentation from source code (RFC-0014)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/e2e-tester",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "WebMCP-powered E2E testing for pi-harness - natural language test scenarios",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/evaluation-engine",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Evaluation engine for pi-harness runtime (RFC-0057)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/evaluation-runner",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "type": "module",
5
5
  "description": "Framework-agnostic evaluation framework for AI outputs (RFC-0020)",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/event-bus",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/event-store",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/experience-replay",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Experience replay for debugging and reproducibility (RFC-0059)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/feedback-collector",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "type": "module",
5
5
  "description": "Collect and aggregate human/automated feedback (RFC-0021)",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moocoding/file-copy-helper",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Injects cp/sudo cp rule when user asks to mimic/copy files",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/framework-detector",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Framework detection system for pi-harness-runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/framework-plugin-sdk",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Framework plugin SDK for pi-harness-runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/frappe-plugin",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Frappe/ERPNext framework analysis — DocTypes, hooks, bench sites, site config",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/generic-web-plugin",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Generic web framework analysis — REST/GraphQL endpoints, OpenAPI, auth",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/health-monitor",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "type": "module",
5
5
  "description": "Health monitoring and auto-healing",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/intent-analyzer",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/jev-judge",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Jev Judge - Structured decision model for agent routing, E2E testing, and automated decisions",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/knowledge-graph",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Knowledge Graph extraction and provenance linking for SKILL.md files",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/knowledge-retrieval",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Knowledge retrieval via TencentDB-Agent-Memory MCP (RFC-0105)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/laravel-plugin",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Laravel framework analysis — artisan commands, Eloquent models, Blade",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/learning-engine",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Learning engine for extracting lessons from runtime execution (RFC-0058)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/mcp-adapter",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "type": "module",
5
5
  "description": "MCP server adapter for pi-harness — exposes harness capabilities as MCP tools/resources/prompts (RFC-0068)",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/memory-engine",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Memory engine with OKF integration for durable knowledge management (RFC-0060)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/milestone-manager",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Track milestones and alerts when items are at risk",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/model-registry",
3
- "version": "1.1.210",
3
+ "version": "1.1.212",
4
4
  "description": "Model Registry for pi-harness-runtime — centralized model metadata with pricing",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",