@hybridlabor-api/aos 4.3.0 → 4.4.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/hooks/memb-inject.mjs +121 -0
- package/.claude/settings.json +10 -0
- package/README.de.md +0 -2
- package/README.md +0 -2
- package/README.pt.md +0 -2
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/docs/skills_table.md +0 -2
- package/installer.js +17 -6
- package/package.json +16 -2
- package/skills/global_config/aos-project-init/SKILL.md +194 -0
- package/skills/global_config/aos-project-init/assets/AGENTS.template.md +56 -0
- package/skills/global_config/aos-project-init/scripts/aos-project-doctor.mjs +137 -0
- package/skills/global_config/aos-setup/SKILL.md +222 -0
- package/skills/global_config/aos-setup/scripts/aos-doctor.mjs +262 -0
- package/skills/global_config/ask-tim/SKILL.md +2 -2
- package/assets/Give_AI_Agents_Control_of_Creative_Software.mp4 +0 -0
- package/mcps/RhinoMCP/connector/icon-dark.png +0 -3
- package/mcps/RhinoMCP/connector/icon-light.png +0 -3
- package/mcps/RhinoMCP/connector/screenshots/casa-rhino.png +0 -3
- package/mcps/RhinoMCP/docs/assets/css/custom.css +0 -640
- package/mcps/RhinoMCP/docs/content/_index.md +0 -88
- package/mcps/RhinoMCP/docs/content/docs/_index.md +0 -35
- package/mcps/RhinoMCP/docs/content/docs/advanced/_index.md +0 -37
- package/mcps/RhinoMCP/docs/content/docs/advanced/bulk-file-processing.md +0 -70
- package/mcps/RhinoMCP/docs/content/docs/advanced/headless-render-farm.md +0 -60
- package/mcps/RhinoMCP/docs/content/docs/advanced/make-this-parametric.md +0 -56
- package/mcps/RhinoMCP/docs/content/docs/advanced/sketch-to-model.md +0 -58
- package/mcps/RhinoMCP/docs/content/docs/advanced/upgrade-gh1-to-gh2.md +0 -51
- package/mcps/RhinoMCP/docs/content/docs/developers/_index.md +0 -39
- package/mcps/RhinoMCP/docs/content/docs/developers/dev-troubleshooting.md +0 -15
- package/mcps/RhinoMCP/docs/content/docs/developers/plugin-prototyping.md +0 -56
- package/mcps/RhinoMCP/docs/content/docs/developers/upgrade-gh1-to-gh2.md +0 -98
- package/mcps/RhinoMCP/docs/content/docs/developers/upgrade-to-netcore.md +0 -53
- package/mcps/RhinoMCP/docs/content/docs/developers/windows-to-cross-platform.md +0 -58
- package/mcps/RhinoMCP/docs/content/docs/developers/wpf-to-eto.md +0 -64
- package/mcps/RhinoMCP/docs/content/docs/getting-started/_index.md +0 -45
- package/mcps/RhinoMCP/docs/content/docs/getting-started/cc-plugin.md +0 -116
- package/mcps/RhinoMCP/docs/content/docs/getting-started/connector.md +0 -65
- package/mcps/RhinoMCP/docs/content/docs/getting-started/copilot.md +0 -61
- package/mcps/RhinoMCP/docs/content/docs/getting-started/lm-studio.md +0 -62
- package/mcps/RhinoMCP/docs/content/docs/troubleshooting.md +0 -66
- package/mcps/RhinoMCP/docs/content/docs/try-it-out/_index.md +0 -39
- package/mcps/RhinoMCP/docs/content/docs/try-it-out/examples/_index.md +0 -25
- package/mcps/RhinoMCP/docs/content/docs/try-it-out/examples/build-grasshopper.md +0 -26
- package/mcps/RhinoMCP/docs/content/docs/try-it-out/examples/generate-variations.md +0 -25
- package/mcps/RhinoMCP/docs/content/docs/try-it-out/examples/inspect-and-report.md +0 -26
- package/mcps/RhinoMCP/docs/content/docs/try-it-out/examples/layers.md +0 -28
- package/mcps/RhinoMCP/docs/content/docs/try-it-out/examples/model-from-image.md +0 -27
- package/mcps/RhinoMCP/docs/content/docs/try-it-out/recipes.md +0 -178
- package/mcps/RhinoMCP/docs/data/icons.yaml +0 -3
- package/mcps/RhinoMCP/docs/go.mod +0 -5
- package/mcps/RhinoMCP/docs/go.sum +0 -4
- package/mcps/RhinoMCP/docs/hugo.yaml +0 -78
- package/mcps/RhinoMCP/docs/layouts/_partials/sidebar.html +0 -333
- package/mcps/RhinoMCP/docs/layouts/docs/list.html +0 -29
- package/mcps/RhinoMCP/docs/layouts/docs/single.html +0 -29
- package/mcps/RhinoMCP/docs/layouts/partials/custom/head-end.html +0 -3
- package/mcps/RhinoMCP/docs/layouts/shortcodes/download-asset.html +0 -21
- package/mcps/RhinoMCP/docs/layouts/shortcodes/github.html +0 -21
- package/mcps/RhinoMCP/docs/layouts/shortcodes/prompt.html +0 -23
- package/mcps/RhinoMCP/docs/layouts/shortcodes/yak.html +0 -21
- package/mcps/RhinoMCP/docs/static/developer/sel-arc.png +0 -3
- package/mcps/RhinoMCP/docs/static/developer/voxelizer-gh2-conversion.png +0 -3
- package/mcps/RhinoMCP/docs/static/examples/ai-kettle.png +0 -3
- package/mcps/RhinoMCP/docs/static/examples/casa_rhino_shapes.png +0 -3
- package/mcps/RhinoMCP/docs/static/examples/kettle.jpg +0 -0
- package/mcps/RhinoMCP/docs/static/examples/raygun-layers.png +0 -3
- package/mcps/RhinoMCP/docs/static/examples/raygun-thumbnail.png +0 -3
- package/mcps/RhinoMCP/docs/static/examples/twisty-tower-gh.png +0 -3
- package/mcps/RhinoMCP/docs/static/favicon.svg +0 -26
- package/mcps/RhinoMCP/docs/static/images/landing-dark.png +0 -3
- package/mcps/RhinoMCP/docs/static/images/landing.png +0 -3
- package/mcps/RhinoMCP/docs/static/images/logo-dark.svg +0 -26
- package/mcps/RhinoMCP/docs/static/images/logo.svg +0 -26
- package/mcps/RhinoMCP/docs/static/local-llm.png +0 -3
- package/mcps/RhinoMCP/rhino/plugin/icon.png +0 -3
- package/mcps/RhinoMCP/tests/Acp.Tests/Acp.Tests.csproj +0 -29
- package/mcps/RhinoMCP/tests/Acp.Tests/CoverageTests.cs +0 -52
- package/mcps/RhinoMCP/tests/Acp.Tests/Fakes.cs +0 -90
- package/mcps/RhinoMCP/tests/Acp.Tests/GlobalUsings.cs +0 -1
- package/mcps/RhinoMCP/tests/Acp.Tests/LoopbackTests.cs +0 -59
- package/mcps/RhinoMCP/tests/Acp.Tests/RobustnessTests.cs +0 -124
- package/mcps/RhinoMCP/tests/Acp.Tests/SerializationTests.cs +0 -94
- package/mcps/RhinoMCP/tests/Integration.Tests/AdoptedSlotTests.cs +0 -136
- package/mcps/RhinoMCP/tests/Integration.Tests/AutoSpawnNotificationTests.cs +0 -63
- package/mcps/RhinoMCP/tests/Integration.Tests/CloseSlotAgentTests.cs +0 -56
- package/mcps/RhinoMCP/tests/Integration.Tests/CloseSlotTests.cs +0 -37
- package/mcps/RhinoMCP/tests/Integration.Tests/DocLifecycleTests.cs +0 -42
- package/mcps/RhinoMCP/tests/Integration.Tests/GlobalUsings.cs +0 -3
- package/mcps/RhinoMCP/tests/Integration.Tests/GrasshopperStartTests.cs +0 -56
- package/mcps/RhinoMCP/tests/Integration.Tests/Harness/ReturnResult.cs +0 -28
- package/mcps/RhinoMCP/tests/Integration.Tests/Harness/RhinoMcpFixture.cs +0 -90
- package/mcps/RhinoMCP/tests/Integration.Tests/Harness/RhinoMcpRouter.cs +0 -111
- package/mcps/RhinoMCP/tests/Integration.Tests/Harness/RhinoRouterPaths.cs +0 -83
- package/mcps/RhinoMCP/tests/Integration.Tests/Harness/RouterFixture.cs +0 -50
- package/mcps/RhinoMCP/tests/Integration.Tests/Integration.Tests.csproj +0 -31
- package/mcps/RhinoMCP/tests/Integration.Tests/ListSlotsShapeTests.cs +0 -55
- package/mcps/RhinoMCP/tests/Integration.Tests/ListSlotsTests.cs +0 -19
- package/mcps/RhinoMCP/tests/Integration.Tests/MacSharedProcessTests.cs +0 -87
- package/mcps/RhinoMCP/tests/Integration.Tests/MultiRouterTests.cs +0 -74
- package/mcps/RhinoMCP/tests/Integration.Tests/PluginToolTests.cs +0 -115
- package/mcps/RhinoMCP/tests/Integration.Tests/README.md +0 -35
- package/mcps/RhinoMCP/tests/Integration.Tests/RhinoCrashHandlingTests.cs +0 -107
- package/mcps/RhinoMCP/tests/Integration.Tests/SlotReapingTests.cs +0 -84
- package/mcps/RhinoMCP/tests/Integration.Tests/SpawnErrorTests.cs +0 -52
- package/mcps/RhinoMCP/tests/Integration.Tests/SpawnSlotTests.cs +0 -66
- package/mcps/RhinoMCP/tests/Integration.Tests/ToolDispatchBySlotTests.cs +0 -53
- package/mcps/RhinoMCP/tests/Integration.Tests/WindowsProcessIsolationTests.cs +0 -62
- package/mcps/RhinoMCP/tests/Router.Tests/CodegenTests.cs +0 -125
- package/mcps/RhinoMCP/tests/Router.Tests/ReturnResultTests.cs +0 -90
- package/mcps/RhinoMCP/tests/Router.Tests/RhinoCrashReportFinderTests.cs +0 -207
- package/mcps/RhinoMCP/tests/Router.Tests/RhinoLocatorOverrideTests.cs +0 -61
- package/mcps/RhinoMCP/tests/Router.Tests/RhinoLocatorTests.cs +0 -38
- package/mcps/RhinoMCP/tests/Router.Tests/RhinoManagerResolutionTests.cs +0 -151
- package/mcps/RhinoMCP/tests/Router.Tests/Router.Tests.csproj +0 -31
- package/mcps/RhinoMCP/tests/Router.Tests/RouterConfigTests.cs +0 -92
- package/mcps/RhinoMCP/tests/Router.Tests/SlotStoreLaunchingAbsenceTests.cs +0 -70
- package/mcps/RhinoMCP/tests/Router.Tests/SlotStorePortReservationTests.cs +0 -92
- package/mcps/RhinoMCP/tests/Router.Tests/SpawnDiagnosticsTests.cs +0 -100
- package/mcps/RhinoMCP/tests/Router.Tests/SpawnSlotToolDiagnoseTests.cs +0 -66
- package/mcps/RhinoMCP/tests/Server.Tests/McpConfigEditTests.cs +0 -223
- package/mcps/RhinoMCP/tests/Server.Tests/ParameterBinderTests.cs +0 -208
- package/mcps/RhinoMCP/tests/Server.Tests/ProtocolTests.cs +0 -200
- package/mcps/RhinoMCP/tests/Server.Tests/ResourceRegistryTests.cs +0 -218
- package/mcps/RhinoMCP/tests/Server.Tests/ResultUnwrapperTests.cs +0 -53
- package/mcps/RhinoMCP/tests/Server.Tests/SchemaBuilderTests.cs +0 -166
- package/mcps/RhinoMCP/tests/Server.Tests/Server.Tests.csproj +0 -40
- package/mcps/RhinoMCP/tests/StreamJson.Tests/AcpMessageMapperTests.cs +0 -82
- package/mcps/RhinoMCP/tests/StreamJson.Tests/AgentPromptsTests.cs +0 -56
- package/mcps/RhinoMCP/tests/StreamJson.Tests/AgentRegistryOverlayTests.cs +0 -88
- package/mcps/RhinoMCP/tests/StreamJson.Tests/AgentRegistryResolutionTests.cs +0 -152
- package/mcps/RhinoMCP/tests/StreamJson.Tests/AgentRunnerTurnTests.cs +0 -149
- package/mcps/RhinoMCP/tests/StreamJson.Tests/ClaudeStreamJsonParserTests.cs +0 -118
- package/mcps/RhinoMCP/tests/StreamJson.Tests/CodexStreamJsonParserTests.cs +0 -100
- package/mcps/RhinoMCP/tests/StreamJson.Tests/ConversationStorePruneTests.cs +0 -94
- package/mcps/RhinoMCP/tests/StreamJson.Tests/ConversationStoreRoundTripTests.cs +0 -70
- package/mcps/RhinoMCP/tests/StreamJson.Tests/ConversationTests.cs +0 -153
- package/mcps/RhinoMCP/tests/StreamJson.Tests/ConversationUsageTests.cs +0 -56
- package/mcps/RhinoMCP/tests/StreamJson.Tests/GlobalUsings.cs +0 -12
- package/mcps/RhinoMCP/tests/StreamJson.Tests/Shims.cs +0 -93
- package/mcps/RhinoMCP/tests/StreamJson.Tests/StreamJson.Tests.csproj +0 -56
- package/mcps/RhinoMCP/tests/StreamJson.Tests/StreamJsonAgentLoopbackTests.cs +0 -75
- package/mcps/RhinoMCP/tests/StreamJson.Tests/StreamJsonParserEdgeCaseTests.cs +0 -128
- package/mcps/RhinoMCP/tests/StreamJson.Tests/TokenUsageTests.cs +0 -40
- package/mcps/RhinoMCP/tests/launcher/launcher.test.mjs +0 -461
- package/mcps/RhinoMCP/tests/launcher/package.json +0 -8
- package/mcps/ae-mcp/docs/demo.png +0 -0
- package/mcps/ae-mcp/docs/demo1.png +0 -0
- package/mcps/ae-mcp/docs/demo3.png +0 -0
- package/mcps/ae-mcp/docs/video.png +0 -0
- package/mcps/after-effects-mcp/assets/MCP Auto Bridge.png +0 -0
- package/mcps/bdb-remoteos-mcp/tests/__init__.py +0 -1
- package/mcps/bdb-remoteos-mcp/tests/mock_incus.py +0 -60
- package/mcps/bdb-remoteos-mcp/tests/test_mcp_server.py +0 -27
- package/mcps/bdb-remoteos-mcp/tests/test_security_redteam.py +0 -349
- package/mcps/bdb-remoteos-mcp/tests/test_webhook.py +0 -61
- package/mcps/blender-mcp/assets/addon-instructions.png +0 -0
- package/mcps/blender-mcp/assets/hammer-icon.png +0 -0
- package/mcps/blender-mcp-server/docs/architecture.md +0 -209
- package/mcps/blender-mcp-server/docs/images/demo_render.png +0 -0
- package/mcps/blender-mcp-server/docs/python-execute-design.md +0 -515
- package/mcps/blender-mcp-server/tests/__init__.py +0 -0
- package/mcps/blender-mcp-server/tests/test_addon.py +0 -953
- package/mcps/blender-mcp-server/tests/test_server.py +0 -364
- package/mcps/davinci-mcp-professional/docs/README.md +0 -67
- package/mcps/davinci-mcp-professional/docs/html/README_8md.html +0 -113
- package/mcps/davinci-mcp-professional/docs/html/____init_____8py.html +0 -126
- package/mcps/davinci-mcp-professional/docs/html/____init_____8py.js +0 -6
- package/mcps/davinci-mcp-professional/docs/html/____init_____8py_source.html +0 -125
- package/mcps/davinci-mcp-professional/docs/html/__version_8py.html +0 -130
- package/mcps/davinci-mcp-professional/docs/html/__version_8py.js +0 -9
- package/mcps/davinci-mcp-professional/docs/html/__version_8py_source.html +0 -130
- package/mcps/davinci-mcp-professional/docs/html/annotated.html +0 -123
- package/mcps/davinci-mcp-professional/docs/html/annotated_dup.js +0 -21
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveClient-members.html +0 -131
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveClient.html +0 -706
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveClient.js +0 -26
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveConnectionError.html +0 -143
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveConnectionError__coll__graph.map +0 -7
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveConnectionError__coll__graph.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveConnectionError__coll__graph.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveConnectionError__inherit__graph.map +0 -7
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveConnectionError__inherit__graph.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveConnectionError__inherit__graph.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveError.html +0 -143
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveError__coll__graph.map +0 -5
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveError__coll__graph.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveError__coll__graph.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveError__inherit__graph.map +0 -9
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveError__inherit__graph.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveError__inherit__graph.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveNotRunningError.html +0 -143
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveNotRunningError__coll__graph.map +0 -7
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveNotRunningError__coll__graph.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveNotRunningError__coll__graph.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveNotRunningError__inherit__graph.map +0 -7
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveNotRunningError__inherit__graph.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1resolve__client_1_1DaVinciResolveNotRunningError__inherit__graph.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1server_1_1DaVinciMCPServer-members.html +0 -115
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1server_1_1DaVinciMCPServer.html +0 -325
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1server_1_1DaVinciMCPServer.js +0 -10
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciMediaPool-members.html +0 -110
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciMediaPool.html +0 -188
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciMediaPool.js +0 -5
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciMediaPool__coll__graph.map +0 -5
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciMediaPool__coll__graph.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciMediaPool__coll__graph.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciMediaPool__inherit__graph.map +0 -5
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciMediaPool__inherit__graph.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciMediaPool__inherit__graph.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProject-members.html +0 -113
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProject.html +0 -248
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProject.js +0 -8
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProjectManager-members.html +0 -113
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProjectManager.html +0 -252
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProjectManager.js +0 -8
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProjectManager__coll__graph.map +0 -5
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProjectManager__coll__graph.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProjectManager__coll__graph.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProjectManager__inherit__graph.map +0 -5
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProjectManager__inherit__graph.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProjectManager__inherit__graph.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProject__coll__graph.map +0 -5
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProject__coll__graph.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProject__coll__graph.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProject__inherit__graph.map +0 -5
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProject__inherit__graph.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciProject__inherit__graph.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciResolveApp-members.html +0 -115
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciResolveApp.html +0 -288
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciResolveApp.js +0 -10
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciResolveApp__coll__graph.map +0 -5
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciResolveApp__coll__graph.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciResolveApp__coll__graph.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciResolveApp__inherit__graph.map +0 -5
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciResolveApp__inherit__graph.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciResolveApp__inherit__graph.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciTimeline-members.html +0 -110
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciTimeline.html +0 -188
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciTimeline.js +0 -5
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciTimeline__coll__graph.map +0 -5
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciTimeline__coll__graph.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciTimeline__coll__graph.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciTimeline__inherit__graph.map +0 -5
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciTimeline__inherit__graph.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/classdavinci__mcp_1_1types_1_1DaVinciTimeline__inherit__graph.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/classes.html +0 -111
- package/mcps/davinci-mcp-professional/docs/html/cli_8py.html +0 -135
- package/mcps/davinci-mcp-professional/docs/html/cli_8py.js +0 -11
- package/mcps/davinci-mcp-professional/docs/html/cli_8py_source.html +0 -249
- package/mcps/davinci-mcp-professional/docs/html/clipboard.js +0 -61
- package/mcps/davinci-mcp-professional/docs/html/cookie.js +0 -58
- package/mcps/davinci-mcp-professional/docs/html/dir_1a1069c9a5427270b3ccd00c87d405fe.html +0 -127
- package/mcps/davinci-mcp-professional/docs/html/dir_1a1069c9a5427270b3ccd00c87d405fe.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/dir_1a1069c9a5427270b3ccd00c87d405fe_dep.map +0 -4
- package/mcps/davinci-mcp-professional/docs/html/dir_1a1069c9a5427270b3ccd00c87d405fe_dep.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/dir_1a1069c9a5427270b3ccd00c87d405fe_dep.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/dir_6a5346f4427b2e9426ba2ccfd9f0b603.html +0 -128
- package/mcps/davinci-mcp-professional/docs/html/dir_6a5346f4427b2e9426ba2ccfd9f0b603.js +0 -5
- package/mcps/davinci-mcp-professional/docs/html/dir_6a5346f4427b2e9426ba2ccfd9f0b603_dep.map +0 -4
- package/mcps/davinci-mcp-professional/docs/html/dir_6a5346f4427b2e9426ba2ccfd9f0b603_dep.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/dir_6a5346f4427b2e9426ba2ccfd9f0b603_dep.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/dir_77c8a4d399bde190a30252eceec792ef.html +0 -127
- package/mcps/davinci-mcp-professional/docs/html/dir_77c8a4d399bde190a30252eceec792ef.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/dir_77c8a4d399bde190a30252eceec792ef_dep.map +0 -4
- package/mcps/davinci-mcp-professional/docs/html/dir_77c8a4d399bde190a30252eceec792ef_dep.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/dir_77c8a4d399bde190a30252eceec792ef_dep.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/dir_f94b29b73815c35a8351f4403bcc4f74.html +0 -129
- package/mcps/davinci-mcp-professional/docs/html/dir_f94b29b73815c35a8351f4403bcc4f74.js +0 -12
- package/mcps/davinci-mcp-professional/docs/html/doxygen.css +0 -2540
- package/mcps/davinci-mcp-professional/docs/html/doxygen.svg +0 -28
- package/mcps/davinci-mcp-professional/docs/html/doxygen_crawl.html +0 -170
- package/mcps/davinci-mcp-professional/docs/html/dynsections.js +0 -198
- package/mcps/davinci-mcp-professional/docs/html/files.html +0 -123
- package/mcps/davinci-mcp-professional/docs/html/files_dup.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/functions.html +0 -190
- package/mcps/davinci-mcp-professional/docs/html/functions_func.html +0 -184
- package/mcps/davinci-mcp-professional/docs/html/functions_vars.html +0 -110
- package/mcps/davinci-mcp-professional/docs/html/graph_legend.html +0 -165
- package/mcps/davinci-mcp-professional/docs/html/graph_legend.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/graph_legend.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/hierarchy.html +0 -123
- package/mcps/davinci-mcp-professional/docs/html/hierarchy.js +0 -18
- package/mcps/davinci-mcp-professional/docs/html/index.html +0 -200
- package/mcps/davinci-mcp-professional/docs/html/index.js +0 -9
- package/mcps/davinci-mcp-professional/docs/html/inherit_graph_0.map +0 -3
- package/mcps/davinci-mcp-professional/docs/html/inherit_graph_0.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/inherit_graph_0.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/inherit_graph_1.map +0 -3
- package/mcps/davinci-mcp-professional/docs/html/inherit_graph_1.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/inherit_graph_1.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/inherit_graph_2.map +0 -9
- package/mcps/davinci-mcp-professional/docs/html/inherit_graph_2.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/inherit_graph_2.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/inherit_graph_3.map +0 -13
- package/mcps/davinci-mcp-professional/docs/html/inherit_graph_3.md5 +0 -1
- package/mcps/davinci-mcp-professional/docs/html/inherit_graph_3.png +0 -0
- package/mcps/davinci-mcp-professional/docs/html/inherits.html +0 -145
- package/mcps/davinci-mcp-professional/docs/html/jquery.js +0 -204
- package/mcps/davinci-mcp-professional/docs/html/menu.js +0 -131
- package/mcps/davinci-mcp-professional/docs/html/menudata.js +0 -73
- package/mcps/davinci-mcp-professional/docs/html/namespacedavinci__mcp.html +0 -209
- package/mcps/davinci-mcp-professional/docs/html/namespacedavinci__mcp.js +0 -34
- package/mcps/davinci-mcp-professional/docs/html/namespacedavinci__mcp_1_1__version.html +0 -260
- package/mcps/davinci-mcp-professional/docs/html/namespacedavinci__mcp_1_1cli.html +0 -303
- package/mcps/davinci-mcp-professional/docs/html/namespacedavinci__mcp_1_1resolve__client.html +0 -147
- package/mcps/davinci-mcp-professional/docs/html/namespacedavinci__mcp_1_1resolve__client.js +0 -8
- package/mcps/davinci-mcp-professional/docs/html/namespacedavinci__mcp_1_1resources.html +0 -140
- package/mcps/davinci-mcp-professional/docs/html/namespacedavinci__mcp_1_1server.html +0 -144
- package/mcps/davinci-mcp-professional/docs/html/namespacedavinci__mcp_1_1server.js +0 -5
- package/mcps/davinci-mcp-professional/docs/html/namespacedavinci__mcp_1_1tools.html +0 -140
- package/mcps/davinci-mcp-professional/docs/html/namespacedavinci__mcp_1_1types.html +0 -216
- package/mcps/davinci-mcp-professional/docs/html/namespacedavinci__mcp_1_1types.js +0 -13
- package/mcps/davinci-mcp-professional/docs/html/namespacedavinci__mcp_1_1utils.html +0 -155
- package/mcps/davinci-mcp-professional/docs/html/namespacedavinci__mcp_1_1utils.js +0 -11
- package/mcps/davinci-mcp-professional/docs/html/namespacedavinci__mcp_1_1utils_1_1platform.html +0 -232
- package/mcps/davinci-mcp-professional/docs/html/namespacemembers.html +0 -173
- package/mcps/davinci-mcp-professional/docs/html/namespacemembers_func.html +0 -114
- package/mcps/davinci-mcp-professional/docs/html/namespacemembers_vars.html +0 -121
- package/mcps/davinci-mcp-professional/docs/html/namespaces.html +0 -119
- package/mcps/davinci-mcp-professional/docs/html/namespaces_dup.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/navtree.css +0 -327
- package/mcps/davinci-mcp-professional/docs/html/navtree.js +0 -901
- package/mcps/davinci-mcp-professional/docs/html/navtreedata.js +0 -68
- package/mcps/davinci-mcp-professional/docs/html/navtreeindex0.js +0 -212
- package/mcps/davinci-mcp-professional/docs/html/platform_8py.html +0 -130
- package/mcps/davinci-mcp-professional/docs/html/platform_8py.js +0 -8
- package/mcps/davinci-mcp-professional/docs/html/platform_8py_source.html +0 -245
- package/mcps/davinci-mcp-professional/docs/html/resolve__client_8py.html +0 -132
- package/mcps/davinci-mcp-professional/docs/html/resolve__client_8py.js +0 -8
- package/mcps/davinci-mcp-professional/docs/html/resolve__client_8py_source.html +0 -501
- package/mcps/davinci-mcp-professional/docs/html/resources_2____init_____8py.html +0 -125
- package/mcps/davinci-mcp-professional/docs/html/resources_2____init_____8py.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/resources_2____init_____8py_source.html +0 -169
- package/mcps/davinci-mcp-professional/docs/html/search/all_0.js +0 -22
- package/mcps/davinci-mcp-professional/docs/html/search/all_1.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/all_10.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/all_11.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/all_12.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/all_13.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/all_2.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/all_3.js +0 -15
- package/mcps/davinci-mcp-professional/docs/html/search/all_4.js +0 -26
- package/mcps/davinci-mcp-professional/docs/html/search/all_5.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/all_6.js +0 -6
- package/mcps/davinci-mcp-professional/docs/html/search/all_7.js +0 -25
- package/mcps/davinci-mcp-professional/docs/html/search/all_8.js +0 -7
- package/mcps/davinci-mcp-professional/docs/html/search/all_9.js +0 -9
- package/mcps/davinci-mcp-professional/docs/html/search/all_a.js +0 -6
- package/mcps/davinci-mcp-professional/docs/html/search/all_b.js +0 -6
- package/mcps/davinci-mcp-professional/docs/html/search/all_c.js +0 -9
- package/mcps/davinci-mcp-professional/docs/html/search/all_d.js +0 -10
- package/mcps/davinci-mcp-professional/docs/html/search/all_e.js +0 -11
- package/mcps/davinci-mcp-professional/docs/html/search/all_f.js +0 -5
- package/mcps/davinci-mcp-professional/docs/html/search/classes_0.js +0 -13
- package/mcps/davinci-mcp-professional/docs/html/search/files_0.js +0 -5
- package/mcps/davinci-mcp-professional/docs/html/search/files_1.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/files_2.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/files_3.js +0 -5
- package/mcps/davinci-mcp-professional/docs/html/search/files_4.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/files_5.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/functions_0.js +0 -9
- package/mcps/davinci-mcp-professional/docs/html/search/functions_1.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/functions_2.js +0 -10
- package/mcps/davinci-mcp-professional/docs/html/search/functions_3.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/functions_4.js +0 -25
- package/mcps/davinci-mcp-professional/docs/html/search/functions_5.js +0 -6
- package/mcps/davinci-mcp-professional/docs/html/search/functions_6.js +0 -7
- package/mcps/davinci-mcp-professional/docs/html/search/functions_7.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/functions_8.js +0 -5
- package/mcps/davinci-mcp-professional/docs/html/search/functions_9.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/functions_a.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/functions_b.js +0 -6
- package/mcps/davinci-mcp-professional/docs/html/search/namespaces_0.js +0 -13
- package/mcps/davinci-mcp-professional/docs/html/search/pages_0.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/pages_1.js +0 -6
- package/mcps/davinci-mcp-professional/docs/html/search/pages_2.js +0 -5
- package/mcps/davinci-mcp-professional/docs/html/search/pages_3.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/pages_4.js +0 -5
- package/mcps/davinci-mcp-professional/docs/html/search/pages_5.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/pages_6.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/pages_7.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/pages_8.js +0 -5
- package/mcps/davinci-mcp-professional/docs/html/search/pages_9.js +0 -5
- package/mcps/davinci-mcp-professional/docs/html/search/pages_a.js +0 -6
- package/mcps/davinci-mcp-professional/docs/html/search/pages_b.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/pages_c.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/pages_d.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/search.css +0 -377
- package/mcps/davinci-mcp-professional/docs/html/search/search.js +0 -708
- package/mcps/davinci-mcp-professional/docs/html/search/searchdata.js +0 -33
- package/mcps/davinci-mcp-professional/docs/html/search/variables_0.js +0 -14
- package/mcps/davinci-mcp-professional/docs/html/search/variables_1.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/variables_2.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/variables_3.js +0 -5
- package/mcps/davinci-mcp-professional/docs/html/search/variables_4.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/variables_5.js +0 -5
- package/mcps/davinci-mcp-professional/docs/html/search/variables_6.js +0 -5
- package/mcps/davinci-mcp-professional/docs/html/search/variables_7.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/variables_8.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/search/variables_9.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/server_8py.html +0 -129
- package/mcps/davinci-mcp-professional/docs/html/server_8py.js +0 -5
- package/mcps/davinci-mcp-professional/docs/html/server_8py_source.html +0 -318
- package/mcps/davinci-mcp-professional/docs/html/tabs.css +0 -1
- package/mcps/davinci-mcp-professional/docs/html/tools_2____init_____8py.html +0 -125
- package/mcps/davinci-mcp-professional/docs/html/tools_2____init_____8py.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/tools_2____init_____8py_source.html +0 -253
- package/mcps/davinci-mcp-professional/docs/html/types_8py.html +0 -137
- package/mcps/davinci-mcp-professional/docs/html/types_8py.js +0 -13
- package/mcps/davinci-mcp-professional/docs/html/types_8py_source.html +0 -309
- package/mcps/davinci-mcp-professional/docs/html/utils_2____init_____8py.html +0 -125
- package/mcps/davinci-mcp-professional/docs/html/utils_2____init_____8py.js +0 -4
- package/mcps/davinci-mcp-professional/docs/html/utils_2____init_____8py_source.html +0 -123
- package/mcps/davinci-mcp-professional/tests/README.md +0 -49
- package/mcps/davinci-mcp-professional/tests/__init__.py +0 -1
- package/mcps/davinci-mcp-professional/tests/conftest.py +0 -75
- package/mcps/davinci-mcp-professional/tests/test_security.py +0 -251
- package/mcps/davinci-resolve-mcp/docs/README.md +0 -56
- package/mcps/davinci-resolve-mcp/docs/SKILL.md +0 -1635
- package/mcps/davinci-resolve-mcp/docs/authoring/fuse-dctl-authoring.md +0 -242
- package/mcps/davinci-resolve-mcp/docs/authoring/script-plugin-authoring.md +0 -195
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/README.md +0 -152
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/references/category-patterns.md +0 -780
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/references/controls.md +0 -259
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/references/format.md +0 -568
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/references/gotchas.md +0 -168
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/references/thumbnails.md +0 -106
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/templates/MCP Test Blur.setting +0 -46
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/templates/MCP Test Color Tint.setting +0 -78
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/templates/MCP Test Cross Dissolve.setting +0 -57
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/templates/MCP Test Fade Title.setting +0 -111
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/templates/MCP Test Glow.setting +0 -55
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/templates/MCP Test Gradient.setting +0 -52
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/templates/MCP Test Iris.setting +0 -127
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/templates/MCP Test Lower Third.setting +0 -192
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/templates/MCP Test Noise.setting +0 -74
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/templates/MCP Test Solid Color.setting +0 -55
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/templates/MCP Test Title.setting +0 -105
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/templates/MCP Test Vignette.setting +0 -98
- package/mcps/davinci-resolve-mcp/docs/authoring/setting-files/templates/MCP Test Wipe.setting +0 -98
- package/mcps/davinci-resolve-mcp/docs/contributing.md +0 -82
- package/mcps/davinci-resolve-mcp/docs/guides/color-decision-guide.md +0 -427
- package/mcps/davinci-resolve-mcp/docs/guides/control-panel.md +0 -234
- package/mcps/davinci-resolve-mcp/docs/guides/editorial-decision-guide.md +0 -165
- package/mcps/davinci-resolve-mcp/docs/guides/media-analysis-guide.md +0 -763
- package/mcps/davinci-resolve-mcp/docs/guides/multicam-setup-guide.md +0 -138
- package/mcps/davinci-resolve-mcp/docs/images/control-panel/01-overview.png +0 -0
- package/mcps/davinci-resolve-mcp/docs/images/control-panel/02-review-bin-grid.png +0 -0
- package/mcps/davinci-resolve-mcp/docs/images/control-panel/03-clip-detail.png +0 -0
- package/mcps/davinci-resolve-mcp/docs/images/control-panel/04-transcript.png +0 -0
- package/mcps/davinci-resolve-mcp/docs/images/control-panel/05-shot-detail.png +0 -0
- package/mcps/davinci-resolve-mcp/docs/images/control-panel/06-inventory.png +0 -0
- package/mcps/davinci-resolve-mcp/docs/images/control-panel/07-diagnostics-resolve.png +0 -0
- package/mcps/davinci-resolve-mcp/docs/images/control-panel/08-preferences-analysis.png +0 -0
- package/mcps/davinci-resolve-mcp/docs/images/control-panel/09-ai-console.png +0 -0
- package/mcps/davinci-resolve-mcp/docs/images/control-panel/10-history.png +0 -0
- package/mcps/davinci-resolve-mcp/docs/images/control-panel/11-edit-plans.png +0 -0
- package/mcps/davinci-resolve-mcp/docs/install.md +0 -208
- package/mcps/davinci-resolve-mcp/docs/integrations/workflow-integrations.md +0 -120
- package/mcps/davinci-resolve-mcp/docs/kernels/README.md +0 -28
- package/mcps/davinci-resolve-mcp/docs/kernels/audio-fairlight-kernel.md +0 -86
- package/mcps/davinci-resolve-mcp/docs/kernels/color-grade-kernel.md +0 -103
- package/mcps/davinci-resolve-mcp/docs/kernels/extension-authoring-kernel.md +0 -101
- package/mcps/davinci-resolve-mcp/docs/kernels/fusion-composition-kernel.md +0 -121
- package/mcps/davinci-resolve-mcp/docs/kernels/media-pool-ingest-kernel.md +0 -147
- package/mcps/davinci-resolve-mcp/docs/kernels/project-lifecycle-kernel.md +0 -120
- package/mcps/davinci-resolve-mcp/docs/kernels/render-deliver-kernel.md +0 -92
- package/mcps/davinci-resolve-mcp/docs/kernels/review-annotation-kernel.md +0 -110
- package/mcps/davinci-resolve-mcp/docs/kernels/timeline-conform-interchange-kernel.md +0 -102
- package/mcps/davinci-resolve-mcp/docs/kernels/timeline-edit-kernel.md +0 -189
- package/mcps/davinci-resolve-mcp/docs/notes/codec-plugin-notes.md +0 -136
- package/mcps/davinci-resolve-mcp/docs/notes/dctl-notes.md +0 -234
- package/mcps/davinci-resolve-mcp/docs/notes/fusion-template-notes.md +0 -136
- package/mcps/davinci-resolve-mcp/docs/notes/lut-notes.md +0 -136
- package/mcps/davinci-resolve-mcp/docs/notes/openfx-notes.md +0 -120
- package/mcps/davinci-resolve-mcp/docs/process/release-process.md +0 -180
- package/mcps/davinci-resolve-mcp/docs/reference/api-coverage.md +0 -521
- package/mcps/davinci-resolve-mcp/docs/reference/api-limitations.md +0 -259
- package/mcps/davinci-resolve-mcp/docs/reference/readwrite-symmetry.md +0 -25
- package/mcps/davinci-resolve-mcp/docs/reference/resolve_scripting_api.txt +0 -1024
- package/mcps/davinci-resolve-mcp/tests/_error_envelope_helpers.py +0 -35
- package/mcps/davinci-resolve-mcp/tests/benchmark_server.py +0 -270
- package/mcps/davinci-resolve-mcp/tests/create_test_timeline.py +0 -177
- package/mcps/davinci-resolve-mcp/tests/live_api_gap_verification.py +0 -274
- package/mcps/davinci-resolve-mcp/tests/live_audio_fairlight_validation.py +0 -77
- package/mcps/davinci-resolve-mcp/tests/live_auto_sync_settings_check.py +0 -76
- package/mcps/davinci-resolve-mcp/tests/live_color_grade_validation.py +0 -89
- package/mcps/davinci-resolve-mcp/tests/live_delete_governance_check.py +0 -71
- package/mcps/davinci-resolve-mcp/tests/live_duplicate_clips_validation.py +0 -831
- package/mcps/davinci-resolve-mcp/tests/live_edit_engine_validation.py +0 -277
- package/mcps/davinci-resolve-mcp/tests/live_enum_settings_check.py +0 -89
- package/mcps/davinci-resolve-mcp/tests/live_extension_authoring_validation.py +0 -77
- package/mcps/davinci-resolve-mcp/tests/live_fuse_diagnose.py +0 -230
- package/mcps/davinci-resolve-mcp/tests/live_fuse_smoke.py +0 -250
- package/mcps/davinci-resolve-mcp/tests/live_fusion_composition_validation.py +0 -82
- package/mcps/davinci-resolve-mcp/tests/live_fusion_keyframe_validation.py +0 -116
- package/mcps/davinci-resolve-mcp/tests/live_fusion_mask_title_validation.py +0 -286
- package/mcps/davinci-resolve-mcp/tests/live_marker_validation.py +0 -439
- package/mcps/davinci-resolve-mcp/tests/live_media_pool_ingest_validation.py +0 -98
- package/mcps/davinci-resolve-mcp/tests/live_metadata_field_inventory_validation.py +0 -379
- package/mcps/davinci-resolve-mcp/tests/live_metadata_publish_validation.py +0 -192
- package/mcps/davinci-resolve-mcp/tests/live_multicam_setup_validation.py +0 -198
- package/mcps/davinci-resolve-mcp/tests/live_path_probe.py +0 -119
- package/mcps/davinci-resolve-mcp/tests/live_project_lifecycle_validation.py +0 -77
- package/mcps/davinci-resolve-mcp/tests/live_render_deliver_validation.py +0 -82
- package/mcps/davinci-resolve-mcp/tests/live_review_annotation_validation.py +0 -91
- package/mcps/davinci-resolve-mcp/tests/live_script_smoke.py +0 -141
- package/mcps/davinci-resolve-mcp/tests/live_sync_event_validation.py +0 -165
- package/mcps/davinci-resolve-mcp/tests/live_timeline_conform_validation.py +0 -77
- package/mcps/davinci-resolve-mcp/tests/live_v233_validation.py +0 -282
- package/mcps/davinci-resolve-mcp/tests/test-after-restart.bat +0 -83
- package/mcps/davinci-resolve-mcp/tests/test-after-restart.sh +0 -87
- package/mcps/davinci-resolve-mcp/tests/test_action_help.py +0 -47
- package/mcps/davinci-resolve-mcp/tests/test_action_list_drift.py +0 -163
- package/mcps/davinci-resolve-mcp/tests/test_ai_console_dispatch.py +0 -91
- package/mcps/davinci-resolve-mcp/tests/test_analysis_caps.py +0 -210
- package/mcps/davinci-resolve-mcp/tests/test_analysis_runs.py +0 -157
- package/mcps/davinci-resolve-mcp/tests/test_analysis_store.py +0 -366
- package/mcps/davinci-resolve-mcp/tests/test_api_limitations_doc.py +0 -56
- package/mcps/davinci-resolve-mcp/tests/test_api_truth.py +0 -64
- package/mcps/davinci-resolve-mcp/tests/test_api_truth_mitigations.py +0 -45
- package/mcps/davinci-resolve-mcp/tests/test_append_clip_infos_result_handling.py +0 -679
- package/mcps/davinci-resolve-mcp/tests/test_audio_fairlight_probe.py +0 -216
- package/mcps/davinci-resolve-mcp/tests/test_auto_run.py +0 -76
- package/mcps/davinci-resolve-mcp/tests/test_auto_sync_audio.py +0 -171
- package/mcps/davinci-resolve-mcp/tests/test_batch_cli.py +0 -253
- package/mcps/davinci-resolve-mcp/tests/test_brain_edits.py +0 -218
- package/mcps/davinci-resolve-mcp/tests/test_bridge_metrics.py +0 -52
- package/mcps/davinci-resolve-mcp/tests/test_bulk_match_to_hero.py +0 -219
- package/mcps/davinci-resolve-mcp/tests/test_caps_events_and_history.py +0 -147
- package/mcps/davinci-resolve-mcp/tests/test_caps_integration.py +0 -315
- package/mcps/davinci-resolve-mcp/tests/test_cdl_and_install_config.py +0 -372
- package/mcps/davinci-resolve-mcp/tests/test_clip_query.py +0 -57
- package/mcps/davinci-resolve-mcp/tests/test_cloud_settings.py +0 -62
- package/mcps/davinci-resolve-mcp/tests/test_color_grade_probe.py +0 -230
- package/mcps/davinci-resolve-mcp/tests/test_confirm_token.py +0 -85
- package/mcps/davinci-resolve-mcp/tests/test_confirm_token_preferences.py +0 -22
- package/mcps/davinci-resolve-mcp/tests/test_contracts.py +0 -81
- package/mcps/davinci-resolve-mcp/tests/test_create_subtitles_settings.py +0 -111
- package/mcps/davinci-resolve-mcp/tests/test_custom_timeline.py +0 -137
- package/mcps/davinci-resolve-mcp/tests/test_cut_executor.py +0 -87
- package/mcps/davinci-resolve-mcp/tests/test_cut_ir.py +0 -82
- package/mcps/davinci-resolve-mcp/tests/test_dashboard_transport.py +0 -47
- package/mcps/davinci-resolve-mcp/tests/test_deep_vision.py +0 -311
- package/mcps/davinci-resolve-mcp/tests/test_description_xml_shape.py +0 -71
- package/mcps/davinci-resolve-mcp/tests/test_destructive_decorator_coverage.py +0 -92
- package/mcps/davinci-resolve-mcp/tests/test_destructive_hook.py +0 -245
- package/mcps/davinci-resolve-mcp/tests/test_destructive_registry_drift.py +0 -108
- package/mcps/davinci-resolve-mcp/tests/test_edit_engine.py +0 -574
- package/mcps/davinci-resolve-mcp/tests/test_embeddings.py +0 -302
- package/mcps/davinci-resolve-mcp/tests/test_entities.py +0 -225
- package/mcps/davinci-resolve-mcp/tests/test_error_envelope.py +0 -179
- package/mcps/davinci-resolve-mcp/tests/test_exhaustive_wave_a.py +0 -101
- package/mcps/davinci-resolve-mcp/tests/test_extension_authoring_probe.py +0 -77
- package/mcps/davinci-resolve-mcp/tests/test_extract_frames.py +0 -42
- package/mcps/davinci-resolve-mcp/tests/test_extract_source_frame_ranges.py +0 -129
- package/mcps/davinci-resolve-mcp/tests/test_failure_tracker.py +0 -103
- package/mcps/davinci-resolve-mcp/tests/test_fuse_dctl_authoring.py +0 -596
- package/mcps/davinci-resolve-mcp/tests/test_fusion_comp_targeting.py +0 -269
- package/mcps/davinci-resolve-mcp/tests/test_fusion_composition_probe.py +0 -156
- package/mcps/davinci-resolve-mcp/tests/test_fusion_group_settings.py +0 -284
- package/mcps/davinci-resolve-mcp/tests/test_fusion_mask_title.py +0 -205
- package/mcps/davinci-resolve-mcp/tests/test_fusion_node_ops.py +0 -212
- package/mcps/davinci-resolve-mcp/tests/test_governance_identity.py +0 -155
- package/mcps/davinci-resolve-mcp/tests/test_grade_evidence_base.py +0 -132
- package/mcps/davinci-resolve-mcp/tests/test_import.py +0 -153
- package/mcps/davinci-resolve-mcp/tests/test_improvements.py +0 -334
- package/mcps/davinci-resolve-mcp/tests/test_inventory_exclude_bins.py +0 -139
- package/mcps/davinci-resolve-mcp/tests/test_live_api.py +0 -315
- package/mcps/davinci-resolve-mcp/tests/test_marker_params.py +0 -234
- package/mcps/davinci-resolve-mcp/tests/test_mcp_prompts.py +0 -77
- package/mcps/davinci-resolve-mcp/tests/test_mcp_resources.py +0 -117
- package/mcps/davinci-resolve-mcp/tests/test_mcp_transport.py +0 -74
- package/mcps/davinci-resolve-mcp/tests/test_media_analysis.py +0 -4637
- package/mcps/davinci-resolve-mcp/tests/test_media_pool_append_verification.py +0 -153
- package/mcps/davinci-resolve-mcp/tests/test_media_pool_changes.py +0 -105
- package/mcps/davinci-resolve-mcp/tests/test_media_pool_delete_governance.py +0 -69
- package/mcps/davinci-resolve-mcp/tests/test_media_pool_ingest_probe.py +0 -546
- package/mcps/davinci-resolve-mcp/tests/test_media_pool_walk.py +0 -79
- package/mcps/davinci-resolve-mcp/tests/test_multicam_setup.py +0 -178
- package/mcps/davinci-resolve-mcp/tests/test_object_inspection.py +0 -140
- package/mcps/davinci-resolve-mcp/tests/test_open_control_panel.py +0 -172
- package/mcps/davinci-resolve-mcp/tests/test_p1_param_validation.py +0 -57
- package/mcps/davinci-resolve-mcp/tests/test_p1_whitelist_and_delete.py +0 -81
- package/mcps/davinci-resolve-mcp/tests/test_page_lock.py +0 -52
- package/mcps/davinci-resolve-mcp/tests/test_panel_docs_drift.py +0 -77
- package/mcps/davinci-resolve-mcp/tests/test_partial_success_manifest.py +0 -113
- package/mcps/davinci-resolve-mcp/tests/test_persistence_safety.py +0 -147
- package/mcps/davinci-resolve-mcp/tests/test_prefer_handle.py +0 -89
- package/mcps/davinci-resolve-mcp/tests/test_project_cleanup.py +0 -111
- package/mcps/davinci-resolve-mcp/tests/test_project_lifecycle_probe.py +0 -256
- package/mcps/davinci-resolve-mcp/tests/test_project_lint.py +0 -79
- package/mcps/davinci-resolve-mcp/tests/test_project_spec.py +0 -246
- package/mcps/davinci-resolve-mcp/tests/test_propose_grade.py +0 -116
- package/mcps/davinci-resolve-mcp/tests/test_provenance.py +0 -88
- package/mcps/davinci-resolve-mcp/tests/test_readback.py +0 -77
- package/mcps/davinci-resolve-mcp/tests/test_readwrite_audit.py +0 -43
- package/mcps/davinci-resolve-mcp/tests/test_reel_name_writeback.py +0 -149
- package/mcps/davinci-resolve-mcp/tests/test_render_deliver_probe.py +0 -250
- package/mcps/davinci-resolve-mcp/tests/test_resolve20_api.py +0 -282
- package/mcps/davinci-resolve-mcp/tests/test_resolve21_actions.py +0 -386
- package/mcps/davinci-resolve-mcp/tests/test_resolve_ai_governance.py +0 -92
- package/mcps/davinci-resolve-mcp/tests/test_resolve_ai_ledger.py +0 -89
- package/mcps/davinci-resolve-mcp/tests/test_resolve_busy.py +0 -134
- package/mcps/davinci-resolve-mcp/tests/test_review_annotation_probe.py +0 -162
- package/mcps/davinci-resolve-mcp/tests/test_sampling_modes.py +0 -293
- package/mcps/davinci-resolve-mcp/tests/test_script_plugin.py +0 -750
- package/mcps/davinci-resolve-mcp/tests/test_shot_relationships.py +0 -254
- package/mcps/davinci-resolve-mcp/tests/test_spec_lint_wiring.py +0 -311
- package/mcps/davinci-resolve-mcp/tests/test_static_undefined_names.py +0 -45
- package/mcps/davinci-resolve-mcp/tests/test_structural_diff.py +0 -67
- package/mcps/davinci-resolve-mcp/tests/test_sync_detection.py +0 -213
- package/mcps/davinci-resolve-mcp/tests/test_thumbnail_image.py +0 -55
- package/mcps/davinci-resolve-mcp/tests/test_timeline_brain_db.py +0 -230
- package/mcps/davinci-resolve-mcp/tests/test_timeline_conform_probe.py +0 -229
- package/mcps/davinci-resolve-mcp/tests/test_timeline_editorial_helpers.py +0 -88
- package/mcps/davinci-resolve-mcp/tests/test_timeline_export_enum.py +0 -59
- package/mcps/davinci-resolve-mcp/tests/test_timeline_kernel_probe.py +0 -70
- package/mcps/davinci-resolve-mcp/tests/test_timeline_title_text_utils.py +0 -64
- package/mcps/davinci-resolve-mcp/tests/test_timeline_versioning.py +0 -419
- package/mcps/davinci-resolve-mcp/tests/test_tool_choice_hint.py +0 -42
- package/mcps/davinci-resolve-mcp/tests/test_tool_exposure.py +0 -159
- package/mcps/davinci-resolve-mcp/tests/test_tool_registration.py +0 -91
- package/mcps/davinci-resolve-mcp/tests/test_transcript_read.py +0 -74
- package/mcps/davinci-resolve-mcp/tests/test_update_check.py +0 -171
- package/mcps/davinci-resolve-mcp/tests/test_update_hardening.py +0 -171
- package/mcps/davinci-resolve-mcp/tests/test_update_history.py +0 -116
- package/mcps/davinci-resolve-mcp/tests/test_v232_helpers.py +0 -265
- package/mcps/davinci-resolve-mcp/tests/test_v233_helpers.py +0 -307
- package/mcps/davinci-resolve-mcp/tests/test_validation_guards.py +0 -108
- package/mcps/davinci-resolve-mcp/tests/test_verification_stats.py +0 -32
- package/mcps/davinci-resolve-mcp/tests/test_waveb_p2_p3.py +0 -65
- package/mcps/golem-rhino-mcp/Nexus-AI-Agents.png +0 -0
- package/mcps/golem-rhino-mcp/docs/ARCHITECTURE.md +0 -277
- package/mcps/golem-rhino-mcp/docs/PROTOCOL.md +0 -247
- package/mcps/golem-rhino-mcp/docs/TOOL_REFERENCE.md +0 -1571
- package/mcps/golem-rhino-mcp/docs/TROUBLESHOOTING.md +0 -396
- package/mcps/golem-rhino-mcp/mcp_server/Screenshot 2026-03-20 at 18.33.06.png +0 -0
- package/mcps/golem-rhino-mcp/mcp_server/Screenshot 2026-03-21 at 1.43.01.png +0 -0
- package/mcps/golem-rhino-mcp/nexus-pngs/CAIO.png +0 -0
- package/mcps/golem-rhino-mcp/nexus-pngs/CEO.png +0 -0
- package/mcps/golem-rhino-mcp/nexus-pngs/CFO.png +0 -0
- package/mcps/golem-rhino-mcp/nexus-pngs/CHRO.png +0 -0
- package/mcps/golem-rhino-mcp/nexus-pngs/CISO.png +0 -0
- package/mcps/golem-rhino-mcp/nexus-pngs/CLO.png +0 -0
- package/mcps/golem-rhino-mcp/nexus-pngs/CMO.png +0 -0
- package/mcps/golem-rhino-mcp/nexus-pngs/COO.png +0 -0
- package/mcps/golem-rhino-mcp/nexus-pngs/CPO.png +0 -0
- package/mcps/golem-rhino-mcp/nexus-pngs/CRO.png +0 -0
- package/mcps/golem-rhino-mcp/nexus-pngs/CTO.png +0 -0
- package/mcps/golem-rhino-mcp/nexus-pngs/king-hippo.png +0 -0
- package/mcps/golem-rhino-mcp/nexus-pngs/tier-0-csuite.png +0 -0
- package/mcps/golem-rhino-mcp/screenshots/city_monument.png +0 -0
- package/mcps/golem-rhino-mcp/screenshots/city_skyline.png +0 -0
- package/mcps/golem-rhino-mcp/screenshots/city_street.png +0 -0
- package/mcps/golem-rhino-mcp/screenshots/city_wide.png +0 -0
- package/mcps/golem-rhino-mcp/tests/__init__.py +0 -0
- package/mcps/golem-rhino-mcp/tests/conftest.py +0 -150
- package/mcps/golem-rhino-mcp/tests/test_connection.py +0 -543
- package/mcps/golem-rhino-mcp/tests/test_integration.py +0 -344
- package/mcps/golem-rhino-mcp/tests/test_models.py +0 -749
- package/mcps/golem-rhino-mcp/tests/test_protocol.py +0 -334
- package/mcps/golem-rhino-mcp/tests/test_tools_mock.py +0 -689
- package/mcps/tdmcp/.github/social-preview.png +0 -0
- package/mcps/tdmcp/docs/.vitepress/config.ts +0 -397
- package/mcps/tdmcp/docs/AI_PARTY_LLM_TRAINING_PLAN.md +0 -118
- package/mcps/tdmcp/docs/AI_PARTY_POC.md +0 -142
- package/mcps/tdmcp/docs/AI_PARTY_POC_PLAN.md +0 -112
- package/mcps/tdmcp/docs/CREATIVE_RAG.md +0 -346
- package/mcps/tdmcp/docs/DEPLOYMENT.md +0 -113
- package/mcps/tdmcp/docs/PROJECT_RAG.md +0 -477
- package/mcps/tdmcp/docs/ROADMAP.md +0 -1346
- package/mcps/tdmcp/docs/guide/ai-controlled-party.md +0 -215
- package/mcps/tdmcp/docs/guide/body-tracking.md +0 -169
- package/mcps/tdmcp/docs/guide/codex.md +0 -107
- package/mcps/tdmcp/docs/guide/components.md +0 -126
- package/mcps/tdmcp/docs/guide/dashboard-foh.md +0 -93
- package/mcps/tdmcp/docs/guide/faq.md +0 -62
- package/mcps/tdmcp/docs/guide/first-visual.md +0 -76
- package/mcps/tdmcp/docs/guide/generators.md +0 -230
- package/mcps/tdmcp/docs/guide/glossary.md +0 -123
- package/mcps/tdmcp/docs/guide/install.md +0 -200
- package/mcps/tdmcp/docs/guide/local-copilot.md +0 -154
- package/mcps/tdmcp/docs/guide/lops-integration.md +0 -133
- package/mcps/tdmcp/docs/guide/mcp-resources.md +0 -96
- package/mcps/tdmcp/docs/guide/mediapipe-adapters.md +0 -90
- package/mcps/tdmcp/docs/guide/physical-installations.md +0 -129
- package/mcps/tdmcp/docs/guide/prompt-cookbook.md +0 -2285
- package/mcps/tdmcp/docs/guide/recipes.md +0 -72
- package/mcps/tdmcp/docs/guide/session-profile.md +0 -90
- package/mcps/tdmcp/docs/guide/shader-park.md +0 -94
- package/mcps/tdmcp/docs/guide/show-timelines.md +0 -125
- package/mcps/tdmcp/docs/guide/troubleshooting.md +0 -121
- package/mcps/tdmcp/docs/guide/what-is-tdmcp.md +0 -62
- package/mcps/tdmcp/docs/index.md +0 -49
- package/mcps/tdmcp/docs/privacy.md +0 -85
- package/mcps/tdmcp/docs/pt/CREATIVE_RAG.md +0 -370
- package/mcps/tdmcp/docs/pt/PROJECT_RAG.md +0 -420
- package/mcps/tdmcp/docs/pt/guide/ai-controlled-party.md +0 -218
- package/mcps/tdmcp/docs/pt/guide/body-tracking.md +0 -175
- package/mcps/tdmcp/docs/pt/guide/codex.md +0 -113
- package/mcps/tdmcp/docs/pt/guide/components.md +0 -129
- package/mcps/tdmcp/docs/pt/guide/dashboard-foh.md +0 -95
- package/mcps/tdmcp/docs/pt/guide/faq.md +0 -62
- package/mcps/tdmcp/docs/pt/guide/first-visual.md +0 -81
- package/mcps/tdmcp/docs/pt/guide/generators.md +0 -243
- package/mcps/tdmcp/docs/pt/guide/glossary.md +0 -127
- package/mcps/tdmcp/docs/pt/guide/install.md +0 -196
- package/mcps/tdmcp/docs/pt/guide/local-copilot.md +0 -164
- package/mcps/tdmcp/docs/pt/guide/lops-integration.md +0 -143
- package/mcps/tdmcp/docs/pt/guide/mcp-resources.md +0 -96
- package/mcps/tdmcp/docs/pt/guide/mediapipe-adapters.md +0 -93
- package/mcps/tdmcp/docs/pt/guide/physical-installations.md +0 -135
- package/mcps/tdmcp/docs/pt/guide/prompt-cookbook.md +0 -2342
- package/mcps/tdmcp/docs/pt/guide/recipes.md +0 -59
- package/mcps/tdmcp/docs/pt/guide/session-profile.md +0 -92
- package/mcps/tdmcp/docs/pt/guide/shader-park.md +0 -95
- package/mcps/tdmcp/docs/pt/guide/show-timelines.md +0 -128
- package/mcps/tdmcp/docs/pt/guide/troubleshooting.md +0 -109
- package/mcps/tdmcp/docs/pt/guide/what-is-tdmcp.md +0 -61
- package/mcps/tdmcp/docs/pt/index.md +0 -49
- package/mcps/tdmcp/docs/pt/privacy.md +0 -91
- package/mcps/tdmcp/docs/pt/reference/architecture.md +0 -178
- package/mcps/tdmcp/docs/pt/reference/environment.md +0 -70
- package/mcps/tdmcp/docs/public/favicon.svg +0 -12
- package/mcps/tdmcp/docs/public/logo-400.png +0 -0
- package/mcps/tdmcp/docs/public/og-image.jpg +0 -0
- package/mcps/tdmcp/docs/public/robots.txt +0 -4
- package/mcps/tdmcp/docs/reference/API_STABILITY.md +0 -116
- package/mcps/tdmcp/docs/reference/architecture.md +0 -191
- package/mcps/tdmcp/docs/reference/bridge-api.md +0 -155
- package/mcps/tdmcp/docs/reference/cli.md +0 -288
- package/mcps/tdmcp/docs/reference/coverage-harness.md +0 -61
- package/mcps/tdmcp/docs/reference/environment.md +0 -116
- package/mcps/tdmcp/docs/reference/packages.md +0 -98
- package/mcps/tdmcp/docs/reference/tool-contract.md +0 -74
- package/mcps/tdmcp/docs/superpowers/plans/2026-05-29-shader-park-animus-integrations.md +0 -76
- package/mcps/tdmcp/docs/superpowers/plans/2026-06-02-doctor-fix-textport-auto-install.md +0 -131
- package/mcps/tdmcp/docs/superpowers/plans/2026-06-06-body-bubbles.md +0 -138
- package/mcps/tdmcp/docs/superpowers/plans/2026-06-08-deep-doppelganger-implementation.md +0 -201
- package/mcps/tdmcp/docs/superpowers/plans/2026-06-10-ai-party-ollama-integration.md +0 -55
- package/mcps/tdmcp/docs/superpowers/plans/2026-06-24-kinect-wall-harp-calibration-wizard.md +0 -53
- package/mcps/tdmcp/docs/superpowers/plans/2026-06-24-kinect-wall-harp-external-kinect.md +0 -286
- package/mcps/tdmcp/docs/superpowers/specs/2026-05-31-create-vector-lines-design.md +0 -308
- package/mcps/tdmcp/docs/superpowers/specs/2026-06-01-ai-controlled-party-plan.md +0 -461
- package/mcps/tdmcp/docs/superpowers/specs/2026-06-04-ai-party-ui24r-scene-arming-design.md +0 -296
- package/mcps/tdmcp/docs/superpowers/specs/2026-06-08-ai-controlled-party-producer-poc.md +0 -232
- package/mcps/tdmcp/docs/superpowers/specs/2026-06-08-deep-doppelganger-design.md +0 -136
- package/mcps/tdmcp/docs/superpowers/specs/2026-06-10-hermes-ai-party-poc.md +0 -383
- package/mcps/tdmcp/docs/superpowers/specs/2026-06-23-kinect-wall-harp-design.md +0 -340
- package/mcps/tdmcp/docs/superpowers/specs/2026-06-24-kinect-environment-diagnostic-design.md +0 -151
- package/mcps/tdmcp/docs/superpowers/specs/2026-06-24-kinect-wall-harp-external-kinect-design.md +0 -104
- package/mcps/tdmcp/training/showintent/data/curated/.gitkeep +0 -1
- package/mcps/tdmcp/training/showintent/data/curated/curated-approved.jsonl +0 -1
- package/mcps/tdmcp/training/showintent/data/curation_template.csv +0 -1
- package/mcps/tdmcp/training/showintent/data/generated/.gitkeep +0 -1
- package/mcps/tdmcp/training/showintent/data/generated/showintent-synthetic.jsonl +0 -2000
- package/mcps/tdmcp/training/showintent/data/raw/.gitkeep +0 -1
- package/mcps/tdmcp/training/showintent/data/splits/.gitkeep +0 -1
- package/mcps/tdmcp/training/showintent/data/splits/train-compact.jsonl +0 -1800
- package/mcps/tdmcp/training/showintent/data/splits/train.jsonl +0 -1800
- package/mcps/tdmcp/training/showintent/data/splits/validation-compact.jsonl +0 -200
- package/mcps/tdmcp/training/showintent/data/splits/validation.jsonl +0 -200
- package/mcps/touchdesigner-mcp/assets/import.png +0 -0
- package/mcps/touchdesigner-mcp/assets/nodes_list.png +0 -0
- package/mcps/touchdesigner-mcp/assets/particle_on_youtube.png +0 -0
- package/mcps/touchdesigner-mcp/assets/textport.png +0 -0
- package/mcps/touchdesigner-mcp/assets/tutorial.png +0 -0
- package/mcps/touchdesigner-mcp/assets/tutorial_docker.png +0 -0
- package/mcps/touchdesigner-mcp/docs/architecture.md +0 -1245
- package/mcps/touchdesigner-mcp/docs/development.ja.md +0 -197
- package/mcps/touchdesigner-mcp/docs/development.md +0 -212
- package/mcps/touchdesigner-mcp/docs/installation.ja.md +0 -370
- package/mcps/touchdesigner-mcp/docs/installation.md +0 -406
- package/mcps/unreal_mcp/Public/icon.png +0 -0
- package/mcps/unreal_mcp/docs/Engine-API-Reference.md +0 -2251
- package/mcps/unreal_mcp/docs/Roadmap.md +0 -2269
- package/mcps/unreal_mcp/docs/editor-plugin-extension.md +0 -373
- package/mcps/unreal_mcp/docs/handler-mapping.md +0 -1170
- package/mcps/unreal_mcp/docs/native-automation-progress.md +0 -431
- package/mcps/unreal_mcp/docs/testing-guide.md +0 -149
- package/mcps/unreal_mcp/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/Domains/Test/McpAutomationBridge_TestHandlers.cpp +0 -74
- package/mcps/unreal_mcp/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/Tests/McpCustomHandlerAliasTests.cpp +0 -191
- package/mcps/unreal_mcp/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/Tests/McpEnvironmentSnapshotSchemaTests.cpp +0 -192
- package/mcps/unreal_mcp/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/Tests/McpPropertyReflectionImportTests.cpp +0 -269
- package/mcps/unreal_mcp/plugins/UnrealAgent/Source/UnrealAgent/Private/Tests/UnrealAgentAcpClientProtocolAutomation.cpp +0 -152
- package/mcps/unreal_mcp/plugins/UnrealAgent/Source/UnrealAgent/Private/Tests/UnrealAgentAcpProtocolTestHelpers.cpp +0 -136
- package/mcps/unreal_mcp/plugins/UnrealAgent/Source/UnrealAgent/Private/Tests/UnrealAgentAcpProtocolTestHelpers.h +0 -49
- package/mcps/unreal_mcp/plugins/UnrealAgent/Source/UnrealAgent/Private/Tests/UnrealAgentAutomationTestDelegates.h +0 -12
- package/mcps/unreal_mcp/plugins/UnrealAgent/Source/UnrealAgent/Private/Tests/UnrealAgentAutomationTests.cpp +0 -34
- package/mcps/unreal_mcp/plugins/UnrealAgent/Source/UnrealAgent/Private/Tests/UnrealAgentAutomationWidgetHelpers.cpp +0 -116
- package/mcps/unreal_mcp/plugins/UnrealAgent/Source/UnrealAgent/Private/Tests/UnrealAgentAutomationWidgetHelpers.h +0 -15
- package/mcps/unreal_mcp/plugins/UnrealAgent/Source/UnrealAgent/Private/Tests/UnrealAgentFakeAcpScript.cpp +0 -76
- package/mcps/unreal_mcp/plugins/UnrealAgent/Source/UnrealAgent/Private/Tests/UnrealAgentPanelAutomation.h +0 -35
- package/mcps/unreal_mcp/plugins/UnrealAgent/Source/UnrealAgent/Private/Tests/UnrealAgentPanelAutomationFixture.cpp +0 -118
- package/mcps/unreal_mcp/plugins/UnrealAgent/Source/UnrealAgent/Private/Tests/UnrealAgentPanelHistoryChecks.cpp +0 -162
- package/mcps/unreal_mcp/plugins/UnrealAgent/Source/UnrealAgent/Private/Tests/UnrealAgentPanelLayoutChecks.cpp +0 -158
- package/mcps/unreal_mcp/plugins/UnrealAgent/Source/UnrealAgent/Private/Tests/UnrealAgentPanelTranscriptChecks.cpp +0 -117
- package/mcps/unreal_mcp/plugins/UnrealAgent/Source/UnrealAgent/Private/Tests/UnrealAgentStudioKitAutomationChecks.cpp +0 -155
- package/mcps/unreal_mcp/tests/AGENTS.md +0 -73
- package/mcps/unreal_mcp/tests/expectation-utils.mjs +0 -29
- package/mcps/unreal_mcp/tests/heartbeat-progress.test.mjs +0 -143
- package/mcps/unreal_mcp/tests/integration/get_ai_info_characterization.mjs +0 -216
- package/mcps/unreal_mcp/tests/integration.mjs +0 -94
- package/mcps/unreal_mcp/tests/mcp-tools/core/control-actor.test.mjs +0 -114
- package/mcps/unreal_mcp/tests/mcp-tools/core/control-editor.test.mjs +0 -86
- package/mcps/unreal_mcp/tests/mcp-tools/core/inspect.test.mjs +0 -85
- package/mcps/unreal_mcp/tests/mcp-tools/core/manage-asset.test.mjs +0 -302
- package/mcps/unreal_mcp/tests/mcp-tools/core/manage-blueprint.test.mjs +0 -331
- package/mcps/unreal_mcp/tests/mcp-tools/core/manage-level.test.mjs +0 -73
- package/mcps/unreal_mcp/tests/mcp-tools/core/manage-tools.test.mjs +0 -30
- package/mcps/unreal_mcp/tests/mcp-tools/core/system-control.test.mjs +0 -205
- package/mcps/unreal_mcp/tests/mcp-tools/gameplay/animation-physics.test.mjs +0 -277
- package/mcps/unreal_mcp/tests/mcp-tools/gameplay/manage-ai.test.mjs +0 -299
- package/mcps/unreal_mcp/tests/mcp-tools/gameplay/manage-character.test.mjs +0 -85
- package/mcps/unreal_mcp/tests/mcp-tools/gameplay/manage-combat.test.mjs +0 -106
- package/mcps/unreal_mcp/tests/mcp-tools/gameplay/manage-effect.test.mjs +0 -108
- package/mcps/unreal_mcp/tests/mcp-tools/gameplay/manage-gas.test.mjs +0 -96
- package/mcps/unreal_mcp/tests/mcp-tools/gameplay/manage-interaction.test.mjs +0 -122
- package/mcps/unreal_mcp/tests/mcp-tools/gameplay/manage-inventory.test.mjs +0 -146
- package/mcps/unreal_mcp/tests/mcp-tools/utility/behavior-tree-get-tree.test.mjs +0 -233
- package/mcps/unreal_mcp/tests/mcp-tools/utility/manage-audio.test.mjs +0 -160
- package/mcps/unreal_mcp/tests/mcp-tools/utility/manage-behavior-tree.test.mjs +0 -223
- package/mcps/unreal_mcp/tests/mcp-tools/utility/manage-networking.test.mjs +0 -635
- package/mcps/unreal_mcp/tests/mcp-tools/utility/manage-sequence.test.mjs +0 -95
- package/mcps/unreal_mcp/tests/mcp-tools/world/build-environment.test.mjs +0 -282
- package/mcps/unreal_mcp/tests/mcp-tools/world/manage-geometry.test.mjs +0 -130
- package/mcps/unreal_mcp/tests/mcp-tools/world/manage-level-structure.test.mjs +0 -149
- package/mcps/unreal_mcp/tests/mcp-tools/world/manage-pcg.test.mjs +0 -471
- package/mcps/unreal_mcp/tests/mcp-tools/world/rendering-cases.cjs +0 -775
- package/mcps/unreal_mcp/tests/mcp-tools/world/rendering.test.mjs +0 -15
- package/mcps/unreal_mcp/tests/native-mcp-parity-audit.mjs +0 -260
- package/mcps/unreal_mcp/tests/native-mcp-source-parser.mjs +0 -229
- package/mcps/unreal_mcp/tests/native-mcp-typescript-parity-parser.mjs +0 -121
- package/mcps/unreal_mcp/tests/parameter-audit-cli.mjs +0 -23
- package/mcps/unreal_mcp/tests/parameter-audit-context.mjs +0 -14
- package/mcps/unreal_mcp/tests/parameter-audit-coverage.mjs +0 -164
- package/mcps/unreal_mcp/tests/parameter-audit-schema.mjs +0 -190
- package/mcps/unreal_mcp/tests/parameter-audit-suites.mjs +0 -218
- package/mcps/unreal_mcp/tests/parameter-combination-audit.mjs +0 -37
- package/mcps/unreal_mcp/tests/test-runner-response-utils.mjs +0 -132
- package/mcps/unreal_mcp/tests/test-runner.mjs +0 -1798
- package/mcps/unreal_mcp/tests/unit/automation/bridge_host_validation.test.ts +0 -165
- package/mcps/unreal_mcp/tests/unit/config.test.ts +0 -205
- package/mcps/unreal_mcp/tests/unit/native_mcp_parity_audit.test.ts +0 -281
- package/mcps/unreal_mcp/tests/unit/native_mcp_parity_comment_filtering.test.ts +0 -175
- package/mcps/unreal_mcp/tests/unit/parameter_audit_schema.test.ts +0 -273
- package/mcps/unreal_mcp/tests/unit/plugin/automation_event_stream_contracts.test.ts +0 -195
- package/mcps/unreal_mcp/tests/unit/plugin/environment_asset_name_contracts.test.ts +0 -115
- package/mcps/unreal_mcp/tests/unit/plugin/environment_build_adapter_contracts.test.ts +0 -377
- package/mcps/unreal_mcp/tests/unit/plugin/environment_snapshot_path_contracts.test.ts +0 -122
- package/mcps/unreal_mcp/tests/unit/plugin/handler_routing_contracts.test.ts +0 -120
- package/mcps/unreal_mcp/tests/unit/plugin/level_lighting_contracts.test.ts +0 -125
- package/mcps/unreal_mcp/tests/unit/plugin/plugin_manifest_contracts.test.ts +0 -154
- package/mcps/unreal_mcp/tests/unit/plugin/plugin_packaging_contracts.test.ts +0 -124
- package/mcps/unreal_mcp/tests/unit/plugin/runtime_behavior_contracts.test.ts +0 -372
- package/mcps/unreal_mcp/tests/unit/plugin/security_contracts.test.ts +0 -81
- package/mcps/unreal_mcp/tests/unit/plugin/source_structure.test.ts +0 -101
- package/mcps/unreal_mcp/tests/unit/plugin/source_structure_contracts.test.ts +0 -103
- package/mcps/unreal_mcp/tests/unit/plugin/websocket_origin_contracts.test.ts +0 -25
- package/mcps/unreal_mcp/tests/unit/server_shutdown_contracts.test.ts +0 -33
- package/mcps/unreal_mcp/tests/unit/source_structure.test.ts +0 -79
- package/mcps/unreal_mcp/tests/unit/test_runner.test.ts +0 -342
- package/mcps/unreal_mcp/tests/unit/test_runner_response_utils.test.ts +0 -105
- package/mcps/unreal_mcp/tests/unit/tools/asset_handlers_security.test.ts +0 -246
- package/mcps/unreal_mcp/tests/unit/tools/behavior_tree_get_tree.test.ts +0 -20
- package/mcps/unreal_mcp/tests/unit/tools/blueprint_handlers.test.ts +0 -122
- package/mcps/unreal_mcp/tests/unit/tools/editor.test.ts +0 -56
- package/mcps/unreal_mcp/tests/unit/tools/handler_structure.test.ts +0 -59
- package/mcps/unreal_mcp/tests/unit/tools/inspect_handlers.test.ts +0 -231
- package/mcps/unreal_mcp/tests/unit/tools/level.test.ts +0 -56
- package/mcps/unreal_mcp/tests/unit/tools/level_security.test.ts +0 -45
- package/mcps/unreal_mcp/tests/unit/tools/lighting_timeout_propagation.test.ts +0 -123
- package/mcps/windows-computer-use-mcp/cua-reports/app-1781542686.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/bridge-1781542694.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/bridge-ok-1781442393.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/bridge-ok-1781442915.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/bridge-snap-1781444105.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/bridge-snap-1781444214.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/bridge-snap-1781457035.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/cua-smoke-1781440024.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/cua-smoke-1781440234.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/cua-smoke-1781442383.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/cua-smoke-1781442906.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/cua-smoke-1781444096.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/cua-smoke-1781444209.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/cua-smoke-1781457029.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/nav/dashboard-1781542713.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/nav/help-1781542738.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/nav/logging-1781542722.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/nav/nav-dashboard-1781444225.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/nav/nav-dashboard-1781457051.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/nav/nav-help-1781444245.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/nav/nav-help-1781457075.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/nav/nav-logging-1781444232.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/nav/nav-logging-1781457059.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/nav/nav-settings-1781444239.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/nav/nav-settings-1781457067.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/nav/settings-1781542730.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/nav-dashboard-1781442925.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/nav-help-1781442941.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/nav-logging-1781442930.png +0 -0
- package/mcps/windows-computer-use-mcp/cua-reports/nav-settings-1781442936.png +0 -0
- package/mcps/windows-computer-use-mcp/docs/ARCHITECTURE.md +0 -46
- package/mcps/windows-computer-use-mcp/docs/ASSESSMENT_BY_CURSOR_2026-06-14_CUA_NSIS.md +0 -383
- package/mcps/windows-computer-use-mcp/docs/AUTOMATION_ASSERT_SPEC.md +0 -202
- package/mcps/windows-computer-use-mcp/docs/CUA_PARITY.md +0 -39
- package/mcps/windows-computer-use-mcp/docs/DEVELOPMENT.md +0 -51
- package/mcps/windows-computer-use-mcp/docs/MEMOPS_CUA.md +0 -147
- package/mcps/windows-computer-use-mcp/docs/PRD.md +0 -93
- package/mcps/windows-computer-use-mcp/docs/README.md +0 -34
- package/mcps/windows-computer-use-mcp/docs/ROADMAP.md +0 -142
- package/mcps/windows-computer-use-mcp/docs/SAFETY.md +0 -138
- package/mcps/windows-computer-use-mcp/docs/TESTING.md +0 -90
- package/mcps/windows-computer-use-mcp/docs/TOOLS.md +0 -80
- package/mcps/windows-computer-use-mcp/docs/TOOL_DOCSTRING_STANDARD.md +0 -538
- package/mcps/windows-computer-use-mcp/docs/_stale/AHK_VS_PYWINAUTO_COMPARISON.md +0 -353
- package/mcps/windows-computer-use-mcp/docs/_stale/ASSESSMENT.md +0 -54
- package/mcps/windows-computer-use-mcp/docs/_stale/ASSESSMENT_2026-06-08.md +0 -309
- package/mcps/windows-computer-use-mcp/docs/_stale/COMPLETE_DOCUMENTATION_STRUCTURE.md +0 -5
- package/mcps/windows-computer-use-mcp/docs/_stale/CUA_ASSISTANT_TODO.md +0 -84
- package/mcps/windows-computer-use-mcp/docs/_stale/CUA_PARITY_ROADMAP.md +0 -81
- package/mcps/windows-computer-use-mcp/docs/_stale/CUA_ROADMAP.md +0 -306
- package/mcps/windows-computer-use-mcp/docs/_stale/DESKTOP_APP.md +0 -125
- package/mcps/windows-computer-use-mcp/docs/_stale/DOCUMENTATION_INDEX.md +0 -59
- package/mcps/windows-computer-use-mcp/docs/_stale/GLAMA_AI_CRITICISM_ANALYSIS.md +0 -259
- package/mcps/windows-computer-use-mcp/docs/_stale/GLAMA_AI_PLATFORM.md +0 -175
- package/mcps/windows-computer-use-mcp/docs/_stale/GLAMA_AI_RESCAN_GUIDE.md +0 -216
- package/mcps/windows-computer-use-mcp/docs/_stale/GOLD_STATUS_ACHIEVEMENT.md +0 -197
- package/mcps/windows-computer-use-mcp/docs/_stale/LLM_REPO_CONTEXT.md +0 -7
- package/mcps/windows-computer-use-mcp/docs/_stale/MCP_PRODUCTION_CHECKLIST.md +0 -105
- package/mcps/windows-computer-use-mcp/docs/_stale/OFFICE_BACKGROUND_MATRIX.md +0 -19
- package/mcps/windows-computer-use-mcp/docs/_stale/OPERATOR_PROTOCOL.md +0 -37
- package/mcps/windows-computer-use-mcp/docs/_stale/ORGANIZATION_SUMMARY.md +0 -305
- package/mcps/windows-computer-use-mcp/docs/_stale/RENAME-TO-AUTOMATION-MCP.md +0 -191
- package/mcps/windows-computer-use-mcp/docs/_stale/STATUS_REPORT.md +0 -288
- package/mcps/windows-computer-use-mcp/docs/_stale/TARGETS_PAGE_SKETCH.md +0 -977
- package/mcps/windows-computer-use-mcp/docs/_stale/TOOL_DOCSTRING_MIGRATION.md +0 -365
- package/mcps/windows-computer-use-mcp/docs/_stale/USAGE_SCENARIOS.md +0 -697
- package/mcps/windows-computer-use-mcp/docs/_stale/desktop-state-tool.md +0 -464
- package/mcps/windows-computer-use-mcp/docs/_stale/development/README.md +0 -18
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/AI_DEVELOPMENT_RULES.md +0 -928
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/AI_DEVELOPMENT_TOOLS_COMPARISON.md +0 -364
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/BULLETPROOF_MCP_GUIDE.md +0 -793
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/DEBUGGING_LESSONS_LEARNED.md +0 -635
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/DEVELOPMENT_PAIN_POINTS.md +0 -699
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/FILE_VALIDATION_COMPLETE.md +0 -410
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/FILE_VALIDATION_GUIDE.md +0 -575
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/LINK_PARSER_FIX.md +0 -769
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/MCP_SYNC_DEBUGGING_GUIDE.md +0 -512
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/PYTHON_DEPENDENCY_HELL_FIX.md +0 -568
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/PYTHON_SNIPPETS_USAGE_GUIDE.md +0 -717
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/README.md +0 -25
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/SYNC_HEALTH_IMPROVEMENTS_SUMMARY.md +0 -496
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/SYNC_HEALTH_INTEGRATION.md +0 -381
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/SYSTEMATIC_PROJECT_UPDATES.md +0 -532
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/mcp-prompt-templates-vs-docstrings.md +0 -657
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/mcp-tool-docstring-best-practices.md +0 -439
- package/mcps/windows-computer-use-mcp/docs/_stale/development/archive/mcp-tool-documentation-standards.md +0 -1153
- package/mcps/windows-computer-use-mcp/docs/_stale/glama-platform/CI_CD_GLAMA_OPTIMIZATION_GUIDE.md +0 -850
- package/mcps/windows-computer-use-mcp/docs/_stale/glama-platform/GLAMA_AI_CRITICISM_ANALYSIS.md +0 -259
- package/mcps/windows-computer-use-mcp/docs/_stale/glama-platform/GLAMA_AI_OPTIMIZATION_SUMMARY.md +0 -204
- package/mcps/windows-computer-use-mcp/docs/_stale/glama-platform/GLAMA_AI_PLATFORM.md +0 -175
- package/mcps/windows-computer-use-mcp/docs/_stale/glama-platform/GLAMA_AI_RESCAN_GUIDE.md +0 -216
- package/mcps/windows-computer-use-mcp/docs/_stale/glama-platform/GLAMA_GITHUB_APP_SETUP.md +0 -199
- package/mcps/windows-computer-use-mcp/docs/_stale/glama-platform/GLAMA_INTEGRATION.md +0 -181
- package/mcps/windows-computer-use-mcp/docs/_stale/glama-platform/GLAMA_RESCAN_EMAIL.txt +0 -43
- package/mcps/windows-computer-use-mcp/docs/_stale/glama-platform/GOLD_STATUS_ACHIEVEMENT.md +0 -197
- package/mcps/windows-computer-use-mcp/docs/_stale/glama-platform/GOLD_STATUS_UPDATE_2025_10_08.md +0 -378
- package/mcps/windows-computer-use-mcp/docs/_stale/glama-platform/README.md +0 -632
- package/mcps/windows-computer-use-mcp/docs/_stale/legacy/requirements-fastmcp.txt +0 -8
- package/mcps/windows-computer-use-mcp/docs/_stale/legacy/requirements_minimal.txt +0 -4
- package/mcps/windows-computer-use-mcp/docs/_stale/mcp-technical/CLAUDE_DESKTOP_DEBUGGING.md +0 -561
- package/mcps/windows-computer-use-mcp/docs/_stale/mcp-technical/CONTAINERIZATION_GUIDELINES.md +0 -707
- package/mcps/windows-computer-use-mcp/docs/_stale/mcp-technical/MCP_PRODUCTION_CHECKLIST.md +0 -101
- package/mcps/windows-computer-use-mcp/docs/_stale/mcp-technical/MONITORING_STACK_DEPLOYMENT.md +0 -532
- package/mcps/windows-computer-use-mcp/docs/_stale/mcp-technical/README.md +0 -266
- package/mcps/windows-computer-use-mcp/docs/_stale/mcp-technical/TROUBLESHOOTING_FASTMCP_2.12.md +0 -670
- package/mcps/windows-computer-use-mcp/docs/_stale/mcpb-packaging/MCPB_BUILDING_GUIDE.md +0 -1921
- package/mcps/windows-computer-use-mcp/docs/_stale/mcpb-packaging/MCPB_IMPLEMENTATION_SUMMARY.md +0 -387
- package/mcps/windows-computer-use-mcp/docs/_stale/mcpb-packaging/PYPI_PUBLISHING_GUIDE.md +0 -789
- package/mcps/windows-computer-use-mcp/docs/_stale/mcpb-packaging/README.md +0 -404
- package/mcps/windows-computer-use-mcp/docs/_stale/notepadpp/COMMUNITY_AND_SUPPORT.md +0 -976
- package/mcps/windows-computer-use-mcp/docs/_stale/notepadpp/LANGUAGE_SERVER_PROTOCOL_EXPLAINED.md +0 -416
- package/mcps/windows-computer-use-mcp/docs/_stale/notepadpp/MCP_TOOL_CORRUPTION_ISSUE.md +0 -279
- package/mcps/windows-computer-use-mcp/docs/_stale/notepadpp/NOTEPADPP_ALTERNATIVES.md +0 -308
- package/mcps/windows-computer-use-mcp/docs/_stale/notepadpp/NOTEPADPP_COLOR_FIX_2025_10_08.md +0 -187
- package/mcps/windows-computer-use-mcp/docs/_stale/notepadpp/NOTEPADPP_COMPLETE_GUIDE.md +0 -1259
- package/mcps/windows-computer-use-mcp/docs/_stale/notepadpp/NOTEPADPP_NUCLEAR_REINSTALL_2025_10_08.md +0 -196
- package/mcps/windows-computer-use-mcp/docs/_stale/notepadpp/NPP_WHITE_ON_WHITE_BATTLE_PLAN.md +0 -336
- package/mcps/windows-computer-use-mcp/docs/_stale/notepadpp/PLUGIN_ECOSYSTEM_COMPREHENSIVE.md +0 -887
- package/mcps/windows-computer-use-mcp/docs/_stale/notepadpp/README.md +0 -472
- package/mcps/windows-computer-use-mcp/docs/_stale/repository-protection/BACKUP_AND_RECOVERY_GUIDE.md +0 -455
- package/mcps/windows-computer-use-mcp/docs/_stale/repository-protection/BRANCH_PROTECTION_SETTINGS.md +0 -236
- package/mcps/windows-computer-use-mcp/docs/_stale/repository-protection/BRANCH_STRATEGY_AND_AI_WORKFLOW.md +0 -616
- package/mcps/windows-computer-use-mcp/docs/_stale/repository-protection/README.md +0 -333
- package/mcps/windows-computer-use-mcp/docs/_stale/serena/SERENA_COPY_TO_OTHER_REPOS.md +0 -159
- package/mcps/windows-computer-use-mcp/docs/_stale/serena/SERENA_GUIDE.md +0 -632
- package/mcps/windows-computer-use-mcp/docs/_stale/serena/SERENA_INSTALL_AND_TEST.md +0 -569
- package/mcps/windows-computer-use-mcp/docs/_stale/serena/SERENA_NEXT_STEPS.md +0 -351
- package/mcps/windows-computer-use-mcp/docs/_stale/serena/SERENA_QUICK_INSTALL.md +0 -195
- package/mcps/windows-computer-use-mcp/docs/_stale/state-tool-implementation.md +0 -498
- package/mcps/windows-computer-use-mcp/docs/composing-with-playwright.md +0 -55
- package/mcps/windows-computer-use-mcp/docs/cua-nsis-certification.md +0 -101
- package/mcps/windows-computer-use-mcp/docs/ocr.md +0 -107
- package/mcps/windows-computer-use-mcp/docs/py-stack.md +0 -47
- package/mcps/windows-computer-use-mcp/native/icons/icon.png +0 -0
- package/mcps/windows-computer-use-mcp/screenshot_demo.png +0 -0
- package/mcps/windows-computer-use-mcp/src/windows_computer_use_mcp/templates/vroidstudio/default/export_complete_toast.png +0 -0
- package/mcps/windows-computer-use-mcp/src/windows_computer_use_mcp/templates/vroidstudio/default/export_dialog_title.png +0 -0
- package/mcps/windows-computer-use-mcp/src/windows_computer_use_mcp/templates/vroidstudio/default/file_dialog_path_field.png +0 -0
- package/mcps/windows-computer-use-mcp/src/windows_computer_use_mcp/templates/vroidstudio/default/sample_tile_female.png +0 -0
- package/mcps/windows-computer-use-mcp/tests/README.md +0 -155
- package/mcps/windows-computer-use-mcp/tests/__init__.py +0 -1
- package/mcps/windows-computer-use-mcp/tests/conftest.py +0 -281
- package/mcps/windows-computer-use-mcp/tests/conftest_env.py +0 -116
- package/mcps/windows-computer-use-mcp/tests/e2e/conftest.py +0 -96
- package/mcps/windows-computer-use-mcp/tests/e2e/test_libreoffice_cua_loop.py +0 -72
- package/mcps/windows-computer-use-mcp/tests/test_app_integration.py +0 -83
- package/mcps/windows-computer-use-mcp/tests/test_app_profiles.py +0 -28
- package/mcps/windows-computer-use-mcp/tests/test_automation_assert.py +0 -185
- package/mcps/windows-computer-use-mcp/tests/test_automation_dialog.py +0 -43
- package/mcps/windows-computer-use-mcp/tests/test_automation_elements.py +0 -138
- package/mcps/windows-computer-use-mcp/tests/test_automation_keyboard.py +0 -57
- package/mcps/windows-computer-use-mcp/tests/test_automation_mouse.py +0 -57
- package/mcps/windows-computer-use-mcp/tests/test_automation_shortcut.py +0 -41
- package/mcps/windows-computer-use-mcp/tests/test_automation_task.py +0 -115
- package/mcps/windows-computer-use-mcp/tests/test_automation_windows.py +0 -105
- package/mcps/windows-computer-use-mcp/tests/test_cameras_api.py +0 -43
- package/mcps/windows-computer-use-mcp/tests/test_cua_parity.py +0 -51
- package/mcps/windows-computer-use-mcp/tests/test_dependency_failures.py +0 -39
- package/mcps/windows-computer-use-mcp/tests/test_desktop_state.py +0 -99
- package/mcps/windows-computer-use-mcp/tests/test_face_recognition.py +0 -238
- package/mcps/windows-computer-use-mcp/tests/test_face_recognition_api.py +0 -161
- package/mcps/windows-computer-use-mcp/tests/test_images/README.md +0 -28
- package/mcps/windows-computer-use-mcp/tests/test_mission.py +0 -42
- package/mcps/windows-computer-use-mcp/tests/test_portmanteau_windows_mock.py +0 -173
- package/mcps/windows-computer-use-mcp/tests/test_portmanteau_windows_real.py +0 -139
- package/mcps/windows-computer-use-mcp/tests/test_retry.py +0 -26
- package/mcps/windows-computer-use-mcp/tests/test_safety_api.py +0 -24
- package/mcps/windows-computer-use-mcp/tests/test_template_library.py +0 -53
- package/mcps/windows-computer-use-mcp/tests/test_utils.py +0 -185
- package/mcps/windows-computer-use-mcp/web_sota/src-tauri/icons/icon.png +0 -0
- package/skills/global_config/google-sheets-automation/SKILL.md +0 -150
- package/skills/global_config/senior-fullstack/SKILL.md +0 -221
- package/skills/global_config/senior-fullstack/references/architecture_patterns.md +0 -103
- package/skills/global_config/senior-fullstack/references/development_workflows.md +0 -103
- package/skills/global_config/senior-fullstack/references/tech_stack_guide.md +0 -103
- package/skills/global_config/senior-fullstack/scripts/code_quality_analyzer.py +0 -114
- package/skills/global_config/senior-fullstack/scripts/fullstack_scaffolder.py +0 -114
- package/skills/global_config/senior-fullstack/scripts/project_scaffolder.py +0 -114
|
@@ -1,977 +0,0 @@
|
|
|
1
|
-
# Targets Page — Component Sketch
|
|
2
|
-
**For:** web_sota (`web_sota/src/`)
|
|
3
|
-
**Feature:** W1 in ASSESSMENT_2026-06-08.md
|
|
4
|
-
**Route:** `/targets`
|
|
5
|
-
**Stack:** React + Tailwind + shadcn/ui — same as rest of web_sota
|
|
6
|
-
|
|
7
|
-
This document is a Cursor-ready implementation spec. File paths, component names,
|
|
8
|
-
API calls, and state shapes are all concrete. Mock data is clearly marked.
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## File tree to create
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
web_sota/src/
|
|
16
|
-
hooks/
|
|
17
|
-
useHitl.ts ← polls automation_safety(status) every 10s
|
|
18
|
-
useWindowFind.ts ← automation_windows(find, title=...)
|
|
19
|
-
useTaskRunner.ts ← automation_task run/poll/cancel lifecycle
|
|
20
|
-
pages/
|
|
21
|
-
targets.tsx ← page shell: HITL bar + tab strip
|
|
22
|
-
targets/
|
|
23
|
-
notepad.tsx
|
|
24
|
-
libreoffice.tsx
|
|
25
|
-
vroid.tsx
|
|
26
|
-
kicad.tsx
|
|
27
|
-
custom.tsx
|
|
28
|
-
shared.tsx ← AppStatusStrip, QuickActionBar, EvidencePanel components
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Modify:
|
|
32
|
-
- `App.tsx` — add `/targets` route
|
|
33
|
-
- `components/layout/sidebar.tsx` — add Targets nav entry
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## 1. hooks/useHitl.ts
|
|
38
|
-
|
|
39
|
-
```typescript
|
|
40
|
-
import { useCallback, useEffect, useState } from "react";
|
|
41
|
-
import { callMcpTool } from "@/lib/mcpTools";
|
|
42
|
-
|
|
43
|
-
export type HitlStatus = {
|
|
44
|
-
approved: boolean;
|
|
45
|
-
expiresAt: number | null; // Unix timestamp
|
|
46
|
-
killSwitchActive: boolean;
|
|
47
|
-
bypassActive: boolean;
|
|
48
|
-
actionsLast60s: number;
|
|
49
|
-
loading: boolean;
|
|
50
|
-
error: string | null;
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
export function useHitl(pollMs = 10_000) {
|
|
54
|
-
const [status, setStatus] = useState<HitlStatus>({
|
|
55
|
-
approved: false, expiresAt: null, killSwitchActive: false,
|
|
56
|
-
bypassActive: false, actionsLast60s: 0, loading: true, error: null,
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
const refresh = useCallback(async () => {
|
|
60
|
-
const r = await callMcpTool("automation_safety", { operation: "status" });
|
|
61
|
-
if (!r.ok) {
|
|
62
|
-
setStatus(s => ({ ...s, loading: false, error: r.error }));
|
|
63
|
-
return;
|
|
64
|
-
}
|
|
65
|
-
const d = (r.raw.result as any) ?? {};
|
|
66
|
-
const hitl = d.hitl ?? {};
|
|
67
|
-
const snap = d.snapshot ?? {};
|
|
68
|
-
setStatus({
|
|
69
|
-
approved: hitl.safe_window_until > Date.now() / 1000,
|
|
70
|
-
expiresAt: hitl.safe_window_until ?? null,
|
|
71
|
-
killSwitchActive: d.env?.WINDOWS_COMPUTER_USE_MCP_KILL_SWITCH === "1",
|
|
72
|
-
bypassActive: d.env?.WINDOWS_COMPUTER_USE_MCP_BYPASS_HITL === "1",
|
|
73
|
-
actionsLast60s: snap.actions_last_60s ?? 0,
|
|
74
|
-
loading: false,
|
|
75
|
-
error: null,
|
|
76
|
-
});
|
|
77
|
-
}, []);
|
|
78
|
-
|
|
79
|
-
const approve = useCallback(async (minutes = 5) => {
|
|
80
|
-
await callMcpTool("approve_automation", { duration_minutes: minutes });
|
|
81
|
-
await refresh();
|
|
82
|
-
}, [refresh]);
|
|
83
|
-
|
|
84
|
-
useEffect(() => {
|
|
85
|
-
void refresh();
|
|
86
|
-
const id = window.setInterval(() => void refresh(), pollMs);
|
|
87
|
-
return () => clearInterval(id);
|
|
88
|
-
}, [refresh, pollMs]);
|
|
89
|
-
|
|
90
|
-
return { ...status, refresh, approve };
|
|
91
|
-
}
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
## 2. hooks/useWindowFind.ts
|
|
97
|
-
|
|
98
|
-
```typescript
|
|
99
|
-
import { useCallback, useState } from "react";
|
|
100
|
-
import { callMcpTool } from "@/lib/mcpTools";
|
|
101
|
-
|
|
102
|
-
export type WindowFindResult = {
|
|
103
|
-
handle: number | null;
|
|
104
|
-
found: boolean;
|
|
105
|
-
title: string;
|
|
106
|
-
loading: boolean;
|
|
107
|
-
error: string | null;
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
export function useWindowFind(windowTitle: string) {
|
|
111
|
-
const [result, setResult] = useState<WindowFindResult>({
|
|
112
|
-
handle: null, found: false, title: windowTitle, loading: false, error: null,
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
const find = useCallback(async () => {
|
|
116
|
-
setResult(s => ({ ...s, loading: true, error: null }));
|
|
117
|
-
const r = await callMcpTool("automation_windows", {
|
|
118
|
-
operation: "find",
|
|
119
|
-
title: windowTitle,
|
|
120
|
-
partial: true,
|
|
121
|
-
});
|
|
122
|
-
if (!r.ok) {
|
|
123
|
-
setResult(s => ({ ...s, loading: false, found: false, handle: null, error: r.error }));
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
// automation_windows find returns data.windows[] (fast path) — take first match
|
|
127
|
-
const data = (r.raw.result as any)?.data ?? (r.raw.result as any)?.structured_content?.data;
|
|
128
|
-
const handle = data?.windows?.[0]?.handle ?? data?.handle ?? null;
|
|
129
|
-
setResult({ handle, found: handle != null, title: windowTitle, loading: false, error: null });
|
|
130
|
-
}, [windowTitle]);
|
|
131
|
-
|
|
132
|
-
return { ...result, find };
|
|
133
|
-
}
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
---
|
|
137
|
-
|
|
138
|
-
## 3. hooks/useTaskRunner.ts
|
|
139
|
-
|
|
140
|
-
```typescript
|
|
141
|
-
import { useCallback, useRef, useState } from "react";
|
|
142
|
-
import { callMcpTool } from "@/lib/mcpTools";
|
|
143
|
-
|
|
144
|
-
export type StepEvidence = {
|
|
145
|
-
step_index: number;
|
|
146
|
-
kind: string;
|
|
147
|
-
status: "success" | "failed" | "skipped_optional";
|
|
148
|
-
before_screenshot: string | null;
|
|
149
|
-
after_screenshot: string | null;
|
|
150
|
-
error?: string;
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
export type TaskState = {
|
|
154
|
-
taskId: string | null;
|
|
155
|
-
status: "idle" | "running" | "complete" | "failed" | "cancelled";
|
|
156
|
-
currentStep: number;
|
|
157
|
-
totalSteps: number;
|
|
158
|
-
evidence: StepEvidence[];
|
|
159
|
-
error: string | null;
|
|
160
|
-
loading: boolean;
|
|
161
|
-
};
|
|
162
|
-
|
|
163
|
-
const EMPTY: TaskState = {
|
|
164
|
-
taskId: null, status: "idle", currentStep: 0, totalSteps: 0,
|
|
165
|
-
evidence: [], error: null, loading: false,
|
|
166
|
-
};
|
|
167
|
-
|
|
168
|
-
export function useTaskRunner() {
|
|
169
|
-
const [state, setState] = useState<TaskState>(EMPTY);
|
|
170
|
-
const pollRef = useRef<ReturnType<typeof setInterval> | null>(null);
|
|
171
|
-
|
|
172
|
-
const stopPoll = () => {
|
|
173
|
-
if (pollRef.current) { clearInterval(pollRef.current); pollRef.current = null; }
|
|
174
|
-
};
|
|
175
|
-
|
|
176
|
-
const pollStatus = useCallback(async (taskId: string) => {
|
|
177
|
-
const r = await callMcpTool("automation_task", { operation: "status", task_id: taskId });
|
|
178
|
-
if (!r.ok) return;
|
|
179
|
-
const d = r.raw.result as any;
|
|
180
|
-
const finished = ["complete", "failed", "cancelled"].includes(d.status);
|
|
181
|
-
setState(s => ({
|
|
182
|
-
...s,
|
|
183
|
-
status: d.status,
|
|
184
|
-
currentStep: d.current_step ?? s.currentStep,
|
|
185
|
-
totalSteps: d.steps_total ?? s.totalSteps,
|
|
186
|
-
evidence: d.evidence ?? s.evidence,
|
|
187
|
-
error: d.error ?? null,
|
|
188
|
-
loading: !finished,
|
|
189
|
-
}));
|
|
190
|
-
if (finished) stopPoll();
|
|
191
|
-
}, []);
|
|
192
|
-
|
|
193
|
-
const run = useCallback(async (params: {
|
|
194
|
-
app: string;
|
|
195
|
-
steps: object[];
|
|
196
|
-
windowHandle?: number | null;
|
|
197
|
-
outputDir?: string;
|
|
198
|
-
}) => {
|
|
199
|
-
stopPoll();
|
|
200
|
-
setState({ ...EMPTY, status: "running", loading: true, totalSteps: params.steps.length });
|
|
201
|
-
|
|
202
|
-
const r = await callMcpTool("automation_task", {
|
|
203
|
-
operation: "run",
|
|
204
|
-
app: params.app,
|
|
205
|
-
steps: params.steps,
|
|
206
|
-
window_handle: params.windowHandle ?? undefined,
|
|
207
|
-
output_dir: params.outputDir ?? undefined,
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
if (!r.ok) {
|
|
211
|
-
setState(s => ({ ...s, status: "failed", error: r.error, loading: false }));
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
const d = r.raw.result as any;
|
|
216
|
-
const taskId: string = d.task_id;
|
|
217
|
-
const finished = ["complete", "failed", "cancelled"].includes(d.status);
|
|
218
|
-
|
|
219
|
-
setState(s => ({
|
|
220
|
-
...s,
|
|
221
|
-
taskId,
|
|
222
|
-
status: d.status,
|
|
223
|
-
currentStep: d.current_step ?? 0,
|
|
224
|
-
totalSteps: d.steps_total ?? params.steps.length,
|
|
225
|
-
evidence: d.evidence ?? [],
|
|
226
|
-
error: d.error ?? null,
|
|
227
|
-
loading: !finished,
|
|
228
|
-
}));
|
|
229
|
-
|
|
230
|
-
// automation_task is currently synchronous so returns final state immediately.
|
|
231
|
-
// Poll anyway in case it becomes async (F8).
|
|
232
|
-
if (!finished) {
|
|
233
|
-
pollRef.current = setInterval(() => void pollStatus(taskId), 1500);
|
|
234
|
-
}
|
|
235
|
-
}, [pollStatus]);
|
|
236
|
-
|
|
237
|
-
const cancel = useCallback(async () => {
|
|
238
|
-
stopPoll();
|
|
239
|
-
if (!state.taskId) { setState(EMPTY); return; }
|
|
240
|
-
await callMcpTool("automation_task", { operation: "cancel", task_id: state.taskId });
|
|
241
|
-
setState(s => ({ ...s, status: "cancelled", loading: false }));
|
|
242
|
-
}, [state.taskId]);
|
|
243
|
-
|
|
244
|
-
const reset = useCallback(() => { stopPoll(); setState(EMPTY); }, []);
|
|
245
|
-
|
|
246
|
-
return { ...state, run, cancel, reset };
|
|
247
|
-
}
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
---
|
|
251
|
-
|
|
252
|
-
## 4. pages/targets/shared.tsx
|
|
253
|
-
|
|
254
|
-
Reusable sub-components used by every target tab.
|
|
255
|
-
|
|
256
|
-
```tsx
|
|
257
|
-
import { apiPath } from "@/lib/api";
|
|
258
|
-
import { Badge } from "@/components/ui/badge";
|
|
259
|
-
import { Button } from "@/components/ui/button";
|
|
260
|
-
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
|
261
|
-
import { CheckCircle2, Loader2, XCircle, AlertTriangle } from "lucide-react";
|
|
262
|
-
import type { TaskState } from "@/hooks/useTaskRunner";
|
|
263
|
-
import type { WindowFindResult } from "@/hooks/useWindowFind";
|
|
264
|
-
|
|
265
|
-
// ── App Status Strip ─────────────────────────────────────────────────────────
|
|
266
|
-
|
|
267
|
-
type AppStatusStripProps = {
|
|
268
|
-
window: WindowFindResult;
|
|
269
|
-
dispatch: "foreground" | "background";
|
|
270
|
-
onFind: () => void;
|
|
271
|
-
};
|
|
272
|
-
|
|
273
|
-
export function AppStatusStrip({ window: w, dispatch, onFind }: AppStatusStripProps) {
|
|
274
|
-
return (
|
|
275
|
-
<div className="flex items-center gap-3 rounded-md border border-slate-800 bg-slate-950/50 px-4 py-2 text-sm">
|
|
276
|
-
{w.loading
|
|
277
|
-
? <Loader2 className="h-4 w-4 animate-spin text-slate-400" />
|
|
278
|
-
: w.found
|
|
279
|
-
? <CheckCircle2 className="h-4 w-4 text-emerald-400" />
|
|
280
|
-
: <XCircle className="h-4 w-4 text-amber-400" />
|
|
281
|
-
}
|
|
282
|
-
<span className="text-slate-300 font-medium">{w.title}</span>
|
|
283
|
-
{w.found && (
|
|
284
|
-
<Badge variant="outline" className="border-slate-700 text-slate-400 font-mono text-xs">
|
|
285
|
-
HWND {w.handle}
|
|
286
|
-
</Badge>
|
|
287
|
-
)}
|
|
288
|
-
<Badge
|
|
289
|
-
variant="outline"
|
|
290
|
-
className={dispatch === "background"
|
|
291
|
-
? "border-blue-500/40 text-blue-400"
|
|
292
|
-
: "border-amber-500/40 text-amber-400"}
|
|
293
|
-
>
|
|
294
|
-
{dispatch}
|
|
295
|
-
</Badge>
|
|
296
|
-
{w.error && <span className="text-red-400 text-xs truncate">{w.error}</span>}
|
|
297
|
-
<Button variant="ghost" size="sm" className="ml-auto h-7 text-xs" onClick={onFind}>
|
|
298
|
-
Find window
|
|
299
|
-
</Button>
|
|
300
|
-
</div>
|
|
301
|
-
);
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
// ── Evidence Panel ────────────────────────────────────────────────────────────
|
|
305
|
-
|
|
306
|
-
type EvidencePanelProps = { state: TaskState };
|
|
307
|
-
|
|
308
|
-
export function EvidencePanel({ state }: EvidencePanelProps) {
|
|
309
|
-
if (state.status === "idle") return null;
|
|
310
|
-
|
|
311
|
-
return (
|
|
312
|
-
<Card className="border-slate-800 bg-slate-950/50">
|
|
313
|
-
<CardHeader className="pb-2">
|
|
314
|
-
<CardTitle className="text-sm text-slate-300 flex items-center gap-2">
|
|
315
|
-
Evidence trail
|
|
316
|
-
{state.loading && <Loader2 className="h-3 w-3 animate-spin text-slate-400" />}
|
|
317
|
-
{state.status === "complete" && <CheckCircle2 className="h-3 w-3 text-emerald-400" />}
|
|
318
|
-
{state.status === "failed" && <XCircle className="h-3 w-3 text-red-400" />}
|
|
319
|
-
<span className="ml-auto font-normal text-slate-500 text-xs">
|
|
320
|
-
step {state.currentStep} / {state.totalSteps}
|
|
321
|
-
</span>
|
|
322
|
-
</CardTitle>
|
|
323
|
-
</CardHeader>
|
|
324
|
-
<CardContent className="space-y-3">
|
|
325
|
-
{state.error && (
|
|
326
|
-
<div className="rounded border border-red-900/50 bg-red-950/30 px-3 py-2 text-xs text-red-300">
|
|
327
|
-
{state.error}
|
|
328
|
-
</div>
|
|
329
|
-
)}
|
|
330
|
-
{/* Progress bar */}
|
|
331
|
-
{state.totalSteps > 0 && (
|
|
332
|
-
<div className="h-1.5 rounded-full bg-slate-800 overflow-hidden">
|
|
333
|
-
<div
|
|
334
|
-
className="h-full bg-emerald-500 transition-all duration-300"
|
|
335
|
-
style={{ width: `${Math.round((state.currentStep / state.totalSteps) * 100)}%` }}
|
|
336
|
-
/>
|
|
337
|
-
</div>
|
|
338
|
-
)}
|
|
339
|
-
{/* Step cards — most recent first */}
|
|
340
|
-
<div className="space-y-2 max-h-80 overflow-y-auto">
|
|
341
|
-
{[...state.evidence].reverse().map((ev) => (
|
|
342
|
-
<div
|
|
343
|
-
key={ev.step_index}
|
|
344
|
-
className="flex items-start gap-3 rounded border border-slate-800 bg-slate-900/50 p-2 text-xs"
|
|
345
|
-
>
|
|
346
|
-
<span className="shrink-0 text-slate-500">#{ev.step_index}</span>
|
|
347
|
-
<span className={`shrink-0 font-mono ${
|
|
348
|
-
ev.status === "success" ? "text-emerald-400"
|
|
349
|
-
: ev.status === "failed" ? "text-red-400"
|
|
350
|
-
: "text-slate-500"}`}>
|
|
351
|
-
{ev.kind}
|
|
352
|
-
</span>
|
|
353
|
-
{ev.error && <span className="text-red-300 truncate">{ev.error}</span>}
|
|
354
|
-
<div className="ml-auto flex gap-2 shrink-0">
|
|
355
|
-
{ev.before_screenshot && (
|
|
356
|
-
<EvidenceThumb
|
|
357
|
-
path={ev.before_screenshot}
|
|
358
|
-
label="before"
|
|
359
|
-
/>
|
|
360
|
-
)}
|
|
361
|
-
{ev.after_screenshot && (
|
|
362
|
-
<EvidenceThumb
|
|
363
|
-
path={ev.after_screenshot}
|
|
364
|
-
label="after"
|
|
365
|
-
/>
|
|
366
|
-
)}
|
|
367
|
-
</div>
|
|
368
|
-
</div>
|
|
369
|
-
))}
|
|
370
|
-
</div>
|
|
371
|
-
</CardContent>
|
|
372
|
-
</Card>
|
|
373
|
-
);
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
function EvidenceThumb({ path, label }: { path: string; label: string }) {
|
|
377
|
-
// path is an absolute Windows path — extract filename and load via download endpoint
|
|
378
|
-
const filename = path.replace(/\\/g, "/").split("/").pop() ?? path;
|
|
379
|
-
return (
|
|
380
|
-
<a
|
|
381
|
-
href={apiPath(`/api/v1/download/${filename}`)}
|
|
382
|
-
target="_blank"
|
|
383
|
-
rel="noreferrer"
|
|
384
|
-
className="group relative block"
|
|
385
|
-
>
|
|
386
|
-
<img
|
|
387
|
-
src={apiPath(`/api/v1/download/${filename}`)}
|
|
388
|
-
alt={label}
|
|
389
|
-
className="h-12 w-20 rounded object-cover border border-slate-700 group-hover:border-slate-500"
|
|
390
|
-
onError={(e) => { (e.target as HTMLImageElement).style.display = "none"; }}
|
|
391
|
-
/>
|
|
392
|
-
<span className="absolute bottom-0 left-0 rounded-br rounded-tl bg-black/60 px-1 text-[9px] text-slate-300">
|
|
393
|
-
{label}
|
|
394
|
-
</span>
|
|
395
|
-
</a>
|
|
396
|
-
);
|
|
397
|
-
}
|
|
398
|
-
|
|
399
|
-
// ── Step Runner Strip ─────────────────────────────────────────────────────────
|
|
400
|
-
|
|
401
|
-
type StepRunnerProps = {
|
|
402
|
-
templates: Array<{ label: string; steps: object[] }>;
|
|
403
|
-
outputDir: string;
|
|
404
|
-
onOutputDirChange: (v: string) => void;
|
|
405
|
-
onRun: (steps: object[]) => void;
|
|
406
|
-
onCancel: () => void;
|
|
407
|
-
running: boolean;
|
|
408
|
-
};
|
|
409
|
-
|
|
410
|
-
export function StepRunner({
|
|
411
|
-
templates, outputDir, onOutputDirChange, onRun, onCancel, running
|
|
412
|
-
}: StepRunnerProps) {
|
|
413
|
-
const [selectedTemplate, setSelectedTemplate] = useState(0);
|
|
414
|
-
|
|
415
|
-
return (
|
|
416
|
-
<div className="flex flex-wrap items-end gap-3 rounded-md border border-slate-800 bg-slate-950/50 px-4 py-3">
|
|
417
|
-
{templates.length > 0 && (
|
|
418
|
-
<div className="flex flex-col gap-1">
|
|
419
|
-
<label className="text-xs text-slate-400">Template</label>
|
|
420
|
-
<select
|
|
421
|
-
className="h-8 rounded border border-slate-700 bg-slate-900 px-2 text-sm text-slate-200"
|
|
422
|
-
value={selectedTemplate}
|
|
423
|
-
onChange={e => setSelectedTemplate(Number(e.target.value))}
|
|
424
|
-
disabled={running}
|
|
425
|
-
>
|
|
426
|
-
{templates.map((t, i) => (
|
|
427
|
-
<option key={t.label} value={i}>{t.label}</option>
|
|
428
|
-
))}
|
|
429
|
-
</select>
|
|
430
|
-
</div>
|
|
431
|
-
)}
|
|
432
|
-
<div className="flex flex-col gap-1 flex-1 min-w-48">
|
|
433
|
-
<label className="text-xs text-slate-400">Output dir</label>
|
|
434
|
-
<input
|
|
435
|
-
className="h-8 rounded border border-slate-700 bg-slate-900 px-2 text-sm text-slate-200 font-mono"
|
|
436
|
-
value={outputDir}
|
|
437
|
-
onChange={e => onOutputDirChange(e.target.value)}
|
|
438
|
-
placeholder="C:\Users\sandr\AppData\Local\cua-mcp\outputs"
|
|
439
|
-
disabled={running}
|
|
440
|
-
/>
|
|
441
|
-
</div>
|
|
442
|
-
{!running ? (
|
|
443
|
-
<Button
|
|
444
|
-
size="sm"
|
|
445
|
-
className="bg-emerald-600 hover:bg-emerald-700 text-white h-8"
|
|
446
|
-
onClick={() => onRun(templates[selectedTemplate]?.steps ?? [])}
|
|
447
|
-
disabled={templates.length === 0}
|
|
448
|
-
>
|
|
449
|
-
▶ Run
|
|
450
|
-
</Button>
|
|
451
|
-
) : (
|
|
452
|
-
<Button
|
|
453
|
-
size="sm"
|
|
454
|
-
variant="destructive"
|
|
455
|
-
className="h-8"
|
|
456
|
-
onClick={onCancel}
|
|
457
|
-
>
|
|
458
|
-
✕ Cancel
|
|
459
|
-
</Button>
|
|
460
|
-
)}
|
|
461
|
-
</div>
|
|
462
|
-
);
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
// need useState import at top — add to the import line above
|
|
466
|
-
import { useState } from "react";
|
|
467
|
-
```
|
|
468
|
-
|
|
469
|
-
---
|
|
470
|
-
|
|
471
|
-
## 5. pages/targets/notepad.tsx
|
|
472
|
-
|
|
473
|
-
The canary. If this works, the whole stack works.
|
|
474
|
-
|
|
475
|
-
```tsx
|
|
476
|
-
import { useCallback } from "react";
|
|
477
|
-
import { useState } from "react";
|
|
478
|
-
import { Button } from "@/components/ui/button";
|
|
479
|
-
import { Input } from "@/components/ui/input";
|
|
480
|
-
import { callMcpTool } from "@/lib/mcpTools";
|
|
481
|
-
import { useWindowFind } from "@/hooks/useWindowFind";
|
|
482
|
-
import { useTaskRunner } from "@/hooks/useTaskRunner";
|
|
483
|
-
import { AppStatusStrip, EvidencePanel, StepRunner } from "./shared";
|
|
484
|
-
|
|
485
|
-
const NOTEPAD_TEMPLATES = [
|
|
486
|
-
{
|
|
487
|
-
label: "type_and_save",
|
|
488
|
-
steps: [
|
|
489
|
-
{ kind: "focus" },
|
|
490
|
-
{ kind: "shortcut", app: "notepad", action: "new_file" },
|
|
491
|
-
{ kind: "wait_stable", timeout_s: 3 },
|
|
492
|
-
// text injected at runtime via makeSteps()
|
|
493
|
-
],
|
|
494
|
-
},
|
|
495
|
-
];
|
|
496
|
-
|
|
497
|
-
function makeTypeSteps(text: string, outputDir: string) {
|
|
498
|
-
return [
|
|
499
|
-
{ kind: "focus" },
|
|
500
|
-
// automation_keyboard type via task runner — use a raw click + keyboard step
|
|
501
|
-
// until shortcut_engine has a notepad profile; fallback to automation_keyboard
|
|
502
|
-
{ kind: "shortcut", app: "notepad", action: "select_all" },
|
|
503
|
-
{ kind: "sleep", seconds: 0.1 },
|
|
504
|
-
// Note: for typing arbitrary text, automation_task currently needs a
|
|
505
|
-
// custom step kind. Workaround: use automation_keyboard via the tools hub,
|
|
506
|
-
// or add a "type_text" step kind to task_engine (tracked in assessment).
|
|
507
|
-
{ kind: "shortcut", app: "notepad", action: "save" },
|
|
508
|
-
{ kind: "wait_stable", timeout_s: 3 },
|
|
509
|
-
{ kind: "screenshot", name: "notepad_after_save", output_dir: outputDir },
|
|
510
|
-
];
|
|
511
|
-
}
|
|
512
|
-
|
|
513
|
-
export function NotepadTarget() {
|
|
514
|
-
const win = useWindowFind("Notepad");
|
|
515
|
-
const task = useTaskRunner();
|
|
516
|
-
const [text, setText] = useState("Hello from cua-mcp");
|
|
517
|
-
const [outputDir, setOutputDir] = useState("C:\\Users\\sandr\\AppData\\Local\\cua-mcp\\evidence");
|
|
518
|
-
|
|
519
|
-
const quickLaunch = useCallback(async () => {
|
|
520
|
-
// automation_system start_app
|
|
521
|
-
await callMcpTool("automation_system", { operation: "start_app", app: "notepad.exe" });
|
|
522
|
-
setTimeout(() => void win.find(), 1500);
|
|
523
|
-
}, [win]);
|
|
524
|
-
|
|
525
|
-
const quickScreenshot = useCallback(async () => {
|
|
526
|
-
if (!win.handle) return;
|
|
527
|
-
await callMcpTool("automation_visual", {
|
|
528
|
-
operation: "screenshot",
|
|
529
|
-
window_handle: win.handle,
|
|
530
|
-
output_path: `${outputDir}\\notepad_snap.png`,
|
|
531
|
-
});
|
|
532
|
-
}, [win.handle, outputDir]);
|
|
533
|
-
|
|
534
|
-
return (
|
|
535
|
-
<div className="space-y-3">
|
|
536
|
-
<AppStatusStrip window={win} dispatch="background" onFind={win.find} />
|
|
537
|
-
|
|
538
|
-
{/* Quick actions */}
|
|
539
|
-
<div className="flex flex-wrap gap-2">
|
|
540
|
-
<Button size="sm" variant="outline" onClick={quickLaunch}>Launch</Button>
|
|
541
|
-
<Button size="sm" variant="outline" onClick={win.find}>Find window</Button>
|
|
542
|
-
<Button size="sm" variant="outline" onClick={quickScreenshot} disabled={!win.found}>
|
|
543
|
-
Screenshot
|
|
544
|
-
</Button>
|
|
545
|
-
<div className="flex items-center gap-2 ml-auto">
|
|
546
|
-
<Input
|
|
547
|
-
className="h-8 w-56 bg-slate-950 border-slate-700 text-sm"
|
|
548
|
-
placeholder="Text to type..."
|
|
549
|
-
value={text}
|
|
550
|
-
onChange={e => setText(e.target.value)}
|
|
551
|
-
/>
|
|
552
|
-
<Button
|
|
553
|
-
size="sm"
|
|
554
|
-
variant="outline"
|
|
555
|
-
disabled={!win.found || task.loading}
|
|
556
|
-
onClick={() => task.run({ app: "notepad", steps: makeTypeSteps(text, outputDir), windowHandle: win.handle, outputDir })}
|
|
557
|
-
>
|
|
558
|
-
Type + Save
|
|
559
|
-
</Button>
|
|
560
|
-
</div>
|
|
561
|
-
</div>
|
|
562
|
-
|
|
563
|
-
<StepRunner
|
|
564
|
-
templates={NOTEPAD_TEMPLATES}
|
|
565
|
-
outputDir={outputDir}
|
|
566
|
-
onOutputDirChange={setOutputDir}
|
|
567
|
-
onRun={steps => task.run({ app: "notepad", steps, windowHandle: win.handle, outputDir })}
|
|
568
|
-
onCancel={task.cancel}
|
|
569
|
-
running={task.loading}
|
|
570
|
-
/>
|
|
571
|
-
|
|
572
|
-
<EvidencePanel state={task} />
|
|
573
|
-
</div>
|
|
574
|
-
);
|
|
575
|
-
}
|
|
576
|
-
```
|
|
577
|
-
|
|
578
|
-
---
|
|
579
|
-
|
|
580
|
-
## 6. pages/targets/vroid.tsx
|
|
581
|
-
|
|
582
|
-
The flagship. Most complexity here is in the template picker and the stable region visualizer.
|
|
583
|
-
|
|
584
|
-
```tsx
|
|
585
|
-
import { useCallback, useEffect, useState } from "react";
|
|
586
|
-
import { Button } from "@/components/ui/button";
|
|
587
|
-
import { Badge } from "@/components/ui/badge";
|
|
588
|
-
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
|
|
589
|
-
import { callMcpTool } from "@/lib/mcpTools";
|
|
590
|
-
import { apiPath } from "@/lib/api";
|
|
591
|
-
import { useWindowFind } from "@/hooks/useWindowFind";
|
|
592
|
-
import { useTaskRunner } from "@/hooks/useTaskRunner";
|
|
593
|
-
import { AppStatusStrip, EvidencePanel, StepRunner } from "./shared";
|
|
594
|
-
|
|
595
|
-
// Stable region from app_profiles.py — will be read from API when F7 (hot-reload) lands
|
|
596
|
-
const VROID_STABLE_REGION = { left: 280, top: 120, right: 1640, bottom: 980 };
|
|
597
|
-
|
|
598
|
-
// Built-in minimal export template — mirrors F3 from the feature list
|
|
599
|
-
const VROID_BUILTIN_TEMPLATES = [
|
|
600
|
-
{
|
|
601
|
-
label: "quick_export (sample female)",
|
|
602
|
-
steps: [
|
|
603
|
-
{ kind: "preflight", min_memory_mb: 4096, min_disk_mb: 500 },
|
|
604
|
-
{ kind: "focus" },
|
|
605
|
-
{ kind: "shortcut", app: "vroidstudio", action: "new_project" },
|
|
606
|
-
{ kind: "wait_stable", timeout_s: 12, stable_frames_required: 3,
|
|
607
|
-
region_left: 280, region_top: 120, region_right: 1640, region_bottom: 980 },
|
|
608
|
-
// click sample tile — coordinates from env; will be replaced by F9 (grid mapping)
|
|
609
|
-
{ kind: "click", x: 640, y: 420, button: "left" },
|
|
610
|
-
{ kind: "wait_stable", timeout_s: 10,
|
|
611
|
-
region_left: 280, region_top: 120, region_right: 1640, region_bottom: 980 },
|
|
612
|
-
{ kind: "shortcut", app: "vroidstudio", action: "export_vrm" },
|
|
613
|
-
{ kind: "wait_stable", timeout_s: 5 },
|
|
614
|
-
// dialog: path injected at runtime
|
|
615
|
-
{ kind: "screenshot", name: "vroid_after_export" },
|
|
616
|
-
],
|
|
617
|
-
},
|
|
618
|
-
{
|
|
619
|
-
label: "focus + screenshot only",
|
|
620
|
-
steps: [
|
|
621
|
-
{ kind: "focus" },
|
|
622
|
-
{ kind: "wait_stable", timeout_s: 5,
|
|
623
|
-
region_left: 280, region_top: 120, region_right: 1640, region_bottom: 980 },
|
|
624
|
-
{ kind: "screenshot", name: "vroid_state_check" },
|
|
625
|
-
],
|
|
626
|
-
},
|
|
627
|
-
];
|
|
628
|
-
|
|
629
|
-
export function VRoidTarget() {
|
|
630
|
-
const win = useWindowFind("VRoid Studio");
|
|
631
|
-
const task = useTaskRunner();
|
|
632
|
-
const [outputDir, setOutputDir] = useState("C:\\Users\\sandr\\Documents\\vroid_exports");
|
|
633
|
-
const [lastScreenshot, setLastScreenshot] = useState<string | null>(null);
|
|
634
|
-
const [archetypes, setArchetypes] = useState<string[]>([]);
|
|
635
|
-
|
|
636
|
-
// Load archetype list from vroidstudio-mcp if available (port 10881)
|
|
637
|
-
// Falls back to built-in templates if not reachable
|
|
638
|
-
useEffect(() => {
|
|
639
|
-
fetch("http://localhost:10881/api/v1/control/tool", {
|
|
640
|
-
method: "POST",
|
|
641
|
-
headers: { "Content-Type": "application/json" },
|
|
642
|
-
body: JSON.stringify({ tool: "vroid_studio", arguments: { operation: "list_archetypes" } }),
|
|
643
|
-
})
|
|
644
|
-
.then(r => r.json())
|
|
645
|
-
.then(d => {
|
|
646
|
-
const ids: string[] = (d.archetypes ?? []).map((a: any) => a.id ?? a);
|
|
647
|
-
if (ids.length > 0) setArchetypes(ids);
|
|
648
|
-
})
|
|
649
|
-
.catch(() => {/* vroidstudio-mcp not running — use built-in templates */});
|
|
650
|
-
}, []);
|
|
651
|
-
|
|
652
|
-
const quickScreenshot = useCallback(async () => {
|
|
653
|
-
if (!win.handle) return;
|
|
654
|
-
const r = await callMcpTool("automation_visual", {
|
|
655
|
-
operation: "screenshot",
|
|
656
|
-
window_handle: win.handle,
|
|
657
|
-
output_path: `${outputDir}\\vroid_snap.png`,
|
|
658
|
-
});
|
|
659
|
-
if (r.ok) setLastScreenshot(`${outputDir}\\vroid_snap.png`);
|
|
660
|
-
}, [win.handle, outputDir]);
|
|
661
|
-
|
|
662
|
-
const quickNewProject = useCallback(async () => {
|
|
663
|
-
if (!win.handle) return;
|
|
664
|
-
await callMcpTool("automation_shortcut", {
|
|
665
|
-
app: "vroidstudio",
|
|
666
|
-
action: "new_project",
|
|
667
|
-
window_handle: win.handle,
|
|
668
|
-
});
|
|
669
|
-
}, [win.handle]);
|
|
670
|
-
|
|
671
|
-
const quickExport = useCallback(async () => {
|
|
672
|
-
if (!win.handle) return;
|
|
673
|
-
await callMcpTool("automation_shortcut", {
|
|
674
|
-
app: "vroidstudio",
|
|
675
|
-
action: "export_vrm",
|
|
676
|
-
window_handle: win.handle,
|
|
677
|
-
});
|
|
678
|
-
}, [win.handle]);
|
|
679
|
-
|
|
680
|
-
// Inject output_dir into dialog steps at run time
|
|
681
|
-
const handleRun = useCallback((steps: object[]) => {
|
|
682
|
-
const patched = steps.map((s: any) =>
|
|
683
|
-
s.kind === "dialog" ? { ...s, path: `${outputDir}\\export.vrm` }
|
|
684
|
-
: s.kind === "screenshot" ? { ...s, output_dir: outputDir }
|
|
685
|
-
: s
|
|
686
|
-
);
|
|
687
|
-
task.run({ app: "vroidstudio", steps: patched, windowHandle: win.handle, outputDir });
|
|
688
|
-
}, [task, win.handle, outputDir]);
|
|
689
|
-
|
|
690
|
-
const allTemplates = [
|
|
691
|
-
...VROID_BUILTIN_TEMPLATES,
|
|
692
|
-
...archetypes.map(id => ({
|
|
693
|
-
label: `archetype: ${id}`,
|
|
694
|
-
// These call vroidstudio-mcp directly — not automation_task
|
|
695
|
-
// Shown as informational; actual run goes through vroidstudio-mcp REST
|
|
696
|
-
steps: [{ kind: "shortcut", app: "vroidstudio", action: "via_vroidstudio_mcp", archetype_id: id }],
|
|
697
|
-
})),
|
|
698
|
-
];
|
|
699
|
-
|
|
700
|
-
return (
|
|
701
|
-
<div className="space-y-3">
|
|
702
|
-
<AppStatusStrip window={win} dispatch="foreground" onFind={win.find} />
|
|
703
|
-
|
|
704
|
-
{/* Quick actions */}
|
|
705
|
-
<div className="flex flex-wrap gap-2">
|
|
706
|
-
<Button size="sm" variant="outline" onClick={win.find}>Find window</Button>
|
|
707
|
-
<Button size="sm" variant="outline" onClick={quickNewProject} disabled={!win.found}>
|
|
708
|
-
New project (Ctrl+N)
|
|
709
|
-
</Button>
|
|
710
|
-
<Button size="sm" variant="outline" onClick={quickExport} disabled={!win.found}>
|
|
711
|
-
Export VRM (F8)
|
|
712
|
-
</Button>
|
|
713
|
-
<Button size="sm" variant="outline" onClick={quickScreenshot} disabled={!win.found}>
|
|
714
|
-
Screenshot
|
|
715
|
-
</Button>
|
|
716
|
-
</div>
|
|
717
|
-
|
|
718
|
-
<StepRunner
|
|
719
|
-
templates={allTemplates}
|
|
720
|
-
outputDir={outputDir}
|
|
721
|
-
onOutputDirChange={setOutputDir}
|
|
722
|
-
onRun={handleRun}
|
|
723
|
-
onCancel={task.cancel}
|
|
724
|
-
running={task.loading}
|
|
725
|
-
/>
|
|
726
|
-
|
|
727
|
-
{/* Stable region visualizer */}
|
|
728
|
-
{lastScreenshot && (
|
|
729
|
-
<StableRegionVisualizer screenshotPath={lastScreenshot} region={VROID_STABLE_REGION} />
|
|
730
|
-
)}
|
|
731
|
-
|
|
732
|
-
<EvidencePanel state={task} />
|
|
733
|
-
</div>
|
|
734
|
-
);
|
|
735
|
-
}
|
|
736
|
-
|
|
737
|
-
// Overlay the stable region bounding box on the last screenshot.
|
|
738
|
-
// Makes miscalibration immediately visible.
|
|
739
|
-
function StableRegionVisualizer({
|
|
740
|
-
screenshotPath,
|
|
741
|
-
region,
|
|
742
|
-
}: {
|
|
743
|
-
screenshotPath: string;
|
|
744
|
-
region: typeof VROID_STABLE_REGION;
|
|
745
|
-
}) {
|
|
746
|
-
const filename = screenshotPath.replace(/\\/g, "/").split("/").pop() ?? screenshotPath;
|
|
747
|
-
const src = apiPath(`/api/v1/download/${filename}`);
|
|
748
|
-
// We don't know rendered image dimensions until load — use a relative approach.
|
|
749
|
-
// The overlay rect is expressed as percentage of native screenshot resolution (1920×1080 assumed).
|
|
750
|
-
// TODO: read actual dimensions from assert_engine or store them in evidence.
|
|
751
|
-
const W = 1920; const H = 1080;
|
|
752
|
-
const pct = {
|
|
753
|
-
left: `${(region.left / W * 100).toFixed(2)}%`,
|
|
754
|
-
top: `${(region.top / H * 100).toFixed(2)}%`,
|
|
755
|
-
width: `${((region.right - region.left) / W * 100).toFixed(2)}%`,
|
|
756
|
-
height: `${((region.bottom - region.top) / H * 100).toFixed(2)}%`,
|
|
757
|
-
};
|
|
758
|
-
|
|
759
|
-
return (
|
|
760
|
-
<Card className="border-slate-800 bg-slate-950/50">
|
|
761
|
-
<CardHeader className="pb-2">
|
|
762
|
-
<CardTitle className="text-xs text-slate-400 font-normal">
|
|
763
|
-
Stable region overlay{" "}
|
|
764
|
-
<span className="font-mono text-slate-500">
|
|
765
|
-
({region.left},{region.top}) → ({region.right},{region.bottom})
|
|
766
|
-
</span>
|
|
767
|
-
<Badge variant="outline" className="ml-2 border-amber-500/30 text-amber-400 text-[10px]">
|
|
768
|
-
hardcoded 1920×1080
|
|
769
|
-
</Badge>
|
|
770
|
-
</CardTitle>
|
|
771
|
-
</CardHeader>
|
|
772
|
-
<CardContent>
|
|
773
|
-
<div className="relative inline-block max-w-full">
|
|
774
|
-
<img src={src} alt="last screenshot" className="max-w-full rounded border border-slate-800" />
|
|
775
|
-
<div
|
|
776
|
-
className="absolute border-2 border-emerald-400/70 bg-emerald-400/5 pointer-events-none"
|
|
777
|
-
style={{ left: pct.left, top: pct.top, width: pct.width, height: pct.height }}
|
|
778
|
-
/>
|
|
779
|
-
</div>
|
|
780
|
-
</CardContent>
|
|
781
|
-
</Card>
|
|
782
|
-
);
|
|
783
|
-
}
|
|
784
|
-
```
|
|
785
|
-
|
|
786
|
-
---
|
|
787
|
-
|
|
788
|
-
## 7. pages/targets/kicad.tsx (abbreviated)
|
|
789
|
-
|
|
790
|
-
KiCad profile needs to be added to `app_profiles.py` first. The tab structure is identical to LibreOffice — shown abbreviated.
|
|
791
|
-
|
|
792
|
-
```tsx
|
|
793
|
-
// Quick actions: Open project, Run DRC, Export Gerbers, Export BOM
|
|
794
|
-
// App profile: dispatch=foreground, keyboard_backend=win32
|
|
795
|
-
// Templates: kicad_open_and_drc, kicad_export_gerbers
|
|
796
|
-
// Shortcut registry entries needed in shortcut_engine.py:
|
|
797
|
-
// open_project: ["ctrl", "o"]
|
|
798
|
-
// run_drc: ["alt", "t", "d"] — Tools > Design Rules Checker
|
|
799
|
-
// export_gerbers: ["alt", "f", "b"] — File > Fabrication Outputs > Gerbers
|
|
800
|
-
// export_bom: ["alt", "t", "b"] — Tools > Generate BOM
|
|
801
|
-
// Window title: "KiCad" (partial match — covers "KiCad 8.0.x" etc.)
|
|
802
|
-
```
|
|
803
|
-
|
|
804
|
-
Add to `app_profiles.py`:
|
|
805
|
-
|
|
806
|
-
```python
|
|
807
|
-
"kicad": AppProfile(
|
|
808
|
-
app_id="kicad",
|
|
809
|
-
window_title="KiCad",
|
|
810
|
-
dispatch="foreground",
|
|
811
|
-
keyboard_backend="win32",
|
|
812
|
-
description="EDA — schematic/PCB design, no API, shortcut-first",
|
|
813
|
-
stable_region=RegionMask(0, 80, 1920, 1040, label="canvas"),
|
|
814
|
-
template_version="default",
|
|
815
|
-
),
|
|
816
|
-
```
|
|
817
|
-
|
|
818
|
-
---
|
|
819
|
-
|
|
820
|
-
## 8. pages/targets.tsx (page shell)
|
|
821
|
-
|
|
822
|
-
```tsx
|
|
823
|
-
import { useState } from "react";
|
|
824
|
-
import { Shield, ShieldCheck, ShieldOff, Timer } from "lucide-react";
|
|
825
|
-
import { Badge } from "@/components/ui/badge";
|
|
826
|
-
import { Button } from "@/components/ui/button";
|
|
827
|
-
import { useHitl } from "@/hooks/useHitl";
|
|
828
|
-
import { NotepadTarget } from "./targets/notepad";
|
|
829
|
-
import { LibreOfficeTarget } from "./targets/libreoffice";
|
|
830
|
-
import { VRoidTarget } from "./targets/vroid";
|
|
831
|
-
import { KiCadTarget } from "./targets/kicad";
|
|
832
|
-
import { CustomTarget } from "./targets/custom";
|
|
833
|
-
|
|
834
|
-
const TABS = [
|
|
835
|
-
{ id: "notepad", label: "Notepad", component: NotepadTarget },
|
|
836
|
-
{ id: "libreoffice", label: "LibreOffice", component: LibreOfficeTarget },
|
|
837
|
-
{ id: "vroid", label: "VRoid Studio", component: VRoidTarget },
|
|
838
|
-
{ id: "kicad", label: "KiCad", component: KiCadTarget },
|
|
839
|
-
{ id: "custom", label: "Custom", component: CustomTarget },
|
|
840
|
-
] as const;
|
|
841
|
-
|
|
842
|
-
type TabId = typeof TABS[number]["id"];
|
|
843
|
-
|
|
844
|
-
function HitlBar() {
|
|
845
|
-
const hitl = useHitl();
|
|
846
|
-
|
|
847
|
-
const secondsLeft = hitl.expiresAt
|
|
848
|
-
? Math.max(0, Math.round(hitl.expiresAt - Date.now() / 1000))
|
|
849
|
-
: 0;
|
|
850
|
-
|
|
851
|
-
return (
|
|
852
|
-
<div className="flex items-center gap-3 rounded-md border border-slate-800 bg-slate-900/80 px-4 py-2 text-sm">
|
|
853
|
-
{hitl.killSwitchActive ? (
|
|
854
|
-
<ShieldOff className="h-4 w-4 text-red-400" />
|
|
855
|
-
) : hitl.approved ? (
|
|
856
|
-
<ShieldCheck className="h-4 w-4 text-emerald-400" />
|
|
857
|
-
) : (
|
|
858
|
-
<Shield className="h-4 w-4 text-amber-400" />
|
|
859
|
-
)}
|
|
860
|
-
|
|
861
|
-
<span className="text-slate-300 font-medium">HITL</span>
|
|
862
|
-
|
|
863
|
-
{hitl.killSwitchActive && (
|
|
864
|
-
<Badge variant="outline" className="border-red-500/40 text-red-400">Kill switch active</Badge>
|
|
865
|
-
)}
|
|
866
|
-
{hitl.bypassActive && (
|
|
867
|
-
<Badge variant="outline" className="border-orange-500/40 text-orange-400">Bypass active</Badge>
|
|
868
|
-
)}
|
|
869
|
-
{!hitl.killSwitchActive && hitl.approved && (
|
|
870
|
-
<Badge variant="outline" className="border-emerald-500/40 text-emerald-400">
|
|
871
|
-
<Timer className="h-3 w-3 mr-1" />
|
|
872
|
-
{secondsLeft}s remaining
|
|
873
|
-
</Badge>
|
|
874
|
-
)}
|
|
875
|
-
{!hitl.killSwitchActive && !hitl.approved && !hitl.bypassActive && (
|
|
876
|
-
<Badge variant="outline" className="border-amber-500/40 text-amber-400">Approval required</Badge>
|
|
877
|
-
)}
|
|
878
|
-
|
|
879
|
-
<span className="text-slate-500 text-xs">{hitl.actionsLast60s} actions/min</span>
|
|
880
|
-
|
|
881
|
-
<div className="ml-auto flex gap-2">
|
|
882
|
-
<Button
|
|
883
|
-
size="sm"
|
|
884
|
-
variant="outline"
|
|
885
|
-
className="h-7 text-xs border-emerald-800 text-emerald-300 hover:bg-emerald-950"
|
|
886
|
-
onClick={() => hitl.approve(5)}
|
|
887
|
-
disabled={hitl.killSwitchActive}
|
|
888
|
-
>
|
|
889
|
-
Approve 5 min
|
|
890
|
-
</Button>
|
|
891
|
-
<Button
|
|
892
|
-
size="sm"
|
|
893
|
-
variant="outline"
|
|
894
|
-
className="h-7 text-xs border-slate-700 text-slate-400"
|
|
895
|
-
onClick={() => hitl.approve(60)}
|
|
896
|
-
disabled={hitl.killSwitchActive}
|
|
897
|
-
>
|
|
898
|
-
1 hour
|
|
899
|
-
</Button>
|
|
900
|
-
</div>
|
|
901
|
-
</div>
|
|
902
|
-
);
|
|
903
|
-
}
|
|
904
|
-
|
|
905
|
-
export function Targets() {
|
|
906
|
-
const [activeTab, setActiveTab] = useState<TabId>(() => {
|
|
907
|
-
return (localStorage.getItem("targets-tab") as TabId) ?? "notepad";
|
|
908
|
-
});
|
|
909
|
-
|
|
910
|
-
const handleTabChange = (id: TabId) => {
|
|
911
|
-
setActiveTab(id);
|
|
912
|
-
localStorage.setItem("targets-tab", id);
|
|
913
|
-
};
|
|
914
|
-
|
|
915
|
-
const ActiveComponent = TABS.find(t => t.id === activeTab)?.component ?? NotepadTarget;
|
|
916
|
-
|
|
917
|
-
return (
|
|
918
|
-
<div className="space-y-4">
|
|
919
|
-
<div>
|
|
920
|
-
<h2 className="text-2xl font-bold tracking-tight text-white">Automation Targets</h2>
|
|
921
|
-
<p className="text-slate-400 text-sm">
|
|
922
|
-
Operator console — fire automation_task runs, review evidence, manage HITL.
|
|
923
|
-
</p>
|
|
924
|
-
</div>
|
|
925
|
-
|
|
926
|
-
<HitlBar />
|
|
927
|
-
|
|
928
|
-
{/* Tab strip */}
|
|
929
|
-
<div className="flex gap-1 border-b border-slate-800 pb-0">
|
|
930
|
-
{TABS.map(tab => (
|
|
931
|
-
<button
|
|
932
|
-
key={tab.id}
|
|
933
|
-
onClick={() => handleTabChange(tab.id)}
|
|
934
|
-
className={`px-4 py-2 text-sm font-medium border-b-2 transition-colors ${
|
|
935
|
-
activeTab === tab.id
|
|
936
|
-
? "border-emerald-500 text-white"
|
|
937
|
-
: "border-transparent text-slate-400 hover:text-slate-200 hover:border-slate-600"
|
|
938
|
-
}`}
|
|
939
|
-
>
|
|
940
|
-
{tab.label}
|
|
941
|
-
</button>
|
|
942
|
-
))}
|
|
943
|
-
</div>
|
|
944
|
-
|
|
945
|
-
{/* Active target panel */}
|
|
946
|
-
<div className="min-h-96">
|
|
947
|
-
<ActiveComponent />
|
|
948
|
-
</div>
|
|
949
|
-
</div>
|
|
950
|
-
);
|
|
951
|
-
}
|
|
952
|
-
```
|
|
953
|
-
|
|
954
|
-
---
|
|
955
|
-
|
|
956
|
-
## 9. Wire into App.tsx and sidebar
|
|
957
|
-
|
|
958
|
-
`App.tsx` — add one line:
|
|
959
|
-
```tsx
|
|
960
|
-
import { Targets } from "@/pages/targets";
|
|
961
|
-
// inside <Routes>:
|
|
962
|
-
<Route path="/targets" element={<Targets />} />
|
|
963
|
-
```
|
|
964
|
-
|
|
965
|
-
`sidebar.tsx` — add one nav entry (exact implementation depends on sidebar structure):
|
|
966
|
-
```tsx
|
|
967
|
-
{ path: "/targets", label: "Targets", icon: Crosshair } // lucide-react
|
|
968
|
-
```
|
|
969
|
-
|
|
970
|
-
---
|
|
971
|
-
|
|
972
|
-
## Known gaps / deferred to backend
|
|
973
|
-
|
|
974
|
-
- **`automation_task` type_text step kind** — task_engine has no "type text into focused window" step. Currently needs a workaround via automation_keyboard called separately, or adding a `type_text` step kind to task_engine. Track as Bug in assessment.
|
|
975
|
-
- **`GET /api/v1/tasks/{task_id}`** — the polling path in `useTaskRunner` calls `automation_task(status, task_id)` via the tools call endpoint, which works but is inefficient. A dedicated REST endpoint would be cleaner.
|
|
976
|
-
- **Screenshot dimensions** — `StableRegionVisualizer` hardcodes 1920×1080 for percentage calculation. Fix when evidence includes screenshot dimensions (trivial backend addition to `_capture_screenshot`).
|
|
977
|
-
- **vroidstudio-mcp archetype list** — the VRoid tab fetches from port 10881 directly. If CORS is not configured on that server's `/api/v1/control/tool`, this will fail. Proxy through cua-mcp or fix CORS in vroidstudio-mcp.
|