@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.
- package/CHANGELOG.md +311 -1
- package/README.md +12 -0
- package/agents/apt-planner.md +5 -4
- package/dist/cli/commands/adr.mjs +1 -1
- package/dist/cli/commands/audit-branch-current.d.mts +25 -0
- package/dist/cli/commands/audit-branch-current.d.mts.map +1 -0
- package/dist/cli/commands/audit-branch-current.mjs +252 -0
- package/dist/cli/commands/audit-branch-current.mjs.map +1 -0
- package/dist/cli/commands/audit.d.mts.map +1 -1
- package/dist/cli/commands/audit.mjs +13 -2
- package/dist/cli/commands/audit.mjs.map +1 -1
- package/dist/cli/commands/check-version.d.mts.map +1 -1
- package/dist/cli/commands/check-version.mjs +19 -1
- package/dist/cli/commands/check-version.mjs.map +1 -1
- package/dist/cli/commands/context.mjs +3 -3
- package/dist/cli/commands/context.mjs.map +1 -1
- package/dist/cli/commands/detect-runtime.d.mts +6 -0
- package/dist/cli/commands/detect-runtime.d.mts.map +1 -0
- package/dist/cli/commands/detect-runtime.mjs +136 -0
- package/dist/cli/commands/detect-runtime.mjs.map +1 -0
- package/dist/cli/commands/driver-doctor.d.mts +29 -0
- package/dist/cli/commands/driver-doctor.d.mts.map +1 -0
- package/dist/cli/commands/driver-doctor.mjs +291 -0
- package/dist/cli/commands/driver-doctor.mjs.map +1 -0
- package/dist/cli/commands/gate.mjs +14 -0
- package/dist/cli/commands/gate.mjs.map +1 -1
- package/dist/cli/commands/init.d.mts.map +1 -1
- package/dist/cli/commands/init.mjs +76 -33
- package/dist/cli/commands/init.mjs.map +1 -1
- package/dist/cli/commands/install-from-source.d.mts +2 -0
- package/dist/cli/commands/install-from-source.d.mts.map +1 -0
- package/dist/cli/commands/install-from-source.mjs +2 -0
- package/dist/cli/commands/install-from-source.mjs.map +1 -0
- package/dist/cli/commands/modes.mjs +1 -1
- package/dist/cli/commands/route.d.mts.map +1 -1
- package/dist/cli/commands/route.mjs +38 -1
- package/dist/cli/commands/route.mjs.map +1 -1
- package/dist/cli/commands/triage.mjs +1 -1
- package/dist/cli/config/load.d.mts.map +1 -1
- package/dist/cli/config/load.mjs +9 -3
- package/dist/cli/config/load.mjs.map +1 -1
- package/dist/cli/coordination/auto-emit-artifact-ready.mjs +1 -1
- package/dist/cli/coordination/event-schema.d.mts.map +1 -1
- package/dist/cli/coordination/event-schema.mjs +18 -0
- package/dist/cli/coordination/event-schema.mjs.map +1 -1
- package/dist/cli/design/frontmatter-schema.d.mts +4 -4
- package/dist/cli/dispatch.d.mts.map +1 -1
- package/dist/cli/dispatch.mjs +18 -1
- package/dist/cli/dispatch.mjs.map +1 -1
- package/dist/cli/gate/context.d.mts +1 -0
- package/dist/cli/gate/context.d.mts.map +1 -1
- package/dist/cli/gate/context.mjs +14 -1
- package/dist/cli/gate/context.mjs.map +1 -1
- package/dist/cli/gate/gates/consistency-check.d.mts +1 -0
- package/dist/cli/gate/gates/consistency-check.d.mts.map +1 -1
- package/dist/cli/gate/gates/consistency-check.mjs +1 -0
- package/dist/cli/gate/gates/consistency-check.mjs.map +1 -1
- package/dist/cli/gate/gates/review-clean.d.mts +1 -0
- package/dist/cli/gate/gates/review-clean.d.mts.map +1 -1
- package/dist/cli/gate/gates/review-clean.mjs +1 -0
- package/dist/cli/gate/gates/review-clean.mjs.map +1 -1
- package/dist/cli/gate/gates/verify-approved.d.mts +1 -0
- package/dist/cli/gate/gates/verify-approved.d.mts.map +1 -1
- package/dist/cli/gate/gates/verify-approved.mjs +1 -0
- package/dist/cli/gate/gates/verify-approved.mjs.map +1 -1
- package/dist/cli/gate/registry.d.mts.map +1 -1
- package/dist/cli/gate/registry.mjs +9 -1
- package/dist/cli/gate/registry.mjs.map +1 -1
- package/dist/cli/install/cli-to-install-root.d.mts.map +1 -1
- package/dist/cli/install/cli-to-install-root.mjs +0 -2
- package/dist/cli/install/cli-to-install-root.mjs.map +1 -1
- package/dist/cli/install/find-workspace-framework-version.d.mts +16 -0
- package/dist/cli/install/find-workspace-framework-version.d.mts.map +1 -0
- package/dist/cli/install/find-workspace-framework-version.mjs +85 -0
- package/dist/cli/install/find-workspace-framework-version.mjs.map +1 -0
- package/dist/cli/install/install-from-source.d.mts +10 -0
- package/dist/cli/install/install-from-source.d.mts.map +1 -0
- package/dist/cli/install/install-from-source.mjs +271 -0
- package/dist/cli/install/install-from-source.mjs.map +1 -0
- package/dist/cli/install/install-kernel.d.mts.map +1 -1
- package/dist/cli/install/install-kernel.mjs +24 -0
- package/dist/cli/install/install-kernel.mjs.map +1 -1
- package/dist/cli/install/legacy-paths.d.mts +33 -11
- package/dist/cli/install/legacy-paths.d.mts.map +1 -1
- package/dist/cli/install/legacy-paths.mjs +161 -39
- package/dist/cli/install/legacy-paths.mjs.map +1 -1
- package/dist/cli/install/runtime-detect.d.mts +2 -6
- package/dist/cli/install/runtime-detect.d.mts.map +1 -1
- package/dist/cli/install/runtime-detect.mjs +9 -4
- package/dist/cli/install/runtime-detect.mjs.map +1 -1
- package/dist/cli/install/runtime-migrate.d.mts +34 -14
- package/dist/cli/install/runtime-migrate.d.mts.map +1 -1
- package/dist/cli/install/runtime-migrate.mjs +63 -30
- package/dist/cli/install/runtime-migrate.mjs.map +1 -1
- package/dist/cli/install/transforms/codex.d.mts.map +1 -1
- package/dist/cli/install/transforms/codex.mjs +28 -17
- package/dist/cli/install/transforms/codex.mjs.map +1 -1
- package/dist/cli/install/transforms/pi.d.mts +6 -0
- package/dist/cli/install/transforms/pi.d.mts.map +1 -0
- package/dist/cli/install/transforms/pi.mjs +37 -0
- package/dist/cli/install/transforms/pi.mjs.map +1 -0
- package/dist/cli/personas/sidecar.d.mts +1 -1
- package/dist/cli/roadmap/lifecycle.d.mts +1 -1
- package/dist/cli/roadmap/rollup.d.mts +2 -2
- package/dist/cli/skill-author/contract.mjs +2 -2
- package/dist/cli/skill-author/contract.mjs.map +1 -1
- package/dist/cli/verify-proof/audit.d.mts +34 -0
- package/dist/cli/verify-proof/audit.d.mts.map +1 -0
- package/dist/cli/verify-proof/audit.mjs +53 -0
- package/dist/cli/verify-proof/audit.mjs.map +1 -0
- package/dist/cli/verify-proof/exec.d.mts +20 -0
- package/dist/cli/verify-proof/exec.d.mts.map +1 -0
- package/dist/cli/verify-proof/exec.mjs +74 -0
- package/dist/cli/verify-proof/exec.mjs.map +1 -0
- package/dist/cli/verify-proof/idl/index.d.mts +2 -0
- package/dist/cli/verify-proof/idl/index.d.mts.map +1 -0
- package/dist/cli/verify-proof/idl/index.mjs +14 -0
- package/dist/cli/verify-proof/idl/index.mjs.map +1 -0
- package/dist/cli/verify-proof/idl/types.d.ts +9 -0
- package/dist/cli/verify-proof/idl/types.d.ts.map +1 -0
- package/dist/cli/verify-proof/idl/types.js +9 -0
- package/dist/cli/verify-proof/idl/types.js.map +1 -0
- package/dist/cli/verify-proof/manifest-validator.d.mts +19 -0
- package/dist/cli/verify-proof/manifest-validator.d.mts.map +1 -0
- package/dist/cli/verify-proof/manifest-validator.mjs +182 -0
- package/dist/cli/verify-proof/manifest-validator.mjs.map +1 -0
- package/dist/cli/verify-proof/resolver.d.mts +43 -0
- package/dist/cli/verify-proof/resolver.d.mts.map +1 -0
- package/dist/cli/verify-proof/resolver.mjs +160 -0
- package/dist/cli/verify-proof/resolver.mjs.map +1 -0
- package/dist/cli/verify-proof/runtime-detect.d.mts +27 -0
- package/dist/cli/verify-proof/runtime-detect.d.mts.map +1 -0
- package/dist/cli/verify-proof/runtime-detect.mjs +116 -0
- package/dist/cli/verify-proof/runtime-detect.mjs.map +1 -0
- package/dist/cli/verify-proof/trust.d.mts +70 -0
- package/dist/cli/verify-proof/trust.d.mts.map +1 -0
- package/dist/cli/verify-proof/trust.mjs +174 -0
- package/dist/cli/verify-proof/trust.mjs.map +1 -0
- package/dist/plugin/.claude-plugin/plugin.json +4 -1
- package/dist/plugin/agents/apt-executor.md +12 -0
- package/dist/plugin/agents/apt-planner.md +5 -4
- package/dist/plugin/agents/apt-team-docs-narrator.md +11 -0
- package/dist/plugin/skills/apt/SKILL.md +78 -8
- package/dist/plugin/skills/apt-caveman/SKILL.md +64 -0
- package/dist/plugin/skills/apt-debug/SKILL.md +36 -4
- package/dist/plugin/skills/apt-debug/appendices/diagnose-discipline.md +2 -11
- package/dist/plugin/skills/apt-discuss/SKILL.md +4 -4
- package/dist/plugin/skills/apt-discuss/appendices/grill-discipline.md +2 -11
- package/dist/plugin/skills/apt-discuss/appendices/zoom-out-helper.md +0 -8
- package/dist/plugin/skills/apt-execute/SKILL.md +40 -4
- package/dist/plugin/skills/apt-execute/appendices/tdd-mode.md +2 -10
- package/dist/plugin/skills/apt-fan-out/SKILL.md +159 -0
- package/dist/plugin/skills/apt-handoff/SKILL.md +228 -0
- package/dist/plugin/skills/apt-improve/DEEPENING.md +0 -8
- package/dist/plugin/skills/apt-improve/INTERFACE-DESIGN.md +0 -8
- package/dist/plugin/skills/apt-improve/LANGUAGE.md +0 -8
- package/dist/plugin/skills/apt-improve/SKILL.md +4 -4
- package/dist/plugin/skills/apt-plan/SKILL.md +23 -5
- package/dist/plugin/skills/apt-plan/adapters/conductor.md +1 -1
- package/dist/plugin/skills/apt-pr-review/SKILL.md +8 -1
- package/dist/plugin/skills/apt-prototype/LOGIC.md +0 -8
- package/dist/plugin/skills/apt-prototype/SKILL.md +4 -4
- package/dist/plugin/skills/apt-prototype/UI.md +0 -8
- package/dist/plugin/skills/apt-quick/SKILL.md +31 -1
- package/dist/plugin/skills/apt-resume/SKILL.md +54 -31
- package/dist/plugin/skills/apt-review/SKILL.md +4 -0
- package/dist/plugin/skills/apt-run/SKILL.md +134 -21
- package/dist/plugin/skills/apt-setup/SKILL.md +97 -8
- package/dist/plugin/skills/apt-ship/SKILL.md +165 -9
- package/dist/plugin/skills/apt-spar/SKILL.md +77 -25
- package/dist/plugin/skills/apt-triage/AGENT-BRIEF.md +0 -8
- package/dist/plugin/skills/apt-triage/OUT-OF-SCOPE.md +0 -7
- package/dist/plugin/skills/apt-triage/SKILL.md +2 -2
- package/dist/plugin/skills/apt-update/SKILL.md +74 -17
- package/dist/plugin/skills/apt-verify/SKILL.md +11 -0
- package/dist/plugin/skills/apt-verify-proof/SKILL.md +48 -1
- package/dist/plugin/skills/apt-watch-ci/SKILL.md +2 -2
- package/dist/plugin/skills/apt-zoom-out/SKILL.md +3 -3
- package/dist/schemas/quick-task.d.ts +17 -17
- package/dist/schemas/quick-task.d.ts.map +1 -1
- package/dist/schemas/quick-task.js +2 -2
- package/dist/schemas/quick-task.js.map +1 -1
- package/dist/types/config.d.ts +33 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/state.d.ts +1 -1
- package/dist/types/state.d.ts.map +1 -1
- package/dist/types/task-record.d.ts +1 -1
- package/dist/types/task-record.d.ts.map +1 -1
- package/package.json +134 -133
- package/prompts/planner.md +1 -1
- package/prompts/spec_writer.md +1 -1
- package/skills/apt/SKILL.md +78 -8
- package/skills/apt-caveman/SKILL.md +64 -0
- package/skills/apt-debug/SKILL.md +36 -4
- package/skills/apt-debug/appendices/diagnose-discipline.md +2 -11
- package/skills/apt-discuss/SKILL.md +4 -4
- package/skills/apt-discuss/appendices/grill-discipline.md +2 -11
- package/skills/apt-discuss/appendices/zoom-out-helper.md +0 -8
- package/skills/apt-execute/SKILL.md +27 -4
- package/skills/apt-execute/appendices/tdd-mode.md +2 -10
- package/skills/apt-fan-out/SKILL.md +36 -1
- package/skills/apt-handoff/SKILL.md +228 -0
- package/skills/apt-improve/DEEPENING.md +0 -8
- package/skills/apt-improve/INTERFACE-DESIGN.md +0 -8
- package/skills/apt-improve/LANGUAGE.md +0 -8
- package/skills/apt-improve/SKILL.md +4 -4
- package/skills/apt-plan/SKILL.md +23 -5
- package/skills/apt-plan/adapters/conductor.md +1 -1
- package/skills/apt-planner.md +1 -1
- package/skills/apt-prototype/LOGIC.md +0 -8
- package/skills/apt-prototype/SKILL.md +4 -4
- package/skills/apt-prototype/UI.md +0 -8
- package/skills/apt-quick/SKILL.md +31 -1
- package/skills/apt-resume/SKILL.md +54 -31
- package/skills/apt-run/SKILL.md +114 -16
- package/skills/apt-setup/SKILL.md +97 -8
- package/skills/apt-ship/SKILL.md +165 -9
- package/skills/apt-spar/SKILL.md +65 -16
- package/skills/apt-triage/AGENT-BRIEF.md +0 -8
- package/skills/apt-triage/OUT-OF-SCOPE.md +0 -7
- package/skills/apt-triage/SKILL.md +2 -2
- package/skills/apt-update/SKILL.md +74 -17
- package/skills/apt-verify-proof/SKILL.md +48 -1
- package/skills/apt-zoom-out/SKILL.md +3 -3
- package/src/cli/commands/adr.mjs +1 -1
- package/src/cli/commands/audit-branch-current.mjs +250 -0
- package/src/cli/commands/audit.mjs +13 -2
- package/src/cli/commands/check-version.mjs +20 -1
- package/src/cli/commands/context.mjs +3 -3
- package/src/cli/commands/detect-runtime.mjs +134 -0
- package/src/cli/commands/driver-doctor.mjs +294 -0
- package/src/cli/commands/gate.mjs +15 -0
- package/src/cli/commands/init.mjs +75 -33
- package/src/cli/commands/install-from-source.mjs +1 -0
- package/src/cli/commands/modes.mjs +1 -1
- package/src/cli/commands/route.mjs +42 -1
- package/src/cli/commands/triage.mjs +1 -1
- package/src/cli/config/load.mjs +9 -3
- package/src/cli/coordination/auto-emit-artifact-ready.mjs +1 -1
- package/src/cli/coordination/event-schema.mjs +19 -0
- package/src/cli/dispatch.mjs +17 -1
- package/src/cli/gate/context.mjs +20 -1
- package/src/cli/gate/gates/consistency-check.mjs +1 -0
- package/src/cli/gate/gates/review-clean.mjs +1 -0
- package/src/cli/gate/gates/verify-approved.mjs +1 -0
- package/src/cli/gate/registry.mjs +11 -1
- package/src/cli/install/cli-to-install-root.mjs +0 -2
- package/src/cli/install/find-workspace-framework-version.mjs +88 -0
- package/src/cli/install/install-from-source.mjs +276 -0
- package/src/cli/install/install-kernel.mjs +24 -0
- package/src/cli/install/legacy-paths.mjs +162 -39
- package/src/cli/install/runtime-detect.mjs +9 -4
- package/src/cli/install/runtime-migrate.mjs +63 -30
- package/src/cli/install/transforms/codex.mjs +26 -17
- package/src/cli/install/transforms/pi.mjs +37 -0
- package/src/cli/skill-author/contract.mjs +2 -2
- package/src/cli/verify-proof/.gitkeep +0 -0
- package/src/cli/verify-proof/audit.mjs +55 -0
- package/src/cli/verify-proof/exec.mjs +74 -0
- package/src/cli/verify-proof/idl/index.mjs +24 -0
- package/src/cli/verify-proof/idl/types.ts +41 -0
- package/src/cli/verify-proof/manifest-schema.json +211 -0
- package/src/cli/verify-proof/manifest-validator.mjs +184 -0
- package/src/cli/verify-proof/resolver.mjs +163 -0
- package/src/cli/verify-proof/runtime-detect.mjs +122 -0
- package/src/cli/verify-proof/trust.mjs +187 -0
- package/templates/adr-format.md +0 -8
- package/templates/aperant-claude-md-appendix.md +1 -1
- package/templates/context-format.md +1 -9
- package/templates/proof-verification.md +19 -5
- 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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AACzE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE5E;;;;;;;;;;;;;;GAcG;AAEH;;;;;GAKG;AACH,SAAS,cAAc,CAAC,OAAO,EAAE,QAAQ;IACxC,MAAM,GAAG,GAAG,EAAE,CAAA;IACd,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,GAAG,CAAA;IACpC,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAQ;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;QAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;QACrD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;YAAE,SAAQ;QACvC,IAAI,QAAQ,CAAA;QACZ,IAAI,CAAC;YACJ,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAA;QAC3D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACZ,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YAC/E,SAAQ;QACT,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAA;IACjD,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,mBAAmB,CAAC,QAAQ,EAAE,SAAS;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;IAChD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7B,OAAO;YACN,cAAc,EAAE,KAAK;YACrB,eAAe,EAAE,CAAC,sBAAsB,CAAC;YACzC,oBAAoB,EAAE,EAAE;SACxB,CAAA;IACF,CAAC;IACD,MAAM,eAAe,GAAG,EAAE,CAAA;IAC1B,MAAM,oBAAoB,GAAG,EAAE,CAAA;IAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAA;IACtC,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;QACpC,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAC9B,SAAQ;YACT,CAAC;YACD,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC;gBACpC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC1B,CAAC;QACF,CAAC;IACF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,OAAO;YACN,cAAc,EAAE,KAAK;YACrB,eAAe,EAAE,CAAC,6BAA6B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3D,oBAAoB,EAAE,EAAE;SACxB,CAAA;IACF,CAAC;IACD,OAAO;QACN,cAAc,EAAE,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC;QACjF,eAAe;QACf,oBAAoB;KACpB,CAAA;AACF,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,YAAY,CAAC,QAAQ;IACnC,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;IAC7E,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,CAAA;IAEpF,MAAM,YAAY,GAAG,EAAE,CAAA;IACvB,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,IAAI,MAAM,GAAG,KAAK,CAAA;IAElB,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;QAC/B,sEAAsE;QACtE,kEAAkE;QAClE,qDAAqD;QACrD,MAAM,GAAG,GAAG,KAAK,EAAE,OAAO,CAAA;QAC1B,IACC,GAAG,KAAK,SAAS;YACjB,GAAG,KAAK,IAAI;YACZ,OAAO,GAAG,KAAK,QAAQ;YACvB,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;YAC9B,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAC1C,CAAC;YACF,SAAQ;QACT,CAAC;QACD,QAAQ,EAAE,CAAA;QACV,IAAI,CAAC;YACJ,MAAM,gBAAgB,CAAC,EAAE,SAAS,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QACrF,CAAC;QAAC,MAAM,CAAC;YACR,MAAM,GAAG,IAAI,CAAA;YACb,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;gBAC9B,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAAA;YAC5C,CAAC;QACF,CAAC;IACF,CAAC;IAED,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,CAAA;IAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,EAAE,CAAA;AACpE,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU;IAChD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;IAC/C,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;IACrC,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IAC/C,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;IACtD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAA;AAC9C,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,gBAAgB,CAAC,QAAQ;IACjC,MAAM,IAAI,GAAG,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAA;IAClC,IAAI,IAAI,KAAK,oBAAoB;QAAE,OAAO,SAAS,CAAA;IACnD,MAAM,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAA;IACtD,MAAM,SAAS,GAAG,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,CAAA;IACxD,MAAM,gBAAgB,GAAG,QAAQ,KAAK,UAAU,IAAI,SAAS,KAAK,aAAa,CAAA;IAC/E,IAAI,gBAAgB;QAAE,OAAO,SAAS,CAAA;IACtC,OAAO,qHAAqH,CAAA;AAC7H,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,EAAE;IAC5D,IAAI,CAAC,UAAU;QAAE,OAAO,GAAG,CAAC,8CAA8C,CAAC,CAAA;IAC3E,MAAM,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAElC,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACzE,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAA;IACzE,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,kBAAkB,CAAC,EAAE,MAAM,CAAC,CAAA;IACrE,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,CAAA;IAExC,MAAM,OAAO,GAAG,EAAE,CAAA;IAClB,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,aAAa;gBACvB,OAAO,EAAE,GAAG;gBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,cAAc,EAAE,KAAK;gBACrB,eAAe,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBACxD,cAAc,EAAE,KAAK;gBACrB,eAAe,EAAE,EAAE;gBACnB,oBAAoB,EAAE,EAAE;gBACxB,gBAAgB,EAAE,SAAS;gBAC3B,YAAY,EAAE,EAAE;aAChB,CAAC,CAAA;YACF,SAAQ;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAA;QAC3B,MAAM,YAAY,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAC/C,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK,KAAK,IAAI,CAAA;QAClD,MAAM,eAAe,GAAG,YAAY,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;QAE/E,IAAI,SAAS,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE,oBAAoB,EAAE,EAAE,EAAE,CAAA;QACxF,IAAI,kBAAkB,CAAA;QACtB,IAAI,cAAc,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;YACpD,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,SAAS,GAAG,MAAM,mBAAmB,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;YACvD,CAAC;iBAAM,CAAC;gBACP,6DAA6D;gBAC7D,2DAA2D;gBAC3D,4DAA4D;gBAC5D,4DAA4D;gBAC5D,kBAAkB,GAAG,sBAAsB,IAAI,CAAC,MAAM,EAAE,CAAA;YACzD,CAAC;QACF,CAAC;QAED,IAAI,eAAe,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,CAAA;QACvE,IAAI,cAAc,EAAE,CAAC;YACpB,eAAe,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAA;QAC/C,CAAC;QAED,MAAM,KAAK,GAAG;YACb,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,WAAW;YAC1C,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,GAAG;YAChC,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,cAAc;YACd,eAAe;YACf,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,eAAe,EAAE,SAAS,CAAC,eAAe;YAC1C,oBAAoB,EAAE,SAAS,CAAC,oBAAoB;YACpD,gBAAgB,EAAE,eAAe,CAAC,gBAAgB;YAClD,YAAY,EAAE,eAAe,CAAC,YAAY;SAC1C,CAAA;QACD,IAAI,kBAAkB,KAAK,SAAS;YAAE,KAAK,CAAC,kBAAkB,GAAG,kBAAkB,CAAA;QACnF,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAC1C,IAAI,OAAO,KAAK,SAAS;YAAE,KAAK,CAAC,iBAAiB,GAAG,OAAO,CAAA;QAC5D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,CAAC,CAAA;IAC3E,OAAO,EAAE,CAAC;QACT,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,eAAe;QACxB,UAAU,EAAE,MAAM;QAClB,OAAO;QACP,OAAO,EAAE;YACR,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM;YACxE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,MAAM;YAC1E,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;SACnC;KACD,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -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":"
|
|
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).
|
|
7
|
-
* supported via `--<runtime>` flags or `--all`. Default with no
|
|
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
|
-
|
|
604
|
-
// "Nothing to do." outro so the
|
|
605
|
-
//
|
|
606
|
-
if (
|
|
607
|
-
return {
|
|
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
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
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
|
-
//
|
|
1091
|
-
//
|
|
1092
|
-
//
|
|
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 install — synthesize 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 &&
|
|
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 `.
|
|
1153
|
+
// FRAMEWORK-BUG-021 — sweep the legacy `.codex/` codex tree
|
|
1114
1154
|
// BEFORE the install pipeline runs so the install can re-stamp
|
|
1115
|
-
// `.
|
|
1116
|
-
//
|
|
1117
|
-
//
|
|
1118
|
-
//
|
|
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 .
|
|
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
|
}
|