pi-harness-runtime 1.1.385 → 1.1.387

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 (147) hide show
  1. package/index.ts +42 -24
  2. package/package.json +3 -2
  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/connection-runtime/package.json +1 -1
  21. package/packages/context-compiler/package.json +1 -1
  22. package/packages/context-discovery/package.json +1 -1
  23. package/packages/context-manager/package.json +1 -1
  24. package/packages/contracts/package.json +1 -1
  25. package/packages/cookie-sanitizer/package.json +1 -1
  26. package/packages/cost-optimizer/package.json +1 -1
  27. package/packages/dependency-analyzer/package.json +1 -1
  28. package/packages/django-plugin/package.json +1 -1
  29. package/packages/doc-generator/package.json +1 -1
  30. package/packages/durable-review/package.json +1 -1
  31. package/packages/e2e-tester/package.json +1 -1
  32. package/packages/evaluation-engine/package.json +1 -1
  33. package/packages/evaluation-runner/package.json +1 -1
  34. package/packages/event-bus/package.json +1 -1
  35. package/packages/event-sink/package.json +1 -1
  36. package/packages/event-store/package.json +1 -1
  37. package/packages/experience-replay/package.json +1 -1
  38. package/packages/feedback-collector/package.json +1 -1
  39. package/packages/file-copy-helper/package.json +1 -1
  40. package/packages/framework-detector/package.json +1 -1
  41. package/packages/framework-plugin-sdk/package.json +1 -1
  42. package/packages/frappe-plugin/package.json +1 -1
  43. package/packages/generic-web-plugin/package.json +1 -1
  44. package/packages/health-monitor/package.json +1 -1
  45. package/packages/intent-analyzer/package.json +1 -1
  46. package/packages/jev-judge/dist/auto-continue.d.ts.map +1 -1
  47. package/packages/jev-judge/dist/auto-continue.js +26 -0
  48. package/packages/jev-judge/dist/auto-continue.js.map +1 -1
  49. package/packages/jev-judge/dist/environment-judge.d.ts.map +1 -1
  50. package/packages/jev-judge/dist/environment-judge.js +7 -4
  51. package/packages/jev-judge/dist/environment-judge.js.map +1 -1
  52. package/packages/jev-judge/dist/index.d.ts +87 -12
  53. package/packages/jev-judge/dist/index.d.ts.map +1 -1
  54. package/packages/jev-judge/dist/index.js +291 -75
  55. package/packages/jev-judge/dist/index.js.map +1 -1
  56. package/packages/jev-judge/dist/provider-error.d.ts +61 -0
  57. package/packages/jev-judge/dist/provider-error.d.ts.map +1 -0
  58. package/packages/jev-judge/dist/provider-error.js +165 -0
  59. package/packages/jev-judge/dist/provider-error.js.map +1 -0
  60. package/packages/jev-judge/dist/task-intake.d.ts.map +1 -1
  61. package/packages/jev-judge/dist/task-intake.js +3 -2
  62. package/packages/jev-judge/dist/task-intake.js.map +1 -1
  63. package/packages/jev-judge/dist/types.d.ts +56 -2
  64. package/packages/jev-judge/dist/types.d.ts.map +1 -1
  65. package/packages/jev-judge/dist/typesafe-provider.d.ts +26 -1
  66. package/packages/jev-judge/dist/typesafe-provider.d.ts.map +1 -1
  67. package/packages/jev-judge/dist/typesafe-provider.js +153 -62
  68. package/packages/jev-judge/dist/typesafe-provider.js.map +1 -1
  69. package/packages/jev-judge/dist/typesafe-request.d.ts +65 -0
  70. package/packages/jev-judge/dist/typesafe-request.d.ts.map +1 -0
  71. package/packages/jev-judge/dist/typesafe-request.js +138 -0
  72. package/packages/jev-judge/dist/typesafe-request.js.map +1 -0
  73. package/packages/jev-judge/package.json +1 -1
  74. package/packages/jev-judge/src/auto-continue.ts +26 -0
  75. package/packages/jev-judge/src/environment-judge.ts +7 -4
  76. package/packages/jev-judge/src/index.ts +617 -333
  77. package/packages/jev-judge/src/provider-error.ts +190 -0
  78. package/packages/jev-judge/src/task-intake.ts +3 -2
  79. package/packages/jev-judge/src/types.ts +62 -5
  80. package/packages/jev-judge/src/typesafe-provider.ts +452 -318
  81. package/packages/jev-judge/src/typesafe-request.ts +181 -0
  82. package/packages/jev-judge/tests/jev-provider-chain.test.ts +536 -0
  83. package/packages/jev-judge/tests/typesafe-provider.test.ts +504 -44
  84. package/packages/knowledge-graph/package.json +1 -1
  85. package/packages/knowledge-retrieval/package.json +1 -1
  86. package/packages/laravel-plugin/package.json +1 -1
  87. package/packages/learning-engine/package.json +1 -1
  88. package/packages/mcp-adapter/package.json +1 -1
  89. package/packages/memory-engine/package.json +1 -1
  90. package/packages/milestone-manager/package.json +1 -1
  91. package/packages/model-registry/package.json +1 -1
  92. package/packages/nextjs-plugin/package.json +1 -1
  93. package/packages/notification/package.json +1 -1
  94. package/packages/observability/package.json +1 -1
  95. package/packages/okf-indexer/package.json +1 -1
  96. package/packages/paperclip-integration/package.json +1 -1
  97. package/packages/performance-optimizer/package.json +1 -1
  98. package/packages/permission-mode/package.json +1 -1
  99. package/packages/privilege-broker/package.json +1 -1
  100. package/packages/project-analyzer/package.json +1 -1
  101. package/packages/project-bootstrap/package.json +1 -1
  102. package/packages/projection-engine/package.json +1 -1
  103. package/packages/prompt-compiler/package.json +1 -1
  104. package/packages/prompt-versioning/package.json +1 -1
  105. package/packages/provider-adapter-sdk/package.json +1 -1
  106. package/packages/provider-router/package.json +1 -1
  107. package/packages/provider-selector/package.json +1 -1
  108. package/packages/providers/package.json +1 -1
  109. package/packages/qdrant-skills/package.json +1 -1
  110. package/packages/quota-manager/package.json +1 -1
  111. package/packages/rate-limiter/package.json +1 -1
  112. package/packages/react-vite-plugin/package.json +1 -1
  113. package/packages/relay/package.json +1 -1
  114. package/packages/release-manager/package.json +1 -1
  115. package/packages/requirement-compiler/package.json +1 -1
  116. package/packages/runtime/package.json +1 -1
  117. package/packages/scheduler/package.json +1 -1
  118. package/packages/scheduler-adapter/package.json +1 -1
  119. package/packages/session/package.json +1 -1
  120. package/packages/session-api/package.json +1 -1
  121. package/packages/session-export/package.json +1 -1
  122. package/packages/shared-context/package.json +1 -1
  123. package/packages/skill-mcp-client/package.json +1 -1
  124. package/packages/skill-registry/package.json +1 -1
  125. package/packages/skills/package.json +1 -1
  126. package/packages/sprint-planner/package.json +1 -1
  127. package/packages/subscription-engine/package.json +1 -1
  128. package/packages/task-compiler/package.json +1 -1
  129. package/packages/telegram/package.json +1 -1
  130. package/packages/tencentdb-memory/package.json +1 -1
  131. package/packages/tencentdb-sync/package.json +1 -1
  132. package/packages/test-data-generator/package.json +1 -1
  133. package/packages/test-generator/package.json +1 -1
  134. package/packages/todo-bd-sync/package.json +1 -1
  135. package/packages/token-estimation/package.json +1 -1
  136. package/packages/token-optimizer/package.json +1 -1
  137. package/packages/trajectory/package.json +1 -1
  138. package/packages/tui/package.json +1 -1
  139. package/packages/types/package.json +1 -1
  140. package/packages/voice-api/package.json +1 -1
  141. package/packages/webmcp-tester/package.json +1 -1
  142. package/packages/wiki/package.json +1 -1
  143. package/packages/workflow-events/package.json +1 -1
  144. package/packages/workspace-scanner/package.json +1 -1
  145. package/packages/worktree/package.json +1 -1
  146. package/packages/write-review/package.json +1 -1
  147. package/scripts/run-root-tests.mjs +207 -0
