pi-harness-runtime 1.1.318 → 1.1.320

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 (143) hide show
  1. package/package.json +4 -2
  2. package/packages/a2a-adapter/package.json +1 -1
  3. package/packages/agent-policy/package.json +1 -1
  4. package/packages/architecture-generator/package.json +1 -1
  5. package/packages/auth/package.json +1 -1
  6. package/packages/autonomous-refactor/package.json +1 -1
  7. package/packages/autonomous-runtime/package.json +1 -1
  8. package/packages/cache-strategy/package.json +1 -1
  9. package/packages/capability-registry/package.json +1 -1
  10. package/packages/checkpoint/package.json +1 -1
  11. package/packages/cli-plugin-sdk/package.json +1 -1
  12. package/packages/clipboard/package.json +1 -1
  13. package/packages/clipboard-plugin/package.json +1 -1
  14. package/packages/code-generation/package.json +1 -1
  15. package/packages/code-review/package.json +1 -1
  16. package/packages/codex-adapter/package.json +1 -1
  17. package/packages/codex-watcher/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/durable-review/dist/client.d.ts +46 -0
  28. package/packages/durable-review/dist/client.d.ts.map +1 -0
  29. package/packages/durable-review/dist/client.js +88 -0
  30. package/packages/durable-review/dist/client.js.map +1 -0
  31. package/packages/durable-review/dist/documents.d.ts +82 -0
  32. package/packages/durable-review/dist/documents.d.ts.map +1 -0
  33. package/packages/durable-review/dist/documents.js +65 -0
  34. package/packages/durable-review/dist/documents.js.map +1 -0
  35. package/packages/durable-review/dist/extension.d.ts +31 -0
  36. package/packages/durable-review/dist/extension.d.ts.map +1 -0
  37. package/packages/durable-review/dist/extension.js +123 -0
  38. package/packages/durable-review/dist/extension.js.map +1 -0
  39. package/packages/durable-review/dist/index.d.ts +12 -0
  40. package/packages/durable-review/dist/index.d.ts.map +1 -0
  41. package/packages/durable-review/dist/index.js +18 -0
  42. package/packages/durable-review/dist/index.js.map +1 -0
  43. package/packages/durable-review/dist/reviewer.d.ts +67 -0
  44. package/packages/durable-review/dist/reviewer.d.ts.map +1 -0
  45. package/packages/durable-review/dist/reviewer.js +119 -0
  46. package/packages/durable-review/dist/reviewer.js.map +1 -0
  47. package/packages/durable-review/dist/service.d.ts +52 -0
  48. package/packages/durable-review/dist/service.d.ts.map +1 -0
  49. package/packages/durable-review/dist/service.js +119 -0
  50. package/packages/durable-review/dist/service.js.map +1 -0
  51. package/packages/durable-review/dist/types.d.ts +139 -0
  52. package/packages/durable-review/dist/types.d.ts.map +1 -0
  53. package/packages/durable-review/dist/types.js +58 -0
  54. package/packages/durable-review/dist/types.js.map +1 -0
  55. package/packages/durable-review/dist/worker.d.ts +56 -0
  56. package/packages/durable-review/dist/worker.d.ts.map +1 -0
  57. package/packages/durable-review/dist/worker.js +163 -0
  58. package/packages/durable-review/dist/worker.js.map +1 -0
  59. package/packages/durable-review/package.json +33 -0
  60. package/packages/durable-review/src/client.ts +117 -0
  61. package/packages/durable-review/src/documents.ts +134 -0
  62. package/packages/durable-review/src/extension.ts +150 -0
  63. package/packages/durable-review/src/index.ts +23 -0
  64. package/packages/durable-review/src/reviewer.ts +166 -0
  65. package/packages/durable-review/src/service.ts +144 -0
  66. package/packages/durable-review/src/types.ts +183 -0
  67. package/packages/durable-review/src/worker.ts +232 -0
  68. package/packages/durable-review/test/acceptance.test.ts +335 -0
  69. package/packages/durable-review/test/smoke.test.ts +69 -0
  70. package/packages/e2e-tester/package.json +1 -1
  71. package/packages/evaluation-engine/package.json +1 -1
  72. package/packages/evaluation-runner/package.json +1 -1
  73. package/packages/event-bus/package.json +1 -1
  74. package/packages/event-store/package.json +1 -1
  75. package/packages/experience-replay/package.json +1 -1
  76. package/packages/feedback-collector/package.json +1 -1
  77. package/packages/file-copy-helper/package.json +1 -1
  78. package/packages/framework-detector/package.json +1 -1
  79. package/packages/framework-plugin-sdk/package.json +1 -1
  80. package/packages/frappe-plugin/package.json +1 -1
  81. package/packages/generic-web-plugin/package.json +1 -1
  82. package/packages/health-monitor/package.json +1 -1
  83. package/packages/intent-analyzer/package.json +1 -1
  84. package/packages/jev-judge/package.json +1 -1
  85. package/packages/knowledge-graph/package.json +1 -1
  86. package/packages/knowledge-retrieval/package.json +1 -1
  87. package/packages/laravel-plugin/package.json +1 -1
  88. package/packages/learning-engine/package.json +1 -1
  89. package/packages/mcp-adapter/package.json +1 -1
  90. package/packages/memory-engine/package.json +1 -1
  91. package/packages/milestone-manager/package.json +1 -1
  92. package/packages/model-registry/package.json +1 -1
  93. package/packages/nextjs-plugin/package.json +1 -1
  94. package/packages/notification/package.json +1 -1
  95. package/packages/observability/package.json +1 -1
  96. package/packages/okf-indexer/package.json +1 -1
  97. package/packages/paperclip-integration/package.json +1 -1
  98. package/packages/performance-optimizer/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/release-manager/package.json +1 -1
  114. package/packages/requirement-compiler/package.json +1 -1
  115. package/packages/runtime/package.json +1 -1
  116. package/packages/scheduler/package.json +1 -1
  117. package/packages/scheduler-adapter/package.json +1 -1
  118. package/packages/session/package.json +1 -1
  119. package/packages/session-api/package.json +1 -1
  120. package/packages/session-export/package.json +1 -1
  121. package/packages/shared-context/package.json +1 -1
  122. package/packages/skill-mcp-client/package.json +1 -1
  123. package/packages/skill-registry/package.json +1 -1
  124. package/packages/skills/package.json +1 -1
  125. package/packages/sprint-planner/package.json +1 -1
  126. package/packages/subscription-engine/package.json +1 -1
  127. package/packages/task-compiler/package.json +1 -1
  128. package/packages/telegram/package.json +1 -1
  129. package/packages/tencentdb-memory/package.json +1 -1
  130. package/packages/tencentdb-sync/package.json +1 -1
  131. package/packages/test-data-generator/package.json +1 -1
  132. package/packages/test-generator/package.json +1 -1
  133. package/packages/todo-bd-sync/package.json +1 -1
  134. package/packages/token-estimation/package.json +1 -1
  135. package/packages/token-optimizer/package.json +1 -1
  136. package/packages/trajectory/package.json +1 -1
  137. package/packages/tui/package.json +1 -1
  138. package/packages/types/package.json +1 -1
  139. package/packages/webmcp-tester/package.json +1 -1
  140. package/packages/workflow-events/package.json +1 -1
  141. package/packages/workspace-scanner/package.json +1 -1
  142. package/packages/worktree/package.json +1 -1
  143. package/packages/write-review/package.json +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-harness-runtime",
