pi-harness-runtime 0.9.25 → 1.1.0

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 (350) hide show
  1. package/CHANGELOG.md +49 -7
  2. package/README.md +173 -51
  3. package/harness/auto-compact.ts +1 -1
  4. package/harness/autonomous-review.ts +88 -0
  5. package/harness/context-compact-orchestrator.ts +23 -23
  6. package/harness/context-window-manager.ts +5 -5
  7. package/harness/continue-prompt.ts +3 -3
  8. package/harness/e2e/minimax-quota-scraper.ts +5 -5
  9. package/harness/e2e/openai-quota-scraper.ts +13 -8
  10. package/harness/forked-summarizer.ts +4 -4
  11. package/harness/herdr-agents.ts +91 -0
  12. package/harness/index.ts +5 -5
  13. package/harness/loop-code-agent.ts +284 -0
  14. package/harness/loop-controller.ts +201 -0
  15. package/harness/loop-review-agent.ts +295 -0
  16. package/harness/loop-runtime.ts +10 -10
  17. package/harness/loop-types.ts +118 -0
  18. package/harness/notification-events.ts +3 -3
  19. package/harness/output-limit-handler.ts +1 -1
  20. package/harness/partial-recovery.ts +3 -3
  21. package/harness/session-memory.ts +5 -5
  22. package/index.ts +139 -34
  23. package/package.json +1 -1
  24. package/packages/a2a-adapter/package.json +1 -1
  25. package/packages/a2a-adapter/src/types.ts +5 -5
  26. package/packages/auth/package.json +1 -1
  27. package/packages/autonomous-refactor/package.json +1 -1
  28. package/packages/autonomous-runtime/dist/inbox.d.ts +3 -3
  29. package/packages/autonomous-runtime/dist/inbox.js +12 -12
  30. package/packages/autonomous-runtime/dist/lease.js +14 -14
  31. package/packages/autonomous-runtime/dist/types.js +1 -1
  32. package/packages/autonomous-runtime/package.json +1 -1
  33. package/packages/autonomous-runtime/src/inbox.ts +12 -12
  34. package/packages/autonomous-runtime/src/lease.ts +15 -15
  35. package/packages/autonomous-runtime/src/types.ts +13 -13
  36. package/packages/autonomous-runtime/tsconfig.tsbuildinfo +1 -1
  37. package/packages/cache-strategy/package.json +1 -1
  38. package/packages/capability-registry/dist/types.js +1 -1
  39. package/packages/capability-registry/package.json +1 -1
  40. package/packages/capability-registry/src/types.ts +5 -5
  41. package/packages/checkpoint/README.md +6 -6
  42. package/packages/checkpoint/dist/differ.js +2 -2
  43. package/packages/checkpoint/dist/engine.js +3 -3
  44. package/packages/checkpoint/dist/index.js +5 -5
  45. package/packages/checkpoint/dist/storage.js +3 -3
  46. package/packages/checkpoint/dist/types.js +1 -1
  47. package/packages/checkpoint/package.json +1 -1
  48. package/packages/checkpoint/src/differ.ts +2 -2
  49. package/packages/checkpoint/src/engine.ts +3 -3
  50. package/packages/checkpoint/src/index.ts +5 -5
  51. package/packages/checkpoint/src/storage.ts +3 -3
  52. package/packages/checkpoint/src/types.ts +10 -10
  53. package/packages/checkpoint/tsconfig.tsbuildinfo +1 -1
  54. package/packages/cli-plugin-sdk/package.json +1 -1
  55. package/packages/clipboard/dist/src/clipboard.d.ts.map +1 -1
  56. package/packages/clipboard/dist/src/clipboard.js +15 -7
  57. package/packages/clipboard/dist/src/clipboard.js.map +1 -1
  58. package/packages/clipboard/dist/src/copy-sync.d.ts +27 -0
  59. package/packages/clipboard/dist/src/copy-sync.d.ts.map +1 -0
  60. package/packages/clipboard/dist/src/copy-sync.js +170 -0
  61. package/packages/clipboard/dist/src/copy-sync.js.map +1 -0
  62. package/packages/clipboard/dist/src/gist-relay.d.ts +48 -0
  63. package/packages/clipboard/dist/src/gist-relay.d.ts.map +1 -0
  64. package/packages/clipboard/dist/src/gist-relay.js +186 -0
  65. package/packages/clipboard/dist/src/gist-relay.js.map +1 -0
  66. package/packages/clipboard/dist/src/github-login.d.ts +16 -0
  67. package/packages/clipboard/dist/src/github-login.d.ts.map +1 -0
  68. package/packages/clipboard/dist/src/github-login.js +69 -0
  69. package/packages/clipboard/dist/src/github-login.js.map +1 -0
  70. package/packages/clipboard/dist/src/index.d.ts +2 -0
  71. package/packages/clipboard/dist/src/index.d.ts.map +1 -1
  72. package/packages/clipboard/dist/src/index.js +2 -1
  73. package/packages/clipboard/dist/src/index.js.map +1 -1
  74. package/packages/clipboard/package.json +1 -1
  75. package/packages/clipboard/src/clipboard.ts +16 -9
  76. package/packages/clipboard/src/copy-sync.ts +201 -0
  77. package/packages/clipboard/src/gist-relay.ts +240 -0
  78. package/packages/clipboard/src/github-login.ts +107 -0
  79. package/packages/clipboard/src/index.ts +2 -0
  80. package/packages/clipboard/test/mojibake.test.mjs +143 -0
  81. package/packages/code-generation/README.md +13 -13
  82. package/packages/code-generation/dist/faker.js +4 -4
  83. package/packages/code-generation/dist/generator.js +3 -3
  84. package/packages/code-generation/dist/index.js +3 -3
  85. package/packages/code-generation/dist/templates/registry.js +1 -1
  86. package/packages/code-generation/dist/types.js +1 -1
  87. package/packages/code-generation/package.json +1 -1
  88. package/packages/code-generation/src/faker.ts +5 -5
  89. package/packages/code-generation/src/generator.ts +4 -4
  90. package/packages/code-generation/src/index.ts +3 -3
  91. package/packages/code-generation/src/templates/registry.ts +1 -1
  92. package/packages/code-generation/src/types.ts +10 -10
  93. package/packages/code-generation/tsconfig.tsbuildinfo +1 -1
  94. package/packages/code-review/README.md +13 -13
  95. package/packages/code-review/dist/engine.js +3 -3
  96. package/packages/code-review/dist/index.js +3 -3
  97. package/packages/code-review/dist/types.js +1 -1
  98. package/packages/code-review/package.json +1 -1
  99. package/packages/code-review/src/engine.ts +3 -3
  100. package/packages/code-review/src/index.ts +3 -3
  101. package/packages/code-review/src/types.ts +10 -10
  102. package/packages/code-review/tsconfig.tsbuildinfo +1 -1
  103. package/packages/codex-adapter/package.json +1 -1
  104. package/packages/context-compiler/dist/compiler.js +1 -1
  105. package/packages/context-compiler/package.json +1 -1
  106. package/packages/context-compiler/src/compiler.ts +1 -1
  107. package/packages/context-compiler/src/types.ts +11 -11
  108. package/packages/context-compiler/test/context-compiler.test.ts +11 -11
  109. package/packages/context-discovery/package.json +1 -1
  110. package/packages/context-manager/package.json +1 -1
  111. package/packages/cookie-sanitizer/README.md +27 -27
  112. package/packages/cookie-sanitizer/package.json +1 -1
  113. package/packages/cost-optimizer/package.json +1 -1
  114. package/packages/cost-optimizer/src/types.ts +5 -5
  115. package/packages/dependency-analyzer/package.json +1 -1
  116. package/packages/django-plugin/dist/analyzer.js +7 -7
  117. package/packages/django-plugin/package.json +1 -1
  118. package/packages/django-plugin/src/analyzer.ts +7 -7
  119. package/packages/doc-generator/package.json +1 -1
  120. package/packages/evaluation-engine/dist/engine.js +9 -9
  121. package/packages/evaluation-engine/package.json +1 -1
  122. package/packages/evaluation-engine/src/engine.ts +9 -9
  123. package/packages/evaluation-engine/src/types.ts +3 -3
  124. package/packages/evaluation-runner/package.json +1 -1
  125. package/packages/event-bus/dist/src/herdr-bus.d.ts +121 -0
  126. package/packages/event-bus/dist/src/herdr-bus.d.ts.map +1 -0
  127. package/packages/event-bus/dist/src/herdr-bus.js +322 -0
  128. package/packages/event-bus/dist/src/herdr-bus.js.map +1 -0
  129. package/packages/event-bus/dist/src/index.d.ts +2 -0
  130. package/packages/event-bus/dist/src/index.d.ts.map +1 -1
  131. package/packages/event-bus/dist/src/index.js +1 -0
  132. package/packages/event-bus/dist/src/index.js.map +1 -1
  133. package/packages/event-bus/package.json +1 -1
  134. package/packages/event-bus/src/herdr-bus.ts +525 -0
  135. package/packages/event-bus/src/index.ts +29 -0
  136. package/packages/event-store/package.json +1 -1
  137. package/packages/experience-replay/dist/replay.js +7 -7
  138. package/packages/experience-replay/package.json +1 -1
  139. package/packages/experience-replay/src/replay.ts +7 -7
  140. package/packages/experience-replay/src/types.ts +5 -5
  141. package/packages/feedback-collector/package.json +1 -1
  142. package/packages/framework-detector/README.md +18 -18
  143. package/packages/framework-detector/dist/detector.js +3 -3
  144. package/packages/framework-detector/dist/index.js +3 -3
  145. package/packages/framework-detector/dist/signatures/registry.js +24 -24
  146. package/packages/framework-detector/dist/types.js +1 -1
  147. package/packages/framework-detector/package.json +1 -1
  148. package/packages/framework-detector/src/detector.ts +3 -3
  149. package/packages/framework-detector/src/index.ts +3 -3
  150. package/packages/framework-detector/src/signatures/registry.ts +24 -24
  151. package/packages/framework-detector/src/types.ts +7 -7
  152. package/packages/framework-detector/tsconfig.tsbuildinfo +1 -1
  153. package/packages/framework-plugin-sdk/README.md +23 -23
  154. package/packages/framework-plugin-sdk/dist/index.js +2 -2
  155. package/packages/framework-plugin-sdk/dist/manager.js +3 -3
  156. package/packages/framework-plugin-sdk/dist/types.js +2 -2
  157. package/packages/framework-plugin-sdk/package.json +1 -1
  158. package/packages/framework-plugin-sdk/src/index.ts +2 -2
  159. package/packages/framework-plugin-sdk/src/manager.ts +3 -3
  160. package/packages/framework-plugin-sdk/src/types.ts +10 -10
  161. package/packages/framework-plugin-sdk/tsconfig.tsbuildinfo +1 -1
  162. package/packages/frappe-plugin/dist/analyzer.js +8 -8
  163. package/packages/frappe-plugin/dist/types.js +1 -1
  164. package/packages/frappe-plugin/package.json +1 -1
  165. package/packages/frappe-plugin/src/analyzer.ts +8 -8
  166. package/packages/frappe-plugin/src/types.ts +10 -10
  167. package/packages/generic-web-plugin/dist/analyzer.js +5 -5
  168. package/packages/generic-web-plugin/package.json +1 -1
  169. package/packages/generic-web-plugin/src/analyzer.ts +5 -5
  170. package/packages/health-monitor/package.json +1 -1
  171. package/packages/health-monitor/src/monitor.ts +1 -1
  172. package/packages/intent-analyzer/package.json +1 -1
  173. package/packages/laravel-plugin/dist/analyzer.js +11 -11
  174. package/packages/laravel-plugin/package.json +1 -1
  175. package/packages/laravel-plugin/src/analyzer.ts +11 -11
  176. package/packages/learning-engine/dist/engine.js +5 -5
  177. package/packages/learning-engine/dist/types.js +1 -1
  178. package/packages/learning-engine/package.json +1 -1
  179. package/packages/learning-engine/src/engine.ts +5 -5
  180. package/packages/learning-engine/src/types.ts +6 -6
  181. package/packages/mcp-adapter/package.json +1 -1
  182. package/packages/memory-engine/dist/engine.js +8 -8
  183. package/packages/memory-engine/dist/types.js +2 -2
  184. package/packages/memory-engine/package.json +1 -1
  185. package/packages/memory-engine/src/engine.ts +8 -8
  186. package/packages/memory-engine/src/types.ts +9 -9
  187. package/packages/model-registry/package.json +1 -1
  188. package/packages/model-registry/src/types.ts +4 -4
  189. package/packages/nextjs-plugin/dist/analyzer.js +9 -9
  190. package/packages/nextjs-plugin/package.json +1 -1
  191. package/packages/nextjs-plugin/src/analyzer.ts +9 -9
  192. package/packages/notification/dist/notification-center.js +1 -1
  193. package/packages/notification/package.json +1 -1
  194. package/packages/notification/src/notification-center.ts +1 -1
  195. package/packages/observability/dist/alerts.js +2 -2
  196. package/packages/observability/dist/health.js +4 -4
  197. package/packages/observability/dist/index.js +6 -6
  198. package/packages/observability/dist/logger.js +7 -7
  199. package/packages/observability/dist/metrics.js +11 -11
  200. package/packages/observability/dist/tracer.js +3 -3
  201. package/packages/observability/dist/types.js +1 -1
  202. package/packages/observability/package.json +1 -1
  203. package/packages/observability/src/alerts.ts +2 -2
  204. package/packages/observability/src/health.ts +4 -4
  205. package/packages/observability/src/index.ts +6 -6
  206. package/packages/observability/src/logger.ts +7 -7
  207. package/packages/observability/src/metrics.ts +11 -11
  208. package/packages/observability/src/tracer.ts +3 -3
  209. package/packages/observability/src/types.ts +7 -7
  210. package/packages/observability/test/observability.test.ts +4 -4
  211. package/packages/observability/tsconfig.tsbuildinfo +1 -1
  212. package/packages/performance-optimizer/dist/optimizer.js +1 -1
  213. package/packages/performance-optimizer/package.json +1 -1
  214. package/packages/performance-optimizer/src/optimizer.ts +1 -1
  215. package/packages/performance-optimizer/src/types.ts +4 -4
  216. package/packages/privilege-broker/package.json +1 -1
  217. package/packages/project-analyzer/dist/analyzer.js +4 -4
  218. package/packages/project-analyzer/dist/index.js +8 -8
  219. package/packages/project-analyzer/dist/signals.js +3 -3
  220. package/packages/project-analyzer/dist/types.js +1 -1
  221. package/packages/project-analyzer/package.json +1 -1
  222. package/packages/project-analyzer/src/analyzer.ts +4 -4
  223. package/packages/project-analyzer/src/index.ts +9 -9
  224. package/packages/project-analyzer/src/signals.ts +4 -4
  225. package/packages/project-analyzer/src/types.ts +15 -15
  226. package/packages/project-analyzer/test/index.test.ts +17 -17
  227. package/packages/project-analyzer/tsconfig.tsbuildinfo +1 -1
  228. package/packages/projection-engine/package.json +1 -1
  229. package/packages/prompt-compiler/dist/section-builder.js +1 -1
  230. package/packages/prompt-compiler/dist/types.js +3 -3
  231. package/packages/prompt-compiler/package.json +1 -1
  232. package/packages/prompt-compiler/src/section-builder.ts +1 -1
  233. package/packages/prompt-compiler/src/types.ts +12 -12
  234. package/packages/prompt-compiler/test/prompt-compiler.test.ts +12 -12
  235. package/packages/prompt-versioning/package.json +1 -1
  236. package/packages/provider-adapter-sdk/dist/builder.js +1 -1
  237. package/packages/provider-adapter-sdk/dist/index.js +5 -5
  238. package/packages/provider-adapter-sdk/dist/registry.js +1 -1
  239. package/packages/provider-adapter-sdk/dist/tester.js +1 -1
  240. package/packages/provider-adapter-sdk/dist/types.js +1 -1
  241. package/packages/provider-adapter-sdk/package.json +1 -1
  242. package/packages/provider-adapter-sdk/src/builder.ts +1 -1
  243. package/packages/provider-adapter-sdk/src/index.ts +6 -6
  244. package/packages/provider-adapter-sdk/src/registry.ts +1 -1
  245. package/packages/provider-adapter-sdk/src/tester.ts +1 -1
  246. package/packages/provider-adapter-sdk/src/types.ts +5 -5
  247. package/packages/provider-adapter-sdk/tsconfig.tsbuildinfo +1 -1
  248. package/packages/provider-router/package.json +1 -1
  249. package/packages/provider-router/src/types.ts +4 -4
  250. package/packages/provider-selector/package.json +1 -1
  251. package/packages/providers/dist/deepagents-adapter.js +1 -1
  252. package/packages/providers/package.json +1 -1
  253. package/packages/providers/src/deepagents-adapter.ts +1 -1
  254. package/packages/quota-manager/package.json +1 -1
  255. package/packages/rate-limiter/package.json +1 -1
  256. package/packages/react-vite-plugin/dist/analyzer.js +7 -7
  257. package/packages/react-vite-plugin/package.json +1 -1
  258. package/packages/react-vite-plugin/src/analyzer.ts +7 -7
  259. package/packages/release-manager/package.json +1 -1
  260. package/packages/requirement-compiler/dist/compiler.js +17 -17
  261. package/packages/requirement-compiler/dist/types.js +2 -2
  262. package/packages/requirement-compiler/package.json +1 -1
  263. package/packages/requirement-compiler/src/compiler.ts +17 -17
  264. package/packages/requirement-compiler/src/types.ts +21 -21
  265. package/packages/requirement-compiler/test/requirement-compiler.test.ts +17 -17
  266. package/packages/runtime/dist/command-executor.js +1 -1
  267. package/packages/runtime/dist/local-runtime-agent.js +1 -1
  268. package/packages/runtime/dist/policy-engine.js +1 -1
  269. package/packages/runtime/dist/runtime-api.js +1 -1
  270. package/packages/runtime/dist/workspace-manager.js +1 -1
  271. package/packages/runtime/package.json +1 -1
  272. package/packages/runtime/src/command-executor.ts +1 -1
  273. package/packages/runtime/src/local-runtime-agent.ts +1 -1
  274. package/packages/runtime/src/policy-engine.ts +1 -1
  275. package/packages/runtime/src/runtime-api.ts +1 -1
  276. package/packages/runtime/src/workspace-manager.ts +1 -1
  277. package/packages/scheduler/package.json +1 -1
  278. package/packages/scheduler-adapter/package.json +1 -1
  279. package/packages/session/README.md +18 -18
  280. package/packages/session/dist/history.js +3 -3
  281. package/packages/session/dist/index.js +5 -5
  282. package/packages/session/dist/manager.js +3 -3
  283. package/packages/session/dist/policy.js +2 -2
  284. package/packages/session/dist/store.js +2 -2
  285. package/packages/session/dist/types.js +1 -1
  286. package/packages/session/package.json +1 -1
  287. package/packages/session/src/history.ts +3 -3
  288. package/packages/session/src/index.ts +5 -5
  289. package/packages/session/src/manager.ts +3 -3
  290. package/packages/session/src/policy.ts +4 -4
  291. package/packages/session/src/store.ts +3 -3
  292. package/packages/session/src/types.ts +10 -10
  293. package/packages/session/tsconfig.tsbuildinfo +1 -1
  294. package/packages/session-api/package.json +1 -1
  295. package/packages/session-export/package.json +1 -1
  296. package/packages/shared-context/package.json +1 -1
  297. package/packages/skill-registry/package.json +1 -1
  298. package/packages/skill-registry/src/types.ts +4 -4
  299. package/packages/sprint-planner/package.json +1 -1
  300. package/packages/subscription-engine/package.json +1 -1
  301. package/packages/task-compiler/dist/compiler.js +7 -7
  302. package/packages/task-compiler/dist/decompose.js +11 -11
  303. package/packages/task-compiler/dist/file-scope.js +6 -6
  304. package/packages/task-compiler/dist/graph.js +6 -6
  305. package/packages/task-compiler/dist/index.js +2 -2
  306. package/packages/task-compiler/dist/types.js +5 -5
  307. package/packages/task-compiler/dist/validate.js +2 -2
  308. package/packages/task-compiler/dist/verification.js +2 -2
  309. package/packages/task-compiler/package.json +1 -1
  310. package/packages/task-compiler/src/command-policy.ts +1 -1
  311. package/packages/task-compiler/src/compiler.ts +7 -7
  312. package/packages/task-compiler/src/decompose.ts +11 -11
  313. package/packages/task-compiler/src/file-scope.ts +6 -6
  314. package/packages/task-compiler/src/graph.ts +6 -6
  315. package/packages/task-compiler/src/index.ts +3 -3
  316. package/packages/task-compiler/src/types.ts +14 -14
  317. package/packages/task-compiler/src/validate.ts +2 -2
  318. package/packages/task-compiler/src/verification.ts +2 -2
  319. package/packages/task-compiler/test/task-compiler.test.ts +10 -10
  320. package/packages/test-data-generator/README.md +13 -13
  321. package/packages/test-data-generator/dist/faker-adapter.js +4 -4
  322. package/packages/test-data-generator/dist/generator.js +3 -3
  323. package/packages/test-data-generator/dist/index.js +3 -3
  324. package/packages/test-data-generator/dist/types.js +1 -1
  325. package/packages/test-data-generator/package.json +1 -1
  326. package/packages/test-data-generator/src/faker-adapter.ts +4 -4
  327. package/packages/test-data-generator/src/generator.ts +3 -3
  328. package/packages/test-data-generator/src/index.ts +3 -3
  329. package/packages/test-data-generator/src/types.ts +9 -9
  330. package/packages/test-data-generator/tsconfig.tsbuildinfo +1 -1
  331. package/packages/test-generator/package.json +1 -1
  332. package/packages/todo-bd-sync/package.json +22 -0
  333. package/packages/todo-bd-sync/src/detector.ts +150 -0
  334. package/packages/todo-bd-sync/src/extension.ts +101 -0
  335. package/packages/todo-bd-sync/src/index.ts +401 -0
  336. package/packages/todo-bd-sync/src/sync.ts +322 -0
  337. package/packages/todo-bd-sync/src/todo-reminder.ts +418 -0
  338. package/packages/todo-bd-sync/src/types.ts +137 -0
  339. package/packages/token-estimation/package.json +1 -1
  340. package/packages/token-optimizer/package.json +1 -1
  341. package/packages/tui/package.json +1 -1
  342. package/packages/types/package.json +1 -1
  343. package/packages/types/src/agent-worker-types.ts +5 -5
  344. package/packages/types/src/runtime-types.ts +12 -12
  345. package/packages/types/tsconfig.tsbuildinfo +1 -1
  346. package/packages/workflow-events/package.json +1 -1
  347. package/packages/workspace-scanner/package.json +1 -1
  348. package/packages/worktree/package.json +1 -1
  349. package/renderer.ts +7 -7
  350. package/skills/harness-runtime/SKILL.md +15 -15
