@aperant/framework 0.8.1 → 0.8.6

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 (308) hide show
  1. package/CHANGELOG.md +443 -1
  2. package/agents/apt-planner.md +39 -7
  3. package/dist/cli/commands/adr.mjs +1 -1
  4. package/dist/cli/commands/audit-branch-current.d.mts +25 -0
  5. package/dist/cli/commands/audit-branch-current.d.mts.map +1 -0
  6. package/dist/cli/commands/audit-branch-current.mjs +252 -0
  7. package/dist/cli/commands/audit-branch-current.mjs.map +1 -0
  8. package/dist/cli/commands/audit.d.mts.map +1 -1
  9. package/dist/cli/commands/audit.mjs +13 -2
  10. package/dist/cli/commands/audit.mjs.map +1 -1
  11. package/dist/cli/commands/check-version.d.mts.map +1 -1
  12. package/dist/cli/commands/check-version.mjs +19 -1
  13. package/dist/cli/commands/check-version.mjs.map +1 -1
  14. package/dist/cli/commands/context.mjs +3 -3
  15. package/dist/cli/commands/context.mjs.map +1 -1
  16. package/dist/cli/commands/coverage-check.d.mts.map +1 -1
  17. package/dist/cli/commands/coverage-check.mjs +74 -7
  18. package/dist/cli/commands/coverage-check.mjs.map +1 -1
  19. package/dist/cli/commands/detect-runtime.d.mts +6 -0
  20. package/dist/cli/commands/detect-runtime.d.mts.map +1 -0
  21. package/dist/cli/commands/detect-runtime.mjs +142 -0
  22. package/dist/cli/commands/detect-runtime.mjs.map +1 -0
  23. package/dist/cli/commands/driver-doctor.d.mts +29 -0
  24. package/dist/cli/commands/driver-doctor.d.mts.map +1 -0
  25. package/dist/cli/commands/driver-doctor.mjs +291 -0
  26. package/dist/cli/commands/driver-doctor.mjs.map +1 -0
  27. package/dist/cli/commands/gate.mjs +14 -0
  28. package/dist/cli/commands/gate.mjs.map +1 -1
  29. package/dist/cli/commands/init.d.mts.map +1 -1
  30. package/dist/cli/commands/init.mjs +9 -6
  31. package/dist/cli/commands/init.mjs.map +1 -1
  32. package/dist/cli/commands/install-from-source.d.mts +2 -0
  33. package/dist/cli/commands/install-from-source.d.mts.map +1 -0
  34. package/dist/cli/commands/install-from-source.mjs +2 -0
  35. package/dist/cli/commands/install-from-source.mjs.map +1 -0
  36. package/dist/cli/commands/modes.mjs +1 -1
  37. package/dist/cli/commands/route.d.mts.map +1 -1
  38. package/dist/cli/commands/route.mjs +38 -1
  39. package/dist/cli/commands/route.mjs.map +1 -1
  40. package/dist/cli/commands/triage.mjs +1 -1
  41. package/dist/cli/config/load.d.mts.map +1 -1
  42. package/dist/cli/config/load.mjs +9 -3
  43. package/dist/cli/config/load.mjs.map +1 -1
  44. package/dist/cli/coordination/auto-emit-artifact-ready.mjs +1 -1
  45. package/dist/cli/coordination/event-schema.d.mts.map +1 -1
  46. package/dist/cli/coordination/event-schema.mjs +18 -0
  47. package/dist/cli/coordination/event-schema.mjs.map +1 -1
  48. package/dist/cli/coverage-check/user-outcomes.d.mts +84 -0
  49. package/dist/cli/coverage-check/user-outcomes.d.mts.map +1 -0
  50. package/dist/cli/coverage-check/user-outcomes.mjs +265 -0
  51. package/dist/cli/coverage-check/user-outcomes.mjs.map +1 -0
  52. package/dist/cli/dispatch.d.mts.map +1 -1
  53. package/dist/cli/dispatch.mjs +18 -1
  54. package/dist/cli/dispatch.mjs.map +1 -1
  55. package/dist/cli/gate/context.d.mts +1 -0
  56. package/dist/cli/gate/context.d.mts.map +1 -1
  57. package/dist/cli/gate/context.mjs +14 -1
  58. package/dist/cli/gate/context.mjs.map +1 -1
  59. package/dist/cli/gate/gates/consistency-check.d.mts +1 -0
  60. package/dist/cli/gate/gates/consistency-check.d.mts.map +1 -1
  61. package/dist/cli/gate/gates/consistency-check.mjs +1 -0
  62. package/dist/cli/gate/gates/consistency-check.mjs.map +1 -1
  63. package/dist/cli/gate/gates/review-clean.d.mts +1 -0
  64. package/dist/cli/gate/gates/review-clean.d.mts.map +1 -1
  65. package/dist/cli/gate/gates/review-clean.mjs +1 -0
  66. package/dist/cli/gate/gates/review-clean.mjs.map +1 -1
  67. package/dist/cli/gate/gates/verify-approved.d.mts +1 -0
  68. package/dist/cli/gate/gates/verify-approved.d.mts.map +1 -1
  69. package/dist/cli/gate/gates/verify-approved.mjs +1 -0
  70. package/dist/cli/gate/gates/verify-approved.mjs.map +1 -1
  71. package/dist/cli/gate/registry.d.mts.map +1 -1
  72. package/dist/cli/gate/registry.mjs +9 -1
  73. package/dist/cli/gate/registry.mjs.map +1 -1
  74. package/dist/cli/host/detect.mjs +1 -1
  75. package/dist/cli/host/detect.mjs.map +1 -1
  76. package/dist/cli/install/find-workspace-framework-version.d.mts +16 -0
  77. package/dist/cli/install/find-workspace-framework-version.d.mts.map +1 -0
  78. package/dist/cli/install/find-workspace-framework-version.mjs +85 -0
  79. package/dist/cli/install/find-workspace-framework-version.mjs.map +1 -0
  80. package/dist/cli/install/install-from-source.d.mts +10 -0
  81. package/dist/cli/install/install-from-source.d.mts.map +1 -0
  82. package/dist/cli/install/install-from-source.mjs +271 -0
  83. package/dist/cli/install/install-from-source.mjs.map +1 -0
  84. package/dist/cli/install/install-kernel.d.mts.map +1 -1
  85. package/dist/cli/install/install-kernel.mjs +24 -0
  86. package/dist/cli/install/install-kernel.mjs.map +1 -1
  87. package/dist/cli/install/legacy-paths.d.mts +33 -11
  88. package/dist/cli/install/legacy-paths.d.mts.map +1 -1
  89. package/dist/cli/install/legacy-paths.mjs +163 -39
  90. package/dist/cli/install/legacy-paths.mjs.map +1 -1
  91. package/dist/cli/install/runtime-detect.mjs +1 -1
  92. package/dist/cli/install/runtime-detect.mjs.map +1 -1
  93. package/dist/cli/install/runtime-migrate.d.mts +34 -14
  94. package/dist/cli/install/runtime-migrate.d.mts.map +1 -1
  95. package/dist/cli/install/runtime-migrate.mjs +63 -30
  96. package/dist/cli/install/runtime-migrate.mjs.map +1 -1
  97. package/dist/cli/install/transforms/codex.d.mts.map +1 -1
  98. package/dist/cli/install/transforms/codex.mjs +28 -17
  99. package/dist/cli/install/transforms/codex.mjs.map +1 -1
  100. package/dist/cli/skill-author/contract.mjs +2 -2
  101. package/dist/cli/skill-author/contract.mjs.map +1 -1
  102. package/dist/cli/verify-proof/audit.d.mts +34 -0
  103. package/dist/cli/verify-proof/audit.d.mts.map +1 -0
  104. package/dist/cli/verify-proof/audit.mjs +53 -0
  105. package/dist/cli/verify-proof/audit.mjs.map +1 -0
  106. package/dist/cli/verify-proof/exec.d.mts +20 -0
  107. package/dist/cli/verify-proof/exec.d.mts.map +1 -0
  108. package/dist/cli/verify-proof/exec.mjs +74 -0
  109. package/dist/cli/verify-proof/exec.mjs.map +1 -0
  110. package/dist/cli/verify-proof/idl/index.d.mts +2 -0
  111. package/dist/cli/verify-proof/idl/index.d.mts.map +1 -0
  112. package/dist/cli/verify-proof/idl/index.mjs +13 -0
  113. package/dist/cli/verify-proof/idl/index.mjs.map +1 -0
  114. package/dist/cli/verify-proof/idl/types.d.ts +10 -0
  115. package/dist/cli/verify-proof/idl/types.d.ts.map +1 -0
  116. package/dist/cli/verify-proof/idl/types.js +10 -0
  117. package/dist/cli/verify-proof/idl/types.js.map +1 -0
  118. package/dist/cli/verify-proof/manifest-validator.d.mts +19 -0
  119. package/dist/cli/verify-proof/manifest-validator.d.mts.map +1 -0
  120. package/dist/cli/verify-proof/manifest-validator.mjs +182 -0
  121. package/dist/cli/verify-proof/manifest-validator.mjs.map +1 -0
  122. package/dist/cli/verify-proof/resolver.d.mts +105 -0
  123. package/dist/cli/verify-proof/resolver.d.mts.map +1 -0
  124. package/dist/cli/verify-proof/resolver.mjs +320 -0
  125. package/dist/cli/verify-proof/resolver.mjs.map +1 -0
  126. package/dist/cli/verify-proof/runtime-detect.d.mts +30 -0
  127. package/dist/cli/verify-proof/runtime-detect.d.mts.map +1 -0
  128. package/dist/cli/verify-proof/runtime-detect.mjs +209 -0
  129. package/dist/cli/verify-proof/runtime-detect.mjs.map +1 -0
  130. package/dist/cli/verify-proof/trust.d.mts +70 -0
  131. package/dist/cli/verify-proof/trust.d.mts.map +1 -0
  132. package/dist/cli/verify-proof/trust.mjs +174 -0
  133. package/dist/cli/verify-proof/trust.mjs.map +1 -0
  134. package/dist/driver-sdk/conformance.d.ts +41 -0
  135. package/dist/driver-sdk/conformance.d.ts.map +1 -0
  136. package/dist/driver-sdk/conformance.js +123 -0
  137. package/dist/driver-sdk/conformance.js.map +1 -0
  138. package/dist/driver-sdk/errors.d.ts +75 -0
  139. package/dist/driver-sdk/errors.d.ts.map +1 -0
  140. package/dist/driver-sdk/errors.js +80 -0
  141. package/dist/driver-sdk/errors.js.map +1 -0
  142. package/dist/driver-sdk/idl.d.ts +221 -0
  143. package/dist/driver-sdk/idl.d.ts.map +1 -0
  144. package/dist/driver-sdk/idl.js +140 -0
  145. package/dist/driver-sdk/idl.js.map +1 -0
  146. package/dist/driver-sdk/index.d.ts +28 -0
  147. package/dist/driver-sdk/index.d.ts.map +1 -0
  148. package/dist/driver-sdk/index.js +28 -0
  149. package/dist/driver-sdk/index.js.map +1 -0
  150. package/dist/driver-sdk/manifest.d.ts +93 -0
  151. package/dist/driver-sdk/manifest.d.ts.map +1 -0
  152. package/dist/driver-sdk/manifest.js +12 -0
  153. package/dist/driver-sdk/manifest.js.map +1 -0
  154. package/dist/driver-sdk/retry.d.ts +33 -0
  155. package/dist/driver-sdk/retry.d.ts.map +1 -0
  156. package/dist/driver-sdk/retry.js +50 -0
  157. package/dist/driver-sdk/retry.js.map +1 -0
  158. package/dist/plugin/.claude-plugin/plugin.json +4 -1
  159. package/dist/plugin/agents/apt-planner.md +39 -7
  160. package/dist/plugin/skills/apt/SKILL.md +75 -6
  161. package/dist/plugin/skills/apt-caveman/SKILL.md +64 -0
  162. package/dist/plugin/skills/apt-debug/SKILL.md +36 -4
  163. package/dist/plugin/skills/apt-debug/appendices/diagnose-discipline.md +2 -11
  164. package/dist/plugin/skills/apt-discuss/SKILL.md +4 -4
  165. package/dist/plugin/skills/apt-discuss/appendices/grill-discipline.md +2 -11
  166. package/dist/plugin/skills/apt-discuss/appendices/zoom-out-helper.md +0 -8
  167. package/dist/plugin/skills/apt-execute/SKILL.md +27 -4
  168. package/dist/plugin/skills/apt-execute/appendices/tdd-mode.md +2 -10
  169. package/dist/plugin/skills/apt-fan-out/SKILL.md +36 -1
  170. package/dist/plugin/skills/apt-handoff/SKILL.md +228 -0
  171. package/dist/plugin/skills/apt-improve/DEEPENING.md +0 -8
  172. package/dist/plugin/skills/apt-improve/INTERFACE-DESIGN.md +0 -8
  173. package/dist/plugin/skills/apt-improve/LANGUAGE.md +0 -8
  174. package/dist/plugin/skills/apt-improve/SKILL.md +4 -4
  175. package/dist/plugin/skills/apt-plan/SKILL.md +73 -5
  176. package/dist/plugin/skills/apt-plan/adapters/conductor.md +1 -1
  177. package/dist/plugin/skills/apt-pr-review/SKILL.md +1 -1
  178. package/dist/plugin/skills/apt-prototype/LOGIC.md +0 -8
  179. package/dist/plugin/skills/apt-prototype/SKILL.md +4 -4
  180. package/dist/plugin/skills/apt-prototype/UI.md +0 -8
  181. package/dist/plugin/skills/apt-quick/SKILL.md +31 -1
  182. package/dist/plugin/skills/apt-research/SKILL.md +526 -0
  183. package/dist/plugin/skills/apt-research/appendices/budget-loop.md +397 -0
  184. package/dist/plugin/skills/apt-research/appendices/claim-graph-schema.md +206 -0
  185. package/dist/plugin/skills/apt-research/appendices/domain-tools.md +236 -0
  186. package/dist/plugin/skills/apt-resume/SKILL.md +54 -31
  187. package/dist/plugin/skills/apt-run/SKILL.md +114 -16
  188. package/dist/plugin/skills/apt-setup/SKILL.md +97 -8
  189. package/dist/plugin/skills/apt-ship/SKILL.md +165 -9
  190. package/dist/plugin/skills/apt-spar/SKILL.md +84 -23
  191. package/dist/plugin/skills/apt-triage/AGENT-BRIEF.md +0 -8
  192. package/dist/plugin/skills/apt-triage/OUT-OF-SCOPE.md +0 -7
  193. package/dist/plugin/skills/apt-triage/SKILL.md +2 -2
  194. package/dist/plugin/skills/apt-update/SKILL.md +74 -17
  195. package/dist/plugin/skills/apt-verify-proof/SKILL.md +87 -1
  196. package/dist/plugin/skills/apt-zoom-out/SKILL.md +3 -3
  197. package/dist/schemas/quick-task.d.ts +17 -17
  198. package/dist/schemas/quick-task.d.ts.map +1 -1
  199. package/dist/schemas/quick-task.js +2 -2
  200. package/dist/schemas/quick-task.js.map +1 -1
  201. package/dist/types/config.d.ts +33 -0
  202. package/dist/types/config.d.ts.map +1 -1
  203. package/dist/types/state.d.ts +1 -1
  204. package/dist/types/state.d.ts.map +1 -1
  205. package/dist/types/task-record.d.ts +1 -1
  206. package/dist/types/task-record.d.ts.map +1 -1
  207. package/drivers/.gitkeep +0 -0
  208. package/drivers/api/README.md +40 -0
  209. package/drivers/api/driver.mjs +59 -0
  210. package/drivers/api/manifest.json +26 -0
  211. package/drivers/browser/README.md +105 -0
  212. package/drivers/browser/driver.mjs +134 -0
  213. package/drivers/browser/manifest.json +35 -0
  214. package/drivers/cli/README.md +44 -0
  215. package/drivers/cli/driver.mjs +62 -0
  216. package/drivers/cli/manifest.json +28 -0
  217. package/drivers/electron/README.md +64 -0
  218. package/drivers/electron/driver.mjs +87 -0
  219. package/drivers/electron/manifest.json +37 -0
  220. package/package.json +138 -133
  221. package/prompts/planner.md +1 -1
  222. package/prompts/spec_writer.md +1 -1
  223. package/skills/apt/SKILL.md +75 -6
  224. package/skills/apt-caveman/SKILL.md +64 -0
  225. package/skills/apt-debug/SKILL.md +36 -4
  226. package/skills/apt-debug/appendices/diagnose-discipline.md +2 -11
  227. package/skills/apt-discuss/SKILL.md +4 -4
  228. package/skills/apt-discuss/appendices/grill-discipline.md +2 -11
  229. package/skills/apt-discuss/appendices/zoom-out-helper.md +0 -8
  230. package/skills/apt-execute/SKILL.md +27 -4
  231. package/skills/apt-execute/appendices/tdd-mode.md +2 -10
  232. package/skills/apt-fan-out/SKILL.md +36 -1
  233. package/skills/apt-handoff/SKILL.md +228 -0
  234. package/skills/apt-improve/DEEPENING.md +0 -8
  235. package/skills/apt-improve/INTERFACE-DESIGN.md +0 -8
  236. package/skills/apt-improve/LANGUAGE.md +0 -8
  237. package/skills/apt-improve/SKILL.md +4 -4
  238. package/skills/apt-plan/SKILL.md +73 -5
  239. package/skills/apt-plan/adapters/conductor.md +1 -1
  240. package/skills/apt-planner.md +17 -1
  241. package/skills/apt-pr-review/SKILL.md +1 -1
  242. package/skills/apt-prototype/LOGIC.md +0 -8
  243. package/skills/apt-prototype/SKILL.md +4 -4
  244. package/skills/apt-prototype/UI.md +0 -8
  245. package/skills/apt-quick/SKILL.md +31 -1
  246. package/skills/apt-research/SKILL.md +526 -0
  247. package/skills/apt-research/appendices/budget-loop.md +397 -0
  248. package/skills/apt-research/appendices/claim-graph-schema.md +206 -0
  249. package/skills/apt-research/appendices/domain-tools.md +236 -0
  250. package/skills/apt-resume/SKILL.md +54 -31
  251. package/skills/apt-run/SKILL.md +114 -16
  252. package/skills/apt-setup/SKILL.md +97 -8
  253. package/skills/apt-ship/SKILL.md +165 -9
  254. package/skills/apt-spar/SKILL.md +84 -23
  255. package/skills/apt-triage/AGENT-BRIEF.md +0 -8
  256. package/skills/apt-triage/OUT-OF-SCOPE.md +0 -7
  257. package/skills/apt-triage/SKILL.md +2 -2
  258. package/skills/apt-update/SKILL.md +74 -17
  259. package/skills/apt-verify-proof/SKILL.md +87 -1
  260. package/skills/apt-zoom-out/SKILL.md +3 -3
  261. package/src/cli/commands/adr.mjs +1 -1
  262. package/src/cli/commands/audit-branch-current.mjs +250 -0
  263. package/src/cli/commands/audit.mjs +13 -2
  264. package/src/cli/commands/check-version.mjs +20 -1
  265. package/src/cli/commands/context.mjs +3 -3
  266. package/src/cli/commands/coverage-check.mjs +126 -44
  267. package/src/cli/commands/detect-runtime.mjs +143 -0
  268. package/src/cli/commands/driver-doctor.mjs +294 -0
  269. package/src/cli/commands/gate.mjs +15 -0
  270. package/src/cli/commands/init.mjs +9 -6
  271. package/src/cli/commands/install-from-source.mjs +1 -0
  272. package/src/cli/commands/modes.mjs +1 -1
  273. package/src/cli/commands/route.mjs +42 -1
  274. package/src/cli/commands/triage.mjs +1 -1
  275. package/src/cli/config/load.mjs +9 -3
  276. package/src/cli/coordination/auto-emit-artifact-ready.mjs +1 -1
  277. package/src/cli/coordination/event-schema.mjs +19 -0
  278. package/src/cli/coverage-check/user-outcomes.mjs +273 -0
  279. package/src/cli/dispatch.mjs +17 -1
  280. package/src/cli/gate/context.mjs +20 -1
  281. package/src/cli/gate/gates/consistency-check.mjs +1 -0
  282. package/src/cli/gate/gates/review-clean.mjs +1 -0
  283. package/src/cli/gate/gates/verify-approved.mjs +1 -0
  284. package/src/cli/gate/registry.mjs +11 -1
  285. package/src/cli/host/detect.mjs +1 -1
  286. package/src/cli/install/find-workspace-framework-version.mjs +88 -0
  287. package/src/cli/install/install-from-source.mjs +276 -0
  288. package/src/cli/install/install-kernel.mjs +24 -0
  289. package/src/cli/install/legacy-paths.mjs +164 -39
  290. package/src/cli/install/runtime-detect.mjs +1 -1
  291. package/src/cli/install/runtime-migrate.mjs +63 -30
  292. package/src/cli/install/transforms/codex.mjs +26 -17
  293. package/src/cli/skill-author/contract.mjs +2 -2
  294. package/src/cli/verify-proof/.gitkeep +0 -0
  295. package/src/cli/verify-proof/audit.mjs +55 -0
  296. package/src/cli/verify-proof/exec.mjs +74 -0
  297. package/src/cli/verify-proof/idl/index.mjs +23 -0
  298. package/src/cli/verify-proof/idl/types.ts +42 -0
  299. package/src/cli/verify-proof/manifest-schema.json +212 -0
  300. package/src/cli/verify-proof/manifest-validator.mjs +184 -0
  301. package/src/cli/verify-proof/resolver.mjs +330 -0
  302. package/src/cli/verify-proof/runtime-detect.mjs +211 -0
  303. package/src/cli/verify-proof/trust.mjs +187 -0
  304. package/templates/adr-format.md +0 -8
  305. package/templates/aperant-claude-md-appendix.md +1 -1
  306. package/templates/context-format.md +1 -9
  307. package/templates/proof-verification.md +51 -8
  308. package/workflows/verify-proof.md +130 -19