package/index.ts CHANGED
@@ -152,18 +152,18 @@ async function initAutoContinue(pi: ExtensionAPI): Promise<void> {
152
152
  // Check if Jev API key is available (env var or keys file)
153
153
  const homedir = process.env.HOME || process.env.USERPROFILE || "/home/frappe";
154
154
  const keysDir = `${homedir}/.pi-harness-runtime/keys`;
155
- const { readFileSync, existsSync, mkdirSync } = await import("fs");
155
+ const { existsSync, mkdirSync } = await import("fs");
156
156
 
157
157
  // Auto-create directory if doesn't exist
158
158
  if (!existsSync(keysDir)) {
159
159
  mkdirSync(keysDir, { recursive: true });
160
160
  }
161
161
 
162
- const hasEnvKey =
163
- process.env.TYPESAFE_API_KEY?.trim() || process.env.OPENROUTER_API_KEY?.trim();
164
- const hasFileKey =
165
- existsSync(`${keysDir}/jev-api-key.txt`) &&
166
- readFileSync(`${keysDir}/jev-api-key.txt`, "utf8").trim().length > 0;
162
+ // Resolve the provider chain. Every credential stays bound to its own
163
+ // provider: a TypeSafe key is never sent to OpenRouter and an OpenRouter
164
+ // key is never sent to the TypeSafe API.
165
+ const { resolveJevProviders } = await import("./packages/jev-judge/dist/index.js");
166
+ const jevProviders = resolveJevProviders({ keysDir });
167
167
 
168
168
  // Create pending question controller - works independently of Jev
169
169
  const { createPendingQuestionController } = await import("./packages/notification/dist/index.js");
@@ -179,19 +179,19 @@ async function initAutoContinue(pi: ExtensionAPI): Promise<void> {
179
179
  });
