pi-harness-runtime 1.1.11 → 1.1.13

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 (92) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/index.ts +55 -5
  3. package/package.json +1 -1
  4. package/packages/a2a-adapter/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/config-capture/package.json +1 -1
  19. package/packages/context-compiler/package.json +1 -1
  20. package/packages/context-discovery/package.json +1 -1
  21. package/packages/context-manager/package.json +1 -1
  22. package/packages/cookie-sanitizer/package.json +1 -1
  23. package/packages/cost-optimizer/package.json +1 -1
  24. package/packages/dependency-analyzer/package.json +1 -1
  25. package/packages/django-plugin/package.json +1 -1
  26. package/packages/doc-generator/package.json +1 -1
  27. package/packages/evaluation-engine/package.json +1 -1
  28. package/packages/evaluation-runner/package.json +1 -1
  29. package/packages/event-bus/package.json +1 -1
  30. package/packages/event-store/package.json +1 -1
  31. package/packages/experience-replay/package.json +1 -1
  32. package/packages/feedback-collector/package.json +1 -1
  33. package/packages/file-copy-helper/package.json +1 -1
  34. package/packages/framework-detector/package.json +1 -1
  35. package/packages/framework-plugin-sdk/package.json +1 -1
  36. package/packages/frappe-plugin/package.json +1 -1
  37. package/packages/generic-web-plugin/package.json +1 -1
  38. package/packages/health-monitor/package.json +1 -1
  39. package/packages/intent-analyzer/package.json +1 -1
  40. package/packages/knowledge-graph/package.json +1 -1
  41. package/packages/knowledge-retrieval/package.json +1 -1
  42. package/packages/laravel-plugin/package.json +1 -1
  43. package/packages/learning-engine/package.json +1 -1
  44. package/packages/mcp-adapter/package.json +1 -1
  45. package/packages/memory-engine/package.json +1 -1
  46. package/packages/milestone-manager/package.json +1 -1
  47. package/packages/model-registry/package.json +1 -1
  48. package/packages/nextjs-plugin/package.json +1 -1
  49. package/packages/notification/package.json +1 -1
  50. package/packages/observability/package.json +1 -1
  51. package/packages/okf-indexer/package.json +1 -1
  52. package/packages/performance-optimizer/package.json +1 -1
  53. package/packages/privilege-broker/package.json +1 -1
  54. package/packages/project-analyzer/package.json +1 -1
  55. package/packages/project-bootstrap/package.json +1 -1
  56. package/packages/projection-engine/package.json +1 -1
  57. package/packages/prompt-compiler/package.json +1 -1
  58. package/packages/prompt-versioning/package.json +1 -1
  59. package/packages/provider-adapter-sdk/package.json +1 -1
  60. package/packages/provider-router/package.json +1 -1
  61. package/packages/provider-selector/package.json +1 -1
  62. package/packages/providers/package.json +1 -1
  63. package/packages/quota-manager/package.json +1 -1
  64. package/packages/rate-limiter/package.json +1 -1
  65. package/packages/react-vite-plugin/package.json +1 -1
  66. package/packages/release-manager/package.json +1 -1
  67. package/packages/requirement-compiler/package.json +1 -1
  68. package/packages/runtime/package.json +1 -1
  69. package/packages/scheduler/package.json +1 -1
  70. package/packages/scheduler-adapter/package.json +1 -1
  71. package/packages/session/package.json +1 -1
  72. package/packages/session-api/package.json +1 -1
  73. package/packages/session-export/package.json +1 -1
  74. package/packages/shared-context/package.json +1 -1
  75. package/packages/skill-registry/package.json +1 -1
  76. package/packages/sprint-planner/package.json +1 -1
  77. package/packages/subscription-engine/package.json +1 -1
  78. package/packages/task-compiler/package.json +1 -1
  79. package/packages/tencentdb-memory/package.json +1 -1
  80. package/packages/tencentdb-sync/package.json +1 -1
  81. package/packages/test-data-generator/package.json +1 -1
  82. package/packages/test-generator/package.json +1 -1
  83. package/packages/todo-bd-sync/package.json +1 -1
  84. package/packages/token-estimation/package.json +1 -1
  85. package/packages/token-optimizer/package.json +1 -1
  86. package/packages/tui/package.json +1 -1
  87. package/packages/types/package.json +1 -1
  88. package/packages/workflow-events/package.json +1 -1
  89. package/packages/workspace-scanner/package.json +1 -1
  90. package/packages/worktree/package.json +1 -1
  91. package/packages/write-review/package.json +1 -1
  92. package/proactive-compact.ts +71 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [1.1.13](https://github.com/ManotLuijiu/pi-harness-runtime/compare/v1.1.12...v1.1.13) (2026-08-21)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **runtime:** auto-resume after provider overload ([7bd98bb](https://github.com/ManotLuijiu/pi-harness-runtime/commit/7bd98bb885536667a5eb35cfe6de45a06dc77269))
11
+
12
+ ### [1.1.12](https://github.com/ManotLuijiu/pi-harness-runtime/compare/v1.1.11...v1.1.12) (2026-08-20)
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * **runtime:** refresh minimax quota from provider mirror ([a8976b4](https://github.com/ManotLuijiu/pi-harness-runtime/commit/a8976b4ff61e28b964bf76405142672798714647))
18
+
5
19
  ### [1.1.11](https://github.com/ManotLuijiu/pi-harness-runtime/compare/v0.10.42...v1.1.11) (2026-08-20)
6
20
 
7
21
 
package/index.ts CHANGED
@@ -47,8 +47,11 @@ import { registerCopySyncShortcut } from "./packages/clipboard/src/copy-sync.js"
47
47
  import {
48
48
  MAX_PROACTIVE_COMPACT_FAILURES,
49
49
  OUTPUT_LIMIT_RESUME_PROMPT,
50
+ PROVIDER_OVERLOAD_RESUME_PROMPT,
51
+ getProviderOverloadResumeDelayMs,
50
52
  PROACTIVE_COMPACT_COOLDOWN_MS,
51
53
  shouldQueueOutputLimitResume,
54
+ shouldQueueProviderOverloadResume,
52
55
  shouldQueuePostCompactionResume,
53
56
  shouldTriggerProactiveCompact,
54
57
  } from "./proactive-compact.ts";
@@ -395,6 +398,7 @@ Run \`bd ready\` to see current tasks.
395
398
  role?: string;
396
399
  stopReason?: unknown;
397
400
  errorMessage?: unknown;
401
+ content?: unknown;
398
402
  usage?: {
399
403
  input?: number;
400
404
  output?: number;
@@ -415,9 +419,20 @@ Run \`bd ready\` to see current tasks.
415
419
  pendingOutputLimitResumeAfterCompact = true;
416
420
  pendingOutputLimitResumeAfterSettled = true;
417
421
  queueAutoResume("output-limit", OUTPUT_LIMIT_RESUME_PROMPT, "steer");
422
+ } else if (
423
+ shouldQueueProviderOverloadResume(
424
+ m,
425
+ providerOverloadResumeAttempts,
426
+ ctx.hasPendingMessages(),
427
+ )
428
+ ) {
429
+ providerOverloadResumeAttempts += 1;
430
+ scheduleProviderOverloadResume(() => ctx.hasPendingMessages());
418
431
  } else if (m.stopReason === "stop") {
419
432
  outputLimitResumeAttempts = 0;
420
433
  pendingOutputLimitResumeAfterSettled = false;
434
+ providerOverloadResumeAttempts = 0;
435
+ clearProviderOverloadResume();
421
436
  }
422
437
 
423
438
  if (!m.usage) return;
@@ -482,7 +497,6 @@ Run \`bd ready\` to see current tasks.
482
497
  }
483
498
  };
484
499
 
485
- const cookieQuotaAutoFetchAvailable = hasCookieSource();
486
500
 
487
501
  // --- TUI quota signal plumbing (OpenAI / GLM / Anthropic / OpenRouter) --
488
502
  // The TUIUsageMonitor parses provider quota-exhaustion messages from pi's
@@ -574,6 +588,9 @@ Run \`bd ready\` to see current tasks.
574
588
  let outputLimitResumeAttempts = 0;
575
589
  let pendingOutputLimitResumeAfterCompact = false;
576
590
  let pendingOutputLimitResumeAfterSettled = false;
591
+ let providerOverloadResumeAttempts = 0;
592
+ let providerOverloadResumeTimer: ReturnType<typeof setTimeout> | null =
593
+ null;
577
594
 
578
595
  // --- Context-usage escalating warning tiers -----------------------------
579
596
  // Amber at 75%, red at 85%. No notify above 90% (proactive compact handles it).
@@ -763,7 +780,7 @@ Run \`bd ready\` to see current tasks.
763
780
  return true;
764
781
  }
765
782
 
766
- if (!cookieQuotaAutoFetchAvailable) {
783
+ if (!hasCookieSource()) {
767
784
  return false;
768
785
  }
769
786
 
@@ -853,7 +870,7 @@ Run \`bd ready\` to see current tasks.
853
870
  return;
854
871
  }
855
872
 
856
- const mirror = mirrorStore.read();
873
+ const mirror = mirrorStore.readProvider("minimax");
857
874
  const freshness = mirrorStore.freshness(mirror, nowMs);
858
875
  const shouldFetchBaseline = !mirror || freshness === "expired";
859
876
  const usageSinceSync = getMiniMaxUsageSince(
@@ -912,7 +929,10 @@ Run \`bd ready\` to see current tasks.
912
929
  description: "Show Codex-style usage status (local + provider mirror)",
913
930
  handler: async (_args: string, ctx: ExtensionCommandContext) => {
914
931
  const local = aggregateWindows(tracker.all());
915
- const mirror = mirrorStore.read();
932
+ const provider = providerFromModelId(ctx.model?.id ?? null);
933
+ const mirror = provider
934
+ ? mirrorStore.readProvider(provider)
935
+ : mirrorStore.read();
916
936
  const output = renderStatus({
917
937
  model: ctx.model?.id ?? null,
918
938
  cwd: ctx.cwd ?? process.cwd(),
@@ -930,7 +950,8 @@ Run \`bd ready\` to see current tasks.
930
950
  description: "Force refresh quota from provider console",
931
951
  handler: async (_args: string, ctx: ExtensionCommandContext) => {
932
952
  const autoFetchAvailable =
933
- cookieQuotaAutoFetchAvailable || (await hasBrowserProfileAutoFetchSource());
953
+ hasCookieSource() ||
954
+ (await hasBrowserProfileAutoFetchSource());
934
955
  if (!autoFetchAvailable) {
935
956
  ctx.ui.notify(
936
957
  "MiniMax cookies not found. Drop any cookie file (Netscape or EditThisCookie JSON) into ~/.pi-harness-runtime/cookies/ — the runtime normalizes it for you. Or run `bun packages/auth/src/run-minimax-auth.ts auth`.",
@@ -1403,6 +1424,35 @@ Run \`bd ready\` to see current tasks.
1403
1424
  }
1404
1425
  }, MINIMAX_REFRESH_MIN_INTERVAL_MS);
1405
1426
 
1427
+ function clearProviderOverloadResume(): void {
1428
+ if (providerOverloadResumeTimer) {
1429
+ clearTimeout(providerOverloadResumeTimer);
1430
+ providerOverloadResumeTimer = null;
1431
+ }
1432
+ }
1433
+
1434
+ function scheduleProviderOverloadResume(hasPendingMessages: () => boolean): void {
1435
+ clearProviderOverloadResume();
1436
+ const delayMs = getProviderOverloadResumeDelayMs();
1437
+ const delayMinutes = Math.max(1, Math.round(delayMs / 60_000));
1438
+ console.error(
1439
+ "[pi-harness] Provider overloaded; scheduling resume in " +
1440
+ delayMinutes +
1441
+ " min",
1442
+ );
1443
+ providerOverloadResumeTimer = setTimeout(() => {
1444
+ providerOverloadResumeTimer = null;
1445
+ if (hasPendingMessages()) {
1446
+ return;
1447
+ }
1448
+ queueAutoResume(
1449
+ "provider-overload",
1450
+ PROVIDER_OVERLOAD_RESUME_PROMPT,
1451
+ "followUp",
1452
+ );
1453
+ }, delayMs);
1454
+ }
1455
+
1406
1456
  function queueAutoResume(
1407
1457
  reason: string,
1408
1458
  content: string,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-harness-runtime",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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-harness/architecture-generator",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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": "@moocoding/config-capture",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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/evaluation-engine",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/knowledge-graph",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
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.11",
3
+ "version": "1.1.13",
4
4
  "description": "Model Registry for pi-harness-runtime — centralized model metadata with pricing",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/nextjs-plugin",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Next.js framework detection and analysis for pi-harness-runtime (RFC-0062)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/notification",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "pi-harness-runtime — notification",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/observability",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Comprehensive observability system with structured logging, tracing, metrics, and alerting",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/okf-indexer",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "OKF document indexer for SKILL.md files (RFC-0106)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/performance-optimizer",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Performance optimization analyzer for pi-harness runtime (RFC-0056)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/privilege-broker",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Privilege Broker — capability registry and command executor for autonomous runtime (RFC-0101 §7)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/project-analyzer",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Project analysis system for pi-harness-runtime - detects frameworks, rules, and project structure",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/project-bootstrap",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Project scaffolding from typed ProjectSpec",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/projection-engine",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/prompt-compiler",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Deterministic prompt compiler for pi-harness-runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/prompt-versioning",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "type": "module",
5
5
  "description": "Version control for prompts with rollback support (RFC-0019)",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/provider-adapter-sdk",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "SDK for building, testing, and registering AI provider adapters",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/provider-router",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
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",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/provider-selector",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Multi-Provider Selector — route requests by cost, quality, and latency (RFC-0012)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/providers",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "pi-harness-runtime — providers",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/quota-manager",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "pi-harness-runtime — quota-manager",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/rate-limiter",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "type": "module",
5
5
  "description": "Rate limiting with token bucket algorithm (RFC-0023)",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/react-vite-plugin",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "React/Vite framework analysis — components, config, TypeScript setup",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/release-manager",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "type": "module",
5
5
  "description": "Release management for pi-harness",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/requirement-compiler",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Compiles raw requirements into validated CompiledRequirement with ambiguity detection and risk tagging",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/runtime",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "pi-harness-runtime — runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/scheduler",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "pi-harness-runtime — scheduler",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/scheduler-adapter",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Scheduler Adapter — cron, systemd, launchd, internal adapters for autonomous runtime (RFC-0101 §6)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/session",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Session management 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/session-api",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/session-export",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/shared-context",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "pi-harness-runtime — shared-context",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/skill-registry",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Skill Registry for pi-harness-runtime — dynamic skill discovery and invocation",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/sprint-planner",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "type": "module",
5
5
  "description": "Sprint planning engine for pi-harness",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/subscription-engine",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/task-compiler",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Task Compiler for pi-harness-runtime — produces deterministic task DAG from CompiledRequirement",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moocoding/tencentdb-memory",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "TencentDB Agent Memory client - sync skills to centralized knowledge base",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/tencentdb-sync",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Sync SKILL.md skills to TencentDB-Agent-Memory server (RFC-0105/0106)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/test-data-generator",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Test data generation for pi-harness-runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/test-generator",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Auto-Test Generator — generate unit and E2E tests from source code (RFC-0013)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moocoding/todo-bd-sync",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Two-way sync between rpiv-todo overlay and bd issue tracker",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/token-estimation",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "pi-harness-runtime — token-estimation",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/token-optimizer",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Token Budget Optimizer — maximize prompt value within token limits (RFC-0011)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/tui",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "pi-harness-runtime — tui",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/types",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Shared TypeScript types for pi-harness-runtime packages",
5
5
  "type": "module",
6
6
  "main": "./src/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/workflow-events",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/workspace-scanner",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/worktree",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "pi-harness-runtime — worktree",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moocoding/write-review",
3
- "version": "1.1.11",
3
+ "version": "1.1.13",
4
4
  "description": "Two-agent write-review loop with blackboard coordination",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -7,6 +7,10 @@ export const MAX_PROACTIVE_COMPACT_FAILURES = 3;
7
7
  export const OUTPUT_LIMIT_AUTO_RESUME_LIMIT = 3;
8
8
  export const OUTPUT_LIMIT_RESUME_PROMPT =
9
9
  "Output token limit hit. Resume directly — no apology, no recap. Pick up mid-thought if the cut happened there. Break remaining work into smaller pieces.";
10
+ export const PROVIDER_OVERLOAD_AUTO_RESUME_LIMIT = 3;
11
+ export const PROVIDER_OVERLOAD_AUTO_RESUME_MIN_MS = 60_000;
12
+ export const PROVIDER_OVERLOAD_AUTO_RESUME_MAX_MS = 5 * 60_000;
13
+ export const PROVIDER_OVERLOAD_RESUME_PROMPT = "resume";
10
14
 
11
15
  export function shouldTriggerProactiveCompact(
12
16
  usage: ContextUsage | undefined,
@@ -33,8 +37,36 @@ export type AssistantStopLike = {
33
37
  role?: string;
34
38
  stopReason?: unknown;
35
39
  errorMessage?: unknown;
40
+ content?: unknown;
36
41
  };
37
42
 
43
+ function readAssistantStopText(message: AssistantStopLike): string {
44
+ const parts: string[] = [];
45
+ if (typeof message.errorMessage === "string") {
46
+ parts.push(message.errorMessage);
47
+ }
48
+ if (typeof message.stopReason === "string") {
49
+ parts.push(message.stopReason);
50
+ }
51
+ if (typeof message.content === "string") {
52
+ parts.push(message.content);
53
+ } else if (Array.isArray(message.content)) {
54
+ for (const part of message.content) {
55
+ if (typeof part === "string") {
56
+ parts.push(part);
57
+ } else if (part && typeof part === "object") {
58
+ const obj = part as { text?: unknown; content?: unknown };
59
+ if (typeof obj.text === "string") {
60
+ parts.push(obj.text);
61
+ } else if (typeof obj.content === "string") {
62
+ parts.push(obj.content);
63
+ }
64
+ }
65
+ }
66
+ }
67
+ return parts.join("\n");
68
+ }
69
+
38
70
  export function isOutputLimitAssistantMessage(
39
71
  message: AssistantStopLike,
40
72
  ): boolean {
@@ -72,6 +104,45 @@ export function shouldQueueOutputLimitResume(
72
104
  );
73
105
  }
74
106
 
107
+ export function isProviderOverloadAssistantMessage(
108
+ message: AssistantStopLike,
109
+ ): boolean {
110
+ if (message.role !== "assistant") {
111
+ return false;
112
+ }
113
+
114
+ return /overloaded_error|peak-hour surge|temporarily busy|server is temporarily busy|try again shortly|Retry failed after \d+ attempts:.*529|\b529\b|\b2064\b/i.test(
115
+ readAssistantStopText(message),
116
+ );
117
+ }
118
+
119
+ export function shouldQueueProviderOverloadResume(
120
+ message: AssistantStopLike,
121
+ resumeAttempts: number,
122
+ hasPendingMessages: boolean,
123
+ options?: { maxAttempts?: number },
124
+ ): boolean {
125
+ const maxAttempts =
126
+ options?.maxAttempts ?? PROVIDER_OVERLOAD_AUTO_RESUME_LIMIT;
127
+ return (
128
+ isProviderOverloadAssistantMessage(message) &&
129
+ resumeAttempts < maxAttempts &&
130
+ !hasPendingMessages
131
+ );
132
+ }
133
+
134
+ export function getProviderOverloadResumeDelayMs(options?: {
135
+ minMs?: number;
136
+ maxMs?: number;
137
+ random?: () => number;
138
+ }): number {
139
+ const minMs = options?.minMs ?? PROVIDER_OVERLOAD_AUTO_RESUME_MIN_MS;
140
+ const maxMs = options?.maxMs ?? PROVIDER_OVERLOAD_AUTO_RESUME_MAX_MS;
141
+ const random = options?.random ?? Math.random;
142
+ const clampedRandom = Math.max(0, Math.min(1, random()));
143
+ return Math.round(minMs + clampedRandom * (maxMs - minMs));
144
+ }
145
+
75
146
  export function shouldQueuePostCompactionResume(
76
147
  event: {
77
148
  willRetry?: boolean;