pi-harness-runtime 1.1.439 → 1.1.440

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 (125) hide show
  1. package/harness/e2e/auto-test-loop.ts +6 -2
  2. package/harness/e2e/tools-detector.test.ts +0 -1
  3. package/harness/index.ts +2 -1
  4. package/harness/langchain/scoreboard.test.ts +44 -22
  5. package/harness/master-planner.ts +1 -1
  6. package/harness/output-limit-handler.ts +1 -1
  7. package/harness/project-detector/detector.ts +2 -4
  8. package/harness/task-graph.ts +460 -113
  9. package/index.ts +14 -7
  10. package/package.json +1 -1
  11. package/packages/a2a-adapter/package.json +1 -1
  12. package/packages/agent-policy/package.json +1 -1
  13. package/packages/architecture-generator/package.json +1 -1
  14. package/packages/auth/package.json +1 -1
  15. package/packages/autonomous-refactor/package.json +1 -1
  16. package/packages/autonomous-runtime/package.json +1 -1
  17. package/packages/cache-strategy/package.json +1 -1
  18. package/packages/capability-registry/package.json +1 -1
  19. package/packages/checkpoint/package.json +1 -1
  20. package/packages/cli-plugin-sdk/package.json +1 -1
  21. package/packages/clipboard/package.json +1 -1
  22. package/packages/clipboard-plugin/dist/types.d.ts +9 -2
  23. package/packages/clipboard-plugin/dist/types.d.ts.map +1 -1
  24. package/packages/clipboard-plugin/package.json +1 -1
  25. package/packages/clipboard-plugin/src/types.ts +9 -2
  26. package/packages/code-generation/package.json +1 -1
  27. package/packages/code-review/package.json +1 -1
  28. package/packages/codex-adapter/package.json +1 -1
  29. package/packages/codex-watcher/package.json +1 -1
  30. package/packages/config-capture/package.json +1 -1
  31. package/packages/connection-runtime/package.json +1 -1
  32. package/packages/context-compiler/package.json +1 -1
  33. package/packages/context-discovery/package.json +1 -1
  34. package/packages/context-manager/package.json +1 -1
  35. package/packages/contracts/package.json +1 -1
  36. package/packages/cookie-sanitizer/package.json +1 -1
  37. package/packages/cost-optimizer/package.json +1 -1
  38. package/packages/dependency-analyzer/package.json +1 -1
  39. package/packages/django-plugin/package.json +1 -1
  40. package/packages/doc-generator/package.json +1 -1
  41. package/packages/durable-review/package.json +1 -1
  42. package/packages/e2e-tester/package.json +1 -1
  43. package/packages/evaluation-engine/package.json +1 -1
  44. package/packages/evaluation-runner/package.json +1 -1
  45. package/packages/event-bus/package.json +1 -1
  46. package/packages/event-sink/package.json +1 -1
  47. package/packages/event-store/package.json +1 -1
  48. package/packages/experience-replay/package.json +1 -1
  49. package/packages/feedback-collector/package.json +1 -1
  50. package/packages/file-copy-helper/package.json +1 -1
  51. package/packages/framework-detector/package.json +1 -1
  52. package/packages/framework-plugin-sdk/package.json +1 -1
  53. package/packages/frappe-plugin/package.json +1 -1
  54. package/packages/generic-web-plugin/package.json +1 -1
  55. package/packages/health-monitor/package.json +1 -1
  56. package/packages/intent-analyzer/package.json +1 -1
  57. package/packages/jev-judge/package.json +1 -1
  58. package/packages/knowledge-graph/package.json +1 -1
  59. package/packages/knowledge-retrieval/package.json +1 -1
  60. package/packages/laravel-plugin/package.json +1 -1
  61. package/packages/learning-engine/package.json +1 -1
  62. package/packages/logging/package.json +1 -1
  63. package/packages/mcp-adapter/package.json +1 -1
  64. package/packages/memory-engine/package.json +1 -1
  65. package/packages/milestone-manager/package.json +1 -1
  66. package/packages/model-registry/package.json +1 -1
  67. package/packages/nextjs-plugin/package.json +1 -1
  68. package/packages/notification/package.json +1 -1
  69. package/packages/observability/package.json +1 -1
  70. package/packages/okf-indexer/package.json +1 -1
  71. package/packages/paperclip-integration/package.json +1 -1
  72. package/packages/performance-optimizer/package.json +1 -1
  73. package/packages/permission-mode/package.json +1 -1
  74. package/packages/privilege-broker/package.json +1 -1
  75. package/packages/project-analyzer/package.json +1 -1
  76. package/packages/project-bootstrap/package.json +1 -1
  77. package/packages/projection-engine/package.json +1 -1
  78. package/packages/prompt-compiler/package.json +1 -1
  79. package/packages/prompt-versioning/package.json +1 -1
  80. package/packages/provider-adapter-sdk/package.json +1 -1
  81. package/packages/provider-router/package.json +1 -1
  82. package/packages/provider-selector/package.json +1 -1
  83. package/packages/providers/package.json +1 -1
  84. package/packages/qdrant-skills/package.json +1 -1
  85. package/packages/quota-manager/package.json +1 -1
  86. package/packages/rate-limiter/package.json +1 -1
  87. package/packages/react-vite-plugin/package.json +1 -1
  88. package/packages/relay/package.json +1 -1
  89. package/packages/release-manager/package.json +1 -1
  90. package/packages/requirement-compiler/package.json +1 -1
  91. package/packages/runtime/package.json +1 -1
  92. package/packages/scheduler/package.json +1 -1
  93. package/packages/scheduler-adapter/package.json +1 -1
  94. package/packages/session/package.json +1 -1
  95. package/packages/session-api/package.json +1 -1
  96. package/packages/session-export/package.json +1 -1
  97. package/packages/shared-context/package.json +1 -1
  98. package/packages/skill-mcp-client/package.json +1 -1
  99. package/packages/skill-registry/package.json +1 -1
  100. package/packages/skills/package.json +1 -1
  101. package/packages/sprint-planner/package.json +1 -1
  102. package/packages/subscription-engine/package.json +1 -1
  103. package/packages/task-compiler/package.json +1 -1
  104. package/packages/tencentdb-memory/package.json +1 -1
  105. package/packages/tencentdb-sync/package.json +1 -1
  106. package/packages/test-data-generator/package.json +1 -1
  107. package/packages/test-generator/package.json +1 -1
  108. package/packages/todo-bd-sync/package.json +1 -1
  109. package/packages/token-estimation/package.json +1 -1
  110. package/packages/token-optimizer/package.json +1 -1
  111. package/packages/tooling-preference/package.json +1 -1
  112. package/packages/trajectory/package.json +1 -1
  113. package/packages/tui/package.json +1 -1
  114. package/packages/two-phase-review/package.json +1 -1
  115. package/packages/types/package.json +1 -1
  116. package/packages/voice-api/package.json +1 -1
  117. package/packages/webmcp-tester/package.json +1 -1
  118. package/packages/wiki/package.json +1 -1
  119. package/packages/workflow-events/package.json +1 -1
  120. package/packages/workspace-scanner/package.json +1 -1
  121. package/packages/worktree/package.json +1 -1
  122. package/packages/write-review/package.json +1 -1
  123. package/scripts/release-all.ts +5 -3
  124. package/scripts/typecheck-packages.mjs +7 -4
  125. package/scripts/verify-package-contents.ts +13 -1
