@aperant/framework 0.8.0 → 0.8.4

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 (271) hide show
  1. package/CHANGELOG.md +311 -1
  2. package/README.md +12 -0
  3. package/agents/apt-planner.md +5 -4
  4. package/dist/cli/commands/adr.mjs +1 -1
  5. package/dist/cli/commands/audit-branch-current.d.mts +25 -0
  6. package/dist/cli/commands/audit-branch-current.d.mts.map +1 -0
  7. package/dist/cli/commands/audit-branch-current.mjs +252 -0
  8. package/dist/cli/commands/audit-branch-current.mjs.map +1 -0
  9. package/dist/cli/commands/audit.d.mts.map +1 -1
  10. package/dist/cli/commands/audit.mjs +13 -2
  11. package/dist/cli/commands/audit.mjs.map +1 -1
  12. package/dist/cli/commands/check-version.d.mts.map +1 -1
  13. package/dist/cli/commands/check-version.mjs +19 -1
  14. package/dist/cli/commands/check-version.mjs.map +1 -1
  15. package/dist/cli/commands/context.mjs +3 -3
  16. package/dist/cli/commands/context.mjs.map +1 -1
  17. package/dist/cli/commands/detect-runtime.d.mts +6 -0
  18. package/dist/cli/commands/detect-runtime.d.mts.map +1 -0
  19. package/dist/cli/commands/detect-runtime.mjs +136 -0
  20. package/dist/cli/commands/detect-runtime.mjs.map +1 -0
  21. package/dist/cli/commands/driver-doctor.d.mts +29 -0
  22. package/dist/cli/commands/driver-doctor.d.mts.map +1 -0
  23. package/dist/cli/commands/driver-doctor.mjs +291 -0
  24. package/dist/cli/commands/driver-doctor.mjs.map +1 -0
  25. package/dist/cli/commands/gate.mjs +14 -0
  26. package/dist/cli/commands/gate.mjs.map +1 -1
  27. package/dist/cli/commands/init.d.mts.map +1 -1
  28. package/dist/cli/commands/init.mjs +76 -33
  29. package/dist/cli/commands/init.mjs.map +1 -1
  30. package/dist/cli/commands/install-from-source.d.mts +2 -0
  31. package/dist/cli/commands/install-from-source.d.mts.map +1 -0
  32. package/dist/cli/commands/install-from-source.mjs +2 -0
  33. package/dist/cli/commands/install-from-source.mjs.map +1 -0
  34. package/dist/cli/commands/modes.mjs +1 -1
  35. package/dist/cli/commands/route.d.mts.map +1 -1
  36. package/dist/cli/commands/route.mjs +38 -1
  37. package/dist/cli/commands/route.mjs.map +1 -1
  38. package/dist/cli/commands/triage.mjs +1 -1
  39. package/dist/cli/config/load.d.mts.map +1 -1
  40. package/dist/cli/config/load.mjs +9 -3
  41. package/dist/cli/config/load.mjs.map +1 -1
  42. package/dist/cli/coordination/auto-emit-artifact-ready.mjs +1 -1
  43. package/dist/cli/coordination/event-schema.d.mts.map +1 -1
  44. package/dist/cli/coordination/event-schema.mjs +18 -0
  45. package/dist/cli/coordination/event-schema.mjs.map +1 -1
  46. package/dist/cli/design/frontmatter-schema.d.mts +4 -4
  47. package/dist/cli/dispatch.d.mts.map +1 -1
  48. package/dist/cli/dispatch.mjs +18 -1
  49. package/dist/cli/dispatch.mjs.map +1 -1
  50. package/dist/cli/gate/context.d.mts +1 -0
  51. package/dist/cli/gate/context.d.mts.map +1 -1
  52. package/dist/cli/gate/context.mjs +14 -1
  53. package/dist/cli/gate/context.mjs.map +1 -1
  54. package/dist/cli/gate/gates/consistency-check.d.mts +1 -0
  55. package/dist/cli/gate/gates/consistency-check.d.mts.map +1 -1
  56. package/dist/cli/gate/gates/consistency-check.mjs +1 -0
  57. package/dist/cli/gate/gates/consistency-check.mjs.map +1 -1
  58. package/dist/cli/gate/gates/review-clean.d.mts +1 -0
  59. package/dist/cli/gate/gates/review-clean.d.mts.map +1 -1
  60. package/dist/cli/gate/gates/review-clean.mjs +1 -0
  61. package/dist/cli/gate/gates/review-clean.mjs.map +1 -1
  62. package/dist/cli/gate/gates/verify-approved.d.mts +1 -0
  63. package/dist/cli/gate/gates/verify-approved.d.mts.map +1 -1
  64. package/dist/cli/gate/gates/verify-approved.mjs +1 -0
  65. package/dist/cli/gate/gates/verify-approved.mjs.map +1 -1
  66. package/dist/cli/gate/registry.d.mts.map +1 -1
  67. package/dist/cli/gate/registry.mjs +9 -1
  68. package/dist/cli/gate/registry.mjs.map +1 -1
  69. package/dist/cli/install/cli-to-install-root.d.mts.map +1 -1
  70. package/dist/cli/install/cli-to-install-root.mjs +0 -2
  71. package/dist/cli/install/cli-to-install-root.mjs.map +1 -1
  72. package/dist/cli/install/find-workspace-framework-version.d.mts +16 -0
  73. package/dist/cli/install/find-workspace-framework-version.d.mts.map +1 -0
  74. package/dist/cli/install/find-workspace-framework-version.mjs +85 -0
  75. package/dist/cli/install/find-workspace-framework-version.mjs.map +1 -0
  76. package/dist/cli/install/install-from-source.d.mts +10 -0
  77. package/dist/cli/install/install-from-source.d.mts.map +1 -0
  78. package/dist/cli/install/install-from-source.mjs +271 -0
  79. package/dist/cli/install/install-from-source.mjs.map +1 -0
  80. package/dist/cli/install/install-kernel.d.mts.map +1 -1
  81. package/dist/cli/install/install-kernel.mjs +24 -0
  82. package/dist/cli/install/install-kernel.mjs.map +1 -1
  83. package/dist/cli/install/legacy-paths.d.mts +33 -11
  84. package/dist/cli/install/legacy-paths.d.mts.map +1 -1
  85. package/dist/cli/install/legacy-paths.mjs +161 -39
  86. package/dist/cli/install/legacy-paths.mjs.map +1 -1
  87. package/dist/cli/install/runtime-detect.d.mts +2 -6
  88. package/dist/cli/install/runtime-detect.d.mts.map +1 -1
  89. package/dist/cli/install/runtime-detect.mjs +9 -4
  90. package/dist/cli/install/runtime-detect.mjs.map +1 -1
  91. package/dist/cli/install/runtime-migrate.d.mts +34 -14
  92. package/dist/cli/install/runtime-migrate.d.mts.map +1 -1
  93. package/dist/cli/install/runtime-migrate.mjs +63 -30
  94. package/dist/cli/install/runtime-migrate.mjs.map +1 -1
  95. package/dist/cli/install/transforms/codex.d.mts.map +1 -1
  96. package/dist/cli/install/transforms/codex.mjs +28 -17
  97. package/dist/cli/install/transforms/codex.mjs.map +1 -1
  98. package/dist/cli/install/transforms/pi.d.mts +6 -0
  99. package/dist/cli/install/transforms/pi.d.mts.map +1 -0
  100. package/dist/cli/install/transforms/pi.mjs +37 -0
  101. package/dist/cli/install/transforms/pi.mjs.map +1 -0
  102. package/dist/cli/personas/sidecar.d.mts +1 -1
  103. package/dist/cli/roadmap/lifecycle.d.mts +1 -1
  104. package/dist/cli/roadmap/rollup.d.mts +2 -2
  105. package/dist/cli/skill-author/contract.mjs +2 -2
  106. package/dist/cli/skill-author/contract.mjs.map +1 -1
  107. package/dist/cli/verify-proof/audit.d.mts +34 -0
  108. package/dist/cli/verify-proof/audit.d.mts.map +1 -0
  109. package/dist/cli/verify-proof/audit.mjs +53 -0
  110. package/dist/cli/verify-proof/audit.mjs.map +1 -0
  111. package/dist/cli/verify-proof/exec.d.mts +20 -0
  112. package/dist/cli/verify-proof/exec.d.mts.map +1 -0
  113. package/dist/cli/verify-proof/exec.mjs +74 -0
  114. package/dist/cli/verify-proof/exec.mjs.map +1 -0
  115. package/dist/cli/verify-proof/idl/index.d.mts +2 -0
  116. package/dist/cli/verify-proof/idl/index.d.mts.map +1 -0
  117. package/dist/cli/verify-proof/idl/index.mjs +14 -0
  118. package/dist/cli/verify-proof/idl/index.mjs.map +1 -0
  119. package/dist/cli/verify-proof/idl/types.d.ts +9 -0
  120. package/dist/cli/verify-proof/idl/types.d.ts.map +1 -0
  121. package/dist/cli/verify-proof/idl/types.js +9 -0
  122. package/dist/cli/verify-proof/idl/types.js.map +1 -0
  123. package/dist/cli/verify-proof/manifest-validator.d.mts +19 -0
  124. package/dist/cli/verify-proof/manifest-validator.d.mts.map +1 -0
  125. package/dist/cli/verify-proof/manifest-validator.mjs +182 -0
  126. package/dist/cli/verify-proof/manifest-validator.mjs.map +1 -0
  127. package/dist/cli/verify-proof/resolver.d.mts +43 -0
  128. package/dist/cli/verify-proof/resolver.d.mts.map +1 -0
  129. package/dist/cli/verify-proof/resolver.mjs +160 -0
  130. package/dist/cli/verify-proof/resolver.mjs.map +1 -0
  131. package/dist/cli/verify-proof/runtime-detect.d.mts +27 -0
  132. package/dist/cli/verify-proof/runtime-detect.d.mts.map +1 -0
  133. package/dist/cli/verify-proof/runtime-detect.mjs +116 -0
  134. package/dist/cli/verify-proof/runtime-detect.mjs.map +1 -0
  135. package/dist/cli/verify-proof/trust.d.mts +70 -0
  136. package/dist/cli/verify-proof/trust.d.mts.map +1 -0
  137. package/dist/cli/verify-proof/trust.mjs +174 -0
  138. package/dist/cli/verify-proof/trust.mjs.map +1 -0
  139. package/dist/plugin/.claude-plugin/plugin.json +4 -1
  140. package/dist/plugin/agents/apt-executor.md +12 -0
  141. package/dist/plugin/agents/apt-planner.md +5 -4
  142. package/dist/plugin/agents/apt-team-docs-narrator.md +11 -0
  143. package/dist/plugin/skills/apt/SKILL.md +78 -8
  144. package/dist/plugin/skills/apt-caveman/SKILL.md +64 -0
  145. package/dist/plugin/skills/apt-debug/SKILL.md +36 -4
  146. package/dist/plugin/skills/apt-debug/appendices/diagnose-discipline.md +2 -11
  147. package/dist/plugin/skills/apt-discuss/SKILL.md +4 -4
  148. package/dist/plugin/skills/apt-discuss/appendices/grill-discipline.md +2 -11
  149. package/dist/plugin/skills/apt-discuss/appendices/zoom-out-helper.md +0 -8
  150. package/dist/plugin/skills/apt-execute/SKILL.md +40 -4
  151. package/dist/plugin/skills/apt-execute/appendices/tdd-mode.md +2 -10
  152. package/dist/plugin/skills/apt-fan-out/SKILL.md +159 -0
  153. package/dist/plugin/skills/apt-handoff/SKILL.md +228 -0
  154. package/dist/plugin/skills/apt-improve/DEEPENING.md +0 -8
  155. package/dist/plugin/skills/apt-improve/INTERFACE-DESIGN.md +0 -8
  156. package/dist/plugin/skills/apt-improve/LANGUAGE.md +0 -8
  157. package/dist/plugin/skills/apt-improve/SKILL.md +4 -4
  158. package/dist/plugin/skills/apt-plan/SKILL.md +23 -5
  159. package/dist/plugin/skills/apt-plan/adapters/conductor.md +1 -1
  160. package/dist/plugin/skills/apt-pr-review/SKILL.md +8 -1
  161. package/dist/plugin/skills/apt-prototype/LOGIC.md +0 -8
  162. package/dist/plugin/skills/apt-prototype/SKILL.md +4 -4
  163. package/dist/plugin/skills/apt-prototype/UI.md +0 -8
  164. package/dist/plugin/skills/apt-quick/SKILL.md +31 -1
  165. package/dist/plugin/skills/apt-resume/SKILL.md +54 -31
  166. package/dist/plugin/skills/apt-review/SKILL.md +4 -0
  167. package/dist/plugin/skills/apt-run/SKILL.md +134 -21
  168. package/dist/plugin/skills/apt-setup/SKILL.md +97 -8
  169. package/dist/plugin/skills/apt-ship/SKILL.md +165 -9
  170. package/dist/plugin/skills/apt-spar/SKILL.md +77 -25
  171. package/dist/plugin/skills/apt-triage/AGENT-BRIEF.md +0 -8
  172. package/dist/plugin/skills/apt-triage/OUT-OF-SCOPE.md +0 -7
  173. package/dist/plugin/skills/apt-triage/SKILL.md +2 -2
  174. package/dist/plugin/skills/apt-update/SKILL.md +74 -17
  175. package/dist/plugin/skills/apt-verify/SKILL.md +11 -0
  176. package/dist/plugin/skills/apt-verify-proof/SKILL.md +48 -1
  177. package/dist/plugin/skills/apt-watch-ci/SKILL.md +2 -2
  178. package/dist/plugin/skills/apt-zoom-out/SKILL.md +3 -3
  179. package/dist/schemas/quick-task.d.ts +17 -17
  180. package/dist/schemas/quick-task.d.ts.map +1 -1
  181. package/dist/schemas/quick-task.js +2 -2
  182. package/dist/schemas/quick-task.js.map +1 -1
  183. package/dist/types/config.d.ts +33 -0
  184. package/dist/types/config.d.ts.map +1 -1
  185. package/dist/types/state.d.ts +1 -1
  186. package/dist/types/state.d.ts.map +1 -1
  187. package/dist/types/task-record.d.ts +1 -1
  188. package/dist/types/task-record.d.ts.map +1 -1
  189. package/package.json +134 -133
  190. package/prompts/planner.md +1 -1
  191. package/prompts/spec_writer.md +1 -1
  192. package/skills/apt/SKILL.md +78 -8
  193. package/skills/apt-caveman/SKILL.md +64 -0
  194. package/skills/apt-debug/SKILL.md +36 -4
  195. package/skills/apt-debug/appendices/diagnose-discipline.md +2 -11
  196. package/skills/apt-discuss/SKILL.md +4 -4
  197. package/skills/apt-discuss/appendices/grill-discipline.md +2 -11
  198. package/skills/apt-discuss/appendices/zoom-out-helper.md +0 -8
  199. package/skills/apt-execute/SKILL.md +27 -4
  200. package/skills/apt-execute/appendices/tdd-mode.md +2 -10
  201. package/skills/apt-fan-out/SKILL.md +36 -1
  202. package/skills/apt-handoff/SKILL.md +228 -0
  203. package/skills/apt-improve/DEEPENING.md +0 -8
  204. package/skills/apt-improve/INTERFACE-DESIGN.md +0 -8
  205. package/skills/apt-improve/LANGUAGE.md +0 -8
  206. package/skills/apt-improve/SKILL.md +4 -4
  207. package/skills/apt-plan/SKILL.md +23 -5
  208. package/skills/apt-plan/adapters/conductor.md +1 -1
  209. package/skills/apt-planner.md +1 -1
  210. package/skills/apt-prototype/LOGIC.md +0 -8
  211. package/skills/apt-prototype/SKILL.md +4 -4
  212. package/skills/apt-prototype/UI.md +0 -8
  213. package/skills/apt-quick/SKILL.md +31 -1
  214. package/skills/apt-resume/SKILL.md +54 -31
  215. package/skills/apt-run/SKILL.md +114 -16
  216. package/skills/apt-setup/SKILL.md +97 -8
  217. package/skills/apt-ship/SKILL.md +165 -9
  218. package/skills/apt-spar/SKILL.md +65 -16
  219. package/skills/apt-triage/AGENT-BRIEF.md +0 -8
  220. package/skills/apt-triage/OUT-OF-SCOPE.md +0 -7
  221. package/skills/apt-triage/SKILL.md +2 -2
  222. package/skills/apt-update/SKILL.md +74 -17
  223. package/skills/apt-verify-proof/SKILL.md +48 -1
  224. package/skills/apt-zoom-out/SKILL.md +3 -3
  225. package/src/cli/commands/adr.mjs +1 -1
  226. package/src/cli/commands/audit-branch-current.mjs +250 -0
  227. package/src/cli/commands/audit.mjs +13 -2
  228. package/src/cli/commands/check-version.mjs +20 -1
  229. package/src/cli/commands/context.mjs +3 -3
  230. package/src/cli/commands/detect-runtime.mjs +134 -0
  231. package/src/cli/commands/driver-doctor.mjs +294 -0
  232. package/src/cli/commands/gate.mjs +15 -0
  233. package/src/cli/commands/init.mjs +75 -33
  234. package/src/cli/commands/install-from-source.mjs +1 -0
  235. package/src/cli/commands/modes.mjs +1 -1
  236. package/src/cli/commands/route.mjs +42 -1
  237. package/src/cli/commands/triage.mjs +1 -1
  238. package/src/cli/config/load.mjs +9 -3
  239. package/src/cli/coordination/auto-emit-artifact-ready.mjs +1 -1
  240. package/src/cli/coordination/event-schema.mjs +19 -0
  241. package/src/cli/dispatch.mjs +17 -1
  242. package/src/cli/gate/context.mjs +20 -1
  243. package/src/cli/gate/gates/consistency-check.mjs +1 -0
  244. package/src/cli/gate/gates/review-clean.mjs +1 -0
  245. package/src/cli/gate/gates/verify-approved.mjs +1 -0
  246. package/src/cli/gate/registry.mjs +11 -1
  247. package/src/cli/install/cli-to-install-root.mjs +0 -2
  248. package/src/cli/install/find-workspace-framework-version.mjs +88 -0
  249. package/src/cli/install/install-from-source.mjs +276 -0
  250. package/src/cli/install/install-kernel.mjs +24 -0
  251. package/src/cli/install/legacy-paths.mjs +162 -39
  252. package/src/cli/install/runtime-detect.mjs +9 -4
  253. package/src/cli/install/runtime-migrate.mjs +63 -30
  254. package/src/cli/install/transforms/codex.mjs +26 -17
  255. package/src/cli/install/transforms/pi.mjs +37 -0
  256. package/src/cli/skill-author/contract.mjs +2 -2
  257. package/src/cli/verify-proof/.gitkeep +0 -0
  258. package/src/cli/verify-proof/audit.mjs +55 -0
  259. package/src/cli/verify-proof/exec.mjs +74 -0
  260. package/src/cli/verify-proof/idl/index.mjs +24 -0
  261. package/src/cli/verify-proof/idl/types.ts +41 -0
  262. package/src/cli/verify-proof/manifest-schema.json +211 -0
  263. package/src/cli/verify-proof/manifest-validator.mjs +184 -0
  264. package/src/cli/verify-proof/resolver.mjs +163 -0
  265. package/src/cli/verify-proof/runtime-detect.mjs +122 -0
  266. package/src/cli/verify-proof/trust.mjs +187 -0
  267. package/templates/adr-format.md +0 -8
  268. package/templates/aperant-claude-md-appendix.md +1 -1
  269. package/templates/context-format.md +1 -9
  270. package/templates/proof-verification.md +19 -5
  271. package/workflows/verify-proof.md +56 -14
