@aperant/framework 0.8.7 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +142 -0
- package/agents/apt-pr-review-fixer.md +9 -4
- package/agents/apt-verifier.md +6 -3
- package/dist/cli/commands/init.d.mts.map +1 -1
- package/dist/cli/commands/init.mjs +157 -23
- package/dist/cli/commands/init.mjs.map +1 -1
- package/dist/cli/commands/toolchain-detect.d.mts.map +1 -1
- package/dist/cli/commands/toolchain-detect.mjs +44 -0
- package/dist/cli/commands/toolchain-detect.mjs.map +1 -1
- package/dist/cli/commands/triage.d.mts.map +1 -1
- package/dist/cli/commands/triage.mjs +346 -13
- package/dist/cli/commands/triage.mjs.map +1 -1
- package/dist/cli/commands/uninstall.d.mts.map +1 -1
- package/dist/cli/commands/uninstall.mjs +11 -8
- package/dist/cli/commands/uninstall.mjs.map +1 -1
- package/dist/cli/consistency/parse-review.mjs +5 -3
- package/dist/cli/consistency/parse-review.mjs.map +1 -1
- package/dist/cli/consistency/rules/r5-verdict-consistency.d.mts.map +1 -1
- package/dist/cli/consistency/rules/r5-verdict-consistency.mjs +10 -8
- package/dist/cli/consistency/rules/r5-verdict-consistency.mjs.map +1 -1
- package/dist/cli/gate/gates/review-clean.d.mts.map +1 -1
- package/dist/cli/gate/gates/review-clean.mjs +4 -2
- package/dist/cli/gate/gates/review-clean.mjs.map +1 -1
- package/dist/cli/install/mcp-provision.d.mts +26 -0
- package/dist/cli/install/mcp-provision.d.mts.map +1 -0
- package/dist/cli/install/mcp-provision.mjs +281 -0
- package/dist/cli/install/mcp-provision.mjs.map +1 -0
- package/dist/cli/install/mcp-server-specs.d.mts +80 -0
- package/dist/cli/install/mcp-server-specs.d.mts.map +1 -0
- package/dist/cli/install/mcp-server-specs.mjs +102 -0
- package/dist/cli/install/mcp-server-specs.mjs.map +1 -0
- package/dist/cli/install/runtime-detect.d.mts +27 -0
- package/dist/cli/install/runtime-detect.d.mts.map +1 -1
- package/dist/cli/install/runtime-detect.mjs +32 -0
- package/dist/cli/install/runtime-detect.mjs.map +1 -1
- package/dist/cli/install/toml-merge.d.mts +40 -0
- package/dist/cli/install/toml-merge.d.mts.map +1 -0
- package/dist/cli/install/toml-merge.mjs +134 -0
- package/dist/cli/install/toml-merge.mjs.map +1 -0
- package/dist/cli/util/aperant-section.d.mts +12 -0
- package/dist/cli/util/aperant-section.d.mts.map +1 -1
- package/dist/cli/util/aperant-section.mjs +12 -0
- package/dist/cli/util/aperant-section.mjs.map +1 -1
- package/dist/cli/util/copy.d.mts +27 -0
- package/dist/cli/util/copy.d.mts.map +1 -1
- package/dist/cli/util/copy.mjs +49 -5
- package/dist/cli/util/copy.mjs.map +1 -1
- package/dist/cli/util/events-path.d.mts +8 -0
- package/dist/cli/util/events-path.d.mts.map +1 -0
- package/dist/cli/util/events-path.mjs +23 -0
- package/dist/cli/util/events-path.mjs.map +1 -0
- package/dist/cli/util/runtime-capabilities.d.mts +30 -0
- package/dist/cli/util/runtime-capabilities.d.mts.map +1 -0
- package/dist/cli/util/runtime-capabilities.mjs +214 -0
- package/dist/cli/util/runtime-capabilities.mjs.map +1 -0
- package/dist/cli/verify-proof/audit.d.mts +2 -7
- package/dist/cli/verify-proof/audit.d.mts.map +1 -1
- package/dist/cli/verify-proof/audit.mjs +11 -17
- package/dist/cli/verify-proof/audit.mjs.map +1 -1
- package/dist/cli/verify-proof/idl/index.d.mts +12 -1
- package/dist/cli/verify-proof/idl/index.d.mts.map +1 -1
- package/dist/cli/verify-proof/idl/index.mjs +50 -1
- package/dist/cli/verify-proof/idl/index.mjs.map +1 -1
- package/dist/cli/verify-proof/resolver.d.mts.map +1 -1
- package/dist/cli/verify-proof/resolver.mjs +51 -1
- package/dist/cli/verify-proof/resolver.mjs.map +1 -1
- package/dist/cli/verify-proof/runtime-detect.d.mts +2 -29
- package/dist/cli/verify-proof/runtime-detect.d.mts.map +1 -1
- package/dist/cli/verify-proof/runtime-detect.mjs +8 -203
- package/dist/cli/verify-proof/runtime-detect.mjs.map +1 -1
- package/dist/plugin/.claude-plugin/plugin.json +1 -1
- package/dist/plugin/agents/apt-pr-review-fixer.md +9 -4
- package/dist/plugin/agents/apt-verifier.md +6 -3
- package/dist/plugin/skills/apt-pr-review/SKILL.md +106 -15
- package/dist/plugin/skills/apt-setup/SKILL.md +7 -6
- package/dist/plugin/skills/apt-triage/SKILL.md +8 -6
- package/dist/plugin/skills/apt-update/SKILL.md +1 -1
- package/dist/plugin/skills/apt-verify/SKILL.md +1 -1
- package/dist/plugin/skills/apt-verify-proof/SKILL.md +25 -1
- package/drivers/browser/skill/agent-browser/SKILL.md +51 -0
- package/drivers/tauri/README.md +107 -0
- package/drivers/tauri/driver.mjs +88 -0
- package/drivers/tauri/manifest.json +37 -0
- package/drivers/tauri/scripts/tauri-mcp.sh +41 -0
- package/package.json +1 -1
- package/skills/apt-pr-review/SKILL.md +106 -15
- package/skills/apt-setup/SKILL.md +7 -6
- package/skills/apt-triage/SKILL.md +8 -6
- package/skills/apt-update/SKILL.md +1 -1
- package/skills/apt-verify/SKILL.md +1 -1
- package/skills/apt-verify-proof/SKILL.md +25 -1
- package/src/cli/commands/init.mjs +163 -19
- package/src/cli/commands/toolchain-detect.mjs +44 -0
- package/src/cli/commands/triage.mjs +352 -11
- package/src/cli/commands/uninstall.mjs +11 -8
- package/src/cli/consistency/parse-review.mjs +5 -3
- package/src/cli/consistency/rules/r5-verdict-consistency.mjs +14 -9
- package/src/cli/gate/gates/review-clean.mjs +4 -2
- package/src/cli/install/mcp-provision.mjs +293 -0
- package/src/cli/install/mcp-server-specs.mjs +101 -0
- package/src/cli/install/runtime-detect.mjs +36 -0
- package/src/cli/install/toml-merge.mjs +139 -0
- package/src/cli/util/aperant-section.mjs +14 -0
- package/src/cli/util/copy.mjs +53 -8
- package/src/cli/util/events-path.mjs +24 -0
- package/src/cli/util/runtime-capabilities.mjs +216 -0
- package/src/cli/verify-proof/audit.mjs +11 -17
- package/src/cli/verify-proof/idl/index.mjs +49 -11
- package/src/cli/verify-proof/resolver.mjs +49 -2
- package/src/cli/verify-proof/runtime-detect.mjs +11 -204
- package/templates/config.json +2 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect runtime capabilities from a parsed package.json object.
|
|
3
|
+
*
|
|
4
|
+
* @param {Record<string, unknown> | null} packageJson
|
|
5
|
+
* @returns {RuntimeCapabilities}
|
|
6
|
+
*/
|
|
7
|
+
export function detectFromPackageJson(packageJson: Record<string, unknown> | null): RuntimeCapabilities;
|
|
8
|
+
/**
|
|
9
|
+
* Load and detect capabilities from a project directory's package.json.
|
|
10
|
+
* v0.8.6 — also walks `monorepo_globs` (default `['apps/*']`) and
|
|
11
|
+
* OR-merges each match's capabilities with the root.
|
|
12
|
+
*
|
|
13
|
+
* @param {string} projectDir
|
|
14
|
+
* @param {{monorepo_globs?: string[]}} [opts]
|
|
15
|
+
* @returns {RuntimeCapabilities}
|
|
16
|
+
*/
|
|
17
|
+
export function loadRuntimeCapabilities(projectDir: string, opts?: {
|
|
18
|
+
monorepo_globs?: string[];
|
|
19
|
+
}): RuntimeCapabilities;
|
|
20
|
+
export type RuntimeCapabilities = {
|
|
21
|
+
is_electron: boolean;
|
|
22
|
+
is_tauri: boolean;
|
|
23
|
+
is_nextjs: boolean;
|
|
24
|
+
is_nuxt: boolean;
|
|
25
|
+
is_web_frontend: boolean;
|
|
26
|
+
is_expo: boolean;
|
|
27
|
+
is_react_native: boolean;
|
|
28
|
+
has_node: boolean;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=runtime-capabilities.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-capabilities.d.mts","sourceRoot":"","sources":["../../../src/cli/util/runtime-capabilities.mjs"],"names":[],"mappings":"AAsDA;;;;;GAKG;AACH,mDAHW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAC5B,mBAAmB,CAwD/B;AAED;;;;;;;;GAQG;AACH,oDAJW,MAAM,SACN;IAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAAC,GACzB,mBAAmB,CAkC/B;;iBA/Ha,OAAO;cACP,OAAO;eACP,OAAO;aACP,OAAO;qBACP,OAAO;aACP,OAAO;qBACP,OAAO;cACP,OAAO"}
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* util/runtime-capabilities.mjs — pure project-shape capability detection.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from packages/core/src/prompts/prompt-loader.ts:572-595 so the
|
|
5
|
+
* framework CLI is self-contained (no @aperant/core dep). Same heuristics:
|
|
6
|
+
* read package.json's dependencies + devDependencies, return a capability
|
|
7
|
+
* record the resolver can score against.
|
|
8
|
+
*
|
|
9
|
+
* Lives in util/ so BOTH the verify-proof layer (verify-proof/runtime-detect.mjs
|
|
10
|
+
* re-exports it) AND the install layer (install/runtime-detect.mjs re-exports
|
|
11
|
+
* it) can share one implementation without install/ importing from
|
|
12
|
+
* verify-proof/ (the layer-boundary rule).
|
|
13
|
+
*
|
|
14
|
+
* Pattern: pure data in → pure data out. No filesystem walking, no exec.
|
|
15
|
+
* Use loadRuntimeCapabilities(projectDir) for the cwd-rooted variant.
|
|
16
|
+
*
|
|
17
|
+
* v0.8.6 — `loadRuntimeCapabilities` now ALSO walks `apps/*` by default
|
|
18
|
+
* (configurable via the second arg `{monorepo_globs}`) and OR-merges
|
|
19
|
+
* each match's `package.json` capabilities with the root. The default
|
|
20
|
+
* `['apps/*']` matches the canonical Aperant monorepo layout; adopters
|
|
21
|
+
* whose monorepo lives elsewhere (e.g. `packages/apps/*`) pass a
|
|
22
|
+
* custom `monorepo_globs`. Setting `monorepo_globs: []` disables the
|
|
23
|
+
* walk entirely (root-only escape hatch).
|
|
24
|
+
*/
|
|
25
|
+
import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
|
|
26
|
+
import { join, resolve } from 'node:path';
|
|
27
|
+
/**
|
|
28
|
+
* @typedef {Object} RuntimeCapabilities
|
|
29
|
+
* @property {boolean} is_electron
|
|
30
|
+
* @property {boolean} is_tauri
|
|
31
|
+
* @property {boolean} is_nextjs
|
|
32
|
+
* @property {boolean} is_nuxt
|
|
33
|
+
* @property {boolean} is_web_frontend
|
|
34
|
+
* @property {boolean} is_expo
|
|
35
|
+
* @property {boolean} is_react_native
|
|
36
|
+
* @property {boolean} has_node
|
|
37
|
+
*/
|
|
38
|
+
/** A capability record with every flag defaulted to false. */
|
|
39
|
+
function emptyCapabilities() {
|
|
40
|
+
return {
|
|
41
|
+
is_electron: false,
|
|
42
|
+
is_tauri: false,
|
|
43
|
+
is_nextjs: false,
|
|
44
|
+
is_nuxt: false,
|
|
45
|
+
is_web_frontend: false,
|
|
46
|
+
is_expo: false,
|
|
47
|
+
is_react_native: false,
|
|
48
|
+
has_node: false,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Detect runtime capabilities from a parsed package.json object.
|
|
53
|
+
*
|
|
54
|
+
* @param {Record<string, unknown> | null} packageJson
|
|
55
|
+
* @returns {RuntimeCapabilities}
|
|
56
|
+
*/
|
|
57
|
+
export function detectFromPackageJson(packageJson) {
|
|
58
|
+
const capabilities = emptyCapabilities();
|
|
59
|
+
if (packageJson === null || typeof packageJson !== 'object')
|
|
60
|
+
return capabilities;
|
|
61
|
+
const allDeps = {
|
|
62
|
+
...(packageJson.dependencies ?? {}) /** @type {Record<string,string>} */,
|
|
63
|
+
...(packageJson.devDependencies ?? {}) /** @type {Record<string,string>} */,
|
|
64
|
+
};
|
|
65
|
+
const deps = new Set(Object.keys(allDeps).map((k) => k.toLowerCase()));
|
|
66
|
+
if (deps.has('electron') || [...deps].some((d) => d.startsWith('@electron'))) {
|
|
67
|
+
capabilities.is_electron = true;
|
|
68
|
+
}
|
|
69
|
+
if (deps.has('@tauri-apps/api') || deps.has('tauri')) {
|
|
70
|
+
capabilities.is_tauri = true;
|
|
71
|
+
}
|
|
72
|
+
if (deps.has('expo'))
|
|
73
|
+
capabilities.is_expo = true;
|
|
74
|
+
if (deps.has('react-native'))
|
|
75
|
+
capabilities.is_react_native = true;
|
|
76
|
+
// Web frontends — react/vue/svelte/angular/solid → frontend. BUT: an
|
|
77
|
+
// Electron app commonly bundles React as its renderer; in that case the
|
|
78
|
+
// runtime is "electron", not "web_frontend". Electron + react-native +
|
|
79
|
+
// expo + tauri all win over the web flag.
|
|
80
|
+
const isNativeContainer = capabilities.is_electron ||
|
|
81
|
+
capabilities.is_tauri ||
|
|
82
|
+
capabilities.is_react_native ||
|
|
83
|
+
capabilities.is_expo;
|
|
84
|
+
const webFrameworks = ['react', 'vue', 'svelte', 'angular', 'solid'];
|
|
85
|
+
if (!isNativeContainer && webFrameworks.some((f) => deps.has(f))) {
|
|
86
|
+
capabilities.is_web_frontend = true;
|
|
87
|
+
}
|
|
88
|
+
if (deps.has('next')) {
|
|
89
|
+
capabilities.is_nextjs = true;
|
|
90
|
+
capabilities.is_web_frontend = true;
|
|
91
|
+
}
|
|
92
|
+
if (deps.has('nuxt')) {
|
|
93
|
+
capabilities.is_nuxt = true;
|
|
94
|
+
capabilities.is_web_frontend = true;
|
|
95
|
+
}
|
|
96
|
+
if (deps.has('vite') && !isNativeContainer) {
|
|
97
|
+
capabilities.is_web_frontend = true;
|
|
98
|
+
}
|
|
99
|
+
// Node-ish? Anything with a package.json + an entry point counts.
|
|
100
|
+
if (typeof packageJson.main === 'string' || typeof packageJson.module === 'string') {
|
|
101
|
+
capabilities.has_node = true;
|
|
102
|
+
}
|
|
103
|
+
if (!capabilities.has_node && packageJson.scripts && typeof packageJson.scripts === 'object') {
|
|
104
|
+
capabilities.has_node = true;
|
|
105
|
+
}
|
|
106
|
+
return capabilities;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Load and detect capabilities from a project directory's package.json.
|
|
110
|
+
* v0.8.6 — also walks `monorepo_globs` (default `['apps/*']`) and
|
|
111
|
+
* OR-merges each match's capabilities with the root.
|
|
112
|
+
*
|
|
113
|
+
* @param {string} projectDir
|
|
114
|
+
* @param {{monorepo_globs?: string[]}} [opts]
|
|
115
|
+
* @returns {RuntimeCapabilities}
|
|
116
|
+
*/
|
|
117
|
+
export function loadRuntimeCapabilities(projectDir, opts) {
|
|
118
|
+
const root = resolve(projectDir);
|
|
119
|
+
const rootPkgPath = join(root, 'package.json');
|
|
120
|
+
let rootCaps = emptyCapabilities();
|
|
121
|
+
if (existsSync(rootPkgPath)) {
|
|
122
|
+
try {
|
|
123
|
+
rootCaps = detectFromPackageJson(JSON.parse(readFileSync(rootPkgPath, 'utf-8')));
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
/* fall through with empty caps */
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Default to the canonical Aperant monorepo layout. Passing `[]`
|
|
130
|
+
// disables the walk entirely (root-only escape hatch per spec ID-05).
|
|
131
|
+
const globs = opts && Array.isArray(opts.monorepo_globs) ? opts.monorepo_globs : ['apps/*'];
|
|
132
|
+
if (globs.length === 0)
|
|
133
|
+
return rootCaps;
|
|
134
|
+
let merged = rootCaps;
|
|
135
|
+
for (const glob of globs) {
|
|
136
|
+
const matches = expandSimpleGlob(root, glob);
|
|
137
|
+
for (const dir of matches) {
|
|
138
|
+
const childPkgPath = join(dir, 'package.json');
|
|
139
|
+
if (!existsSync(childPkgPath))
|
|
140
|
+
continue;
|
|
141
|
+
try {
|
|
142
|
+
const childCaps = detectFromPackageJson(JSON.parse(readFileSync(childPkgPath, 'utf-8')));
|
|
143
|
+
merged = orMergeCapabilities(merged, childCaps);
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
/* skip malformed package.json */
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return merged;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Expand a simple `prefix/*` glob against the root. Supports ONLY the
|
|
154
|
+
* `<dir>/*` shape (matches each direct subdirectory of `<dir>`). Other
|
|
155
|
+
* glob syntax is intentionally rejected — v1 keeps the dep surface
|
|
156
|
+
* small. Fails closed on malformed patterns (returns []).
|
|
157
|
+
*
|
|
158
|
+
* @param {string} root
|
|
159
|
+
* @param {string} glob
|
|
160
|
+
* @returns {string[]}
|
|
161
|
+
*/
|
|
162
|
+
function expandSimpleGlob(root, glob) {
|
|
163
|
+
if (typeof glob !== 'string' || !glob.endsWith('/*'))
|
|
164
|
+
return [];
|
|
165
|
+
const prefix = glob.slice(0, -2);
|
|
166
|
+
if (prefix.length === 0 || prefix.includes('*'))
|
|
167
|
+
return [];
|
|
168
|
+
const dir = join(root, prefix);
|
|
169
|
+
if (!existsSync(dir))
|
|
170
|
+
return [];
|
|
171
|
+
let entries;
|
|
172
|
+
try {
|
|
173
|
+
entries = readdirSync(dir);
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
return [];
|
|
177
|
+
}
|
|
178
|
+
const matches = [];
|
|
179
|
+
for (const name of entries) {
|
|
180
|
+
const sub = join(dir, name);
|
|
181
|
+
try {
|
|
182
|
+
if (statSync(sub).isDirectory())
|
|
183
|
+
matches.push(sub);
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
/* skip unreadable entries */
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
return matches;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Boolean OR-merge of two capability records. Any flag true in either
|
|
193
|
+
* input is true in the output. The "Electron wins over web" rule from
|
|
194
|
+
* `detectFromPackageJson` is preserved when this is called repeatedly —
|
|
195
|
+
* each child's flags are honest about that child's own shape, and the
|
|
196
|
+
* OR-merge just unions them.
|
|
197
|
+
*
|
|
198
|
+
* @param {RuntimeCapabilities} a
|
|
199
|
+
* @param {RuntimeCapabilities} b
|
|
200
|
+
* @returns {RuntimeCapabilities}
|
|
201
|
+
*/
|
|
202
|
+
function orMergeCapabilities(a, b) {
|
|
203
|
+
return {
|
|
204
|
+
is_electron: a.is_electron || b.is_electron,
|
|
205
|
+
is_tauri: a.is_tauri || b.is_tauri,
|
|
206
|
+
is_nextjs: a.is_nextjs || b.is_nextjs,
|
|
207
|
+
is_nuxt: a.is_nuxt || b.is_nuxt,
|
|
208
|
+
is_web_frontend: a.is_web_frontend || b.is_web_frontend,
|
|
209
|
+
is_expo: a.is_expo || b.is_expo,
|
|
210
|
+
is_react_native: a.is_react_native || b.is_react_native,
|
|
211
|
+
has_node: a.has_node || b.has_node,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=runtime-capabilities.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-capabilities.mjs","sourceRoot":"","sources":["../../../src/cli/util/runtime-capabilities.mjs"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compute today's events filename relative to projectDir.
|
|
3
|
-
* @param {string} projectDir
|
|
4
|
-
* @param {Date} [now]
|
|
5
|
-
* @returns {string}
|
|
6
|
-
*/
|
|
7
|
-
export function dailyEventsPath(projectDir: string, now?: Date): string;
|
|
8
1
|
/**
|
|
9
2
|
* Append a driver-invocation audit line.
|
|
10
3
|
*
|
|
@@ -31,4 +24,6 @@ export function appendDriverEvent(projectDir: string, entry: {
|
|
|
31
24
|
verb?: string | undefined;
|
|
32
25
|
reason?: string | undefined;
|
|
33
26
|
}): void;
|
|
27
|
+
export { dailyEventsPath };
|
|
28
|
+
import { dailyEventsPath } from '../util/events-path.mjs';
|
|
34
29
|
//# sourceMappingURL=audit.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.d.mts","sourceRoot":"","sources":["../../../src/cli/verify-proof/audit.mjs"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audit.d.mts","sourceRoot":"","sources":["../../../src/cli/verify-proof/audit.mjs"],"names":[],"mappings":"AAuBA;;;;;;;;;;;;;;GAcG;AACH,8CAZW,MAAM,SAEd;IAAsB,SAAS,EAAvB,MAAM;IACQ,OAAO,EAArB,MAAM;IACQ,eAAe,EAA7B,MAAM;IACQ,UAAU,EAAxB,MAAM;IACQ,eAAe,EAA7B,MAAM;IACwC,QAAQ,EAAtD,OAAO,GAAG,MAAM,GAAG,mBAAmB;IACH,MAAM,EAAzC,SAAS,GAAG,MAAM,GAAG,MAAM;IACZ,IAAI;IACJ,MAAM;CAC/B,QAWA;;gCAjC+B,yBAAyB"}
|
|
@@ -11,20 +11,13 @@
|
|
|
11
11
|
* 'a' mode and writes a single line; concurrent agents may interleave
|
|
12
12
|
* lines but no line is ever overwritten.
|
|
13
13
|
*/
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
*/
|
|
22
|
-
export function dailyEventsPath(projectDir, now = new Date()) {
|
|
23
|
-
const yyyy = now.getUTCFullYear();
|
|
24
|
-
const mm = String(now.getUTCMonth() + 1).padStart(2, '0');
|
|
25
|
-
const dd = String(now.getUTCDate()).padStart(2, '0');
|
|
26
|
-
return join(resolve(projectDir), '.aperant/events', `${yyyy}-${mm}-${dd}.jsonl`);
|
|
27
|
-
}
|
|
14
|
+
import { appendJsonl } from '../util/atomic-write.mjs';
|
|
15
|
+
import { dailyEventsPath } from '../util/events-path.mjs';
|
|
16
|
+
// dailyEventsPath now lives in util/events-path.mjs (so install/ can share it
|
|
17
|
+
// without crossing into verify-proof/). Re-exported here byte-for-byte so
|
|
18
|
+
// every existing `import { dailyEventsPath } from '../verify-proof/audit.mjs'`
|
|
19
|
+
// call site keeps working.
|
|
20
|
+
export { dailyEventsPath };
|
|
28
21
|
/**
|
|
29
22
|
* Append a driver-invocation audit line.
|
|
30
23
|
*
|
|
@@ -42,12 +35,13 @@ export function dailyEventsPath(projectDir, now = new Date()) {
|
|
|
42
35
|
*/
|
|
43
36
|
export function appendDriverEvent(projectDir, entry) {
|
|
44
37
|
const path = dailyEventsPath(projectDir);
|
|
45
|
-
|
|
46
|
-
|
|
38
|
+
// Single canonical jsonl-append primitive for the event log (appendJsonl
|
|
39
|
+
// creates parent dirs, fsyncs, and locks on Windows). Keeps every writer to
|
|
40
|
+
// .aperant/events/{date}.jsonl on the same atomic path.
|
|
41
|
+
appendJsonl(path, {
|
|
47
42
|
ts: new Date().toISOString(),
|
|
48
43
|
kind: 'driver_invocation',
|
|
49
44
|
...entry,
|
|
50
45
|
});
|
|
51
|
-
appendFileSync(path, line + '\n', 'utf-8');
|
|
52
46
|
}
|
|
53
47
|
//# sourceMappingURL=audit.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit.mjs","sourceRoot":"","sources":["../../../src/cli/verify-proof/audit.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"audit.mjs","sourceRoot":"","sources":["../../../src/cli/verify-proof/audit.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAEzD,8EAA8E;AAC9E,0EAA0E;AAC1E,+EAA+E;AAC/E,2BAA2B;AAC3B,OAAO,EAAE,eAAe,EAAE,CAAA;AAE1B;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAU,EAAE,KAAK;IAClD,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;IACxC,yEAAyE;IACzE,4EAA4E;IAC5E,wDAAwD;IACxD,WAAW,CAAC,IAAI,EAAE;QACjB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5B,IAAI,EAAE,mBAAmB;QACzB,GAAG,KAAK;KACR,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -1,2 +1,13 @@
|
|
|
1
|
-
export
|
|
1
|
+
export const ASSERTION_VERBS: readonly ["assert_visible", "assert_text", "assert_output", "assert_network"];
|
|
2
|
+
export const ASYNC_VERBS: readonly ["trigger", "await_signal"];
|
|
3
|
+
export const EVIDENCE_VERBS: readonly ["screenshot", "record_video", "capture_logs", "dump_state", "dom_dump"];
|
|
4
|
+
export const IDL_VERB_ARGS: Readonly<Record<string, {
|
|
5
|
+
readonly required: readonly string[];
|
|
6
|
+
readonly optional: readonly string[];
|
|
7
|
+
}>>;
|
|
8
|
+
export const IDL_VERB_NAMES: readonly string[];
|
|
9
|
+
export const INTERACTION_VERBS: readonly ["click", "type", "key", "navigate", "select", "upload_file", "drag_drop", "swipe", "switch_context", "execute_js", "wait_for_event", "wait_for_idle"];
|
|
10
|
+
export const isVerbResult: typeof import("@aperant/framework/driver-sdk").isVerbResult;
|
|
11
|
+
export const LIFECYCLE_VERBS: readonly ["launch", "teardown"];
|
|
12
|
+
export const validateVerbArgs: typeof import("@aperant/framework/driver-sdk").validateVerbArgs;
|
|
2
13
|
//# sourceMappingURL=index.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../../src/cli/verify-proof/idl/index.mjs"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../../src/cli/verify-proof/idl/index.mjs"],"names":[],"mappings":"AAoDA,4GAAmD;AACnD,+DAA2C;AAC3C,+GAAiD;AACjD;;;IAA+C;AAC/C,+CAAiD;AACjD,gMAAuD;AACvD,uFAA6C;AAC7C,8DAAmD;AACnD,+FAAqD"}
|
|
@@ -8,6 +8,55 @@
|
|
|
8
8
|
* refactor of every callsite.
|
|
9
9
|
*
|
|
10
10
|
* If you add a verb, edit packages/framework/src/driver-sdk/idl.ts.
|
|
11
|
+
*
|
|
12
|
+
* Defense-in-depth (issue #248). `@aperant/framework/driver-sdk` resolves
|
|
13
|
+
* via the package `exports` map to `dist/driver-sdk/index.js`. A *static*
|
|
14
|
+
* `export … from '@aperant/framework/driver-sdk'` here made this barrel —
|
|
15
|
+
* and therefore the whole apt-tools CLI, since `dispatch.mjs` eagerly
|
|
16
|
+
* imports `driver-doctor.mjs` which imports this barrel — crash at
|
|
17
|
+
* module-resolution time with an opaque `ERR_MODULE_NOT_FOUND` when the
|
|
18
|
+
* dist was not built (e.g. a CI step that skipped `pnpm build`), before
|
|
19
|
+
* any command body could run. Resolving the registry via a *dynamic*
|
|
20
|
+
* `await import()` wrapped in try/catch keeps that dependency off the
|
|
21
|
+
* hard module-link path: dist present (tests, post-build CI, published
|
|
22
|
+
* tarball) → the REAL registry values are re-exported unchanged; dist
|
|
23
|
+
* absent → empty/no-op fallbacks let the CLI load (so commands that don't
|
|
24
|
+
* touch the IDL registry, like `route`, still run) instead of crashing.
|
|
11
25
|
*/
|
|
12
|
-
|
|
26
|
+
/** @type {typeof import('@aperant/framework/driver-sdk')} */
|
|
27
|
+
let _sdk;
|
|
28
|
+
try {
|
|
29
|
+
_sdk = await import('@aperant/framework/driver-sdk');
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
// Only the intended "dist not built" condition degrades. A corrupt or
|
|
33
|
+
// partially-written dist (SyntaxError, broken transitive load) raises a
|
|
34
|
+
// different code and MUST surface, not be masked into an empty registry.
|
|
35
|
+
if (err?.code !== 'ERR_MODULE_NOT_FOUND')
|
|
36
|
+
throw err;
|
|
37
|
+
// dist/driver-sdk absent — degrade to empty registry so module load
|
|
38
|
+
// does not crash. Any code path that actually needs a verb registry
|
|
39
|
+
// (driver-doctor, the bundled drivers) requires a built dist anyway;
|
|
40
|
+
// commands that don't (e.g. `route`) keep working.
|
|
41
|
+
_sdk = {
|
|
42
|
+
ASSERTION_VERBS: [],
|
|
43
|
+
ASYNC_VERBS: [],
|
|
44
|
+
EVIDENCE_VERBS: [],
|
|
45
|
+
IDL_VERB_ARGS: {},
|
|
46
|
+
IDL_VERB_NAMES: [],
|
|
47
|
+
INTERACTION_VERBS: [],
|
|
48
|
+
isVerbResult: () => false,
|
|
49
|
+
LIFECYCLE_VERBS: [],
|
|
50
|
+
validateVerbArgs: () => ({ ok: true, errors: [] }),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export const ASSERTION_VERBS = _sdk.ASSERTION_VERBS;
|
|
54
|
+
export const ASYNC_VERBS = _sdk.ASYNC_VERBS;
|
|
55
|
+
export const EVIDENCE_VERBS = _sdk.EVIDENCE_VERBS;
|
|
56
|
+
export const IDL_VERB_ARGS = _sdk.IDL_VERB_ARGS;
|
|
57
|
+
export const IDL_VERB_NAMES = _sdk.IDL_VERB_NAMES;
|
|
58
|
+
export const INTERACTION_VERBS = _sdk.INTERACTION_VERBS;
|
|
59
|
+
export const isVerbResult = _sdk.isVerbResult;
|
|
60
|
+
export const LIFECYCLE_VERBS = _sdk.LIFECYCLE_VERBS;
|
|
61
|
+
export const validateVerbArgs = _sdk.validateVerbArgs;
|
|
13
62
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../../src/cli/verify-proof/idl/index.mjs"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../../src/cli/verify-proof/idl/index.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,6DAA6D;AAC7D,IAAI,IAAI,CAAA;AACR,IAAI,CAAC;IACJ,IAAI,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAA;AACrD,CAAC;AAAC,OAAO,GAAG,EAAE,CAAC;IACd,sEAAsE;IACtE,wEAAwE;IACxE,yEAAyE;IACzE,IAAI,GAAG,EAAE,IAAI,KAAK,sBAAsB;QAAE,MAAM,GAAG,CAAA;IACnD,oEAAoE;IACpE,oEAAoE;IACpE,qEAAqE;IACrE,mDAAmD;IACnD,IAAI,GAAG;QACN,eAAe,EAAE,EAAE;QACnB,WAAW,EAAE,EAAE;QACf,cAAc,EAAE,EAAE;QAClB,aAAa,EAAE,EAAE;QACjB,cAAc,EAAE,EAAE;QAClB,iBAAiB,EAAE,EAAE;QACrB,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK;QACzB,eAAe,EAAE,EAAE;QACnB,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;KAClD,CAAA;AACF,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAA;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAA;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;AACjD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;AACjD,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAA;AACvD,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAA;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAA;AACnD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.mts","sourceRoot":"","sources":["../../../src/cli/verify-proof/resolver.mjs"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"resolver.d.mts","sourceRoot":"","sources":["../../../src/cli/verify-proof/resolver.mjs"],"names":[],"mappings":"AAyFA;;;;;;;GAOG;AACH,sCALW,cAAc,GAAG;IAAC,QAAQ,CAAC,EAAE,SAAS,GAAC,MAAM,GAAC,UAAU,CAAA;CAAC,WACzD,mBAAmB,YACnB,MAAM,EAAE,GACN;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAC,CAU9C;AA0CD;;;;;;;;;;;;GAYG;AACH,oCARG;IAA+B,OAAO,EAA9B,cAAc,EAAE;IACU,OAAO,EAAjC,mBAAmB;IACJ,qBAAqB,EAApC,MAAM,EAAE;IACQ,kBAAkB;IAClB,QAAQ;CAChC,GAAU;IAAC,QAAQ,EAAE,cAAc,CAAC;IAAC,iBAAiB,EAAE,KAAK,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAAA;CAAC,CAqFrG;AAED;;;;;;;;;;GAUG;AACH,+CAHW,CAAC,UAAU,GAAC,KAAK,GAAC,KAAK,GAAC,KAAK,CAAC,GAC5B,CAAC,aAAa,GAAC,iBAAiB,GAAC,UAAU,CAAC,CAcxD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,gDARG;IAA+B,OAAO,EAA9B,cAAc,EAAE;IACU,OAAO,EAAjC,mBAAmB;IAC6D,QAAQ,EAAxF,KAAK,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,UAAU,GAAC,KAAK,GAAC,KAAK,GAAC,KAAK,GAAC,cAAc,CAAA;KAAC,CAAC;IACzD,QAAQ;IACR,kBAAkB;IAClB,qBAAqB;CAC7C,GAAU,KAAK,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAC;IAAC,iBAAiB,EAAE,KAAK,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC,CAAC,CAAA;CAAC,CAAC,CA2C/I;6BApTY,OAAO,+BAA+B,EAAE,cAAc;kCACtD,OAAO,sBAAsB,EAAE,mBAAmB"}
|
|
@@ -29,11 +29,61 @@
|
|
|
29
29
|
*
|
|
30
30
|
* Existing `resolveDriver()` and `scoreDriver()` exports are unchanged.
|
|
31
31
|
*/
|
|
32
|
-
import { UnsatisfiedRequiredCapabilityError } from '@aperant/framework/driver-sdk';
|
|
33
32
|
/**
|
|
34
33
|
* @typedef {import('@aperant/framework/driver-sdk').DriverManifest} DriverManifest
|
|
35
34
|
* @typedef {import('./runtime-detect.mjs').RuntimeCapabilities} RuntimeCapabilities
|
|
36
35
|
*/
|
|
36
|
+
/**
|
|
37
|
+
* Defense-in-depth (issue #248). The driver-sdk error class lives in
|
|
38
|
+
* `@aperant/framework/driver-sdk`, whose `exports` map resolves to
|
|
39
|
+
* `dist/driver-sdk/index.js`. An eager *static* top-level
|
|
40
|
+
* `import { UnsatisfiedRequiredCapabilityError } from '@aperant/framework/driver-sdk'`
|
|
41
|
+
* made the WHOLE apt-tools CLI crash at module-resolution time when the
|
|
42
|
+
* dist was not built (e.g. a CI step that skipped `pnpm build`): the
|
|
43
|
+
* static import is resolved at module-link, so an opaque
|
|
44
|
+
* `ERR_MODULE_NOT_FOUND` was raised before any command body — or any
|
|
45
|
+
* `--no-fail` downgrade in run-route-eval.mjs — could run.
|
|
46
|
+
*
|
|
47
|
+
* We instead resolve the class via a *dynamic* `await import()` that is
|
|
48
|
+
* wrapped in try/catch. Dynamic import is still evaluated at module
|
|
49
|
+
* load (top-level await), but its failure is now swallowable rather than
|
|
50
|
+
* a hard link-time crash:
|
|
51
|
+
* - dist present (tests, post-build CI, published tarball) → the REAL
|
|
52
|
+
* class is bound, so any thrown error stays
|
|
53
|
+
* `instanceof UnsatisfiedRequiredCapabilityError` for every consumer
|
|
54
|
+
* (including the resolver suites that import the class from the same
|
|
55
|
+
* `@aperant/framework/driver-sdk` ESM specifier);
|
|
56
|
+
* - dist absent → we fall back to a structurally identical local class
|
|
57
|
+
* (same `.name` / `.capability` / `.attempts` shape, which
|
|
58
|
+
* `detect-runtime.mjs` inspects via `.attempts`) so the CLI degrades
|
|
59
|
+
* to a clear, catchable error instead of crashing at load.
|
|
60
|
+
*
|
|
61
|
+
* `resolveDriver` stays fully synchronous — the class is already bound by
|
|
62
|
+
* the time any importer of this module finishes linking.
|
|
63
|
+
*
|
|
64
|
+
* @type {new (message: string, capability?: string, attempts?: ReadonlyArray<{driver_id: string, reason: string}>) => Error}
|
|
65
|
+
*/
|
|
66
|
+
let UnsatisfiedRequiredCapabilityError;
|
|
67
|
+
try {
|
|
68
|
+
;
|
|
69
|
+
({ UnsatisfiedRequiredCapabilityError } = await import('@aperant/framework/driver-sdk'));
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
// Only the intended "dist not built" condition degrades. A corrupt or
|
|
73
|
+
// partially-written dist (SyntaxError, broken transitive load) raises a
|
|
74
|
+
// different code and MUST surface, not be masked into a silent fallback.
|
|
75
|
+
if (err?.code !== 'ERR_MODULE_NOT_FOUND')
|
|
76
|
+
throw err;
|
|
77
|
+
// dist/driver-sdk absent — degrade instead of crashing the CLI.
|
|
78
|
+
UnsatisfiedRequiredCapabilityError = class UnsatisfiedRequiredCapabilityError extends Error {
|
|
79
|
+
constructor(message, capability, attempts = []) {
|
|
80
|
+
super(message);
|
|
81
|
+
this.name = 'UnsatisfiedRequiredCapabilityError';
|
|
82
|
+
this.capability = capability;
|
|
83
|
+
this.attempts = attempts;
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
|
37
87
|
const STABILITY_RANK = { ga: 3, beta: 2, experimental: 1 };
|
|
38
88
|
const LOCALITY_RANK = { bundled: 3, user: 2, registry: 1 };
|
|
39
89
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.mjs","sourceRoot":"","sources":["../../../src/cli/verify-proof/resolver.mjs"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,
|
|
1
|
+
{"version":3,"file":"resolver.mjs","sourceRoot":"","sources":["../../../src/cli/verify-proof/resolver.mjs"],"names":[],"mappings":"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"}
|
|
@@ -1,30 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* @param {Record<string, unknown> | null} packageJson
|
|
5
|
-
* @returns {RuntimeCapabilities}
|
|
6
|
-
*/
|
|
7
|
-
export function detectFromPackageJson(packageJson: Record<string, unknown> | null): RuntimeCapabilities;
|
|
8
|
-
/**
|
|
9
|
-
* Load and detect capabilities from a project directory's package.json.
|
|
10
|
-
* v0.8.6 — also walks `monorepo_globs` (default `['apps/*']`) and
|
|
11
|
-
* OR-merges each match's capabilities with the root.
|
|
12
|
-
*
|
|
13
|
-
* @param {string} projectDir
|
|
14
|
-
* @param {{monorepo_globs?: string[]}} [opts]
|
|
15
|
-
* @returns {RuntimeCapabilities}
|
|
16
|
-
*/
|
|
17
|
-
export function loadRuntimeCapabilities(projectDir: string, opts?: {
|
|
18
|
-
monorepo_globs?: string[];
|
|
19
|
-
}): RuntimeCapabilities;
|
|
20
|
-
export type RuntimeCapabilities = {
|
|
21
|
-
is_electron: boolean;
|
|
22
|
-
is_tauri: boolean;
|
|
23
|
-
is_nextjs: boolean;
|
|
24
|
-
is_nuxt: boolean;
|
|
25
|
-
is_web_frontend: boolean;
|
|
26
|
-
is_expo: boolean;
|
|
27
|
-
is_react_native: boolean;
|
|
28
|
-
has_node: boolean;
|
|
29
|
-
};
|
|
1
|
+
export type RuntimeCapabilities = import("../util/runtime-capabilities.mjs").RuntimeCapabilities;
|
|
2
|
+
export { detectFromPackageJson, loadRuntimeCapabilities } from "../util/runtime-capabilities.mjs";
|
|
30
3
|
//# sourceMappingURL=runtime-detect.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-detect.d.mts","sourceRoot":"","sources":["../../../src/cli/verify-proof/runtime-detect.mjs"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime-detect.d.mts","sourceRoot":"","sources":["../../../src/cli/verify-proof/runtime-detect.mjs"],"names":[],"mappings":"kCAgBa,OAAO,kCAAkC,EAAE,mBAAmB"}
|