@@ -100,6 +100,9 @@ export async function runAutoTestLoop(
100
100
  );
101
101
 
102
102
  // Handle decision
103
+ const runTests = () =>
104
+ runTestLoop(cfg, toolsConfig, retriesAttempted, startTime);
105
+
103
106
  switch (decision.suggestedAction) {
104
107
  case "skip":
105
108
  logInfo(null, "Skipping E2E tests - not needed right now");
@@ -130,12 +133,13 @@ export async function runAutoTestLoop(
130
133
  logInfo(null, "Generating test stubs...");
131
134
  await generateTestStubs(cfg.projectRoot, toolsConfig.projectType);
132
135
  }
133
- // Fall through to run tests
136
+ // The stubs are the extra step; the test loop runs in both cases.
137
+ return runTests();
134
138
 
135
139
  case "auto_run":
136
140
  default:
137
141
  // Run the test loop
138
- return await runTestLoop(cfg, toolsConfig, retriesAttempted, startTime);
142
+ return runTests();
139
143
  }
140
144
  }
141
145
 
@@ -2,7 +2,6 @@
2
2
  * E2E Tools Detector Tests
3
3
  */
4
4
 
5
- // @ts-expect-error - bun:test types
6
5
  import { describe, test, expect, beforeEach, afterEach } from "bun:test";