@@ -17,7 +17,7 @@ export function buildGraph(tasks) {
17
17
  for (const task of tasks) {
18
18
  taskMap.set(task.id, task);
19
19
  }
20
- // ─── Compute dependents ────────────────────────────────────────────
20
+ // --- Compute dependents --------------------------------------------
21
21
  const dependents = new Map();
22
22
  for (const task of tasks) {
23
23
  dependents.set(task.id, []);
@@ -29,14 +29,14 @@ export function buildGraph(tasks) {
29
29
  list.push(task.id);
30
30
  }
31
31
  }
32
- // ─── Find roots and terminals ─────────────────────────────────────
32
+ // --- Find roots and terminals -------------------------------------
33
33
  const roots = tasks
34
34
  .filter((t) => t.dependencies.length === 0)
35
35
  .map((t) => t.id);
36
36
  const terminals = tasks
37
37
  .filter((t) => (dependents.get(t.id)?.length ?? 0) === 0)
38
38
  .map((t) => t.id);
39
- // ─── Deterministic topological sort ────────────────────────────────
39
+ // --- Deterministic topological sort --------------------------------
40
40
  const order = topologicalSort([...tasks], taskMap);
41
41
  return {
42
42
  jobId: tasks[0]?.jobId ?? "",
@@ -46,7 +46,7 @@ export function buildGraph(tasks) {
46
46
  topologicalOrder: order,
47
47
  };
48
48
  }
49
- // ─── Kahn's topological sort with deterministic tiebreaking ─────────────────
49
+ // --- Kahn's topological sort with deterministic tiebreaking -----------------
50
50
  function topologicalSort(tasks, taskMap) {
51
51
  const result = [];
52
52
  // in-degree for each task
@@ -103,7 +103,7 @@ function topologicalSort(tasks, taskMap) {
103
103
  }
104
104
  return result;
105
105
  }
106
- // ─── Dependency depth helper ───────────────────────────────────────────────
106
+ // --- Dependency depth helper -----------------------------------------------
107
107
  function countDepth(taskId, taskMap) {
108
108
  const task = taskMap.get(taskId);
109
109
  if (!task || task.dependencies.length === 0)
@@ -116,7 +116,7 @@ function countDepth(taskId, taskMap) {
116
116
  }
117
117
  return max + 1;
118
118
  }
119
- // ─── Dependency map (for use by topologicalSort) ───────────────────────────
119
+ // --- Dependency map (for use by topologicalSort) ---------------------------
120
120
  const dependents = new Map();
121
121
  export { dependents };
122
122
  //# sourceMappingURL=graph.js.map
@@ -12,9 +12,9 @@
12
12
  * jobId: "job-001",
13
13
  * });
