summer-engine 2.8.1 → 3.0.0
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/.claude-plugin/marketplace.json +27 -7
- package/.claude-plugin/plugin.json +99 -83
- package/.codex-plugin/plugin.json +112 -82
- package/.cursor-plugin/plugin.json +119 -83
- package/.factory-plugin/plugin.json +100 -3
- package/.mcp.json +6 -1
- package/.opencode/INSTALL.md +7 -4
- package/.opencode/plugins/summer.js +31 -18
- package/AGENTS.md +107 -34
- package/CHANGELOG.md +134 -41
- package/CLAUDE.md +4 -2
- package/GEMINI.md +7 -53
- package/NOTICE +31 -0
- package/README.md +159 -391
- package/assets/api-docs.json.gz +0 -0
- package/assets/autopilot/README.md +20 -6
- package/assets/autopilot/autopilot.gd +80 -26
- package/assets/autopilot/run.sh +132 -7
- package/assets/navigation/web-routes.json +719 -0
- package/commands/gameskill.md +10 -108
- package/commands/summer.md +72 -4
- package/dist/bin/summer.js +6 -87
- package/dist/cli/banner.d.ts +1 -0
- package/dist/cli/banner.js +33 -0
- package/dist/{commands → cli/commands}/config.js +1 -1
- package/dist/cli/commands/create.d.ts +30 -0
- package/dist/cli/commands/create.js +212 -0
- package/dist/{commands → cli/commands}/debug.js +2 -2
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.js +18 -0
- package/dist/cli/commands/events.d.ts +57 -0
- package/dist/cli/commands/events.js +158 -0
- package/dist/cli/commands/install.d.ts +50 -0
- package/dist/cli/commands/install.js +447 -0
- package/dist/cli/commands/list.js +72 -0
- package/dist/{commands → cli/commands}/login.js +33 -17
- package/dist/{commands → cli/commands}/logout.d.ts +1 -0
- package/dist/cli/commands/logout.js +19 -0
- package/dist/{commands → cli/commands}/memory.d.ts +1 -8
- package/dist/{commands → cli/commands}/memory.js +20 -11
- package/dist/cli/commands/open.d.ts +45 -0
- package/dist/cli/commands/open.js +216 -0
- package/dist/{commands → cli/commands}/plan.js +2 -2
- package/dist/{commands → cli/commands}/publish.js +1 -1
- package/dist/{commands → cli/commands}/releases.js +1 -1
- package/dist/cli/commands/run.d.ts +19 -0
- package/dist/cli/commands/run.js +255 -0
- package/dist/{commands → cli/commands}/setup.js +43 -89
- package/dist/{commands → cli/commands}/skills.js +85 -222
- package/dist/{commands → cli/commands}/status.d.ts +1 -0
- package/dist/cli/commands/status.js +62 -0
- package/dist/cli/commands/tool.d.ts +11 -0
- package/dist/cli/commands/tool.js +121 -0
- package/dist/cli/index.d.ts +6 -0
- package/dist/cli/index.js +89 -0
- package/dist/cli/root-action.d.ts +7 -0
- package/dist/cli/root-action.js +15 -0
- package/dist/{lib → core}/api-client.d.ts +106 -15
- package/dist/{lib → core}/api-client.js +267 -75
- package/dist/{lib → core}/async-op-lifecycle.d.ts +3 -4
- package/dist/{lib → core}/async-op-lifecycle.js +3 -4
- package/dist/{lib → core}/auth.d.ts +14 -6
- package/dist/{lib → core}/auth.js +56 -40
- package/dist/core/capabilities/agent-playbook.d.ts +20 -0
- package/dist/core/capabilities/agent-playbook.js +218 -0
- package/dist/core/capabilities/api-docs.d.ts +36 -0
- package/dist/core/capabilities/api-docs.js +118 -0
- package/dist/core/capabilities/asset-import.d.ts +49 -0
- package/dist/core/capabilities/asset-import.js +134 -0
- package/dist/core/capabilities/camera-view.d.ts +98 -0
- package/dist/core/capabilities/camera-view.js +222 -0
- package/dist/core/capabilities/capture.d.ts +63 -0
- package/dist/core/capabilities/capture.js +67 -0
- package/dist/core/capabilities/console-read.d.ts +17 -0
- package/dist/core/capabilities/console-read.js +21 -0
- package/dist/{lib → core/capabilities}/creator.d.ts +1 -29
- package/dist/{lib → core/capabilities}/creator.js +14 -33
- package/dist/{lib → core/capabilities}/debug-report.d.ts +1 -1
- package/dist/{lib → core/capabilities}/debug-report.js +12 -31
- package/dist/{commands → core/capabilities}/doctor.d.ts +7 -2
- package/dist/{commands → core/capabilities}/doctor.js +47 -73
- package/dist/core/capabilities/engine-fallbacks.d.ts +26 -0
- package/dist/core/capabilities/engine-fallbacks.js +36 -0
- package/dist/core/capabilities/engine-ops.d.ts +33 -0
- package/dist/core/capabilities/engine-ops.js +145 -0
- package/dist/core/capabilities/engine-receipt.d.ts +53 -0
- package/dist/core/capabilities/engine-receipt.js +134 -0
- package/dist/core/capabilities/events.d.ts +200 -0
- package/dist/core/capabilities/events.js +383 -0
- package/dist/core/capabilities/fabricate-mesh.d.ts +111 -0
- package/dist/core/capabilities/fabricate-mesh.js +165 -0
- package/dist/core/capabilities/frame-quality.d.ts +71 -0
- package/dist/core/capabilities/frame-quality.js +449 -0
- package/dist/core/capabilities/game-task-plan.d.ts +66 -0
- package/dist/{lib → core/capabilities}/game-task-plan.js +59 -8
- package/dist/core/capabilities/hdri-import.d.ts +90 -0
- package/dist/core/capabilities/hdri-import.js +250 -0
- package/dist/core/capabilities/image-generation.d.ts +24 -0
- package/dist/core/capabilities/image-generation.js +22 -0
- package/dist/core/capabilities/navigation/open.d.ts +156 -0
- package/dist/core/capabilities/navigation/open.js +567 -0
- package/dist/core/capabilities/navigation/render-product-map.d.ts +1 -0
- package/dist/core/capabilities/navigation/render-product-map.js +84 -0
- package/dist/core/capabilities/navigation/targets.d.ts +87 -0
- package/dist/core/capabilities/navigation/targets.js +250 -0
- package/dist/core/capabilities/play-determinism.d.ts +35 -0
- package/dist/core/capabilities/play-determinism.js +86 -0
- package/dist/core/capabilities/project-context.d.ts +114 -0
- package/dist/core/capabilities/project-context.js +249 -0
- package/dist/core/capabilities/runtime-control.d.ts +540 -0
- package/dist/core/capabilities/runtime-control.js +1011 -0
- package/dist/core/capabilities/scene-kind.d.ts +19 -0
- package/dist/core/capabilities/scene-kind.js +137 -0
- package/dist/core/capabilities/scene-script.d.ts +38 -0
- package/dist/core/capabilities/scene-script.js +45 -0
- package/dist/core/capabilities/tool-dispatch.d.ts +42 -0
- package/dist/core/capabilities/tool-dispatch.js +1490 -0
- package/dist/core/capabilities/ui-control.d.ts +179 -0
- package/dist/core/capabilities/ui-control.js +423 -0
- package/dist/core/capabilities/variant-types.d.ts +22 -0
- package/dist/core/capabilities/variant-types.js +101 -0
- package/dist/core/capability-skew.d.ts +205 -0
- package/dist/core/capability-skew.js +386 -0
- package/dist/{lib → core}/config.d.ts +11 -1
- package/dist/{lib → core}/config.js +13 -2
- package/dist/core/embeddings.d.ts +78 -0
- package/dist/core/embeddings.js +166 -0
- package/dist/core/engine-install.d.ts +105 -0
- package/dist/core/engine-install.js +190 -0
- package/dist/core/engine.d.ts +94 -0
- package/dist/{lib → core}/engine.js +74 -28
- package/dist/core/feedback/client.d.ts +88 -0
- package/dist/core/feedback/client.js +182 -0
- package/dist/{lib → core}/format.d.ts +0 -1
- package/dist/{lib → core}/format.js +1 -1
- package/dist/core/headless/connection.d.ts +86 -0
- package/dist/core/headless/connection.js +97 -0
- package/dist/core/headless/editor-connection.d.ts +26 -0
- package/dist/core/headless/editor-connection.js +81 -0
- package/dist/core/headless/mcp-routing.d.ts +38 -0
- package/dist/core/headless/mcp-routing.js +83 -0
- package/dist/core/headless/registry.d.ts +91 -0
- package/dist/core/headless/registry.js +226 -0
- package/dist/core/headless/resolve.d.ts +46 -0
- package/dist/core/headless/resolve.js +75 -0
- package/dist/core/headless/spawn.d.ts +46 -0
- package/dist/core/headless/spawn.js +205 -0
- package/dist/core/headless/worker-connection.d.ts +96 -0
- package/dist/core/headless/worker-connection.js +353 -0
- package/dist/core/headless/worker-engine-client.d.ts +58 -0
- package/dist/core/headless/worker-engine-client.js +246 -0
- package/dist/core/launch-posture.d.ts +170 -0
- package/dist/core/launch-posture.js +317 -0
- package/dist/core/library-read.d.ts +73 -0
- package/dist/core/library-read.js +279 -0
- package/dist/core/library-search.d.ts +143 -0
- package/dist/core/library-search.js +301 -0
- package/dist/{lib → core}/log-filters.js +4 -2
- package/dist/{lib → core}/mcp-log.js +2 -17
- package/dist/core/package-root.d.ts +9 -0
- package/dist/core/package-root.js +11 -0
- package/dist/core/redact.d.ts +20 -0
- package/dist/core/redact.js +64 -0
- package/dist/core/registry-search.d.ts +167 -0
- package/dist/core/registry-search.js +358 -0
- package/dist/core/skills-registry.d.ts +47 -0
- package/dist/core/skills-registry.js +83 -0
- package/dist/{lib → core}/store.js +11 -7
- package/dist/{lib → core}/summer-compatibility.js +3 -3
- package/dist/{lib → core}/telemetry.js +5 -2
- package/dist/core/templates.d.ts +98 -0
- package/dist/core/templates.js +241 -0
- package/dist/core/tool-errors.d.ts +30 -0
- package/dist/core/tool-errors.js +40 -0
- package/dist/core/trajectory.d.ts +80 -0
- package/dist/core/trajectory.js +307 -0
- package/dist/core/util/http.d.ts +13 -0
- package/dist/core/util/http.js +28 -0
- package/dist/core/util/json.d.ts +12 -0
- package/dist/core/util/json.js +21 -0
- package/dist/core/util/process.d.ts +3 -0
- package/dist/core/util/process.js +13 -0
- package/dist/core/util/sleep.d.ts +1 -0
- package/dist/core/util/sleep.js +3 -0
- package/dist/core/version.d.ts +3 -0
- package/dist/core/version.js +5 -0
- package/dist/{lib → installer}/agent-config.d.ts +20 -1
- package/dist/{lib → installer}/agent-config.js +148 -23
- package/dist/installer/legacy-skills.d.ts +26 -0
- package/dist/installer/legacy-skills.js +53 -0
- package/dist/installer/setup.d.ts +76 -0
- package/dist/installer/setup.js +146 -0
- package/dist/installer/skill-locations.d.ts +45 -0
- package/dist/installer/skill-locations.js +170 -0
- package/dist/installer/version-check.d.ts +174 -0
- package/dist/{lib → installer}/version-check.js +173 -42
- package/dist/{lib/mcp-boot-notice.d.ts → mcp/boot-notice.d.ts} +1 -1
- package/dist/{commands/mcp.js → mcp/command.js} +18 -6
- package/dist/mcp/server.d.ts +23 -3
- package/dist/mcp/server.js +122 -28
- package/dist/mcp/tools/asset-tools.js +62 -142
- package/dist/mcp/tools/creator-tools.js +5 -23
- package/dist/mcp/tools/debug-tools.js +61 -18
- package/dist/mcp/tools/event-tools.d.ts +14 -0
- package/dist/mcp/tools/event-tools.js +41 -0
- package/dist/mcp/tools/fabricate-tools.d.ts +2 -0
- package/dist/mcp/tools/fabricate-tools.js +28 -0
- package/dist/mcp/tools/feedback-tools.d.ts +77 -0
- package/dist/mcp/tools/feedback-tools.js +88 -0
- package/dist/mcp/tools/file-tools.js +6 -53
- package/dist/mcp/tools/generate-tools.js +37 -63
- package/dist/mcp/tools/library-tools.d.ts +11 -0
- package/dist/mcp/tools/library-tools.js +42 -0
- package/dist/mcp/tools/navigation-tools.d.ts +7 -0
- package/dist/mcp/tools/navigation-tools.js +37 -0
- package/dist/mcp/tools/perception-tools.d.ts +20 -0
- package/dist/mcp/tools/perception-tools.js +146 -0
- package/dist/mcp/tools/project-tools.d.ts +14 -0
- package/dist/mcp/tools/project-tools.js +72 -281
- package/dist/mcp/tools/runtime-tools.d.ts +2 -0
- package/dist/mcp/tools/runtime-tools.js +92 -0
- package/dist/mcp/tools/scene-tools.d.ts +3 -0
- package/dist/mcp/tools/scene-tools.js +68 -119
- package/dist/mcp/tools/script-tools.d.ts +3 -0
- package/dist/mcp/tools/script-tools.js +118 -0
- package/dist/mcp/tools/spatial-tools.d.ts +2 -0
- package/dist/mcp/tools/spatial-tools.js +485 -0
- package/dist/mcp/tools/text-json.d.ts +8 -0
- package/dist/mcp/tools/text-json.js +12 -0
- package/dist/mcp/tools/{cloud-tools.d.ts → ui-tools.d.ts} +1 -1
- package/dist/mcp/tools/ui-tools.js +82 -0
- package/dist/mcp/tools/visual-tools.d.ts +2 -7
- package/dist/mcp/tools/visual-tools.js +383 -101
- package/dist/mcp/tools/with-engine.d.ts +9 -15
- package/dist/mcp/tools/with-engine.js +60 -96
- package/dist/project-memory/project-manifest.d.ts +36 -0
- package/dist/project-memory/project-manifest.js +50 -0
- package/dist/project-memory/project-memory.d.ts +57 -0
- package/dist/{lib → project-memory}/project-memory.js +46 -0
- package/gemini-extension.json +103 -2
- package/hooks/hooks-cursor.json +2 -2
- package/hooks/hooks.json +2 -1
- package/hooks/pre-commit-doctor.sh +45 -39
- package/hooks/run-hook.cmd +30 -23
- package/hooks/run-hook.sh +20 -0
- package/hooks/session-start.sh +18 -7
- package/integrations/README.md +70 -0
- package/integrations/claude/README.md +19 -0
- package/integrations/claude/manifest-target.json +16 -0
- package/integrations/cline/README.md +13 -0
- package/integrations/cline/manifest-target.json +3 -0
- package/integrations/codex/README.md +15 -0
- package/integrations/codex/manifest-target.json +5 -0
- package/integrations/cursor/README.md +16 -0
- package/integrations/cursor/manifest-target.json +5 -0
- package/integrations/factory/README.md +26 -0
- package/integrations/factory/manifest-target.json +5 -0
- package/integrations/gemini/README.md +26 -0
- package/integrations/gemini/manifest-target.json +5 -0
- package/integrations/github-copilot/README.md +12 -0
- package/integrations/github-copilot/manifest-target.json +3 -0
- package/integrations/kilo-code/README.md +16 -0
- package/integrations/kilo-code/manifest-target.json +3 -0
- package/integrations/lm-studio/README.md +12 -0
- package/integrations/lm-studio/manifest-target.json +3 -0
- package/integrations/opencode/README.md +15 -0
- package/integrations/opencode/manifest-target.json +3 -0
- package/integrations/roo-code/README.md +13 -0
- package/integrations/roo-code/manifest-target.json +3 -0
- package/integrations/vscode-copilot/README.md +12 -0
- package/integrations/vscode-copilot/manifest-target.json +3 -0
- package/integrations/windsurf/README.md +13 -0
- package/integrations/windsurf/manifest-target.json +3 -0
- package/library/references/collaborative-protocol/resource.yaml +24 -0
- package/library/references/gd-style/resource.yaml +24 -0
- package/{references → library/references/godot-version}/godot-version.md +6 -6
- package/library/references/godot-version/resource.yaml +22 -0
- package/library/references/headless-routing/headless-routing.md +46 -0
- package/library/references/headless-routing/resource.yaml +24 -0
- package/library/references/mcp-fresh-chat-playbook/mcp-fresh-chat-playbook.md +49 -0
- package/library/references/mcp-fresh-chat-playbook/resource.yaml +23 -0
- package/library/references/mcp-tools-reference/mcp-tools-reference.md +271 -0
- package/library/references/mcp-tools-reference/resource.yaml +17 -0
- package/library/references/product-map/product-map.md +103 -0
- package/library/references/product-map/resource.yaml +33 -0
- package/{references → library/references/public-surface-language}/public-surface-language.md +5 -7
- package/library/references/public-surface-language/resource.yaml +17 -0
- package/library/references/summer-folder/resource.yaml +20 -0
- package/{references → library/references/summer-folder}/summer-folder.md +22 -21
- package/{skills/rendering-and-lighting → library/skills}/3d-lighting/SKILL.md +15 -11
- package/library/skills/3d-lighting/resource.yaml +27 -0
- package/{skills/audio → library/skills}/adaptive-music/SKILL.md +1 -1
- package/library/skills/adaptive-music/resource.yaml +28 -0
- package/library/skills/agent-playtesting/SKILL.md +148 -0
- package/library/skills/agent-playtesting/resource.yaml +52 -0
- package/library/skills/ambient-bed/resource.yaml +24 -0
- package/{skills/video → library/skills}/animated-loop/SKILL.md +1 -1
- package/library/skills/animated-loop/resource.yaml +27 -0
- package/{skills/animation → library/skills}/animation-tree/SKILL.md +29 -14
- package/library/skills/animation-tree/resource.yaml +33 -0
- package/{skills/rendering-and-lighting → library/skills}/art-direction/SKILL.md +3 -3
- package/library/skills/art-direction/resource.yaml +29 -0
- package/{skills/asset-pipeline → library/skills}/asset-strategy/SKILL.md +44 -44
- package/library/skills/asset-strategy/resource.yaml +63 -0
- package/{skills/audio → library/skills}/audio-direction/SKILL.md +7 -7
- package/library/skills/audio-direction/resource.yaml +32 -0
- package/library/skills/auto-fire-targeting/resource.yaml +22 -0
- package/{skills/scene-and-project → library/skills}/brainstorm-game/SKILL.md +8 -8
- package/library/skills/brainstorm-game/resource.yaml +30 -0
- package/{skills/workflow → library/skills}/brainstorming/SKILL.md +2 -22
- package/library/skills/brainstorming/resource.yaml +23 -0
- package/{skills/workflow → library/skills}/brainstorming/spec-document-reviewer-prompt.md +1 -1
- package/{skills/scene-and-project → library/skills}/browse-templates/SKILL.md +18 -18
- package/library/skills/browse-templates/resource.yaml +23 -0
- package/library/skills/celeste-momentum-platforming/SKILL.md +366 -0
- package/library/skills/celeste-momentum-platforming/resource.yaml +33 -0
- package/library/skills/character-animation-wiring/SKILL.md +249 -0
- package/library/skills/character-animation-wiring/resource.yaml +39 -0
- package/{skills/3d-assets → library/skills}/character-model/SKILL.md +25 -25
- package/library/skills/character-model/resource.yaml +36 -0
- package/{skills/2d-assets → library/skills}/character-portrait/SKILL.md +14 -14
- package/library/skills/character-portrait/resource.yaml +30 -0
- package/{skills/video → library/skills}/cinematic-cutscene/SKILL.md +2 -2
- package/library/skills/cinematic-cutscene/resource.yaml +29 -0
- package/{skills/2d-assets → library/skills}/concept-art/SKILL.md +15 -15
- package/library/skills/concept-art/resource.yaml +34 -0
- package/{skills/2d-assets → library/skills}/create-asset-sheet/SKILL.md +8 -8
- package/library/skills/create-asset-sheet/resource.yaml +33 -0
- package/{skills/debugging → library/skills}/debug/SKILL.md +3 -3
- package/library/skills/debug/resource.yaml +31 -0
- package/{skills/workflow → library/skills}/debugging-game-feel/SKILL.md +11 -11
- package/library/skills/debugging-game-feel/resource.yaml +25 -0
- package/{skills/level-design → library/skills}/design-level/SKILL.md +6 -6
- package/library/skills/design-level/resource.yaml +31 -0
- package/{skills/gameplay-mechanics → library/skills}/design-mechanic/SKILL.md +3 -3
- package/library/skills/design-mechanic/resource.yaml +31 -0
- package/{skills/ai-and-npcs → library/skills}/design-npc/SKILL.md +7 -3
- package/library/skills/design-npc/resource.yaml +29 -0
- package/{skills/workflow → library/skills}/diagnosing-perf-regressions/SKILL.md +10 -10
- package/library/skills/diagnosing-perf-regressions/resource.yaml +25 -0
- package/{skills/workflow → library/skills}/dispatching-parallel-agents/SKILL.md +8 -8
- package/library/skills/dispatching-parallel-agents/resource.yaml +23 -0
- package/library/skills/driving-the-editor-ui/SKILL.md +85 -0
- package/library/skills/driving-the-editor-ui/resource.yaml +46 -0
- package/{skills/3d-assets → library/skills}/environment-kit/SKILL.md +11 -11
- package/library/skills/environment-kit/resource.yaml +29 -0
- package/{skills/deployment → library/skills}/export-and-ship/SKILL.md +5 -5
- package/library/skills/export-and-ship/resource.yaml +32 -0
- package/library/skills/fabricating-assets/SKILL.md +195 -0
- package/library/skills/fabricating-assets/resource.yaml +52 -0
- package/{skills/animation → library/skills}/facial-and-lipsync/SKILL.md +23 -11
- package/library/skills/facial-and-lipsync/resource.yaml +36 -0
- package/{skills/character-controllers → library/skills}/fps-controller/SKILL.md +8 -4
- package/library/skills/fps-controller/resource.yaml +29 -0
- package/{skills/visual-effects → library/skills}/game-feel/SKILL.md +7 -7
- package/library/skills/game-feel/resource.yaml +27 -0
- package/library/skills/gameskill/SKILL.md +64 -0
- package/library/skills/gameskill/resource.yaml +22 -0
- package/library/skills/gdscript-patterns/resource.yaml +23 -0
- package/{skills/animation → library/skills}/generate-motion/SKILL.md +16 -16
- package/library/skills/generate-motion/resource.yaml +34 -0
- package/library/skills/godogen-visual-proof-game-generation/SKILL.md +223 -0
- package/library/skills/godogen-visual-proof-game-generation/resource.yaml +33 -0
- package/{skills/workflow → library/skills}/headless-scripting/SKILL.md +14 -7
- package/library/skills/headless-scripting/resource.yaml +26 -0
- package/{skills/multiplayer-and-networking → library/skills}/host-authoritative-state/SKILL.md +1 -1
- package/library/skills/host-authoritative-state/resource.yaml +28 -0
- package/{skills/2d-assets → library/skills}/instantiate-asset-pack/SKILL.md +10 -12
- package/library/skills/instantiate-asset-pack/resource.yaml +29 -0
- package/{skills/workflow → library/skills}/investigating-bugs/SKILL.md +4 -4
- package/{skills/workflow → library/skills}/investigating-bugs/condition-based-waiting.md +8 -8
- package/library/skills/investigating-bugs/resource.yaml +24 -0
- package/{skills/workflow → library/skills}/investigating-bugs/root-cause-tracing.md +1 -7
- package/library/skills/lumera-single-image-scene-reconstruction/SKILL.md +164 -0
- package/library/skills/lumera-single-image-scene-reconstruction/resource.yaml +35 -0
- package/{skills/scene-and-project → library/skills}/make-game/SKILL.md +23 -23
- package/library/skills/make-game/resource.yaml +35 -0
- package/library/skills/music-track/resource.yaml +28 -0
- package/library/skills/navigate-summer/SKILL.md +61 -0
- package/library/skills/navigate-summer/resource.yaml +35 -0
- package/{skills/scene-and-project → library/skills}/new-project/SKILL.md +10 -10
- package/library/skills/new-project/resource.yaml +28 -0
- package/{skills/3d-assets → library/skills}/organic-model/SKILL.md +16 -16
- package/library/skills/organic-model/resource.yaml +32 -0
- package/{skills/multiplayer-and-networking → library/skills}/peer-to-peer-multiplayer/SKILL.md +2 -2
- package/library/skills/peer-to-peer-multiplayer/resource.yaml +28 -0
- package/{skills/2d-assets → library/skills}/pixel-art/SKILL.md +13 -13
- package/library/skills/pixel-art/resource.yaml +31 -0
- package/library/skills/play/resource.yaml +26 -0
- package/{skills/workflow → library/skills}/playtesting-a-feature/SKILL.md +41 -22
- package/library/skills/playtesting-a-feature/resource.yaml +31 -0
- package/{skills/animation → library/skills}/procedural-animation/SKILL.md +25 -10
- package/library/skills/procedural-animation/resource.yaml +33 -0
- package/{skills/3d-assets → library/skills}/prop-model/SKILL.md +13 -13
- package/library/skills/prop-model/resource.yaml +33 -0
- package/library/skills/psx-retro-rendering/SKILL.md +416 -0
- package/library/skills/psx-retro-rendering/resource.yaml +36 -0
- package/library/skills/realtime-wet-surfaces/SKILL.md +189 -0
- package/library/skills/realtime-wet-surfaces/resource.yaml +31 -0
- package/{skills/deployment → library/skills}/remote-deploy/SKILL.md +3 -3
- package/library/skills/remote-deploy/resource.yaml +23 -0
- package/{skills/animation → library/skills}/retarget/SKILL.md +15 -14
- package/library/skills/retarget/resource.yaml +33 -0
- package/library/skills/running-in-the-cloud/SKILL.md +103 -0
- package/library/skills/running-in-the-cloud/resource.yaml +33 -0
- package/{skills/scene-and-project → library/skills}/scene-composition/SKILL.md +9 -1
- package/library/skills/scene-composition/resource.yaml +27 -0
- package/library/skills/scene-hierarchy-design/SKILL.md +102 -0
- package/library/skills/scene-hierarchy-design/resource.yaml +31 -0
- package/library/skills/scene-scripting/SKILL.md +764 -0
- package/library/skills/scene-scripting/resource.yaml +58 -0
- package/{skills/level-design → library/skills}/scene-to-level/SKILL.md +16 -17
- package/library/skills/scene-to-level/resource.yaml +33 -0
- package/{skills/multiplayer-and-networking → library/skills}/setup-multiplayer/SKILL.md +1 -1
- package/library/skills/setup-multiplayer/resource.yaml +28 -0
- package/library/skills/skill-create/SKILL.md +138 -0
- package/library/skills/skill-create/resource.yaml +25 -0
- package/{skills/workflow → library/skills}/skill-improve/SKILL.md +2 -2
- package/library/skills/skill-improve/resource.yaml +25 -0
- package/{skills/workflow → library/skills}/skill-test/SKILL.md +4 -4
- package/library/skills/skill-test/resource.yaml +26 -0
- package/library/skills/skintokens-auto-rigging/SKILL.md +200 -0
- package/library/skills/skintokens-auto-rigging/resource.yaml +38 -0
- package/{skills/2d-assets → library/skills}/skybox-panorama/SKILL.md +8 -8
- package/library/skills/skybox-panorama/resource.yaml +28 -0
- package/{skills/audio → library/skills}/sound-effect/SKILL.md +2 -2
- package/library/skills/sound-effect/resource.yaml +27 -0
- package/library/skills/spatial-placement/SKILL.md +74 -0
- package/library/skills/spatial-placement/resource.yaml +42 -0
- package/library/skills/spatial-placement/tests/spec.md +65 -0
- package/{skills/2d-assets → library/skills}/sprite-sheet/SKILL.md +12 -12
- package/library/skills/sprite-sheet/resource.yaml +32 -0
- package/{skills/2d-assets → library/skills}/tileable-texture/SKILL.md +9 -9
- package/library/skills/tileable-texture/resource.yaml +31 -0
- package/{skills/video → library/skills}/trailer-shot/SKILL.md +1 -1
- package/library/skills/trailer-shot/resource.yaml +27 -0
- package/{skills/performance → library/skills}/tune-performance/SKILL.md +6 -6
- package/library/skills/tune-performance/resource.yaml +31 -0
- package/{skills/ui-and-ux → library/skills}/ui-basics/SKILL.md +1 -1
- package/library/skills/ui-basics/resource.yaml +25 -0
- package/{skills/2d-assets → library/skills}/ui-graphics/SKILL.md +11 -11
- package/library/skills/ui-graphics/resource.yaml +29 -0
- package/{skills/2d-assets → library/skills}/use-widget-asset/SKILL.md +4 -4
- package/library/skills/use-widget-asset/resource.yaml +29 -0
- package/{skills/workflow → library/skills}/using-summer/SKILL.md +12 -9
- package/library/skills/using-summer/resource.yaml +41 -0
- package/{skills/3d-assets → library/skills}/vehicle-model/SKILL.md +18 -18
- package/library/skills/vehicle-model/resource.yaml +34 -0
- package/{skills/workflow → library/skills}/verification-before-completion/SKILL.md +10 -10
- package/library/skills/verification-before-completion/resource.yaml +23 -0
- package/library/skills/verifying-scenes/SKILL.md +98 -0
- package/library/skills/verifying-scenes/resource.yaml +42 -0
- package/{skills/visual-effects/recipes/dissolve → library/skills/vfx-dissolve}/SKILL.md +31 -11
- package/library/skills/vfx-dissolve/resource.yaml +33 -0
- package/{skills/visual-effects/recipes/fire → library/skills/vfx-fire}/SKILL.md +43 -12
- package/library/skills/vfx-fire/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
- package/library/skills/vfx-fire/resource.yaml +35 -0
- package/{skills/visual-effects/recipes/hit-spark → library/skills/vfx-hit-spark}/SKILL.md +16 -10
- package/library/skills/vfx-hit-spark/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-hit-spark/resource.yaml +34 -0
- package/{skills/visual-effects/recipes/lightning → library/skills/vfx-lightning}/SKILL.md +24 -11
- package/library/skills/vfx-lightning/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-lightning/resource.yaml +33 -0
- package/{skills/visual-effects/recipes/magic-glow → library/skills/vfx-magic-glow}/SKILL.md +31 -11
- package/library/skills/vfx-magic-glow/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-magic-glow/resource.yaml +34 -0
- package/{skills/visual-effects/recipes/muzzle-flash → library/skills/vfx-muzzle-flash}/SKILL.md +29 -9
- package/library/skills/vfx-muzzle-flash/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-muzzle-flash/_building-blocks/trauma-shake-snippet.md +53 -0
- package/library/skills/vfx-muzzle-flash/resource.yaml +35 -0
- package/{skills/visual-effects/recipes/smoke → library/skills/vfx-smoke}/SKILL.md +35 -9
- package/library/skills/vfx-smoke/_building-blocks/noise-3d-fbm.gdshaderinc +45 -0
- package/library/skills/vfx-smoke/resource.yaml +32 -0
- package/{skills/visual-effects/recipes/water-ripple → library/skills/vfx-water-ripple}/SKILL.md +31 -9
- package/library/skills/vfx-water-ripple/_building-blocks/additive-billboard-particles.md +37 -0
- package/library/skills/vfx-water-ripple/resource.yaml +31 -0
- package/library/skills/voice-line/resource.yaml +27 -0
- package/library/skills/world-building-3d/SKILL.md +105 -0
- package/library/skills/world-building-3d/references/spatial-tools.md +50 -0
- package/library/skills/world-building-3d/resource.yaml +44 -0
- package/library/skills/world-building-3d/tests/spec.md +48 -0
- package/{skills/workflow → library/skills}/writing-plans/SKILL.md +19 -14
- package/library/skills/writing-plans/resource.yaml +23 -0
- package/{skills/workflow → library/skills}/writing-skills/SKILL.md +38 -44
- package/library/skills/writing-skills/resource.yaml +29 -0
- package/{skills/workflow → library/skills}/writing-skills/testing-skills-with-subagents.md +13 -14
- package/library/templates/2d-brario-platformer/resource.yaml +21 -0
- package/library/templates/2d-dungeon-roguelike/resource.yaml +23 -0
- package/library/templates/2d-grid-puzzle/resource.yaml +21 -0
- package/library/templates/2d-plants-and-zombies-tower-defense/resource.yaml +21 -0
- package/library/templates/2d-platformer/resource.yaml +24 -0
- package/library/templates/2d-rpg/resource.yaml +21 -0
- package/library/templates/2d-vampire-survivor-roguelike/resource.yaml +21 -0
- package/library/templates/3d-basic/resource.yaml +16 -0
- package/library/templates/3d-city-kit/resource.yaml +24 -0
- package/library/templates/3d-fps-old-school/resource.yaml +21 -0
- package/library/templates/3d-fps-simple-animated-npc/resource.yaml +21 -0
- package/library/templates/3d-lan-multiplayer-starter/resource.yaml +22 -0
- package/library/templates/3d-open-world-explore-tps/resource.yaml +21 -0
- package/library/templates/3d-procedural-road-world/resource.yaml +21 -0
- package/library/templates/3d-racing-game/resource.yaml +21 -0
- package/library/templates/3d-royale-clash-type/resource.yaml +21 -0
- package/library/templates/3d-third-person-controller/resource.yaml +21 -0
- package/library/templates/3d-voxel-sandbox/resource.yaml +24 -0
- package/library/templates/README.md +94 -0
- package/library/templates/empty/resource.yaml +16 -0
- package/library/tools/add-node/resource.yaml +60 -0
- package/library/tools/align-distribute-3d/resource.yaml +87 -0
- package/library/tools/api-docs/resource.yaml +57 -0
- package/library/tools/batch/resource.yaml +52 -0
- package/library/tools/camera-bookmark/resource.yaml +73 -0
- package/library/tools/check-job/resource.yaml +45 -0
- package/library/tools/clear-console/resource.yaml +40 -0
- package/library/tools/connect-signal/resource.yaml +63 -0
- package/library/tools/create-debug-report/resource.yaml +67 -0
- package/library/tools/create-scene/resource.yaml +59 -0
- package/library/tools/creator-config/resource.yaml +63 -0
- package/library/tools/creator-publish/resource.yaml +73 -0
- package/library/tools/creator-releases/resource.yaml +53 -0
- package/library/tools/fabricate-3d/resource.yaml +108 -0
- package/library/tools/game-control/resource.yaml +84 -0
- package/library/tools/game-input/resource.yaml +159 -0
- package/library/tools/game-probe/resource.yaml +90 -0
- package/library/tools/generate-3d/resource.yaml +112 -0
- package/library/tools/generate-audio/resource.yaml +80 -0
- package/library/tools/generate-image/resource.yaml +62 -0
- package/library/tools/generate-motion/resource.yaml +66 -0
- package/library/tools/generate-video/resource.yaml +66 -0
- package/library/tools/get-agent-playbook/resource.yaml +40 -0
- package/library/tools/get-asset/resource.yaml +42 -0
- package/library/tools/get-asset-download-url/resource.yaml +52 -0
- package/library/tools/get-console/resource.yaml +69 -0
- package/library/tools/get-debugger-errors/resource.yaml +56 -0
- package/library/tools/get-debugger-warnings/resource.yaml +52 -0
- package/library/tools/get-diagnostics/resource.yaml +42 -0
- package/library/tools/get-project-context/resource.yaml +45 -0
- package/library/tools/get-runtime-tree/resource.yaml +62 -0
- package/library/tools/get-scene-tree/resource.yaml +52 -0
- package/library/tools/get-script-errors/resource.yaml +45 -0
- package/library/tools/get-studio-workflow/resource.yaml +43 -0
- package/library/tools/import-asset/resource.yaml +73 -0
- package/library/tools/import-asset-by-id/resource.yaml +56 -0
- package/library/tools/import-from-url/resource.yaml +51 -0
- package/library/tools/import-from-url-batch/resource.yaml +60 -0
- package/library/tools/import-hdri/resource.yaml +69 -0
- package/library/tools/input-map-bind/resource.yaml +52 -0
- package/library/tools/inspect-node/resource.yaml +46 -0
- package/library/tools/inspect-resource/resource.yaml +45 -0
- package/library/tools/inspect-runtime-node/resource.yaml +54 -0
- package/library/tools/instantiate-scene/resource.yaml +62 -0
- package/library/tools/is-running/resource.yaml +40 -0
- package/library/tools/library-feedback/resource.yaml +89 -0
- package/library/tools/list-my-assets/resource.yaml +56 -0
- package/library/tools/navigation-probe/resource.yaml +85 -0
- package/library/tools/open/resource.yaml +80 -0
- package/library/tools/open-main-scene/resource.yaml +40 -0
- package/library/tools/open-scene/resource.yaml +46 -0
- package/library/tools/play/resource.yaml +91 -0
- package/library/tools/project-setting/resource.yaml +53 -0
- package/library/tools/read-file/resource.yaml +47 -0
- package/library/tools/read-library/resource.yaml +67 -0
- package/library/tools/recent-events/resource.yaml +71 -0
- package/library/tools/remove-node/resource.yaml +51 -0
- package/library/tools/replace-node/resource.yaml +57 -0
- package/library/tools/replace-text/resource.yaml +61 -0
- package/library/tools/run-editor-script/resource.yaml +61 -0
- package/library/tools/run-script/resource.yaml +73 -0
- package/library/tools/runtime-animate/resource.yaml +140 -0
- package/library/tools/runtime-call/resource.yaml +74 -0
- package/library/tools/runtime-set/resource.yaml +80 -0
- package/library/tools/runtime-spawn/resource.yaml +95 -0
- package/library/tools/save-scene/resource.yaml +50 -0
- package/library/tools/screenshot/resource.yaml +112 -0
- package/library/tools/search-assets/resource.yaml +67 -0
- package/library/tools/search-library/resource.yaml +81 -0
- package/library/tools/select-node/resource.yaml +48 -0
- package/library/tools/set-prop/resource.yaml +64 -0
- package/library/tools/set-resource-property/resource.yaml +66 -0
- package/library/tools/slice-asset-sheet/resource.yaml +47 -0
- package/library/tools/snap-to-surface/resource.yaml +90 -0
- package/library/tools/snapshot-diff/resource.yaml +58 -0
- package/library/tools/starcast/resource.yaml +120 -0
- package/library/tools/start-game-task/resource.yaml +91 -0
- package/library/tools/stop/resource.yaml +51 -0
- package/library/tools/test-placement/resource.yaml +109 -0
- package/library/tools/ui-actions/resource.yaml +77 -0
- package/library/tools/ui-activate/resource.yaml +88 -0
- package/library/tools/ui-screenshot/resource.yaml +63 -0
- package/library/tools/ui-tree/resource.yaml +69 -0
- package/library/tools/wait-for-event/resource.yaml +84 -0
- package/library/tools/world-snapshot/resource.yaml +60 -0
- package/library/tools/write-file/resource.yaml +54 -0
- package/package.json +22 -16
- package/registry/generated/aliases.json +207 -0
- package/registry/generated/counts.json +12 -0
- package/registry/generated/gemini-extension.json +122 -0
- package/registry/generated/index.json +7709 -0
- package/registry/generated/marketplace.claude.json +44 -0
- package/registry/generated/mcp.json +13 -0
- package/registry/generated/plugin.claude.json +135 -0
- package/registry/generated/plugin.codex.json +144 -0
- package/registry/generated/plugin.cursor.json +134 -0
- package/registry/generated/plugin.factory.json +117 -0
- package/registry/generated/skills-registry.json +851 -0
- package/registry/generated/templates-registry.json +455 -0
- package/registry/schemas/allowed-hosts.json +19 -0
- package/registry/schemas/collection.schema.json +68 -0
- package/registry/schemas/domains.json +96 -0
- package/registry/schemas/example.schema.json +11 -0
- package/registry/schemas/reference.schema.json +10 -0
- package/registry/schemas/resource.schema.json +154 -0
- package/registry/schemas/skill.schema.json +14 -0
- package/registry/schemas/template.schema.json +46 -0
- package/registry/schemas/tool.schema.json +61 -0
- package/_persona/summer/SKILL.md +0 -113
- package/dist/bin/postinstall.d.ts +0 -2
- package/dist/bin/postinstall.js +0 -3
- package/dist/commands/cloud.d.ts +0 -2
- package/dist/commands/cloud.js +0 -80
- package/dist/commands/create.d.ts +0 -3
- package/dist/commands/create.js +0 -171
- package/dist/commands/install.d.ts +0 -19
- package/dist/commands/install.js +0 -194
- package/dist/commands/list.js +0 -67
- package/dist/commands/logout.js +0 -13
- package/dist/commands/logs.d.ts +0 -2
- package/dist/commands/logs.js +0 -19
- package/dist/commands/open.d.ts +0 -2
- package/dist/commands/open.js +0 -32
- package/dist/commands/orchestrator.d.ts +0 -8
- package/dist/commands/orchestrator.js +0 -143
- package/dist/commands/run.d.ts +0 -2
- package/dist/commands/run.js +0 -167
- package/dist/commands/status.js +0 -46
- package/dist/lib/banner.d.ts +0 -4
- package/dist/lib/banner.js +0 -122
- package/dist/lib/cloud/api.d.ts +0 -79
- package/dist/lib/cloud/api.js +0 -107
- package/dist/lib/cloud/apply.d.ts +0 -32
- package/dist/lib/cloud/apply.js +0 -294
- package/dist/lib/cloud/checkpoint.d.ts +0 -26
- package/dist/lib/cloud/checkpoint.js +0 -142
- package/dist/lib/cloud/conflicts.d.ts +0 -55
- package/dist/lib/cloud/conflicts.js +0 -131
- package/dist/lib/cloud/containment.d.ts +0 -8
- package/dist/lib/cloud/containment.js +0 -52
- package/dist/lib/cloud/diff.d.ts +0 -39
- package/dist/lib/cloud/diff.js +0 -138
- package/dist/lib/cloud/engine-bridge.d.ts +0 -34
- package/dist/lib/cloud/engine-bridge.js +0 -139
- package/dist/lib/cloud/hash-cache.d.ts +0 -23
- package/dist/lib/cloud/hash-cache.js +0 -44
- package/dist/lib/cloud/hash.d.ts +0 -10
- package/dist/lib/cloud/hash.js +0 -111
- package/dist/lib/cloud/http.d.ts +0 -17
- package/dist/lib/cloud/http.js +0 -47
- package/dist/lib/cloud/lock-path.d.ts +0 -1
- package/dist/lib/cloud/lock-path.js +0 -5
- package/dist/lib/cloud/lock.d.ts +0 -14
- package/dist/lib/cloud/lock.js +0 -143
- package/dist/lib/cloud/manifest.d.ts +0 -6
- package/dist/lib/cloud/manifest.js +0 -41
- package/dist/lib/cloud/paths.d.ts +0 -20
- package/dist/lib/cloud/paths.js +0 -90
- package/dist/lib/cloud/project-godot-merge.d.ts +0 -32
- package/dist/lib/cloud/project-godot-merge.js +0 -185
- package/dist/lib/cloud/rules.d.ts +0 -39
- package/dist/lib/cloud/rules.js +0 -159
- package/dist/lib/cloud/sync.d.ts +0 -21
- package/dist/lib/cloud/sync.js +0 -518
- package/dist/lib/cloud/transfer.d.ts +0 -23
- package/dist/lib/cloud/transfer.js +0 -184
- package/dist/lib/cloud/types.d.ts +0 -62
- package/dist/lib/cloud/types.js +0 -1
- package/dist/lib/cloud/validate-path.d.ts +0 -23
- package/dist/lib/cloud/validate-path.js +0 -103
- package/dist/lib/engine.d.ts +0 -51
- package/dist/lib/game-task-plan.d.ts +0 -42
- package/dist/lib/project-memory.d.ts +0 -33
- package/dist/lib/public-surface-paths.d.ts +0 -13
- package/dist/lib/public-surface-paths.js +0 -42
- package/dist/lib/remote-templates.d.ts +0 -25
- package/dist/lib/remote-templates.js +0 -86
- package/dist/lib/skills-registry.d.ts +0 -572
- package/dist/lib/skills-registry.js +0 -1061
- package/dist/lib/version-check.d.ts +0 -106
- package/dist/mcp/tools/cloud-tools.js +0 -42
- package/references/mcp-tools-reference.md +0 -199
- package/references/template-registry.md +0 -73
- package/skills/README.md +0 -103
- package/skills/scene-and-project/summer-cloud/SKILL.md +0 -92
- package/skills/workflow/brainstorming/scripts/frame-template.html +0 -214
- package/skills/workflow/brainstorming/scripts/helper.js +0 -88
- package/skills/workflow/brainstorming/scripts/server.cjs +0 -354
- package/skills/workflow/brainstorming/scripts/start-server.sh +0 -148
- package/skills/workflow/brainstorming/scripts/stop-server.sh +0 -56
- package/skills/workflow/brainstorming/visual-companion.md +0 -287
- package/skills/workflow/gameskill/SKILL.md +0 -120
- package/skills/workflow/investigating-bugs/CREATION-LOG.md +0 -119
- package/skills/workflow/investigating-bugs/condition-based-waiting-example.ts +0 -158
- package/skills/workflow/investigating-bugs/find-polluter.sh +0 -63
- package/skills/workflow/investigating-bugs/test-academic.md +0 -14
- package/skills/workflow/investigating-bugs/test-pressure-1.md +0 -58
- package/skills/workflow/investigating-bugs/test-pressure-2.md +0 -68
- package/skills/workflow/investigating-bugs/test-pressure-3.md +0 -69
- package/skills/workflow/mcpupdate/SKILL.md +0 -134
- package/skills/workflow/skill-create/SKILL.md +0 -153
- package/skills/workflow/writing-skills/anthropic-best-practices.md +0 -1150
- package/skills/workflow/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -189
- package/skills/workflow/writing-skills/graphviz-conventions.dot +0 -172
- package/skills/workflow/writing-skills/persuasion-principles.md +0 -187
- package/skills/workflow/writing-skills/render-graphs.js +0 -168
- /package/dist/{commands → cli/commands}/config.d.ts +0 -0
- /package/dist/{commands → cli/commands}/debug.d.ts +0 -0
- /package/dist/{commands → cli/commands}/list.d.ts +0 -0
- /package/dist/{commands → cli/commands}/login.d.ts +0 -0
- /package/dist/{commands → cli/commands}/plan.d.ts +0 -0
- /package/dist/{commands → cli/commands}/publish.d.ts +0 -0
- /package/dist/{commands → cli/commands}/releases.d.ts +0 -0
- /package/dist/{commands → cli/commands}/setup.d.ts +0 -0
- /package/dist/{commands → cli/commands}/skills.d.ts +0 -0
- /package/dist/{lib → core}/log-filters.d.ts +0 -0
- /package/dist/{lib → core}/mcp-log.d.ts +0 -0
- /package/dist/{lib → core}/store.d.ts +0 -0
- /package/dist/{lib → core}/summer-compatibility.d.ts +0 -0
- /package/dist/{lib → core}/telemetry.d.ts +0 -0
- /package/dist/{lib/mcp-boot-notice.js → mcp/boot-notice.js} +0 -0
- /package/dist/{commands/mcp.d.ts → mcp/command.d.ts} +0 -0
- /package/{references → library/references/collaborative-protocol}/collaborative-protocol.md +0 -0
- /package/{references → library/references/gd-style}/gd-style.md +0 -0
- /package/{skills/audio → library/skills}/ambient-bed/SKILL.md +0 -0
- /package/{skills/gameplay-mechanics → library/skills}/auto-fire-targeting/SKILL.md +0 -0
- /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/SKILL.md +0 -0
- /package/{skills/scripting-patterns → library/skills}/gdscript-patterns/reference.md +0 -0
- /package/{skills/workflow → library/skills}/investigating-bugs/defense-in-depth.md +0 -0
- /package/{skills/audio → library/skills}/music-track/SKILL.md +0 -0
- /package/{skills/scene-and-project → library/skills}/play/SKILL.md +0 -0
- /package/{skills/visual-effects → library/skills/vfx-dissolve}/_building-blocks/noise-3d-fbm.gdshaderinc +0 -0
- /package/{skills/visual-effects → library/skills/vfx-fire}/_building-blocks/additive-billboard-particles.md +0 -0
- /package/{skills/visual-effects → library/skills/vfx-lightning}/_building-blocks/trauma-shake-snippet.md +0 -0
- /package/{skills/audio → library/skills}/voice-line/SKILL.md +0 -0
- /package/{skills/workflow → library/skills}/writing-plans/plan-document-reviewer-prompt.md +0 -0
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { appendFileSync, mkdirSync, readdirSync, renameSync, rmSync, statSync, } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
/**
|
|
5
|
+
* Local, opt-in trajectory capture.
|
|
6
|
+
*
|
|
7
|
+
* When SUMMER_TRAJECTORY_DIR is set, every MCP tool call appends ONE JSONL
|
|
8
|
+
* record ({ts, kind, tool, argsRedacted, ok, terminalState, errorClass,
|
|
9
|
+
* failureReason, durationMs}) to <dir>/trajectory.jsonl. Local only — nothing
|
|
10
|
+
* here talks to a network. Outcome signals ride the same stream: a
|
|
11
|
+
* summer_library_feedback call is itself a tool call, so its outcome enums land
|
|
12
|
+
* here next to the calls they judge (report notes are short enough to survive
|
|
13
|
+
* redaction).
|
|
14
|
+
*
|
|
15
|
+
* Hard requirements, in priority order:
|
|
16
|
+
* 1. OFF BY DEFAULT — with the env var unset this module is a no-op with
|
|
17
|
+
* zero behavior change.
|
|
18
|
+
* 2. NEVER THROWS — capture must never break a tool call. Every fs
|
|
19
|
+
* operation is wrapped; failures are swallowed (a diagnostics stream is
|
|
20
|
+
* not worth failing real work over).
|
|
21
|
+
* 3. BOUNDED — script/content bodies are redacted to shape (strings over
|
|
22
|
+
* 200 chars are replaced with a length marker) and the stream rotates at
|
|
23
|
+
* 16MB, keeping the last 4 rotated files.
|
|
24
|
+
*
|
|
25
|
+
* Eval mode (opt-in on top of the above, for eval fixtures only): when BOTH
|
|
26
|
+
* SUMMER_TRAJECTORY_DIR and SUMMER_TRAJECTORY_EVAL=1 are set, every call is
|
|
27
|
+
* additionally appended UNREDACTED to <dir>/trajectory.full.jsonl — full args
|
|
28
|
+
* plus a bounded result summary (ok/classifiers, top-level result keys, an
|
|
29
|
+
* allowlist of scalar confession fields, media by hash) — so a recorded
|
|
30
|
+
* session can be REPLAYED and its perception calls judged for honesty. The
|
|
31
|
+
* redacted stream is written unchanged alongside; the eval flag without the
|
|
32
|
+
* directory does nothing. No result bodies, no image bytes, ever.
|
|
33
|
+
*/
|
|
34
|
+
const TRAJECTORY_FILE = "trajectory.jsonl";
|
|
35
|
+
const TRAJECTORY_FULL_FILE = "trajectory.full.jsonl";
|
|
36
|
+
const ROTATED_PATTERN = /^trajectory-\d+\.jsonl$/;
|
|
37
|
+
const ROTATED_FULL_PATTERN = /^trajectory\.full-\d+\.jsonl$/;
|
|
38
|
+
const MAX_FILE_BYTES = 16 * 1024 * 1024;
|
|
39
|
+
const ROTATED_KEEP = 4;
|
|
40
|
+
const REDACT_STRING_LIMIT = 200;
|
|
41
|
+
const REDACT_MAX_DEPTH = 6;
|
|
42
|
+
const REDACT_MAX_ENTRIES = 64;
|
|
43
|
+
const FULL_MAX_KEYS = 32;
|
|
44
|
+
export const TRAJECTORY_EVAL_ENV = "SUMMER_TRAJECTORY_EVAL";
|
|
45
|
+
export function getTrajectoryDir() {
|
|
46
|
+
const dir = process.env.SUMMER_TRAJECTORY_DIR;
|
|
47
|
+
return typeof dir === "string" && dir.trim().length > 0 ? dir.trim() : null;
|
|
48
|
+
}
|
|
49
|
+
/** True only when capture is on AND the eval flag is set — the flag alone
|
|
50
|
+
* does nothing (design rule: eval mode never changes the default). */
|
|
51
|
+
export function isTrajectoryEvalMode(env = process.env) {
|
|
52
|
+
const dir = env.SUMMER_TRAJECTORY_DIR;
|
|
53
|
+
if (typeof dir !== "string" || dir.trim().length === 0)
|
|
54
|
+
return false;
|
|
55
|
+
const raw = env[TRAJECTORY_EVAL_ENV]?.trim().toLowerCase();
|
|
56
|
+
return raw === "1" || raw === "true";
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Keep the SHAPE of a tool call's arguments, drop the bodies: any string over
|
|
60
|
+
* REDACT_STRING_LIMIT chars (script sources, file contents, notes pasted in)
|
|
61
|
+
* becomes a "[redacted N chars]" marker. Objects/arrays are walked with depth
|
|
62
|
+
* and entry caps so a pathological payload cannot balloon the record.
|
|
63
|
+
* Exported for unit tests.
|
|
64
|
+
*/
|
|
65
|
+
export function redactTrajectoryArgs(value, depth = 0) {
|
|
66
|
+
if (typeof value === "string") {
|
|
67
|
+
return value.length > REDACT_STRING_LIMIT
|
|
68
|
+
? `[redacted ${value.length} chars]`
|
|
69
|
+
: value;
|
|
70
|
+
}
|
|
71
|
+
if (value === null || typeof value !== "object")
|
|
72
|
+
return value;
|
|
73
|
+
if (depth >= REDACT_MAX_DEPTH)
|
|
74
|
+
return "[redacted: depth]";
|
|
75
|
+
if (Array.isArray(value)) {
|
|
76
|
+
const out = value
|
|
77
|
+
.slice(0, REDACT_MAX_ENTRIES)
|
|
78
|
+
.map((entry) => redactTrajectoryArgs(entry, depth + 1));
|
|
79
|
+
if (value.length > REDACT_MAX_ENTRIES) {
|
|
80
|
+
out.push(`[redacted ${value.length - REDACT_MAX_ENTRIES} more entries]`);
|
|
81
|
+
}
|
|
82
|
+
return out;
|
|
83
|
+
}
|
|
84
|
+
const out = {};
|
|
85
|
+
let entries = 0;
|
|
86
|
+
for (const [key, nested] of Object.entries(value)) {
|
|
87
|
+
if (entries >= REDACT_MAX_ENTRIES) {
|
|
88
|
+
out["[redacted]"] = "more keys";
|
|
89
|
+
break;
|
|
90
|
+
}
|
|
91
|
+
out[key] = redactTrajectoryArgs(nested, depth + 1);
|
|
92
|
+
entries += 1;
|
|
93
|
+
}
|
|
94
|
+
return out;
|
|
95
|
+
}
|
|
96
|
+
function rotateIfNeeded(dir, path, rotatedBase, rotatedPattern) {
|
|
97
|
+
// Best-effort; a rotation failure must not block the append (which itself
|
|
98
|
+
// is best-effort). statSync throws when the file does not exist yet.
|
|
99
|
+
try {
|
|
100
|
+
if (statSync(path).size < MAX_FILE_BYTES)
|
|
101
|
+
return;
|
|
102
|
+
renameSync(path, join(dir, `${rotatedBase}-${Date.now()}.jsonl`));
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
try {
|
|
108
|
+
const rotated = readdirSync(dir)
|
|
109
|
+
.filter((name) => rotatedPattern.test(name))
|
|
110
|
+
.sort();
|
|
111
|
+
for (const stale of rotated.slice(0, Math.max(0, rotated.length - ROTATED_KEEP))) {
|
|
112
|
+
rmSync(join(dir, stale), { force: true });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
// Old rotations linger; the next rotation retries the cleanup.
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/** Append one record to a stream file. Returns false (and stays silent) when
|
|
120
|
+
* capture is off or any fs operation fails — never throws. */
|
|
121
|
+
function appendRecordTo(fileName, rotatedBase, rotatedPattern, record) {
|
|
122
|
+
const dir = getTrajectoryDir();
|
|
123
|
+
if (!dir)
|
|
124
|
+
return false;
|
|
125
|
+
try {
|
|
126
|
+
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
127
|
+
const path = join(dir, fileName);
|
|
128
|
+
rotateIfNeeded(dir, path, rotatedBase, rotatedPattern);
|
|
129
|
+
appendFileSync(path, `${JSON.stringify({ ts: new Date().toISOString(), ...record })}\n`, {
|
|
130
|
+
encoding: "utf-8",
|
|
131
|
+
mode: 0o600,
|
|
132
|
+
});
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function appendRecord(record) {
|
|
140
|
+
return appendRecordTo(TRAJECTORY_FILE, "trajectory", ROTATED_PATTERN, record);
|
|
141
|
+
}
|
|
142
|
+
function appendFullRecord(record) {
|
|
143
|
+
return appendRecordTo(TRAJECTORY_FULL_FILE, "trajectory.full", ROTATED_FULL_PATTERN, record);
|
|
144
|
+
}
|
|
145
|
+
// ---------------------------------------------------------------------------
|
|
146
|
+
// Eval-mode result summary (design §6.3): shape and confession fields only.
|
|
147
|
+
// ---------------------------------------------------------------------------
|
|
148
|
+
/** The complete set of result scalars the full stream may carry. Anything
|
|
149
|
+
* else in a result body stays out — the stream records that a perception
|
|
150
|
+
* call happened and what it confessed, never what it saw. */
|
|
151
|
+
export const TRAJECTORY_RESULT_FIELD_ALLOWLIST = [
|
|
152
|
+
"snapshot_id",
|
|
153
|
+
"from_id",
|
|
154
|
+
"to_id",
|
|
155
|
+
"framing",
|
|
156
|
+
"used_scene_camera",
|
|
157
|
+
"environment_used",
|
|
158
|
+
"used_synthetic_camera",
|
|
159
|
+
"rolled_back",
|
|
160
|
+
"budget_exceeded",
|
|
161
|
+
];
|
|
162
|
+
function isRecord(value) {
|
|
163
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
164
|
+
}
|
|
165
|
+
/** Pull the JSON payload + media out of a tool result. Handles the MCP
|
|
166
|
+
* content shape ({content:[text|image|audio blocks]}) and the plain object a
|
|
167
|
+
* CLI-face dispatch returns. */
|
|
168
|
+
function unwrapResult(result) {
|
|
169
|
+
const media = [];
|
|
170
|
+
if (isRecord(result) && Array.isArray(result.content)) {
|
|
171
|
+
let payload = null;
|
|
172
|
+
for (const block of result.content) {
|
|
173
|
+
if (!isRecord(block))
|
|
174
|
+
continue;
|
|
175
|
+
if ((block.type === "image" || block.type === "audio") && typeof block.data === "string") {
|
|
176
|
+
const bytes = Buffer.from(block.data, "base64");
|
|
177
|
+
media.push({
|
|
178
|
+
mime: typeof block.mimeType === "string" ? block.mimeType : "application/octet-stream",
|
|
179
|
+
bytes: bytes.byteLength,
|
|
180
|
+
sha256: createHash("sha256").update(bytes).digest("hex"),
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
else if (block.type === "text" && typeof block.text === "string" && payload === null) {
|
|
184
|
+
try {
|
|
185
|
+
const parsed = JSON.parse(block.text);
|
|
186
|
+
if (isRecord(parsed))
|
|
187
|
+
payload = parsed;
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
// A prose text block has no keys to record.
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return { payload, media };
|
|
195
|
+
}
|
|
196
|
+
return { payload: isRecord(result) ? result : null, media };
|
|
197
|
+
}
|
|
198
|
+
function collectAllowlisted(source, into) {
|
|
199
|
+
if (!source)
|
|
200
|
+
return;
|
|
201
|
+
for (const key of TRAJECTORY_RESULT_FIELD_ALLOWLIST) {
|
|
202
|
+
if (key in into)
|
|
203
|
+
continue;
|
|
204
|
+
const value = source[key];
|
|
205
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean")
|
|
206
|
+
into[key] = value;
|
|
207
|
+
}
|
|
208
|
+
if (!("errors_count" in into) && Array.isArray(source.errors))
|
|
209
|
+
into.errors_count = source.errors.length;
|
|
210
|
+
const warnings = Array.isArray(source.frame_warnings)
|
|
211
|
+
? source.frame_warnings
|
|
212
|
+
: isRecord(source.results) && Array.isArray(source.results.frame_warnings)
|
|
213
|
+
? source.results.frame_warnings
|
|
214
|
+
: null;
|
|
215
|
+
if (!("frame_warnings_count" in into) && warnings)
|
|
216
|
+
into.frame_warnings_count = warnings.length;
|
|
217
|
+
}
|
|
218
|
+
/** Bounded, allowlisted summary of a tool result. Exported for unit tests and
|
|
219
|
+
* for the outcome-eval runner, which records replayed calls through the same
|
|
220
|
+
* function so a replay run yields the same stream shape a live session does. */
|
|
221
|
+
export function summarizeToolResult(result, classifiers) {
|
|
222
|
+
const { payload, media } = unwrapResult(result);
|
|
223
|
+
const keys = payload ? Object.keys(payload).slice(0, FULL_MAX_KEYS) : [];
|
|
224
|
+
const fields = {};
|
|
225
|
+
collectAllowlisted(payload, fields);
|
|
226
|
+
const firstOp = payload && Array.isArray(payload.results) && isRecord(payload.results[0]) ? payload.results[0] : null;
|
|
227
|
+
collectAllowlisted(firstOp, fields);
|
|
228
|
+
return {
|
|
229
|
+
ok: classifiers.ok,
|
|
230
|
+
...(classifiers.terminalState ? { terminalState: classifiers.terminalState } : {}),
|
|
231
|
+
...(classifiers.failureReason ? { failureReason: classifiers.failureReason } : {}),
|
|
232
|
+
...(classifiers.errorClass ? { errorClass: classifiers.errorClass } : {}),
|
|
233
|
+
keys,
|
|
234
|
+
fields,
|
|
235
|
+
media,
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Does a server.tool(...) registration carry an input schema? The MCP SDK
|
|
240
|
+
* accepts tool(name, description?, paramsSchema?, annotations?, cb): when a
|
|
241
|
+
* paramsSchema is present the callback receives (args, extra); when it is
|
|
242
|
+
* absent the callback receives (extra) ONLY — and recording extra as the
|
|
243
|
+
* tool's args would write {signal, requestId, ...} junk into the stream. A
|
|
244
|
+
* paramsSchema is a zod raw shape (record of zod schemas, or {} for "no
|
|
245
|
+
* parameters") or a zod object instance; a flat object of primitives is
|
|
246
|
+
* ToolAnnotations. Exported for unit tests.
|
|
247
|
+
*/
|
|
248
|
+
export function registrationHasInputSchema(registrationArgs) {
|
|
249
|
+
// Everything between the name (index 0) and the callback (last).
|
|
250
|
+
const middle = registrationArgs.slice(1, -1);
|
|
251
|
+
return middle.some((candidate) => {
|
|
252
|
+
if (!candidate || typeof candidate !== "object" || typeof candidate === "string")
|
|
253
|
+
return false;
|
|
254
|
+
const record = candidate;
|
|
255
|
+
if (typeof record.safeParse === "function" && "_def" in record)
|
|
256
|
+
return true; // zod instance
|
|
257
|
+
const values = Object.values(record);
|
|
258
|
+
if (values.length === 0)
|
|
259
|
+
return true; // {} = no parameters, still a schema
|
|
260
|
+
return values.every((value) => !!value && typeof value === "object" && "_def" in value);
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
/** The args to record for one handler invocation: the parsed args when the
|
|
264
|
+
* tool has an input schema, else null (the SDK passes only `extra`). */
|
|
265
|
+
export function trajectoryArgsFor(hasInputSchema, handlerArgs) {
|
|
266
|
+
return hasInputSchema ? (handlerArgs[0] ?? {}) : null;
|
|
267
|
+
}
|
|
268
|
+
/** One line per MCP tool call. No-op (false) when capture is off. In eval
|
|
269
|
+
* mode a second, unredacted line goes to trajectory.full.jsonl; its failure
|
|
270
|
+
* never affects the return value (the redacted stream is the contract). */
|
|
271
|
+
export function recordToolCall(call) {
|
|
272
|
+
const threw = typeof call.exception === "string";
|
|
273
|
+
const ok = !threw && call.isError !== true;
|
|
274
|
+
const errorClass = threw ? "exception" : call.errorClass;
|
|
275
|
+
const written = appendRecord({
|
|
276
|
+
kind: "tool_call",
|
|
277
|
+
tool: call.tool,
|
|
278
|
+
argsRedacted: call.args === null ? null : redactTrajectoryArgs(call.args ?? {}),
|
|
279
|
+
ok,
|
|
280
|
+
...(call.terminalState ? { terminalState: call.terminalState } : {}),
|
|
281
|
+
...(errorClass ? { errorClass } : {}),
|
|
282
|
+
...(call.failureReason ? { failureReason: call.failureReason } : {}),
|
|
283
|
+
...(threw ? { exception: redactTrajectoryArgs(call.exception) } : {}),
|
|
284
|
+
...(typeof call.durationMs === "number" ? { durationMs: call.durationMs } : {}),
|
|
285
|
+
});
|
|
286
|
+
if (written && isTrajectoryEvalMode()) {
|
|
287
|
+
try {
|
|
288
|
+
appendFullRecord({
|
|
289
|
+
kind: "tool_call",
|
|
290
|
+
tool: call.tool,
|
|
291
|
+
args: call.args === null ? null : call.args ?? {},
|
|
292
|
+
result: summarizeToolResult(call.result, {
|
|
293
|
+
ok,
|
|
294
|
+
terminalState: call.terminalState,
|
|
295
|
+
failureReason: call.failureReason,
|
|
296
|
+
errorClass,
|
|
297
|
+
}),
|
|
298
|
+
...(threw ? { exception: call.exception } : {}),
|
|
299
|
+
...(typeof call.durationMs === "number" ? { durationMs: call.durationMs } : {}),
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
catch {
|
|
303
|
+
// Eval capture is best-effort on top of a best-effort stream.
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return written;
|
|
307
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read a fetch Response body once and try to parse it as JSON.
|
|
3
|
+
*
|
|
4
|
+
* `parsed` is false when the body is empty or not valid JSON; callers decide
|
|
5
|
+
* what that means (a typed error for the creator API, a lenient
|
|
6
|
+
* `{message}` for Studio generation). Tolerates Response doubles that only
|
|
7
|
+
* implement `.json()` (test fakes) by falling back to it.
|
|
8
|
+
*/
|
|
9
|
+
export declare function readJsonResponse(res: Response): Promise<{
|
|
10
|
+
text: string;
|
|
11
|
+
json: unknown;
|
|
12
|
+
parsed: boolean;
|
|
13
|
+
}>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read a fetch Response body once and try to parse it as JSON.
|
|
3
|
+
*
|
|
4
|
+
* `parsed` is false when the body is empty or not valid JSON; callers decide
|
|
5
|
+
* what that means (a typed error for the creator API, a lenient
|
|
6
|
+
* `{message}` for Studio generation). Tolerates Response doubles that only
|
|
7
|
+
* implement `.json()` (test fakes) by falling back to it.
|
|
8
|
+
*/
|
|
9
|
+
export async function readJsonResponse(res) {
|
|
10
|
+
if (typeof res.text !== "function") {
|
|
11
|
+
if (typeof res.json === "function") {
|
|
12
|
+
const json = await res.json().catch(() => undefined);
|
|
13
|
+
return json === undefined
|
|
14
|
+
? { text: "", json: undefined, parsed: false }
|
|
15
|
+
: { text: JSON.stringify(json), json, parsed: true };
|
|
16
|
+
}
|
|
17
|
+
return { text: "", json: undefined, parsed: false };
|
|
18
|
+
}
|
|
19
|
+
const text = await res.text().catch(() => "");
|
|
20
|
+
if (!text)
|
|
21
|
+
return { text, json: undefined, parsed: false };
|
|
22
|
+
try {
|
|
23
|
+
return { text, json: JSON.parse(text), parsed: true };
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return { text, json: undefined, parsed: false };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Narrowing helpers for untyped JSON (engine envelopes, gateway responses,
|
|
3
|
+
* on-disk records). One copy; every surface imports from here.
|
|
4
|
+
*/
|
|
5
|
+
export type JsonRecord = Record<string, unknown>;
|
|
6
|
+
/** A plain object (not null, not an array), or null. */
|
|
7
|
+
export declare function asRecord(value: unknown): JsonRecord | null;
|
|
8
|
+
/** A non-empty string, or undefined. */
|
|
9
|
+
export declare function stringFrom(value: unknown): string | undefined;
|
|
10
|
+
/** A finite number, or undefined. */
|
|
11
|
+
export declare function numberFrom(value: unknown): number | undefined;
|
|
12
|
+
export declare function boolFrom(value: unknown): boolean | undefined;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Narrowing helpers for untyped JSON (engine envelopes, gateway responses,
|
|
3
|
+
* on-disk records). One copy; every surface imports from here.
|
|
4
|
+
*/
|
|
5
|
+
/** A plain object (not null, not an array), or null. */
|
|
6
|
+
export function asRecord(value) {
|
|
7
|
+
return value && typeof value === "object" && !Array.isArray(value)
|
|
8
|
+
? value
|
|
9
|
+
: null;
|
|
10
|
+
}
|
|
11
|
+
/** A non-empty string, or undefined. */
|
|
12
|
+
export function stringFrom(value) {
|
|
13
|
+
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
14
|
+
}
|
|
15
|
+
/** A finite number, or undefined. */
|
|
16
|
+
export function numberFrom(value) {
|
|
17
|
+
return typeof value === "number" && Number.isFinite(value) ? value : undefined;
|
|
18
|
+
}
|
|
19
|
+
export function boolFrom(value) {
|
|
20
|
+
return typeof value === "boolean" ? value : undefined;
|
|
21
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** True when a process with this pid exists. EPERM = alive but not ours;
|
|
2
|
+
* ESRCH = dead. Non-positive / non-integer pids are never alive. */
|
|
3
|
+
export function processIsAlive(pid) {
|
|
4
|
+
if (!Number.isInteger(pid) || pid <= 0)
|
|
5
|
+
return false;
|
|
6
|
+
try {
|
|
7
|
+
process.kill(pid, 0);
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
return error.code === "EPERM";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
const require = createRequire(import.meta.url);
|
|
3
|
+
/** The installed toolkit (npm package) version, read once from package.json.
|
|
4
|
+
* Resolves from src/core and dist/core alike (package root is two levels up). */
|
|
5
|
+
export const TOOLKIT_VERSION = require("../../package.json").version;
|
|
@@ -13,6 +13,9 @@ export interface AgentConfigOptions {
|
|
|
13
13
|
dryRun?: boolean;
|
|
14
14
|
print?: boolean;
|
|
15
15
|
localDev?: boolean;
|
|
16
|
+
/** npm dist-tag the generated MCP entry runs (`npx -y summer-engine@<channel> mcp`).
|
|
17
|
+
* Default "latest"; "next" while a release soaks on the next tag. Ignored with localDev. */
|
|
18
|
+
channel?: string;
|
|
16
19
|
cwd?: string;
|
|
17
20
|
env?: NodeJS.ProcessEnv;
|
|
18
21
|
}
|
|
@@ -29,11 +32,27 @@ export interface AgentConfigResult {
|
|
|
29
32
|
dryRun: boolean;
|
|
30
33
|
print: boolean;
|
|
31
34
|
localDev: boolean;
|
|
35
|
+
/** The dist-tag the written entry runs ("latest" unless --channel / SUMMER_CHANNEL). */
|
|
36
|
+
channel: string;
|
|
32
37
|
warnings: string[];
|
|
33
38
|
nextSteps: string[];
|
|
34
39
|
}
|
|
35
40
|
export declare function parseAgent(value: string | undefined): SupportedAgent | null;
|
|
36
41
|
export declare function parseScope(value: string | undefined): ConfigScope | null;
|
|
42
|
+
/** `summer setup [agent] --agent <agent>`: positional and option must agree;
|
|
43
|
+
* throws with a user-facing message when neither names a supported agent. */
|
|
44
|
+
export declare function resolveAgentSelection(agentArg: string | undefined, agentOpt: string | undefined): SupportedAgent;
|
|
45
|
+
/** `--scope` with a user-facing error; absent means "user". */
|
|
46
|
+
export declare function resolveConfigScope(scopeOpt: string | undefined): ConfigScope;
|
|
37
47
|
export declare function configureAgentMcp(options: AgentConfigOptions): Promise<AgentConfigResult>;
|
|
38
|
-
export declare
|
|
48
|
+
export declare const DEFAULT_CHANNEL = "latest";
|
|
49
|
+
/** npm dist-tags are lowercase words like `latest`, `next`, `beta`, `v3-preview`;
|
|
50
|
+
* anything that could be read as a version or a path is refused (a bare
|
|
51
|
+
* version belongs in a version bump, not a channel). */
|
|
52
|
+
export declare function normalizeChannel(channel: string | undefined): string;
|
|
53
|
+
export declare function createSummerMcpServerConfig(localDev: boolean, platform?: NodeJS.Platform, channel?: string): StdioMcpServerConfig;
|
|
39
54
|
export declare function renderConfigSnippet(agent: SupportedAgent, server: StdioMcpServerConfig): string;
|
|
55
|
+
/** Installed package root (dist/ and src/ alike). */
|
|
56
|
+
export declare function resolvePackageRoot(): string;
|
|
57
|
+
/** Directory name Gemini expects the extension under; the manifest `name` must match it. */
|
|
58
|
+
export declare const GEMINI_EXTENSION_DIR_NAME = "summer-engine";
|