7
6
  import {
8
7
  detectProjectType,
package/harness/index.ts CHANGED
@@ -44,7 +44,8 @@ export type {
44
44
  export type { CheckpointManager } from "./job-state-machine.js";
45
45
 
46
46
  // Task Graph
47
- export type { TaskGraphManager } from "./task-graph.js";
47
+ export { TaskGraphManager } from "./task-graph.js";
48
+ export type { TaskDescription, TaskGraphOptions } from "./task-graph.js";
48
49
 
49
50
  // Loop Runtime
50
51
  export { LoopRuntime } from "./loop-runtime.js";
@@ -47,8 +47,10 @@ describe("T15 — Scoreboard blackboard wiring", () => {
47
47
  code: "",
48
48
  review: null as any,
49
49
  log: [],
50
- lastCommentedFile: undefined,
51
- seenCommentPairs: [],
50
+ prevCode: undefined,
51
+ writtenFiles: {},
52
+ userInput: null,
53
+ userResponse: null,
52
54
  });
53
55
 
54
56
  const statusPath = join(blackboardDir, "status.json");
@@ -68,8 +70,10 @@ describe("T15 — Scoreboard blackboard wiring", () => {
68
70
  code: "",
69
71
  review: null as any,
70
72
  log: [],
71
- lastCommentedFile: undefined,
72
- seenCommentPairs: [],
73
+ prevCode: undefined,
74
+ writtenFiles: {},
75
+ userInput: null,
76
+ userResponse: null,
73
77
  });
74
78
 
75
79
  const content = JSON.parse(
@@ -92,8 +96,10 @@ describe("T15 — Scoreboard blackboard wiring", () => {
92
96
  code: "",
93
97
  review: null as any,
94
98
  log: [],
95
- lastCommentedFile: undefined,
96
- seenCommentPairs: [],
99
+ prevCode: undefined,
100
+ writtenFiles: {},
101
+ userInput: null,
102
+ userResponse: null,
97
103
  });
98
104
 
99
105
  deps.onStep?.("write", {
@@ -103,8 +109,10 @@ describe("T15 — Scoreboard blackboard wiring", () => {
103
109
  code: "``` harness/langchain/surge.ts\nconst x = 1;\n```",
104
110
  review: null as any,
105
111
  log: [],
106
- lastCommentedFile: undefined,
107
- seenCommentPairs: [],
112
+ prevCode: undefined,
113
+ writtenFiles: {},
114
+ userInput: null,
115
+ userResponse: null,
108
116
  });
109
117
 
110
118
  const content = JSON.parse(
@@ -129,8 +137,10 @@ describe("T15 — Scoreboard blackboard wiring", () => {
129
137
  code: "",
130
138
  review: null as any,
131
139
  log: [],
132
- lastCommentedFile: undefined,
133
- seenCommentPairs: [],
140
+ prevCode: undefined,
141
+ writtenFiles: {},
142
+ userInput: null,
143
+ userResponse: null,
134
144
  });
135
145
 
136
146
  deps.onStep?.("write", {
@@ -140,8 +150,10 @@ describe("T15 — Scoreboard blackboard wiring", () => {
140
150
  code: "```harness/langchain/surge.ts\nconst x = 1;\n```",
141
151
  review: null as any,
142
152
  log: [],
143
- lastCommentedFile: undefined,
144
- seenCommentPairs: [],
153
+ prevCode: undefined,
154
+ writtenFiles: {},
155
+ userInput: null,
156
+ userResponse: null,
145
157
  });
146
158
 
147
159
  deps.onStep?.("review", {
@@ -157,8 +169,10 @@ describe("T15 — Scoreboard blackboard wiring", () => {
157
169
  ],
158
170
  },
159
171
  log: [],
160
- lastCommentedFile: undefined,
161
- seenCommentPairs: [],
172
+ prevCode: undefined,
173
+ writtenFiles: {},
174
+ userInput: null,
175
+ userResponse: null,
162
176
  });
163
177
 
164
178
  const content = JSON.parse(
@@ -186,8 +200,10 @@ describe("T15 — Scoreboard blackboard wiring", () => {
186
200
  code: "",
187
201
  review: null as any,
188
202
  log: [],
189
- lastCommentedFile: undefined,
190
- seenCommentPairs: [],
203
+ prevCode: undefined,
204
+ writtenFiles: {},
205
+ userInput: null,
206
+ userResponse: null,
191
207
  });
192
208
 
193
209
  // Call plan() — the stub returns a string that includes scoreboard context
@@ -212,8 +228,10 @@ describe("T15 — Scoreboard blackboard wiring", () => {
212
228
  code: "",
213
229
  review: null as any,
214
230
  log: [],
215
- lastCommentedFile: undefined,
216
- seenCommentPairs: [],
231
+ prevCode: undefined,
232
+ writtenFiles: {},
233
+ userInput: null,
234
+ userResponse: null,
217
235
  });
218
236
  deps.onStep?.("write", {
219
237
  request: "test",
@@ -222,8 +240,10 @@ describe("T15 — Scoreboard blackboard wiring", () => {
222
240
  code: "```a.ts\n1\n```",
223
241
  review: null as any,
224
242
  log: [],
225
- lastCommentedFile: undefined,
226
- seenCommentPairs: [],
243
+ prevCode: undefined,
244
+ writtenFiles: {},
245
+ userInput: null,
246
+ userResponse: null,
227
247
  });
228
248
  deps.onStep?.("review", {
229
249
  request: "test",
@@ -232,8 +252,10 @@ describe("T15 — Scoreboard blackboard wiring", () => {
232
252
  code: "```a.ts\n1\n```",
233
253
  review: { verdict: "approved", summary: "ok", comments: [] },
234
254
  log: [],
235
- lastCommentedFile: undefined,
236
- seenCommentPairs: [],
255
+ prevCode: undefined,
256
+ writtenFiles: {},
257
+ userInput: null,
258
+ userResponse: null,
237
259
  });
238
260
 
239
261
  const content = JSON.parse(
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import type { TaskGraph } from "../packages/types/dist/runtime-types.js";
9
- import type { TaskGraphManager } from "./task-graph.ts";
9
+ import { TaskGraphManager } from "./task-graph.js";
10
10
 
11
11
  export interface PlanResult {
12
12
  success: boolean;
@@ -259,7 +259,7 @@ export class OutputLimitHandler {
259
259
  }
260
260
 
261
261
  // Basic validation: content should be longer than partial
262
- return content.length > this.getPartials()[0]?.length ?? 0;
262
+ return content.length > (this.getPartials()[0]?.length ?? 0);
263
263
  }
264
264
 
265
265
  /**
@@ -10,8 +10,8 @@ import type {
10
10
  ProjectDetection,
11
11
  SeedStrategy,
12
12
  E2EStrategy,
13
- } from "../packages/types/dist/runtime-types.js";
14
- import { readJson } from "../../cli.ts";
13
+ } from "../../packages/types/dist/runtime-types.js";
14
+ import { readJson } from "../../cli.js";
15
15
  import { join } from "node:path";
16
16
 
17
17
  export interface DetectionSignal {
@@ -190,9 +190,7 @@ export class ProjectDetector {
190
190
  "database/seeders",
191
191
  ];
192
192
 
193
- // @ts-expect-error - Bun has built-in file system access
194
193
  const { existsSync } = await import("node:fs");
195
- // @ts-expect-error - Bun has built-in file system access
196
194
  const { readdirSync } = await import("node:fs");
197
195
 
198
196
  for (const check of checks) {