@aid-framework/cli 0.1.59 → 0.1.61
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/dist/.tsbuildinfo +1 -1
- package/dist/commands/cost.d.ts +29 -0
- package/dist/commands/cost.d.ts.map +1 -0
- package/dist/commands/cost.js +205 -0
- package/dist/commands/cost.js.map +1 -0
- package/dist/commands/dev.d.ts +53 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +235 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/diagnostics.d.ts +9 -0
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +15 -0
- package/dist/diagnostics.js.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +33 -0
- package/dist/main.js.map +1 -1
- package/dist/python.d.ts +10 -1
- package/dist/python.d.ts.map +1 -1
- package/dist/python.js +12 -3
- package/dist/python.js.map +1 -1
- package/dist/targets.d.ts +19 -0
- package/dist/targets.d.ts.map +1 -1
- package/dist/targets.js +12 -0
- package/dist/targets.js.map +1 -1
- package/dist/trace.d.ts +89 -0
- package/dist/trace.d.ts.map +1 -0
- package/dist/trace.js +212 -0
- package/dist/trace.js.map +1 -0
- package/package.json +6 -6
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC9E,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9E,YAAY,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC9D,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9F,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC1C,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtD,YAAY,EACV,QAAQ,EACR,cAAc,EACd,MAAM,EACN,OAAO,EACP,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC9E,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9E,YAAY,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC9D,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9F,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC1C,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtD,YAAY,EACV,QAAQ,EACR,cAAc,EACd,MAAM,EACN,OAAO,EACP,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,QAAQ,GACT,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,MAAM,GACP,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,OAAO,EACP,kBAAkB,EAClB,WAAW,EACX,uBAAuB,GACxB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACzE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `@aid-framework/cli` - the `aid` command: init, validate, gen, ingest, eval and
|
|
2
|
+
* `@aid-framework/cli` - the `aid` command: init, validate, gen, dev, ingest, eval, cost, doctor, eject and infra.
|
|
3
3
|
*
|
|
4
4
|
* The CLI is glue. Every judgement it reports -- whether a spec parses, what the IR is,
|
|
5
5
|
* what a target can emit, which generated file was hand-edited, whether an eval regressed
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
* The layering is `spec <- ir <- generator-sdk <- generators <- cli`.
|
|
12
12
|
*/
|
|
13
13
|
export { booleanFlag, JSON_FLAG, parseArguments, valueFlag } from './args.js';
|
|
14
|
+
export { cost } from './commands/cost.js';
|
|
15
|
+
export { dev } from './commands/dev.js';
|
|
14
16
|
export { doctor } from './commands/doctor.js';
|
|
15
17
|
export { evaluate } from './commands/eval.js';
|
|
16
18
|
export { generate } from './commands/gen.js';
|
|
@@ -27,7 +29,8 @@ export { COMMANDS, run } from './main.js';
|
|
|
27
29
|
export { emit, outcome } from './output.js';
|
|
28
30
|
export { absolutePath, parentPath } from './paths.js';
|
|
29
31
|
export { compile, lowerSpec, provenanceFor, readManifest, readSpec } from './pipeline.js';
|
|
30
|
-
export { discoverInterpreter, INTERPRETERS, interpreterCommand, invoke } from './python.js';
|
|
32
|
+
export { DEV_PROBE, discoverInterpreter, INTERPRETERS, interpreterCommand, invoke, } from './python.js';
|
|
31
33
|
export { DEFAULT_SPEC_PATH, DEFAULT_TARGET, resolveTarget, TARGETS, targetCapabilities, targetNames, unknownTargetDiagnostic, } from './targets.js';
|
|
34
|
+
export { parseSince, parseTraceLines, summariseSpans } from './trace.js';
|
|
32
35
|
export { commandUsage, globalUsage } from './usage.js';
|
|
33
36
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE9E,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9F,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAWtD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE9E,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAExC,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9E,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9F,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAWtD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,MAAM,GACP,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,OAAO,EACP,kBAAkB,EAClB,WAAW,EACX,uBAAuB,GACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEzE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAYjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C,UAAU,OAAQ,SAAQ,WAAW;IACnC,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,KAAK,cAAc,CAAC;IAC7E,kEAAkE;IAClE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAQD,eAAO,MAAM,QAAQ,EAAE,SAAS,OAAO,EAsLtC,CAAC;AA0BF,wBAAgB,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,UAAU,GAAG,QAAQ,CA6C1E"}
|
package/dist/main.js
CHANGED
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
* below is a two-line adapter and not a flag handler.
|
|
13
13
|
*/
|
|
14
14
|
import { booleanFlag, JSON_FLAG, parseArguments, valueFlag } from './args.js';
|
|
15
|
+
import { cost } from './commands/cost.js';
|
|
16
|
+
import { dev } from './commands/dev.js';
|
|
15
17
|
import { doctor } from './commands/doctor.js';
|
|
16
18
|
import { eject } from './commands/eject.js';
|
|
17
19
|
import { evaluate } from './commands/eval.js';
|
|
@@ -71,6 +73,24 @@ export const COMMANDS = [
|
|
|
71
73
|
check: args.booleans.has('check'),
|
|
72
74
|
}),
|
|
73
75
|
},
|
|
76
|
+
{
|
|
77
|
+
name: 'dev',
|
|
78
|
+
summary: 'regenerate the tree and run the application on a local server',
|
|
79
|
+
usage: 'dev [spec] [--target <name>] [--port <n>] [--no-gen] [--no-reload]',
|
|
80
|
+
flags: [
|
|
81
|
+
TARGET_FLAG,
|
|
82
|
+
valueFlag('port', 'n', 'the port to serve on; defaults to 8000, the uvicorn default'),
|
|
83
|
+
booleanFlag('no-gen', 'serve the tree as it is, without regenerating it first'),
|
|
84
|
+
booleanFlag('no-reload', 'turn off the reloader that restarts the server on code changes'),
|
|
85
|
+
],
|
|
86
|
+
run: (context, args) => dev(context, {
|
|
87
|
+
spec: args.positionals[0],
|
|
88
|
+
target: args.values.get('target'),
|
|
89
|
+
port: args.values.get('port'),
|
|
90
|
+
noGen: args.booleans.has('no-gen'),
|
|
91
|
+
noReload: args.booleans.has('no-reload'),
|
|
92
|
+
}),
|
|
93
|
+
},
|
|
74
94
|
{
|
|
75
95
|
name: 'ingest',
|
|
76
96
|
summary: 'index a retriever corpus into the store the spec declares',
|
|
@@ -107,6 +127,19 @@ export const COMMANDS = [
|
|
|
107
127
|
baseline: args.booleans.has('baseline'),
|
|
108
128
|
}),
|
|
109
129
|
},
|
|
130
|
+
{
|
|
131
|
+
name: 'cost',
|
|
132
|
+
summary: 'report cost and latency from the local trace sink',
|
|
133
|
+
usage: 'cost [dir] [--since <date>]',
|
|
134
|
+
flags: [
|
|
135
|
+
valueFlag('since', 'date', 'only count spans that started at or after this date (YYYY-MM-DD or an ISO 8601 instant)'),
|
|
136
|
+
JSON_FLAG,
|
|
137
|
+
],
|
|
138
|
+
run: (context, args) => cost(context, {
|
|
139
|
+
dir: args.positionals[0],
|
|
140
|
+
since: args.values.get('since'),
|
|
141
|
+
}),
|
|
142
|
+
},
|
|
110
143
|
{
|
|
111
144
|
name: 'doctor',
|
|
112
145
|
summary: 'diagnose the tree against the spec: drift, versions, missing files',
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
package/dist/python.d.ts
CHANGED
|
@@ -26,5 +26,14 @@ export declare function interpreterCommand(interpreter: string): readonly string
|
|
|
26
26
|
*/
|
|
27
27
|
export declare function invoke(context: CliContext, command: readonly string[], stdin?: string): SpawnResult | undefined;
|
|
28
28
|
/** The first interpreter that can import the runtime, or `undefined` when none can. */
|
|
29
|
-
export declare function discoverInterpreter(context: CliContext): string | undefined;
|
|
29
|
+
export declare function discoverInterpreter(context: CliContext, probe?: string): string | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* What `aid dev` needs on top of the runtime: a server to run it with.
|
|
32
|
+
*
|
|
33
|
+
* Asked as one import statement rather than two probes because a single command either
|
|
34
|
+
* can start the app or cannot; a machine where uvicorn exists in one interpreter and the
|
|
35
|
+
* runtime in another has no interpreter that serves the app, and two probes that each
|
|
36
|
+
* pass somewhere would name one that does not.
|
|
37
|
+
*/
|
|
38
|
+
export declare const DEV_PROBE = "import aid_runtime, uvicorn";
|
|
30
39
|
//# sourceMappingURL=python.d.ts.map
|
package/dist/python.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../src/python.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,YAAY,YAAI,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAU,CAAC;AAWjE,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAEzE;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CACpB,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,KAAK,CAAC,EAAE,MAAM,GACb,WAAW,GAAG,SAAS,CAUzB;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../src/python.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,YAAY,YAAI,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAU,CAAC;AAWjE,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAEzE;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CACpB,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,KAAK,CAAC,EAAE,MAAM,GACb,WAAW,GAAG,SAAS,CAUzB;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,UAAU,EACnB,KAAK,GAAE,MAAsB,GAC5B,MAAM,GAAG,SAAS,CAMpB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,gCAAgC,CAAC"}
|
package/dist/python.js
CHANGED
|
@@ -46,12 +46,21 @@ export function invoke(context, command, stdin) {
|
|
|
46
46
|
return result.error === undefined ? result : undefined;
|
|
47
47
|
}
|
|
48
48
|
/** The first interpreter that can import the runtime, or `undefined` when none can. */
|
|
49
|
-
export function discoverInterpreter(context) {
|
|
49
|
+
export function discoverInterpreter(context, probe = RUNTIME_PROBE) {
|
|
50
50
|
for (const interpreter of INTERPRETERS) {
|
|
51
|
-
const
|
|
52
|
-
if (
|
|
51
|
+
const attempt = invoke(context, [...interpreterCommand(interpreter), '-c', probe]);
|
|
52
|
+
if (attempt !== undefined && attempt.status === 0)
|
|
53
53
|
return interpreter;
|
|
54
54
|
}
|
|
55
55
|
return undefined;
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* What `aid dev` needs on top of the runtime: a server to run it with.
|
|
59
|
+
*
|
|
60
|
+
* Asked as one import statement rather than two probes because a single command either
|
|
61
|
+
* can start the app or cannot; a machine where uvicorn exists in one interpreter and the
|
|
62
|
+
* runtime in another has no interpreter that serves the app, and two probes that each
|
|
63
|
+
* pass somewhere would name one that does not.
|
|
64
|
+
*/
|
|
65
|
+
export const DEV_PROBE = 'import aid_runtime, uvicorn';
|
|
57
66
|
//# sourceMappingURL=python.js.map
|
package/dist/python.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"python.js","sourceRoot":"","sources":["../src/python.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAU,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,0BAA0B,CAAC;AAEjD,sFAAsF;AACtF,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACpD,OAAO,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CACpB,OAAmB,EACnB,OAA0B,EAC1B,KAAc;IAEd,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC;IACnC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;QAC1C,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;KAC1C,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,mBAAmB,
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../src/python.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAU,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,0BAA0B,CAAC;AAEjD,sFAAsF;AACtF,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACpD,OAAO,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CACpB,OAAmB,EACnB,OAA0B,EAC1B,KAAc;IAEd,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC;IACnC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;QAC1C,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,MAAM;QACb,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;KAC1C,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,mBAAmB,CACjC,OAAmB,EACnB,KAAK,GAAW,aAAa;IAE7B,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,kBAAkB,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACnF,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,WAAW,CAAC;IACxE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,6BAA6B,CAAC"}
|
package/dist/targets.d.ts
CHANGED
|
@@ -23,6 +23,23 @@ import type { CliDiagnostic } from './diagnostics.js';
|
|
|
23
23
|
* answer is a diagnostic, not a Python traceback about a missing module.
|
|
24
24
|
*/
|
|
25
25
|
export type TargetRunner = 'python' | 'node';
|
|
26
|
+
/**
|
|
27
|
+
* How `aid dev` starts this target, or why it has nothing to start.
|
|
28
|
+
*
|
|
29
|
+
* A target that emits handlers for a platform (Next mounts the route, Vercel serves it)
|
|
30
|
+
* has no server of its own; the CLI says so instead of inventing one, because a dev
|
|
31
|
+
* server invented here would be a second, drifting way to run the same application.
|
|
32
|
+
* `entry` is the application's own file, not a generated one -- the generator emits
|
|
33
|
+
* routers and the application decides what to mount and how to run it.
|
|
34
|
+
*/
|
|
35
|
+
export type TargetDev = {
|
|
36
|
+
readonly kind: 'asgi';
|
|
37
|
+
readonly module: string;
|
|
38
|
+
readonly entry: string;
|
|
39
|
+
} | {
|
|
40
|
+
readonly kind: 'none';
|
|
41
|
+
readonly reason: string;
|
|
42
|
+
};
|
|
26
43
|
export interface Target {
|
|
27
44
|
/** The target id, as a spec's `project.targets` spells it. */
|
|
28
45
|
readonly name: string;
|
|
@@ -37,6 +54,8 @@ export interface Target {
|
|
|
37
54
|
readonly generator: Generator;
|
|
38
55
|
/** Which toolchain `aid eval` and `aid ingest` would need to run this target. */
|
|
39
56
|
readonly runner: TargetRunner;
|
|
57
|
+
/** How `aid dev` serves this target, or why it cannot. */
|
|
58
|
+
readonly dev: TargetDev;
|
|
40
59
|
/** Everything that stops this target compiling the IR, as diagnostics. */
|
|
41
60
|
check(ir: IR): readonly CliDiagnostic[];
|
|
42
61
|
plan(ir: IR): Plan;
|
package/dist/targets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../src/targets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,iBAAiB,EAEtB,KAAK,IAAI,EAEV,MAAM,8BAA8B,CAAC;AAStC,OAAO,KAAK,EAAE,EAAE,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAG1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAiBtD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,MAAM;IACrB,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,0EAA0E;IAC1E,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,SAAS,aAAa,EAAE,CAAC;IACxC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;IACnB,wEAAwE;IACxE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,8EAA8E;IAC9E,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,+EAA+E;IAC/E,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IACnD,qFAAqF;IACrF,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;CACxD;
|
|
1
|
+
{"version":3,"file":"targets.d.ts","sourceRoot":"","sources":["../src/targets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,OAAO,EACL,KAAK,SAAS,EACd,KAAK,iBAAiB,EAEtB,KAAK,IAAI,EAEV,MAAM,8BAA8B,CAAC;AAStC,OAAO,KAAK,EAAE,EAAE,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAG1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAiBtD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE7C;;;;;;;;GAQG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC1E;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,MAAM,WAAW,MAAM;IACrB,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;IAC9B,0DAA0D;IAC1D,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IACxB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,SAAS,aAAa,EAAE,CAAC;IACxC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;IACnB,wEAAwE;IACxE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,8EAA8E;IAC9E,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,+EAA+E;IAC/E,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IACnD,qFAAqF;IACrF,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;CACxD;AA6ED;;;;GAIG;AACH,eAAO,MAAM,OAAO,EAAE,SAAS,MAAM,EAmCpC,CAAC;AAOF,eAAO,MAAM,cAAc,QAAe,CAAC;AAE3C,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,QAAmB,CAAC;AAElD,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAEtC;AAED,wFAAwF;AACxF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG1E;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,4BAA4B,CAEjE;AAED,8DAA8D;AAC9D,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAOnE"}
|
package/dist/targets.js
CHANGED
|
@@ -37,6 +37,7 @@ function targetFor(module) {
|
|
|
37
37
|
manifest,
|
|
38
38
|
generator: module.generator,
|
|
39
39
|
runner: module.runner,
|
|
40
|
+
dev: module.dev,
|
|
40
41
|
// `checkPlan` is the target's own compiler, and it throws the same problems
|
|
41
42
|
// `plan` does. Reporting them through it means the CLI prints the target's codes
|
|
42
43
|
// and paths verbatim: no catching, no renaming, no second opinion about what is
|
|
@@ -78,6 +79,13 @@ export const TARGETS = [
|
|
|
78
79
|
manifest: PY_FASTAPI_MANIFEST,
|
|
79
80
|
generator: pyFastApiGenerator,
|
|
80
81
|
runner: 'python',
|
|
82
|
+
// Derived from the manifest's own root so a generator that moves the tree moves the
|
|
83
|
+
// dev entry point with it, exactly as every other path in this registry does.
|
|
84
|
+
dev: {
|
|
85
|
+
kind: 'asgi',
|
|
86
|
+
module: `${PY_FASTAPI_MANIFEST.output.root}.main:app`,
|
|
87
|
+
entry: `${PY_FASTAPI_MANIFEST.output.root}/main.py`,
|
|
88
|
+
},
|
|
81
89
|
extension: '.py',
|
|
82
90
|
evalsIndexPath: EVALS_INIT_PATH,
|
|
83
91
|
evalModulePath: pyFastApiEvalModulePath,
|
|
@@ -88,6 +96,10 @@ export const TARGETS = [
|
|
|
88
96
|
manifest: TS_VERCEL_MANIFEST,
|
|
89
97
|
generator: tsVercelGenerator,
|
|
90
98
|
runner: 'node',
|
|
99
|
+
dev: {
|
|
100
|
+
kind: 'none',
|
|
101
|
+
reason: 'it is a deployment target -- the emitted route handlers are mounted by Next, and it ships no server of its own',
|
|
102
|
+
},
|
|
91
103
|
// The generated modules are `.ts` on disk and `.js` once compiled; the dotted name
|
|
92
104
|
// is the same either way, and the path helpers hand back the file that exists.
|
|
93
105
|
extension: '.ts',
|
package/dist/targets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../src/targets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,SAAS,IAAI,cAAc,EAC3B,eAAe,EACf,mBAAmB,EACnB,cAAc,IAAI,uBAAuB,EACzC,kBAAkB,EAClB,yBAAyB,IAAI,yBAAyB,GACvD,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAGL,YAAY,EAEZ,4BAA4B,GAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,SAAS,IAAI,aAAa,EAC1B,kBAAkB,EAClB,cAAc,IAAI,sBAAsB,EACxC,iBAAiB,EACjB,yBAAyB,IAAI,wBAAwB,EACrD,KAAK,IAAI,aAAa,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"targets.js","sourceRoot":"","sources":["../src/targets.ts"],"names":[],"mappings":"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"}
|
package/dist/trace.d.ts
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading the local trace sink back into numbers.
|
|
3
|
+
*
|
|
4
|
+
* The format is the one `runtimes/{python,typescript}/src/.../local_trace` writes: one
|
|
5
|
+
* JSON object per line, one line per span. This module is the third consumer of that
|
|
6
|
+
* contract and the only one written in TypeScript that does not live in the runtime, so
|
|
7
|
+
* it repeats the field names in one place rather than importing a runtime that drags a
|
|
8
|
+
* provider SDK into the CLI.
|
|
9
|
+
*
|
|
10
|
+
* Two rules keep the report honest:
|
|
11
|
+
*
|
|
12
|
+
* - A span that cannot be parsed is **counted and skipped**, never guessed at. A crash
|
|
13
|
+
* truncated the last line of a file is normal; a line that is not a span at all is not,
|
|
14
|
+
* and the caller reports the count either way.
|
|
15
|
+
* - A span with tokens but no `aid.cost.usd` is **unpriced**, not free. Summing it as
|
|
16
|
+
* zero would make a missing cost look like a cheap run, which is the same failure the
|
|
17
|
+
* IR's cost gate refuses.
|
|
18
|
+
*/
|
|
19
|
+
/** One span, as the sink wrote it. Only the fields this report reads are typed. */
|
|
20
|
+
export interface TraceSpan {
|
|
21
|
+
readonly trace_id: string;
|
|
22
|
+
readonly span_id: string;
|
|
23
|
+
readonly parent_span_id?: string | null;
|
|
24
|
+
readonly name: string;
|
|
25
|
+
readonly kind?: string;
|
|
26
|
+
readonly started_at: string;
|
|
27
|
+
readonly duration_ms?: number;
|
|
28
|
+
readonly attributes?: Readonly<Record<string, unknown>>;
|
|
29
|
+
readonly status?: {
|
|
30
|
+
readonly code?: string;
|
|
31
|
+
} | null;
|
|
32
|
+
}
|
|
33
|
+
export interface ParsedTrace {
|
|
34
|
+
readonly spans: readonly TraceSpan[];
|
|
35
|
+
/** Lines that were not a span. Counted, never silently dropped. */
|
|
36
|
+
readonly skipped: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Parse one JSONL file. A blank line is not a failure -- the sink never writes one, but
|
|
40
|
+
* a file being appended to while it is read can end in a partial line, and that is the
|
|
41
|
+
* one case a reader has to tolerate.
|
|
42
|
+
*/
|
|
43
|
+
export declare function parseTraceLines(text: string): ParsedTrace;
|
|
44
|
+
/**
|
|
45
|
+
* Normalise `--since` to the ISO instant the sink writes, or `undefined` when the value
|
|
46
|
+
* is not a date. A plain `YYYY-MM-DD` is UTC midnight; anything else must be ISO 8601
|
|
47
|
+
* with an explicit offset, because a bare local time would mean a different instant on
|
|
48
|
+
* every machine reading the same repository.
|
|
49
|
+
*/
|
|
50
|
+
export declare function parseSince(value: string): string | undefined;
|
|
51
|
+
/** One model's share of the report. */
|
|
52
|
+
export interface ModelSpend {
|
|
53
|
+
readonly model: string;
|
|
54
|
+
/** Spans attributed to this model that carried usage or cost. */
|
|
55
|
+
readonly calls: number;
|
|
56
|
+
readonly inputTokens: number;
|
|
57
|
+
readonly outputTokens: number;
|
|
58
|
+
readonly costUsd: number;
|
|
59
|
+
/** Calls with usage but no recorded cost. */
|
|
60
|
+
readonly unpricedCalls: number;
|
|
61
|
+
}
|
|
62
|
+
export interface Latency {
|
|
63
|
+
/** Nearest-rank percentiles over model-call spans, in milliseconds. */
|
|
64
|
+
readonly p50: number;
|
|
65
|
+
readonly p95: number;
|
|
66
|
+
readonly samples: number;
|
|
67
|
+
}
|
|
68
|
+
export interface CostSummary {
|
|
69
|
+
readonly spans: number;
|
|
70
|
+
readonly traces: number;
|
|
71
|
+
readonly errors: number;
|
|
72
|
+
readonly inputTokens: number;
|
|
73
|
+
readonly outputTokens: number;
|
|
74
|
+
readonly costUsd: number;
|
|
75
|
+
/** Spans that carried usage but no recorded cost; they are absent from `costUsd`. */
|
|
76
|
+
readonly unpricedSpans: number;
|
|
77
|
+
readonly latency?: Latency;
|
|
78
|
+
readonly models: readonly ModelSpend[];
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Aggregate spans into one report.
|
|
82
|
+
*
|
|
83
|
+
* `since` filters on `started_at` by string comparison, which is exact because both
|
|
84
|
+
* sides are the UTC ISO form the sink writes.
|
|
85
|
+
*/
|
|
86
|
+
export declare function summariseSpans(spans: readonly TraceSpan[], options?: {
|
|
87
|
+
readonly since?: string;
|
|
88
|
+
}): CostSummary;
|
|
89
|
+
//# sourceMappingURL=trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.d.ts","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,mFAAmF;AACnF,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;IACrC,mEAAmE;IACnE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AA6CD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAgBzD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAiB5D;AAED,uCAAuC;AACvC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,6CAA6C;IAC7C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,OAAO;IACtB,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,qFAAqF;IACrF,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;CACxC;AAUD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,SAAS,EAAE,EAC3B,OAAO,GAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACxC,WAAW,CAmGb"}
|
package/dist/trace.js
ADDED
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading the local trace sink back into numbers.
|
|
3
|
+
*
|
|
4
|
+
* The format is the one `runtimes/{python,typescript}/src/.../local_trace` writes: one
|
|
5
|
+
* JSON object per line, one line per span. This module is the third consumer of that
|
|
6
|
+
* contract and the only one written in TypeScript that does not live in the runtime, so
|
|
7
|
+
* it repeats the field names in one place rather than importing a runtime that drags a
|
|
8
|
+
* provider SDK into the CLI.
|
|
9
|
+
*
|
|
10
|
+
* Two rules keep the report honest:
|
|
11
|
+
*
|
|
12
|
+
* - A span that cannot be parsed is **counted and skipped**, never guessed at. A crash
|
|
13
|
+
* truncated the last line of a file is normal; a line that is not a span at all is not,
|
|
14
|
+
* and the caller reports the count either way.
|
|
15
|
+
* - A span with tokens but no `aid.cost.usd` is **unpriced**, not free. Summing it as
|
|
16
|
+
* zero would make a missing cost look like a cheap run, which is the same failure the
|
|
17
|
+
* IR's cost gate refuses.
|
|
18
|
+
*/
|
|
19
|
+
/** The attribute keys the report reads, from the runtime's own conventions table. */
|
|
20
|
+
const ATTRIBUTES = {
|
|
21
|
+
alias: 'aid.model.alias',
|
|
22
|
+
costUsd: 'aid.cost.usd',
|
|
23
|
+
inputTokens: 'gen_ai.usage.input_tokens',
|
|
24
|
+
outputTokens: 'gen_ai.usage.output_tokens',
|
|
25
|
+
responseModel: 'gen_ai.response.model',
|
|
26
|
+
requestModel: 'gen_ai.request.model',
|
|
27
|
+
};
|
|
28
|
+
const UNKNOWN_MODEL = '(unknown)';
|
|
29
|
+
/** The model a span is attributed to: the pinned alias, else the model the provider served. */
|
|
30
|
+
function modelOf(span) {
|
|
31
|
+
const attributes = span.attributes ?? {};
|
|
32
|
+
for (const key of [ATTRIBUTES.alias, ATTRIBUTES.responseModel, ATTRIBUTES.requestModel]) {
|
|
33
|
+
const value = attributes[key];
|
|
34
|
+
if (typeof value === 'string' && value !== '')
|
|
35
|
+
return value;
|
|
36
|
+
}
|
|
37
|
+
return UNKNOWN_MODEL;
|
|
38
|
+
}
|
|
39
|
+
/** A non-negative finite number, accepting the string form an attribute may carry. */
|
|
40
|
+
function numeric(value) {
|
|
41
|
+
if (typeof value === 'number')
|
|
42
|
+
return Number.isFinite(value) && value >= 0 ? value : undefined;
|
|
43
|
+
if (typeof value === 'string' && value.trim() !== '') {
|
|
44
|
+
const parsed = Number(value);
|
|
45
|
+
return Number.isFinite(parsed) && parsed >= 0 ? parsed : undefined;
|
|
46
|
+
}
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
function isSpan(value) {
|
|
50
|
+
if (typeof value !== 'object' || value === null)
|
|
51
|
+
return false;
|
|
52
|
+
const candidate = value;
|
|
53
|
+
return (typeof candidate.trace_id === 'string' &&
|
|
54
|
+
typeof candidate.span_id === 'string' &&
|
|
55
|
+
typeof candidate.name === 'string' &&
|
|
56
|
+
typeof candidate.started_at === 'string');
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Parse one JSONL file. A blank line is not a failure -- the sink never writes one, but
|
|
60
|
+
* a file being appended to while it is read can end in a partial line, and that is the
|
|
61
|
+
* one case a reader has to tolerate.
|
|
62
|
+
*/
|
|
63
|
+
export function parseTraceLines(text) {
|
|
64
|
+
const spans = [];
|
|
65
|
+
let skipped = 0;
|
|
66
|
+
for (const line of text.split(/\r?\n/)) {
|
|
67
|
+
if (line.trim() === '')
|
|
68
|
+
continue;
|
|
69
|
+
try {
|
|
70
|
+
const parsed = JSON.parse(line);
|
|
71
|
+
if (isSpan(parsed))
|
|
72
|
+
spans.push(parsed);
|
|
73
|
+
else
|
|
74
|
+
skipped += 1;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
skipped += 1;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return { spans, skipped };
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Normalise `--since` to the ISO instant the sink writes, or `undefined` when the value
|
|
84
|
+
* is not a date. A plain `YYYY-MM-DD` is UTC midnight; anything else must be ISO 8601
|
|
85
|
+
* with an explicit offset, because a bare local time would mean a different instant on
|
|
86
|
+
* every machine reading the same repository.
|
|
87
|
+
*/
|
|
88
|
+
export function parseSince(value) {
|
|
89
|
+
const trimmed = value.trim();
|
|
90
|
+
const day = /^(\d{4})-(\d{2})-(\d{2})$/;
|
|
91
|
+
if (day.test(trimmed)) {
|
|
92
|
+
const date = new Date(`${trimmed}T00:00:00.000Z`);
|
|
93
|
+
// A round trip rejects 2026-02-31, which `Date` would otherwise roll into March.
|
|
94
|
+
if (Number.isNaN(date.getTime()) || date.toISOString().slice(0, 10) !== trimmed) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
return date.toISOString();
|
|
98
|
+
}
|
|
99
|
+
if (!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d+)?)?(Z|[+-]\d{2}:\d{2})$/.test(trimmed)) {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
const date = new Date(trimmed);
|
|
103
|
+
return Number.isNaN(date.getTime()) ? undefined : date.toISOString();
|
|
104
|
+
}
|
|
105
|
+
/** Nearest-rank percentile: the smallest value at or above the given fraction. */
|
|
106
|
+
function percentile(sorted, fraction) {
|
|
107
|
+
if (sorted.length === 0)
|
|
108
|
+
return 0;
|
|
109
|
+
const rank = Math.ceil(fraction * sorted.length);
|
|
110
|
+
const index = Math.min(Math.max(rank - 1, 0), sorted.length - 1);
|
|
111
|
+
return sorted[index] ?? 0;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Aggregate spans into one report.
|
|
115
|
+
*
|
|
116
|
+
* `since` filters on `started_at` by string comparison, which is exact because both
|
|
117
|
+
* sides are the UTC ISO form the sink writes.
|
|
118
|
+
*/
|
|
119
|
+
export function summariseSpans(spans, options = {}) {
|
|
120
|
+
const counted = options.since === undefined
|
|
121
|
+
? spans
|
|
122
|
+
: spans.filter((span) => span.started_at >= options.since);
|
|
123
|
+
const traceIds = new Set();
|
|
124
|
+
const byModel = new Map();
|
|
125
|
+
const durations = [];
|
|
126
|
+
let errors = 0;
|
|
127
|
+
let inputTokens = 0;
|
|
128
|
+
let outputTokens = 0;
|
|
129
|
+
let costUsd = 0;
|
|
130
|
+
let unpricedSpans = 0;
|
|
131
|
+
for (const span of counted) {
|
|
132
|
+
traceIds.add(span.trace_id);
|
|
133
|
+
if (span.status?.code === 'ERROR')
|
|
134
|
+
errors += 1;
|
|
135
|
+
const attributes = span.attributes ?? {};
|
|
136
|
+
const cost = numeric(attributes[ATTRIBUTES.costUsd]);
|
|
137
|
+
const input = numeric(attributes[ATTRIBUTES.inputTokens]);
|
|
138
|
+
const output = numeric(attributes[ATTRIBUTES.outputTokens]);
|
|
139
|
+
const hasUsage = input !== undefined || output !== undefined;
|
|
140
|
+
if (cost !== undefined)
|
|
141
|
+
costUsd += cost;
|
|
142
|
+
if (input !== undefined)
|
|
143
|
+
inputTokens += input;
|
|
144
|
+
if (output !== undefined)
|
|
145
|
+
outputTokens += output;
|
|
146
|
+
if (hasUsage && cost === undefined)
|
|
147
|
+
unpricedSpans += 1;
|
|
148
|
+
if (hasUsage) {
|
|
149
|
+
const duration = span.duration_ms;
|
|
150
|
+
if (typeof duration === 'number' && Number.isFinite(duration) && duration >= 0) {
|
|
151
|
+
durations.push(duration);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
if (!hasUsage && cost === undefined)
|
|
155
|
+
continue;
|
|
156
|
+
const model = modelOf(span);
|
|
157
|
+
const existing = byModel.get(model);
|
|
158
|
+
const addition = {
|
|
159
|
+
input: input ?? 0,
|
|
160
|
+
output: output ?? 0,
|
|
161
|
+
cost: cost ?? 0,
|
|
162
|
+
unpriced: hasUsage && cost === undefined ? 1 : 0,
|
|
163
|
+
};
|
|
164
|
+
if (existing === undefined) {
|
|
165
|
+
byModel.set(model, {
|
|
166
|
+
model,
|
|
167
|
+
calls: 1,
|
|
168
|
+
inputTokens: addition.input,
|
|
169
|
+
outputTokens: addition.output,
|
|
170
|
+
costUsd: addition.cost,
|
|
171
|
+
unpricedCalls: addition.unpriced,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
byModel.set(model, {
|
|
176
|
+
model,
|
|
177
|
+
calls: existing.calls + 1,
|
|
178
|
+
inputTokens: existing.inputTokens + addition.input,
|
|
179
|
+
outputTokens: existing.outputTokens + addition.output,
|
|
180
|
+
costUsd: existing.costUsd + addition.cost,
|
|
181
|
+
unpricedCalls: existing.unpricedCalls + addition.unpriced,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
// Priciest first, then busiest, then by name, so two runs over the same spans print
|
|
186
|
+
// the same order without depending on the order the files happened to be read in.
|
|
187
|
+
const models = [...byModel.values()].sort((left, right) => right.costUsd - left.costUsd ||
|
|
188
|
+
right.calls - left.calls ||
|
|
189
|
+
(left.model < right.model ? -1 : left.model > right.model ? 1 : 0));
|
|
190
|
+
durations.sort((left, right) => left - right);
|
|
191
|
+
const summary = {
|
|
192
|
+
spans: counted.length,
|
|
193
|
+
traces: traceIds.size,
|
|
194
|
+
errors,
|
|
195
|
+
inputTokens,
|
|
196
|
+
outputTokens,
|
|
197
|
+
costUsd,
|
|
198
|
+
unpricedSpans,
|
|
199
|
+
models,
|
|
200
|
+
...(durations.length === 0
|
|
201
|
+
? {}
|
|
202
|
+
: {
|
|
203
|
+
latency: {
|
|
204
|
+
p50: Math.round(percentile(durations, 0.5)),
|
|
205
|
+
p95: Math.round(percentile(durations, 0.95)),
|
|
206
|
+
samples: durations.length,
|
|
207
|
+
},
|
|
208
|
+
}),
|
|
209
|
+
};
|
|
210
|
+
return summary;
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace.js","sourceRoot":"","sources":["../src/trace.ts"],"names":[],"mappings":"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"}
|