@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.
Files changed (160) hide show
  1. package/README.md +4 -1
  2. package/dist/.nodetool-build-stamp +1 -1
  3. package/dist/affected/affected.d.ts +7 -12
  4. package/dist/affected/affected.d.ts.map +1 -1
  5. package/dist/affected/affected.js +42 -0
  6. package/dist/affected/affected.js.map +1 -1
  7. package/dist/app-debug/app-target.d.ts +1 -1
  8. package/dist/app-debug/app-target.d.ts.map +1 -1
  9. package/dist/app-debug/harness.d.ts +3 -1
  10. package/dist/app-debug/harness.d.ts.map +1 -1
  11. package/dist/app-debug/harness.js +23 -0
  12. package/dist/app-debug/harness.js.map +1 -1
  13. package/dist/app.d.ts.map +1 -1
  14. package/dist/app.js +2 -1
  15. package/dist/app.js.map +1 -1
  16. package/dist/chat-codeact.d.ts +8 -0
  17. package/dist/chat-codeact.d.ts.map +1 -1
  18. package/dist/chat-codeact.js +59 -21
  19. package/dist/chat-codeact.js.map +1 -1
  20. package/dist/chat-context.d.ts.map +1 -1
  21. package/dist/chat-context.js +7 -2
  22. package/dist/chat-context.js.map +1 -1
  23. package/dist/commands/__tests__/timeline-render-audio.test.js +1 -1
  24. package/dist/commands/__tests__/timeline-render-audio.test.js.map +1 -1
  25. package/dist/commands/__tests__/timeline-render-completeness.test.d.ts +2 -0
  26. package/dist/commands/__tests__/timeline-render-completeness.test.d.ts.map +1 -0
  27. package/dist/commands/__tests__/timeline-render-completeness.test.js +117 -0
  28. package/dist/commands/__tests__/timeline-render-completeness.test.js.map +1 -0
  29. package/dist/commands/__tests__/timeline-score.test.d.ts +2 -0
  30. package/dist/commands/__tests__/timeline-score.test.d.ts.map +1 -0
  31. package/dist/commands/__tests__/timeline-score.test.js +100 -0
  32. package/dist/commands/__tests__/timeline-score.test.js.map +1 -0
  33. package/dist/commands/agent.d.ts.map +1 -1
  34. package/dist/commands/agent.js +2 -1
  35. package/dist/commands/agent.js.map +1 -1
  36. package/dist/commands/app.d.ts.map +1 -1
  37. package/dist/commands/app.js +29 -5
  38. package/dist/commands/app.js.map +1 -1
  39. package/dist/commands/debug-summary-output.d.ts +22 -0
  40. package/dist/commands/debug-summary-output.d.ts.map +1 -0
  41. package/dist/commands/debug-summary-output.js +28 -0
  42. package/dist/commands/debug-summary-output.js.map +1 -0
  43. package/dist/commands/errors.d.ts +11 -0
  44. package/dist/commands/errors.d.ts.map +1 -0
  45. package/dist/commands/errors.js +177 -0
  46. package/dist/commands/errors.js.map +1 -0
  47. package/dist/commands/eval.d.ts.map +1 -1
  48. package/dist/commands/eval.js +2 -0
  49. package/dist/commands/eval.js.map +1 -1
  50. package/dist/commands/extension.d.ts +12 -0
  51. package/dist/commands/extension.d.ts.map +1 -0
  52. package/dist/commands/extension.js +30 -0
  53. package/dist/commands/extension.js.map +1 -0
  54. package/dist/commands/game-benchmark.d.ts +34 -0
  55. package/dist/commands/game-benchmark.d.ts.map +1 -0
  56. package/dist/commands/game-benchmark.js +95 -0
  57. package/dist/commands/game-benchmark.js.map +1 -0
  58. package/dist/commands/game-smoke.d.ts +3 -0
  59. package/dist/commands/game-smoke.d.ts.map +1 -0
  60. package/dist/commands/game-smoke.js +23 -0
  61. package/dist/commands/game-smoke.js.map +1 -0
  62. package/dist/commands/game.d.ts.map +1 -1
  63. package/dist/commands/game.js +247 -18
  64. package/dist/commands/game.js.map +1 -1
  65. package/dist/commands/harness.d.ts +50 -0
  66. package/dist/commands/harness.d.ts.map +1 -1
  67. package/dist/commands/harness.js +284 -70
  68. package/dist/commands/harness.js.map +1 -1
  69. package/dist/commands/js-script.d.ts.map +1 -1
  70. package/dist/commands/js-script.js +6 -22
  71. package/dist/commands/js-script.js.map +1 -1
  72. package/dist/commands/mcp.d.ts +21 -0
  73. package/dist/commands/mcp.d.ts.map +1 -0
  74. package/dist/commands/mcp.js +164 -0
  75. package/dist/commands/mcp.js.map +1 -0
  76. package/dist/commands/package.d.ts.map +1 -1
  77. package/dist/commands/package.js +12 -12
  78. package/dist/commands/package.js.map +1 -1
  79. package/dist/commands/runs.d.ts +7 -0
  80. package/dist/commands/runs.d.ts.map +1 -0
  81. package/dist/commands/runs.js +302 -0
  82. package/dist/commands/runs.js.map +1 -0
  83. package/dist/commands/sketch.d.ts.map +1 -1
  84. package/dist/commands/sketch.js +6 -22
  85. package/dist/commands/sketch.js.map +1 -1
  86. package/dist/commands/timeline-render.d.ts +6 -1
  87. package/dist/commands/timeline-render.d.ts.map +1 -1
  88. package/dist/commands/timeline-render.js +13 -4
  89. package/dist/commands/timeline-render.js.map +1 -1
  90. package/dist/commands/timeline-score.d.ts +16 -0
  91. package/dist/commands/timeline-score.d.ts.map +1 -0
  92. package/dist/commands/timeline-score.js +89 -0
  93. package/dist/commands/timeline-score.js.map +1 -0
  94. package/dist/commands/timeline.d.ts.map +1 -1
  95. package/dist/commands/timeline.js +8 -22
  96. package/dist/commands/timeline.js.map +1 -1
  97. package/dist/commands/worker.js +1 -1
  98. package/dist/commands/worker.js.map +1 -1
  99. package/dist/debug/server-runner.d.ts +2 -0
  100. package/dist/debug/server-runner.d.ts.map +1 -1
  101. package/dist/debug/server-runner.js +37 -4
  102. package/dist/debug/server-runner.js.map +1 -1
  103. package/dist/harness/capability-table.d.ts.map +1 -1
  104. package/dist/harness/capability-table.js +295 -27
  105. package/dist/harness/capability-table.js.map +1 -1
  106. package/dist/harness/changed-files.d.ts +2 -0
  107. package/dist/harness/changed-files.d.ts.map +1 -1
  108. package/dist/harness/changed-files.js +14 -0
  109. package/dist/harness/changed-files.js.map +1 -1
  110. package/dist/harness/registry.d.ts +32 -4
  111. package/dist/harness/registry.d.ts.map +1 -1
  112. package/dist/harness/registry.js +327 -31
  113. package/dist/harness/registry.js.map +1 -1
  114. package/dist/index.js +1 -1
  115. package/dist/index.js.map +1 -1
  116. package/dist/interaction-script.d.ts +23 -0
  117. package/dist/interaction-script.d.ts.map +1 -1
  118. package/dist/interaction-script.js +50 -1
  119. package/dist/interaction-script.js.map +1 -1
  120. package/dist/js-script-debug/harness.d.ts +11 -1
  121. package/dist/js-script-debug/harness.d.ts.map +1 -1
  122. package/dist/js-script-debug/harness.js +17 -39
  123. package/dist/js-script-debug/harness.js.map +1 -1
  124. package/dist/local-model-interfaces.d.ts.map +1 -1
  125. package/dist/local-model-interfaces.js +1 -24
  126. package/dist/local-model-interfaces.js.map +1 -1
  127. package/dist/node-registry.d.ts +14 -0
  128. package/dist/node-registry.d.ts.map +1 -1
  129. package/dist/node-registry.js +15 -18
  130. package/dist/node-registry.js.map +1 -1
  131. package/dist/nodetool-main.d.ts +15 -0
  132. package/dist/nodetool-main.d.ts.map +1 -0
  133. package/dist/nodetool-main.js +1368 -0
  134. package/dist/nodetool-main.js.map +1 -0
  135. package/dist/nodetool.d.ts +0 -13
  136. package/dist/nodetool.d.ts.map +1 -1
  137. package/dist/nodetool.js +17 -1683
  138. package/dist/nodetool.js.map +1 -1
  139. package/dist/providers.d.ts +1 -1
  140. package/dist/providers.d.ts.map +1 -1
  141. package/dist/providers.js +11 -1
  142. package/dist/providers.js.map +1 -1
  143. package/dist/run-dsl.d.ts +6 -0
  144. package/dist/run-dsl.d.ts.map +1 -1
  145. package/dist/run-dsl.js +4 -1
  146. package/dist/run-dsl.js.map +1 -1
  147. package/dist/sandbox-catalog.d.ts +12 -0
  148. package/dist/sandbox-catalog.d.ts.map +1 -1
  149. package/dist/sandbox-catalog.js +51 -0
  150. package/dist/sandbox-catalog.js.map +1 -1
  151. package/dist/sketch-debug/harness.d.ts.map +1 -1
  152. package/dist/sketch-debug/harness.js +2 -35
  153. package/dist/sketch-debug/harness.js.map +1 -1
  154. package/dist/stdin.d.ts.map +1 -1
  155. package/dist/stdin.js +2 -1
  156. package/dist/stdin.js.map +1 -1
  157. package/dist/timeline-debug/harness.d.ts.map +1 -1
  158. package/dist/timeline-debug/harness.js +2 -35
  159. package/dist/timeline-debug/harness.js.map +1 -1
  160. package/package.json +38 -35
@@ -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: { command: TIMELINE_AUDIO_DRIVE_SUITES, cost: "cheap" }
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 drives the
929
- // production transport end to end. It is not a selfcheck: it downloads
930
- // Chrome and binds port 7777, so a diff to the relay still needs it run
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
- export function planGate(changedFiles, harnesses = HARNESSES, surfaces = SURFACES) {
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]) => ({ 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