@@ -1 +1 @@
1
- {"version":3,"file":"review-clean.mjs","sourceRoot":"","sources":["../../../../src/cli/gate/gates/review-clean.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,uEAAuE;AACvE,oEAAoE;AACpE,aAAa;AACb,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;AAEzD,MAAM,IAAI,GAAG;IACZ,EAAE,EAAE,cAAc;IAClB,WAAW,EAAE,2EAA2E;IACxF,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,CAAC,MAAM,CAAC;IAChB,KAAK,CAAC,KAAK,CAAC,GAAG;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,CAAA;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO;gBACN,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,iDAAiD;gBACzD,MAAM;aACN,CAAA;QACF,CAAC;QACD,IAAI,GAAG,CAAA;QACP,IAAI,CAAC;YACJ,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO;gBACN,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,+BAA+B,GAAG,CAAC,OAAO,EAAE;gBACpD,MAAM;aACN,CAAA;QACF,CAAC;QACD,8DAA8D;QAC9D,6DAA6D;QAC7D,mEAAmE;QACnE,8DAA8D;QAC9D,gEAAgE;QAChE,oDAAoD;QACpD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;QACjD,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,CAC5F,CAAA;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACN,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,sDAAsD;gBAClF,QAAQ,EAAE;oBACT,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAClC,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI;wBAChB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI;qBACtB,CAAC,CAAC;iBACH;gBACD,MAAM;aACN,CAAA;QACF,CAAC;QACD,OAAO;YACN,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,0DAA0D,UAAU,CAAC,MAAM,SAAS;YAC5F,MAAM;SACN,CAAA;IACF,CAAC;CACD,CAAA;AAED,YAAY,CAAC,IAAI,CAAC,CAAA;AAClB,eAAe,IAAI,CAAA"}
1
+ {"version":3,"file":"review-clean.mjs","sourceRoot":"","sources":["../../../../src/cli/gate/gates/review-clean.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,uEAAuE;AACvE,oEAAoE;AACpE,aAAa;AACb,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;AAEzD,MAAM,IAAI,GAAG;IACZ,EAAE,EAAE,cAAc;IAClB,WAAW,EAAE,2EAA2E;IACxF,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,CAAC,MAAM,CAAC;IAChB,kBAAkB,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,KAAK,eAAe;IAC5D,KAAK,CAAC,KAAK,CAAC,GAAG;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;QAC7C,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,CAAA;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,OAAO;gBACN,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,iDAAiD;gBACzD,MAAM;aACN,CAAA;QACF,CAAC;QACD,IAAI,GAAG,CAAA;QACP,IAAI,CAAC;YACJ,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAA;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,OAAO;gBACN,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,+BAA+B,GAAG,CAAC,OAAO,EAAE;gBACpD,MAAM;aACN,CAAA;QACF,CAAC;QACD,8DAA8D;QAC9D,6DAA6D;QAC7D,mEAAmE;QACnE,8DAA8D;QAC9D,gEAAgE;QAChE,oDAAoD;QACpD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;QACjD,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,CAC5F,CAAA;QACD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACN,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,sDAAsD;gBAClF,QAAQ,EAAE;oBACT,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAClC,QAAQ,EAAE,CAAC,CAAC,QAAQ;wBACpB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,IAAI;wBAChB,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI;qBACtB,CAAC,CAAC;iBACH;gBACD,MAAM;aACN,CAAA;QACF,CAAC;QACD,OAAO;YACN,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,0DAA0D,UAAU,CAAC,MAAM,SAAS;YAC5F,MAAM;SACN,CAAA;IACF,CAAC;CACD,CAAA;AAED,YAAY,CAAC,IAAI,CAAC,CAAA;AAClB,eAAe,IAAI,CAAA"}
@@ -4,6 +4,7 @@ declare namespace gate {
4
4
  let description: string;
5
5
  let severity: string;
6
6
  let skills: string[];
7
+ function applies_to_profile(ctx: any): boolean;
7
8
  function check(ctx: any): Promise<{
8
9
  status: string;
9
10
  reason: string;
@@ -1 +1 @@
1
- {"version":3,"file":"verify-approved.d.mts","sourceRoot":"","sources":["../../../../src/cli/gate/gates/verify-approved.mjs"],"names":[],"mappings":";;;;;;IAuDC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqFC"}
1
+ {"version":3,"file":"verify-approved.d.mts","sourceRoot":"","sources":["../../../../src/cli/gate/gates/verify-approved.mjs"],"names":[],"mappings":";;;;;;IAuDqB,+CAAwC;IAC5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqFC"}
@@ -52,6 +52,7 @@ const gate = {
52
52
  description: 'qa_signoff.json exists with verdict === "approved" (or "approved-with-notes" when configured)',
53
53
  severity: 'blocking',
54
54
  skills: ['ship'],
55
+ applies_to_profile: (ctx) => ctx.profile === 'full-pipeline',
55
56
  async check(ctx) {
56
57
  const path = join(ctx.taskDir, 'qa_signoff.json');
57
58
  const inputs = [path];
@@ -1 +1 @@
1
- {"version":3,"file":"verify-approved.mjs","sourceRoot":"","sources":["../../../../src/cli/gate/gates/verify-approved.mjs"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify-approved.mjs","sourceRoot":"","sources":["../../../../src/cli/gate/gates/verify-approved.mjs"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.mts","sourceRoot":"","sources":["../../../src/cli/gate/registry.mjs"],"names":[],"mappings":"AAgCA;;;;;GAKG;AACH,6CAuBC;AAED;;;;;GAKG;AACH,iDAIC;AAED;;;;;GAKG;AACH,oDAEC;AAED;;;;GAIG;AACH,sCAEC;AAED;;;;;GAKG;AACH,gDAEC;AAED;;;;;;;;;GASG;AACH,sCAEC"}
1
+ {"version":3,"file":"registry.d.mts","sourceRoot":"","sources":["../../../src/cli/gate/registry.mjs"],"names":[],"mappings":"AAqCA;;;;;GAKG;AACH,6CA4BC;AAED;;;;;GAKG;AACH,iDAIC;AAED;;;;;GAKG;AACH,oDAEC;AAED;;;;GAIG;AACH,sCAEC;AAED;;;;;GAKG;AACH,gDAEC;AAED;;;;;;;;;GASG;AACH,sCAEC"}
@@ -10,7 +10,12 @@
10
10
  * description: string, // human-readable one-liner
11
11
  * severity: 'blocking' | 'warn', // blocking gates halt the skill
12
12
  * skills: string[], // skills this gate fires for
13
- * check: async (ctx) => GateVerdict
13
+ * check: async (ctx) => GateVerdict,
14
+ * applies_to_profile?: (ctx) => boolean // optional; when present and
15
+ * // returns false, the gate is
16
+ * // skipped before cache lookup or
17
+ * // check() invocation. Omit to
18
+ * // apply universally (default).
14
19
  * }
15
20
  *
16
21
  * A GateVerdict is:
@@ -53,6 +58,9 @@ export function registerGate(gate) {
53
58
  if (typeof gate.check !== 'function') {
54
59
  throw new Error(`registerGate(${gate.id}): check must be a function`);
55
60
  }
61
+ if (gate.applies_to_profile !== undefined && typeof gate.applies_to_profile !== 'function') {
62
+ throw new Error(`registerGate(${gate.id}): applies_to_profile, when present, must be a function`);
63
+ }
56
64
  registry.set(gate.id, gate);
57
65
  return gate;
58
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.mjs","sourceRoot":"","sources":["../../../src/cli/gate/registry.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;AAE1B;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAI;IAChC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACxD,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;IACpE,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,EAAE,iCAAiC,CAAC,CAAA;IAC1E,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CACd,gBAAgB,IAAI,CAAC,EAAE,iDAAiD,IAAI,CAAC,QAAQ,GAAG,CACxF,CAAA;IACF,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,EAAE,qCAAqC,CAAC,CAAA;IAC9E,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,EAAE,6BAA6B,CAAC,CAAA;IACtE,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAC3B,OAAO,IAAI,CAAA;AACZ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE;IACvC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IACzC,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,CAAA;IACtB,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAK;IACrC,OAAO,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,EAAE;IACzB,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACxB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,CAAA;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,CAAA;AACjB,CAAC"}
1
+ {"version":3,"file":"registry.mjs","sourceRoot":"","sources":["../../../src/cli/gate/registry.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAA;AAE1B;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAI;IAChC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;IACxD,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;IACpE,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,EAAE,iCAAiC,CAAC,CAAA;IAC1E,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CACd,gBAAgB,IAAI,CAAC,EAAE,iDAAiD,IAAI,CAAC,QAAQ,GAAG,CACxF,CAAA;IACF,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,EAAE,qCAAqC,CAAC,CAAA;IAC9E,CAAC;IACD,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,EAAE,6BAA6B,CAAC,CAAA;IACtE,CAAC;IACD,IAAI,IAAI,CAAC,kBAAkB,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,kBAAkB,KAAK,UAAU,EAAE,CAAC;QAC5F,MAAM,IAAI,KAAK,CACd,gBAAgB,IAAI,CAAC,EAAE,yDAAyD,CAChF,CAAA;IACF,CAAC;IACD,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;IAC3B,OAAO,IAAI,CAAA;AACZ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE;IACvC,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAA;IACzC,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,CAAA;IACtB,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;AACnD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAK;IACrC,OAAO,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;AAC5B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,EAAE;IACzB,OAAO,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACxB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,CAAA;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,CAAA;AACjB,CAAC"}
@@ -344,7 +344,7 @@ function rawCliInvocation(partner) {
344
344
  if (partner === 'claude')
345
345
  return 'claude -p';
346
346
  if (partner === 'gemini')
347
- return 'gemini -m';
347
+ return 'gemini';
348
348
  return partner;
349
349
  }
350
350
  //# sourceMappingURL=detect.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"detect.mjs","sourceRoot":"","sources":["../../../src/cli/host/detect.mjs"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect.mjs","sourceRoot":"","sources":["../../../src/cli/host/detect.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,IAAI,YAAY,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEzE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC;IAC5C,aAAa;IACb,OAAO;IACP,YAAY;IACZ,UAAU;IACV,IAAI;IACJ,QAAQ;IACR,UAAU;IACV,MAAM;IACN,SAAS;IACT,aAAa;IACb,SAAS;IACT,MAAM;IACN,MAAM;IACN,OAAO;IACP,WAAW;CACX,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,UAAU,CAAC,IAAI,GAAG,EAAE;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAA;IACvB,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAA;IAE5B,IAAI,GAAG,GAAG,SAAS,CAAA;IACnB,IAAI,UAAU,GAAG,KAAK,CAAA;IAEtB,qEAAqE;IACrE,wEAAwE;IACxE,sEAAsE;IACtE,6DAA6D;IAC7D,IAAI,WAAW,IAAI,eAAe,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1D,GAAG,GAAG,WAAW,CAAA;QACjB,oEAAoE;QACpE,mEAAmE;QACnE,oEAAoE;QACpE,+CAA+C;QAC/C,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAC3B,UAAU,GAAG,GAAG,CAAC,oCAAoC,KAAK,GAAG,CAAA;QAC9D,CAAC;IACF,CAAC;SAAM,IACN,GAAG,CAAC,UAAU,KAAK,GAAG;QACtB,GAAG,CAAC,sBAAsB;QAC1B,GAAG,CAAC,oBAAoB;QACxB,GAAG,CAAC,iBAAiB,EACpB,CAAC;QACF,GAAG,GAAG,aAAa,CAAA;QACnB,UAAU,GAAG,GAAG,CAAC,oCAAoC,KAAK,GAAG,CAAA;IAC9D,CAAC;SAAM,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;QAClD,GAAG,GAAG,OAAO,CAAA;IACd,CAAC;SAAM,IAAI,GAAG,CAAC,iBAAiB,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAC3D,GAAG,GAAG,YAAY,CAAA;IACnB,CAAC;SAAM,IAAI,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACtF,GAAG,GAAG,UAAU,CAAA;IACjB,CAAC;SAAM,IAAI,GAAG,CAAC,eAAe,KAAK,MAAM,EAAE,CAAC;QAC3C,oEAAoE;QACpE,6DAA6D;QAC7D,0CAA0C;QAC1C,uEAAuE;QACvE,kEAAkE;QAClE,0EAA0E;QAC1E,gEAAgE;QAChE,GAAG,GAAG,IAAI,CAAA;IACX,CAAC;SAAM,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,iBAAiB,EAAE,CAAC;QACzD,+DAA+D;QAC/D,gEAAgE;QAChE,iCAAiC;QACjC,iEAAiE;QACjE,qEAAqE;QACrE,4CAA4C;QAC5C,GAAG,GAAG,QAAQ,CAAA;IACf,CAAC;SAAM,IAAI,GAAG,CAAC,mBAAmB,IAAI,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAC/D,sEAAsE;QACtE,uEAAuE;QACvE,wEAAwE;QACxE,gEAAgE;QAChE,yCAAyC;QACzC,GAAG,GAAG,UAAU,CAAA;IACjB,CAAC;SAAM,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;QACvD,yEAAyE;QACzE,wEAAwE;QACxE,oEAAoE;QACpE,GAAG,GAAG,MAAM,CAAA;IACb,CAAC;SAAM,IACN,GAAG,CAAC,0BAA0B;QAC9B,GAAG,CAAC,mBAAmB;QACvB,GAAG,CAAC,oBAAoB,EACvB,CAAC;QACF,qEAAqE;QACrE,kEAAkE;QAClE,8CAA8C;QAC9C,wCAAwC;QACxC,qGAAqG;QACrG,+DAA+D;QAC/D,GAAG,GAAG,SAAS,CAAA;IAChB,CAAC;SAAM,IAAI,GAAG,CAAC,sBAAsB,IAAI,GAAG,CAAC,sBAAsB,EAAE,CAAC;QACrE,oCAAoC;QACpC,oEAAoE;QACpE,0EAA0E;QAC1E,GAAG,GAAG,aAAa,CAAA;IACpB,CAAC;SAAM,IAAI,GAAG,CAAC,kBAAkB,IAAI,GAAG,CAAC,kBAAkB,EAAE,CAAC;QAC7D,8BAA8B;QAC9B,mEAAmE;QACnE,yDAAyD;QACzD,GAAG,GAAG,SAAS,CAAA;IAChB,CAAC;SAAM,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;QACvD,6BAA6B;QAC7B,+DAA+D;QAC/D,4DAA4D;QAC5D,GAAG,GAAG,MAAM,CAAA;IACb,CAAC;SAAM,IAAI,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;QACvD,4BAA4B;QAC5B,sCAAsC;QACtC,yEAAyE;QACzE,GAAG,GAAG,MAAM,CAAA;IACb,CAAC;SAAM,IAAI,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzD,iEAAiE;QACjE,6CAA6C;QAC7C,mEAAmE;QACnE,uDAAuD;QACvD,GAAG,GAAG,OAAO,CAAA;IACd,CAAC;SAAM,IAAI,GAAG,CAAC,oBAAoB,IAAI,GAAG,CAAC,oBAAoB,EAAE,CAAC;QACjE,0CAA0C;QAC1C,mEAAmE;QACnE,+CAA+C;QAC/C,GAAG,GAAG,WAAW,CAAA;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,GAAG,KAAK,aAAa,CAAA;IAC1C,MAAM,OAAO,GAAG,GAAG,KAAK,OAAO,CAAA;IAE/B,sGAAsG;IACtG,4EAA4E;IAC5E,2EAA2E;IAC3E,gFAAgF;IAChF,EAAE;IACF,8EAA8E;IAC9E,2EAA2E;IAC3E,0EAA0E;IAC1E,6EAA6E;IAC7E,MAAM,iBAAiB,GAAG,YAAY,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,UAAU,CAAA;IAEpF,yEAAyE;IACzE,qEAAqE;IACrE,4EAA4E;IAC5E,oEAAoE;IACpE,mEAAmE;IACnE,mEAAmE;IACnE,MAAM,aAAa,GAAG,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAA;IACpD,MAAM,iBAAiB,GAAG,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,CAAC,aAAa,CAAA;IAE3E,MAAM,YAAY,GAAG;QACpB,UAAU,EAAE,YAAY,IAAI,OAAO;QACnC,WAAW,EAAE,YAAY,IAAI,UAAU;QACvC,SAAS,EAAE,YAAY;QACvB,iBAAiB,EAAE,YAAY,IAAI,OAAO;QAC1C,kBAAkB,EAAE,iBAAiB;QACrC,kEAAkE;QAClE,yEAAyE;QACzE,qEAAqE;QACrE,qDAAqD;QACrD,IAAI,EAAE,YAAY,IAAI,GAAG,KAAK,IAAI;QAClC,sEAAsE;QACtE,0EAA0E;QAC1E,sEAAsE;QACtE,qDAAqD;QACrD,cAAc,EAAE,iBAAiB;KACjC,CAAA;IAED,OAAO;QACN,GAAG;QACH,OAAO,EAAE,IAAI,EAAE,qEAAqE;QACpF,YAAY;QACZ,gBAAgB,EAAE,iBAAiB;QACnC,cAAc,EAAE,aAAa;QAC7B,kBAAkB,EAAE,uBAAuB,CAAC,EAAE,GAAG,EAAE,CAAC;KACpD,CAAA;AACF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAAI,GAAG,EAAE;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,IAAI,YAAY,CAAA;IAC9C,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAE1E,OAAO;QACN,KAAK,EAAE;YACN,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC;YAC3B,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC;YACtC,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC;SAC1C;QACD,MAAM,EAAE;YACP,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC;YAC5B,qEAAqE;YACrE,sEAAsE;YACtE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE;YACxE,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC;SAC3C;QACD,MAAM,EAAE;YACP,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC;YAC5B,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE;YACxE,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC;SAC3C;KACD,CAAA;AACF,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,aAAa,CAAC,OAAO,EAAE,GAAG;IAClC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;IACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,yBAAyB,CAAA;IAC9C,IAAI,QAAQ,EAAE,CAAC;QACd,IAAI,CAAC;YACJ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAClC,IACC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EACnE,CAAC;gBACF,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,UAAU,GAAG,EAAE,CAAA;YACrE,CAAC;YACD,OAAO;gBACN,IAAI,EAAE,KAAK;gBACX,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,MAAM,UAAU,qCAAqC;aAC7D,CAAA;QACF,CAAC;QAAC,MAAM,CAAC;YACR,wDAAwD;QACzD,CAAC;IACF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,UAAU,GAAG,EAAE,CAAA;AACpF,CAAC;AAED,SAAS,aAAa,CAAC,OAAO;IAC7B,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,kBAAkB,CAAA;IAClD,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,wBAAwB,CAAA;IACzD,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,mBAAmB,CAAA;IACpD,OAAO,QAAQ,OAAO,QAAQ,CAAA;AAC/B,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM;IAC7C,MAAM,IAAI,GAAG,GAAG,CAAC,kBAAkB,CAAA;IACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,EAAE,CAAA;IAC/E,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,gBAAgB,CAAC,CAAA;IACpE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,YAAY,EAAE,CAAA;IAC1E,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,MAAM,QAAQ,EAAE,CAAA;AAC/E,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM;IACjD,MAAM,GAAG,GAAG,OAAO,CAAA;IACnB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACpC,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAA;QAC9E,CAAC;IACF,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,qBAAqB,EAAE,CAAA;AAC7E,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAO;IAChC,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,YAAY,CAAA;IAC5C,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAA;IAC5C,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAA;IACzC,OAAO,OAAO,CAAA;AACf,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Find the workspace `@aperant/framework` package above `targetDir`.
3
+ *
4
+ * @param {string} targetDir Absolute path to start the walk from.
5
+ * @returns {null | { source_path: string, source_version: string }}
6
+ * `source_path` is the absolute path to `packages/framework/package.json`.
7
+ * `source_version` is the semver-validated `version` field. Returns null
8
+ * when no workspace package is found, when the workspace package name is
9
+ * not `@aperant/framework`, or when the workspace version fails the
10
+ * semver-shape check.
11
+ */
12
+ export function findWorkspaceFrameworkVersion(targetDir: string): null | {
13
+ source_path: string;
14
+ source_version: string;
15
+ };
16
+ //# sourceMappingURL=find-workspace-framework-version.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-workspace-framework-version.d.mts","sourceRoot":"","sources":["../../../src/cli/install/find-workspace-framework-version.mjs"],"names":[],"mappings":"AAgDA;;;;;;;;;;GAUG;AACH,yDARW,MAAM,GACJ,IAAI,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAmClE"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * install/find-workspace-framework-version.mjs — Bundle A.
3
+ *
4
+ * Locates the workspace `packages/framework/package.json` above `targetDir`
5
+ * so the SessionStart worker and `apt-tools check-version` can detect the
6
+ * "self-host contributor's workspace is ahead of the installed kernel" case
7
+ * WITHOUT requiring the user to remember the `--from-source` flag.
8
+ *
9
+ * Mirrors the bounded-walk + semver-validation contract of the route-side
10
+ * `detectSourceWorkspaceDrift` (route/drift-detect.mjs:32-107), but returns
11
+ * just the source workspace metadata — the caller decides whether to flip
12
+ * `update_available` (worker / check-version branch on the comparison).
13
+ *
14
+ * Safe for hot paths: synchronous, file-existence + JSON parse only,
15
+ * bounded walk (6 segments max), no network, no spawn.
16
+ *
17
+ * Security: workspace `package.json:version` is validated against the same
18
+ * `SEMVER_RE` as `update-chips.mjs` so a poisoned `package.json` cannot
19
+ * propagate a non-semver value into downstream envelopes.
20
+ */
21
+ import { existsSync, readFileSync } from 'node:fs';
22
+ import { dirname, join } from 'node:path';
23
+ import { SEMVER_RE } from '../util/semver.mjs';
24
+ /** Max directory frames to walk before giving up. Mirrors route/drift-detect.mjs:32. */
25
+ const MAX_WALK_DEPTH = 6;
26
+ /**
27
+ * Walk up from `start`, returning every directory frame including `start`
28
+ * itself. Stops at the filesystem root or at depth `MAX_WALK_DEPTH`
29
+ * (whichever comes first).
30
+ *
31
+ * @param {string} start
32
+ * @returns {string[]}
33
+ */
34
+ function walkUp(start) {
35
+ const frames = [];
36
+ let cur = start;
37
+ for (let i = 0; i < MAX_WALK_DEPTH; i++) {
38
+ frames.push(cur);
39
+ const parent = dirname(cur);
40
+ if (parent === cur)
41
+ break;
42
+ cur = parent;
43
+ }
44
+ return frames;
45
+ }
46
+ /**
47
+ * Find the workspace `@aperant/framework` package above `targetDir`.
48
+ *
49
+ * @param {string} targetDir Absolute path to start the walk from.
50
+ * @returns {null | { source_path: string, source_version: string }}
51
+ * `source_path` is the absolute path to `packages/framework/package.json`.
52
+ * `source_version` is the semver-validated `version` field. Returns null
53
+ * when no workspace package is found, when the workspace package name is
54
+ * not `@aperant/framework`, or when the workspace version fails the
55
+ * semver-shape check.
56
+ */
57
+ export function findWorkspaceFrameworkVersion(targetDir) {
58
+ if (!targetDir || typeof targetDir !== 'string')
59
+ return null;
60
+ for (const dir of walkUp(targetDir)) {
61
+ const candidate = join(dir, 'packages', 'framework', 'package.json');
62
+ if (!existsSync(candidate))
63
+ continue;
64
+ let pkg;
65
+ try {
66
+ pkg = JSON.parse(readFileSync(candidate, 'utf-8'));
67
+ }
68
+ catch {
69
+ continue;
70
+ }
71
+ // Guard against false matches on unrelated monorepos that happen to
72
+ // have a `packages/framework/` directory.
73
+ if (pkg?.name !== '@aperant/framework')
74
+ continue;
75
+ const sourceVersion = pkg?.version;
76
+ if (typeof sourceVersion !== 'string' || !SEMVER_RE.test(sourceVersion))
77
+ continue;
78
+ return {
79
+ source_path: candidate,
80
+ source_version: sourceVersion,
81
+ };
82
+ }
83
+ return null;
84
+ }
85
+ //# sourceMappingURL=find-workspace-framework-version.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-workspace-framework-version.mjs","sourceRoot":"","sources":["../../../src/cli/install/find-workspace-framework-version.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C,wFAAwF;AACxF,MAAM,cAAc,GAAG,CAAC,CAAA;AAExB;;;;;;;GAOG;AACH,SAAS,MAAM,CAAC,KAAK;IACpB,MAAM,MAAM,GAAG,EAAE,CAAA;IACjB,IAAI,GAAG,GAAG,KAAK,CAAA;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAChB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAK;QACzB,GAAG,GAAG,MAAM,CAAA;IACb,CAAC;IACD,OAAO,MAAM,CAAA;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,6BAA6B,CAAC,SAAS;IACtD,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAA;IAE5D,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,CAAC,CAAA;QACpE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,SAAQ;QAEpC,IAAI,GAAG,CAAA;QACP,IAAI,CAAC;YACJ,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;QACnD,CAAC;QAAC,MAAM,CAAC;YACR,SAAQ;QACT,CAAC;QAED,oEAAoE;QACpE,0CAA0C;QAC1C,IAAI,GAAG,EAAE,IAAI,KAAK,oBAAoB;YAAE,SAAQ;QAEhD,MAAM,aAAa,GAAG,GAAG,EAAE,OAAO,CAAA;QAClC,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;YAAE,SAAQ;QAEjF,OAAO;YACN,WAAW,EAAE,SAAS;YACtB,cAAc,EAAE,aAAa;SAC7B,CAAA;IACF,CAAC;IAED,OAAO,IAAI,CAAA;AACZ,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `apt-tools install-from-source <project-dir>` — pack the workspace
3
+ * framework + every `workspace:*` dep, then npm-install the full tarball
4
+ * list into `<project-dir>/.aperant/deps/`.
5
+ *
6
+ * @param {string} projectDir
7
+ * @returns {import('../util/result.mjs').CommandResult}
8
+ */
9
+ export function cmdInstallFromSource(projectDir: string): import("../util/result.mjs").CommandResult;
10
+ //# sourceMappingURL=install-from-source.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-from-source.d.mts","sourceRoot":"","sources":["../../../src/cli/install/install-from-source.mjs"],"names":[],"mappings":"AA2IA;;;;;;;GAOG;AACH,iDAHW,MAAM,GACJ,OAAO,oBAAoB,EAAE,aAAa,CAkItD"}
@@ -0,0 +1,271 @@
1
+ /**
2
+ * install/install-from-source.mjs — Bundle D part 1.
3
+ *
4
+ * `apt-tools install-from-source <project-dir>` for the Aperant-contributor
5
+ * self-host case. Resolves the workspace `@aperant/framework` chain — packs
6
+ * the framework itself AND every `workspace:*` dependency (none today after
7
+ * the 0.8.5 driver-sdk inline, but the walker is general). Hands the full
8
+ * tarball list to a single `npm install --prefix` invocation so any future
9
+ * unpublished-pair case stops blowing up with `EUNSUPPORTEDPROTOCOL`.
10
+ *
11
+ * Stable envelope:
12
+ * { status: 'ok', tarballs: string[], kernel_path: string }
13
+ * { status: 'error', error: string, ...optional context }
14
+ *
15
+ * Test seams: `APT_PNPM_BIN` + `APT_NPM_BIN` mirror the existing
16
+ * `install-kernel.mjs` + worker patterns.
17
+ */
18
+ import { spawnSync } from 'node:child_process';
19
+ import { existsSync, mkdirSync, mkdtempSync, readdirSync, readFileSync, rmSync } from 'node:fs';
20
+ import { tmpdir } from 'node:os';
21
+ import { dirname, isAbsolute, join, resolve } from 'node:path';
22
+ import { err, ok } from '../util/result.mjs';
23
+ import { findWorkspaceFrameworkVersion } from './find-workspace-framework-version.mjs';
24
+ import { KERNEL_BIN_REL_PATH } from './install-kernel.mjs';
25
+ /**
26
+ * Locate the monorepo root given the workspace framework package.json path.
27
+ * `<root>/packages/framework/package.json` → `<root>`.
28
+ *
29
+ * @param {string} frameworkPkgPath
30
+ * @returns {string}
31
+ */
32
+ function monorepoRootFrom(frameworkPkgPath) {
33
+ // `<root>/packages/framework/package.json` — go up THREE levels.
34
+ return dirname(dirname(dirname(frameworkPkgPath)));
35
+ }
36
+ /**
37
+ * Scan `<monorepoRoot>/packages/` for a directory whose `package.json:name`
38
+ * matches `pkgName`. Returns the directory path (containing package.json),
39
+ * or null if no match.
40
+ *
41
+ * @param {string} monorepoRoot
42
+ * @param {string} pkgName
43
+ * @returns {string|null}
44
+ */
45
+ function findWorkspacePackage(monorepoRoot, pkgName) {
46
+ const packagesDir = join(monorepoRoot, 'packages');
47
+ if (!existsSync(packagesDir))
48
+ return null;
49
+ let entries;
50
+ try {
51
+ entries = readdirSync(packagesDir, { withFileTypes: true });
52
+ }
53
+ catch {
54
+ return null;
55
+ }
56
+ for (const entry of entries) {
57
+ if (!entry.isDirectory())
58
+ continue;
59
+ const candidate = join(packagesDir, entry.name, 'package.json');
60
+ if (!existsSync(candidate))
61
+ continue;
62
+ try {
63
+ const pkg = JSON.parse(readFileSync(candidate, 'utf-8'));
64
+ if (pkg?.name === pkgName)
65
+ return join(packagesDir, entry.name);
66
+ }
67
+ catch {
68
+ // Skip unreadable package.json files.
69
+ }
70
+ }
71
+ return null;
72
+ }
73
+ /**
74
+ * pnpm-pack a workspace package into `tmpDir` and return the resulting
75
+ * tarball path. Uses `pnpm --filter <name> pack --pack-destination <tmp>`
76
+ * so workspace protocols resolve to concrete versions inside the tarball.
77
+ *
78
+ * `knownBefore` is the set of .tgz filenames already present in `tmpDir`
79
+ * before this call; the mtime fallback uses it to find only the NEW file,
80
+ * avoiding coarse-timestamp ambiguity when multiple packs land in the same
81
+ * directory.
82
+ *
83
+ * @param {string} monorepoRoot
84
+ * @param {string} pkgName
85
+ * @param {string} tmpDir
86
+ * @param {Set<string>} knownBefore Filenames (not paths) present before this pack.
87
+ * @returns {{ tarball: string } | { error: string }}
88
+ */
89
+ function packWorkspace(monorepoRoot, pkgName, tmpDir, knownBefore) {
90
+ const pnpmBin = process.env.APT_PNPM_BIN || 'pnpm';
91
+ const result = spawnSync(pnpmBin, ['--filter', pkgName, 'pack', '--pack-destination', tmpDir], {
92
+ cwd: monorepoRoot,
93
+ stdio: ['ignore', 'pipe', 'pipe'],
94
+ encoding: 'utf-8',
95
+ timeout: 120_000,
96
+ });
97
+ if (result.error) {
98
+ return { error: `pnpm spawn failed for ${pkgName}: ${result.error.message}` };
99
+ }
100
+ if (result.status !== 0) {
101
+ const stderr = (result.stderr || '').trim().slice(-600);
102
+ return { error: `pnpm pack ${pkgName} exited with ${result.status}: ${stderr || 'no stderr'}` };
103
+ }
104
+ // pnpm pack prints the resulting tarball path on stdout. Take the last
105
+ // `.tgz` line (pnpm sometimes emits warnings above the path line).
106
+ const tarballLine = (result.stdout || '')
107
+ .split('\n')
108
+ .map((s) => s.trim())
109
+ .reverse()
110
+ .find((s) => s.endsWith('.tgz'));
111
+ if (tarballLine) {
112
+ // `tarballLine` may be a bare filename (older pnpm) or an absolute path.
113
+ // Use `isAbsolute` so Windows backslash + drive-letter paths are also
114
+ // recognized — `startsWith('/')` was POSIX-only.
115
+ const tarball = isAbsolute(tarballLine) ? tarballLine : join(tmpDir, tarballLine);
116
+ // SEC-001: containment check — tarball must resolve to a child of tmpDir.
117
+ const resolvedTmpDir = resolve(tmpDir);
118
+ const resolvedTarball = resolve(tarball);
119
+ if (!resolvedTarball.startsWith(`${resolvedTmpDir}/`) && resolvedTarball !== resolvedTmpDir) {
120
+ return { error: `pnpm pack ${pkgName}: tarball path escapes tmpDir: ${tarball}` };
121
+ }
122
+ return { tarball };
123
+ }
124
+ // Fall back to scanning tmpDir for the NEW tgz when stdout was
125
+ // uninformative (some pnpm builds print only progress to stderr).
126
+ // Use `knownBefore` to find only files added by this pack, avoiding
127
+ // mtime coarse-timestamp ambiguity on FAT32/network filesystems.
128
+ try {
129
+ for (const f of readdirSync(tmpDir)) {
130
+ if (!f.endsWith('.tgz'))
131
+ continue;
132
+ if (knownBefore.has(f))
133
+ continue;
134
+ return { tarball: join(tmpDir, f) };
135
+ }
136
+ }
137
+ catch {
138
+ // fall through
139
+ }
140
+ return {
141
+ error: `pnpm pack ${pkgName}: no .tgz produced (stdout: ${result.stdout?.slice(-200)})`,
142
+ };
143
+ }
144
+ /**
145
+ * `apt-tools install-from-source <project-dir>` — pack the workspace
146
+ * framework + every `workspace:*` dep, then npm-install the full tarball
147
+ * list into `<project-dir>/.aperant/deps/`.
148
+ *
149
+ * @param {string} projectDir
150
+ * @returns {import('../util/result.mjs').CommandResult}
151
+ */
152
+ export function cmdInstallFromSource(projectDir) {
153
+ if (!projectDir) {
154
+ return err('Usage: apt-tools install-from-source <project-dir>');
155
+ }
156
+ const targetDir = resolve(projectDir);
157
+ const workspace = findWorkspaceFrameworkVersion(targetDir);
158
+ if (!workspace) {
159
+ return err('install-from-source: no @aperant/framework workspace found above project-dir');
160
+ }
161
+ const monorepoRoot = monorepoRootFrom(workspace.source_path);
162
+ // QUA-001: re-read the workspace package.json with a try/catch — the file
163
+ // was validated by findWorkspaceFrameworkVersion but could change between
164
+ // the two reads (active monorepo, contributor machine).
165
+ let frameworkPkg;
166
+ try {
167
+ frameworkPkg = JSON.parse(readFileSync(workspace.source_path, 'utf-8'));
168
+ }
169
+ catch (e) {
170
+ return err(`install-from-source: failed to read ${workspace.source_path}: ${e instanceof Error ? e.message : String(e)}`);
171
+ }
172
+ // Enumerate workspace:* deps from dependencies + peerDependencies.
173
+ const depSources = [frameworkPkg.dependencies, frameworkPkg.peerDependencies];
174
+ const workspaceDeps = [];
175
+ for (const block of depSources) {
176
+ if (!block || typeof block !== 'object')
177
+ continue;
178
+ for (const [name, spec] of Object.entries(block)) {
179
+ if (typeof spec === 'string' && spec.startsWith('workspace:')) {
180
+ if (!workspaceDeps.includes(name))
181
+ workspaceDeps.push(name);
182
+ }
183
+ }
184
+ }
185
+ // Resolve each workspace dep to its `packages/<dir>` path. Reject hard
186
+ // when any dep cannot be located — we cannot pack what we cannot find.
187
+ const missingDeps = [];
188
+ const resolvedDeps = [];
189
+ for (const depName of workspaceDeps) {
190
+ const pkgDir = findWorkspacePackage(monorepoRoot, depName);
191
+ if (!pkgDir) {
192
+ missingDeps.push(depName);
193
+ continue;
194
+ }
195
+ resolvedDeps.push({ name: depName, dir: pkgDir });
196
+ }
197
+ if (missingDeps.length > 0) {
198
+ return err(`install-from-source: workspace:* dep(s) not found in packages/: ${missingDeps.join(', ')}`);
199
+ }
200
+ // PRF-001: include framework in the same pack loop — eliminates structural
201
+ // duplication and ensures per-pack knownBefore snapshots work uniformly.
202
+ const packTargets = [...resolvedDeps.map((d) => d.name), '@aperant/framework'];
203
+ // Pack everything into a fresh tmp dir so accumulated stale tarballs
204
+ // from prior runs don't sneak in.
205
+ const tmpDir = mkdtempSync(join(tmpdir(), 'apt-install-from-source-'));
206
+ const tarballs = [];
207
+ // QUA-002: wrap pack+install in try/finally so tmpDir is always removed.
208
+ try {
209
+ for (const pkgName of packTargets) {
210
+ // LOG-003: snapshot existing tgz filenames before each pack so the
211
+ // fallback can identify exactly the new file, even on coarse-timestamp
212
+ // filesystems (FAT32, some network mounts).
213
+ const knownBefore = new Set();
214
+ try {
215
+ for (const f of readdirSync(tmpDir)) {
216
+ if (f.endsWith('.tgz'))
217
+ knownBefore.add(f);
218
+ }
219
+ }
220
+ catch {
221
+ // tmpDir unreadable — proceed with empty set; fallback will still work.
222
+ }
223
+ const packResult = packWorkspace(monorepoRoot, pkgName, tmpDir, knownBefore);
224
+ if ('error' in packResult)
225
+ return err(packResult.error);
226
+ tarballs.push(packResult.tarball);
227
+ }
228
+ // npm install --prefix .aperant/deps <tarball1> <tarball2> ...
229
+ const depsDir = join(targetDir, '.aperant', 'deps');
230
+ mkdirSync(depsDir, { recursive: true });
231
+ const npmBin = process.env.APT_NPM_BIN || 'npm';
232
+ const args = [
233
+ 'install',
234
+ '--prefix',
235
+ depsDir,
236
+ ...tarballs,
237
+ '--no-save',
238
+ '--no-package-lock',
239
+ '--no-audit',
240
+ '--no-fund',
241
+ '--silent',
242
+ ];
243
+ const npmResult = spawnSync(npmBin, args, {
244
+ cwd: targetDir,
245
+ stdio: ['ignore', 'pipe', 'pipe'],
246
+ encoding: 'utf-8',
247
+ timeout: 180_000,
248
+ });
249
+ if (npmResult.error) {
250
+ return err(`install-from-source: npm spawn failed: ${npmResult.error.message}`);
251
+ }
252
+ if (npmResult.status !== 0) {
253
+ const stderr = (npmResult.stderr || '').trim().slice(-600);
254
+ return err(`install-from-source: npm install --prefix exited with ${npmResult.status}: ${stderr || 'no stderr'}`);
255
+ }
256
+ const kernelPath = join(targetDir, KERNEL_BIN_REL_PATH);
257
+ if (!existsSync(kernelPath)) {
258
+ return err(`install-from-source: npm reported success but kernel not found at ${kernelPath}`);
259
+ }
260
+ return ok({
261
+ status: 'ok',
262
+ command: 'install-from-source',
263
+ tarballs,
264
+ kernel_path: kernelPath,
265
+ });
266
+ }
267
+ finally {
268
+ rmSync(tmpDir, { recursive: true, force: true });
269
+ }
270
+ }
271
+ //# sourceMappingURL=install-from-source.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install-from-source.mjs","sourceRoot":"","sources":["../../../src/cli/install/install-from-source.mjs"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"install-kernel.d.mts","sourceRoot":"","sources":["../../../src/cli/install/install-kernel.mjs"],"names":[],"mappings":"AA2FA;;;;;;GAMG;AAEH;;;;;;;;;;;;GAYG;AACH,yCARW,MAAM,WACN,MAAM,SAGd;IAAsB,SAAS;IACR,MAAM;CAC7B,GAAU,mBAAmB,CAqE/B;AApJD;;;;GAIG;AACH,kCAAmC,iEAAiE,CAAA;;YAyDtF,WAAW,GAAG,SAAS,GAAG,QAAQ;;;;gBAClC,MAAM"}
1
+ {"version":3,"file":"install-kernel.d.mts","sourceRoot":"","sources":["../../../src/cli/install/install-kernel.mjs"],"names":[],"mappings":"AA2FA;;;;;;GAMG;AAEH;;;;;;;;;;;;GAYG;AACH,yCARW,MAAM,WACN,MAAM,SAGd;IAAsB,SAAS;IACR,MAAM;CAC7B,GAAU,mBAAmB,CA6F/B;AA5KD;;;;GAIG;AACH,kCAAmC,iEAAiE,CAAA;;YAyDtF,WAAW,GAAG,SAAS,GAAG,QAAQ;;;;gBAClC,MAAM"}
@@ -115,6 +115,30 @@ export function installKernel(targetDir, version, opts = {}) {
115
115
  mkdirSync(depsDir, { recursive: true });
116
116
  const kernelPath = join(targetDir, KERNEL_BIN_REL_PATH);
117
117
  const npmBin = resolveNpmBin();
118
+ // Bundle B — idempotency short-circuit. When the kernel package.json
119
+ // already reports the requested version AND the kernel binary exists,
120
+ // skip the npm spawn entirely. Returns the same `status: 'installed'`
121
+ // envelope shape that downstream consumers branch on (init.mjs:1441,
122
+ // init.mjs:1735, apt-update/SKILL.md Scenario D) — no new enum value
123
+ // per D-02.
124
+ const installedPkgPath = join(depsDir, 'node_modules', '@aperant', 'framework', 'package.json');
125
+ if (existsSync(installedPkgPath) && existsSync(kernelPath)) {
126
+ try {
127
+ const installedPkg = JSON.parse(readFileSync(installedPkgPath, 'utf-8'));
128
+ if (installedPkg?.version === version) {
129
+ return {
130
+ status: 'installed',
131
+ kernelPath,
132
+ reason: 'already at target version',
133
+ durationMs: 0,
134
+ };
135
+ }
136
+ }
137
+ catch {
138
+ // Malformed package.json — fall through to the npm install path
139
+ // (npm will reconcile / repair).
140
+ }
141
+ }
118
142
  const t0 = Date.now();
119
143
  const args = [
120
144
  'install',
@@ -1 +1 @@
1
- {"version":3,"file":"install-kernel.mjs","sourceRoot":"","sources":["../../../src/cli/install/install-kernel.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAElD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,iEAAiE,CAAA;AAEpG;;;;;;GAMG;AACH,SAAS,aAAa;IACrB,OAAO,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,KAAK,CAAA;AACxC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,yBAAyB,CAAC,QAAQ;IAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA;IACzB,uBAAuB;IACvB,MAAM,UAAU,GAAG,EAAE,CAAA;IACrB,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC3B,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;QACpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;QAC3B,IAAI,MAAM,KAAK,GAAG;YAAE,MAAK;QACzB,GAAG,GAAG,MAAM,CAAA;IACb,CAAC;IACD,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAA,CAAC,oBAAoB;IAE/D,MAAM,EAAE,GAAG,wCAAwC,CAAA;IACnD,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC/B,IAAI,CAAC;YACJ,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;YACxC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACxB,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;QAAC,MAAM,CAAC;YACR,4CAA4C;QAC7C,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC;AAED;;;;;;GAMG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,GAAG,EAAE;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAA;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,KAAK,KAAK,CAAA;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IACxC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAEvC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;IACvD,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAE9B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IACrB,MAAM,IAAI,GAAG;QACZ,SAAS;QACT,sBAAsB,OAAO,EAAE;QAC/B,UAAU;QACV,OAAO;QACP,WAAW;QACX,mBAAmB;QACnB,YAAY;QACZ,WAAW;KACX,CAAA;IACD,IAAI,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAEjC,yEAAyE;IACzE,2EAA2E;IAC3E,wDAAwD;IACxD,MAAM,cAAc,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAA;IAC3D,IAAI,cAAc,EAAE,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,uBAAuB,cAAc,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;QACtC,GAAG,EAAE,SAAS,EAAE,6CAA6C;QAC7D,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QACtD,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,OAAO;KACjB,CAAC,CAAA;IAEF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAA;IAElC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO;YACN,MAAM,EAAE,QAAQ;YAChB,UAAU;YACV,MAAM,EAAE,qBAAqB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;YACnD,UAAU;SACV,CAAA;IACF,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAA,CAAC,iBAAiB;QACzE,OAAO;YACN,MAAM,EAAE,QAAQ;YAChB,UAAU;YACV,MAAM,EAAE,oCAAoC,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,WAAW,EAAE;YACrF,UAAU;SACV,CAAA;IACF,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,OAAO;YACN,MAAM,EAAE,QAAQ;YAChB,UAAU;YACV,MAAM,EAAE,wDAAwD,UAAU,EAAE;YAC5E,UAAU;SACV,CAAA;IACF,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,CAAA;AACvD,CAAC"}
1
+ {"version":3,"file":"install-kernel.mjs","sourceRoot":"","sources":["../../../src/cli/install/install-kernel.mjs"],"names":[],"mappings":"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"}