@@ -0,0 +1,291 @@
1
+ /**
2
+ * commands/driver-doctor.mjs — `apt-tools driver doctor <projectDir>`.
3
+ *
4
+ * Validates every discovered driver against:
5
+ * 1. The manifest JSON-Schema (manifest-validator.mjs).
6
+ * 2. IDL conformance — every declared capability has a function export.
7
+ * NOTE: this step necessarily imports driver.mjs, which RUNS the
8
+ * driver's top-level module code. For that reason we trust-gate the
9
+ * import: bundled drivers (first-party signed, sitting under
10
+ * packages/framework/drivers/) are always imported; user drivers
11
+ * under .aperant/drivers/ are imported only when policy + TOFU say
12
+ * it is safe. A user driver that fails the gate is reported with
13
+ * `idl_conformant: false` and `idl_skipped_reason: <decision>`
14
+ * rather than executed.
15
+ * 3. Preflight commands (declared as structured local_command per
16
+ * ID-03). For each preflight whose declared transport is the
17
+ * structured `{ binary, args[] }` shape, we run it via execFile
18
+ * (exec.mjs — no shell) and record pass/fail + missing_deps.
19
+ * Preflights without a structured `command` (declaration-only) are
20
+ * marked `pending` — there is nothing to execute.
21
+ *
22
+ * Emits a JSON envelope listing pass/fail per driver. Third-party driver
23
+ * authors invoke this before publishing.
24
+ */
25
+ import { existsSync, readdirSync, readFileSync } from 'node:fs';
26
+ import { join, resolve } from 'node:path';
27
+ import { fileURLToPath } from 'node:url';
28
+ import { err, ok } from '../util/result.mjs';
29
+ import { execLocalCommand } from '../verify-proof/exec.mjs';
30
+ import { IDL_VERB_NAMES } from '../verify-proof/idl/index.mjs';
31
+ import { validateManifest } from '../verify-proof/manifest-validator.mjs';
32
+ import { decide, readPolicy, readTofuLock } from '../verify-proof/trust.mjs';
33
+ /**
34
+ * @typedef {Object} DriverDoctorReport
35
+ * @property {string} driverId
36
+ * @property {string} version
37
+ * @property {string} locality
38
+ * @property {boolean} manifest_valid
39
+ * @property {Array<{path: string, message: string}>} manifest_errors
40
+ * @property {boolean} idl_conformant
41
+ * @property {string[]} missing_exports
42
+ * @property {string[]} unknown_capabilities
43
+ * @property {string} [idl_skipped_reason] — present when conformance was skipped because the trust gate blocked driver.mjs import
44
+ * @property {'pending' | 'pass' | 'fail' | 'skipped'} preflight_status
45
+ * @property {string[]} missing_deps
46
+ * @property {string} [publisher_warning] — surfaced when a non-first-party manifest claims first_party_signed (v1 has no signature verification)
47
+ */
48
+ /**
49
+ * Scan a drivers directory for manifest.json files. Returns
50
+ * (manifest, dir, locality) tuples.
51
+ * @param {string} rootDir
52
+ * @param {'bundled' | 'user'} locality
53
+ */
54
+ function scanDriversDir(rootDir, locality) {
55
+ const out = [];
56
+ if (!existsSync(rootDir))
57
+ return out;
58
+ for (const entry of readdirSync(rootDir, { withFileTypes: true })) {
59
+ if (!entry.isDirectory())
60
+ continue;
61
+ const driverDir = join(rootDir, entry.name);
62
+ const manifestPath = join(driverDir, 'manifest.json');
63
+ if (!existsSync(manifestPath))
64
+ continue;
65
+ let manifest;
66
+ try {
67
+ manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
68
+ }
69
+ catch (e) {
70
+ out.push({ malformed: true, dir: driverDir, locality, parse_error: String(e) });
71
+ continue;
72
+ }
73
+ out.push({ manifest, dir: driverDir, locality });
74
+ }
75
+ return out;
76
+ }
77
+ /**
78
+ * @param {object} manifest
79
+ * @param {string} driverDir
80
+ * @returns {Promise<{idl_conformant: boolean, missing_exports: string[], unknown_capabilities: string[]}>}
81
+ */
82
+ async function checkIdlConformance(manifest, driverDir) {
83
+ const driverPath = join(driverDir, 'driver.mjs');
84
+ if (!existsSync(driverPath)) {
85
+ return {
86
+ idl_conformant: false,
87
+ missing_exports: ['driver.mjs not found'],
88
+ unknown_capabilities: [],
89
+ };
90
+ }
91
+ const missing_exports = [];
92
+ const unknown_capabilities = [];
93
+ const idlSet = new Set(IDL_VERB_NAMES);
94
+ try {
95
+ const mod = await import(driverPath);
96
+ for (const cap of manifest.capabilities ?? []) {
97
+ if (!idlSet.has(cap)) {
98
+ unknown_capabilities.push(cap);
99
+ continue;
100
+ }
101
+ if (typeof mod[cap] !== 'function') {
102
+ missing_exports.push(cap);
103
+ }
104
+ }
105
+ }
106
+ catch (e) {
107
+ return {
108
+ idl_conformant: false,
109
+ missing_exports: [`driver.mjs import failed: ${String(e)}`],
110
+ unknown_capabilities: [],
111
+ };
112
+ }
113
+ return {
114
+ idl_conformant: missing_exports.length === 0 && unknown_capabilities.length === 0,
115
+ missing_exports,
116
+ unknown_capabilities,
117
+ };
118
+ }
119
+ /**
120
+ * Run a driver's preflight checks. Each declared preflight with a
121
+ * structured `command: { binary, args[] }` is executed via execFile
122
+ * (no shell). Preflights without a structured command are reported as
123
+ * `pending` — there is nothing to execute. Empty preflight list is
124
+ * `skipped`.
125
+ *
126
+ * @param {object} manifest
127
+ * @returns {Promise<{preflight_status: 'pending'|'pass'|'fail'|'skipped', missing_deps: string[]}>}
128
+ */
129
+ async function runPreflight(manifest) {
130
+ const preflight = Array.isArray(manifest.preflight) ? manifest.preflight : [];
131
+ if (preflight.length === 0)
132
+ return { preflight_status: 'skipped', missing_deps: [] };
133
+ const missing_deps = [];
134
+ let executed = 0;
135
+ let failed = false;
136
+ for (const check of preflight) {
137
+ // Only execute when the preflight declares a structured local-command
138
+ // shape. Anything else (no command, or non-structured) is left as
139
+ // declaration-only — caller can drive it explicitly.
140
+ const cmd = check?.command;
141
+ if (cmd === undefined ||
142
+ cmd === null ||
143
+ typeof cmd !== 'object' ||
144
+ typeof cmd.binary !== 'string' ||
145
+ !Array.isArray(cmd.args) ||
146
+ cmd.args.some((a) => typeof a !== 'string')) {
147
+ continue;
148
+ }
149
+ executed++;
150
+ try {
151
+ await execLocalCommand({ transport: { local_command: cmd } }, [], { timeout: 5000 });
152
+ }
153
+ catch {
154
+ failed = true;
155
+ if (check.required !== false) {
156
+ missing_deps.push(check.name ?? cmd.binary);
157
+ }
158
+ }
159
+ }
160
+ if (executed === 0)
161
+ return { preflight_status: 'pending', missing_deps: [] };
162
+ return { preflight_status: failed ? 'fail' : 'pass', missing_deps };
163
+ }
164
+ /**
165
+ * Trust-gate the driver.mjs import. Bundled drivers (locality='bundled')
166
+ * always pass — they live in packages/framework/drivers/ and are first-
167
+ * party. User drivers go through the policy + TOFU decision; only
168
+ * `allow` permits the dynamic import.
169
+ *
170
+ * @param {object} manifest
171
+ * @param {'bundled'|'user'} locality
172
+ * @param {string} projectDir
173
+ * @returns {{ok: true} | {ok: false, reason: string}}
174
+ */
175
+ function trustGate(manifest, locality, projectDir) {
176
+ if (locality === 'bundled')
177
+ return { ok: true };
178
+ const policy = readPolicy(projectDir);
179
+ const tofu = readTofuLock(projectDir);
180
+ const decision = decide(manifest, tofu, policy);
181
+ if (decision.decision === 'allow')
182
+ return { ok: true };
183
+ return { ok: false, reason: decision.reason };
184
+ }
185
+ /**
186
+ * v1 has no signature verification (spec §Out of Scope). A non-Aperant
187
+ * publisher claiming `first_party_signed` is suspicious — surface a
188
+ * warning so the operator notices.
189
+ *
190
+ * @param {object} manifest
191
+ * @returns {string | undefined}
192
+ */
193
+ function publisherWarning(manifest) {
194
+ const tier = manifest?.trust?.tier;
195
+ if (tier !== 'first_party_signed')
196
+ return undefined;
197
+ const npmScope = manifest?.trust?.publisher?.npm_scope;
198
+ const githubOrg = manifest?.trust?.publisher?.github_org;
199
+ const looksLikeAperant = npmScope === '@aperant' || githubOrg === 'Mikalsen-AI';
200
+ if (looksLikeAperant)
201
+ return undefined;
202
+ return `trust.tier=first_party_signed but publisher is not @aperant — v1 does not verify signatures; treat tier as advisory`;
203
+ }
204
+ /**
205
+ * @param {string} projectDir
206
+ * @param {string[]} [_extra]
207
+ */
208
+ export async function cmdDriverDoctor(projectDir, _extra = []) {
209
+ if (!projectDir)
210
+ return err('Usage: apt-tools driver doctor <project-dir>');
211
+ const target = resolve(projectDir);
212
+ // fileURLToPath is portable across POSIX + Windows; new URL(...).pathname
213
+ // returns '/C:/...' on Windows which resolve() does not handle correctly.
214
+ const frameworkRoot = fileURLToPath(new URL('../../..', import.meta.url));
215
+ const bundled = scanDriversDir(join(frameworkRoot, 'drivers'), 'bundled');
216
+ const user = scanDriversDir(join(target, '.aperant/drivers'), 'user');
217
+ const discovered = [...bundled, ...user];
218
+ const drivers = [];
219
+ for (const d of discovered) {
220
+ if (d.malformed) {
221
+ drivers.push({
222
+ driverId: '(malformed)',
223
+ version: '?',
224
+ locality: d.locality,
225
+ manifest_valid: false,
226
+ manifest_errors: [{ path: '/', message: d.parse_error }],
227
+ idl_conformant: false,
228
+ missing_exports: [],
229
+ unknown_capabilities: [],
230
+ preflight_status: 'skipped',
231
+ missing_deps: [],
232
+ });
233
+ continue;
234
+ }
235
+ const manifest = d.manifest;
236
+ const schemaResult = validateManifest(manifest);
237
+ const manifest_valid = schemaResult.valid === true;
238
+ const manifest_errors = schemaResult.valid === false ? schemaResult.errors : [];
239
+ let idlResult = { idl_conformant: false, missing_exports: [], unknown_capabilities: [] };
240
+ let idl_skipped_reason;
241
+ if (manifest_valid) {
242
+ const gate = trustGate(manifest, d.locality, target);
243
+ if (gate.ok) {
244
+ idlResult = await checkIdlConformance(manifest, d.dir);
245
+ }
246
+ else {
247
+ // Trust gate denied. Do NOT dynamic-import the driver — that
248
+ // would execute arbitrary third-party code under the audit
249
+ // command. Report idl_conformant=false with the gate reason
250
+ // so the operator sees exactly why conformance was not run.
251
+ idl_skipped_reason = `trust gate denied: ${gate.reason}`;
252
+ }
253
+ }
254
+ let preflightResult = { preflight_status: 'skipped', missing_deps: [] };
255
+ if (manifest_valid) {
256
+ preflightResult = await runPreflight(manifest);
257
+ }
258
+ const entry = {
259
+ driverId: manifest.driverId ?? '(unknown)',
260
+ version: manifest.version ?? '?',
261
+ locality: d.locality,
262
+ manifest_valid,
263
+ manifest_errors,
264
+ idl_conformant: idlResult.idl_conformant,
265
+ missing_exports: idlResult.missing_exports,
266
+ unknown_capabilities: idlResult.unknown_capabilities,
267
+ preflight_status: preflightResult.preflight_status,
268
+ missing_deps: preflightResult.missing_deps,
269
+ };
270
+ if (idl_skipped_reason !== undefined)
271
+ entry.idl_skipped_reason = idl_skipped_reason;
272
+ const warning = publisherWarning(manifest);
273
+ if (warning !== undefined)
274
+ entry.publisher_warning = warning;
275
+ drivers.push(entry);
276
+ }
277
+ const all_pass = drivers.every((d) => d.manifest_valid && d.idl_conformant);
278
+ return ok({
279
+ status: 'ok',
280
+ command: 'driver-doctor',
281
+ projectDir: target,
282
+ drivers,
283
+ summary: {
284
+ total: drivers.length,
285
+ pass: drivers.filter((d) => d.manifest_valid && d.idl_conformant).length,
286
+ fail: drivers.filter((d) => !d.manifest_valid || !d.idl_conformant).length,
287
+ overall: all_pass ? 'pass' : 'fail',
288
+ },
289
+ });
290
+ }
291
+ //# sourceMappingURL=driver-doctor.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver-doctor.mjs","sourceRoot":"","sources":["../../../src/cli/commands/driver-doctor.mjs"],"names":[],"mappings":"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"}
@@ -118,6 +118,19 @@ async function cmdGateCheck(projectDir, extraArgs) {
118
118
  const cacheMod = await loadCache();
119
119
  const cache = cacheMod ? cacheMod.readCache(ctx.taskDir) : {};
120
120
  for (const gate of gates) {
121
+ // Applicability check fires BEFORE cache lookup or check() execution.
122
+ // Gates that don't apply to the active profile (lite vs full-pipeline)
123
+ // short-circuit with a skip verdict. Skip results are intentionally
124
+ // NOT cached (see status: 'skip' branch below), so a track change on
125
+ // the same task immediately reflects in the next gate-check.
126
+ if (typeof gate.applies_to_profile === 'function' && gate.applies_to_profile(ctx) === false) {
127
+ skipped.push({
128
+ id: gate.id,
129
+ severity: gate.severity,
130
+ reason: `profile-not-applicable: ${ctx.profile}`,
131
+ });
132
+ continue;
133
+ }
121
134
  let verdict;
122
135
  let cached = false;
123
136
  let inputHash = null;
@@ -226,6 +239,7 @@ async function cmdGateCheck(projectDir, extraArgs) {
226
239
  command: 'gate-check',
227
240
  skill,
228
241
  task_id: taskId,
242
+ profile: ctx.profile,
229
243
  passed: passed.map((p) => p.id),
230
244
  warned: warned.map((w) => ({ id: w.id, reason: w.reason })),
231
245
  skipped: skipped.map((s) => ({ id: s.id, reason: s.reason })),
@@ -1 +1 @@
1
- {"version":3,"file":"gate.mjs","sourceRoot":"","sources":["../../../src/cli/commands/gate.mjs"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gate.mjs","sourceRoot":"","sources":["../../../src/cli/commands/gate.mjs"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/init.mjs"],"names":[],"mappings":"AA0EA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wCAHW,MAAM,EAAE,GACN;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,iBAAiB,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAC,IAAI,CAAC;IAAC,WAAW,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAC,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,GAAC,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC;IAAC,mBAAmB,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IAAC,qBAAqB,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAmE1S;AA+wBD;;;;;;;GAOG;AACH,8CAHW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,WACnB,cAAc,0BAoDxB;AAoED;;;;;;GAMG;AACH,oCAJW,MAAM,cACN,MAAM,EAAE,GACN,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAgM3D;;;;;cA9kCa,MAAM,EAAE;;;;qBACR,CAAC,GAAC,CAAC,GAAC,CAAC,GAAC,CAAC;;;;gBACP,MAAM,GAAC,MAAM;;;;4BACb,MAAM,EAAE;;;;aACR,OAAO;;;;mBACP,OAAO;eACP,OAAO,0BAA0B,EAAE,eAAe;;;;;;;;;aAErC,MAAM;eAAS,OAAO;cAAQ,MAAM;iBAAW,MAAM;;;;;;aAErD,MAAM;eAAS,OAAO;gBAAU,MAAM;;;;;;kBAEvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;0BAAoB,OAAO,EAAE;2BAAqB,OAAO,EAAE;oBAAc,OAAO,EAAE"}
1
+ {"version":3,"file":"init.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/init.mjs"],"names":[],"mappings":"AA4EA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wCAHW,MAAM,EAAE,GACN;IAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,iBAAiB,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAC,IAAI,CAAC;IAAC,WAAW,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAC,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,CAAC,GAAC,CAAC,GAAC,CAAC,GAAC,CAAC,CAAC;IAAC,mBAAmB,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,aAAa,EAAE,OAAO,CAAC;IAAC,qBAAqB,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAmE1S;AAwzBD;;;;;;;GAOG;AACH,8CAHW,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,WACnB,cAAc,0BAoDxB;AAoED;;;;;;GAMG;AACH,oCAJW,MAAM,cACN,MAAM,EAAE,GACN,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA+L3D;;;;;cAtnCa,MAAM,EAAE;;;;qBACR,CAAC,GAAC,CAAC,GAAC,CAAC,GAAC,CAAC;;;;gBACP,MAAM,GAAC,MAAM;;;;4BACb,MAAM,EAAE;;;;aACR,OAAO;;;;mBACP,OAAO;eACP,OAAO,0BAA0B,EAAE,eAAe;;;;;;;;;aAErC,MAAM;eAAS,OAAO;cAAQ,MAAM;iBAAW,MAAM;;;;;;aAErD,MAAM;eAAS,OAAO;gBAAU,MAAM;;;;;;kBAEvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;0BAAoB,OAAO,EAAE;2BAAqB,OAAO,EAAE;oBAAc,OAAO,EAAE"}
@@ -3,8 +3,9 @@
3
3
  * rewrite, 2026-04).
4
4
  *
5
5
  * Replaces the previous Claude-only `cp -r` installer with the per-runtime
6
- * transform pipeline (src/cli/install/pipeline.mjs). All 14 runtime targets
7
- * supported via `--<runtime>` flags or `--all`. Default with no flags in
6
+ * transform pipeline (src/cli/install/pipeline.mjs). Registered runtime
7
+ * targets are supported via `--<runtime>` flags or `--all`. Default with no
8
+ * flags in
8
9
  * non-TTY mode → `--claude` (backward compat — existing skills invoke
9
10
  * `apt-tools init <dir>` with no flags). Default in TTY → interactive prompt
10
11
  * with auto-detection markers.
@@ -28,8 +29,9 @@ import { buildAperantGitignoreTemplate } from '../config/upgrade-gitignore.mjs';
28
29
  import { detectPublicRemote } from '../git/remote.mjs';
29
30
  import { detectArchetype } from '../install/archetype.mjs';
30
31
  import { installKernel } from '../install/install-kernel.mjs';
32
+ import { MANIFEST_FILENAME } from '../install/manifest.mjs';
31
33
  import { discoverCanonicalFiles, runInstall, writeLastInstallSummary, } from '../install/pipeline.mjs';
32
- import { RUNTIMES, suggestRuntimes } from '../install/runtime-detect.mjs';
34
+ import { getRuntime, RUNTIMES, suggestRuntimes } from '../install/runtime-detect.mjs';
33
35
  import { runLegacyCleanup } from '../install/runtime-migrate.mjs';
34
36
  import { CLASS_A_SETTINGS, CLASS_B_SETTINGS, findClassDescriptor, parseClassFlags, } from '../install/setting-class.mjs';
35
37
  import { detectAgentRuntime } from '../util/agent-runtime.mjs';
@@ -350,6 +352,44 @@ function selectRuntimes(targetDir, parsedFlags) {
350
352
  }
351
353
  return [...suggested];
352
354
  }