180
180
  logStartup("[pi-harness] Delegation harness initialized");
181
181
 
182
- if (!hasEnvKey && !hasFileKey) {
182
+ if (jevProviders.length === 0) {
183
183
  addHarnessMessage("Jev", "API key missing; question detection active, auto-continue unavailable", "warn", [
184
- "Set TYPESAFE_API_KEY or ~/.pi-harness-runtime/keys/jev-api-key.txt to enable auto-continue.",
184
+ "Set TYPESAFE_API_KEY (or OPENROUTER_API_KEY), or write the key to ~/.pi-harness-runtime/keys/typesafe-api-key.txt (or openrouter-api-key.txt), to enable auto-continue.",
185
185
  ]);
186
- logToFile("[auto-continue]", "No Jev API key found, but question detection is active. Set TYPESAFE_API_KEY run: echo \"{api_key}\" > ~/.pi-harness-runtime/keys/jev-api-key.txt");
186
+ logToFile("[auto-continue]", "No Jev API key found, but question detection is active. Set TYPESAFE_API_KEY or write the key to ~/.pi-harness-runtime/keys/typesafe-api-key.txt");
187
187
  // Don't return - question handling still works without Jev
188
188
  }
189
189
 
190
- // Resolve the actual API key: env takes priority, file is fallback
191
- const resolvedApiKey = hasEnvKey ||
192
- (hasFileKey ? readFileSync(`${keysDir}/jev-api-key.txt`, "utf8").trim() : "");
193
-
194
- const mod = await import("./packages/jev-judge/src/auto-continue.js");
190
+ // The dist build is used on purpose: it is the published build output
191
+ // of the package. The source tree is not shipped as compiled
192
+ // JavaScript, so importing "src/auto-continue.js" would depend on
193
+ // build artifacts that are not part of the package.
194
+ const mod = await import("./packages/jev-judge/dist/auto-continue.js");
195
195
 
196
196
  // Track waiting state
197
197
  let waitingForUserSince: Date | null = null;
@@ -543,7 +543,7 @@ async function initAutoContinue(pi: ExtensionAPI): Promise<void> {
543
543
  _inferenceInProgress = true;
544
544
 
545
545
  const judge = new mod.AutoContinueJudge({
546
- apiKey: resolvedApiKey,
546
+ providers: jevProviders,
547
547
  proceedThreshold: 0.7,
548
548
  maxWaitMinutes: 30,
549
549
  });
@@ -669,12 +669,12 @@ async function initAutoContinue(pi: ExtensionAPI): Promise<void> {
669
669
  // --- task-intake: Automatic todo capture from user requests -----------
670
670
  let taskIntakeController: import("./packages/jev-judge/dist/task-intake.js").TaskIntakeController | null = null;
671
671
 
672
- // Create task intake controller if Jev API key is available
673
- if (resolvedApiKey) {
672
+ // Create task intake controller if a Jev provider is available
673
+ if (jevProviders.length > 0) {
674
674
  try {
675
675
  const { TaskIntakeController } = await import("./packages/jev-judge/dist/task-intake.js");
676
676
  taskIntakeController = new TaskIntakeController({
677
- apiKey: resolvedApiKey,
677
+ providers: jevProviders,
678
678
  dispatch: async (content: string) => {
679
679
  // Queue for next turn so agent processes after current work completes
680
680
  await pi.sendUserMessage(content, { deliverAs: "followUp" });
@@ -940,15 +940,33 @@ async function initAutoContinue(pi: ExtensionAPI): Promise<void> {
940
940
  autoContinueTimer = setInterval(checkAndAutoContinue, AUTO_CONTINUE_INTERVAL_MS);
941
941
  addHarnessMessage("Jev", "auto-continue configured (verifying API...)", "ok");
942
942
 
943
- // Verify API key works with a lightweight health check
943
+ // Verify the API works with a health check that exercises every
944
+ // question type the auto-continue judge uses. A noul only check would
945
+ // pass while the choice and score questions of the real decision were
946
+ // rejected by the API.
944
947
  try {
945
948
  const { JevJudge } = await import("./packages/jev-judge/dist/index.js");
946
- const judge = new JevJudge({ apiKey: resolvedApiKey });
947
- // Lightweight verification - ask a simple question
948
- await judge.evaluate("health check", {
949
- test: { type: "noul" as const, instructions: "Is this a test?" }
949
+ const judge = new JevJudge({ providers: jevProviders });
950
+ const health = await judge.evaluate("health check", {
951
+ noul: { type: "noul" as const, instructions: "Is this a test?" },
952
+ choice: {
953
+ type: "choice" as const,
954
+ instructions: "Pick one",
955
+ options: ["yes", "no"],
956
+ },
957
+ score: {
958
+ type: "score" as const,
959
+ instructions: "How confident is the test?",
960
+ min: 1,
961
+ max: 5,
962
+ criteria: ["1 - no", "2 - low", "3 - medium", "4 - high", "5 - certain"],
963
+ },
950
964
  });
951
- addHarnessMessage("Jev", "auto-continue ready (API verified)", "ok");
965
+ addHarnessMessage(
966
+ "Jev",
967
+ `auto-continue ready (API verified, model ${health.model} via ${health.provider})`,
968
+ "ok"
969
+ );
952
970
  } catch (verifyErr) {
953
971
  addHarnessMessage("Jev", "auto-continue ready (API verification failed)", "warn", [
954
972
  `Error: ${verifyErr instanceof Error ? verifyErr.message : String(verifyErr)}`,
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "pi-harness-runtime",
3
- "version": "1.1.385",
3
+ "version": "1.1.387",
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": {
7
- "test": "node --test \"test/**/*.test.mjs\" \"packages/clipboard/test/*.test.mjs\"",
7
+ "test": "node scripts/run-root-tests.mjs",
8
+ "test:node:built": "node --test \"test/**/*.test.mjs\" \"packages/clipboard/test/*.test.mjs\"",
8
9
  "typecheck": "node scripts/typecheck-packages.mjs",
9
10
  "postinstall": "mkdir -p ~/.pi-harness-runtime/cookies && node scripts/copy-plugins.js && ([ -f ~/.config/herdr/config.toml ] || mkdir -p ~/.config/herdr && cp config.toml.example ~/.config/herdr/config.toml)",
10
11
  "release": "bun scripts/release-all.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/a2a-adapter",
3
- "version": "1.1.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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-harness/connection-runtime",
3
- "version": "1.1.385",
3
+ "version": "1.1.387",
4
4
  "type": "module",
5
5
  "description": "Connection management with jittered exponential backoff for pi-harness",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/context-compiler",
3
- "version": "1.1.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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/contracts",
3
- "version": "1.1.385",
3
+ "version": "1.1.387",
4
4
  "type": "module",
5
5
  "description": "RPC schema definitions for pi-harness runtime",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/cookie-sanitizer",
3
- "version": "1.1.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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": "@moocoding/durable-review",
3
- "version": "1.1.385",
3
+ "version": "1.1.387",
4
4
  "description": "SQLite-backed durable reviewer using @earendil-works/pi-durable",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/e2e-tester",
3
- "version": "1.1.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/event-sink",
3
- "version": "1.1.385",
3
+ "version": "1.1.387",
4
4
  "type": "module",
5
5
  "description": "Atomic event sourcing with SQLite transactions for pi-harness",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/event-store",
3
- "version": "1.1.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
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.385",
3
+ "version": "1.1.387",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1 +1 @@
1
- {"version":3,"file":"auto-continue.d.ts","sourceRoot":"","sources":["../src/auto-continue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAuB,MAAM,YAAY,CAAC;AAGtE;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,gBAAgB,EAAE,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,sBAAsB,CAAC;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAChD,eAAe,EAAE,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,OAAO,CAAC;IAClE,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,cAAc,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,sBAAsB,CAAC;CAC9D;AAYD;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,MAAM,CAA+B;IAE7C,YAAY,MAAM,EAAE,kBAAkB,EAOrC;IAED;;OAEG;IACG,MAAM,CACV,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,oBAAoB,CAAC,CA6C/B;IAED;;OAEG;IACG,cAAc,CAClB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC;QAAE,cAAc,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAQ/E;IAED;;OAEG;IACH,OAAO,CAAC,UAAU;IA2BlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAmErB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CA4BzB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,cAAc,EAAE,MAAM,EAAE,EACxB,cAAc,EAAE,MAAM,EAAE,EACxB,gBAAgB,CAAC,EAAE,IAAI,EACvB,gBAAgB,CAAC,EAAE,IAAI,GACtB,SAAS,CAcX"}
1
+ {"version":3,"file":"auto-continue.d.ts","sourceRoot":"","sources":["../src/auto-continue.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAuB,MAAM,YAAY,CAAC;AAGtE;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,IAAI,CAAC;IACxB,gBAAgB,EAAE,IAAI,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,sBAAsB,CAAC;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAChD,eAAe,EAAE,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,OAAO,CAAC;IAClE,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACtC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IACxD,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oEAAoE;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,cAAc,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,sBAAsB,CAAC;CAC9D;AAYD;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,GAAG,CAAW;IACtB,OAAO,CAAC,MAAM,CAA+B;IAE7C,YAAY,MAAM,EAAE,kBAAkB,EAOrC;IAED;;OAEG;IACG,MAAM,CACV,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC,oBAAoB,CAAC,CAuE/B;IAED;;OAEG;IACG,cAAc,CAClB,SAAS,EAAE,SAAS,GACnB,OAAO,CAAC;QAAE,cAAc,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAQ/E;IAED;;OAEG;IACH,OAAO,CAAC,UAAU;IA2BlB;;OAEG;IACH,OAAO,CAAC,aAAa;IAmErB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;CA4BzB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,cAAc,EAAE,MAAM,EAAE,EACxB,cAAc,EAAE,MAAM,EAAE,EACxB,gBAAgB,CAAC,EAAE,IAAI,EACvB,gBAAgB,CAAC,EAAE,IAAI,GACtB,SAAS,CAcX"}
@@ -50,16 +50,35 @@ export class AutoContinueJudge {
50
50
  instructions: "Risk level if agent proceeds without user confirmation",
51
51
  min: 1,
52
52
  max: 5,
53
+ criteria: [
54
+ "1 - minimal risk, nothing can go wrong",
55
+ "2 - low risk, easily reversible",
56
+ "3 - moderate risk, partly reversible",
57
+ "4 - high risk, hard to reverse",
58
+ "5 - severe risk, irreversible damage possible",
59
+ ],
53
60
  },
54
61
  urgency: {
55
62
  type: "choice",
56
63
  instructions: "How urgent are the remaining tasks?",
57
64
  options: ["critical", "high", "normal", "low"],
65
+ optionDescriptions: {
66
+ critical: "must be handled right now, everything else waits",
67
+ high: "should be handled today",
68
+ normal: "should be handled within the current work cycle",
69
+ low: "can wait until the current work cycle is done",
70
+ },
58
71
  },
59
72
  estimatedImpact: {
60
73
  type: "choice",
61
74
  instructions: "Impact if the agent makes wrong decision by proceeding",
62
75
  options: ["minimal", "moderate", "significant", "major"],
76
+ optionDescriptions: {
77
+ minimal: "a small amount of extra work",
78
+ moderate: "noticeable rework, still contained",
79
+ significant: "substantial rework or lost work",
80
+ major: "irreversible loss, data loss or a broken system",
81
+ },
63
82
  },
64
83
  waitBenefit: {
65
84
  type: "noul",
@@ -70,6 +89,13 @@ export class AutoContinueJudge {
70
89
  instructions: "How complex are the remaining tasks compared to completed ones?",
71
90
  min: 1,
72
91
  max: 5,
92
+ criteria: [
93
+ "1 - trivial, a single mechanical step",
94
+ "2 - simple, a few well known steps",
95
+ "3 - moderate, some design decisions needed",
96
+ "4 - complex, many interacting parts",
97
+ "5 - very complex, unknown territory",
98
+ ],
73
99
  },
74
100
  });
75
101
  return this.buildDecision(result, taskState);