pi-harness-runtime 1.1.311 → 1.1.312

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 +61 -109
  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
@@ -2596,126 +2596,78 @@ export default function (pi: ExtensionAPI) {
2596
2596
  const codexHandle = startWatcher({
2597
2597
  pollIntervalMs: 5000,
2598
2598
  maxIdlePolls: Infinity,
2599
- onSessionChange: async (session) => {
2600
- if (session) {
2601
- logToFile("[codex]", `Session started: ${session.threadName}, root: ${session.projectRoot}`);
2602
-
2603
- // --- Same-workspace greeting ---
2604
- const codexSessionId = session.id;
2605
- const codexProjectRoot = session.projectRoot;
2606
-
2607
- // Skip the first callback - it's the baseline poll, not a new session
2608
- if (!firstPollDone) {
2609
- firstPollDone = true;
2610
- logToFile("[codex-greeting]", "Skipping first poll callback (baseline):", codexSessionId);
2611
- return;
2612
- }
2613
-
2614
- // Skip if this is the baseline session (Pi just restarted)
2615
- if (codexSessionId === codexSessionState.greetingBaselineSessionId) {
2616
- logToFile("[codex-greeting]", "Skipping baseline session:", codexSessionId);
2617
- return;
2618
- }
2599
+ onSessionChange: async (session) => {
2600
+ if (session) {
2601
+ logToFile("[codex]", `Session started: ${session.threadName}, root: ${session.projectRoot}`);
2602
+
2603
+ // Update session state FIRST - needed for message handler
2604
+ codexSessionState.currentCodexSessionId = session.id;
2605
+ codexSessionState.currentProjectRoot = session.projectRoot;
2606
+ nc("CodexSessionStarted", {
2607
+ requirement: `${session.threadName || "Codex session"} [${session.projectRoot || "unknown"}]`,
2608
+ taskTitle: session.id,
2609
+ });
2619
2610
 
2620
- // Check for duplicate greeting
2621
- const piCwd = _piSessionCwd || "";
2622
- const greetKey = `${piCwd}:${codexSessionId}`;
2623
- if (codexSessionState.greetedSessions.has(greetKey)) {
2624
- logToFile("[codex-greeting]", "Already greeted:", greetKey);
2625
- return;
2626
- }
2611
+ // --- Same-workspace greeting ---
2612
+ const codexSessionId = session.id;
2613
+ const codexProjectRoot = session.projectRoot;
2627
2614
 
2628
- // Check root match
2629
- if (!piCwd || !codexProjectRoot || piCwd !== codexProjectRoot) {
2630
- logToFile("[codex-greeting]", "Different workspace or Pi cwd unknown, skipping greeting");
2615
+ // Skip the first callback only if it matches the baseline
2616
+ if (!firstPollDone) {
2617
+ firstPollDone = true;
2618
+ if (codexSessionId === codexSessionState.greetingBaselineSessionId) {
2619
+ logToFile("[codex-greeting]", "Skipping baseline session (first poll):", codexSessionId);
2631
2620
  return;
2632
2621
  }
2622
+ // First poll was a new session - continue to greeting logic
2623
+ logToFile("[codex-greeting]", "First poll is new session:", codexSessionId);
2624
+ }
2633
2625
 
2634
- logToFile("[codex-greeting]", "Same workspace detected:", codexSessionId);
2626
+ // Check for duplicate greeting
2627
+ const piCwd = _piSessionCwd || "";
2628
+ const greetKey = `${piCwd}:${codexSessionId}`;
2629
+ if (codexSessionState.greetedSessions.has(greetKey)) {
2630
+ logToFile("[codex-greeting]", "Already greeted:", greetKey);
2631
+ return;
2632
+ }
2635
2633
 
2636
- // Use _piSessionCwd (Pi state) to check if Pi is active
2637
- if (piCwd) {
2638
- // Pi session active - send greeting now with await for safe delivery
2639
- logToFile("[codex-greeting]", "Sending greeting for:", codexSessionId);
2640
- try {
2641
- await pi.sendUserMessage(
2642
- `Codex opened in this workspace (session ${codexSessionId.slice(0, 8)}...). Say hello briefly, then wait for the user's next instruction.`,
2643
- { deliverAs: "followUp" }
2644
- );
2645
- codexSessionState.greetedSessions.add(greetKey);
2646
- } catch (err) {
2647
- logToFile("[codex-greeting]", "Failed to deliver greeting:", String(err));
2648
- // Keep greetKey out of greetedSessions so retry is possible
2649
- }
2650
- } else {
2651
- // Pi session not active yet - queue for delivery on session_start
2652
- logToFile("[codex-greeting]", "Pi not active, queueing greeting for:", codexSessionId);
2653
- codexSessionState.pendingGreeting = {
2654
- sessionId: codexSessionId,
2655
- projectRoot: codexProjectRoot,
2656
- timestamp: Date.now(),
2657
- };
2658
- }
2634
+ // Check root match
2635
+ if (!piCwd || !codexProjectRoot || piCwd !== codexProjectRoot) {
2636
+ logToFile("[codex-greeting]", "Different workspace or Pi cwd unknown, skipping greeting");
2659
2637
  return;
2660
-
2661
- // --- Same-workspace greeting ---
2662
- const codexSessionId = session.id;
2663
- const codexProjectRoot = session.projectRoot;
2638
+ }
2664
2639
 
2665
- // Skip if this is the baseline session (Pi just restarted)
2666
- if (codexSessionId === codexSessionState.greetingBaselineSessionId) {
2667
- logToFile("[codex-greeting]", "Skipping baseline session:", codexSessionId);
2668
- } else {
2669
- // Check for duplicate greeting
2670
- const piCwd = _piSessionCwd || "";
2671
- const greetKey = `${piCwd}:${codexSessionId}`;
2672
- if (!codexSessionState.greetedSessions.has(greetKey)) {
2673
- // Check root match
2674
- if (piCwd && codexProjectRoot && piCwd === codexProjectRoot) {
2675
- logToFile("[codex-greeting]", "Same workspace detected:", codexSessionId);
2676
-
2677
- // Use _piSessionCwd (Pi state) to check if Pi is active, not Codex state
2678
- if (piCwd) {
2679
- // Pi session active - send greeting now with await for safe delivery
2680
- logToFile("[codex-greeting]", "Sending greeting for:", codexSessionId);
2681
- try {
2682
- await pi.sendUserMessage(
2683
- `Codex opened in this workspace (session ${codexSessionId.slice(0, 8)}...). Say hello briefly, then wait for the user's next instruction.`,
2684
- { deliverAs: "followUp" }
2685
- );
2686
- codexSessionState.greetedSessions.add(greetKey);
2687
- } catch (err) {
2688
- logToFile("[codex-greeting]", "Failed to deliver greeting:", String(err));
2689
- }
2690
- } else {
2691
- // Pi session not active yet - queue for delivery on session_start
2692
- logToFile("[codex-greeting]", "Pi not active, queueing greeting for:", codexSessionId);
2693
- codexSessionState.pendingGreeting = {
2694
- sessionId: codexSessionId,
2695
- projectRoot: codexProjectRoot,
2696
- timestamp: Date.now(),
2697
- };
2698
- }
2699
- } else {
2700
- logToFile("[codex-greeting]", "Different workspace or Pi cwd unknown, skipping greeting");
2701
- }
2702
- } else {
2703
- logToFile("[codex-greeting]", "Already greeted:", greetKey);
2704
- }
2705
- }
2640
+ logToFile("[codex-greeting]", "Same workspace detected:", codexSessionId);
2706
2641
 
2707
- codexSessionState.currentCodexSessionId = session.id;
2708
- codexSessionState.currentProjectRoot = session.projectRoot;
2709
- nc("CodexSessionStarted", {
2710
- requirement: `${session.threadName || "Codex session"} [${session.projectRoot || "unknown"}]`,
2711
- taskTitle: session.id,
2712
- });
2642
+ // Use _piSessionCwd (Pi state) to check if Pi is active
2643
+ if (piCwd) {
2644
+ // Pi session active - send greeting now with await for safe delivery
2645
+ logToFile("[codex-greeting]", "Sending greeting for:", codexSessionId);
2646
+ try {
2647
+ await pi.sendUserMessage(
2648
+ `Codex opened in this workspace (session ${codexSessionId.slice(0, 8)}...). Say hello briefly, then wait for the user's next instruction.`,
2649
+ { deliverAs: "followUp" }
2650
+ );
2651
+ codexSessionState.greetedSessions.add(greetKey);
2652
+ } catch (err) {
2653
+ logToFile("[codex-greeting]", "Failed to deliver greeting:", String(err));
2654
+ // Keep greetKey out of greetedSessions so retry is possible
2655
+ }
2713
2656
  } else {
2714
- codexSessionState.currentCodexSessionId = null;
2715
- codexSessionState.currentProjectRoot = null;
2716
- codexSessionState.currentPlanCandidate = null;
2657
+ // Pi session not active yet - queue for delivery on session_start
2658
+ logToFile("[codex-greeting]", "Pi not active, queueing greeting for:", codexSessionId);
2659
+ codexSessionState.pendingGreeting = {
2660
+ sessionId: codexSessionId,
2661
+ projectRoot: codexProjectRoot,
2662
+ timestamp: Date.now(),
2663
+ };
2717
2664
  }
2718
- },
2665
+ } else {
2666
+ codexSessionState.currentCodexSessionId = null;
2667
+ codexSessionState.currentProjectRoot = null;
2668
+ codexSessionState.currentPlanCandidate = null;
2669
+ }
2670
+ },
2719
2671
  onMessages: (msgs) => {
2720
2672
  if (!codexSessionState.currentCodexSessionId) return;
2721
2673
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-harness-runtime",
3
- "version": "1.1.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
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.311",
3
+ "version": "1.1.312",
4
4
  "description": "Track milestones and alerts when items are at risk",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",