355
+ /**
356
+ * Return the runtime ids that should be installed during a no-schema-drift
357
+ * init. A current config is not enough to prove runtime files exist on this
358
+ * machine: team repos often carry `.aperant/config.json` but not local
359
+ * runtime roots/manifests.
360
+ *
361
+ * @param {string} targetDir
362
+ * @param {string[]} runtimeIds
363
+ * @returns {string[]}
364
+ */
365
+ function runtimesMissingManifest(targetDir, runtimeIds) {
366
+ const missing = [];
367
+ for (const id of runtimeIds) {
368
+ const runtime = getRuntime(id);
369
+ if (!runtime)
370
+ continue;
371
+ const manifestPath = join(targetDir, runtime.installRoot, MANIFEST_FILENAME);
372
+ if (!existsSync(manifestPath))
373
+ missing.push(id);
374
+ }
375
+ return missing;
376
+ }
377
+ /**
378
+ * Current-schema init should still run the runtime installer when the user
379
+ * explicitly requested runtimes, when --force-runtimes is present, or when
380
+ * local runtime roots are suggested but have no apt manifest.
381
+ *
382
+ * @param {string} targetDir
383
+ * @param {ReturnType<typeof parseInstallFlags>} parsedFlags
384
+ * @returns {string[]}
385
+ */
386
+ function selectNoDriftRuntimeInstallIds(targetDir, parsedFlags) {
387
+ if (parsedFlags.forceRuntimes)
388
+ return selectRuntimes(targetDir, parsedFlags);
389
+ if (parsedFlags.runtimes_explicit)
390
+ return parsedFlags.runtimes;
391
+ return runtimesMissingManifest(targetDir, suggestRuntimes(targetDir));
392
+ }
353
393
  /**
354
394
  * Non-TTY / scripted path — derive answers from flags + sensible defaults,
355
395
  * gated by the Class A/B classifier (spec R2 + R3).
@@ -600,11 +640,16 @@ async function interactiveInterview(targetDir, version, canonicalRoot, archetype
600
640
  migration.applied_defaults.length === 0 &&
601
641
  migration.auto_added.length === 0;
602
642
  if (noDrift) {
603
- // 0.6.7 (Bug 2 fix) — `--force-runtimes` bypasses the TTY
604
- // "Nothing to do." outro so the runtime walker re-stamps every
605
- // manifest; cmdInit's force-runtimes synthesis path takes over.
606
- if (parsedFlags.forceRuntimes) {
607
- return { upgrade_noop: true, skipBootstrap, migration };
643
+ const runtimeInstallIds = selectNoDriftRuntimeInstallIds(targetDir, parsedFlags);
644
+ // Runtime repair bypasses the TTY "Nothing to do." outro so the
645
+ // runtime walker can re-stamp missing manifests first.
646
+ if (runtimeInstallIds.length > 0) {
647
+ return {
648
+ upgrade_noop: true,
649
+ skipBootstrap,
650
+ migration,
651
+ runtime_reinstall_runtimes: runtimeInstallIds,
652
+ };
608
653
  }
609
654
  process.stdout.write(`\n${aperantBanner(version)}\n\n`);
610
655
  clack.intro('install');
@@ -1058,20 +1103,19 @@ export async function cmdInit(projectDir, extraArgs = []) {
1058
1103
  rerun_with: answers.rerun_with,
1059
1104
  }, 2);
1060
1105
  }
1061
- // Upgrade no-drift — short-circuit before installRuntimes.
1062
- // /apt:update is the right surface for refreshing skills on a
1063
- // no-drift run; init's job here is to confirm the schema is current.
1106
+ const noDriftRuntimeInstallIds = answers?.upgrade_noop
1107
+ ? (answers.runtime_reinstall_runtimes ??
1108
+ selectNoDriftRuntimeInstallIds(installTarget, parsedFlags))
1109
+ : [];
1110
+ // Upgrade no-drift with no runtime work — short-circuit before
1111
+ // installRuntimes. /apt:update remains the right surface for refreshing
1112
+ // already-manifested skills; init only repairs selected or suggested
1113
+ // runtime roots that lack manifests.
1064
1114
  // The bootstrap auto-chain still runs (it's deterministic and
1065
1115
  // idempotent — preserves PROJECT.md, refreshes sidecar from it).
1066
1116
  // In TTY mode clack already rendered "Nothing to do." to stdout,
1067
1117
  // so suppress the JSON envelope (matches the cancelled path).
1068
- //
1069
- // 0.6.7 (Bug 2 fix) — `--force-runtimes` bypasses this short-circuit
1070
- // so `/apt:update` can re-stamp every runtime manifest even when
1071
- // `.aperant/config.json` is at the current schema. We synthesize a
1072
- // real InstallAnswers shape from the existing config so
1073
- // installRuntimes + finishInit run their normal upgrade path.
1074
- if (answers?.upgrade_noop && !parsedFlags.forceRuntimes) {
1118
+ if (answers?.upgrade_noop && noDriftRuntimeInstallIds.length === 0) {
1075
1119
  if (interactiveTty)
1076
1120
  return rawText('', 0);
1077
1121
  const bootstrap = answers.skipBootstrap
@@ -1087,18 +1131,14 @@ export async function cmdInit(projectDir, extraArgs = []) {
1087
1131
  message: `Already up to date — v${version}`,
1088
1132
  });
1089
1133
  }
1090
- // 0.6.7 (Bug 2 fix) when forceRuntimes is set on a no-drift run,
1091
- // synthesize a real InstallAnswers shape from the existing config so
1092
- // the runtime walker re-stamps every manifest. Visibility/autonomy/
1093
- // cross-verification are read from answers.migration.migrated (already
1094
- // in memory from nonInteractiveAnswers — avoids a second config read);
1095
- // runtimes resolved via selectRuntimes helper shared with the upgrade path.
1134
+ // Current-schema runtime installsynthesize a real InstallAnswers
1135
+ // shape from the existing config so installRuntimes + finishInit run
1136
+ // their normal upgrade path.
1096
1137
  let effectiveAnswers = answers;
1097
- if (answers?.upgrade_noop && parsedFlags.forceRuntimes) {
1138
+ if (answers?.upgrade_noop && noDriftRuntimeInstallIds.length > 0) {
1098
1139
  const existing = answers.migration?.migrated || {};
1099
- const runtimes = selectRuntimes(installTarget, parsedFlags);
1100
1140
  effectiveAnswers = {
1101
- runtimes,
1141
+ runtimes: noDriftRuntimeInstallIds,
1102
1142
  autonomyDefault: existing?.autonomy?.default ?? 1,
1103
1143
  visibility: existing?.share?.visibility === 'team' ? 'team' : 'solo',
1104
1144
  crossVerificationTools: existing?.multi_model?.cross_verification?.tools ?? [],
@@ -1110,12 +1150,15 @@ export async function cmdInit(projectDir, extraArgs = []) {
1110
1150
  explicit_inputs: collectExplicitInputs(parsedFlags),
1111
1151
  };
1112
1152
  }
1113
- // FRAMEWORK-BUG-021 — sweep the legacy `.agents/skills/` codex tree
1153
+ // FRAMEWORK-BUG-021 — sweep the legacy `.codex/` codex tree
1114
1154
  // BEFORE the install pipeline runs so the install can re-stamp
1115
- // `.codex/` against a clean slate. Only fires when codex is in the
1116
- // requested runtime set and `--keep-legacy` was not passed; the
1117
- // helper itself is conservative (no-op on managed installs, no-op
1118
- // when no legacy framework files are present).
1155
+ // `.agents/skills/<folder>/SKILL.md` (Codex CLI's documented
1156
+ // surface, per https://developers.openai.com/codex/skills) against
1157
+ // a clean slate. Only fires when codex is in the requested runtime
1158
+ // set and `--keep-legacy` was not passed; the helper itself is
1159
+ // conservative (no-op on managed installs, no-op when no legacy
1160
+ // framework files are present). The v0.8.2 inversion is
1161
+ // documented in `runtime-migrate.mjs:7-12`.
1119
1162
  let legacyCleanup = null;
1120
1163
  if (effectiveAnswers.runtimes.includes('codex')) {
1121
1164
  if (parsedFlags.keepLegacy) {
@@ -1125,7 +1168,7 @@ export async function cmdInit(projectDir, extraArgs = []) {
1125
1168
  const cleanup = runLegacyCleanup({ targetDir: installTarget });
1126
1169
  legacyCleanup = { runtime: 'codex', ...cleanup };
1127
1170
  if (cleanup.ran && cleanup.retained.length > 0) {
1128
- process.stderr.write(`[apt-tools] legacy_cleanup retained ${cleanup.retained.length} user-added path(s) under .agents/skills/: ${cleanup.retained.join(', ')}\n`);
1171
+ process.stderr.write(`[apt-tools] legacy_cleanup retained ${cleanup.retained.length} user-added path(s) under .codex/: ${cleanup.retained.join(', ')}\n`);
1129
1172
  }
1130
1173
  }
1131
1174
  }