@nodetool-ai/agents 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/dist/.nodetool-build-stamp +1 -1
- package/dist/analysis/audio-dsp.d.ts +3 -2
- package/dist/analysis/audio-dsp.d.ts.map +1 -1
- package/dist/analysis/audio-dsp.js +11 -8
- package/dist/analysis/audio-dsp.js.map +1 -1
- package/dist/analysis/media-decode.d.ts +13 -0
- package/dist/analysis/media-decode.d.ts.map +1 -1
- package/dist/analysis/media-decode.js +33 -6
- package/dist/analysis/media-decode.js.map +1 -1
- package/dist/author-graph.d.ts +2 -3
- package/dist/author-graph.d.ts.map +1 -1
- package/dist/author-graph.js +3 -5
- package/dist/author-graph.js.map +1 -1
- package/dist/browser-gate.d.ts +2 -2
- package/dist/browser-gate.js +2 -2
- package/dist/capabilities/GamePublishRequest.d.ts +14 -0
- package/dist/capabilities/GamePublishRequest.d.ts.map +1 -0
- package/dist/capabilities/GamePublishRequest.js +2 -0
- package/dist/capabilities/GamePublishRequest.js.map +1 -0
- package/dist/capabilities/adapters.d.ts +4 -13
- package/dist/capabilities/adapters.d.ts.map +1 -1
- package/dist/capabilities/adapters.js +9 -14
- package/dist/capabilities/adapters.js.map +1 -1
- package/dist/capabilities/agent-activity.d.ts +27 -0
- package/dist/capabilities/agent-activity.d.ts.map +1 -0
- package/dist/capabilities/agent-activity.js +103 -0
- package/dist/capabilities/agent-activity.js.map +1 -0
- package/dist/capabilities/agentic-storyboard-finish.d.ts +67 -0
- package/dist/capabilities/agentic-storyboard-finish.d.ts.map +1 -0
- package/dist/capabilities/agentic-storyboard-finish.js +1321 -0
- package/dist/capabilities/agentic-storyboard-finish.js.map +1 -0
- package/dist/capabilities/agents.d.ts +5 -2
- package/dist/capabilities/agents.d.ts.map +1 -1
- package/dist/capabilities/agents.js +14 -4
- package/dist/capabilities/agents.js.map +1 -1
- package/dist/capabilities/agents.specs.d.ts +3 -0
- package/dist/capabilities/agents.specs.d.ts.map +1 -1
- package/dist/capabilities/agents.specs.js +71 -1
- package/dist/capabilities/agents.specs.js.map +1 -1
- package/dist/capabilities/analysis.d.ts.map +1 -1
- package/dist/capabilities/analysis.js +33 -22
- package/dist/capabilities/analysis.js.map +1 -1
- package/dist/capabilities/analysis.specs.js +2 -2
- package/dist/capabilities/analysis.specs.js.map +1 -1
- package/dist/capabilities/apps.d.ts.map +1 -1
- package/dist/capabilities/apps.js +5 -3
- package/dist/capabilities/apps.js.map +1 -1
- package/dist/capabilities/args.d.ts +2 -5
- package/dist/capabilities/args.d.ts.map +1 -1
- package/dist/capabilities/args.js +2 -5
- package/dist/capabilities/args.js.map +1 -1
- package/dist/capabilities/browser.d.ts +1 -1
- package/dist/capabilities/browser.js +1 -1
- package/dist/capabilities/browser.specs.d.ts +1 -1
- package/dist/capabilities/browser.specs.js +1 -1
- package/dist/capabilities/code.d.ts +5 -0
- package/dist/capabilities/code.d.ts.map +1 -1
- package/dist/capabilities/code.js +128 -89
- package/dist/capabilities/code.js.map +1 -1
- package/dist/capabilities/errors.d.ts +19 -0
- package/dist/capabilities/errors.d.ts.map +1 -0
- package/dist/capabilities/errors.js +109 -0
- package/dist/capabilities/errors.js.map +1 -0
- package/dist/capabilities/errors.specs.d.ts +11 -0
- package/dist/capabilities/errors.specs.d.ts.map +1 -0
- package/dist/capabilities/errors.specs.js +100 -0
- package/dist/capabilities/errors.specs.js.map +1 -0
- package/dist/capabilities/example-timelines.d.ts.map +1 -1
- package/dist/capabilities/example-timelines.js +52 -10
- package/dist/capabilities/example-timelines.js.map +1 -1
- package/dist/capabilities/example-timelines.specs.d.ts +1 -0
- package/dist/capabilities/example-timelines.specs.d.ts.map +1 -1
- package/dist/capabilities/example-timelines.specs.js +21 -3
- package/dist/capabilities/example-timelines.specs.js.map +1 -1
- package/dist/capabilities/finish-storyboard.d.ts +5 -0
- package/dist/capabilities/finish-storyboard.d.ts.map +1 -0
- package/dist/capabilities/finish-storyboard.js +278 -0
- package/dist/capabilities/finish-storyboard.js.map +1 -0
- package/dist/capabilities/game-asset-source.js +1 -1
- package/dist/capabilities/game-asset-source.js.map +1 -1
- package/dist/capabilities/game.d.ts +14 -2
- package/dist/capabilities/game.d.ts.map +1 -1
- package/dist/capabilities/game.js +209 -39
- package/dist/capabilities/game.js.map +1 -1
- package/dist/capabilities/game.specs.d.ts +2 -0
- package/dist/capabilities/game.specs.d.ts.map +1 -1
- package/dist/capabilities/game.specs.js +25 -11
- package/dist/capabilities/game.specs.js.map +1 -1
- package/dist/capabilities/game3d.d.ts +17 -0
- package/dist/capabilities/game3d.d.ts.map +1 -0
- package/dist/capabilities/game3d.js +433 -0
- package/dist/capabilities/game3d.js.map +1 -0
- package/dist/capabilities/gate-from-context.d.ts +1 -1
- package/dist/capabilities/gate-from-context.js +1 -1
- package/dist/capabilities/generations.d.ts +2 -0
- package/dist/capabilities/generations.d.ts.map +1 -1
- package/dist/capabilities/generations.js +7 -2
- package/dist/capabilities/generations.js.map +1 -1
- package/dist/capabilities/index.d.ts +2 -2
- package/dist/capabilities/index.d.ts.map +1 -1
- package/dist/capabilities/index.js +2 -2
- package/dist/capabilities/index.js.map +1 -1
- package/dist/capabilities/invoke.d.ts +14 -25
- package/dist/capabilities/invoke.d.ts.map +1 -1
- package/dist/capabilities/invoke.js +72 -35
- package/dist/capabilities/invoke.js.map +1 -1
- package/dist/capabilities/jobs.d.ts.map +1 -1
- package/dist/capabilities/jobs.js +47 -3
- package/dist/capabilities/jobs.js.map +1 -1
- package/dist/capabilities/jobs.specs.d.ts.map +1 -1
- package/dist/capabilities/jobs.specs.js +3 -1
- package/dist/capabilities/jobs.specs.js.map +1 -1
- package/dist/capabilities/js-scripts.d.ts +19 -1
- package/dist/capabilities/js-scripts.d.ts.map +1 -1
- package/dist/capabilities/js-scripts.js +109 -2
- package/dist/capabilities/js-scripts.js.map +1 -1
- package/dist/capabilities/js-scripts.specs.d.ts +2 -0
- package/dist/capabilities/js-scripts.specs.d.ts.map +1 -1
- package/dist/capabilities/js-scripts.specs.js +50 -0
- package/dist/capabilities/js-scripts.specs.js.map +1 -1
- package/dist/capabilities/lazy-tool.d.ts +23 -24
- package/dist/capabilities/lazy-tool.d.ts.map +1 -1
- package/dist/capabilities/lazy-tool.js +29 -35
- package/dist/capabilities/lazy-tool.js.map +1 -1
- package/dist/capabilities/legacy-tools.d.ts +15 -0
- package/dist/capabilities/legacy-tools.d.ts.map +1 -0
- package/dist/capabilities/legacy-tools.js +98 -0
- package/dist/capabilities/legacy-tools.js.map +1 -0
- package/dist/capabilities/media.d.ts +0 -9
- package/dist/capabilities/media.d.ts.map +1 -1
- package/dist/capabilities/media.js +301 -260
- package/dist/capabilities/media.js.map +1 -1
- package/dist/capabilities/models.d.ts +2 -2
- package/dist/capabilities/models.d.ts.map +1 -1
- package/dist/capabilities/models.js +5 -3
- package/dist/capabilities/models.js.map +1 -1
- package/dist/capabilities/registry.d.ts +2 -0
- package/dist/capabilities/registry.d.ts.map +1 -1
- package/dist/capabilities/registry.js +28 -0
- package/dist/capabilities/registry.js.map +1 -1
- package/dist/capabilities/run-agent.d.ts +19 -0
- package/dist/capabilities/run-agent.d.ts.map +1 -0
- package/dist/capabilities/run-agent.js +183 -0
- package/dist/capabilities/run-agent.js.map +1 -0
- package/dist/capabilities/runs.d.ts +9 -0
- package/dist/capabilities/runs.d.ts.map +1 -0
- package/dist/capabilities/runs.js +46 -0
- package/dist/capabilities/runs.js.map +1 -0
- package/dist/capabilities/runs.specs.d.ts +39 -0
- package/dist/capabilities/runs.specs.d.ts.map +1 -0
- package/dist/capabilities/runs.specs.js +52 -0
- package/dist/capabilities/runs.specs.js.map +1 -0
- package/dist/capabilities/scripts.d.ts.map +1 -1
- package/dist/capabilities/scripts.js +11 -5
- package/dist/capabilities/scripts.js.map +1 -1
- package/dist/capabilities/sketches.d.ts.map +1 -1
- package/dist/capabilities/sketches.js +4 -2
- package/dist/capabilities/sketches.js.map +1 -1
- package/dist/capabilities/skills.d.ts.map +1 -1
- package/dist/capabilities/skills.js +22 -2
- package/dist/capabilities/skills.js.map +1 -1
- package/dist/capabilities/storyboard-layout-check.d.ts +33 -0
- package/dist/capabilities/storyboard-layout-check.d.ts.map +1 -0
- package/dist/capabilities/storyboard-layout-check.js +229 -0
- package/dist/capabilities/storyboard-layout-check.js.map +1 -0
- package/dist/capabilities/storyboard-measured-sources.d.ts +10 -0
- package/dist/capabilities/storyboard-measured-sources.d.ts.map +1 -0
- package/dist/capabilities/storyboard-measured-sources.js +67 -0
- package/dist/capabilities/storyboard-measured-sources.js.map +1 -0
- package/dist/capabilities/storyboard-review-times.d.ts +4 -0
- package/dist/capabilities/storyboard-review-times.d.ts.map +1 -0
- package/dist/capabilities/storyboard-review-times.js +39 -0
- package/dist/capabilities/storyboard-review-times.js.map +1 -0
- package/dist/capabilities/storyboards.d.ts +2 -18
- package/dist/capabilities/storyboards.d.ts.map +1 -1
- package/dist/capabilities/storyboards.js +315 -94
- package/dist/capabilities/storyboards.js.map +1 -1
- package/dist/capabilities/storyboards.specs.d.ts +3 -0
- package/dist/capabilities/storyboards.specs.d.ts.map +1 -1
- package/dist/capabilities/storyboards.specs.js +42 -3
- package/dist/capabilities/storyboards.specs.js.map +1 -1
- package/dist/capabilities/timeline-bridge.d.ts +359 -0
- package/dist/capabilities/timeline-bridge.d.ts.map +1 -0
- package/dist/capabilities/timeline-bridge.js +1016 -0
- package/dist/capabilities/timeline-bridge.js.map +1 -0
- package/dist/capabilities/timeline-clip-frames.d.ts +17 -0
- package/dist/capabilities/timeline-clip-frames.d.ts.map +1 -0
- package/dist/capabilities/timeline-clip-frames.js +84 -0
- package/dist/capabilities/timeline-clip-frames.js.map +1 -0
- package/dist/capabilities/timeline-media-edit.d.ts +8 -0
- package/dist/capabilities/timeline-media-edit.d.ts.map +1 -0
- package/dist/capabilities/timeline-media-edit.js +94 -0
- package/dist/capabilities/timeline-media-edit.js.map +1 -0
- package/dist/capabilities/timeline-native-media.d.ts.map +1 -1
- package/dist/capabilities/timeline-native-media.js +40 -0
- package/dist/capabilities/timeline-native-media.js.map +1 -1
- package/dist/capabilities/timelines.d.ts +64 -4
- package/dist/capabilities/timelines.d.ts.map +1 -1
- package/dist/capabilities/timelines.js +566 -67
- package/dist/capabilities/timelines.js.map +1 -1
- package/dist/capabilities/timelines.specs.d.ts +8 -0
- package/dist/capabilities/timelines.specs.d.ts.map +1 -1
- package/dist/capabilities/timelines.specs.js +173 -8
- package/dist/capabilities/timelines.specs.js.map +1 -1
- package/dist/capabilities/types.d.ts +3 -1
- package/dist/capabilities/types.d.ts.map +1 -1
- package/dist/capabilities/types.js.map +1 -1
- package/dist/capabilities/ui.d.ts.map +1 -1
- package/dist/capabilities/ui.js +24 -2
- package/dist/capabilities/ui.js.map +1 -1
- package/dist/capabilities/workflows.d.ts.map +1 -1
- package/dist/capabilities/workflows.js +53 -26
- package/dist/capabilities/workflows.js.map +1 -1
- package/dist/capabilities/workflows.specs.d.ts.map +1 -1
- package/dist/capabilities/workflows.specs.js +7 -1
- package/dist/capabilities/workflows.specs.js.map +1 -1
- package/dist/codeact/action-diagnostics.d.ts.map +1 -1
- package/dist/codeact/action-diagnostics.js +51 -1
- package/dist/codeact/action-diagnostics.js.map +1 -1
- package/dist/codeact/codeact-executor.d.ts.map +1 -1
- package/dist/codeact/codeact-executor.js +16 -8
- package/dist/codeact/codeact-executor.js.map +1 -1
- package/dist/codeact/compact-ids.d.ts.map +1 -1
- package/dist/codeact/compact-ids.js +5 -1
- package/dist/codeact/compact-ids.js.map +1 -1
- package/dist/codeact/graph-model.d.ts +1 -1
- package/dist/codeact/graph-model.d.ts.map +1 -1
- package/dist/codeact/graph-model.js +2 -3
- package/dist/codeact/graph-model.js.map +1 -1
- package/dist/codeact/nodetool-api.d.ts +1 -1
- package/dist/codeact/nodetool-api.d.ts.map +1 -1
- package/dist/codeact/nodetool-api.js +202 -284
- package/dist/codeact/nodetool-api.js.map +1 -1
- package/dist/codeact/tool-api.d.ts +6 -3
- package/dist/codeact/tool-api.d.ts.map +1 -1
- package/dist/codeact/tool-api.js +22 -15
- package/dist/codeact/tool-api.js.map +1 -1
- package/dist/evals/codeact-api-cases.d.ts.map +1 -1
- package/dist/evals/codeact-api-cases.js +2 -0
- package/dist/evals/codeact-api-cases.js.map +1 -1
- package/dist/evals/codeact-api-runs.d.ts +3 -0
- package/dist/evals/codeact-api-runs.d.ts.map +1 -0
- package/dist/evals/codeact-api-runs.js +33 -0
- package/dist/evals/codeact-api-runs.js.map +1 -0
- package/dist/evals/surfaces/sketch.d.ts +2 -0
- package/dist/evals/surfaces/sketch.d.ts.map +1 -1
- package/dist/evals/surfaces/sketch.js +11 -3
- package/dist/evals/surfaces/sketch.js.map +1 -1
- package/dist/evals/surfaces/timeline.d.ts +4 -357
- package/dist/evals/surfaces/timeline.d.ts.map +1 -1
- package/dist/evals/surfaces/timeline.js +9 -2621
- package/dist/evals/surfaces/timeline.js.map +1 -1
- package/dist/evals/tool-loop-bridge.d.ts +4 -0
- package/dist/evals/tool-loop-bridge.d.ts.map +1 -1
- package/dist/evals/tool-loop-bridge.js.map +1 -1
- package/dist/evals/tool-loop-eval.d.ts +2 -0
- package/dist/evals/tool-loop-eval.d.ts.map +1 -1
- package/dist/evals/tool-loop-eval.js +6 -1
- package/dist/evals/tool-loop-eval.js.map +1 -1
- package/dist/evals/tool-loop-permission.d.ts +1 -15
- package/dist/evals/tool-loop-permission.d.ts.map +1 -1
- package/dist/evals/tool-loop-permission.js +23 -41
- package/dist/evals/tool-loop-permission.js.map +1 -1
- package/dist/game-authoring.d.ts +4737 -0
- package/dist/game-authoring.d.ts.map +1 -0
- package/dist/game-authoring.js +146 -0
- package/dist/game-authoring.js.map +1 -0
- package/dist/game-code-bake.d.ts +26 -0
- package/dist/game-code-bake.d.ts.map +1 -0
- package/dist/game-code-bake.js +98 -0
- package/dist/game-code-bake.js.map +1 -0
- package/dist/game-examples.d.ts +872 -16
- package/dist/game-examples.d.ts.map +1 -1
- package/dist/game-examples.js +5 -4
- package/dist/game-examples.js.map +1 -1
- package/dist/index.d.ts +15 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -3
- package/dist/index.js.map +1 -1
- package/dist/js-sandbox-worker/engine.d.ts +4 -0
- package/dist/js-sandbox-worker/engine.d.ts.map +1 -0
- package/dist/js-sandbox-worker/engine.js +45 -0
- package/dist/js-sandbox-worker/engine.js.map +1 -0
- package/dist/js-sandbox-worker/host.js +1 -1
- package/dist/js-sandbox-worker/host.js.map +1 -1
- package/dist/js-sandbox-worker/interpreter.d.ts +1 -1
- package/dist/js-sandbox-worker/interpreter.d.ts.map +1 -1
- package/dist/js-sandbox-worker/interpreter.js +94 -2
- package/dist/js-sandbox-worker/interpreter.js.map +1 -1
- package/dist/js-sandbox-worker/worker-entry.d.ts.map +1 -1
- package/dist/js-sandbox-worker/worker-entry.js +3 -2
- package/dist/js-sandbox-worker/worker-entry.js.map +1 -1
- package/dist/js-sandbox.d.ts +2 -0
- package/dist/js-sandbox.d.ts.map +1 -1
- package/dist/js-sandbox.js +56 -11
- package/dist/js-sandbox.js.map +1 -1
- package/dist/js-script-app-runner.d.ts +2 -0
- package/dist/js-script-app-runner.d.ts.map +1 -1
- package/dist/js-script-app-runner.js +8 -3
- package/dist/js-script-app-runner.js.map +1 -1
- package/dist/js-script-sandbox.d.ts +12 -18
- package/dist/js-script-sandbox.d.ts.map +1 -1
- package/dist/js-script-sandbox.js +3 -49
- package/dist/js-script-sandbox.js.map +1 -1
- package/dist/prompts/product-knowledge.d.ts +1 -1
- package/dist/prompts/product-knowledge.d.ts.map +1 -1
- package/dist/prompts/product-knowledge.js +82 -41
- package/dist/prompts/product-knowledge.js.map +1 -1
- package/dist/sandbox-pack-resolution.d.ts +21 -0
- package/dist/sandbox-pack-resolution.d.ts.map +1 -0
- package/dist/sandbox-pack-resolution.js +42 -0
- package/dist/sandbox-pack-resolution.js.map +1 -0
- package/dist/sandbox-toolbelt.d.ts +3 -1
- package/dist/sandbox-toolbelt.d.ts.map +1 -1
- package/dist/sandbox-toolbelt.js +8 -2
- package/dist/sandbox-toolbelt.js.map +1 -1
- package/dist/skill-prompt.d.ts +11 -1
- package/dist/skill-prompt.d.ts.map +1 -1
- package/dist/skill-prompt.js +17 -6
- package/dist/skill-prompt.js.map +1 -1
- package/dist/system-skills.d.ts +7 -1
- package/dist/system-skills.d.ts.map +1 -1
- package/dist/system-skills.js +2 -2
- package/dist/system-skills.js.map +1 -1
- package/dist/timeline-capture.d.ts +21 -0
- package/dist/timeline-capture.d.ts.map +1 -0
- package/dist/timeline-capture.js +564 -0
- package/dist/timeline-capture.js.map +1 -0
- package/dist/timeline-code-bake.d.ts +75 -0
- package/dist/timeline-code-bake.d.ts.map +1 -0
- package/dist/timeline-code-bake.js +327 -0
- package/dist/timeline-code-bake.js.map +1 -0
- package/dist/timeline-preview/frames.d.ts +26 -0
- package/dist/timeline-preview/frames.d.ts.map +1 -1
- package/dist/timeline-preview/frames.js +155 -70
- package/dist/timeline-preview/frames.js.map +1 -1
- package/dist/tools/base-tool.d.ts +1 -0
- package/dist/tools/base-tool.d.ts.map +1 -1
- package/dist/tools/base-tool.js +1 -1
- package/dist/tools/base-tool.js.map +1 -1
- package/dist/tools/builtin-tools.d.ts.map +1 -1
- package/dist/tools/builtin-tools.js +13 -0
- package/dist/tools/builtin-tools.js.map +1 -1
- package/dist/tools/external-capability-tools.d.ts +1 -1
- package/dist/tools/external-capability-tools.js +1 -1
- package/dist/tools/mcp-tool-support.d.ts +10 -9
- package/dist/tools/mcp-tool-support.d.ts.map +1 -1
- package/dist/tools/mcp-tool-support.js +14 -13
- package/dist/tools/mcp-tool-support.js.map +1 -1
- package/dist/tools/mcp-tools.d.ts +6 -4
- package/dist/tools/mcp-tools.d.ts.map +1 -1
- package/dist/tools/mcp-tools.js +65 -62
- package/dist/tools/mcp-tools.js.map +1 -1
- package/dist/tools/tool-permissions.d.ts +1 -1
- package/dist/tools/tool-permissions.js +1 -1
- package/package.json +24 -22
- package/dist/capabilities/gate-tools.d.ts +0 -18
- package/dist/capabilities/gate-tools.d.ts.map +0 -1
- package/dist/capabilities/gate-tools.js +0 -66
- package/dist/capabilities/gate-tools.js.map +0 -1
- package/dist/tsconfig.tests.tmp.tsbuildinfo +0 -1
|
@@ -105,6 +105,7 @@ export const NODETOOL_API_NAMESPACE_TOOLS = {
|
|
|
105
105
|
"list_images"
|
|
106
106
|
],
|
|
107
107
|
jobs: ["list_jobs", "get_job", "get_job_logs"],
|
|
108
|
+
runs: ["list_runs", "get_run", "get_run_trace", "get_run_logs", "await_run"],
|
|
108
109
|
generations: [
|
|
109
110
|
"list_generations",
|
|
110
111
|
"get_generation",
|
|
@@ -127,12 +128,13 @@ export const NODETOOL_API_NAMESPACE_TOOLS = {
|
|
|
127
128
|
"create_native_game", "get_native_game", "edit_native_game", "publish_native_game",
|
|
128
129
|
"install_native_game_asset", "playtest_native_game", "capture_native_game_frame",
|
|
129
130
|
"generate_game_asset", "build_native_game", "list_example_games", "get_example_game",
|
|
130
|
-
"install_example_game", "autoplay_native_game"
|
|
131
|
+
"install_example_game", "autoplay_native_game", "preview_native_game_authoring", "apply_native_game_authoring"
|
|
131
132
|
],
|
|
132
133
|
timelines: [
|
|
133
134
|
"list_timelines",
|
|
134
135
|
"list_example_timelines",
|
|
135
136
|
"get_example_timeline",
|
|
137
|
+
"get_example_timeline_source",
|
|
136
138
|
"create_timeline",
|
|
137
139
|
"get_timeline",
|
|
138
140
|
"list_timeline_versions",
|
|
@@ -145,11 +147,17 @@ export const NODETOOL_API_NAMESPACE_TOOLS = {
|
|
|
145
147
|
"compare_timeline_frames",
|
|
146
148
|
"edit_timeline",
|
|
147
149
|
"set_timeline_document",
|
|
150
|
+
"bake_audio_animation",
|
|
148
151
|
"render_timeline",
|
|
149
152
|
"list_compositions",
|
|
150
153
|
"get_composition",
|
|
151
154
|
"save_composition",
|
|
152
|
-
"delete_composition"
|
|
155
|
+
"delete_composition",
|
|
156
|
+
"get_timeline_code",
|
|
157
|
+
"set_timeline_code",
|
|
158
|
+
"edit_timeline_code",
|
|
159
|
+
"rebake_timeline_code",
|
|
160
|
+
"detach_timeline_code"
|
|
153
161
|
],
|
|
154
162
|
sketches: [
|
|
155
163
|
"list_sketches",
|
|
@@ -179,6 +187,8 @@ export const NODETOOL_API_NAMESPACE_TOOLS = {
|
|
|
179
187
|
"render_storyboard_clips",
|
|
180
188
|
"revise_storyboard_clip",
|
|
181
189
|
"assemble_storyboard_timeline",
|
|
190
|
+
"finish_storyboard",
|
|
191
|
+
"preview_storyboard_design",
|
|
182
192
|
"edit_storyboard"
|
|
183
193
|
]
|
|
184
194
|
};
|
|
@@ -1129,6 +1139,14 @@ const nodetool = (() => {
|
|
|
1129
1139
|
}
|
|
1130
1140
|
},
|
|
1131
1141
|
|
|
1142
|
+
runs: {
|
|
1143
|
+
list: (opts) => __need("list_runs")(__merge(opts)),
|
|
1144
|
+
get: (id, opts) => __need("get_run")(__merge(opts, { run_id: id })),
|
|
1145
|
+
trace: (id, opts) => __need("get_run_trace")(__merge(opts, { run_id: id })),
|
|
1146
|
+
logs: (id, opts) => __need("get_run_logs")(__merge(opts, { run_id: id })),
|
|
1147
|
+
wait: (id, opts) => __need("await_run")(__merge(opts, { run_id: id }))
|
|
1148
|
+
},
|
|
1149
|
+
|
|
1132
1150
|
generations: {
|
|
1133
1151
|
/** The record of every media generation: status, cost, assets. */
|
|
1134
1152
|
list: (opts) => __need("list_generations")(__merge(opts)),
|
|
@@ -1209,6 +1227,8 @@ const nodetool = (() => {
|
|
|
1209
1227
|
edit: (id, ops, opts) => __need("edit_native_game")(__merge(opts, { game_id: id, ops })),
|
|
1210
1228
|
setDocument: (id, document, opts) =>
|
|
1211
1229
|
__need("edit_native_game")(__merge(opts, { game_id: id, ops: [{ op: "set_document", document }] })),
|
|
1230
|
+
previewAuthoring: (id, opts) => __need("preview_native_game_authoring")(__merge(opts, { game_id: id })),
|
|
1231
|
+
applyAuthoring: (id, candidate) => __need("apply_native_game_authoring")({ game_id: id, candidate }),
|
|
1212
1232
|
publish: (id, opts) => __need("publish_native_game")(__merge(opts, { game_id: id })),
|
|
1213
1233
|
installAsset: (id, slot, binding, opts) =>
|
|
1214
1234
|
__need("install_native_game_asset")(__merge(opts, { game_id: id, slot, binding })),
|
|
@@ -1228,7 +1248,9 @@ const nodetool = (() => {
|
|
|
1228
1248
|
examples: {
|
|
1229
1249
|
list: (opts) => __need("list_example_timelines")(__merge(opts)),
|
|
1230
1250
|
get: (slug, opts) =>
|
|
1231
|
-
__need("get_example_timeline")(__merge(opts, { slug: slug }))
|
|
1251
|
+
__need("get_example_timeline")(__merge(opts, { slug: slug })),
|
|
1252
|
+
source: (slug) =>
|
|
1253
|
+
__need("get_example_timeline_source")({ slug: slug })
|
|
1232
1254
|
},
|
|
1233
1255
|
create: (name, opts) =>
|
|
1234
1256
|
__need("create_timeline")(__named(name, opts, "timelines.create")),
|
|
@@ -1302,6 +1324,23 @@ const nodetool = (() => {
|
|
|
1302
1324
|
__need("set_timeline_document")(
|
|
1303
1325
|
__merge(opts, { timeline_id: id, document: document })
|
|
1304
1326
|
),
|
|
1327
|
+
/**
|
|
1328
|
+
* Drive a clip's motion from a piece of audio: measure the audio clip
|
|
1329
|
+
* (id, name, or "selected") and write the result as keyframes onto
|
|
1330
|
+
* targetClipId's own property, additive with anything hand-keyframed
|
|
1331
|
+
* there. Options: {mode: "envelope"|"beats", output_range: [quiet,
|
|
1332
|
+
* loud], sensitivity, attack_ms, release_ms, offset_ms, tolerance,
|
|
1333
|
+
* max_points, frame_ms, max_seconds, replace}. property and
|
|
1334
|
+
* output_range are required.
|
|
1335
|
+
*/
|
|
1336
|
+
bakeAudioAnimation: (id, audioClipId, targetClipId, opts) =>
|
|
1337
|
+
__need("bake_audio_animation")(
|
|
1338
|
+
__merge(opts, {
|
|
1339
|
+
timeline_id: id,
|
|
1340
|
+
audio_clip_id: audioClipId,
|
|
1341
|
+
target_clip_id: targetClipId
|
|
1342
|
+
})
|
|
1343
|
+
),
|
|
1305
1344
|
/**
|
|
1306
1345
|
* Render the finished cut as a job. Returns {job_id} immediately;
|
|
1307
1346
|
* {wait: true} blocks and returns the rendered asset. Options:
|
|
@@ -1334,6 +1373,35 @@ const nodetool = (() => {
|
|
|
1334
1373
|
})
|
|
1335
1374
|
),
|
|
1336
1375
|
remove: (id) => __need("delete_composition")({ composition_id: id })
|
|
1376
|
+
},
|
|
1377
|
+
/**
|
|
1378
|
+
* A timeline's authoring code — edit the script, not the JSON. \`set\`
|
|
1379
|
+
* bakes \`code\` and merges the result into the document scene by
|
|
1380
|
+
* scene: an untouched scene is replaced, a hand-edited one is kept and
|
|
1381
|
+
* reported in \`conflicts\` unless \`opts.force\` overwrites it (\`true\`
|
|
1382
|
+
* for every scene, or an array of scene names). \`edit\` applies
|
|
1383
|
+
* exact-match string replacements to the stored code first (each
|
|
1384
|
+
* \`old\` must match exactly once), then bakes and merges the same way.
|
|
1385
|
+
* \`rebake\` reruns the stored code unchanged. \`detach(id, names |
|
|
1386
|
+
* "all")\` stops tracking scenes — a later rebake never touches them
|
|
1387
|
+
* again.
|
|
1388
|
+
*/
|
|
1389
|
+
code: {
|
|
1390
|
+
/** \`{code, baked_at, scenes: [{name, group_id, edited}]}\`. \`code\`
|
|
1391
|
+
* is null when the timeline carries none. */
|
|
1392
|
+
get: (id) => __need("get_timeline_code")({ timeline_id: id }),
|
|
1393
|
+
set: (id, code, opts) =>
|
|
1394
|
+
__need("set_timeline_code")(
|
|
1395
|
+
__merge(opts, { timeline_id: id, code: code })
|
|
1396
|
+
),
|
|
1397
|
+
edit: (id, edits, opts) =>
|
|
1398
|
+
__need("edit_timeline_code")(
|
|
1399
|
+
__merge(opts, { timeline_id: id, edits: edits })
|
|
1400
|
+
),
|
|
1401
|
+
rebake: (id, opts) =>
|
|
1402
|
+
__need("rebake_timeline_code")(__merge(opts, { timeline_id: id })),
|
|
1403
|
+
detach: (id, scenes) =>
|
|
1404
|
+
__need("detach_timeline_code")({ timeline_id: id, scenes: scenes })
|
|
1337
1405
|
}
|
|
1338
1406
|
},
|
|
1339
1407
|
|
|
@@ -1383,6 +1451,8 @@ const nodetool = (() => {
|
|
|
1383
1451
|
get: (id) => __need("get_script")({ script_id: id }),
|
|
1384
1452
|
voice: (id, opts) =>
|
|
1385
1453
|
__need("voice_script_lines")(__merge(opts, { script_id: id })),
|
|
1454
|
+
finish: (args) => __need("finish_storyboard")(args),
|
|
1455
|
+
previewDesign: (args) => __need("preview_storyboard_design")(args),
|
|
1386
1456
|
assembleTimeline: (id, opts) =>
|
|
1387
1457
|
__need("assemble_script_timeline")(__merge(opts, { script_id: id })),
|
|
1388
1458
|
/** Apply cast/line edits to a saved script, server-side. */
|
|
@@ -1409,6 +1479,8 @@ const nodetool = (() => {
|
|
|
1409
1479
|
instruction: instruction
|
|
1410
1480
|
})
|
|
1411
1481
|
),
|
|
1482
|
+
finish: (args) => __need("finish_storyboard")(args),
|
|
1483
|
+
previewDesign: (args) => __need("preview_storyboard_design")(args),
|
|
1412
1484
|
assembleTimeline: (id, opts) =>
|
|
1413
1485
|
__need("assemble_storyboard_timeline")(
|
|
1414
1486
|
__merge(opts, { storyboard_id: id })
|
|
@@ -1550,350 +1622,187 @@ export const NODETOOL_API_GLOBALS = [
|
|
|
1550
1622
|
const NAMESPACE_DOCS = [
|
|
1551
1623
|
{
|
|
1552
1624
|
namespace: "workflows",
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
\`
|
|
1556
|
-
\`
|
|
1557
|
-
\`
|
|
1558
|
-
\`
|
|
1559
|
-
|
|
1560
|
-
\`
|
|
1561
|
-
workflow and answers one report: \`{workflow_id, run, job, workflow}\` where
|
|
1562
|
-
\`run\` carries \`{status, outputs, error, verdict}\`, \`job\` carries status,
|
|
1563
|
-
cost and logs, and \`outputs\` is keyed by output name with an array of
|
|
1564
|
-
emitted values per name (\`outputs.hook[0]\`). An interactive run returns an
|
|
1565
|
-
escalation: answer it with \`resolve(sessionId, escalationId, action,
|
|
1566
|
-
{outputs, reason, apply_to})\` — retry/substitute/skip/end_stream/fail — and
|
|
1567
|
-
get the next escalation or the final report. Write the whole
|
|
1568
|
-
run-and-resolve loop (\`while (report.status === "escalated") ...\`) in one
|
|
1569
|
-
action. \`list({workflow_type: "example"})\` enumerates the shipped
|
|
1570
|
-
example workflows and \`example("<package>/<name>")\` loads one with its
|
|
1571
|
-
graph — a worked example to read before authoring one.`
|
|
1625
|
+
skill: "api-workflows",
|
|
1626
|
+
doc: `- \`nodetool.workflows\` — saved graphs and their runs: \`list()\` (→
|
|
1627
|
+
\`{workflows}\`, an envelope), \`get(id)\`, \`create(name, graph)\`,
|
|
1628
|
+
\`validate(idOrGraph)\` (throws on errors), \`run(id, params)\`,
|
|
1629
|
+
\`start(id, params)\` (→ job receipt), \`debug(id, params)\`,
|
|
1630
|
+
\`resolve(sessionId, escalationId, action)\`, \`example("<package>/<name>")\`,
|
|
1631
|
+
\`versions\`, \`getVersion\`, \`snapshot\`, \`restore\`, \`deleteVersion\`,
|
|
1632
|
+
\`open(id?)\`. Saving a graph does not run it.`
|
|
1572
1633
|
},
|
|
1573
1634
|
{
|
|
1574
1635
|
namespace: "settings",
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
never set from code: \`requestSecret
|
|
1579
|
-
where the user types it, and answers only whether they saved one — read it
|
|
1580
|
-
afterwards with \`nodetool.secrets.get(key)\`, which works only if this run
|
|
1581
|
-
declares the name in its secret scope. When a run has no interactive client
|
|
1582
|
-
the request is refused; say what is missing instead of asking again.`
|
|
1636
|
+
skill: "api-settings",
|
|
1637
|
+
doc: `- \`nodetool.settings\` — \`list({group})\`, \`get(key)\`, \`set(key, value)\`,
|
|
1638
|
+
\`secrets()\` (names only), \`requestSecret(key, {reason, help_url})\`. A secret
|
|
1639
|
+
is never set from code: \`requestSecret\` opens a dialog for the user.`
|
|
1583
1640
|
},
|
|
1584
1641
|
{
|
|
1585
1642
|
namespace: "nodes",
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
type: \`await search(["summarize text"], {n_results, input_type, output_type})\`
|
|
1591
|
-
(a bare string works too) to find candidates — it returns
|
|
1592
|
-
\`{total, results}\`, and each result carries its node type on \`type\`
|
|
1593
|
-
(not \`node_type\`) — then
|
|
1594
|
-
\`await info("nodetool.text.Concat")\` for the exact properties, inputs and
|
|
1595
|
-
outputs before you import that node's namespace from the DSL package.
|
|
1596
|
-
\`list({namespace, limit})\`
|
|
1597
|
-
browses a namespace. \`run(type, inputs)\` is the single-node harness — probe
|
|
1598
|
-
one node with a property bag before wiring it into a graph.`
|
|
1643
|
+
skill: "api-workflows",
|
|
1644
|
+
doc: `- \`nodetool.nodes\` — \`search(query)\` (→ \`{total, results}\`, the type is on
|
|
1645
|
+
\`type\`), \`info(type)\`, \`list({namespace})\`, \`run(type, inputs)\` (one node,
|
|
1646
|
+
no graph). NEVER guess a node type: search, then \`info\`.`
|
|
1599
1647
|
},
|
|
1600
1648
|
{
|
|
1601
1649
|
namespace: "agents",
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
settled \`{ok, value | error}\` entry per prompt. For independent work that
|
|
1607
|
-
can run while you do something else, \`start(prompt)\` returns
|
|
1608
|
-
\`(subtask_id)\` immediately and \`await wait({ids})\` collects
|
|
1609
|
-
\`(status, result | error)\` later in the same action — never end without
|
|
1610
|
-
waiting for results you need. Delegate work that benefits
|
|
1611
|
-
from a fresh focused context, not one-tool errands.`
|
|
1650
|
+
skill: "api-agents",
|
|
1651
|
+
doc: `- \`nodetool.agents\` — \`run(prompt)\`, \`start(prompt)\` (→ \`{subtask_id}\`),
|
|
1652
|
+
\`wait({ids})\`. A sub-agent has your tools and a FRESH context, so the
|
|
1653
|
+
prompt must be self-contained.`
|
|
1612
1654
|
},
|
|
1613
1655
|
{
|
|
1614
1656
|
namespace: "models",
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
(e.g. \`pick("text_to_image")\` → \`{provider, model_id, ref}\`). Do not shop
|
|
1621
|
-
around: pick with no options IS the good default. When the user
|
|
1622
|
-
named a model, search for it in the SAME call:
|
|
1623
|
-
\`pick("text_to_image", {query: "flux schnell"})\` — \`query\` is free text over
|
|
1624
|
-
model id and name, and \`pick\` throws when nothing matches instead of
|
|
1625
|
-
returning something else. \`find(capability,
|
|
1626
|
-
{query, provider_hint, prefer_local, limit})\` for the ranked list (returns
|
|
1627
|
-
\`{results}\`),
|
|
1628
|
-
\`list({provider, model_type})\` to browse (also \`{results}\` — neither
|
|
1629
|
-
answers with a bare array), \`forProvider(provider)\` for one
|
|
1630
|
-
provider's own catalog. Never guess a model id — pick one, then pass it to
|
|
1631
|
-
\`nodetool.media.*\`. To set a node's model property, assign the result's
|
|
1632
|
-
\`ref\` verbatim (it is the typed \`{type, provider, id, name}\` value the
|
|
1633
|
-
property wants — the flat \`model_id\` field does not fit).`
|
|
1657
|
+
skill: "api-models",
|
|
1658
|
+
doc: `- \`nodetool.models\` — \`pick(capability, {query})\` (→ one model),
|
|
1659
|
+
\`find(capability)\` (→ \`{results}\`), \`list()\`, \`forProvider(provider)\`,
|
|
1660
|
+
\`generate(prompt, model)\`. Never guess a model id. A node's model property
|
|
1661
|
+
takes the result's \`ref\` verbatim.`
|
|
1634
1662
|
},
|
|
1635
1663
|
{
|
|
1636
1664
|
namespace: "media",
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
\`generateImage(prompt, model
|
|
1640
|
-
\`
|
|
1641
|
-
\`
|
|
1642
|
-
\`
|
|
1643
|
-
\`
|
|
1644
|
-
|
|
1645
|
-
\`
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
Hold each result in a local variable and feed it straight into the next call;
|
|
1650
|
-
record the uris a later action or turn will need with
|
|
1651
|
-
\`nodetool.memory.save\` — never re-run generation for something already saved.
|
|
1652
|
-
Feed results into \`image.*\`, \`audio.*\`, or \`video.*\` by uri. These namespaces take a
|
|
1653
|
-
result, its \`asset_uri\`, or an asset id and return run-local handles. They
|
|
1654
|
-
can combine media too: for example, \`video.addAudio(videoHandle, audioHandle)\`.
|
|
1655
|
-
Save finished handles with \`nodetool.media.toImage/toAudio/toVideo\` before
|
|
1656
|
-
the action ends; keep the returned \`asset://\` ref (in memory if a
|
|
1657
|
-
later turn needs it). Do not pull bytes into the guest, and do not use a
|
|
1658
|
-
handle in a later action — it is dead there.
|
|
1659
|
-
\`editImage\` is the call for "make it like this": pass the image the user
|
|
1660
|
-
attached (or an earlier approved result) as \`inputFile\`, and any further
|
|
1661
|
-
images to match in \`reference_files\` — both take an \`asset://\` uri or a
|
|
1662
|
-
workspace path.
|
|
1663
|
-
To put words on a picture, draw them yourself: \`createCanvas\` with
|
|
1664
|
-
\`fillText\` in the guest, or the flow call
|
|
1665
|
-
\`import { renderText } from "@nodetool-ai/sandbox-flow/lib.image.draw"\`.
|
|
1666
|
-
Never send the user to another tool for text on an image.
|
|
1667
|
-
Judging lives here too, so generate → critique → regenerate is one namespace:
|
|
1668
|
-
\`critique(image, brief, visionModel, {taste_profile})\`,
|
|
1669
|
-
\`compare([imageA, imageB, ...], brief, visionModel)\` (pairwise knockout),
|
|
1670
|
-
\`scoreAdherence(image, brief, visionModel, {questions})\`. The judge takes a
|
|
1671
|
-
VISION chat model — \`pick("generate_message")\` on a vision-capable one, not
|
|
1672
|
-
the image model that generated the picture.
|
|
1673
|
-
\`understandVideo(video, prompt, videoModel, {max_tokens})\` reads a whole clip
|
|
1674
|
-
with a model that takes video (Gemini) and answers \`prompt\` as \`{text}\` —
|
|
1675
|
-
describe it, summarize it, or pull the on-screen text out.
|
|
1676
|
-
Host binaries: \`ffmpeg(args, {inputs, output_file, timeout_seconds})\` runs
|
|
1677
|
-
ffmpeg in the workspace (no shell, workspace paths only, no URL inputs).
|
|
1678
|
-
\`inputs\` stages refs under workspace names first, which is how an asset
|
|
1679
|
-
reaches ffmpeg — concatenating two of them is one call:
|
|
1680
|
-
\`ffmpeg(["-i", "a.mp4", "-i", "b.mp4", "-filter_complex",
|
|
1681
|
-
"[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[v][a]", "-map", "[v]", "-map", "[a]",
|
|
1682
|
-
"out.mp4"], {inputs: {"a.mp4": uriA, "b.mp4": uriB}, output_file: "out.mp4"})\`;
|
|
1683
|
-
\`ffprobe(path)\` reads a file's format and streams before you decide what to
|
|
1684
|
-
run; \`downloadVideo(url, outputFile, {format,
|
|
1685
|
-
timeout_seconds})\` downloads with yt-dlp. Browse pages with
|
|
1686
|
-
\`nodetool.web.browse(url)\`.`
|
|
1665
|
+
skill: "api-media",
|
|
1666
|
+
doc: `- \`nodetool.media\` — one generation with a picked model, saved as an asset:
|
|
1667
|
+
\`generateImage(prompt, model)\`, \`editImage(inputFile, prompt, model)\`,
|
|
1668
|
+
\`generateVideo(prompt, model)\`, \`animateImage(inputFile, model)\`,
|
|
1669
|
+
\`videoFromReferences(files, model)\`, \`speak(text, model)\`,
|
|
1670
|
+
\`generateMusic(prompt, model)\`, \`transcribe(inputFile, model)\`,
|
|
1671
|
+
\`embed(text, model)\`; judges \`critique(\`, \`compare(\`, \`scoreAdherence(\`,
|
|
1672
|
+
\`understandVideo(\`; \`ffmpeg(args)\`, \`ffprobe(path)\`, \`downloadVideo(url)\`;
|
|
1673
|
+
\`toImage/toAudio/toVideo(handle)\` saves a handle.
|
|
1674
|
+
Hold each result in a local variable and feed it straight into the next
|
|
1675
|
+
call; record the uris a later action or turn will need with
|
|
1676
|
+
\`nodetool.memory.save\` — never re-run generation for something already saved.`
|
|
1687
1677
|
},
|
|
1688
1678
|
{
|
|
1689
1679
|
namespace: "documents",
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
(returns \`{text}\`), \`extractTables(pdfPath, outputJsonFile)\`,
|
|
1680
|
+
skill: "api-assets",
|
|
1681
|
+
doc: `- \`nodetool.documents\` — workspace file conversion: \`convert(inputFile,
|
|
1682
|
+
outputFile)\`, \`extractText(pdfPath)\`, \`extractTables(pdfPath, outFile)\`,
|
|
1694
1683
|
\`markdownToPdf(inputFile, outputFile)\`, \`pdfToMarkdown(inputFile, outputFile)\`.`
|
|
1695
1684
|
},
|
|
1696
1685
|
{
|
|
1697
1686
|
namespace: "web",
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
\`
|
|
1701
|
-
\`
|
|
1702
|
-
— title, page link, original image URL, thumbnail URL — routed the same way
|
|
1703
|
-
minus the two providers that answer with prose instead of results
|
|
1704
|
-
(\`"openai"\`, \`"google"\`). \`browse(url)\` returns a page's readable text,
|
|
1705
|
-
\`fetch(url, {method, headers, body})\` is a raw HTTP request,
|
|
1706
|
-
\`download(url, outputFile)\` saves bytes into the workspace, and
|
|
1707
|
-
\`screenshot(url, outputFile)\` renders a page to PNG.`
|
|
1687
|
+
skill: "api-web",
|
|
1688
|
+
doc: `- \`nodetool.web\` — \`search(query)\`, \`news(query)\`, \`images(query)\`,
|
|
1689
|
+
\`browse(url)\` (readable text), \`fetch(url, {method, headers, body})\`,
|
|
1690
|
+
\`download(url, outputFile)\`, \`screenshot(url, outputFile)\`.`
|
|
1708
1691
|
},
|
|
1709
1692
|
{
|
|
1710
1693
|
namespace: "memory",
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
\`
|
|
1715
|
-
collections you produce in \`resources\` so you can reuse them later —
|
|
1716
|
-
\`search(query, {limit, thread, kinds})\` finds them by keyword — every word
|
|
1717
|
-
must appear in the title or content — plus \`list({limit, thread, kinds})\`,
|
|
1718
|
-
\`update(memoryId, {content, title, resources})\`, and \`remove(memoryId)\`.`
|
|
1694
|
+
skill: "api-memory",
|
|
1695
|
+
doc: `- \`nodetool.memory\` — durable notes across conversations: \`save(content,
|
|
1696
|
+
{title, kind, resources})\`, \`search(query)\`, \`list()\`, \`update(id, fields)\`,
|
|
1697
|
+
\`remove(id)\`. Put what you produce in \`resources\`.`
|
|
1719
1698
|
},
|
|
1720
1699
|
{
|
|
1721
1700
|
namespace: "threads",
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
reads a page of messages; \`last(threadId)\` is the newest one; and
|
|
1726
|
-
\`message(messageId)\` is the full record when a summarized message is not
|
|
1727
|
-
enough. Use it to answer "what did we decide last time" instead of asking
|
|
1728
|
-
the user to repeat it.`
|
|
1701
|
+
skill: "api-memory",
|
|
1702
|
+
doc: `- \`nodetool.threads\` — chat history, read-only: \`list()\`, \`get(threadId)\`,
|
|
1703
|
+
\`last(threadId)\`, \`message(messageId)\`.`
|
|
1729
1704
|
},
|
|
1730
1705
|
{
|
|
1731
1706
|
namespace: "shared",
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
of the keys you name and reports misses in \`missing\`; \`publish(key, value,
|
|
1737
|
-
{title, description})\` stores under \`shared:<key>\` for later steps and
|
|
1738
|
-
sub-agents to find. Upstream step and task results land here, so read them
|
|
1739
|
-
rather than asking for them again.`
|
|
1707
|
+
skill: "api-memory",
|
|
1708
|
+
doc: `- \`nodetool.shared\` — the scratchpad of THIS run: \`list()\` (metadata
|
|
1709
|
+
only), \`read(keys)\`, \`publish(key, value)\`. Earlier step and task results
|
|
1710
|
+
land here.`
|
|
1740
1711
|
},
|
|
1741
1712
|
{
|
|
1742
1713
|
namespace: "email",
|
|
1743
|
-
|
|
1714
|
+
skill: "api-web",
|
|
1715
|
+
doc: `- \`nodetool.email\` — \`search({subject, text, since_hours_ago})\`,
|
|
1744
1716
|
\`archive(messageIds)\`, \`label(messageId, label)\`.`
|
|
1745
1717
|
},
|
|
1746
1718
|
{
|
|
1747
1719
|
namespace: "assets",
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
\`
|
|
1751
|
-
content_base64 | source
|
|
1752
|
-
|
|
1753
|
-
URL, copied host-side: to keep a file download_file or run_apify_actor
|
|
1754
|
-
produced, pass its \`asset_url\` as \`source\`; never \`read()\` it to base64
|
|
1755
|
-
first. \`read(nameOrUri)\` (an \`asset://\` URI, an asset id, a
|
|
1756
|
-
/api/storage/ key, or a stored file name → \`{content, content_base64}\`).
|
|
1757
|
-
To edit a generated image, pass the generation result to \`image.*\` and
|
|
1758
|
-
save with \`nodetool.media.toImage(handle).\``
|
|
1720
|
+
skill: "api-assets",
|
|
1721
|
+
doc: `- \`nodetool.assets\` — the library: \`list()\`, \`search(query)\`,
|
|
1722
|
+
\`images()\` (handles for \`view_image\`), \`get(id)\`, \`read(nameOrUri)\`,
|
|
1723
|
+
\`save(name, {content | content_base64 | source})\`. Keep a file another tool
|
|
1724
|
+
stored by passing it as \`source\`, never by reading it to base64.`
|
|
1759
1725
|
},
|
|
1760
1726
|
{
|
|
1761
1727
|
namespace: "jobs",
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
(
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1728
|
+
skill: "api-workflows",
|
|
1729
|
+
doc: `- \`nodetool.jobs\` — \`list()\`, \`get(id)\`, \`logs(id)\`,
|
|
1730
|
+
\`wait(idOrReceipt, {timeoutMs})\` (polls until the job settles).`
|
|
1731
|
+
},
|
|
1732
|
+
{
|
|
1733
|
+
namespace: "runs",
|
|
1734
|
+
skill: "nodetool-troubleshooter",
|
|
1735
|
+
doc: `- \`nodetool.runs\` — app, workflow and chat runs: \`list(opts)\`,
|
|
1736
|
+
\`get(id)\` (summary first), \`get(id, {include_content: true})\` (saved app inputs and outputs),
|
|
1737
|
+
\`trace(id, {focus_span_id, depth, include_content})\`,
|
|
1738
|
+
\`logs(id, {level, source, span_id, include_content})\`, \`wait(id, {timeout_ms})\`.
|
|
1739
|
+
Resource ids accept their 12-character prefixes. Trace and span ids stay full.`
|
|
1771
1740
|
},
|
|
1772
1741
|
{
|
|
1773
1742
|
namespace: "generations",
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
\`get(
|
|
1777
|
-
|
|
1778
|
-
{timeout_seconds})\` for one started with \`background: true\`,
|
|
1779
|
-
\`cancel(generationId)\`, \`reconcile(generationId)\` to ask the provider
|
|
1780
|
-
what it billed. Every \`generateImage\`/\`generateVideo\`/… result carries
|
|
1781
|
-
\`generation_id\`; read its cost with \`get\` instead of guessing. For the
|
|
1782
|
-
provider's own record — generations this installation never ran, at the price
|
|
1783
|
-
the provider billed — \`fromProvider(provider, {model, status, since, limit})\`
|
|
1784
|
-
and \`getFromProvider(provider, requestId, {model})\`.`
|
|
1743
|
+
skill: "api-media",
|
|
1744
|
+
doc: `- \`nodetool.generations\` — status and cost of every media generation:
|
|
1745
|
+
\`list()\`, \`get(id)\`, \`wait(id)\` (for \`background: true\`), \`cancel(id)\`,
|
|
1746
|
+
\`reconcile(id)\`, \`fromProvider(provider)\`, \`getFromProvider(provider, requestId)\`.`
|
|
1785
1747
|
},
|
|
1786
1748
|
{
|
|
1787
1749
|
namespace: "collections",
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
|
|
1791
|
-
\`hybridSearch(text
|
|
1792
|
-
\`query(collection, text, {n_results})\` against a named collection;
|
|
1793
|
-
\`list()\` shows what exists.`
|
|
1750
|
+
skill: "api-collections",
|
|
1751
|
+
doc: `- \`nodetool.collections\` — vector search: \`list()\`, \`query(collection,
|
|
1752
|
+
text)\`, \`index(text, sourceId)\`, \`indexBatch(chunks)\`, \`search(text)\`,
|
|
1753
|
+
\`hybridSearch(text)\`.`
|
|
1794
1754
|
},
|
|
1795
1755
|
{
|
|
1796
1756
|
namespace: "apps",
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
\`
|
|
1800
|
-
|
|
1801
|
-
\`[{tool: "add_operation", input: {…}}, {tool: "add_component", input: {…}}]\`
|
|
1802
|
-
— \`edit(id, [])\` returns every tool and its schema. \`debug\` with
|
|
1803
|
-
\`{run: false}\` is the free, instant wiring check after each change.`
|
|
1757
|
+
skill: "api-apps",
|
|
1758
|
+
doc: `- \`nodetool.apps\` — mini apps: \`list()\`, \`get(id)\`, \`create(name)\`,
|
|
1759
|
+
\`edit(id, steps)\` (\`edit(id, [])\` lists the App Builder tools),
|
|
1760
|
+
\`debug(id, {run: false})\` (the free wiring check).`
|
|
1804
1761
|
},
|
|
1805
1762
|
{
|
|
1806
1763
|
namespace: "games",
|
|
1807
|
-
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
\`
|
|
1812
|
-
\`
|
|
1813
|
-
\`
|
|
1814
|
-
and \`build(id, {revision})\` install art, verify routes, inspect frames and export.
|
|
1815
|
-
Read a shipped benchmark with \`listExamples()\` and \`getExample("kindle")\`, then
|
|
1816
|
-
\`installExample(slug, {project_id, name})\` to copy it into a project.`
|
|
1764
|
+
skill: "api-games",
|
|
1765
|
+
doc: `- \`nodetool.games\` — built-in games: \`create(name, {project_id})\`,
|
|
1766
|
+
\`get(id)\`, \`edit(id, ops)\`, \`setDocument(id, document)\`,
|
|
1767
|
+
\`previewAuthoring(id, {program})\`, \`applyAuthoring(id, candidate)\`,
|
|
1768
|
+
\`generateAsset(id, slot, kind, prompt)\`, \`installAsset\`, \`playtest(id)\`,
|
|
1769
|
+
\`autoplay(id, {win})\`, \`capture(id)\`, \`publish(id)\`, \`build(id)\`,
|
|
1770
|
+
\`listExamples()\`, \`getExample(slug)\`, \`installExample(slug)\`.`
|
|
1817
1771
|
},
|
|
1818
1772
|
{
|
|
1819
1773
|
namespace: "timelines",
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
\`
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
\`
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
describe document structure; inspect rendered frames to judge the picture.
|
|
1831
|
-
\`preview(idOrDocument, {times_ms, count, range, sheet, width})\` (composited
|
|
1832
|
-
frames at chosen timecodes — read the picture back instead of guessing at it;
|
|
1833
|
-
\`range\` sweeps a window and \`sheet: true\` returns it as one labelled
|
|
1834
|
-
contact sheet),
|
|
1835
|
-
\`compare(a, b, {times_ms, range})\` (what actually changed between two
|
|
1836
|
-
timelines or two versions — per-frame pixel difference and a side-by-side
|
|
1837
|
-
sheet),
|
|
1838
|
-
\`versions(id)\`,
|
|
1839
|
-
\`getVersion(id, n)\`, \`snapshot(id, {name})\` (also \`createVersion\`,
|
|
1840
|
-
the same call under the tool's own name), \`restore(id, n)\`,
|
|
1841
|
-
\`deleteVersion(id, n)\`,
|
|
1842
|
-
\`setDocument(id, document, {fps, width, height, expected_updated_at,
|
|
1843
|
-
snapshot_name})\` — the whole document in one call, validated before it is
|
|
1844
|
-
written and snapshotted first, for authoring a cut from scratch. Missing
|
|
1845
|
-
bookkeeping is filled in: track \`index\`/\`visible\`/\`locked\`, clip
|
|
1846
|
-
\`sourceType\`/\`status\`/\`locked\`/\`versions\`, animation ids and
|
|
1847
|
-
\`markers\`; document-level \`fps\`/\`width\`/\`height\` are read as
|
|
1848
|
-
the sequence's settings; a midi track's \`instrument: {preset}\` and a
|
|
1849
|
-
typewriter's plain \`durationMs\` resolve as the edit ops resolve them. To
|
|
1850
|
-
build that document in code — scenes, shapes, text, keyframes, a beat grid —
|
|
1851
|
-
import \`@nodetool-ai/sandbox-timeline\` and save it with its
|
|
1852
|
-
\`saveTimeline\` —
|
|
1853
|
-
\`render(id, {wait, preview_scale, format, alpha, timeout_ms})\` — the cut
|
|
1854
|
-
as a video, run as a job; render and look before you call a cut done, and
|
|
1855
|
-
draft at a \`preview_scale\` below 1 while you are still iterating — and
|
|
1856
|
-
\`edit(id, ops)\` — the cut itself, server-side: \`[{op: "add_track", type:
|
|
1857
|
-
"audio"}, {op: "add_text_clip", text: "Hi"}, {op: "split_clip", target:
|
|
1858
|
-
"shot", atMs: 3000}, {op: "animate_clip", target: "Hi", animations:
|
|
1859
|
-
[{role: "in", preset: "fade"}]}]\`. Start with \`{op: "get_state"}\` for ids.
|
|
1860
|
-
Shape \`shape.x/y/width/height\` use 0..1 frame fractions from the top-left.
|
|
1861
|
-
Every clip's \`transform.position.x/y\` uses sequence pixels relative to
|
|
1862
|
-
the frame center (positive x right, positive y down), including text and
|
|
1863
|
-
shapes. \`set_effects\` blur takes \`{type: "blur", radius: 80}\` in pixels;
|
|
1864
|
-
unknown effect parameters are rejected.
|
|
1865
|
-
Existing library media goes on with \`{op: "add_media_clip", asset:
|
|
1866
|
-
"asset://<id>.mp4"}\`, which appends after the track's last clip — so one
|
|
1867
|
-
call per asset lays them end to end.`
|
|
1774
|
+
skill: "api-timelines",
|
|
1775
|
+
doc: `- \`nodetool.timelines\` — \`list()\` (→ \`{timelines}\`), \`create(name, {fps,
|
|
1776
|
+
width, height})\`, \`get(id)\`, \`edit(id, ops)\`, \`setDocument(id, document)\`,
|
|
1777
|
+
\`validate(idOrDocument, {tier: "showcase"})\`, \`preview(idOrDocument,
|
|
1778
|
+
{times_ms, range, sheet})\`, \`compare(a, b)\`, \`render(id)\`,
|
|
1779
|
+
\`bakeAudioAnimation(id, audioClipId, targetClipId, opts)\` (drive a
|
|
1780
|
+
property from measured audio), versions, \`examples.list/get/source\`,
|
|
1781
|
+
\`compositions.*\`. Build a motion-graphics piece in
|
|
1782
|
+
code with \`@nodetool-ai/sandbox-timeline\`, and look at previewed frames
|
|
1783
|
+
before you call it done.`
|
|
1868
1784
|
},
|
|
1869
1785
|
{
|
|
1870
1786
|
namespace: "sketches",
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
\`
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
"multiply"}]\`. Create a blank canvas first, then edit. Pixels are never
|
|
1877
|
-
touched — painting and generation stay with an open editor or a workflow
|
|
1878
|
-
run.`
|
|
1787
|
+
skill: "api-sketches",
|
|
1788
|
+
doc: `- \`nodetool.sketches\` — layered image documents: \`list()\`,
|
|
1789
|
+
\`create(name, {width, height})\`, \`get(id)\`, \`edit(id, ops)\`,
|
|
1790
|
+
\`validate(idOrDocument)\`, versions. Layers only; pixels stay with an editor
|
|
1791
|
+
or a workflow run.`
|
|
1879
1792
|
},
|
|
1880
1793
|
{
|
|
1881
1794
|
namespace: "scripts",
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
"Once upon a time.", speaker: "Narrator"}]\`. Rewriting a line leaves its
|
|
1886
|
-
takes stale, so \`voice()\` re-records exactly those.`
|
|
1795
|
+
skill: "api-scripts",
|
|
1796
|
+
doc: `- \`nodetool.scripts\` — voice scripts: \`list()\`, \`create(name)\`,
|
|
1797
|
+
\`get(id)\`, \`edit(id, ops)\`, \`voice(id)\`, \`assembleTimeline(id)\`.`
|
|
1887
1798
|
},
|
|
1888
1799
|
{
|
|
1889
1800
|
namespace: "storyboards",
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
\`
|
|
1894
|
-
\`
|
|
1895
|
-
duration_seconds: 4}, {op: "reorder_shot", target: "shot_2", index: 0}]\`.
|
|
1896
|
-
Create a blank board first, then add shots with \`edit\`.`
|
|
1801
|
+
skill: "api-storyboards",
|
|
1802
|
+
doc: `- \`nodetool.storyboards\` — shot lists: \`list()\`, \`create(name, {brief,
|
|
1803
|
+
style, aspect_ratio})\`, \`get(id)\`, \`edit(id, ops)\`, \`renderStills(id)\`
|
|
1804
|
+
(cheap), \`renderClips(id)\` (expensive), \`reviseClip(id, target,
|
|
1805
|
+
instruction)\`, \`assembleTimeline(id)\`.`
|
|
1897
1806
|
}
|
|
1898
1807
|
];
|
|
1899
1808
|
const BATCH_EXAMPLE = `Batching turns one workflow into a dynamic pipeline — loops, joins, and
|
|
@@ -2033,9 +1942,18 @@ available. A method whose backing tool is missing throws and names the tool.`,
|
|
|
2033
1942
|
namespace. Each export takes the one arguments object its tool takes. This is
|
|
2034
1943
|
the same gated implementation \`nodetool.*\` calls — \`nodetool.*\` stays
|
|
2035
1944
|
available, and the two cannot disagree. A module this session does not mount
|
|
2036
|
-
fails the action by name, before any code runs
|
|
2037
|
-
active.map((entry) => entry.doc).join("\n")
|
|
1945
|
+
fails the action by name, before any code runs.`
|
|
2038
1946
|
];
|
|
1947
|
+
// A skill is only worth naming when this belt can load it.
|
|
1948
|
+
const skills = names.has("load_skill");
|
|
1949
|
+
if (skills) {
|
|
1950
|
+
sections.push(`Each line below is a summary. Its skill (\`load_skill\`) holds every
|
|
1951
|
+
option, return shape and example: load it before the first call into that
|
|
1952
|
+
namespace.`);
|
|
1953
|
+
}
|
|
1954
|
+
sections.push(active
|
|
1955
|
+
.map((entry) => skills ? `${entry.doc} Skill: \`${entry.skill}\`.` : entry.doc)
|
|
1956
|
+
.join("\n"));
|
|
2039
1957
|
const choice = surfaceChoiceSection(options, names);
|
|
2040
1958
|
if (choice)
|
|
2041
1959
|
sections.push(choice);
|