3
- "version": "1.1.318",
3
+ "version": "1.1.320",
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": {
@@ -74,7 +74,7 @@
74
74
  ]
75
75
  },
76
76
  "peerDependencies": {
77
- "@earendil-works/pi-ai": "*",
77
+ "@earendil-works/pi-ai": "^1.3.0",
78
78
  "@earendil-works/pi-coding-agent": "*",
79
79
  "@earendil-works/pi-tui": "*",
80
80
  "typebox": "*"
@@ -95,6 +95,8 @@
95
95
  "packages/*"
96
96
  ],
97
97
  "dependencies": {
98
+ "@earendil-works/chord": "^1.3.0",
99
+ "@earendil-works/pi-durable": "^1.3.0",
98
100
  "@langchain/core": "^1.2.9",
99
101
  "@langchain/langgraph": "^1.4.13",
100
102
  "@langchain/langgraph-checkpoint": "^1.1.5",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/a2a-adapter",
3
- "version": "1.1.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
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.318",
3
+ "version": "1.1.320",
4
4
  "description": "Auto-Doc Generator — generate documentation from source code (RFC-0014)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Durable Review Client
3
+ *
4
+ * Pi-to-worker client, readiness and connection errors.
5
+ */
6
+ import type { ReviewRequest, ReviewStatusResponse } from "./types.js";
7
+ /**
8
+ * Client error types
9
+ */
10
+ export declare class ClientError extends Error {
11
+ constructor(message: string);
12
+ }
13
+ export declare class NotReadyError extends ClientError {
14
+ constructor(message?: string);
15
+ }
16
+ export declare class BusyError extends ClientError {
17
+ constructor(message?: string);
18
+ }
19
+ /**
20
+ * Check if worker is running for workspace
21
+ */
22
+ export declare function isWorkerRunning(workspaceKey: string): boolean;
23
+ /**
24
+ * Submit review request to worker
25
+ */
26
+ export declare function submitReviewRequest(request: ReviewRequest): Promise<{
27
+ jobId: string;
28
+ status: ReviewStatusResponse;
29
+ }>;
30
+ /**
31
+ * Get review job status
32
+ */
33
+ export declare function getReviewStatus(jobId: string, workspacePath: string): Promise<ReviewStatusResponse | null>;
34
+ /**
35
+ * Cancel a review job
36
+ */
37
+ export declare function cancelReview(jobId: string, workspacePath: string): Promise<boolean>;
38
+ /**
39
+ * Check worker readiness
40
+ */
41
+ export declare function checkWorkerReady(workspacePath: string): Promise<{
42
+ ready: boolean;
43
+ pendingJobs?: number;
44
+ error?: string;
45
+ }>;
46
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGtE;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED,qBAAa,aAAc,SAAQ,WAAW;IAC5C,YAAY,OAAO,SAAwB,EAG1C;CACF;AAED,qBAAa,SAAU,SAAQ,WAAW;IACxC,YAAY,OAAO,SAAuC,EAGzD;CACF;AASD;;GAEG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAK7D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,oBAAoB,CAAA;CAAE,CAAC,CAY1D;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAGtC;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC,CAGlB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;IACrE,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAeD"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Durable Review Client
3
+ *
4
+ * Pi-to-worker client, readiness and connection errors.
5
+ */
6
+ import { existsSync } from "node:fs";
7
+ import { join } from "node:path";
8
+ import { hashWorkspaceKey, getWorkspaceDir } from "./service.js";
9
+ /**
10
+ * Client error types
11
+ */
12
+ export class ClientError extends Error {
13
+ constructor(message) {
14
+ super(message);
15
+ this.name = "ClientError";
16
+ }
17
+ }
18
+ export class NotReadyError extends ClientError {
19
+ constructor(message = "Worker is not ready") {
20
+ super(message);
21
+ this.name = "NotReadyError";
22
+ }
23
+ }
24
+ export class BusyError extends ClientError {
25
+ constructor(message = "Worker is busy with another review") {
26
+ super(message);
27
+ this.name = "BusyError";
28
+ }
29
+ }
30
+ /**
31
+ * Get worker socket path for workspace
32
+ */
33
+ function getWorkerSocketPath(workspaceKey) {
34
+ return join(getWorkspaceDir(workspaceKey), ".worker.sock");
35
+ }
36
+ /**
37
+ * Check if worker is running for workspace
38
+ */
39
+ export function isWorkerRunning(workspaceKey) {
40
+ const socketPath = getWorkerSocketPath(workspaceKey);
41
+ // Simple check - socket file exists
42
+ // In production, would use actual socket connectivity check
43
+ return existsSync(socketPath);
44
+ }
45
+ /**
46
+ * Submit review request to worker
47
+ */
48
+ export async function submitReviewRequest(request) {
49
+ const workspaceKey = hashWorkspaceKey(request.input.workspacePath);
50
+ if (!isWorkerRunning(workspaceKey)) {
51
+ throw new NotReadyError(`No worker running for workspace. Start worker first or set HARNESS_DURABLE_REVIEW=1.`);
52
+ }
53
+ // TODO: Implement actual IPC to worker
54
+ // For now, return a placeholder
55
+ throw new ClientError("IPC to worker not yet implemented");
56
+ }
57
+ /**
58
+ * Get review job status
59
+ */
60
+ export async function getReviewStatus(jobId, workspacePath) {
61
+ // TODO: Implement actual status retrieval
62
+ return null;
63
+ }
64
+ /**
65
+ * Cancel a review job
66
+ */
67
+ export async function cancelReview(jobId, workspacePath) {
68
+ // TODO: Implement actual cancellation
69
+ return false;
70
+ }
71
+ /**
72
+ * Check worker readiness
73
+ */
74
+ export async function checkWorkerReady(workspacePath) {
75
+ const workspaceKey = hashWorkspaceKey(workspacePath);
76
+ if (!isWorkerRunning(workspaceKey)) {
77
+ return {
78
+ ready: false,
79
+ error: "No worker running for this workspace",
80
+ };
81
+ }
82
+ // TODO: Implement actual readiness check via IPC
83
+ return {
84
+ ready: true,
85
+ pendingJobs: 0,
86
+ };
87
+ }
88
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAgB,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEjE;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IACpC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,WAAW;IAC5C,YAAY,OAAO,GAAG,qBAAqB;QACzC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,WAAW;IACxC,YAAY,OAAO,GAAG,oCAAoC;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC;IAC1B,CAAC;CACF;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,YAAoB;IAC/C,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,YAAoB;IAClD,MAAM,UAAU,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IACrD,oCAAoC;IACpC,4DAA4D;IAC5D,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,OAAsB;IAEtB,MAAM,YAAY,GAAG,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAEnE,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,aAAa,CACrB,sFAAsF,CACvF,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,gCAAgC;IAChC,MAAM,IAAI,WAAW,CAAC,mCAAmC,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAa,EACb,aAAqB;IAErB,0CAA0C;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAa,EACb,aAAqB;IAErB,sCAAsC;IACtC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,aAAqB;IAK1D,MAAM,YAAY,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAErD,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC;QACnC,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,sCAAsC;SAC9C,CAAC;IACJ,CAAC;IAED,iDAAiD;IACjD,OAAO;QACL,KAAK,EAAE,IAAI;QACX,WAAW,EAAE,CAAC;KACf,CAAC;AACJ,CAAC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Durable Review Documents
3
+ *
4
+ * Versioned durable documents for review/job index using pi-durable's defineDoc.
5
+ * Uses chord's JsonValue for JSON-compatible types.
6
+ */
7
+ import type { JsonValue } from "@earendil-works/chord";
8
+ /**
9
+ * Schema version for migration support
10
+ */
11
+ export declare const SCHEMA_VERSION = 1;
12
+ /**
13
+ * Finding record - plain interface for internal use
14
+ */
15
+ export interface FindingRecord {
16
+ rule: string;
17
+ severity: "error" | "warning" | "info";
18
+ message: string;
19
+ file?: string;
20
+ line?: number;
21
+ endLine?: number;
22
+ }
23
+ /**
24
+ * Review job record - plain interface for internal use
25
+ */
26
+ export interface ReviewJobRecord {
27
+ jobId: string;
28
+ requestId: string;
29
+ workspacePath: string;
30
+ canonicalWorkspace: string;
31
+ workspaceKey: string;
32
+ inputHash: string;
33
+ inputSnapshotId?: string;
34
+ provider?: string;
35
+ model?: string;
36
+ maxPasses: number;
37
+ maxToolCalls: number;
38
+ conversationId?: string;
39
+ submissionId?: string;
40
+ status: "queued" | "running" | "completed" | "failed" | "cancelled";
41
+ verdict?: "approved" | "changes_requested" | "blocked";
42
+ findings?: JsonValue;
43
+ summary?: string;
44
+ error?: string;
45
+ reportId?: string;
46
+ createdAt: string;
47
+ updatedAt: string;
48
+ completedAt?: string;
49
+ }
50
+ /**
51
+ * Jobs index document value - chord JsonObject compatible
52
+ */
53
+ export type JobsIndexValue = {
54
+ schemaVersion: number;
55
+ jobs: Record<string, JsonValue>;
56
+ };
57
+ /**
58
+ * Worker ownership document value - chord JsonObject compatible
59
+ */
60
+ export type WorkerOwnerValue = {
61
+ ownerId: string;
62
+ pid: number;
63
+ startedAt: string;
64
+ lastHeartbeat: string;
65
+ };
66
+ /**
67
+ * Review job index document - task-scoped
68
+ */
69
+ export declare const ReviewJobDoc: import("@earendil-works/pi-durable").TaskDocToken<JobsIndexValue>;
70
+ /**
71
+ * Worker ownership document - task-scoped
72
+ */
73
+ export declare const WorkerOwnerDoc: import("@earendil-works/pi-durable").TaskDocToken<WorkerOwnerValue>;
74
+ /**
75
+ * Get job from document
76
+ */
77
+ export declare function getJobFromDoc(doc: JobsIndexValue | undefined, jobId: string): ReviewJobRecord | undefined;
78
+ /**
79
+ * Update job in document
80
+ */
81
+ export declare function updateJobInDoc(doc: JobsIndexValue, jobId: string, job: ReviewJobRecord): JobsIndexValue;
82
+ //# sourceMappingURL=documents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;GAEG;AACH,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACpE,OAAO,CAAC,EAAE,UAAU,GAAG,mBAAmB,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACjC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,mEAQvB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc,qEAUzB,CAAC;AAEH;;GAEG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,cAAc,GAAG,SAAS,EAC/B,KAAK,EAAE,MAAM,GACZ,eAAe,GAAG,SAAS,CAQ7B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,eAAe,GACnB,cAAc,CAShB"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Durable Review Documents
3
+ *
4
+ * Versioned durable documents for review/job index using pi-durable's defineDoc.
5
+ * Uses chord's JsonValue for JSON-compatible types.
6
+ */
7
+ import { defineDoc } from "@earendil-works/pi-durable";
8
+ /**
9
+ * Schema version for migration support
10
+ */
11
+ export const SCHEMA_VERSION = 1;
12
+ /**
13
+ * Review job index document - task-scoped
14
+ */
15
+ export const ReviewJobDoc = defineDoc({
16
+ kind: "moocoding.durable-review.jobs",
17
+ version: 1,
18
+ scope: "task",
19
+ initial: () => ({
20
+ schemaVersion: SCHEMA_VERSION,
21
+ jobs: {},
22
+ }),
23
+ });
24
+ /**
25
+ * Worker ownership document - task-scoped
26
+ */
27
+ export const WorkerOwnerDoc = defineDoc({
28
+ kind: "moocoding.durable-review.owner",
29
+ version: 1,
30
+ scope: "task",
31
+ initial: () => ({
32
+ ownerId: "",
33
+ pid: 0,
34
+ startedAt: "",
35
+ lastHeartbeat: "",
36
+ }),
37
+ });
38
+ /**
39
+ * Get job from document
40
+ */
41
+ export function getJobFromDoc(doc, jobId) {
42
+ const job = doc?.jobs?.[jobId];
43
+ if (!job || typeof job !== "object")
44
+ return undefined;
45
+ try {
46
+ return JSON.parse(JSON.stringify(job));
47
+ }
48
+ catch {
49
+ return undefined;
50
+ }
51
+ }
52
+ /**
53
+ * Update job in document
54
+ */
55
+ export function updateJobInDoc(doc, jobId, job) {
56
+ return {
57
+ schemaVersion: doc.schemaVersion,
58
+ jobs: {
59
+ ...doc.jobs,
60
+ // SAFETY: job is already JSON-compatible
61
+ [jobId]: job,
62
+ },
63
+ };
64
+ }
65
+ //# sourceMappingURL=documents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"documents.js","sourceRoot":"","sources":["../src/documents.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGvD;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AA4DhC;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC;IACpC,IAAI,EAAE,+BAA+B;IACrC,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,GAAmB,EAAE,CAAC,CAAC;QAC9B,aAAa,EAAE,cAAc;QAC7B,IAAI,EAAE,EAAE;KACT,CAAC;CACH,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,SAAS,CAAC;IACtC,IAAI,EAAE,gCAAgC;IACtC,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,GAAqB,EAAE,CAAC,CAAC;QAChC,OAAO,EAAE,EAAE;QACX,GAAG,EAAE,CAAC;QACN,SAAS,EAAE,EAAE;QACb,aAAa,EAAE,EAAE;KAClB,CAAC;CACH,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,GAA+B,EAC/B,KAAa;IAEb,MAAM,GAAG,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACtD,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAoB,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,GAAmB,EACnB,KAAa,EACb,GAAoB;IAEpB,OAAO;QACL,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,IAAI,EAAE;YACJ,GAAG,GAAG,CAAC,IAAI;YACX,yCAAyC;YACzC,CAAC,KAAK,CAAC,EAAE,GAA2B;SACrC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Durable Review Extension
3
+ *
4
+ * Small Pi command adapter for /harness-review, /harness-review-status, /harness-review-cancel.
5
+ */
6
+ /**
7
+ * Handle /harness-review command
8
+ */
9
+ export declare function handleHarnessReview(args: {
10
+ request: string;
11
+ workspacePath?: string;
12
+ }): Promise<string>;
13
+ /**
14
+ * Handle /harness-review-status command
15
+ */
16
+ export declare function handleHarnessReviewStatus(args: {
17
+ jobId: string;
18
+ workspacePath?: string;
19
+ }): Promise<string>;
20
+ /**
21
+ * Handle /harness-review-cancel command
22
+ */
23
+ export declare function handleHarnessReviewCancel(args: {
24
+ jobId: string;
25
+ workspacePath?: string;
26
+ }): Promise<string>;
27
+ /**
28
+ * Check for command collisions before registration
29
+ */
30
+ export declare function checkCommandCollisions(commands: string[]): string[];
31
+ //# sourceMappingURL=extension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extension.d.ts","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA4BH;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgClB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsClB;AAED;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBlB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAGnE"}