@nodetool-ai/cli 0.8.1 → 0.8.2
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/README.md +4 -1
- package/dist/.nodetool-build-stamp +1 -1
- package/dist/affected/affected.d.ts +7 -12
- package/dist/affected/affected.d.ts.map +1 -1
- package/dist/affected/affected.js +42 -0
- package/dist/affected/affected.js.map +1 -1
- package/dist/app-debug/app-target.d.ts +1 -1
- package/dist/app-debug/app-target.d.ts.map +1 -1
- package/dist/app-debug/harness.d.ts +3 -1
- package/dist/app-debug/harness.d.ts.map +1 -1
- package/dist/app-debug/harness.js +23 -0
- package/dist/app-debug/harness.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +2 -1
- package/dist/app.js.map +1 -1
- package/dist/chat-codeact.d.ts +8 -0
- package/dist/chat-codeact.d.ts.map +1 -1
- package/dist/chat-codeact.js +59 -21
- package/dist/chat-codeact.js.map +1 -1
- package/dist/chat-context.d.ts.map +1 -1
- package/dist/chat-context.js +7 -2
- package/dist/chat-context.js.map +1 -1
- package/dist/commands/__tests__/timeline-render-audio.test.js +1 -1
- package/dist/commands/__tests__/timeline-render-audio.test.js.map +1 -1
- package/dist/commands/__tests__/timeline-render-completeness.test.d.ts +2 -0
- package/dist/commands/__tests__/timeline-render-completeness.test.d.ts.map +1 -0
- package/dist/commands/__tests__/timeline-render-completeness.test.js +117 -0
- package/dist/commands/__tests__/timeline-render-completeness.test.js.map +1 -0
- package/dist/commands/__tests__/timeline-score.test.d.ts +2 -0
- package/dist/commands/__tests__/timeline-score.test.d.ts.map +1 -0
- package/dist/commands/__tests__/timeline-score.test.js +100 -0
- package/dist/commands/__tests__/timeline-score.test.js.map +1 -0
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +2 -1
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/app.d.ts.map +1 -1
- package/dist/commands/app.js +29 -5
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/debug-summary-output.d.ts +22 -0
- package/dist/commands/debug-summary-output.d.ts.map +1 -0
- package/dist/commands/debug-summary-output.js +28 -0
- package/dist/commands/debug-summary-output.js.map +1 -0
- package/dist/commands/errors.d.ts +11 -0
- package/dist/commands/errors.d.ts.map +1 -0
- package/dist/commands/errors.js +177 -0
- package/dist/commands/errors.js.map +1 -0
- package/dist/commands/eval.d.ts.map +1 -1
- package/dist/commands/eval.js +2 -0
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/extension.d.ts +12 -0
- package/dist/commands/extension.d.ts.map +1 -0
- package/dist/commands/extension.js +30 -0
- package/dist/commands/extension.js.map +1 -0
- package/dist/commands/game-benchmark.d.ts +34 -0
- package/dist/commands/game-benchmark.d.ts.map +1 -0
- package/dist/commands/game-benchmark.js +95 -0
- package/dist/commands/game-benchmark.js.map +1 -0
- package/dist/commands/game-smoke.d.ts +3 -0
- package/dist/commands/game-smoke.d.ts.map +1 -0
- package/dist/commands/game-smoke.js +23 -0
- package/dist/commands/game-smoke.js.map +1 -0
- package/dist/commands/game.d.ts.map +1 -1
- package/dist/commands/game.js +247 -18
- package/dist/commands/game.js.map +1 -1
- package/dist/commands/harness.d.ts +50 -0
- package/dist/commands/harness.d.ts.map +1 -1
- package/dist/commands/harness.js +284 -70
- package/dist/commands/harness.js.map +1 -1
- package/dist/commands/js-script.d.ts.map +1 -1
- package/dist/commands/js-script.js +6 -22
- package/dist/commands/js-script.js.map +1 -1
- package/dist/commands/mcp.d.ts +21 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +164 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/package.d.ts.map +1 -1
- package/dist/commands/package.js +12 -12
- package/dist/commands/package.js.map +1 -1
- package/dist/commands/runs.d.ts +7 -0
- package/dist/commands/runs.d.ts.map +1 -0
- package/dist/commands/runs.js +302 -0
- package/dist/commands/runs.js.map +1 -0
- package/dist/commands/sketch.d.ts.map +1 -1
- package/dist/commands/sketch.js +6 -22
- package/dist/commands/sketch.js.map +1 -1
- package/dist/commands/timeline-render.d.ts +6 -1
- package/dist/commands/timeline-render.d.ts.map +1 -1
- package/dist/commands/timeline-render.js +13 -4
- package/dist/commands/timeline-render.js.map +1 -1
- package/dist/commands/timeline-score.d.ts +16 -0
- package/dist/commands/timeline-score.d.ts.map +1 -0
- package/dist/commands/timeline-score.js +89 -0
- package/dist/commands/timeline-score.js.map +1 -0
- package/dist/commands/timeline.d.ts.map +1 -1
- package/dist/commands/timeline.js +8 -22
- package/dist/commands/timeline.js.map +1 -1
- package/dist/commands/worker.js +1 -1
- package/dist/commands/worker.js.map +1 -1
- package/dist/debug/server-runner.d.ts +2 -0
- package/dist/debug/server-runner.d.ts.map +1 -1
- package/dist/debug/server-runner.js +37 -4
- package/dist/debug/server-runner.js.map +1 -1
- package/dist/harness/capability-table.d.ts.map +1 -1
- package/dist/harness/capability-table.js +295 -27
- package/dist/harness/capability-table.js.map +1 -1
- package/dist/harness/changed-files.d.ts +2 -0
- package/dist/harness/changed-files.d.ts.map +1 -1
- package/dist/harness/changed-files.js +14 -0
- package/dist/harness/changed-files.js.map +1 -1
- package/dist/harness/registry.d.ts +32 -4
- package/dist/harness/registry.d.ts.map +1 -1
- package/dist/harness/registry.js +327 -31
- package/dist/harness/registry.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interaction-script.d.ts +23 -0
- package/dist/interaction-script.d.ts.map +1 -1
- package/dist/interaction-script.js +50 -1
- package/dist/interaction-script.js.map +1 -1
- package/dist/js-script-debug/harness.d.ts +11 -1
- package/dist/js-script-debug/harness.d.ts.map +1 -1
- package/dist/js-script-debug/harness.js +17 -39
- package/dist/js-script-debug/harness.js.map +1 -1
- package/dist/local-model-interfaces.d.ts.map +1 -1
- package/dist/local-model-interfaces.js +1 -24
- package/dist/local-model-interfaces.js.map +1 -1
- package/dist/node-registry.d.ts +14 -0
- package/dist/node-registry.d.ts.map +1 -1
- package/dist/node-registry.js +15 -18
- package/dist/node-registry.js.map +1 -1
- package/dist/nodetool-main.d.ts +15 -0
- package/dist/nodetool-main.d.ts.map +1 -0
- package/dist/nodetool-main.js +1368 -0
- package/dist/nodetool-main.js.map +1 -0
- package/dist/nodetool.d.ts +0 -13
- package/dist/nodetool.d.ts.map +1 -1
- package/dist/nodetool.js +17 -1683
- package/dist/nodetool.js.map +1 -1
- package/dist/providers.d.ts +1 -1
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +11 -1
- package/dist/providers.js.map +1 -1
- package/dist/run-dsl.d.ts +6 -0
- package/dist/run-dsl.d.ts.map +1 -1
- package/dist/run-dsl.js +4 -1
- package/dist/run-dsl.js.map +1 -1
- package/dist/sandbox-catalog.d.ts +12 -0
- package/dist/sandbox-catalog.d.ts.map +1 -1
- package/dist/sandbox-catalog.js +51 -0
- package/dist/sandbox-catalog.js.map +1 -1
- package/dist/sketch-debug/harness.d.ts.map +1 -1
- package/dist/sketch-debug/harness.js +2 -35
- package/dist/sketch-debug/harness.js.map +1 -1
- package/dist/stdin.d.ts.map +1 -1
- package/dist/stdin.js +2 -1
- package/dist/stdin.js.map +1 -1
- package/dist/timeline-debug/harness.d.ts.map +1 -1
- package/dist/timeline-debug/harness.js +2 -35
- package/dist/timeline-debug/harness.js.map +1 -1
- package/package.json +38 -35
package/dist/harness/registry.js
CHANGED
|
@@ -25,6 +25,8 @@
|
|
|
25
25
|
* the selfchecks of every harness covering a touched surface. The gate — not
|
|
26
26
|
* the author — selects the checks.
|
|
27
27
|
*/
|
|
28
|
+
import { computeAffected } from "../affected/affected.js";
|
|
29
|
+
import { isGlobalGateFile } from "./changed-files.js";
|
|
28
30
|
/**
|
|
29
31
|
* The pure suites behind the script↔storyboard link and the guided creation
|
|
30
32
|
* flows. One constant because the entry's `command` and its `selfcheck` must
|
|
@@ -54,7 +56,10 @@ const GAME_FLOW_SUITES = "npm run test --workspace=packages/protocol -- game &&
|
|
|
54
56
|
"npm run test --workspace=packages/game-nodes && " +
|
|
55
57
|
"npm run test --workspace=packages/game-runtime && " +
|
|
56
58
|
"npm run test --workspace=packages/game-renderer && " +
|
|
57
|
-
"npm run test --workspace=packages/websocket -- trpc-games"
|
|
59
|
+
"npm run test --workspace=packages/websocket -- trpc-games gameDraftHistory && " +
|
|
60
|
+
"npm run test --workspace=packages/agents -- game && " +
|
|
61
|
+
"npm run test --workspace=packages/cli -- game-command && " +
|
|
62
|
+
"npm run test --workspace=web -- src/stores/game src/components/game";
|
|
58
63
|
/**
|
|
59
64
|
* Durable generation recovery without a provider call. These suites exercise
|
|
60
65
|
* acceptance and lease fencing, explicit FAL queue binding, receipt ordering,
|
|
@@ -91,8 +96,9 @@ const TIMELINE_MODEL3D_SUITES = "npm run test --workspace=packages/video-nodes -
|
|
|
91
96
|
const TIMELINE_NATIVE_MEDIA_EDITING_SUITES = "npm run test --workspace=packages/timeline -- extension && " +
|
|
92
97
|
"npm run test --workspace=packages/runtime -- video-extension && " +
|
|
93
98
|
"npm run test --workspace=packages/websocket -- video-extension-inference && " +
|
|
94
|
-
"npm run test --workspace=packages/agents -- timeline-generative-edit timeline-tool-loop && " +
|
|
95
|
-
"npm run test --workspace=web -- useTimelineAgentBridge timelineTools nativeMediaEditingAcceptance nativeMediaEditingPreview timelineExtension useTimelineExtension ExtendClipPanel"
|
|
99
|
+
"npm run test --workspace=packages/agents -- timeline-headless-media-parity timeline-tool-contracts timeline-generative-edit timeline-tool-loop && " +
|
|
100
|
+
"npm run test --workspace=web -- useTimelineAgentBridge timelineTools nativeMediaEditingAcceptance nativeMediaEditingPreview timelineExtension useTimelineExtension ExtendClipPanel" +
|
|
101
|
+
" && npm run test --workspace=packages/websocket -- generation-recovery-media";
|
|
96
102
|
/**
|
|
97
103
|
* The audio-driven-motion suites: `bake_audio_animation`'s own arithmetic
|
|
98
104
|
* (the two clock hops, the envelope/beats curve shapes) plus the end-to-end
|
|
@@ -214,6 +220,31 @@ export const HARNESSES = [
|
|
|
214
220
|
docs: "docs/dsl-native-flow-design.md",
|
|
215
221
|
selfcheck: {
|
|
216
222
|
command: "npm run test --workspace=packages/dsl -- flow-core flow-streaming flow-abort",
|
|
223
|
+
cost: "cheap",
|
|
224
|
+
suiteOnly: true
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
id: "app-runs",
|
|
229
|
+
title: "Durable app operation and generation attachment check",
|
|
230
|
+
command: "npm run test --workspace=packages/execution -- app-operation app-run-generation",
|
|
231
|
+
kind: "execution",
|
|
232
|
+
capabilities: [],
|
|
233
|
+
docs: "docs/harnesses.md § App runs phase 1",
|
|
234
|
+
selfcheck: {
|
|
235
|
+
command: "npm run test --workspace=packages/execution -- app-operation app-run-generation",
|
|
236
|
+
cost: "cheap"
|
|
237
|
+
}
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
id: "run-traces",
|
|
241
|
+
title: "Durable app trace, content policy and ancestry check",
|
|
242
|
+
command: "npm run test --workspace=packages/execution --workspace=packages/runtime --workspace=packages/models --workspace=packages/websocket -- run-trace external-trace-privacy http-tracing",
|
|
243
|
+
kind: "execution",
|
|
244
|
+
capabilities: [],
|
|
245
|
+
docs: "docs/harnesses.md § Run traces phase 2",
|
|
246
|
+
selfcheck: {
|
|
247
|
+
command: "npm run test --workspace=packages/execution --workspace=packages/runtime --workspace=packages/models --workspace=packages/websocket -- run-trace external-trace-privacy http-tracing",
|
|
217
248
|
cost: "cheap"
|
|
218
249
|
}
|
|
219
250
|
},
|
|
@@ -229,6 +260,82 @@ export const HARNESSES = [
|
|
|
229
260
|
cost: "cheap"
|
|
230
261
|
}
|
|
231
262
|
},
|
|
263
|
+
{
|
|
264
|
+
id: "run-readers",
|
|
265
|
+
title: "Run reader, debug history and CLI failure-path check",
|
|
266
|
+
command: "npm run test --workspace=packages/execution --workspace=packages/models --workspace=packages/websocket --workspace=packages/agents --workspace=packages/cli -- runs-phase3 app-debug-versioned-targets app-debug-workflow-inputs-phase3 capabilities-runs runs-command runs-integration run-readers job-find runs-trpc sandbox-api-coverage",
|
|
267
|
+
kind: "execution",
|
|
268
|
+
capabilities: ["json"],
|
|
269
|
+
docs: "docs/harnesses.md § Run readers phase 3",
|
|
270
|
+
selfcheck: {
|
|
271
|
+
command: "npm run test --workspace=packages/execution --workspace=packages/models --workspace=packages/websocket --workspace=packages/agents --workspace=packages/cli -- runs-phase3 app-debug-versioned-targets app-debug-workflow-inputs-phase3 capabilities-runs runs-command runs-integration run-readers job-find runs-trpc sandbox-api-coverage",
|
|
272
|
+
cost: "cheap"
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
id: "browser-run-spans",
|
|
277
|
+
title: "Browser run ownership, ancestry and restart check",
|
|
278
|
+
command: "npm run test --workspace=packages/websocket -- browser-run-spans-phase4 browser-app-run-phase4 app-runs-workflow",
|
|
279
|
+
kind: "execution",
|
|
280
|
+
capabilities: [],
|
|
281
|
+
docs: "docs/harnesses.md § Run inspection phase 4",
|
|
282
|
+
selfcheck: {
|
|
283
|
+
command: "npm run test --workspace=packages/websocket -- browser-run-spans-phase4 browser-app-run-phase4 app-runs-workflow",
|
|
284
|
+
cost: "cheap"
|
|
285
|
+
}
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
id: "run-inspection-ui",
|
|
289
|
+
title: "Stored trace, activity replay and browser recorder check",
|
|
290
|
+
command: "npm run test --workspace=web -- --runInBand --testPathPattern='browserRunTrace|browserWorkflowRunner|WorkflowRunner.test|TracePanel.test|TraceStore|useRuns|runTraceCache|appRunActivity|AgentActivityWidget|useWidgetRuntime|sketchPadWidget|workflowFormWidget|chatWidgets|mediaWidgets|buttonWidget|recorderWidgets|conditionalWidget|errorTraceReporting|ChatSurface.test|AskRunAgentButton|useAppRuntime|runJsScript.test'",
|
|
291
|
+
kind: "execution",
|
|
292
|
+
capabilities: [],
|
|
293
|
+
docs: "docs/harnesses.md § Run inspection phase 4",
|
|
294
|
+
selfcheck: {
|
|
295
|
+
command: "npm run test --workspace=web -- --runInBand --testPathPattern='browserRunTrace|browserWorkflowRunner|WorkflowRunner.test|TracePanel.test|TraceStore|useRuns|runTraceCache|appRunActivity|AgentActivityWidget|useWidgetRuntime|sketchPadWidget|workflowFormWidget|chatWidgets|mediaWidgets|buttonWidget|recorderWidgets|conditionalWidget|errorTraceReporting|ChatSurface.test|AskRunAgentButton|useAppRuntime|runJsScript.test'",
|
|
296
|
+
cost: "cheap"
|
|
297
|
+
}
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
id: "run-inspection-browser",
|
|
301
|
+
title: "Browser action ancestry and Trace/Logs reload journey",
|
|
302
|
+
command: "npm run test:journeys --workspace=web -- run-observability.spec.ts",
|
|
303
|
+
kind: "execution",
|
|
304
|
+
capabilities: ["browser"],
|
|
305
|
+
docs: "docs/harnesses.md § Run inspection phase 4"
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
id: "app-instance-history",
|
|
309
|
+
title: "Instance management, pinned versions and history projection check",
|
|
310
|
+
command: "npm run test --workspace=packages/models --workspace=packages/execution --workspace=packages/websocket -- app-instance run-list-app-metadata runs-phase3 app-operation",
|
|
311
|
+
kind: "execution",
|
|
312
|
+
capabilities: [],
|
|
313
|
+
docs: "docs/harnesses.md § App instances and history phase 5",
|
|
314
|
+
selfcheck: {
|
|
315
|
+
command: "npm run test --workspace=packages/models --workspace=packages/execution --workspace=packages/websocket -- app-instance run-list-app-metadata runs-phase3 app-operation",
|
|
316
|
+
cost: "cheap"
|
|
317
|
+
}
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
id: "app-instance-history-ui",
|
|
321
|
+
title: "Instance tabs, management cache and app host check",
|
|
322
|
+
command: "npm run test --workspace=web -- --runInBand --testPathPattern='WorkspaceTabsStore|useAppInstances|useAppInstance|ApplicationSurface|ApplicationRunView|AppRuntimeView|AppRunHistory|useAppRuntime'",
|
|
323
|
+
kind: "execution",
|
|
324
|
+
capabilities: [],
|
|
325
|
+
docs: "docs/harnesses.md § App instances and history phase 5",
|
|
326
|
+
selfcheck: {
|
|
327
|
+
command: "npm run test --workspace=web -- --runInBand --testPathPattern='WorkspaceTabsStore|useAppInstances|useAppInstance|ApplicationSurface|ApplicationRunView|AppRuntimeView|AppRunHistory|useAppRuntime'",
|
|
328
|
+
cost: "cheap"
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
id: "app-instance-history-browser",
|
|
333
|
+
title: "Independent app instances and read-only historical results journey",
|
|
334
|
+
command: "npm run test:journeys --workspace=web -- app-instances.spec.ts run-observability.spec.ts",
|
|
335
|
+
kind: "execution",
|
|
336
|
+
capabilities: ["browser"],
|
|
337
|
+
docs: "docs/harnesses.md § App instances and history phase 5"
|
|
338
|
+
},
|
|
232
339
|
{
|
|
233
340
|
id: "app-build",
|
|
234
341
|
title: "Mini-app build harness (spec→plan→author→check→run→judge)",
|
|
@@ -290,6 +397,21 @@ export const HARNESSES = [
|
|
|
290
397
|
cost: "cheap"
|
|
291
398
|
}
|
|
292
399
|
},
|
|
400
|
+
{
|
|
401
|
+
id: "timeline-score",
|
|
402
|
+
title: "Timeline craft scorecard (agent output vs. shipped showcase examples)",
|
|
403
|
+
command: "nodetool timeline score <id|file.json> [--json] [--min-score <n>] [--sheet <out.png>]",
|
|
404
|
+
kind: "static",
|
|
405
|
+
capabilities: ["json", "no-db"],
|
|
406
|
+
docs: "docs/harnesses.md § nodetool timeline score",
|
|
407
|
+
selfcheck: {
|
|
408
|
+
// Deterministic: the metrics/formula core, plus the reference band
|
|
409
|
+
// computed from the shipped examples at test time — no model, no key.
|
|
410
|
+
command: "npm run test --workspace=packages/execution -- timeline-score && " +
|
|
411
|
+
"npm run test --workspace=packages/cli -- timeline-score",
|
|
412
|
+
cost: "cheap"
|
|
413
|
+
}
|
|
414
|
+
},
|
|
293
415
|
{
|
|
294
416
|
id: "serein-timeline-repro",
|
|
295
417
|
title: "Serein timeline motion frame reproduction",
|
|
@@ -354,7 +476,11 @@ export const HARNESSES = [
|
|
|
354
476
|
capabilities: ["no-db"],
|
|
355
477
|
agentTool: "bake_audio_animation",
|
|
356
478
|
docs: "docs/harnesses.md § Audio-driven timeline motion",
|
|
357
|
-
selfcheck: {
|
|
479
|
+
selfcheck: {
|
|
480
|
+
command: TIMELINE_AUDIO_DRIVE_SUITES,
|
|
481
|
+
cost: "cheap",
|
|
482
|
+
suiteOnly: true
|
|
483
|
+
}
|
|
358
484
|
},
|
|
359
485
|
{
|
|
360
486
|
id: "timeline-generated-matte",
|
|
@@ -471,7 +597,8 @@ export const HARNESSES = [
|
|
|
471
597
|
docs: "docs/harnesses.md § nodetool chat",
|
|
472
598
|
selfcheck: {
|
|
473
599
|
command: "npm run test --workspace=packages/cli -- tests/chat-app.test.ts tests/chat-media.test.ts tests/terminal-keyboard.test.ts tests/terminal-input.test.ts tests/terminal-mouse.test.ts tests/terminal-screen.test.ts tests/chat-prompts.test.ts tests/chat-sessions.test.ts tests/websocket-client.test.ts",
|
|
474
|
-
cost: "cheap"
|
|
600
|
+
cost: "cheap",
|
|
601
|
+
suiteOnly: true
|
|
475
602
|
}
|
|
476
603
|
},
|
|
477
604
|
{
|
|
@@ -728,7 +855,8 @@ export const HARNESSES = [
|
|
|
728
855
|
docs: "docs/plans/tutorial-focus-animation.md",
|
|
729
856
|
selfcheck: {
|
|
730
857
|
command: "npm run test --workspace=demo",
|
|
731
|
-
cost: "cheap"
|
|
858
|
+
cost: "cheap",
|
|
859
|
+
suiteOnly: true
|
|
732
860
|
}
|
|
733
861
|
},
|
|
734
862
|
{
|
|
@@ -760,7 +888,8 @@ export const HARNESSES = [
|
|
|
760
888
|
// resolution, drain/shutdown. Multi-minute (255 files), so this stays
|
|
761
889
|
// an --expensive selfcheck rather than the default gate.
|
|
762
890
|
command: "npm run test --workspace=packages/websocket",
|
|
763
|
-
cost: "expensive"
|
|
891
|
+
cost: "expensive",
|
|
892
|
+
suiteOnly: true
|
|
764
893
|
}
|
|
765
894
|
},
|
|
766
895
|
{
|
|
@@ -772,7 +901,8 @@ export const HARNESSES = [
|
|
|
772
901
|
docs: "packages/models/AGENTS.md",
|
|
773
902
|
selfcheck: {
|
|
774
903
|
command: "npm run test --workspace=packages/models",
|
|
775
|
-
cost: "cheap"
|
|
904
|
+
cost: "cheap",
|
|
905
|
+
suiteOnly: true
|
|
776
906
|
}
|
|
777
907
|
},
|
|
778
908
|
{
|
|
@@ -925,16 +1055,15 @@ export const SURFACES = [
|
|
|
925
1055
|
// `capability-suites` covers the seam — dispatch, classification, and what
|
|
926
1056
|
// a process with no action layer answers. The half below it runs in
|
|
927
1057
|
// `npm run test:integration --workspace=packages/browser`, which
|
|
928
|
-
// launches a real Chrome with the built extension loaded and
|
|
929
|
-
// production transport end to end. It is
|
|
930
|
-
//
|
|
931
|
-
// by hand.
|
|
1058
|
+
// launches a real Chrome with the built extension loaded and its native
|
|
1059
|
+
// host registered, and drives the production transport end to end. It is
|
|
1060
|
+
// not a selfcheck: it downloads Chrome, so a diff to the relay still
|
|
1061
|
+
// needs it run by hand.
|
|
932
1062
|
paths: [
|
|
933
1063
|
"chrome-extension/",
|
|
934
1064
|
"packages/browser/",
|
|
935
1065
|
"packages/agents/src/capabilities/browser.ts",
|
|
936
|
-
"packages/agents/src/capabilities/browser.specs.ts"
|
|
937
|
-
"packages/websocket/src/extension-cdp-bridge.ts"
|
|
1066
|
+
"packages/agents/src/capabilities/browser.specs.ts"
|
|
938
1067
|
]
|
|
939
1068
|
},
|
|
940
1069
|
{
|
|
@@ -995,6 +1124,9 @@ export const SURFACES = [
|
|
|
995
1124
|
title: "Native game creation and editing",
|
|
996
1125
|
harnesses: ["game-flow", "capability-suites", "validate"],
|
|
997
1126
|
paths: [
|
|
1127
|
+
"packages/cli/src/commands/game.ts",
|
|
1128
|
+
"packages/protocol/src/game.ts",
|
|
1129
|
+
"packages/protocol/src/game3d.ts",
|
|
998
1130
|
"packages/protocol/src/game-design.ts",
|
|
999
1131
|
"packages/protocol/src/game-graph.ts",
|
|
1000
1132
|
"packages/protocol/src/game-flow-prompt.ts",
|
|
@@ -1006,11 +1138,124 @@ export const SURFACES = [
|
|
|
1006
1138
|
"packages/godot-templates/",
|
|
1007
1139
|
"packages/base-nodes/tests/game-graph-chips.test.ts",
|
|
1008
1140
|
"packages/websocket/src/trpc/routers/games.ts",
|
|
1141
|
+
"packages/websocket/src/trpc/routers/gameDraftHistory.ts",
|
|
1009
1142
|
"packages/websocket/src/lib/style-presets.ts",
|
|
1143
|
+
"web/src/components/game/",
|
|
1144
|
+
"web/src/stores/game/",
|
|
1145
|
+
"web/tests/journeys/native-game3d-editor.spec.ts",
|
|
1010
1146
|
"web/src/components/workspace/GameSurface.tsx",
|
|
1011
1147
|
"web/src/components/projects/NewProjectSurface.tsx"
|
|
1012
1148
|
]
|
|
1013
1149
|
},
|
|
1150
|
+
{
|
|
1151
|
+
id: "app-runs",
|
|
1152
|
+
title: "App instances and durable operation runs",
|
|
1153
|
+
harnesses: ["app-runs"],
|
|
1154
|
+
paths: [
|
|
1155
|
+
"packages/models/src/app-instance.ts",
|
|
1156
|
+
"packages/models/src/migrations/versions.ts",
|
|
1157
|
+
"packages/protocol/src/api-schemas/app-runs.ts",
|
|
1158
|
+
"packages/execution/src/service/app-operation.ts",
|
|
1159
|
+
"packages/execution/src/app-run-generation.ts",
|
|
1160
|
+
"packages/websocket/src/lib/app-instances-service.ts",
|
|
1161
|
+
"packages/websocket/src/routes/app-runs.ts",
|
|
1162
|
+
"packages/websocket/src/trpc/routers/app-instances.ts",
|
|
1163
|
+
"packages/websocket/src/trpc/routers/app-runs.ts",
|
|
1164
|
+
"web/src/components/appbuilder/runtime/"
|
|
1165
|
+
]
|
|
1166
|
+
},
|
|
1167
|
+
{
|
|
1168
|
+
id: "run-traces",
|
|
1169
|
+
title: "Server run trace persistence and privacy",
|
|
1170
|
+
harnesses: ["run-traces"],
|
|
1171
|
+
paths: [
|
|
1172
|
+
"packages/protocol/src/run-trace.ts",
|
|
1173
|
+
"packages/models/src/run-trace.ts",
|
|
1174
|
+
"packages/models/src/migrations/run-traces.ts",
|
|
1175
|
+
"packages/models/src/schema/run-traces.ts",
|
|
1176
|
+
"packages/models/src/schema-pg/run-traces.ts",
|
|
1177
|
+
"packages/runtime/src/run-trace-",
|
|
1178
|
+
"packages/runtime/src/telemetry.ts",
|
|
1179
|
+
"packages/runtime/src/trace-exporters.ts",
|
|
1180
|
+
"packages/runtime/src/providers/loop-tracing.ts",
|
|
1181
|
+
"packages/execution/src/run-trace-store.ts",
|
|
1182
|
+
"packages/execution/src/service/run-trace-lifecycle.ts",
|
|
1183
|
+
"packages/websocket/src/lib/http-tracing.ts",
|
|
1184
|
+
"packages/websocket/src/storage-retention.ts"
|
|
1185
|
+
]
|
|
1186
|
+
},
|
|
1187
|
+
{
|
|
1188
|
+
id: "run-readers",
|
|
1189
|
+
title: "Common run inspection for agents and CLI",
|
|
1190
|
+
harnesses: ["run-readers"],
|
|
1191
|
+
paths: [
|
|
1192
|
+
"packages/protocol/src/run-readers.ts",
|
|
1193
|
+
"packages/protocol/src/api-schemas/runs.ts",
|
|
1194
|
+
"packages/models/src/run-readers.ts",
|
|
1195
|
+
"packages/execution/src/runs.ts",
|
|
1196
|
+
"packages/execution/src/app-debug/run-recording.ts",
|
|
1197
|
+
"packages/execution/src/service/app-debug-service.ts",
|
|
1198
|
+
"packages/agents/src/capabilities/runs",
|
|
1199
|
+
"packages/agents/src/capabilities/jobs.ts",
|
|
1200
|
+
"packages/agents/src/evals/codeact-api-runs.ts",
|
|
1201
|
+
"packages/cli/src/commands/runs.ts",
|
|
1202
|
+
"packages/cli/src/app-debug/harness.ts",
|
|
1203
|
+
"packages/websocket/src/trpc/routers/runs.ts",
|
|
1204
|
+
"packages/websocket/src/lib/app-debug-service.ts"
|
|
1205
|
+
]
|
|
1206
|
+
},
|
|
1207
|
+
{
|
|
1208
|
+
id: "run-inspection",
|
|
1209
|
+
title: "Browser run ingestion and durable UI inspection",
|
|
1210
|
+
harnesses: ["browser-run-spans", "run-inspection-ui", "run-inspection-browser"],
|
|
1211
|
+
paths: [
|
|
1212
|
+
"packages/protocol/src/browser-run-traces.ts",
|
|
1213
|
+
"packages/execution/src/browser-app-run.ts",
|
|
1214
|
+
"packages/execution/src/browser-run-spans.ts",
|
|
1215
|
+
"packages/execution/src/browser-trace-policy.ts",
|
|
1216
|
+
"packages/websocket/src/routes/run-spans.ts",
|
|
1217
|
+
"packages/websocket/src/lib/test-ui-run-routes.ts",
|
|
1218
|
+
"web/src/lib/browserRunTrace.ts",
|
|
1219
|
+
"web/src/lib/workflow/browserWorkflowRunner.ts",
|
|
1220
|
+
"web/src/components/panels/TracePanel.tsx",
|
|
1221
|
+
"web/src/components/appbuilder/runtime/",
|
|
1222
|
+
"web/src/components/appbuilder/AppRuntimeView.tsx",
|
|
1223
|
+
"web/src/components/appbuilder/puck/useWidgetRuntime.ts",
|
|
1224
|
+
"web/src/components/appbuilder/puck/conditionalWidget.tsx",
|
|
1225
|
+
"web/src/components/workspace/ChatSurface.tsx",
|
|
1226
|
+
"web/src/stores/ChatDraftStore.ts",
|
|
1227
|
+
"web/src/components/appbuilder/puck/AgentActivityWidget.tsx",
|
|
1228
|
+
"web/src/components/runs/",
|
|
1229
|
+
"web/src/serverState/useRuns.ts",
|
|
1230
|
+
"web/src/serverState/runTraceCache.ts",
|
|
1231
|
+
"web/src/serverState/appRunActivity.ts",
|
|
1232
|
+
"web/src/hooks/useAppOperationRun.ts",
|
|
1233
|
+
"web/src/hooks/useRunInspection.ts",
|
|
1234
|
+
"web/src/stores/TraceStore.ts",
|
|
1235
|
+
"web/tests/journeys/run-observability.spec.ts"
|
|
1236
|
+
]
|
|
1237
|
+
},
|
|
1238
|
+
{
|
|
1239
|
+
id: "app-instance-history",
|
|
1240
|
+
title: "App instance management and historical results",
|
|
1241
|
+
harnesses: ["app-instance-history", "app-instance-history-ui", "app-instance-history-browser"],
|
|
1242
|
+
paths: [
|
|
1243
|
+
"packages/models/src/app-instance",
|
|
1244
|
+
"packages/models/src/run-readers.ts",
|
|
1245
|
+
"packages/execution/src/runs.ts",
|
|
1246
|
+
"packages/protocol/src/api-schemas/app-runs.ts",
|
|
1247
|
+
"packages/websocket/src/lib/app-instances-service.ts",
|
|
1248
|
+
"packages/websocket/src/routes/app-runs.ts",
|
|
1249
|
+
"packages/websocket/src/trpc/routers/app-instances.ts",
|
|
1250
|
+
"web/src/components/appbuilder/",
|
|
1251
|
+
"web/src/components/workspace/ApplicationSurface.tsx",
|
|
1252
|
+
"web/src/components/workspace/TabContent.tsx",
|
|
1253
|
+
"web/src/stores/WorkspaceTabsStore.ts",
|
|
1254
|
+
"web/src/serverState/useAppInstances.ts",
|
|
1255
|
+
"web/src/serverState/useRuns.ts",
|
|
1256
|
+
"web/tests/journeys/app-instances.spec.ts"
|
|
1257
|
+
]
|
|
1258
|
+
},
|
|
1014
1259
|
{
|
|
1015
1260
|
id: "mini-apps",
|
|
1016
1261
|
title: "Mini apps (documents, bindings, operations)",
|
|
@@ -1038,6 +1283,7 @@ export const SURFACES = [
|
|
|
1038
1283
|
"timeline-validate",
|
|
1039
1284
|
"timeline-debug",
|
|
1040
1285
|
"timeline-render",
|
|
1286
|
+
"timeline-score",
|
|
1041
1287
|
"timeline-versions",
|
|
1042
1288
|
"eval"
|
|
1043
1289
|
],
|
|
@@ -1048,10 +1294,12 @@ export const SURFACES = [
|
|
|
1048
1294
|
"packages/cli/src/timeline-debug/",
|
|
1049
1295
|
"packages/cli/src/commands/timeline-versions.ts",
|
|
1050
1296
|
"packages/cli/src/commands/timeline-render.ts",
|
|
1297
|
+
"packages/cli/src/commands/timeline-score.ts",
|
|
1051
1298
|
"packages/video-nodes/src/nodes/timeline/compositeRender.ts",
|
|
1052
1299
|
"packages/agents/src/tools/timeline-version-tools.ts",
|
|
1053
1300
|
"packages/models/src/timeline-sequence-version.ts",
|
|
1054
|
-
"packages/websocket/src/trpc/routers/timeline.ts"
|
|
1301
|
+
"packages/websocket/src/trpc/routers/timeline.ts",
|
|
1302
|
+
"scripts/motion-craft-eval.mjs"
|
|
1055
1303
|
]
|
|
1056
1304
|
},
|
|
1057
1305
|
{
|
|
@@ -1084,6 +1332,14 @@ export const SURFACES = [
|
|
|
1084
1332
|
harnesses: ["timeline-native-media-editing"],
|
|
1085
1333
|
paths: [
|
|
1086
1334
|
"packages/timeline/src/generative.ts",
|
|
1335
|
+
"packages/agents/src/capabilities/timelines.ts",
|
|
1336
|
+
"packages/agents/src/capabilities/timeline-media-edit.ts",
|
|
1337
|
+
"packages/agents/src/capabilities/timeline-clip-frames.ts",
|
|
1338
|
+
"packages/agents/tests/timeline-headless-media-parity.test.ts",
|
|
1339
|
+
"packages/runtime/src/trim-video-window.ts",
|
|
1340
|
+
"packages/websocket/src/timeline-generation-recovery.ts",
|
|
1341
|
+
"packages/websocket/src/lib/media.ts",
|
|
1342
|
+
"packages/websocket/tests/generation-recovery-media.test.ts",
|
|
1087
1343
|
"packages/timeline/src/extension.ts",
|
|
1088
1344
|
"packages/timeline/src/extensionRequest.ts",
|
|
1089
1345
|
"packages/timeline/src/takes.ts",
|
|
@@ -1103,17 +1359,6 @@ export const SURFACES = [
|
|
|
1103
1359
|
"web/src/lib/tools/builtin/timeline.ts"
|
|
1104
1360
|
]
|
|
1105
1361
|
},
|
|
1106
|
-
{
|
|
1107
|
-
id: "timeline-native-media-editing-server-generation-gap",
|
|
1108
|
-
title: "Server edit_timeline generative-edit submission",
|
|
1109
|
-
harnesses: [],
|
|
1110
|
-
paths: ["packages/agents/src/capabilities/timelines.ts"],
|
|
1111
|
-
gap: "edit_timeline deliberately excludes ui_timeline_generatively_edit_clip: " +
|
|
1112
|
-
"it can persist a timeline document but cannot submit or reconcile a " +
|
|
1113
|
-
"durable media-generation job. A future harness should drive that " +
|
|
1114
|
-
"server-side job through candidate creation, explicit apply_take, and " +
|
|
1115
|
-
"a restored undo snapshot without inventing an asset id."
|
|
1116
|
-
},
|
|
1117
1362
|
{
|
|
1118
1363
|
id: "timeline-audio-drive",
|
|
1119
1364
|
title: "Audio-driven timeline motion (bake_audio_animation, audio analysis)",
|
|
@@ -1276,7 +1521,9 @@ export const SURFACES = [
|
|
|
1276
1521
|
"packages/audio-nodes/src/nodes/game.ts",
|
|
1277
1522
|
"packages/game-nodes/src/nodes/game.ts",
|
|
1278
1523
|
"packages/agents/src/capabilities/game.ts",
|
|
1279
|
-
"packages/agents/src/capabilities/game.specs.ts"
|
|
1524
|
+
"packages/agents/src/capabilities/game.specs.ts",
|
|
1525
|
+
"packages/agents/src/capabilities/game3d.ts",
|
|
1526
|
+
"packages/agents/src/capabilities/game-asset-source.ts"
|
|
1280
1527
|
]
|
|
1281
1528
|
},
|
|
1282
1529
|
{
|
|
@@ -1361,7 +1608,9 @@ export const SURFACES = [
|
|
|
1361
1608
|
paths: [
|
|
1362
1609
|
"demo/src/",
|
|
1363
1610
|
"demo/scripts/render-tutorials.ts",
|
|
1364
|
-
"demo/scripts/render-marketing.ts"
|
|
1611
|
+
"demo/scripts/render-marketing.ts",
|
|
1612
|
+
"demo/scripts/encode-hero.mjs",
|
|
1613
|
+
"demo/scripts/vibe-track.ts"
|
|
1365
1614
|
]
|
|
1366
1615
|
},
|
|
1367
1616
|
{
|
|
@@ -1499,6 +1748,7 @@ export const SURFACES = [
|
|
|
1499
1748
|
"packages/together-nodes/",
|
|
1500
1749
|
"packages/topaz-nodes/",
|
|
1501
1750
|
"packages/transformers-js-nodes/",
|
|
1751
|
+
"packages/whisper-cpp/",
|
|
1502
1752
|
"packages/video-nodes/",
|
|
1503
1753
|
// Portable runner (graph + registry → a Request/Response handler); CI
|
|
1504
1754
|
// groups it with the node packages for the same reason.
|
|
@@ -1666,11 +1916,21 @@ export function auditPathClaims(rootDirs, surfaces = SURFACES, unclaimed = UNCLA
|
|
|
1666
1916
|
return !claims.some((p) => p.startsWith(prefix) || prefix.startsWith(p));
|
|
1667
1917
|
});
|
|
1668
1918
|
}
|
|
1669
|
-
|
|
1919
|
+
/**
|
|
1920
|
+
* Select checks for a diff. Without `packages`, a surface is touched only by a
|
|
1921
|
+
* changed path under one of its prefixes. With them, a surface is also touched
|
|
1922
|
+
* when one of its paths lies inside a workspace downstream of a changed one,
|
|
1923
|
+
* since its code then runs against changed code (`viaDependency`).
|
|
1924
|
+
*/
|
|
1925
|
+
export function planGate(changedFiles, harnesses = HARNESSES, surfaces = SURFACES, packages) {
|
|
1670
1926
|
const byId = new Map(harnesses.map((h) => [h.id, h]));
|
|
1671
1927
|
const touched = new Map();
|
|
1928
|
+
const viaDependency = new Set();
|
|
1672
1929
|
const unmappedFiles = [];
|
|
1930
|
+
const globalFiles = changedFiles.filter(isGlobalGateFile);
|
|
1673
1931
|
for (const file of changedFiles) {
|
|
1932
|
+
if (isGlobalGateFile(file))
|
|
1933
|
+
continue;
|
|
1674
1934
|
let matched = false;
|
|
1675
1935
|
for (const s of surfaces) {
|
|
1676
1936
|
if (s.paths.some((p) => file === p || file.startsWith(p))) {
|
|
@@ -1683,6 +1943,21 @@ export function planGate(changedFiles, harnesses = HARNESSES, surfaces = SURFACE
|
|
|
1683
1943
|
if (!matched)
|
|
1684
1944
|
unmappedFiles.push(file);
|
|
1685
1945
|
}
|
|
1946
|
+
if (packages) {
|
|
1947
|
+
const dirs = computeAffected(changedFiles, packages)
|
|
1948
|
+
.affected.map((name) => packages.find((p) => p.name === name)?.dir)
|
|
1949
|
+
.filter((d) => d !== undefined)
|
|
1950
|
+
.map((d) => d.replace(/^\.\//, "").replace(/\/+$/, ""));
|
|
1951
|
+
for (const s of surfaces) {
|
|
1952
|
+
if (touched.has(s.id))
|
|
1953
|
+
continue;
|
|
1954
|
+
const inside = s.paths.some((p) => dirs.some((d) => p === d || p.startsWith(`${d}/`)));
|
|
1955
|
+
if (inside) {
|
|
1956
|
+
touched.set(s.id, []);
|
|
1957
|
+
viaDependency.add(s.id);
|
|
1958
|
+
}
|
|
1959
|
+
}
|
|
1960
|
+
}
|
|
1686
1961
|
const checkByHarness = new Map();
|
|
1687
1962
|
const manualByHarness = new Map();
|
|
1688
1963
|
const uncoveredSurfaces = [];
|
|
@@ -1707,6 +1982,7 @@ export function planGate(changedFiles, harnesses = HARNESSES, surfaces = SURFACE
|
|
|
1707
1982
|
harnessId: id,
|
|
1708
1983
|
command: h.selfcheck.command,
|
|
1709
1984
|
cost: h.selfcheck.cost,
|
|
1985
|
+
suiteOnly: h.selfcheck.suiteOnly ?? false,
|
|
1710
1986
|
surfaces: [s.id]
|
|
1711
1987
|
});
|
|
1712
1988
|
}
|
|
@@ -1726,13 +2002,33 @@ export function planGate(changedFiles, harnesses = HARNESSES, surfaces = SURFACE
|
|
|
1726
2002
|
}
|
|
1727
2003
|
}
|
|
1728
2004
|
}
|
|
2005
|
+
// A global file selects every selfcheck, as `--all` does; surfaces it
|
|
2006
|
+
// would not otherwise name stay with an empty list.
|
|
2007
|
+
if (globalFiles.length > 0) {
|
|
2008
|
+
for (const h of harnesses) {
|
|
2009
|
+
if (!h.selfcheck || checkByHarness.has(h.id))
|
|
2010
|
+
continue;
|
|
2011
|
+
checkByHarness.set(h.id, {
|
|
2012
|
+
harnessId: h.id,
|
|
2013
|
+
command: h.selfcheck.command,
|
|
2014
|
+
cost: h.selfcheck.cost,
|
|
2015
|
+
suiteOnly: h.selfcheck.suiteOnly ?? false,
|
|
2016
|
+
surfaces: []
|
|
2017
|
+
});
|
|
2018
|
+
}
|
|
2019
|
+
}
|
|
1729
2020
|
return {
|
|
1730
2021
|
changedFiles,
|
|
1731
|
-
surfaces: [...touched.entries()].map(([id, files]) => ({
|
|
2022
|
+
surfaces: [...touched.entries()].map(([id, files]) => ({
|
|
2023
|
+
id,
|
|
2024
|
+
files,
|
|
2025
|
+
...(viaDependency.has(id) && { viaDependency: true })
|
|
2026
|
+
})),
|
|
1732
2027
|
checks: [...checkByHarness.values()],
|
|
1733
2028
|
manual: [...manualByHarness.values()],
|
|
1734
2029
|
uncoveredSurfaces,
|
|
1735
|
-
unmappedFiles
|
|
2030
|
+
unmappedFiles,
|
|
2031
|
+
globalFiles
|
|
1736
2032
|
};
|
|
1737
2033
|
}
|
|
1738
2034
|
//# sourceMappingURL=registry.js.map
|