@aid-framework/cli 0.1.67 → 0.1.69

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.
@@ -19,18 +19,26 @@
19
19
  * assignment says not to modify it. A missing runtime entry point is this layer's problem
20
20
  * to route around, not a reason to change a shipped one.
21
21
  *
22
+ * **A TypeScript target runs its source directly.** The emitted `.ts` module carries the
23
+ * same contract and the same entry guard, so `aid eval` runs the file with Node, whose
24
+ * type stripping loads it without a build. One thing does not survive that: the generator
25
+ * emits NodeNext `.js` specifiers because the compiled tree needs them, and Node will not
26
+ * rewrite `../deps.js` to `../deps.ts`. `ts-loader.ts` supplies exactly that rewrite, as
27
+ * the `--import` hook of the process, so no `dist/` has to exist first and a project that
28
+ * has one still runs it.
29
+ *
22
30
  * **`--baseline` delegates the sampling.** The gate is statistical (`maxRegression` against
23
31
  * a stored distribution), so a baseline from a single run is noise shaped like a fact. The
24
- * generated module's `run()` already samples the dataset `SAMPLES` times -- the N the spec
25
- * declares -- so recording a baseline calls that, then the runtime's own documented recipe
26
- * (`EvalBaseline.from_run(await run(), model=...).to_json()`, which is literally the string
27
- * in the generated `load_baseline`'s error message). Re-sampling here would invent a second
28
- * N and let the CLI and the module disagree about how many runs a baseline means.
32
+ * generated module's `run()` (or `sample()`) already samples the dataset `SAMPLES` times --
33
+ * the N the spec declares -- so recording a baseline calls that, then the runtime's own
34
+ * documented recipe (`EvalBaseline.fromRun` / `from_run`, which is literally the string in
35
+ * the generated `loadBaseline`'s error message). Re-sampling here would invent a second N
36
+ * and let the CLI and the module disagree about how many runs a baseline means.
29
37
  *
30
- * That recipe is the one place in the CLI that writes Python. It is a script piped to the
31
- * interpreter over stdin rather than an API call because the runtime has no such entry
32
- * point, and it is deliberately short: anything longer would be this layer reimplementing
33
- * the runtime's measurement.
38
+ * Each recipe is the only place in the CLI that writes its language. The Python one is a
39
+ * script piped to the interpreter over stdin, and the Node one a script passed to `-e`,
40
+ * because neither runtime has such an entry point; both are deliberately short, since
41
+ * anything longer would be this layer reimplementing the runtime's measurement.
34
42
  */
35
43
  import type { CliContext } from '../context.js';
36
44
  import type { CommandOutcome } from '../output.js';
@@ -1 +1 @@
1
- {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAIhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAOnD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AA6DD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,GAAG,cAAc,CA0LlF"}
1
+ {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,eAAe,CAAC;AAK7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAoBnD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAsFD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,GAAG,cAAc,CA8LlF"}
@@ -19,28 +19,51 @@
19
19
  * assignment says not to modify it. A missing runtime entry point is this layer's problem
20
20
  * to route around, not a reason to change a shipped one.
21
21
  *
22
+ * **A TypeScript target runs its source directly.** The emitted `.ts` module carries the
23
+ * same contract and the same entry guard, so `aid eval` runs the file with Node, whose
24
+ * type stripping loads it without a build. One thing does not survive that: the generator
25
+ * emits NodeNext `.js` specifiers because the compiled tree needs them, and Node will not
26
+ * rewrite `../deps.js` to `../deps.ts`. `ts-loader.ts` supplies exactly that rewrite, as
27
+ * the `--import` hook of the process, so no `dist/` has to exist first and a project that
28
+ * has one still runs it.
29
+ *
22
30
  * **`--baseline` delegates the sampling.** The gate is statistical (`maxRegression` against
23
31
  * a stored distribution), so a baseline from a single run is noise shaped like a fact. The
24
- * generated module's `run()` already samples the dataset `SAMPLES` times -- the N the spec
25
- * declares -- so recording a baseline calls that, then the runtime's own documented recipe
26
- * (`EvalBaseline.from_run(await run(), model=...).to_json()`, which is literally the string
27
- * in the generated `load_baseline`'s error message). Re-sampling here would invent a second
28
- * N and let the CLI and the module disagree about how many runs a baseline means.
32
+ * generated module's `run()` (or `sample()`) already samples the dataset `SAMPLES` times --
33
+ * the N the spec declares -- so recording a baseline calls that, then the runtime's own
34
+ * documented recipe (`EvalBaseline.fromRun` / `from_run`, which is literally the string in
35
+ * the generated `loadBaseline`'s error message). Re-sampling here would invent a second N
36
+ * and let the CLI and the module disagree about how many runs a baseline means.
29
37
  *
30
- * That recipe is the one place in the CLI that writes Python. It is a script piped to the
31
- * interpreter over stdin rather than an API call because the runtime has no such entry
32
- * point, and it is deliberately short: anything longer would be this layer reimplementing
33
- * the runtime's measurement.
38
+ * Each recipe is the only place in the CLI that writes its language. The Python one is a
39
+ * script piped to the interpreter over stdin, and the Node one a script passed to `-e`,
40
+ * because neither runtime has such an entry point; both are deliberately short, since
41
+ * anything longer would be this layer reimplementing the runtime's measurement.
34
42
  */
35
43
  import { existsSync } from 'node:fs';
44
+ import { fileURLToPath } from 'node:url';
36
45
  import { sortDiagnostics } from '@aid-framework/spec';
37
46
  import { CLI_DIAGNOSTIC_CODES, cliError, cliWarning } from '../diagnostics.js';
38
47
  import { EXIT_FAILURE, EXIT_OK, EXIT_USAGE } from '../exit.js';
48
+ import { invokeNode, invokeNodeFile, NODE } from '../node.js';
39
49
  import { outcome } from '../output.js';
40
50
  import { absolutePath } from '../paths.js';
41
51
  import { lowerSpec, readSpec } from '../pipeline.js';
42
52
  import { discoverInterpreter, INTERPRETERS, interpreterCommand, invoke } from '../python.js';
43
53
  import { resolveTarget, unknownTargetDiagnostic } from '../targets.js';
54
+ /**
55
+ * The TypeScript resolve hook, as a URL, because `--import` parses its argument as a
56
+ * specifier: a bare `C:\...` path reads as a `c:` URL scheme.
57
+ *
58
+ * The `.ts` fallback exists for the same reason the hook does -- so this command works
59
+ * from source as well as from `dist/`.
60
+ */
61
+ const TS_LOADER = (() => {
62
+ const compiled = new URL('../ts-loader.js', import.meta.url);
63
+ if (existsSync(fileURLToPath(compiled)))
64
+ return compiled.href;
65
+ return new URL('../ts-loader.ts', import.meta.url).href;
66
+ })();
44
67
  /** Eval ids the spec declares, or the diagnostics that stopped it from declaring any. */
45
68
  function declaredSuites(text, specPath) {
46
69
  const lowered = lowerSpec(text, specPath);
@@ -84,6 +107,30 @@ function baselineScript(modules) {
84
107
  '',
85
108
  ].join('\n');
86
109
  }
110
+ /**
111
+ * The TypeScript baseline recorder, run as `node -e`.
112
+ *
113
+ * It imports each module by absolute URL so the module's own imports resolve from the
114
+ * project tree, and it calls `recordBaseline()` rather than re-deriving a baseline: that
115
+ * function already samples `SAMPLES` times, builds the `EvalBaseline`, and writes the file
116
+ * `loadBaseline()` reads back -- the same constant, so the two cannot disagree.
117
+ */
118
+ function nodeBaselineScript(files) {
119
+ return [
120
+ "import { fileURLToPath, pathToFileURL } from 'node:url';",
121
+ '',
122
+ `const MODULES = ${JSON.stringify(files)};`,
123
+ '',
124
+ 'for (const file of MODULES) {',
125
+ ' const module = await import(pathToFileURL(file).href);',
126
+ " await module.recordBaseline({ note: 'recorded by `aid eval --baseline`' });",
127
+ // Concatenation, not a template literal: the emitted line is a plain string here, and
128
+ // CodeQL (rightly) reads `${fileURLToPath}` inside one as a mistake.
129
+ ' console.log("wrote " + fileURLToPath(module.BASELINE_PATH));',
130
+ '}',
131
+ '',
132
+ ].join('\n');
133
+ }
87
134
  export function evaluate(context, options) {
88
135
  const command = 'eval';
89
136
  const target = resolveTarget(options.target);
@@ -141,44 +188,46 @@ export function evaluate(context, options) {
141
188
  ],
142
189
  });
143
190
  }
144
- if (target.runner !== 'python') {
145
- return outcome({
146
- command,
147
- // Exit 2, not 1: this command has no runner for this target, so no eval ran and
148
- // nothing about the project was judged. `1` would read as "the evals failed".
149
- exitCode: EXIT_USAGE,
150
- fields: { ...fields, suites },
151
- diagnostics: [
152
- cliError({
153
- code: CLI_DIAGNOSTIC_CODES.runnerUnsupported,
154
- message: `\`aid eval\` runs generated Python modules, and ${target.name} emits TypeScript.`,
155
- hint: 'The emitted eval module exports `sample()` and `evaluate(run, baseline)`; run it with Node.',
156
- }),
157
- ],
158
- });
191
+ // A Python target names its module (`app.generated.evals.<id>`, importable from the
192
+ // project root); a Node target names the file, because `process.argv[1]` is how the
193
+ // emitted module knows it is the entry point and should run its gate.
194
+ const modules = suites.map((id) => target.runner === 'node'
195
+ ? absolutePath(context.cwd, target.evalModuleFile(id))
196
+ : target.evalModule(id));
197
+ let driver;
198
+ let runModule;
199
+ let recordBaseline;
200
+ if (target.runner === 'node') {
201
+ driver = NODE;
202
+ runModule = (module) => invokeNodeFile(context, module, { import: TS_LOADER });
203
+ recordBaseline = () => invokeNode(context, nodeBaselineScript(modules), { import: TS_LOADER });
159
204
  }
160
- const interpreter = discoverInterpreter(context);
161
- if (interpreter === undefined) {
162
- return outcome({
163
- command,
164
- // Exit 2, not 1: nothing about the project was judged. The gate has no verdict when
165
- // the thing that would run it cannot start, and `1` would read as "the evals failed".
166
- exitCode: EXIT_USAGE,
167
- fields: { ...fields, suites },
168
- diagnostics: [
169
- cliError({
170
- code: CLI_DIAGNOSTIC_CODES.pythonMissing,
171
- message: `No interpreter could import aid_runtime (tried ${INTERPRETERS.join(', ')}).`,
172
- hint: 'Install the runtime into the interpreter you run with, or run the generated eval modules yourself.',
173
- }),
174
- ],
175
- });
205
+ else {
206
+ const interpreter = discoverInterpreter(context);
207
+ if (interpreter === undefined) {
208
+ return outcome({
209
+ command,
210
+ // Exit 2, not 1: nothing about the project was judged. The gate has no verdict when
211
+ // the thing that would run it cannot start, and `1` would read as "the evals failed".
212
+ exitCode: EXIT_USAGE,
213
+ fields: { ...fields, suites },
214
+ diagnostics: [
215
+ cliError({
216
+ code: CLI_DIAGNOSTIC_CODES.pythonMissing,
217
+ message: `No interpreter could import aid_runtime (tried ${INTERPRETERS.join(', ')}).`,
218
+ hint: 'Install the runtime into the interpreter you run with, or run the generated eval modules yourself.',
219
+ }),
220
+ ],
221
+ });
222
+ }
223
+ driver = interpreter;
224
+ const base = interpreterCommand(interpreter);
225
+ runModule = (module) => invoke(context, [...base, '-m', module]);
226
+ recordBaseline = () => invoke(context, [...base, '-'], baselineScript(modules));
176
227
  }
177
- const modules = suites.map((id) => target.evalModule(id));
178
- const base = interpreterCommand(interpreter);
179
- const common = { ...fields, suites, interpreter };
228
+ const common = { ...fields, suites, driver };
180
229
  if (options.baseline) {
181
- const recorded = invoke(context, [...base, '-'], baselineScript(modules));
230
+ const recorded = recordBaseline();
182
231
  if (recorded === undefined || recorded.status !== 0) {
183
232
  return outcome({
184
233
  command,
@@ -187,7 +236,7 @@ export function evaluate(context, options) {
187
236
  diagnostics: [
188
237
  cliError({
189
238
  code: CLI_DIAGNOSTIC_CODES.runnerFailed,
190
- message: `Could not record a baseline with ${interpreter}.`,
239
+ message: `Could not record a baseline with ${driver}.`,
191
240
  hint: 'Recording a baseline runs the evals, so it needs whatever they need; see the output for why they did not run.',
192
241
  }),
193
242
  ],
@@ -208,7 +257,8 @@ export function evaluate(context, options) {
208
257
  const spoken = [];
209
258
  const diagnostics = [...declared.warnings];
210
259
  for (const [index, module] of modules.entries()) {
211
- const run = invoke(context, [...base, '-m', module]);
260
+ const suite = suites[index] ?? module;
261
+ const run = runModule(module);
212
262
  if (run === undefined) {
213
263
  return outcome({
214
264
  command,
@@ -217,12 +267,11 @@ export function evaluate(context, options) {
217
267
  diagnostics: [
218
268
  cliError({
219
269
  code: CLI_DIAGNOSTIC_CODES.runnerFailed,
220
- message: `Could not start ${interpreter} to run "${module}".`,
270
+ message: `Could not start ${driver} to run "${suite}".`,
221
271
  }),
222
272
  ],
223
273
  });
224
274
  }
225
- const suite = suites[index] ?? module;
226
275
  results.push({ suite, module, status: run.status ?? EXIT_FAILURE });
227
276
  if (run.stdout.trim() !== '')
228
277
  output.push(run.stdout.trimEnd());
@@ -1 +1 @@
1
- {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"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"}
@@ -106,8 +106,9 @@ function summarize(success) {
106
106
  const failed = check
107
107
  ? hasErrors(diagnostics) || pending.length > 0 || report.drifted.length > 0
108
108
  : hasErrors(diagnostics) || (!force && hasDrift(report));
109
+ const discarded = force && !dryRun && !check;
109
110
  const text = [
110
- `${target.name}: ${check ? 'check, ' : dryRun ? 'dry run, ' : ''}${formatRegenerationSummary(report)}`,
111
+ `${target.name}: ${check ? 'check, ' : dryRun ? 'dry run, ' : ''}${formatRegenerationSummary(report, { forced: discarded })}`,
111
112
  ];
112
113
  if (check && pending.length > 0) {
113
114
  text.push('the tree does not match the spec; run `aid gen` and commit the result:');
@@ -117,11 +118,13 @@ function summarize(success) {
117
118
  text.push(...lines('created:', report.created));
118
119
  text.push(...lines('updated:', report.updated));
119
120
  if (report.drifted.length > 0) {
120
- text.push(dryRun || check
121
- ? 'would refuse to overwrite:'
122
- : 'refused to overwrite, the new content is beside it:');
121
+ text.push(discarded
122
+ ? 'rewritten, discarding your edits:'
123
+ : dryRun || check
124
+ ? 'would refuse to overwrite:'
125
+ : 'refused to overwrite, the new content is beside it:');
123
126
  for (const drift of report.drifted) {
124
- text.push(` ${drift.path} -> ${rejectionPath(drift.path)}`);
127
+ text.push(discarded ? ` ${drift.path}` : ` ${drift.path} -> ${rejectionPath(drift.path)}`);
125
128
  }
126
129
  }
127
130
  text.push(...lines('scaffold kept (yours):', report.scaffoldKept));
@@ -1 +1 @@
1
- {"version":3,"file":"gen.js","sourceRoot":"","sources":["../../src/commands/gen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gen.js","sourceRoot":"","sources":["../../src/commands/gen.ts"],"names":[],"mappings":"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"}
package/dist/node.d.ts CHANGED
@@ -22,5 +22,22 @@ export declare const NODE = "node";
22
22
  * a bug rather than a machine state, but the contract is the same one `invoke` keeps for
23
23
  * Python so callers handle both drivers identically.
24
24
  */
25
- export declare function invokeNode(context: CliContext, script: string): SpawnResult | undefined;
25
+ export declare function invokeNode(context: CliContext, script: string, options?: NodeOptions): SpawnResult | undefined;
26
+ /** Options shared by the two ways this CLI runs a Node process. */
27
+ export interface NodeOptions {
28
+ /**
29
+ * A module to load before the driver, as a file URL. The CLI passes its TypeScript
30
+ * resolve hook here, so a driver that imports a generated `.ts` module can resolve the
31
+ * NodeNext `.js` specifiers that module emits.
32
+ */
33
+ readonly import?: string;
34
+ }
35
+ /**
36
+ * Run one file with the Node that is running this CLI.
37
+ *
38
+ * A file rather than `-e`, because `process.argv[1]` is how a generated module knows it
39
+ * is the entry point: the eval modules run their gate only when they are the file Node
40
+ * was asked to run, and never when an index merely re-exports them.
41
+ */
42
+ export declare function invokeNodeFile(context: CliContext, file: string, options?: NodeOptions): SpawnResult | undefined;
26
43
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE5D,mFAAmF;AACnF,eAAO,MAAM,IAAI,SAAS,CAAC;AAE3B;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAOvF"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE5D,mFAAmF;AACnF,eAAO,MAAM,IAAI,SAAS,CAAC;AAE3B;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,UAAU,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,WAAgB,GACxB,WAAW,GAAG,SAAS,CAWzB;AAED,mEAAmE;AACnE,MAAM,WAAW,WAAW;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,UAAU,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,WAAgB,GACxB,WAAW,GAAG,SAAS,CAOzB"}
package/dist/node.js CHANGED
@@ -21,8 +21,26 @@ export const NODE = 'node';
21
21
  * a bug rather than a machine state, but the contract is the same one `invoke` keeps for
22
22
  * Python so callers handle both drivers identically.
23
23
  */
24
- export function invokeNode(context, script) {
25
- const result = context.spawn(process.execPath, ['--input-type=module', '-e', script], {
24
+ export function invokeNode(context, script, options = {}) {
25
+ const result = context.spawn(process.execPath, [...nodeArgs(options), '--input-type=module', '-e', script], {
26
+ cwd: context.cwd,
27
+ stdio: 'pipe',
28
+ env: context.env,
29
+ });
30
+ return result.error === undefined ? result : undefined;
31
+ }
32
+ function nodeArgs(options = {}) {
33
+ return options.import === undefined ? [] : ['--import', options.import];
34
+ }
35
+ /**
36
+ * Run one file with the Node that is running this CLI.
37
+ *
38
+ * A file rather than `-e`, because `process.argv[1]` is how a generated module knows it
39
+ * is the entry point: the eval modules run their gate only when they are the file Node
40
+ * was asked to run, and never when an index merely re-exports them.
41
+ */
42
+ export function invokeNodeFile(context, file, options = {}) {
43
+ const result = context.spawn(process.execPath, [...nodeArgs(options), file], {
26
44
  cwd: context.cwd,
27
45
  stdio: 'pipe',
28
46
  env: context.env,
package/dist/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,mFAAmF;AACnF,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAE3B;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,OAAmB,EAAE,MAAc;IAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,qBAAqB,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE;QACpF,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,mFAAmF;AACnF,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC;AAE3B;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,OAAmB,EACnB,MAAc,EACd,OAAO,GAAgB,EAAE;IAEzB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAC1B,OAAO,CAAC,QAAQ,EAChB,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,CAAC,EAC3D;QACE,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CACF,CAAC;IACF,OAAO,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAYD,SAAS,QAAQ,CAAC,OAAO,GAAgB,EAAE;IACzC,OAAO,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAmB,EACnB,IAAY,EACZ,OAAO,GAAgB,EAAE;IAEzB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE;QAC3E,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The module hook `aid eval` runs a TypeScript target's generated eval through.
3
+ *
4
+ * Node strips types, so a generated `.ts` module runs without a build step -- with one
5
+ * exception. The generator emits NodeNext specifiers (`../deps.js`) because that is what
6
+ * the compiled tree has, and type stripping does not rewrite them: Node looks for
7
+ * `../deps.js`, finds nothing, and fails with `ERR_MODULE_NOT_FOUND`. This hook closes
8
+ * that gap by resolving a relative `.js` specifier to the `.ts` file beside it when the
9
+ * `.js` file does not exist.
10
+ *
11
+ * It is deliberately narrow. A specifier that resolves to a real file is left alone, so a
12
+ * project that has built itself keeps running its build output; only a missing `.js` is
13
+ * redirected, which is exactly the case that cannot work otherwise.
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=ts-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-loader.d.ts","sourceRoot":"","sources":["../src/ts-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * The module hook `aid eval` runs a TypeScript target's generated eval through.
3
+ *
4
+ * Node strips types, so a generated `.ts` module runs without a build step -- with one
5
+ * exception. The generator emits NodeNext specifiers (`../deps.js`) because that is what
6
+ * the compiled tree has, and type stripping does not rewrite them: Node looks for
7
+ * `../deps.js`, finds nothing, and fails with `ERR_MODULE_NOT_FOUND`. This hook closes
8
+ * that gap by resolving a relative `.js` specifier to the `.ts` file beside it when the
9
+ * `.js` file does not exist.
10
+ *
11
+ * It is deliberately narrow. A specifier that resolves to a real file is left alone, so a
12
+ * project that has built itself keeps running its build output; only a missing `.js` is
13
+ * redirected, which is exactly the case that cannot work otherwise.
14
+ */
15
+ import { existsSync } from 'node:fs';
16
+ import { registerHooks } from 'node:module';
17
+ import { fileURLToPath } from 'node:url';
18
+ registerHooks({
19
+ resolve(specifier, context, nextResolve) {
20
+ if (specifier.startsWith('.') && specifier.endsWith('.js') && context.parentURL !== undefined) {
21
+ const compiled = new URL(specifier, context.parentURL);
22
+ if (!existsSync(fileURLToPath(compiled))) {
23
+ const source = new URL(`${specifier.slice(0, -3)}.ts`, context.parentURL);
24
+ if (existsSync(fileURLToPath(source))) {
25
+ return { url: source.href, shortCircuit: true };
26
+ }
27
+ }
28
+ }
29
+ return nextResolve(specifier, context);
30
+ },
31
+ });
32
+ //# sourceMappingURL=ts-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-loader.js","sourceRoot":"","sources":["../src/ts-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,aAAa,CAAC;IACZ,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW;QACrC,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC9F,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACvD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC1E,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;oBACtC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACzC,CAAC;CACF,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aid-framework/cli",
3
- "version": "0.1.67",
3
+ "version": "0.1.69",
4
4
  "description": "The `aid` command: scaffold a project, validate its spec, generate its code, and run its eval gate.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -33,11 +33,11 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@aid-framework/generator-py-fastapi": "0.1.67",
37
- "@aid-framework/generator-sdk": "0.1.67",
38
- "@aid-framework/generator-ts-vercel": "0.1.67",
39
- "@aid-framework/ir": "0.1.67",
40
- "@aid-framework/spec": "0.1.67"
36
+ "@aid-framework/generator-py-fastapi": "0.1.69",
37
+ "@aid-framework/generator-sdk": "0.1.69",
38
+ "@aid-framework/generator-ts-vercel": "0.1.69",
39
+ "@aid-framework/ir": "0.1.69",
40
+ "@aid-framework/spec": "0.1.69"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/node": "^26.6.5"