14
14
  */
15
- // ─── SDK Version ───────────────────────────────────────────────────────
15
+ // --- SDK Version -------------------------------------------------------
16
16
  export { SDK_VERSION } from "./types.js";
17
- // ─── Main API ─────────────────────────────────────────────────────────
17
+ // --- Main API ---------------------------------------------------------
18
18
  export { compileTasks } from "./compiler.js";
19
19
  export { TaskCompilerError, TaskCompilerErrorCode } from "./types.js";
20
20
  //# sourceMappingURL=index.js.map
@@ -3,9 +3,9 @@
3
3
  *
4
4
  * Core types for task decomposition, DAG construction, and verification.
5
5
  */
6
- // ─── SDK Version ───────────────────────────────────────────────────────
6
+ // --- SDK Version -------------------------------------------------------
7
7
  export const SDK_VERSION = "1.0.0";
8
- // ─── Standard Engineering Flow ────────────────────────────────────────
8
+ // --- Standard Engineering Flow ----------------------------------------
9
9
  export const STANDARD_FLOW = [
10
10
  "analysis",
11
11
  "design",
@@ -16,7 +16,7 @@ export const STANDARD_FLOW = [
16
16
  "repair",
17
17
  "documentation",
18
18
  ];
19
- // ─── Provider Hints ───────────────────────────────────────────────────
19
+ // --- Provider Hints ---------------------------------------------------
20
20
  export const PROVIDER_HINTS = {
21
21
  analysis: ["codex", "gpt", "glm"],
22
22
  design: ["codex", "gpt", "glm"],
@@ -27,7 +27,7 @@ export const PROVIDER_HINTS = {
27
27
  repair: ["glm", "claude"],
28
28
  documentation: ["codex", "gpt"],
29
29
  };
30
- // ─── Default Command Policy ─────────────────────────────────────────────
30
+ // --- Default Command Policy ---------------------------------------------
31
31
  export const PROHIBITED_BY_DEFAULT = [
32
32
  "git commit",
33
33
  "git push",
@@ -51,7 +51,7 @@ export const DEFAULT_TASK_COMPILER_CONFIG = {
51
51
  extraProhibitedCommands: [],
52
52
  clock: () => new Date(),
53
53
  };
54
- // ─── Compiler Errors ─────────────────────────────────────────────────────
54
+ // --- Compiler Errors -----------------------------------------------------
55
55
  export var TaskCompilerErrorCode;
56
56
  (function (TaskCompilerErrorCode) {
57
57
  TaskCompilerErrorCode["CYCLIC_DEPENDENCY"] = "CYCLIC_DEPENDENCY";
@@ -124,7 +124,7 @@ export function assertEveryCriterionAssigned(graph, criterionIds) {
124
124
  throw new TaskCompilerError(TaskCompilerErrorCode.UNSATISFIED_CRITERION, `Acceptance criteria not assigned to any task: ${unassigned.join(", ")}`, { unassignedCriteria: unassigned });
125
125
  }
126
126
  }
127
- // ─── File overlap detection ──────────────────────────────────────────
127
+ // --- File overlap detection ------------------------------------------
128
128
  function findFileOverlap(a, b) {
129
129
  const conflicts = [];
130
130
  for (const patternA of a.include) {
@@ -146,7 +146,7 @@ function patternSubsumes(parent, child) {
146
146
  const p = parent.replace(/\/\*\*$/, "");
147
147
  return child.startsWith(`${p}/`) || child.startsWith(p);
148
148
  }
149
- // ─── Dependency helpers ────────────────────────────────────────────────
149
+ // --- Dependency helpers ------------------------------------------------
150
150
  function getAllDependencies(taskId, graph) {
151
151
  const taskMap = new Map(graph.tasks.map((t) => [t.id, t]));
152
152
  const visited = new Set();
@@ -14,7 +14,7 @@ export function assignVerification(tasks, requirement) {
14
14
  return { ...task, expectedOutputs: outputs };
15
15
  });
16
16
  }
17
- // ─── Output builders by task type ─────────────────────────────────────
17
+ // --- Output builders by task type -------------------------------------
18
18
  function buildOutputs(task, requirement) {
19
19
  switch (task.type) {
20
20
  case "implementation": {
@@ -52,7 +52,7 @@ function buildOutputs(task, requirement) {
52
52
  }
53
53
  }
54
54
  }
55
- // ─── Type-specific output builders ───────────────────────────────────
55
+ // --- Type-specific output builders -----------------------------------
56
56
  function buildImplementationOutputs(task, requirement) {
57
57
  const outputs = [];
58
58
  // Required: at least one file was modified
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/task-compiler",
3
- "version": "0.9.24",
3
+ "version": "1.1.0",
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",
@@ -135,7 +135,7 @@ export function applyCommandPolicy(
135
135
  });
136
136
  }
137
137
 
138
- // ─── Extract project commands from ProjectProfile ───────────────────────────
138
+ // --- Extract project commands from ProjectProfile ---------------------------
139
139
 
140
140
  interface ProjectCommandSet {
141
141
  permitted: string[];
@@ -55,7 +55,7 @@ export async function compileTasks(
55
55
  fullConfig.clock;
56
56
  const jobId = input.jobId;
57
57
 
58
- // ─── Step 1: Decompose requirement into candidates ─────────────────────────
58
+ // --- Step 1: Decompose requirement into candidates -------------------------
59
59
 
60
60
  const candidates = decomposeRequirement(input);
61
61
 
@@ -67,25 +67,25 @@ export async function compileTasks(
67
67
  );
68
68
  }
69
69
 
70
- // ─── Step 2: Assign file scope and ownership ─────────────────────────────
70
+ // --- Step 2: Assign file scope and ownership -----------------------------
71
71
 
72
72
  const tasksWithScope = assignFileScope(candidates, input.project);
73
73
 
74
- // ─── Step 3: Assign verification outputs ────────────────────────────────
74
+ // --- Step 3: Assign verification outputs --------------------------------
75
75
 
76
76
  const tasksWithVerification = assignVerification(
77
77
  tasksWithScope,
78
78
  input.requirement,
79
79
  );
80
80
 
81
- // ─── Step 4: Apply command policy ───────────────────────────────────
81
+ // --- Step 4: Apply command policy -----------------------------------
82
82
 
83
83
  const tasksWithPolicy = applyCommandPolicy(
84
84
  tasksWithVerification,
85
85
  input.project,
86
86
  );
87
87
 
88
- // ─── Step 5: Assign jobId, provider hints, and finalize ───────────────
88
+ // --- Step 5: Assign jobId, provider hints, and finalize ---------------
89
89
 
90
90
  const finalizedTasks = tasksWithPolicy.map((task) => ({
91
91
  ...task,
@@ -93,11 +93,11 @@ export async function compileTasks(
93
93
  preferredProvider: PROVIDER_HINTS[task.type]?.[0],
94
94
  }));
95
95
 
96
- // ─── Step 6: Build graph ─────────────────────────────────────────────
96
+ // --- Step 6: Build graph ---------------------------------------------
97
97
 
98
98
  const graph = buildGraph(finalizedTasks);
99
99
 
100
- // ─── Step 7: Validate ────────────────────────────────────────────────
100
+ // --- Step 7: Validate ------------------------------------------------
101
101
 
102
102
  assertNoEmptyObjectives(graph);
103
103
  assertNoCycles(graph);
@@ -26,7 +26,7 @@ export function decomposeRequirement(input: TaskCompileInput): TaskCandidate[] {
26
26
  const candidates: TaskCandidate[] = [];
27
27
  let priority = 1;
28
28
 
29
- // ─── Stage detection ────────────────────────────────────────────────
29
+ // --- Stage detection ------------------------------------------------
30
30
 
31
31
  const needsAnalysis =
32
32
  requirement.problemStatement.length > 200 || requirement.goals.length > 3;
@@ -37,7 +37,7 @@ export function decomposeRequirement(input: TaskCompileInput): TaskCandidate[] {
37
37
  (r) => r.risk === "destructive_operation",
38
38
  );
39
39
 
40
- // ─── Analysis ──────────────────────────────────────────────────────
40
+ // --- Analysis ------------------------------------------------------
41
41
 
42
42
  if (needsAnalysis) {
43
43
  candidates.push({
@@ -52,7 +52,7 @@ export function decomposeRequirement(input: TaskCompileInput): TaskCandidate[] {
52
52
  });
53
53
  }
54
54
 
55
- // ─── Design ────────────────────────────────────────────────────────
55
+ // --- Design --------------------------------------------------------
56
56
 
57
57
  if (needsDesign) {
58
58
  candidates.push({
@@ -67,7 +67,7 @@ export function decomposeRequirement(input: TaskCompileInput): TaskCandidate[] {
67
67
  });
68
68
  }
69
69
 
70
- // ─── Implementation ────────────────────────────────────────────────
70
+ // --- Implementation ------------------------------------------------
71
71
 
72
72
  for (let i = 0; i < requirement.goals.length; i++) {
73
73
  const goal = requirement.goals[i];
@@ -103,7 +103,7 @@ export function decomposeRequirement(input: TaskCompileInput): TaskCandidate[] {
103
103
  });
104
104
  }
105
105
 
106
- // ─── Unit tests ───────────────────────────────────────────────────
106
+ // --- Unit tests ---------------------------------------------------
107
107
 
108
108
  if (hasTests) {
109
109
  candidates.push({
@@ -118,7 +118,7 @@ export function decomposeRequirement(input: TaskCompileInput): TaskCandidate[] {
118
118
  });
119
119
  }
120
120
 
121
- // ─── E2E tests ───────────────────────────────────────────────────
121
+ // --- E2E tests ---------------------------------------------------
122
122
 
123
123
  if (hasBrowserWorkflow && input.insertE2E !== false) {
124
124
  candidates.push({
@@ -137,7 +137,7 @@ export function decomposeRequirement(input: TaskCompileInput): TaskCandidate[] {
137
137
  });
138
138
  }
139
139
 
140
- // ─── Review ────────────────────────────────────────────────────────
140
+ // --- Review --------------------------------------------------------
141
141
 
142
142
  const reviewDeps: string[] = [];
143
143
  if (hasTests) reviewDeps.push("test-0");
@@ -156,7 +156,7 @@ export function decomposeRequirement(input: TaskCompileInput): TaskCandidate[] {
156
156
  priority: priority++,
157
157
  });
158
158
 
159
- // ─── Repair ────────────────────────────────────────────────────────
159
+ // --- Repair --------------------------------------------------------
160
160
 
161
161
  if (needsRepair) {
162
162
  candidates.push({
@@ -171,7 +171,7 @@ export function decomposeRequirement(input: TaskCompileInput): TaskCandidate[] {
171
171
  });
172
172
  }
173
173
 
174
- // ─── Documentation ────────────────────────────────────────────────
174
+ // --- Documentation ------------------------------------------------
175
175
 
176
176
  candidates.push({
177
177
  id: "docs-0",
@@ -184,7 +184,7 @@ export function decomposeRequirement(input: TaskCompileInput): TaskCandidate[] {
184
184
  priority: priority++,
185
185
  });
186
186
 
187
- // ─── Enforce complexity threshold ─────────────────────────────────
187
+ // --- Enforce complexity threshold ---------------------------------
188
188
 
189
189
  const result: TaskCandidate[] = [];
190
190
  for (const c of candidates) {
@@ -198,7 +198,7 @@ export function decomposeRequirement(input: TaskCompileInput): TaskCandidate[] {
198
198
  return result;
199
199
  }
200
200
 
201
- // ─── Helpers ────────────────────────────────────────────────────────────
201
+ // --- Helpers ------------------------------------------------------------
202
202
 
203
203
  function estimateComplexity(text: string): ComplexityEstimate {
204
204
  const words = text.split(/\s+/).length;
@@ -62,7 +62,7 @@ export function assignFileScope(
62
62
  });
63
63
  }
64
64
 
65
- // ─── File inference by task type ───────────────────────────────────────
65
+ // --- File inference by task type ---------------------------------------
66
66
 
67
67
  function inferFiles(
68
68
  candidate: TaskCandidate,
@@ -120,7 +120,7 @@ function inferFiles(
120
120
  }
121
121
  }
122
122
 
123
- // ─── Extract file mentions from objective text ──────────────────────────
123
+ // --- Extract file mentions from objective text --------------------------
124
124
 
125
125
  function extractFileMentions(text: string): string[] {
126
126
  // Match common file/directory patterns in natural language:
@@ -135,7 +135,7 @@ function extractFileMentions(text: string): string[] {
135
135
  return [...new Set(matches)];
136
136
  }
137
137
 
138
- // ─── Ownership mode ────────────────────────────────────────────────────
138
+ // --- Ownership mode ----------------------------------------------------
139
139
 
140
140
  function getOwnershipMode(type: TaskType): FileOwnershipMode {
141
141
  // Parallel tasks with "exclusive" mode cannot modify the same files
@@ -155,7 +155,7 @@ function getOwnershipMode(type: TaskType): FileOwnershipMode {
155
155
  }
156
156
  }
157
157
 
158
- // ─── Exclusions ────────────────────────────────────────────────────────
158
+ // --- Exclusions --------------------------------------------------------
159
159
 
160
160
  function getExclusions(_type: TaskType, project: ProjectProfile): string[] {
161
161
  const exclusions: string[] = [
@@ -179,7 +179,7 @@ function getExclusions(_type: TaskType, project: ProjectProfile): string[] {
179
179
  return exclusions;
180
180
  }
181
181
 
182
- // ─── Capability inference ───────────────────────────────────────────────
182
+ // --- Capability inference -----------------------------------------------
183
183
 
184
184
  function inferCapabilities(type: TaskType): string[] {
185
185
  const caps: Record<TaskType, string[]> = {
@@ -195,7 +195,7 @@ function inferCapabilities(type: TaskType): string[] {
195
195
  return caps[type] ?? ["code"];
196
196
  }
197
197
 
198
- // ─── Extension detection ─────────────────────────────────────────────────
198
+ // --- Extension detection -------------------------------------------------
199
199
 
200
200
  function detectSourceExtensions(project: ProjectProfile): string[] {
201
201
  const frameworks = project.frameworks ?? [];
@@ -21,7 +21,7 @@ export function buildGraph(tasks: CompiledTask[]): TaskGraph {
21
21
  taskMap.set(task.id, task);
22
22
  }
23
23
 
24
- // ─── Compute dependents ────────────────────────────────────────────
24
+ // --- Compute dependents --------------------------------------------
25
25
 
26
26
  const dependents = new Map<string, string[]>();
27
27
  for (const task of tasks) {
@@ -34,7 +34,7 @@ export function buildGraph(tasks: CompiledTask[]): TaskGraph {
34
34
  }
35
35
  }
36
36
 
37
- // ─── Find roots and terminals ─────────────────────────────────────
37
+ // --- Find roots and terminals -------------------------------------
38
38
 
39
39
  const roots = tasks
40
40
  .filter((t) => t.dependencies.length === 0)
@@ -44,7 +44,7 @@ export function buildGraph(tasks: CompiledTask[]): TaskGraph {
44
44
  .filter((t) => (dependents.get(t.id)?.length ?? 0) === 0)
45
45
  .map((t) => t.id);
46
46
 
47
- // ─── Deterministic topological sort ────────────────────────────────
47
+ // --- Deterministic topological sort --------------------------------
48
48
 
49
49
  const order = topologicalSort([...tasks], taskMap);
50
50
 
@@ -57,7 +57,7 @@ export function buildGraph(tasks: CompiledTask[]): TaskGraph {
57
57
  };
58
58
  }
59
59
 
60
- // ─── Kahn's topological sort with deterministic tiebreaking ─────────────────
60
+ // --- Kahn's topological sort with deterministic tiebreaking -----------------
61
61
 
62
62
  function topologicalSort(
63
63
  tasks: CompiledTask[],
@@ -121,7 +121,7 @@ function topologicalSort(
121
121
  return result;
122
122
  }
123
123
 
124
- // ─── Dependency depth helper ───────────────────────────────────────────────
124
+ // --- Dependency depth helper -----------------------------------------------
125
125
 
126
126
  function countDepth(
127
127
  taskId: string,
@@ -137,7 +137,7 @@ function countDepth(
137
137
  return max + 1;
138
138
  }
139
139
 
140
- // ─── Dependency map (for use by topologicalSort) ───────────────────────────
140
+ // --- Dependency map (for use by topologicalSort) ---------------------------
141
141
 
142
142
  const dependents = new Map<string, string[]>();
143
143
 
@@ -13,15 +13,15 @@
13
13
  * });
14
14
  */
15
15
 
16
- // ─── SDK Version ───────────────────────────────────────────────────────
16
+ // --- SDK Version -------------------------------------------------------
17
17
 
18
18
  export { SDK_VERSION } from "./types.js";
19
19
 
20
- // ─── Main API ─────────────────────────────────────────────────────────
20
+ // --- Main API ---------------------------------------------------------
21
21
 
22
22
  export { compileTasks } from "./compiler.js";
23
23
 
24
- // ─── Exported types (for consumers) ────────────────────────────────────
24
+ // --- Exported types (for consumers) ------------------------------------
25
25
 
26
26
  export type {
27
27
  CompiledTask,
@@ -4,11 +4,11 @@
4
4
  * Core types for task decomposition, DAG construction, and verification.
5
5
  */
6
6
 
7
- // ─── SDK Version ───────────────────────────────────────────────────────
7
+ // --- SDK Version -------------------------------------------------------
8
8
 
9
9
  export const SDK_VERSION = "1.0.0" as const;
10
10
 
11
- // ─── Task Types ────────────────────────────────────────────────────────
11
+ // --- Task Types --------------------------------------------------------
12
12
 
13
13
  export type TaskType =
14
14
  | "analysis"
@@ -22,7 +22,7 @@ export type TaskType =
22
22
 
23
23
  export type ComplexityEstimate = 1 | 2 | 3 | 5 | 8;
24
24
 
25
- // ─── Task Output ────────────────────────────────────────────────────────
25
+ // --- Task Output --------------------------------------------------------
26
26
 
27
27
  export interface TaskOutput {
28
28
  kind: "file" | "test_result" | "report" | "schema" | "diff" | "verification";
@@ -31,7 +31,7 @@ export interface TaskOutput {
31
31
  required: boolean;
32
32
  }
33
33
 
34
- // ─── Compiled Task ─────────────────────────────────────────────────────
34
+ // --- Compiled Task -----------------------------------------------------
35
35
 
36
36
  export interface CompiledTask {
37
37
  id: string;
@@ -53,7 +53,7 @@ export interface CompiledTask {
53
53
  priority?: number;
54
54
  }
55
55
 
56
- // ─── File Ownership ────────────────────────────────────────────────────
56
+ // --- File Ownership ----------------------------------------------------
57
57
 
58
58
  export type FileOwnershipMode = "exclusive" | "shared_read";
59
59
 
@@ -64,7 +64,7 @@ export interface FileOwnership {
64
64
  mode: FileOwnershipMode;
65
65
  }
66
66
 
67
- // ─── Task Graph ────────────────────────────────────────────────────────
67
+ // --- Task Graph --------------------------------------------------------
68
68
 
69
69
  export interface TaskGraph {
70
70
  jobId: string;
@@ -74,7 +74,7 @@ export interface TaskGraph {
74
74
  topologicalOrder: string[];
75
75
  }
76
76
 
77
- // ─── Standard Engineering Flow ────────────────────────────────────────
77
+ // --- Standard Engineering Flow ----------------------------------------
78
78
 
79
79
  export const STANDARD_FLOW: TaskType[] = [
80
80
  "analysis",
@@ -87,7 +87,7 @@ export const STANDARD_FLOW: TaskType[] = [
87
87
  "documentation",
88
88
  ];
89
89
 
90
- // ─── Provider Hints ───────────────────────────────────────────────────
90
+ // --- Provider Hints ---------------------------------------------------
91
91
 
92
92
  export const PROVIDER_HINTS: Partial<Record<TaskType, string[]>> = {
93
93
  analysis: ["codex", "gpt", "glm"],
@@ -100,7 +100,7 @@ export const PROVIDER_HINTS: Partial<Record<TaskType, string[]>> = {
100
100
  documentation: ["codex", "gpt"],
101
101
  };
102
102
 
103
- // ─── Default Command Policy ─────────────────────────────────────────────
103
+ // --- Default Command Policy ---------------------------------------------
104
104
 
105
105
  export const PROHIBITED_BY_DEFAULT: string[] = [
106
106
  "git commit",
@@ -120,7 +120,7 @@ export const PROHIBITED_BY_DEFAULT: string[] = [
120
120
  "TRUNCATE",
121
121
  ];
122
122
 
123
- // ─── Forward-declared types (from other workspace packages) ─────────────
123
+ // --- Forward-declared types (from other workspace packages) -------------
124
124
  // In production these are imported from @pi-harness/requirement-compiler and @pi/project-analyzer.
125
125
  // Declaring them as interfaces here allows the type checker to resolve without building those packages first.
126
126
 
@@ -149,7 +149,7 @@ export interface ProjectProfile {
149
149
  }>;
150
150
  }
151
151
 
152
- // ─── Compiler Input ────────────────────────────────────────────────────
152
+ // --- Compiler Input ----------------------------------------------------
153
153
 
154
154
  export interface TaskCompileInput {
155
155
  requirement: CompiledRequirement;
@@ -167,7 +167,7 @@ export interface DependencyInfo {
167
167
  files: string[];
168
168
  }
169
169
 
170
- // ─── Candidate Task ───────────────────────────────────────────────────
170
+ // --- Candidate Task ---------------------------------------------------
171
171
 
172
172
  export interface TaskCandidate {
173
173
  id: string;
@@ -180,7 +180,7 @@ export interface TaskCandidate {
180
180
  priority?: number;
181
181
  }
182
182
 
183
- // ─── Compiler Configuration ──────────────────────────────────────────────
183
+ // --- Compiler Configuration ----------------------------------------------
184
184
 
185
185
  export interface TaskCompilerConfig {
186
186
  insertE2E: boolean;
@@ -196,7 +196,7 @@ export const DEFAULT_TASK_COMPILER_CONFIG: TaskCompilerConfig = {
196
196
  clock: () => new Date(),
197
197
  };
198
198
 
199
- // ─── Compiler Errors ─────────────────────────────────────────────────────
199
+ // --- Compiler Errors -----------------------------------------------------
200
200
 
201
201
  export enum TaskCompilerErrorCode {
202
202
  CYCLIC_DEPENDENCY = "CYCLIC_DEPENDENCY",
@@ -167,7 +167,7 @@ export function assertEveryCriterionAssigned(
167
167
  }
168
168
  }
169
169
 
170
- // ─── File overlap detection ──────────────────────────────────────────
170
+ // --- File overlap detection ------------------------------------------
171
171
 
172
172
  function findFileOverlap(
173
173
  a: import("./types.js").FileOwnership,
@@ -195,7 +195,7 @@ function patternSubsumes(parent: string, child: string): boolean {
195
195
  return child.startsWith(`${p}/`) || child.startsWith(p);
196
196
  }
197
197
 
198
- // ─── Dependency helpers ────────────────────────────────────────────────
198
+ // --- Dependency helpers ------------------------------------------------
199
199
 
200
200
  function getAllDependencies(taskId: string, graph: TaskGraph): Set<string> {
201
201
  const taskMap = new Map(graph.tasks.map((t) => [t.id, t]));
@@ -21,7 +21,7 @@ export function assignVerification(
21
21
  });
22
22
  }
23
23
 
24
- // ─── Output builders by task type ─────────────────────────────────────
24
+ // --- Output builders by task type -------------------------------------
25
25
 
26
26
  function buildOutputs(
27
27
  task: CompiledTask,
@@ -64,7 +64,7 @@ function buildOutputs(
64
64
  }
65
65
  }
66
66
 
67
- // ─── Type-specific output builders ───────────────────────────────────
67
+ // --- Type-specific output builders -----------------------------------
68
68
 
69
69
  function buildImplementationOutputs(
70
70
  task: CompiledTask,