@hongmaple0820/med-scale-research-os 0.43.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/.scale/mcp-servers.yaml +144 -0
- package/.scale/skills.json +830 -0
- package/.scale/verification.json +52 -0
- package/LICENSE +15 -0
- package/README.en.md +156 -0
- package/README.md +156 -0
- package/dist/adapters/AiderAdapter.d.ts +22 -0
- package/dist/adapters/AiderAdapter.js +262 -0
- package/dist/adapters/AiderAdapter.js.map +1 -0
- package/dist/adapters/AntigravityAdapter.d.ts +4 -0
- package/dist/adapters/AntigravityAdapter.js +21 -0
- package/dist/adapters/AntigravityAdapter.js.map +1 -0
- package/dist/adapters/ClaudeCodeAdapter.d.ts +54 -0
- package/dist/adapters/ClaudeCodeAdapter.js +185 -0
- package/dist/adapters/ClaudeCodeAdapter.js.map +1 -0
- package/dist/adapters/ClineAdapter.d.ts +4 -0
- package/dist/adapters/ClineAdapter.js +20 -0
- package/dist/adapters/ClineAdapter.js.map +1 -0
- package/dist/adapters/CodexAdapter.d.ts +15 -0
- package/dist/adapters/CodexAdapter.js +160 -0
- package/dist/adapters/CodexAdapter.js.map +1 -0
- package/dist/adapters/CursorAdapter.d.ts +14 -0
- package/dist/adapters/CursorAdapter.js +171 -0
- package/dist/adapters/CursorAdapter.js.map +1 -0
- package/dist/adapters/DeepSeekTuiAdapter.d.ts +19 -0
- package/dist/adapters/DeepSeekTuiAdapter.js +263 -0
- package/dist/adapters/DeepSeekTuiAdapter.js.map +1 -0
- package/dist/adapters/DoubaoAdapter.d.ts +14 -0
- package/dist/adapters/DoubaoAdapter.js +184 -0
- package/dist/adapters/DoubaoAdapter.js.map +1 -0
- package/dist/adapters/GeminiAdapter.d.ts +14 -0
- package/dist/adapters/GeminiAdapter.js +163 -0
- package/dist/adapters/GeminiAdapter.js.map +1 -0
- package/dist/adapters/GenericProjectAgentAdapter.d.ts +29 -0
- package/dist/adapters/GenericProjectAgentAdapter.js +204 -0
- package/dist/adapters/GenericProjectAgentAdapter.js.map +1 -0
- package/dist/adapters/HermesAdapter.d.ts +14 -0
- package/dist/adapters/HermesAdapter.js +163 -0
- package/dist/adapters/HermesAdapter.js.map +1 -0
- package/dist/adapters/JCodeAdapter.d.ts +4 -0
- package/dist/adapters/JCodeAdapter.js +19 -0
- package/dist/adapters/JCodeAdapter.js.map +1 -0
- package/dist/adapters/KiloCodeAdapter.d.ts +4 -0
- package/dist/adapters/KiloCodeAdapter.js +20 -0
- package/dist/adapters/KiloCodeAdapter.js.map +1 -0
- package/dist/adapters/KimiAdapter.d.ts +14 -0
- package/dist/adapters/KimiAdapter.js +183 -0
- package/dist/adapters/KimiAdapter.js.map +1 -0
- package/dist/adapters/KiroAdapter.d.ts +14 -0
- package/dist/adapters/KiroAdapter.js +180 -0
- package/dist/adapters/KiroAdapter.js.map +1 -0
- package/dist/adapters/OpenClawAdapter.d.ts +14 -0
- package/dist/adapters/OpenClawAdapter.js +163 -0
- package/dist/adapters/OpenClawAdapter.js.map +1 -0
- package/dist/adapters/OpenCodeAdapter.d.ts +14 -0
- package/dist/adapters/OpenCodeAdapter.js +172 -0
- package/dist/adapters/OpenCodeAdapter.js.map +1 -0
- package/dist/adapters/QCoderAdapter.d.ts +14 -0
- package/dist/adapters/QCoderAdapter.js +159 -0
- package/dist/adapters/QCoderAdapter.js.map +1 -0
- package/dist/adapters/QoderAdapter.d.ts +4 -0
- package/dist/adapters/QoderAdapter.js +21 -0
- package/dist/adapters/QoderAdapter.js.map +1 -0
- package/dist/adapters/TraeAdapter.d.ts +14 -0
- package/dist/adapters/TraeAdapter.js +159 -0
- package/dist/adapters/TraeAdapter.js.map +1 -0
- package/dist/adapters/VSCAdapter.d.ts +14 -0
- package/dist/adapters/VSCAdapter.js +159 -0
- package/dist/adapters/VSCAdapter.js.map +1 -0
- package/dist/adapters/WindsurfAdapter.d.ts +14 -0
- package/dist/adapters/WindsurfAdapter.js +185 -0
- package/dist/adapters/WindsurfAdapter.js.map +1 -0
- package/dist/adapters/WorkBuddyAdapter.d.ts +14 -0
- package/dist/adapters/WorkBuddyAdapter.js +159 -0
- package/dist/adapters/WorkBuddyAdapter.js.map +1 -0
- package/dist/adapters/index.d.ts +32 -0
- package/dist/adapters/index.js +87 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/agents/AgentChannel.d.ts +43 -0
- package/dist/agents/AgentChannel.js +136 -0
- package/dist/agents/AgentChannel.js.map +1 -0
- package/dist/agents/AgentCoordinator.d.ts +29 -0
- package/dist/agents/AgentCoordinator.js +136 -0
- package/dist/agents/AgentCoordinator.js.map +1 -0
- package/dist/agents/AgentDispatcher.d.ts +24 -0
- package/dist/agents/AgentDispatcher.js +112 -0
- package/dist/agents/AgentDispatcher.js.map +1 -0
- package/dist/agents/AgentManager.d.ts +14 -0
- package/dist/agents/AgentManager.js +85 -0
- package/dist/agents/AgentManager.js.map +1 -0
- package/dist/agents/AgentPool.d.ts +59 -0
- package/dist/agents/AgentPool.js +192 -0
- package/dist/agents/AgentPool.js.map +1 -0
- package/dist/agents/AgentRegistry.d.ts +20 -0
- package/dist/agents/AgentRegistry.js +36 -0
- package/dist/agents/AgentRegistry.js.map +1 -0
- package/dist/agents/AgentSourceLoader.d.ts +73 -0
- package/dist/agents/AgentSourceLoader.js +103 -0
- package/dist/agents/AgentSourceLoader.js.map +1 -0
- package/dist/agents/IAgent.d.ts +53 -0
- package/dist/agents/IAgent.js +4 -0
- package/dist/agents/IAgent.js.map +1 -0
- package/dist/agents/LeadershipPresets.d.ts +16 -0
- package/dist/agents/LeadershipPresets.js +152 -0
- package/dist/agents/LeadershipPresets.js.map +1 -0
- package/dist/agents/definitions/debugger.d.ts +2 -0
- package/dist/agents/definitions/debugger.js +6 -0
- package/dist/agents/definitions/debugger.js.map +1 -0
- package/dist/agents/definitions/doc-writer.d.ts +2 -0
- package/dist/agents/definitions/doc-writer.js +6 -0
- package/dist/agents/definitions/doc-writer.js.map +1 -0
- package/dist/agents/definitions/implementer.d.ts +2 -0
- package/dist/agents/definitions/implementer.js +6 -0
- package/dist/agents/definitions/implementer.js.map +1 -0
- package/dist/agents/definitions/planner.d.ts +2 -0
- package/dist/agents/definitions/planner.js +6 -0
- package/dist/agents/definitions/planner.js.map +1 -0
- package/dist/agents/definitions/researcher.d.ts +2 -0
- package/dist/agents/definitions/researcher.js +6 -0
- package/dist/agents/definitions/researcher.js.map +1 -0
- package/dist/agents/definitions/reviewer.d.ts +2 -0
- package/dist/agents/definitions/reviewer.js +6 -0
- package/dist/agents/definitions/reviewer.js.map +1 -0
- package/dist/agents/definitions/security.d.ts +2 -0
- package/dist/agents/definitions/security.js +6 -0
- package/dist/agents/definitions/security.js.map +1 -0
- package/dist/agents/definitions/tester.d.ts +2 -0
- package/dist/agents/definitions/tester.js +6 -0
- package/dist/agents/definitions/tester.js.map +1 -0
- package/dist/agents/index.d.ts +23 -0
- package/dist/agents/index.js +44 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/profiles.d.ts +26 -0
- package/dist/agents/profiles.js +197 -0
- package/dist/agents/profiles.js.map +1 -0
- package/dist/agents/types.d.ts +262 -0
- package/dist/agents/types.js +4 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/api/cli.d.ts +2 -0
- package/dist/api/cli.js +6678 -0
- package/dist/api/cli.js.map +1 -0
- package/dist/api/doctor.d.ts +83 -0
- package/dist/api/doctor.js +982 -0
- package/dist/api/doctor.js.map +1 -0
- package/dist/api/mcp.d.ts +32 -0
- package/dist/api/mcp.js +223 -0
- package/dist/api/mcp.js.map +1 -0
- package/dist/api/medscale.d.ts +2 -0
- package/dist/api/medscale.js +20 -0
- package/dist/api/medscale.js.map +1 -0
- package/dist/api/quickstart.d.ts +86 -0
- package/dist/api/quickstart.js +291 -0
- package/dist/api/quickstart.js.map +1 -0
- package/dist/artifact/fsm.d.ts +41 -0
- package/dist/artifact/fsm.js +221 -0
- package/dist/artifact/fsm.js.map +1 -0
- package/dist/artifact/fsmDefinitions.d.ts +18 -0
- package/dist/artifact/fsmDefinitions.js +296 -0
- package/dist/artifact/fsmDefinitions.js.map +1 -0
- package/dist/artifact/sqliteStore.d.ts +61 -0
- package/dist/artifact/sqliteStore.js +381 -0
- package/dist/artifact/sqliteStore.js.map +1 -0
- package/dist/artifact/store.d.ts +49 -0
- package/dist/artifact/store.js +116 -0
- package/dist/artifact/store.js.map +1 -0
- package/dist/artifact/types.d.ts +535 -0
- package/dist/artifact/types.js +74 -0
- package/dist/artifact/types.js.map +1 -0
- package/dist/bootstrap/DependencyBootstrap.d.ts +112 -0
- package/dist/bootstrap/DependencyBootstrap.js +1046 -0
- package/dist/bootstrap/DependencyBootstrap.js.map +1 -0
- package/dist/bootstrap/DependencyBootstrapRenderer.d.ts +3 -0
- package/dist/bootstrap/DependencyBootstrapRenderer.js +138 -0
- package/dist/bootstrap/DependencyBootstrapRenderer.js.map +1 -0
- package/dist/bridge/PythonBridge.d.ts +80 -0
- package/dist/bridge/PythonBridge.js +437 -0
- package/dist/bridge/PythonBridge.js.map +1 -0
- package/dist/bridge/index.d.ts +2 -0
- package/dist/bridge/index.js +7 -0
- package/dist/bridge/index.js.map +1 -0
- package/dist/bridge/medicalWorkflows.d.ts +29 -0
- package/dist/bridge/medicalWorkflows.js +156 -0
- package/dist/bridge/medicalWorkflows.js.map +1 -0
- package/dist/bridge/types.d.ts +381 -0
- package/dist/bridge/types.js +113 -0
- package/dist/bridge/types.js.map +1 -0
- package/dist/cache/ScanCache.d.ts +41 -0
- package/dist/cache/ScanCache.js +120 -0
- package/dist/cache/ScanCache.js.map +1 -0
- package/dist/capabilities/BrowserCapability.d.ts +30 -0
- package/dist/capabilities/BrowserCapability.js +73 -0
- package/dist/capabilities/BrowserCapability.js.map +1 -0
- package/dist/capabilities/BrowserQACapability.d.ts +165 -0
- package/dist/capabilities/BrowserQACapability.js +438 -0
- package/dist/capabilities/BrowserQACapability.js.map +1 -0
- package/dist/capabilities/CapabilityRegistry.d.ts +17 -0
- package/dist/capabilities/CapabilityRegistry.js +65 -0
- package/dist/capabilities/CapabilityRegistry.js.map +1 -0
- package/dist/capabilities/ComputerCapability.d.ts +28 -0
- package/dist/capabilities/ComputerCapability.js +40 -0
- package/dist/capabilities/ComputerCapability.js.map +1 -0
- package/dist/capabilities/InstalledSkillsIntegration.d.ts +69 -0
- package/dist/capabilities/InstalledSkillsIntegration.js +240 -0
- package/dist/capabilities/InstalledSkillsIntegration.js.map +1 -0
- package/dist/capabilities/SearchCapability.d.ts +46 -0
- package/dist/capabilities/SearchCapability.js +88 -0
- package/dist/capabilities/SearchCapability.js.map +1 -0
- package/dist/capabilities/index.d.ts +6 -0
- package/dist/capabilities/index.js +9 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/capabilities/types.d.ts +92 -0
- package/dist/capabilities/types.js +7 -0
- package/dist/capabilities/types.js.map +1 -0
- package/dist/cli/autofixCommands.d.ts +22 -0
- package/dist/cli/autofixCommands.js +32 -0
- package/dist/cli/autofixCommands.js.map +1 -0
- package/dist/cli/cortexCommands.d.ts +71 -0
- package/dist/cli/cortexCommands.js +335 -0
- package/dist/cli/cortexCommands.js.map +1 -0
- package/dist/cli/costCommands.d.ts +13 -0
- package/dist/cli/costCommands.js +48 -0
- package/dist/cli/costCommands.js.map +1 -0
- package/dist/cli/evolutionCommands.d.ts +112 -0
- package/dist/cli/evolutionCommands.js +246 -0
- package/dist/cli/evolutionCommands.js.map +1 -0
- package/dist/cli/gateStatusCommands.d.ts +1 -0
- package/dist/cli/gateStatusCommands.js +52 -0
- package/dist/cli/gateStatusCommands.js.map +1 -0
- package/dist/cli/liteCommands.d.ts +81 -0
- package/dist/cli/liteCommands.js +148 -0
- package/dist/cli/liteCommands.js.map +1 -0
- package/dist/cli/orchCommands.d.ts +43 -0
- package/dist/cli/orchCommands.js +135 -0
- package/dist/cli/orchCommands.js.map +1 -0
- package/dist/cli/phaseCommands.d.ts +248 -0
- package/dist/cli/phaseCommands.js +1878 -0
- package/dist/cli/phaseCommands.js.map +1 -0
- package/dist/cli/promptCommands.d.ts +1 -0
- package/dist/cli/promptCommands.js +57 -0
- package/dist/cli/promptCommands.js.map +1 -0
- package/dist/cli/qaCommands.d.ts +22 -0
- package/dist/cli/qaCommands.js +84 -0
- package/dist/cli/qaCommands.js.map +1 -0
- package/dist/cli/quickstartCommands.d.ts +17 -0
- package/dist/cli/quickstartCommands.js +47 -0
- package/dist/cli/quickstartCommands.js.map +1 -0
- package/dist/cli/runCommand.d.ts +39 -0
- package/dist/cli/runCommand.js +113 -0
- package/dist/cli/runCommand.js.map +1 -0
- package/dist/cli/scoreCommands.d.ts +1 -0
- package/dist/cli/scoreCommands.js +112 -0
- package/dist/cli/scoreCommands.js.map +1 -0
- package/dist/cli/shieldCommands.d.ts +30 -0
- package/dist/cli/shieldCommands.js +212 -0
- package/dist/cli/shieldCommands.js.map +1 -0
- package/dist/cli/targetCommands.d.ts +552 -0
- package/dist/cli/targetCommands.js +3173 -0
- package/dist/cli/targetCommands.js.map +1 -0
- package/dist/cli/tuiCommands.d.ts +7 -0
- package/dist/cli/tuiCommands.js +33 -0
- package/dist/cli/tuiCommands.js.map +1 -0
- package/dist/cli/vibeCommands.d.ts +64 -0
- package/dist/cli/vibeCommands.js +221 -0
- package/dist/cli/vibeCommands.js.map +1 -0
- package/dist/codegraph/CodeIntelligence.d.ts +147 -0
- package/dist/codegraph/CodeIntelligence.js +681 -0
- package/dist/codegraph/CodeIntelligence.js.map +1 -0
- package/dist/config/profiles.d.ts +64 -0
- package/dist/config/profiles.js +223 -0
- package/dist/config/profiles.js.map +1 -0
- package/dist/context/AntiPatternRegistry.d.ts +38 -0
- package/dist/context/AntiPatternRegistry.js +203 -0
- package/dist/context/AntiPatternRegistry.js.map +1 -0
- package/dist/context/CavemanCompressor.d.ts +20 -0
- package/dist/context/CavemanCompressor.js +14 -0
- package/dist/context/CavemanCompressor.js.map +1 -0
- package/dist/context/ContextBudget.d.ts +128 -0
- package/dist/context/ContextBudget.js +423 -0
- package/dist/context/ContextBudget.js.map +1 -0
- package/dist/context/ContextBuilder.d.ts +71 -0
- package/dist/context/ContextBuilder.js +372 -0
- package/dist/context/ContextBuilder.js.map +1 -0
- package/dist/context/ContextCompiler.d.ts +34 -0
- package/dist/context/ContextCompiler.js +120 -0
- package/dist/context/ContextCompiler.js.map +1 -0
- package/dist/context/ProjectAnatomy.d.ts +18 -0
- package/dist/context/ProjectAnatomy.js +287 -0
- package/dist/context/ProjectAnatomy.js.map +1 -0
- package/dist/context/SessionStartSequence.d.ts +54 -0
- package/dist/context/SessionStartSequence.js +162 -0
- package/dist/context/SessionStartSequence.js.map +1 -0
- package/dist/core/ExternalCommand.d.ts +9 -0
- package/dist/core/ExternalCommand.js +70 -0
- package/dist/core/ExternalCommand.js.map +1 -0
- package/dist/core/GbrainRuntime.d.ts +25 -0
- package/dist/core/GbrainRuntime.js +270 -0
- package/dist/core/GbrainRuntime.js.map +1 -0
- package/dist/core/container.d.ts +14 -0
- package/dist/core/container.js +35 -0
- package/dist/core/container.js.map +1 -0
- package/dist/core/eventBus.d.ts +60 -0
- package/dist/core/eventBus.js +157 -0
- package/dist/core/eventBus.js.map +1 -0
- package/dist/core/logger.d.ts +5 -0
- package/dist/core/logger.js +51 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/cortex/GovernanceMetrics.d.ts +66 -0
- package/dist/cortex/GovernanceMetrics.js +230 -0
- package/dist/cortex/GovernanceMetrics.js.map +1 -0
- package/dist/cortex/InstinctExtractor.d.ts +61 -0
- package/dist/cortex/InstinctExtractor.js +184 -0
- package/dist/cortex/InstinctExtractor.js.map +1 -0
- package/dist/cortex/InstinctStore.d.ts +54 -0
- package/dist/cortex/InstinctStore.js +266 -0
- package/dist/cortex/InstinctStore.js.map +1 -0
- package/dist/cortex/ReflexionEngine.d.ts +34 -0
- package/dist/cortex/ReflexionEngine.js +157 -0
- package/dist/cortex/ReflexionEngine.js.map +1 -0
- package/dist/cortex/SessionInjector.d.ts +44 -0
- package/dist/cortex/SessionInjector.js +127 -0
- package/dist/cortex/SessionInjector.js.map +1 -0
- package/dist/cortex/adapters/ClaudeAdapter.d.ts +17 -0
- package/dist/cortex/adapters/ClaudeAdapter.js +61 -0
- package/dist/cortex/adapters/ClaudeAdapter.js.map +1 -0
- package/dist/cortex/adapters/CodexAdapter.d.ts +10 -0
- package/dist/cortex/adapters/CodexAdapter.js +52 -0
- package/dist/cortex/adapters/CodexAdapter.js.map +1 -0
- package/dist/cortex/adapters/CursorAdapter.d.ts +10 -0
- package/dist/cortex/adapters/CursorAdapter.js +46 -0
- package/dist/cortex/adapters/CursorAdapter.js.map +1 -0
- package/dist/cortex/adapters/GeminiAdapter.d.ts +11 -0
- package/dist/cortex/adapters/GeminiAdapter.js +48 -0
- package/dist/cortex/adapters/GeminiAdapter.js.map +1 -0
- package/dist/dashboard/DashboardServer.d.ts +86 -0
- package/dist/dashboard/DashboardServer.js +380 -0
- package/dist/dashboard/DashboardServer.js.map +1 -0
- package/dist/dashboard/MedicalWorkflowData.d.ts +155 -0
- package/dist/dashboard/MedicalWorkflowData.js +664 -0
- package/dist/dashboard/MedicalWorkflowData.js.map +1 -0
- package/dist/dashboard/MetricsAggregator.d.ts +38 -0
- package/dist/dashboard/MetricsAggregator.js +99 -0
- package/dist/dashboard/MetricsAggregator.js.map +1 -0
- package/dist/dashboard/index.d.ts +4 -0
- package/dist/dashboard/index.js +3 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/dashboard/server.d.ts +52 -0
- package/dist/dashboard/server.js +84 -0
- package/dist/dashboard/server.js.map +1 -0
- package/dist/env/EnvironmentDoctor.d.ts +66 -0
- package/dist/env/EnvironmentDoctor.js +581 -0
- package/dist/env/EnvironmentDoctor.js.map +1 -0
- package/dist/eval/BenchmarkPublisher.d.ts +25 -0
- package/dist/eval/BenchmarkPublisher.js +27 -0
- package/dist/eval/BenchmarkPublisher.js.map +1 -0
- package/dist/eval/WorkflowEval.d.ts +161 -0
- package/dist/eval/WorkflowEval.js +377 -0
- package/dist/eval/WorkflowEval.js.map +1 -0
- package/dist/evolution/AutoDefectCreator.d.ts +43 -0
- package/dist/evolution/AutoDefectCreator.js +157 -0
- package/dist/evolution/AutoDefectCreator.js.map +1 -0
- package/dist/evolution/BehaviorTracker.d.ts +46 -0
- package/dist/evolution/BehaviorTracker.js +67 -0
- package/dist/evolution/BehaviorTracker.js.map +1 -0
- package/dist/evolution/EvolutionEngine.d.ts +102 -0
- package/dist/evolution/EvolutionEngine.js +326 -0
- package/dist/evolution/EvolutionEngine.js.map +1 -0
- package/dist/evolution/EvolutionEvaluator.d.ts +61 -0
- package/dist/evolution/EvolutionEvaluator.js +118 -0
- package/dist/evolution/EvolutionEvaluator.js.map +1 -0
- package/dist/evolution/LessonValidator.d.ts +36 -0
- package/dist/evolution/LessonValidator.js +132 -0
- package/dist/evolution/LessonValidator.js.map +1 -0
- package/dist/evolution/PatternExtractor.d.ts +40 -0
- package/dist/evolution/PatternExtractor.js +83 -0
- package/dist/evolution/PatternExtractor.js.map +1 -0
- package/dist/evolution/RuleMaturity.d.ts +39 -0
- package/dist/evolution/RuleMaturity.js +70 -0
- package/dist/evolution/RuleMaturity.js.map +1 -0
- package/dist/evolution/SessionLearnings.d.ts +70 -0
- package/dist/evolution/SessionLearnings.js +217 -0
- package/dist/evolution/SessionLearnings.js.map +1 -0
- package/dist/evolution/SkillCreator.d.ts +75 -0
- package/dist/evolution/SkillCreator.js +219 -0
- package/dist/evolution/SkillCreator.js.map +1 -0
- package/dist/fsm/FSMAgentBridge.d.ts +59 -0
- package/dist/fsm/FSMAgentBridge.js +193 -0
- package/dist/fsm/FSMAgentBridge.js.map +1 -0
- package/dist/fsm/index.d.ts +2 -0
- package/dist/fsm/index.js +3 -0
- package/dist/fsm/index.js.map +1 -0
- package/dist/governance/GovernanceRoi.d.ts +30 -0
- package/dist/governance/GovernanceRoi.js +102 -0
- package/dist/governance/GovernanceRoi.js.map +1 -0
- package/dist/governance/ProgressiveGovernance.d.ts +22 -0
- package/dist/governance/ProgressiveGovernance.js +159 -0
- package/dist/governance/ProgressiveGovernance.js.map +1 -0
- package/dist/guardrails/ActiveRedTeam.d.ts +46 -0
- package/dist/guardrails/ActiveRedTeam.js +203 -0
- package/dist/guardrails/ActiveRedTeam.js.map +1 -0
- package/dist/guardrails/DependencyAuditor.d.ts +68 -0
- package/dist/guardrails/DependencyAuditor.js +378 -0
- package/dist/guardrails/DependencyAuditor.js.map +1 -0
- package/dist/guardrails/DetectorEnhanced.d.ts +111 -0
- package/dist/guardrails/DetectorEnhanced.js +202 -0
- package/dist/guardrails/DetectorEnhanced.js.map +1 -0
- package/dist/guardrails/GateEvaluator.d.ts +18 -0
- package/dist/guardrails/GateEvaluator.js +129 -0
- package/dist/guardrails/GateEvaluator.js.map +1 -0
- package/dist/guardrails/Gateway.d.ts +26 -0
- package/dist/guardrails/Gateway.js +56 -0
- package/dist/guardrails/Gateway.js.map +1 -0
- package/dist/guardrails/OWASPDetector.d.ts +58 -0
- package/dist/guardrails/OWASPDetector.js +508 -0
- package/dist/guardrails/OWASPDetector.js.map +1 -0
- package/dist/guardrails/ReviewEnforcer.d.ts +52 -0
- package/dist/guardrails/ReviewEnforcer.js +117 -0
- package/dist/guardrails/ReviewEnforcer.js.map +1 -0
- package/dist/guardrails/advancedDetectors.d.ts +38 -0
- package/dist/guardrails/advancedDetectors.js +188 -0
- package/dist/guardrails/advancedDetectors.js.map +1 -0
- package/dist/guardrails/detectors.d.ts +34 -0
- package/dist/guardrails/detectors.js +332 -0
- package/dist/guardrails/detectors.js.map +1 -0
- package/dist/guardrails/roles.d.ts +4 -0
- package/dist/guardrails/roles.js +54 -0
- package/dist/guardrails/roles.js.map +1 -0
- package/dist/hooks/BugPatternDetector.d.ts +36 -0
- package/dist/hooks/BugPatternDetector.js +207 -0
- package/dist/hooks/BugPatternDetector.js.map +1 -0
- package/dist/hooks/HookDeployer.d.ts +44 -0
- package/dist/hooks/HookDeployer.js +144 -0
- package/dist/hooks/HookDeployer.js.map +1 -0
- package/dist/hooks/HookGeneratorEnhanced.d.ts +67 -0
- package/dist/hooks/HookGeneratorEnhanced.js +641 -0
- package/dist/hooks/HookGeneratorEnhanced.js.map +1 -0
- package/dist/hooks/WorkflowHooksManager.d.ts +30 -0
- package/dist/hooks/WorkflowHooksManager.js +160 -0
- package/dist/hooks/WorkflowHooksManager.js.map +1 -0
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.js +5 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/i18n/Language.d.ts +9 -0
- package/dist/i18n/Language.js +38 -0
- package/dist/i18n/Language.js.map +1 -0
- package/dist/index.d.ts +101 -0
- package/dist/index.js +104 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge/CerebrumManager.d.ts +25 -0
- package/dist/knowledge/CerebrumManager.js +127 -0
- package/dist/knowledge/CerebrumManager.js.map +1 -0
- package/dist/knowledge/GraphifyKnowledgeBase.d.ts +38 -0
- package/dist/knowledge/GraphifyKnowledgeBase.js +409 -0
- package/dist/knowledge/GraphifyKnowledgeBase.js.map +1 -0
- package/dist/knowledge/KnowledgeBase.d.ts +51 -0
- package/dist/knowledge/KnowledgeBase.js +182 -0
- package/dist/knowledge/KnowledgeBase.js.map +1 -0
- package/dist/knowledge/SQLiteKnowledgeBase.d.ts +29 -0
- package/dist/knowledge/SQLiteKnowledgeBase.js +203 -0
- package/dist/knowledge/SQLiteKnowledgeBase.js.map +1 -0
- package/dist/knowledge/TfidfIndex.d.ts +50 -0
- package/dist/knowledge/TfidfIndex.js +177 -0
- package/dist/knowledge/TfidfIndex.js.map +1 -0
- package/dist/knowledge/UbiquitousLanguageManager.d.ts +49 -0
- package/dist/knowledge/UbiquitousLanguageManager.js +133 -0
- package/dist/knowledge/UbiquitousLanguageManager.js.map +1 -0
- package/dist/memory/MemoryBrain.d.ts +146 -0
- package/dist/memory/MemoryBrain.js +679 -0
- package/dist/memory/MemoryBrain.js.map +1 -0
- package/dist/memory/MemoryFabric.d.ts +130 -0
- package/dist/memory/MemoryFabric.js +317 -0
- package/dist/memory/MemoryFabric.js.map +1 -0
- package/dist/memory/MemoryIntelligence.d.ts +42 -0
- package/dist/memory/MemoryIntelligence.js +215 -0
- package/dist/memory/MemoryIntelligence.js.map +1 -0
- package/dist/memory/MemoryLearning.d.ts +62 -0
- package/dist/memory/MemoryLearning.js +209 -0
- package/dist/memory/MemoryLearning.js.map +1 -0
- package/dist/memory/MemoryProviders.d.ts +165 -0
- package/dist/memory/MemoryProviders.js +940 -0
- package/dist/memory/MemoryProviders.js.map +1 -0
- package/dist/memory/MemoryReview.d.ts +65 -0
- package/dist/memory/MemoryReview.js +260 -0
- package/dist/memory/MemoryReview.js.map +1 -0
- package/dist/memory/index.d.ts +6 -0
- package/dist/memory/index.js +7 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/orchestration/EffectsWiring.d.ts +8 -0
- package/dist/orchestration/EffectsWiring.js +87 -0
- package/dist/orchestration/EffectsWiring.js.map +1 -0
- package/dist/orchestrator/OrchestratorDaemon.d.ts +44 -0
- package/dist/orchestrator/OrchestratorDaemon.js +150 -0
- package/dist/orchestrator/OrchestratorDaemon.js.map +1 -0
- package/dist/orchestrator/PolicyLoader.d.ts +80 -0
- package/dist/orchestrator/PolicyLoader.js +229 -0
- package/dist/orchestrator/PolicyLoader.js.map +1 -0
- package/dist/orchestrator/ReconciliationLoop.d.ts +71 -0
- package/dist/orchestrator/ReconciliationLoop.js +266 -0
- package/dist/orchestrator/ReconciliationLoop.js.map +1 -0
- package/dist/orchestrator/TrackerAdapter.d.ts +60 -0
- package/dist/orchestrator/TrackerAdapter.js +147 -0
- package/dist/orchestrator/TrackerAdapter.js.map +1 -0
- package/dist/orchestrator/WorkspaceManager.d.ts +66 -0
- package/dist/orchestrator/WorkspaceManager.js +257 -0
- package/dist/orchestrator/WorkspaceManager.js.map +1 -0
- package/dist/output/BrandThemeLoader.d.ts +54 -0
- package/dist/output/BrandThemeLoader.js +340 -0
- package/dist/output/BrandThemeLoader.js.map +1 -0
- package/dist/output/GovernanceDashboard.d.ts +59 -0
- package/dist/output/GovernanceDashboard.js +281 -0
- package/dist/output/GovernanceDashboard.js.map +1 -0
- package/dist/output/HTMLArtifactLayer.d.ts +97 -0
- package/dist/output/HTMLArtifactLayer.js +576 -0
- package/dist/output/HTMLArtifactLayer.js.map +1 -0
- package/dist/output/HTMLDocumentRenderer.d.ts +83 -0
- package/dist/output/HTMLDocumentRenderer.js +718 -0
- package/dist/output/HTMLDocumentRenderer.js.map +1 -0
- package/dist/output/UIPrototypeRenderer.d.ts +61 -0
- package/dist/output/UIPrototypeRenderer.js +500 -0
- package/dist/output/UIPrototypeRenderer.js.map +1 -0
- package/dist/output/index.d.ts +10 -0
- package/dist/output/index.js +8 -0
- package/dist/output/index.js.map +1 -0
- package/dist/prompts/PhasePromptRegistry.d.ts +53 -0
- package/dist/prompts/PhasePromptRegistry.js +517 -0
- package/dist/prompts/PhasePromptRegistry.js.map +1 -0
- package/dist/prompts/PromptOptimizer.d.ts +42 -0
- package/dist/prompts/PromptOptimizer.js +309 -0
- package/dist/prompts/PromptOptimizer.js.map +1 -0
- package/dist/prompts/VibeTemplateGallery.d.ts +25 -0
- package/dist/prompts/VibeTemplateGallery.js +295 -0
- package/dist/prompts/VibeTemplateGallery.js.map +1 -0
- package/dist/qa/BrowserDaemon.d.ts +23 -0
- package/dist/qa/BrowserDaemon.js +79 -0
- package/dist/qa/BrowserDaemon.js.map +1 -0
- package/dist/qa/E2ETestOrchestrator.d.ts +14 -0
- package/dist/qa/E2ETestOrchestrator.js +19 -0
- package/dist/qa/E2ETestOrchestrator.js.map +1 -0
- package/dist/review/CrossModelReviewer.d.ts +35 -0
- package/dist/review/CrossModelReviewer.js +75 -0
- package/dist/review/CrossModelReviewer.js.map +1 -0
- package/dist/review/ReviewAggregator.d.ts +13 -0
- package/dist/review/ReviewAggregator.js +28 -0
- package/dist/review/ReviewAggregator.js.map +1 -0
- package/dist/review/reviewCommands.d.ts +15 -0
- package/dist/review/reviewCommands.js +24 -0
- package/dist/review/reviewCommands.js.map +1 -0
- package/dist/routing/LocalModelProvider.d.ts +11 -0
- package/dist/routing/LocalModelProvider.js +21 -0
- package/dist/routing/LocalModelProvider.js.map +1 -0
- package/dist/routing/ModelRouter.d.ts +42 -0
- package/dist/routing/ModelRouter.js +94 -0
- package/dist/routing/ModelRouter.js.map +1 -0
- package/dist/routing/PromptCachePolicy.d.ts +37 -0
- package/dist/routing/PromptCachePolicy.js +97 -0
- package/dist/routing/PromptCachePolicy.js.map +1 -0
- package/dist/runtime/AiOsRuntime.d.ts +485 -0
- package/dist/runtime/AiOsRuntime.js +1846 -0
- package/dist/runtime/AiOsRuntime.js.map +1 -0
- package/dist/runtime/CostAnalyzer.d.ts +53 -0
- package/dist/runtime/CostAnalyzer.js +160 -0
- package/dist/runtime/CostAnalyzer.js.map +1 -0
- package/dist/runtime/CostOptimizer.d.ts +11 -0
- package/dist/runtime/CostOptimizer.js +21 -0
- package/dist/runtime/CostOptimizer.js.map +1 -0
- package/dist/runtime/ExecutionLedger.d.ts +46 -0
- package/dist/runtime/ExecutionLedger.js +71 -0
- package/dist/runtime/ExecutionLedger.js.map +1 -0
- package/dist/runtime/FinalReportGuard.d.ts +16 -0
- package/dist/runtime/FinalReportGuard.js +14 -0
- package/dist/runtime/FinalReportGuard.js.map +1 -0
- package/dist/runtime/ModelUsageLedger.d.ts +101 -0
- package/dist/runtime/ModelUsageLedger.js +296 -0
- package/dist/runtime/ModelUsageLedger.js.map +1 -0
- package/dist/runtime/RuntimeDoctor.d.ts +23 -0
- package/dist/runtime/RuntimeDoctor.js +151 -0
- package/dist/runtime/RuntimeDoctor.js.map +1 -0
- package/dist/runtime/RuntimeEvidenceLedger.d.ts +50 -0
- package/dist/runtime/RuntimeEvidenceLedger.js +89 -0
- package/dist/runtime/RuntimeEvidenceLedger.js.map +1 -0
- package/dist/runtime/SessionLedger.d.ts +53 -0
- package/dist/runtime/SessionLedger.js +104 -0
- package/dist/runtime/SessionLedger.js.map +1 -0
- package/dist/runtime/index.d.ts +7 -0
- package/dist/runtime/index.js +8 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/setup/SetupVerification.d.ts +42 -0
- package/dist/setup/SetupVerification.js +180 -0
- package/dist/setup/SetupVerification.js.map +1 -0
- package/dist/setup/SetupWizard.d.ts +45 -0
- package/dist/setup/SetupWizard.js +216 -0
- package/dist/setup/SetupWizard.js.map +1 -0
- package/dist/shield/PolicyCompiler.d.ts +70 -0
- package/dist/shield/PolicyCompiler.js +540 -0
- package/dist/shield/PolicyCompiler.js.map +1 -0
- package/dist/shield/ProtectedPaths.d.ts +39 -0
- package/dist/shield/ProtectedPaths.js +179 -0
- package/dist/shield/ProtectedPaths.js.map +1 -0
- package/dist/shield/ShieldProtocol.d.ts +50 -0
- package/dist/shield/ShieldProtocol.js +103 -0
- package/dist/shield/ShieldProtocol.js.map +1 -0
- package/dist/skills/ExternalSkills.d.ts +3 -0
- package/dist/skills/ExternalSkills.js +27 -0
- package/dist/skills/ExternalSkills.js.map +1 -0
- package/dist/skills/GrillingSessionSkill.d.ts +65 -0
- package/dist/skills/GrillingSessionSkill.js +113 -0
- package/dist/skills/GrillingSessionSkill.js.map +1 -0
- package/dist/skills/GrillingTemplates.d.ts +7 -0
- package/dist/skills/GrillingTemplates.js +38 -0
- package/dist/skills/GrillingTemplates.js.map +1 -0
- package/dist/skills/RoleSkills.d.ts +20 -0
- package/dist/skills/RoleSkills.js +154 -0
- package/dist/skills/RoleSkills.js.map +1 -0
- package/dist/skills/SkillCatalog.d.ts +13 -0
- package/dist/skills/SkillCatalog.js +184 -0
- package/dist/skills/SkillCatalog.js.map +1 -0
- package/dist/skills/SkillDiscovery.d.ts +84 -0
- package/dist/skills/SkillDiscovery.js +402 -0
- package/dist/skills/SkillDiscovery.js.map +1 -0
- package/dist/skills/SkillDoctor.d.ts +37 -0
- package/dist/skills/SkillDoctor.js +267 -0
- package/dist/skills/SkillDoctor.js.map +1 -0
- package/dist/skills/SkillExecutor.d.ts +38 -0
- package/dist/skills/SkillExecutor.js +237 -0
- package/dist/skills/SkillExecutor.js.map +1 -0
- package/dist/skills/SkillFrontmatter.d.ts +28 -0
- package/dist/skills/SkillFrontmatter.js +152 -0
- package/dist/skills/SkillFrontmatter.js.map +1 -0
- package/dist/skills/SkillInstaller.d.ts +40 -0
- package/dist/skills/SkillInstaller.js +117 -0
- package/dist/skills/SkillInstaller.js.map +1 -0
- package/dist/skills/SkillMdStandard.d.ts +33 -0
- package/dist/skills/SkillMdStandard.js +88 -0
- package/dist/skills/SkillMdStandard.js.map +1 -0
- package/dist/skills/SkillRadar.d.ts +83 -0
- package/dist/skills/SkillRadar.js +404 -0
- package/dist/skills/SkillRadar.js.map +1 -0
- package/dist/skills/SkillRegistry.d.ts +112 -0
- package/dist/skills/SkillRegistry.js +161 -0
- package/dist/skills/SkillRegistry.js.map +1 -0
- package/dist/skills/SkillRepository.d.ts +71 -0
- package/dist/skills/SkillRepository.js +435 -0
- package/dist/skills/SkillRepository.js.map +1 -0
- package/dist/skills/TriggerEngine.d.ts +43 -0
- package/dist/skills/TriggerEngine.js +142 -0
- package/dist/skills/TriggerEngine.js.map +1 -0
- package/dist/skills/coreSkills.d.ts +6 -0
- package/dist/skills/coreSkills.js +41 -0
- package/dist/skills/coreSkills.js.map +1 -0
- package/dist/skills/index.d.ts +10 -0
- package/dist/skills/index.js +12 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/interop/GStackInterop.d.ts +15 -0
- package/dist/skills/interop/GStackInterop.js +34 -0
- package/dist/skills/interop/GStackInterop.js.map +1 -0
- package/dist/skills/interop/OMCInterop.d.ts +15 -0
- package/dist/skills/interop/OMCInterop.js +34 -0
- package/dist/skills/interop/OMCInterop.js.map +1 -0
- package/dist/skills/routing/SkillGate.d.ts +12 -0
- package/dist/skills/routing/SkillGate.js +117 -0
- package/dist/skills/routing/SkillGate.js.map +1 -0
- package/dist/skills/routing/SkillPlanner.d.ts +8 -0
- package/dist/skills/routing/SkillPlanner.js +179 -0
- package/dist/skills/routing/SkillPlanner.js.map +1 -0
- package/dist/skills/routing/SkillPolicy.d.ts +6 -0
- package/dist/skills/routing/SkillPolicy.js +336 -0
- package/dist/skills/routing/SkillPolicy.js.map +1 -0
- package/dist/skills/routing/SkillRoutingTypes.d.ts +89 -0
- package/dist/skills/routing/SkillRoutingTypes.js +2 -0
- package/dist/skills/routing/SkillRoutingTypes.js.map +1 -0
- package/dist/skills/routing/TaskIntentClassifier.d.ts +6 -0
- package/dist/skills/routing/TaskIntentClassifier.js +79 -0
- package/dist/skills/routing/TaskIntentClassifier.js.map +1 -0
- package/dist/skills/routing/index.d.ts +5 -0
- package/dist/skills/routing/index.js +6 -0
- package/dist/skills/routing/index.js.map +1 -0
- package/dist/tasks/IssueTriageFSM.d.ts +26 -0
- package/dist/tasks/IssueTriageFSM.js +107 -0
- package/dist/tasks/IssueTriageFSM.js.map +1 -0
- package/dist/tasks/TaskEngine.d.ts +97 -0
- package/dist/tasks/TaskEngine.js +289 -0
- package/dist/tasks/TaskEngine.js.map +1 -0
- package/dist/testing/DiffTestSelector.d.ts +22 -0
- package/dist/testing/DiffTestSelector.js +114 -0
- package/dist/testing/DiffTestSelector.js.map +1 -0
- package/dist/testing/index.d.ts +1 -0
- package/dist/testing/index.js +3 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/tools/CommandOutputCompressor.d.ts +28 -0
- package/dist/tools/CommandOutputCompressor.js +242 -0
- package/dist/tools/CommandOutputCompressor.js.map +1 -0
- package/dist/tools/CommandRunLedger.d.ts +77 -0
- package/dist/tools/CommandRunLedger.js +111 -0
- package/dist/tools/CommandRunLedger.js.map +1 -0
- package/dist/tools/RtkRuntime.d.ts +9 -0
- package/dist/tools/RtkRuntime.js +43 -0
- package/dist/tools/RtkRuntime.js.map +1 -0
- package/dist/tools/SafeCommandRunner.d.ts +16 -0
- package/dist/tools/SafeCommandRunner.js +83 -0
- package/dist/tools/SafeCommandRunner.js.map +1 -0
- package/dist/tools/ToolCapabilityRegistry.d.ts +51 -0
- package/dist/tools/ToolCapabilityRegistry.js +295 -0
- package/dist/tools/ToolCapabilityRegistry.js.map +1 -0
- package/dist/tools/ToolEvidenceGate.d.ts +39 -0
- package/dist/tools/ToolEvidenceGate.js +117 -0
- package/dist/tools/ToolEvidenceGate.js.map +1 -0
- package/dist/tools/ToolEvidenceStore.d.ts +58 -0
- package/dist/tools/ToolEvidenceStore.js +129 -0
- package/dist/tools/ToolEvidenceStore.js.map +1 -0
- package/dist/tools/ToolOrchestrator.d.ts +67 -0
- package/dist/tools/ToolOrchestrator.js +252 -0
- package/dist/tools/ToolOrchestrator.js.map +1 -0
- package/dist/tools/ToolPolicy.d.ts +33 -0
- package/dist/tools/ToolPolicy.js +172 -0
- package/dist/tools/ToolPolicy.js.map +1 -0
- package/dist/tools/index.d.ts +7 -0
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tui/TuiDashboard.d.ts +3 -0
- package/dist/tui/TuiDashboard.js +120 -0
- package/dist/tui/TuiDashboard.js.map +1 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.js +15 -0
- package/dist/version.js.map +1 -0
- package/dist/workflow/AdaptiveWorkflowRouter.d.ts +38 -0
- package/dist/workflow/AdaptiveWorkflowRouter.js +214 -0
- package/dist/workflow/AdaptiveWorkflowRouter.js.map +1 -0
- package/dist/workflow/CommitDiscipline.d.ts +68 -0
- package/dist/workflow/CommitDiscipline.js +328 -0
- package/dist/workflow/CommitDiscipline.js.map +1 -0
- package/dist/workflow/ContextGovernance.d.ts +51 -0
- package/dist/workflow/ContextGovernance.js +233 -0
- package/dist/workflow/ContextGovernance.js.map +1 -0
- package/dist/workflow/CrossRepoOrchestrator.d.ts +92 -0
- package/dist/workflow/CrossRepoOrchestrator.js +408 -0
- package/dist/workflow/CrossRepoOrchestrator.js.map +1 -0
- package/dist/workflow/DiagnosticLoop.d.ts +40 -0
- package/dist/workflow/DiagnosticLoop.js +105 -0
- package/dist/workflow/DiagnosticLoop.js.map +1 -0
- package/dist/workflow/EngineeringStandards.d.ts +212 -0
- package/dist/workflow/EngineeringStandards.js +1113 -0
- package/dist/workflow/EngineeringStandards.js.map +1 -0
- package/dist/workflow/EvidenceStore.d.ts +20 -0
- package/dist/workflow/EvidenceStore.js +48 -0
- package/dist/workflow/EvidenceStore.js.map +1 -0
- package/dist/workflow/EvolutionShadowPromoter.d.ts +46 -0
- package/dist/workflow/EvolutionShadowPromoter.js +73 -0
- package/dist/workflow/EvolutionShadowPromoter.js.map +1 -0
- package/dist/workflow/GateCatalog.d.ts +63 -0
- package/dist/workflow/GateCatalog.js +268 -0
- package/dist/workflow/GateCatalog.js.map +1 -0
- package/dist/workflow/GovernanceLock.d.ts +35 -0
- package/dist/workflow/GovernanceLock.js +58 -0
- package/dist/workflow/GovernanceLock.js.map +1 -0
- package/dist/workflow/GovernanceRoi.d.ts +52 -0
- package/dist/workflow/GovernanceRoi.js +204 -0
- package/dist/workflow/GovernanceRoi.js.map +1 -0
- package/dist/workflow/GovernanceTemplatePacks.d.ts +24 -0
- package/dist/workflow/GovernanceTemplatePacks.js +2134 -0
- package/dist/workflow/GovernanceTemplatePacks.js.map +1 -0
- package/dist/workflow/GovernanceTemplates.d.ts +19 -0
- package/dist/workflow/GovernanceTemplates.js +1291 -0
- package/dist/workflow/GovernanceTemplates.js.map +1 -0
- package/dist/workflow/McpGovernance.d.ts +63 -0
- package/dist/workflow/McpGovernance.js +198 -0
- package/dist/workflow/McpGovernance.js.map +1 -0
- package/dist/workflow/OutOfScopeStore.d.ts +37 -0
- package/dist/workflow/OutOfScopeStore.js +164 -0
- package/dist/workflow/OutOfScopeStore.js.map +1 -0
- package/dist/workflow/PhaseMarkerTracker.d.ts +63 -0
- package/dist/workflow/PhaseMarkerTracker.js +291 -0
- package/dist/workflow/PhaseMarkerTracker.js.map +1 -0
- package/dist/workflow/ResourceGovernance.d.ts +120 -0
- package/dist/workflow/ResourceGovernance.js +531 -0
- package/dist/workflow/ResourceGovernance.js.map +1 -0
- package/dist/workflow/ReviewAnalyzer.d.ts +80 -0
- package/dist/workflow/ReviewAnalyzer.js +438 -0
- package/dist/workflow/ReviewAnalyzer.js.map +1 -0
- package/dist/workflow/ReviewStore.d.ts +36 -0
- package/dist/workflow/ReviewStore.js +42 -0
- package/dist/workflow/ReviewStore.js.map +1 -0
- package/dist/workflow/SecurityAudit.d.ts +27 -0
- package/dist/workflow/SecurityAudit.js +294 -0
- package/dist/workflow/SecurityAudit.js.map +1 -0
- package/dist/workflow/SessionCoordinator.d.ts +103 -0
- package/dist/workflow/SessionCoordinator.js +401 -0
- package/dist/workflow/SessionCoordinator.js.map +1 -0
- package/dist/workflow/SessionPreamble.d.ts +19 -0
- package/dist/workflow/SessionPreamble.js +130 -0
- package/dist/workflow/SessionPreamble.js.map +1 -0
- package/dist/workflow/SessionStateTracker.d.ts +74 -0
- package/dist/workflow/SessionStateTracker.js +270 -0
- package/dist/workflow/SessionStateTracker.js.map +1 -0
- package/dist/workflow/ShipPipeline.d.ts +30 -0
- package/dist/workflow/ShipPipeline.js +366 -0
- package/dist/workflow/ShipPipeline.js.map +1 -0
- package/dist/workflow/TaskArtifactScaffolder.d.ts +69 -0
- package/dist/workflow/TaskArtifactScaffolder.js +333 -0
- package/dist/workflow/TaskArtifactScaffolder.js.map +1 -0
- package/dist/workflow/TaskDependencyGraph.d.ts +73 -0
- package/dist/workflow/TaskDependencyGraph.js +245 -0
- package/dist/workflow/TaskDependencyGraph.js.map +1 -0
- package/dist/workflow/TaskLevelDetector.d.ts +41 -0
- package/dist/workflow/TaskLevelDetector.js +219 -0
- package/dist/workflow/TaskLevelDetector.js.map +1 -0
- package/dist/workflow/TaskMetricsStore.d.ts +49 -0
- package/dist/workflow/TaskMetricsStore.js +149 -0
- package/dist/workflow/TaskMetricsStore.js.map +1 -0
- package/dist/workflow/TaskScoreEngine.d.ts +42 -0
- package/dist/workflow/TaskScoreEngine.js +181 -0
- package/dist/workflow/TaskScoreEngine.js.map +1 -0
- package/dist/workflow/TddLoop.d.ts +49 -0
- package/dist/workflow/TddLoop.js +78 -0
- package/dist/workflow/TddLoop.js.map +1 -0
- package/dist/workflow/UpgradeManager.d.ts +178 -0
- package/dist/workflow/UpgradeManager.js +665 -0
- package/dist/workflow/UpgradeManager.js.map +1 -0
- package/dist/workflow/VerificationCommands.d.ts +36 -0
- package/dist/workflow/VerificationCommands.js +123 -0
- package/dist/workflow/VerificationCommands.js.map +1 -0
- package/dist/workflow/VerificationProfile.d.ts +67 -0
- package/dist/workflow/VerificationProfile.js +241 -0
- package/dist/workflow/VerificationProfile.js.map +1 -0
- package/dist/workflow/VerificationSchema.d.ts +46 -0
- package/dist/workflow/VerificationSchema.js +97 -0
- package/dist/workflow/VerificationSchema.js.map +1 -0
- package/dist/workflow/WorkflowArtifactWriter.d.ts +113 -0
- package/dist/workflow/WorkflowArtifactWriter.js +242 -0
- package/dist/workflow/WorkflowArtifactWriter.js.map +1 -0
- package/dist/workflow/WorkflowEngine.d.ts +83 -0
- package/dist/workflow/WorkflowEngine.js +183 -0
- package/dist/workflow/WorkflowEngine.js.map +1 -0
- package/dist/workflow/WorkflowGuidance.d.ts +30 -0
- package/dist/workflow/WorkflowGuidance.js +204 -0
- package/dist/workflow/WorkflowGuidance.js.map +1 -0
- package/dist/workflow/WorkflowOpenTasks.d.ts +16 -0
- package/dist/workflow/WorkflowOpenTasks.js +37 -0
- package/dist/workflow/WorkflowOpenTasks.js.map +1 -0
- package/dist/workflow/WorkflowOrchestrator.d.ts +59 -0
- package/dist/workflow/WorkflowOrchestrator.js +326 -0
- package/dist/workflow/WorkflowOrchestrator.js.map +1 -0
- package/dist/workflow/WorkflowTemplates.d.ts +38 -0
- package/dist/workflow/WorkflowTemplates.js +371 -0
- package/dist/workflow/WorkflowTemplates.js.map +1 -0
- package/dist/workflow/WorkspaceLifecycle.d.ts +71 -0
- package/dist/workflow/WorkspaceLifecycle.js +401 -0
- package/dist/workflow/WorkspaceLifecycle.js.map +1 -0
- package/dist/workflow/WorkspacePolicy.d.ts +46 -0
- package/dist/workflow/WorkspacePolicy.js +141 -0
- package/dist/workflow/WorkspacePolicy.js.map +1 -0
- package/dist/workflow/WorkspaceSafety.d.ts +9 -0
- package/dist/workflow/WorkspaceSafety.js +49 -0
- package/dist/workflow/WorkspaceSafety.js.map +1 -0
- package/dist/workflow/WorkspaceTopology.d.ts +58 -0
- package/dist/workflow/WorkspaceTopology.js +176 -0
- package/dist/workflow/WorkspaceTopology.js.map +1 -0
- package/dist/workflow/autofix/AutoFixEngine.d.ts +37 -0
- package/dist/workflow/autofix/AutoFixEngine.js +169 -0
- package/dist/workflow/autofix/AutoFixEngine.js.map +1 -0
- package/dist/workflow/autonomous/AutonomousDevLoop.d.ts +88 -0
- package/dist/workflow/autonomous/AutonomousDevLoop.js +381 -0
- package/dist/workflow/autonomous/AutonomousDevLoop.js.map +1 -0
- package/dist/workflow/autonomous/BackgroundHunter.d.ts +74 -0
- package/dist/workflow/autonomous/BackgroundHunter.js +220 -0
- package/dist/workflow/autonomous/BackgroundHunter.js.map +1 -0
- package/dist/workflow/autonomous/WorklogManager.d.ts +50 -0
- package/dist/workflow/autonomous/WorklogManager.js +264 -0
- package/dist/workflow/autonomous/WorklogManager.js.map +1 -0
- package/dist/workflow/autonomous/index.d.ts +3 -0
- package/dist/workflow/autonomous/index.js +5 -0
- package/dist/workflow/autonomous/index.js.map +1 -0
- package/dist/workflow/cognitive/AmbiguityScorer.d.ts +17 -0
- package/dist/workflow/cognitive/AmbiguityScorer.js +107 -0
- package/dist/workflow/cognitive/AmbiguityScorer.js.map +1 -0
- package/dist/workflow/cognitive/ConsensusPlanner.d.ts +26 -0
- package/dist/workflow/cognitive/ConsensusPlanner.js +141 -0
- package/dist/workflow/cognitive/ConsensusPlanner.js.map +1 -0
- package/dist/workflow/cognitive/SocraticQuestioner.d.ts +33 -0
- package/dist/workflow/cognitive/SocraticQuestioner.js +276 -0
- package/dist/workflow/cognitive/SocraticQuestioner.js.map +1 -0
- package/dist/workflow/evolution/LessonExtractor.d.ts +90 -0
- package/dist/workflow/evolution/LessonExtractor.js +317 -0
- package/dist/workflow/evolution/LessonExtractor.js.map +1 -0
- package/dist/workflow/evolution/SelfImproveEngine.d.ts +156 -0
- package/dist/workflow/evolution/SelfImproveEngine.js +361 -0
- package/dist/workflow/evolution/SelfImproveEngine.js.map +1 -0
- package/dist/workflow/execution/RalphEngine.d.ts +54 -0
- package/dist/workflow/execution/RalphEngine.js +145 -0
- package/dist/workflow/execution/RalphEngine.js.map +1 -0
- package/dist/workflow/execution/UltraworkEngine.d.ts +43 -0
- package/dist/workflow/execution/UltraworkEngine.js +135 -0
- package/dist/workflow/execution/UltraworkEngine.js.map +1 -0
- package/dist/workflow/gates/EnhancedGates.d.ts +74 -0
- package/dist/workflow/gates/EnhancedGates.js +653 -0
- package/dist/workflow/gates/EnhancedGates.js.map +1 -0
- package/dist/workflow/gates/GateSystem.d.ts +180 -0
- package/dist/workflow/gates/GateSystem.js +1279 -0
- package/dist/workflow/gates/GateSystem.js.map +1 -0
- package/dist/workflow/gates/MetaGovernanceGates.d.ts +70 -0
- package/dist/workflow/gates/MetaGovernanceGates.js +617 -0
- package/dist/workflow/gates/MetaGovernanceGates.js.map +1 -0
- package/dist/workflow/gates/VisualGate.d.ts +41 -0
- package/dist/workflow/gates/VisualGate.js +174 -0
- package/dist/workflow/gates/VisualGate.js.map +1 -0
- package/dist/workflow/index.d.ts +45 -0
- package/dist/workflow/index.js +47 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/qa/E2ETestRunner.d.ts +102 -0
- package/dist/workflow/qa/E2ETestRunner.js +227 -0
- package/dist/workflow/qa/E2ETestRunner.js.map +1 -0
- package/dist/workflow/quality/HonestDelivery.d.ts +19 -0
- package/dist/workflow/quality/HonestDelivery.js +77 -0
- package/dist/workflow/quality/HonestDelivery.js.map +1 -0
- package/dist/workflow/quality/KarpathyEvaluator.d.ts +18 -0
- package/dist/workflow/quality/KarpathyEvaluator.js +76 -0
- package/dist/workflow/quality/KarpathyEvaluator.js.map +1 -0
- package/dist/workflow/types.d.ts +151 -0
- package/dist/workflow/types.js +4 -0
- package/dist/workflow/types.js.map +1 -0
- package/dist/workflows/DAGBuilder.d.ts +52 -0
- package/dist/workflows/DAGBuilder.js +169 -0
- package/dist/workflows/DAGBuilder.js.map +1 -0
- package/dist/workflows/GateParser.d.ts +55 -0
- package/dist/workflows/GateParser.js +73 -0
- package/dist/workflows/GateParser.js.map +1 -0
- package/dist/workflows/WorkflowExecutor.d.ts +56 -0
- package/dist/workflows/WorkflowExecutor.js +143 -0
- package/dist/workflows/WorkflowExecutor.js.map +1 -0
- package/dist/workflows/WorkflowOrchestrator.d.ts +81 -0
- package/dist/workflows/WorkflowOrchestrator.js +337 -0
- package/dist/workflows/WorkflowOrchestrator.js.map +1 -0
- package/dist/workflows/index.d.ts +2 -0
- package/dist/workflows/index.js +5 -0
- package/dist/workflows/index.js.map +1 -0
- package/dist/workflows/presets.d.ts +34 -0
- package/dist/workflows/presets.js +224 -0
- package/dist/workflows/presets.js.map +1 -0
- package/docs/README.md +105 -0
- package/docs/guides/DEVELOPMENT_WORKFLOW.md +99 -0
- package/docs/guides/GETTING_STARTED.md +93 -0
- package/docs/guides/MEDICAL_AGENT_OPERATING_GUIDE.md +61 -0
- package/docs/guides/MEDICAL_RESEARCH_DELIVERY.md +217 -0
- package/docs/guides/MIGRATION.md +119 -0
- package/docs/reference/cli.md +2921 -0
- package/docs/start/README.md +79 -0
- package/docs/start/agent-governance-demo.md +107 -0
- package/docs/start/artifact-lifecycle.md +326 -0
- package/docs/start/quickstart.md +191 -0
- package/docs/start/workflow-upgrade.md +198 -0
- package/docs/workflow/GATES_AND_SCORE.md +89 -0
- package/docs/workflow/PROMPT_OPTIMIZATION.md +44 -0
- package/docs/workflow/README.md +123 -0
- package/docs/workflow/node-library.md +52 -0
- package/docs/workflow/templates/api-contract.md +29 -0
- package/docs/workflow/templates/architecture-review.md +23 -0
- package/docs/workflow/templates/db-change-plan.md +20 -0
- package/docs/workflow/templates/docs-impact.md +17 -0
- package/docs/workflow/templates/e2e-plan.md +20 -0
- package/docs/workflow/templates/explore.md +16 -0
- package/docs/workflow/templates/github-actions-scale-preflight.yml +32 -0
- package/docs/workflow/templates/mini-prd.md +16 -0
- package/docs/workflow/templates/plan.md +37 -0
- package/docs/workflow/templates/pre-push-scale-preflight.sh +8 -0
- package/docs/workflow/templates/product-smoke.md +61 -0
- package/docs/workflow/templates/reality-check.md +28 -0
- package/docs/workflow/templates/resource-cleanup.md +17 -0
- package/docs/workflow/templates/resource-impact.md +25 -0
- package/docs/workflow/templates/review.md +12 -0
- package/docs/workflow/templates/runtime.md +23 -0
- package/docs/workflow/templates/security-review.md +26 -0
- package/docs/workflow/templates/skill-evidence.md +33 -0
- package/docs/workflow/templates/skill-plan.md +39 -0
- package/docs/workflow/templates/spec.md +17 -0
- package/docs/workflow/templates/standards-impact.md +28 -0
- package/docs/workflow/templates/summary.md +16 -0
- package/docs/workflow/templates/tasks.md +8 -0
- package/docs/workflow/templates/ui-spec.md +29 -0
- package/docs/workflow/templates/verification.md +20 -0
- package/docs/workflow/templates/visual-review.md +20 -0
- package/docs/zh/quickstart.md +108 -0
- package/examples/demo-projects/agent-governance-demo/CONTEXT.md +14 -0
- package/examples/demo-projects/agent-governance-demo/README.md +48 -0
- package/examples/demo-projects/agent-governance-demo/docs/CONTEXT-MAP.md +14 -0
- package/examples/demo-projects/agent-governance-demo/package.json +22 -0
- package/examples/demo-projects/agent-governance-demo/src/oauth-state.ts +39 -0
- package/examples/demo-projects/agent-governance-demo/tests/oauth-state.test.ts +52 -0
- package/mcp-configs/_INDEX.md +55 -0
- package/mcp-configs/context7/config.json +9 -0
- package/mcp-configs/fetch/config.json +9 -0
- package/mcp-configs/filesystem/config.json +9 -0
- package/mcp-configs/github/config.json +11 -0
- package/mcp-configs/memory/config.json +9 -0
- package/mcp-configs/neon/config.json +11 -0
- package/mcp-configs/playwright/config.json +9 -0
- package/mcp-configs/postgres/config.json +11 -0
- package/mcp-configs/puppeteer/config.json +9 -0
- package/mcp-configs/sequential-thinking/config.json +9 -0
- package/package.json +113 -0
- package/scripts/workflow/lib/gbrain-runtime.mjs +185 -0
- package/scripts/workflow/lib/report-output.mjs +107 -0
- package/scripts/workflow/medscale-release-smoke.mjs +338 -0
- package/scripts/workflow/provider-rehearsal.mjs +597 -0
- package/scripts/workflow/setup-smoke.mjs +433 -0
- package/target-research-platform/bridge_runner.py +310 -0
- package/target-research-platform/config.yaml +148 -0
- package/target-research-platform/data/immune_infiltration/ACC.csv +201 -0
- package/target-research-platform/data/immune_infiltration/BLCA.csv +201 -0
- package/target-research-platform/data/immune_infiltration/BRCA.csv +201 -0
- package/target-research-platform/data/immune_infiltration/CESC.csv +201 -0
- package/target-research-platform/data/immune_infiltration/CHOL.csv +201 -0
- package/target-research-platform/data/immune_infiltration/COAD.csv +201 -0
- package/target-research-platform/data/immune_infiltration/DLBC.csv +201 -0
- package/target-research-platform/data/immune_infiltration/ESCA.csv +201 -0
- package/target-research-platform/data/immune_infiltration/GBM.csv +201 -0
- package/target-research-platform/data/immune_infiltration/HNSC.csv +201 -0
- package/target-research-platform/data/immune_infiltration/KICH.csv +201 -0
- package/target-research-platform/data/immune_infiltration/KIRC.csv +201 -0
- package/target-research-platform/data/immune_infiltration/KIRP.csv +201 -0
- package/target-research-platform/data/immune_infiltration/LAML.csv +201 -0
- package/target-research-platform/data/immune_infiltration/LGG.csv +201 -0
- package/target-research-platform/data/immune_infiltration/LIHC.csv +201 -0
- package/target-research-platform/data/immune_infiltration/LUAD.csv +201 -0
- package/target-research-platform/data/immune_infiltration/LUSC.csv +201 -0
- package/target-research-platform/data/immune_infiltration/MESO.csv +201 -0
- package/target-research-platform/data/immune_infiltration/OV.csv +201 -0
- package/target-research-platform/data/immune_infiltration/PAAD.csv +201 -0
- package/target-research-platform/data/immune_infiltration/PCPG.csv +201 -0
- package/target-research-platform/data/immune_infiltration/PRAD.csv +201 -0
- package/target-research-platform/data/immune_infiltration/READ.csv +201 -0
- package/target-research-platform/data/immune_infiltration/SARC.csv +201 -0
- package/target-research-platform/data/immune_infiltration/SKCM.csv +201 -0
- package/target-research-platform/data/immune_infiltration/STAD.csv +201 -0
- package/target-research-platform/data/immune_infiltration/TGCT.csv +201 -0
- package/target-research-platform/data/immune_infiltration/THCA.csv +201 -0
- package/target-research-platform/data/immune_infiltration/THYM.csv +201 -0
- package/target-research-platform/data/immune_infiltration/UCEC.csv +201 -0
- package/target-research-platform/data/immune_infiltration/UCS.csv +201 -0
- package/target-research-platform/data/immune_infiltration/UVM.csv +201 -0
- package/target-research-platform/docs/JSON_SCHEMA.md +352 -0
- package/target-research-platform/docs/PROGRESS_2026-06-09.md +140 -0
- package/target-research-platform/main.py +755 -0
- package/target-research-platform/pyproject.toml +54 -0
- package/target-research-platform/requirements.txt +9 -0
- package/target-research-platform/run_dashboard.py +5 -0
- package/target-research-platform/run_real_medical_workflow.py +28 -0
- package/target-research-platform/scripts/demo_report.py +481 -0
- package/target-research-platform/scripts/generate_evidence_package.py +75 -0
- package/target-research-platform/scripts/prepare_immune_data.py +386 -0
- package/target-research-platform/src/__init__.py +4 -0
- package/target-research-platform/src/analysis/__init__.py +3 -0
- package/target-research-platform/src/analysis/stage1_expression/__init__.py +12 -0
- package/target-research-platform/src/analysis/stage1_expression/immune_correlation.py +366 -0
- package/target-research-platform/src/analysis/stage1_expression/pipeline.py +579 -0
- package/target-research-platform/src/analysis/stage1_expression/survival_analysis.py +382 -0
- package/target-research-platform/src/analysis/stage2_screening/__init__.py +12 -0
- package/target-research-platform/src/analysis/stage2_screening/differential_expression.py +451 -0
- package/target-research-platform/src/analysis/stage2_screening/druggability_score.py +477 -0
- package/target-research-platform/src/analysis/stage2_screening/pipeline.py +822 -0
- package/target-research-platform/src/analysis/stage3_deep_research/__init__.py +12 -0
- package/target-research-platform/src/analysis/stage3_deep_research/competitive_landscape.py +479 -0
- package/target-research-platform/src/analysis/stage3_deep_research/pipeline.py +763 -0
- package/target-research-platform/src/analysis/stage3_deep_research/target_function.py +290 -0
- package/target-research-platform/src/analysis/stage4_business/__init__.py +12 -0
- package/target-research-platform/src/analysis/stage4_business/business_plan.py +816 -0
- package/target-research-platform/src/analysis/stage4_business/milestone_planner.py +844 -0
- package/target-research-platform/src/analysis/stage4_business/pipeline.py +284 -0
- package/target-research-platform/src/api_clients/__init__.py +29 -0
- package/target-research-platform/src/api_clients/aminer_client.py +163 -0
- package/target-research-platform/src/api_clients/base_client.py +186 -0
- package/target-research-platform/src/api_clients/clinicaltrials_client.py +411 -0
- package/target-research-platform/src/api_clients/geo_client.py +1420 -0
- package/target-research-platform/src/api_clients/gtex_client.py +209 -0
- package/target-research-platform/src/api_clients/hpa_client.py +170 -0
- package/target-research-platform/src/api_clients/immune_data_manager.py +247 -0
- package/target-research-platform/src/api_clients/openalex_client.py +86 -0
- package/target-research-platform/src/api_clients/opentargets_client.py +558 -0
- package/target-research-platform/src/api_clients/pubmed_client.py +361 -0
- package/target-research-platform/src/api_clients/tcga_client.py +712 -0
- package/target-research-platform/src/api_clients/timer_client.py +169 -0
- package/target-research-platform/src/dashboard/app.py +2283 -0
- package/target-research-platform/src/dashboard/deliverables.py +710 -0
- package/target-research-platform/src/dashboard/static/artifactPreview.js +96 -0
- package/target-research-platform/src/dashboard/static/index.html +1292 -0
- package/target-research-platform/src/dashboard/status_tracker.py +237 -0
- package/target-research-platform/src/output/__init__.py +42 -0
- package/target-research-platform/src/output/agent_llm_provider.py +171 -0
- package/target-research-platform/src/output/chart_generator.py +550 -0
- package/target-research-platform/src/output/data_exporter.py +215 -0
- package/target-research-platform/src/output/delivery_packager.py +791 -0
- package/target-research-platform/src/output/evidence_package.py +230 -0
- package/target-research-platform/src/output/journal_templates.py +193 -0
- package/target-research-platform/src/output/literature_enricher.py +395 -0
- package/target-research-platform/src/output/literature_reviewer.py +420 -0
- package/target-research-platform/src/output/manuscript_fact_checker.py +279 -0
- package/target-research-platform/src/output/manuscript_generator.py +1189 -0
- package/target-research-platform/src/output/manuscript_quality.py +401 -0
- package/target-research-platform/src/output/medical_skills_bridge.py +140 -0
- package/target-research-platform/src/output/report_generator.py +542 -0
- package/target-research-platform/src/output/usage_envelope.py +193 -0
- package/target-research-platform/src/utils/__init__.py +1 -0
- package/target-research-platform/src/utils/config.py +125 -0
- package/target-research-platform/src/utils/logger.py +71 -0
- package/target-research-platform/src/validators/__init__.py +13 -0
- package/target-research-platform/src/validators/cross_validator.py +394 -0
- package/target-research-platform/src/validators/data_provenance.py +298 -0
|
@@ -0,0 +1,1046 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { join, resolve } from 'node:path';
|
|
4
|
+
import { execa, execaSync } from 'execa';
|
|
5
|
+
import { inspectCodeIntelligence, writeCodeIntelligenceConfig } from '../codegraph/CodeIntelligence.js';
|
|
6
|
+
import { externalCommandExists } from '../core/ExternalCommand.js';
|
|
7
|
+
import { inspectGbrainCliHealth, inspectMemoryProviders, useMemoryProvider, writeMemoryProvidersConfig } from '../memory/MemoryProviders.js';
|
|
8
|
+
import { wrapShellCommandWithRtk } from '../tools/RtkRuntime.js';
|
|
9
|
+
import { inspectToolCapabilities } from '../tools/ToolCapabilityRegistry.js';
|
|
10
|
+
const UI_SKILL_INSTALLS = {
|
|
11
|
+
'awesome-design-md': (ctx) => {
|
|
12
|
+
const skillDir = quotePath(join(ctx.homeDir, '.agents', 'skills', 'awesome-design-md'));
|
|
13
|
+
const vendorDir = quotePath(join(ctx.homeDir, '.scale', 'vendor', 'awesome-design-md'));
|
|
14
|
+
return `install skill adapter ${skillDir} from VoltAgent/awesome-design-md into ${vendorDir}`;
|
|
15
|
+
},
|
|
16
|
+
'ui-ux-pro-max': (ctx) => {
|
|
17
|
+
const skillDir = quotePath(join(ctx.homeDir, '.agents', 'skills', 'ui-ux-pro-max'));
|
|
18
|
+
const vendorDir = quotePath(join(ctx.homeDir, '.scale', 'vendor', 'ui-ux-pro-max'));
|
|
19
|
+
return `install skill adapter ${skillDir} from nextlevelbuilder/ui-ux-pro-max-skill into ${vendorDir}`;
|
|
20
|
+
},
|
|
21
|
+
'frontend-design': 'npx skills add anthropics/skills --skill frontend-design',
|
|
22
|
+
};
|
|
23
|
+
const RTK_INSTALL = 'cargo install --git https://github.com/rtk-ai/rtk';
|
|
24
|
+
const RTK_INIT = 'rtk init -g --codex';
|
|
25
|
+
const CODEGRAPH_INSTALL = 'npm install -g @colbymchenry/codegraph';
|
|
26
|
+
const GRAPHIFY_CODEX_INSTALL = 'graphify install --platform codex';
|
|
27
|
+
const GRAPHIFY_HOOK_INSTALL = 'graphify hook install';
|
|
28
|
+
const GRAPHIFY_UV_INSTALL = 'uv tool install graphify && graphify install --platform codex';
|
|
29
|
+
const GRAPHIFY_PIPX_INSTALL = 'pipx install graphify && graphify install --platform codex';
|
|
30
|
+
const GRAPHIFY_PIP_INSTALL = 'pip install graphify && graphify install --platform codex';
|
|
31
|
+
const GRAPHIFY_PIP3_INSTALL = 'pip3 install graphify && graphify install --platform codex';
|
|
32
|
+
const GRAPHIFY_PYTHON_INSTALL = 'python -m pip install graphify && graphify install --platform codex';
|
|
33
|
+
const GRAPHIFY_PYTHON3_INSTALL = 'python3 -m pip install graphify && graphify install --platform codex';
|
|
34
|
+
const GBRAIN_INSTALL = 'bun install -g github:garrytan/gbrain && gbrain init --pglite';
|
|
35
|
+
const GBRAIN_SOURCE = 'https://github.com/garrytan/gbrain';
|
|
36
|
+
const DEPENDENCY_BOOTSTRAP_DEFINITIONS = [
|
|
37
|
+
{
|
|
38
|
+
id: 'awesome-design-md',
|
|
39
|
+
name: 'Awesome Design.md',
|
|
40
|
+
kind: 'skill',
|
|
41
|
+
packs: ['ui'],
|
|
42
|
+
source: 'https://github.com/VoltAgent/awesome-design-md',
|
|
43
|
+
detectSkillId: 'awesome-design-md',
|
|
44
|
+
prerequisites: ['git|npx'],
|
|
45
|
+
manualReason: 'Requires Git or npm/npx to sync the upstream DESIGN.md catalog and create a local SCALE skill adapter.',
|
|
46
|
+
installCommand: ctx => requirementSatisfied('git|npx', ctx.commandExists) ? UI_SKILL_INSTALLS['awesome-design-md'](ctx) : null,
|
|
47
|
+
install: ctx => installSkillAdapter(ctx, {
|
|
48
|
+
id: 'awesome-design-md',
|
|
49
|
+
sourceUrl: 'https://github.com/VoltAgent/awesome-design-md.git',
|
|
50
|
+
repoSpecifier: 'VoltAgent/awesome-design-md',
|
|
51
|
+
description: 'Brand, visual language, and DESIGN.md source skill for SCALE UI work.',
|
|
52
|
+
instructions: [
|
|
53
|
+
'Use this skill before UI implementation when brand direction, visual language, DESIGN.md, color, typography, layout mood, or product identity must be defined.',
|
|
54
|
+
'Read the upstream vendor repository under ~/.scale/vendor/awesome-design-md, then create or update the project DESIGN.md with concrete visual decisions.',
|
|
55
|
+
'Do not use it as the accessibility or responsive QA gate; route those checks to ui-ux-pro-max.',
|
|
56
|
+
],
|
|
57
|
+
}),
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
id: 'ui-ux-pro-max',
|
|
61
|
+
name: 'UI/UX Pro Max',
|
|
62
|
+
kind: 'skill',
|
|
63
|
+
packs: ['ui'],
|
|
64
|
+
source: 'https://github.com/nextlevelbuilder/ui-ux-pro-max-skill',
|
|
65
|
+
detectSkillId: 'ui-ux-pro-max',
|
|
66
|
+
prerequisites: ['git|npx'],
|
|
67
|
+
manualReason: 'Requires Git or npm/npx to sync the upstream UX skill and create a local SCALE skill adapter.',
|
|
68
|
+
installCommand: ctx => requirementSatisfied('git|npx', ctx.commandExists) ? UI_SKILL_INSTALLS['ui-ux-pro-max'](ctx) : null,
|
|
69
|
+
install: ctx => installSkillAdapter(ctx, {
|
|
70
|
+
id: 'ui-ux-pro-max',
|
|
71
|
+
sourceUrl: 'https://github.com/nextlevelbuilder/ui-ux-pro-max-skill.git',
|
|
72
|
+
repoSpecifier: 'nextlevelbuilder/ui-ux-pro-max-skill',
|
|
73
|
+
description: 'UX flow, UI state, accessibility, and responsive acceptance skill for SCALE UI work.',
|
|
74
|
+
instructions: [
|
|
75
|
+
'Use this skill after visual direction is selected to review UX flow, state coverage, empty/error/loading behavior, keyboard access, accessibility, and responsive acceptance.',
|
|
76
|
+
'Read the upstream vendor repository under ~/.scale/vendor/ui-ux-pro-max for the current checklist and apply it as an acceptance gate.',
|
|
77
|
+
'Do not replace awesome-design-md for brand or visual-language decisions.',
|
|
78
|
+
],
|
|
79
|
+
}),
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
id: 'frontend-design',
|
|
83
|
+
name: 'Frontend Design',
|
|
84
|
+
kind: 'skill',
|
|
85
|
+
packs: [],
|
|
86
|
+
source: 'https://github.com/anthropics/skills/tree/main/skills/frontend-design',
|
|
87
|
+
detectSkillId: 'frontend-design',
|
|
88
|
+
prerequisites: ['npx'],
|
|
89
|
+
manualReason: 'Optional implementation companion only; awesome-design-md and ui-ux-pro-max are the default UI stack.',
|
|
90
|
+
installCommand: ctx => ctx.commandExists('npx') ? UI_SKILL_INSTALLS['frontend-design'] : null,
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
id: 'rtk',
|
|
94
|
+
name: 'RTK',
|
|
95
|
+
kind: 'cli',
|
|
96
|
+
packs: ['external-cli'],
|
|
97
|
+
source: 'https://github.com/rtk-ai/rtk',
|
|
98
|
+
detectCommand: 'rtk',
|
|
99
|
+
prerequisites: ['cargo'],
|
|
100
|
+
manualReason: 'RTK currently installs from the official Rust toolchain path and needs Cargo on PATH.',
|
|
101
|
+
installCommand: ctx => ctx.commandExists('cargo') ? RTK_INSTALL : null,
|
|
102
|
+
initializeCommands: () => [RTK_INIT],
|
|
103
|
+
healthCheck: checkRtkHealth,
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
id: 'gbrain',
|
|
107
|
+
name: 'GBrain',
|
|
108
|
+
kind: 'cli',
|
|
109
|
+
packs: ['memory'],
|
|
110
|
+
source: GBRAIN_SOURCE,
|
|
111
|
+
detectCommand: 'gbrain',
|
|
112
|
+
prerequisites: ['bun'],
|
|
113
|
+
manualReason: 'The official standalone GBrain install needs Bun and then a configured brain (`gbrain init --pglite`) before cross-session recall is usable.',
|
|
114
|
+
installCommand: ctx => buildGbrainInstallCommand(ctx),
|
|
115
|
+
initializeCommands: () => ['gbrain init --pglite --no-embedding'],
|
|
116
|
+
healthCheck: checkGbrainHealth,
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
id: 'graphify',
|
|
120
|
+
name: 'Graphify',
|
|
121
|
+
kind: 'cli',
|
|
122
|
+
packs: ['knowledge'],
|
|
123
|
+
source: 'https://github.com/safishamsi/graphify',
|
|
124
|
+
detectCommand: 'graphify',
|
|
125
|
+
prerequisites: ['uv|pipx|pip|pip3|python|python3'],
|
|
126
|
+
manualReason: 'Graphify requires Python 3.10+ and a supported installer; uv tool install is preferred to avoid polluting project virtualenvs.',
|
|
127
|
+
installCommand: ctx => buildGraphifyInstallCommand(ctx),
|
|
128
|
+
initializeCommands: ctx => [
|
|
129
|
+
GRAPHIFY_CODEX_INSTALL,
|
|
130
|
+
GRAPHIFY_HOOK_INSTALL,
|
|
131
|
+
`graphify update ${quotePath(ctx.projectDir)} --no-cluster`,
|
|
132
|
+
],
|
|
133
|
+
healthCheck: checkGraphifyHealth,
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
id: 'codegraph',
|
|
137
|
+
name: 'CodeGraph',
|
|
138
|
+
kind: 'cli',
|
|
139
|
+
packs: ['knowledge'],
|
|
140
|
+
source: 'https://github.com/colbymchenry/codegraph',
|
|
141
|
+
detectCommand: 'codegraph',
|
|
142
|
+
prerequisites: ['npm'],
|
|
143
|
+
manualReason: 'CodeGraph installs through npm and needs Node.js/npm available on PATH.',
|
|
144
|
+
installCommand: ctx => ctx.commandExists('npm') ? CODEGRAPH_INSTALL : null,
|
|
145
|
+
initializeCommands: ctx => [codegraphInitCommand(ctx.projectDir)],
|
|
146
|
+
healthCheck: checkCodeGraphHealth,
|
|
147
|
+
},
|
|
148
|
+
];
|
|
149
|
+
export async function bootstrapDependencies(options = {}) {
|
|
150
|
+
const projectDir = resolve(options.projectDir ?? process.cwd());
|
|
151
|
+
const scaleDir = resolveScaleRoot(projectDir, options.scaleDir);
|
|
152
|
+
const homeDir = homedir();
|
|
153
|
+
const packIds = normalizePackIds(options.packIds);
|
|
154
|
+
const includeIds = unique((options.includeIds ?? []).map(value => value.trim()).filter(Boolean));
|
|
155
|
+
const onlyIds = unique((options.onlyIds ?? []).map(value => value.trim()).filter(Boolean));
|
|
156
|
+
const definitions = selectDefinitions(packIds, includeIds, onlyIds);
|
|
157
|
+
const context = {
|
|
158
|
+
projectDir,
|
|
159
|
+
homeDir,
|
|
160
|
+
commandExists: externalCommandExists,
|
|
161
|
+
};
|
|
162
|
+
const reports = definitions.map(definition => inspectDefinition(definition, context));
|
|
163
|
+
const runtimeChecks = buildRuntimeChecks(reports);
|
|
164
|
+
if (options.apply) {
|
|
165
|
+
for (const item of reports.filter(entry => entry.status === 'ready')) {
|
|
166
|
+
if (!item.installCommand)
|
|
167
|
+
continue;
|
|
168
|
+
const definition = definitions.find(entry => entry.id === item.id);
|
|
169
|
+
const result = definition?.install
|
|
170
|
+
? await definition.install(context)
|
|
171
|
+
: await runInstallCommand(item.installCommand, context.projectDir);
|
|
172
|
+
item.output = result.output;
|
|
173
|
+
item.error = result.error;
|
|
174
|
+
const rechecked = definition ? inspectDefinition(definition, context) : item;
|
|
175
|
+
item.installed = rechecked.installed;
|
|
176
|
+
item.detectedBy = rechecked.detectedBy;
|
|
177
|
+
item.health = rechecked.health;
|
|
178
|
+
item.status = result.ok && rechecked.installed
|
|
179
|
+
? rechecked.status === 'installed' ? 'installed-now' : rechecked.status
|
|
180
|
+
: 'failed';
|
|
181
|
+
if (!result.ok && !item.error)
|
|
182
|
+
item.error = `Installation command failed: ${item.installCommand}`;
|
|
183
|
+
if (!result.ok)
|
|
184
|
+
item.installSupported = true;
|
|
185
|
+
}
|
|
186
|
+
await reconcileDependencyBootstrapItems(definitions, reports, context);
|
|
187
|
+
}
|
|
188
|
+
const postActions = options.apply ? applyDependencyBootstrapPostActions(projectDir, scaleDir, reports) : [];
|
|
189
|
+
const postChecks = options.apply
|
|
190
|
+
? runDependencyBootstrapPostChecks({ projectDir, scaleDir, packIds, items: reports, homeDir })
|
|
191
|
+
: [];
|
|
192
|
+
return buildReport(projectDir, scaleDir, packIds, includeIds, Boolean(options.apply), runtimeChecks, reports, postActions, postChecks);
|
|
193
|
+
}
|
|
194
|
+
function buildReport(projectDir, scaleDir, packIds, includeIds, apply, runtimeChecks, items, postActions, postChecks) {
|
|
195
|
+
const nonBlockingItems = new Set(items
|
|
196
|
+
.filter(item => isNonBlockingOptionalItem(item, postChecks))
|
|
197
|
+
.map(item => item.id));
|
|
198
|
+
const summary = {
|
|
199
|
+
total: items.length,
|
|
200
|
+
installed: items.filter(item => item.status === 'installed').length,
|
|
201
|
+
ready: items.filter(item => item.status === 'ready').length,
|
|
202
|
+
manualReview: items.filter(item => item.status === 'manual-review').length,
|
|
203
|
+
needsInit: items.filter(item => item.status === 'needs-init' && !nonBlockingItems.has(item.id)).length,
|
|
204
|
+
versionDrift: items.filter(item => item.status === 'version-drift').length,
|
|
205
|
+
installedNow: items.filter(item => item.status === 'installed-now').length,
|
|
206
|
+
failed: items.filter(item => item.status === 'failed').length,
|
|
207
|
+
};
|
|
208
|
+
const complete = items.length > 0 && items.every(item => item.status === 'installed'
|
|
209
|
+
|| item.status === 'installed-now'
|
|
210
|
+
|| nonBlockingItems.has(item.id));
|
|
211
|
+
const postCheckSummary = {
|
|
212
|
+
total: postChecks.length,
|
|
213
|
+
passed: postChecks.filter(item => item.status === 'passed').length,
|
|
214
|
+
warned: postChecks.filter(item => item.status === 'warn').length,
|
|
215
|
+
failed: postChecks.filter(item => item.status === 'failed').length,
|
|
216
|
+
};
|
|
217
|
+
const recommendations = [];
|
|
218
|
+
const postCheckCommands = buildPostCheckCommands(packIds, items);
|
|
219
|
+
const rollbackHints = buildRollbackHints(items);
|
|
220
|
+
if (!apply && summary.ready > 0)
|
|
221
|
+
recommendations.push('Re-run with --apply to install all ready dependencies in one pass.');
|
|
222
|
+
if (runtimeChecks.some(check => check.status === 'missing'))
|
|
223
|
+
recommendations.push('Install missing runtime dependencies before running --apply.');
|
|
224
|
+
if (runtimeChecks.some(check => check.status === 'warn'))
|
|
225
|
+
recommendations.push('Review runtime warnings; some tools may install but fail initialization or post-checks.');
|
|
226
|
+
if (summary.manualReview > 0)
|
|
227
|
+
recommendations.push('Review manual-review items for missing package managers, PATH setup, or platform-specific configuration.');
|
|
228
|
+
if (summary.needsInit > 0)
|
|
229
|
+
recommendations.push('Run the listed initialization commands before treating installed CLIs as ready for autonomous use.');
|
|
230
|
+
if (summary.versionDrift > 0)
|
|
231
|
+
recommendations.push('Resolve version-drift items before relying on their generated skills, hooks, or artifacts.');
|
|
232
|
+
if (items.some(item => item.id === 'frontend-design'))
|
|
233
|
+
recommendations.push('frontend-design is optional; keep it as an explicit companion only when implementation ideation is needed.');
|
|
234
|
+
if (items.some(item => item.id === 'awesome-design-md'))
|
|
235
|
+
recommendations.push('Use awesome-design-md as the source of DESIGN.md, brand direction, and visual-language selection.');
|
|
236
|
+
if (items.some(item => item.id === 'ui-ux-pro-max'))
|
|
237
|
+
recommendations.push('Use ui-ux-pro-max for UX flow, UI state, accessibility, and responsive acceptance checks.');
|
|
238
|
+
if (items.some(item => item.id === 'gbrain'))
|
|
239
|
+
recommendations.push('After GBrain is installed, validate remote or thin-client health with `scale memory provider status --json`.');
|
|
240
|
+
if (items.some(item => item.id === 'graphify' || item.id === 'codegraph'))
|
|
241
|
+
recommendations.push('After knowledge tools are installed, run `scale codegraph status --json` and initialize the project index or graph artifacts as needed.');
|
|
242
|
+
if (postCheckSummary.failed > 0)
|
|
243
|
+
recommendations.push('Resolve failed post-checks before treating the dependency bootstrap as production-ready.');
|
|
244
|
+
if (postCheckSummary.warned > 0)
|
|
245
|
+
recommendations.push('Review warned post-checks; they usually indicate provider initialization or project index/artifact setup is still pending.');
|
|
246
|
+
return {
|
|
247
|
+
ok: summary.failed === 0 && postCheckSummary.failed === 0,
|
|
248
|
+
complete,
|
|
249
|
+
projectDir,
|
|
250
|
+
scaleDir,
|
|
251
|
+
packIds,
|
|
252
|
+
includeIds,
|
|
253
|
+
apply,
|
|
254
|
+
runtimeChecks,
|
|
255
|
+
items,
|
|
256
|
+
summary,
|
|
257
|
+
postActions,
|
|
258
|
+
postChecks,
|
|
259
|
+
postCheckSummary,
|
|
260
|
+
postCheckCommands,
|
|
261
|
+
rollbackHints,
|
|
262
|
+
recommendations,
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
function buildRuntimeChecks(items) {
|
|
266
|
+
const ids = new Set(items.map(item => item.id));
|
|
267
|
+
const requirements = new Map();
|
|
268
|
+
const requireRuntime = (runtimeId, requiredFor) => {
|
|
269
|
+
const existing = requirements.get(runtimeId) ?? new Set();
|
|
270
|
+
for (const value of requiredFor)
|
|
271
|
+
existing.add(value);
|
|
272
|
+
requirements.set(runtimeId, existing);
|
|
273
|
+
};
|
|
274
|
+
const uiIds = ['awesome-design-md', 'ui-ux-pro-max', 'frontend-design'].filter(id => ids.has(id));
|
|
275
|
+
if (uiIds.length > 0) {
|
|
276
|
+
requireRuntime('node', uiIds);
|
|
277
|
+
requireRuntime('npx', uiIds);
|
|
278
|
+
}
|
|
279
|
+
if (ids.has('rtk'))
|
|
280
|
+
requireRuntime('cargo', ['rtk']);
|
|
281
|
+
if (ids.has('gbrain'))
|
|
282
|
+
requireRuntime('bun', ['gbrain']);
|
|
283
|
+
if (ids.has('graphify')) {
|
|
284
|
+
requireRuntime('python', ['graphify']);
|
|
285
|
+
requireRuntime('python-installer', ['graphify']);
|
|
286
|
+
}
|
|
287
|
+
if (ids.has('codegraph')) {
|
|
288
|
+
requireRuntime('node', ['codegraph']);
|
|
289
|
+
requireRuntime('npm', ['codegraph']);
|
|
290
|
+
}
|
|
291
|
+
const checks = [];
|
|
292
|
+
const requiredFor = (runtimeId) => [...(requirements.get(runtimeId) ?? [])];
|
|
293
|
+
if (requirements.has('node'))
|
|
294
|
+
checks.push(nodeRuntimeCheck(requiredFor('node')));
|
|
295
|
+
if (requirements.has('npx'))
|
|
296
|
+
checks.push(commandRuntimeCheck({
|
|
297
|
+
id: 'npx',
|
|
298
|
+
label: 'npx',
|
|
299
|
+
candidates: [{ command: 'npx', args: ['--version'], display: 'npx' }],
|
|
300
|
+
requiredFor: requiredFor('npx'),
|
|
301
|
+
installHint: 'Install Node.js 20+; npm/npx are bundled with the official Node.js installer.',
|
|
302
|
+
}));
|
|
303
|
+
if (requirements.has('npm'))
|
|
304
|
+
checks.push(commandRuntimeCheck({
|
|
305
|
+
id: 'npm',
|
|
306
|
+
label: 'npm',
|
|
307
|
+
candidates: [{ command: 'npm', args: ['--version'], display: 'npm' }],
|
|
308
|
+
requiredFor: requiredFor('npm'),
|
|
309
|
+
installHint: 'Install Node.js 20+; npm is bundled with the official Node.js installer.',
|
|
310
|
+
}));
|
|
311
|
+
if (requirements.has('cargo'))
|
|
312
|
+
checks.push(commandRuntimeCheck({
|
|
313
|
+
id: 'cargo',
|
|
314
|
+
label: 'Rust/Cargo',
|
|
315
|
+
candidates: [{ command: 'cargo', args: ['--version'], display: 'cargo' }],
|
|
316
|
+
requiredFor: requiredFor('cargo'),
|
|
317
|
+
installHint: 'Install Rust with rustup, then re-open the shell so cargo is on PATH.',
|
|
318
|
+
}));
|
|
319
|
+
if (requirements.has('bun'))
|
|
320
|
+
checks.push(commandRuntimeCheck({
|
|
321
|
+
id: 'bun',
|
|
322
|
+
label: 'Bun',
|
|
323
|
+
candidates: [{ command: 'bun', args: ['--version'], display: 'bun' }],
|
|
324
|
+
requiredFor: requiredFor('bun'),
|
|
325
|
+
installHint: 'Install Bun from https://bun.sh and re-open the shell so bun is on PATH.',
|
|
326
|
+
}));
|
|
327
|
+
if (requirements.has('python'))
|
|
328
|
+
checks.push(pythonRuntimeCheck(requiredFor('python')));
|
|
329
|
+
if (requirements.has('python-installer'))
|
|
330
|
+
checks.push(pythonInstallerRuntimeCheck(requiredFor('python-installer')));
|
|
331
|
+
return checks;
|
|
332
|
+
}
|
|
333
|
+
function commandRuntimeCheck(input) {
|
|
334
|
+
const detected = firstAvailableRuntimeTool(input.candidates);
|
|
335
|
+
if (!detected) {
|
|
336
|
+
return {
|
|
337
|
+
id: input.id,
|
|
338
|
+
label: input.label,
|
|
339
|
+
commands: input.candidates.map(candidate => candidate.display),
|
|
340
|
+
status: 'missing',
|
|
341
|
+
requiredFor: input.requiredFor,
|
|
342
|
+
reason: `${input.label} was not detected on PATH.`,
|
|
343
|
+
installHint: input.installHint,
|
|
344
|
+
};
|
|
345
|
+
}
|
|
346
|
+
return {
|
|
347
|
+
id: input.id,
|
|
348
|
+
label: input.label,
|
|
349
|
+
commands: input.candidates.map(candidate => candidate.display),
|
|
350
|
+
status: 'ok',
|
|
351
|
+
requiredFor: input.requiredFor,
|
|
352
|
+
detectedCommand: detected.display,
|
|
353
|
+
version: firstLine(detected.output),
|
|
354
|
+
reason: `${input.label} is available via ${detected.display}.`,
|
|
355
|
+
installHint: input.installHint,
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
function nodeRuntimeCheck(requiredFor) {
|
|
359
|
+
const detected = firstAvailableRuntimeTool([{ command: 'node', args: ['--version'], display: 'node' }]);
|
|
360
|
+
const commands = ['node'];
|
|
361
|
+
const installHint = 'Install Node.js 20+ from https://nodejs.org.';
|
|
362
|
+
if (!detected) {
|
|
363
|
+
return {
|
|
364
|
+
id: 'node',
|
|
365
|
+
label: 'Node.js',
|
|
366
|
+
commands,
|
|
367
|
+
status: 'missing',
|
|
368
|
+
requiredFor,
|
|
369
|
+
reason: 'Node.js was not detected on PATH.',
|
|
370
|
+
installHint,
|
|
371
|
+
};
|
|
372
|
+
}
|
|
373
|
+
const version = firstLine(detected.output);
|
|
374
|
+
const parsed = parseSemver(version);
|
|
375
|
+
if (parsed && parsed.major < 20) {
|
|
376
|
+
return {
|
|
377
|
+
id: 'node',
|
|
378
|
+
label: 'Node.js',
|
|
379
|
+
commands,
|
|
380
|
+
status: 'warn',
|
|
381
|
+
requiredFor,
|
|
382
|
+
detectedCommand: detected.display,
|
|
383
|
+
version,
|
|
384
|
+
reason: `Node.js ${version} is installed, but SCALE setup expects Node.js 20+ for current third-party installers.`,
|
|
385
|
+
installHint,
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
return {
|
|
389
|
+
id: 'node',
|
|
390
|
+
label: 'Node.js',
|
|
391
|
+
commands,
|
|
392
|
+
status: 'ok',
|
|
393
|
+
requiredFor,
|
|
394
|
+
detectedCommand: detected.display,
|
|
395
|
+
version,
|
|
396
|
+
reason: `Node.js ${version} is available.`,
|
|
397
|
+
installHint,
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
function pythonRuntimeCheck(requiredFor) {
|
|
401
|
+
const candidates = [
|
|
402
|
+
{ command: 'python', args: ['--version'], display: 'python' },
|
|
403
|
+
{ command: 'python3', args: ['--version'], display: 'python3' },
|
|
404
|
+
{ command: 'py', args: ['--version'], display: 'py' },
|
|
405
|
+
];
|
|
406
|
+
const detected = firstAvailableRuntimeTool(candidates);
|
|
407
|
+
const installHint = 'Install Python 3.10+ and prefer uv or pipx for graphify installation.';
|
|
408
|
+
if (!detected) {
|
|
409
|
+
return {
|
|
410
|
+
id: 'python',
|
|
411
|
+
label: 'Python',
|
|
412
|
+
commands: candidates.map(candidate => candidate.display),
|
|
413
|
+
status: 'missing',
|
|
414
|
+
requiredFor,
|
|
415
|
+
reason: 'Python 3.10+ was not detected on PATH.',
|
|
416
|
+
installHint,
|
|
417
|
+
};
|
|
418
|
+
}
|
|
419
|
+
const version = firstLine(detected.output);
|
|
420
|
+
const parsed = parseSemver(version);
|
|
421
|
+
if (!parsed || parsed.major < 3 || (parsed.major === 3 && parsed.minor < 10)) {
|
|
422
|
+
return {
|
|
423
|
+
id: 'python',
|
|
424
|
+
label: 'Python',
|
|
425
|
+
commands: candidates.map(candidate => candidate.display),
|
|
426
|
+
status: 'warn',
|
|
427
|
+
requiredFor,
|
|
428
|
+
detectedCommand: detected.display,
|
|
429
|
+
version,
|
|
430
|
+
reason: `${version} is detected, but Graphify requires Python 3.10+.`,
|
|
431
|
+
installHint,
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
return {
|
|
435
|
+
id: 'python',
|
|
436
|
+
label: 'Python',
|
|
437
|
+
commands: candidates.map(candidate => candidate.display),
|
|
438
|
+
status: 'ok',
|
|
439
|
+
requiredFor,
|
|
440
|
+
detectedCommand: detected.display,
|
|
441
|
+
version,
|
|
442
|
+
reason: `${version} is available for Graphify.`,
|
|
443
|
+
installHint,
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
function pythonInstallerRuntimeCheck(requiredFor) {
|
|
447
|
+
const candidates = [
|
|
448
|
+
{ command: 'uv', args: ['--version'], display: 'uv' },
|
|
449
|
+
{ command: 'pipx', args: ['--version'], display: 'pipx' },
|
|
450
|
+
{ command: 'pip', args: ['--version'], display: 'pip' },
|
|
451
|
+
{ command: 'pip3', args: ['--version'], display: 'pip3' },
|
|
452
|
+
{ command: 'python', args: ['-m', 'pip', '--version'], display: 'python -m pip' },
|
|
453
|
+
{ command: 'python3', args: ['-m', 'pip', '--version'], display: 'python3 -m pip' },
|
|
454
|
+
];
|
|
455
|
+
const detected = firstAvailableRuntimeTool(candidates);
|
|
456
|
+
const installHint = 'Install uv or pipx first; pip is supported only as a fallback for graphify.';
|
|
457
|
+
if (!detected) {
|
|
458
|
+
return {
|
|
459
|
+
id: 'python-installer',
|
|
460
|
+
label: 'Python installer',
|
|
461
|
+
commands: candidates.map(candidate => candidate.display),
|
|
462
|
+
status: 'missing',
|
|
463
|
+
requiredFor,
|
|
464
|
+
reason: 'No supported Python installer was detected for graphify.',
|
|
465
|
+
installHint,
|
|
466
|
+
};
|
|
467
|
+
}
|
|
468
|
+
const version = firstLine(detected.output);
|
|
469
|
+
const preferred = detected.display === 'uv' || detected.display === 'pipx';
|
|
470
|
+
return {
|
|
471
|
+
id: 'python-installer',
|
|
472
|
+
label: 'Python installer',
|
|
473
|
+
commands: candidates.map(candidate => candidate.display),
|
|
474
|
+
status: preferred ? 'ok' : 'warn',
|
|
475
|
+
requiredFor,
|
|
476
|
+
detectedCommand: detected.display,
|
|
477
|
+
version,
|
|
478
|
+
reason: preferred
|
|
479
|
+
? `${detected.display} is available for isolated graphify installation.`
|
|
480
|
+
: `${detected.display} is available, but uv or pipx is preferred to avoid polluting project environments.`,
|
|
481
|
+
installHint,
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
function firstAvailableRuntimeTool(candidates) {
|
|
485
|
+
for (const candidate of candidates) {
|
|
486
|
+
const result = runHealthCommand(candidate.command, candidate.args);
|
|
487
|
+
if (!result.ok)
|
|
488
|
+
continue;
|
|
489
|
+
return {
|
|
490
|
+
display: candidate.display,
|
|
491
|
+
output: `${result.stdout}\n${result.stderr}`.trim(),
|
|
492
|
+
};
|
|
493
|
+
}
|
|
494
|
+
return undefined;
|
|
495
|
+
}
|
|
496
|
+
function parseSemver(value) {
|
|
497
|
+
const match = value.match(/(\d+)\.(\d+)(?:\.(\d+))?/);
|
|
498
|
+
if (!match)
|
|
499
|
+
return null;
|
|
500
|
+
return {
|
|
501
|
+
major: Number.parseInt(match[1], 10),
|
|
502
|
+
minor: Number.parseInt(match[2], 10),
|
|
503
|
+
patch: Number.parseInt(match[3] ?? '0', 10),
|
|
504
|
+
};
|
|
505
|
+
}
|
|
506
|
+
export function runDependencyBootstrapPostChecks(input, deps = {}) {
|
|
507
|
+
const inspectTools = deps.inspectTools ?? inspectToolCapabilities;
|
|
508
|
+
const inspectMemory = deps.inspectMemory ?? inspectMemoryProviders;
|
|
509
|
+
const inspectCode = deps.inspectCode ?? inspectCodeIntelligence;
|
|
510
|
+
const toolIds = unique(input.items.map(item => item.id).filter(id => ['awesome-design-md', 'ui-ux-pro-max', 'frontend-design', 'rtk', 'gbrain', 'codegraph', 'graphify'].includes(id)));
|
|
511
|
+
const results = [];
|
|
512
|
+
const memoryReport = input.items.some(item => item.id === 'gbrain')
|
|
513
|
+
? inspectMemory({ projectDir: input.projectDir, scaleDir: input.scaleDir })
|
|
514
|
+
: undefined;
|
|
515
|
+
const gbrain = memoryReport?.providers.find(provider => provider.id === 'gbrain');
|
|
516
|
+
const memoryFallback = memoryReport?.providers.find(provider => provider.kind === 'scale-local' && provider.available);
|
|
517
|
+
const softBlockedGbrain = Boolean(gbrain && !gbrain.available && memoryFallback);
|
|
518
|
+
if (toolIds.length > 0) {
|
|
519
|
+
const toolReport = inspectTools({
|
|
520
|
+
projectDir: input.projectDir,
|
|
521
|
+
homeDir: input.homeDir,
|
|
522
|
+
toolIds,
|
|
523
|
+
});
|
|
524
|
+
const missing = toolReport.tools.filter(tool => !tool.installed).map(tool => tool.id);
|
|
525
|
+
const degraded = missing.filter(id => id === 'gbrain' && softBlockedGbrain);
|
|
526
|
+
const blockingMissing = missing.filter(id => !degraded.includes(id));
|
|
527
|
+
results.push({
|
|
528
|
+
id: 'tool-capabilities',
|
|
529
|
+
label: 'Tool Doctor',
|
|
530
|
+
command: `scale tool doctor --tools ${toolIds.join(',')} --json`,
|
|
531
|
+
status: blockingMissing.length > 0 ? 'failed' : degraded.length > 0 ? 'warn' : 'passed',
|
|
532
|
+
summary: [
|
|
533
|
+
`${toolReport.summary.installed}/${toolReport.summary.total} selected tools are available`,
|
|
534
|
+
blockingMissing.length > 0 ? `missing: ${blockingMissing.join(', ')}` : undefined,
|
|
535
|
+
degraded.length > 0 ? `degraded: ${degraded.join(', ')} (scale-local fallback active)` : undefined,
|
|
536
|
+
].filter(Boolean).join('; '),
|
|
537
|
+
details: {
|
|
538
|
+
toolIds,
|
|
539
|
+
missing: blockingMissing,
|
|
540
|
+
degraded,
|
|
541
|
+
fallbackProvider: memoryFallback?.id,
|
|
542
|
+
},
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
if (memoryReport) {
|
|
546
|
+
const warnings = [...memoryReport.warnings];
|
|
547
|
+
if (softBlockedGbrain)
|
|
548
|
+
warnings.push(`gbrain is unavailable in this runtime; falling back to ${memoryFallback.id}`);
|
|
549
|
+
const status = !gbrain?.available ? (softBlockedGbrain ? 'warn' : 'failed') : warnings.length > 0 ? 'warn' : 'passed';
|
|
550
|
+
results.push({
|
|
551
|
+
id: 'memory-provider',
|
|
552
|
+
label: 'Memory Provider',
|
|
553
|
+
command: 'scale memory provider status --json',
|
|
554
|
+
status,
|
|
555
|
+
summary: gbrain
|
|
556
|
+
? `mode=${memoryReport.routing.mode}; order=${memoryReport.routing.defaultOrder.join(' -> ')}; gbrain=${gbrain.available ? 'available' : 'unavailable'}`
|
|
557
|
+
: 'gbrain provider entry is missing from routing policy',
|
|
558
|
+
details: {
|
|
559
|
+
warnings,
|
|
560
|
+
gbrainReason: gbrain?.reason,
|
|
561
|
+
fallbackProvider: memoryFallback?.id,
|
|
562
|
+
},
|
|
563
|
+
});
|
|
564
|
+
}
|
|
565
|
+
if (input.items.some(item => item.id === 'codegraph' || item.id === 'graphify')) {
|
|
566
|
+
const codeReport = inspectCode({ projectDir: input.projectDir, scaleDir: input.scaleDir });
|
|
567
|
+
const codegraph = codeReport.providers.find(provider => provider.id === 'codegraph');
|
|
568
|
+
const graphify = codeReport.providers.find(provider => provider.id === 'graphify');
|
|
569
|
+
const warnings = [];
|
|
570
|
+
let failed = false;
|
|
571
|
+
if (input.items.some(item => item.id === 'codegraph')) {
|
|
572
|
+
if (!codegraph?.available)
|
|
573
|
+
failed = true;
|
|
574
|
+
else if (!codeReport.projectIndexExists)
|
|
575
|
+
warnings.push('codegraph CLI is installed but the project index (.codegraph/) is not initialized yet');
|
|
576
|
+
}
|
|
577
|
+
if (input.items.some(item => item.id === 'graphify') && !graphify?.available) {
|
|
578
|
+
warnings.push('graphify CLI is installed but graphify-out/graph.json is not present yet');
|
|
579
|
+
}
|
|
580
|
+
results.push({
|
|
581
|
+
id: 'code-intelligence',
|
|
582
|
+
label: 'Code Intelligence',
|
|
583
|
+
command: 'scale codegraph status --json',
|
|
584
|
+
status: failed ? 'failed' : warnings.length > 0 ? 'warn' : 'passed',
|
|
585
|
+
summary: [
|
|
586
|
+
codegraph ? `codegraph=${codegraph.available ? 'available' : 'missing'}` : undefined,
|
|
587
|
+
graphify ? `graphify-artifact=${graphify.available ? 'available' : 'missing'}` : undefined,
|
|
588
|
+
`projectIndex=${codeReport.projectIndexExists ? 'present' : 'missing'}`,
|
|
589
|
+
].filter(Boolean).join('; '),
|
|
590
|
+
details: {
|
|
591
|
+
warnings,
|
|
592
|
+
},
|
|
593
|
+
});
|
|
594
|
+
}
|
|
595
|
+
return results;
|
|
596
|
+
}
|
|
597
|
+
function isNonBlockingOptionalItem(item, postChecks) {
|
|
598
|
+
if (item.id !== 'gbrain' || item.status !== 'needs-init')
|
|
599
|
+
return false;
|
|
600
|
+
return postChecks.some(check => check.id === 'memory-provider'
|
|
601
|
+
&& check.status === 'warn'
|
|
602
|
+
&& check.details?.fallbackProvider === 'scale-local');
|
|
603
|
+
}
|
|
604
|
+
function inspectDefinition(definition, context) {
|
|
605
|
+
const detectedBy = detectDefinition(definition, context.projectDir, context.homeDir);
|
|
606
|
+
const installed = detectedBy !== 'missing';
|
|
607
|
+
const prerequisites = definition.prerequisites.map(requirement => ({
|
|
608
|
+
command: requirement,
|
|
609
|
+
present: requirementSatisfied(requirement, context.commandExists),
|
|
610
|
+
}));
|
|
611
|
+
const health = installed && definition.healthCheck ? definition.healthCheck(context) : undefined;
|
|
612
|
+
const installCommand = installed ? undefined : definition.installCommand(context) ?? undefined;
|
|
613
|
+
const installSupported = Boolean(installCommand);
|
|
614
|
+
return {
|
|
615
|
+
id: definition.id,
|
|
616
|
+
name: definition.name,
|
|
617
|
+
kind: definition.kind,
|
|
618
|
+
packs: definition.packs,
|
|
619
|
+
source: definition.source,
|
|
620
|
+
installed,
|
|
621
|
+
status: installed
|
|
622
|
+
? health?.bootstrapStatus ?? 'installed'
|
|
623
|
+
: installSupported ? 'ready' : 'manual-review',
|
|
624
|
+
installCommand,
|
|
625
|
+
installSupported,
|
|
626
|
+
detectedBy,
|
|
627
|
+
prerequisites,
|
|
628
|
+
manualReason: installed ? undefined : definition.manualReason,
|
|
629
|
+
health,
|
|
630
|
+
};
|
|
631
|
+
}
|
|
632
|
+
function detectDefinition(definition, projectDir, homeDir) {
|
|
633
|
+
const context = { projectDir, homeDir, commandExists: externalCommandExists };
|
|
634
|
+
const detectedPath = definition.detectPaths?.(context).find(candidate => existsSync(candidate));
|
|
635
|
+
if (detectedPath)
|
|
636
|
+
return detectedPath;
|
|
637
|
+
if (definition.detectSkillId) {
|
|
638
|
+
const path = skillCandidatePaths(projectDir, homeDir, definition.detectSkillId).find(candidate => existsSync(candidate));
|
|
639
|
+
return path ?? 'missing';
|
|
640
|
+
}
|
|
641
|
+
if (definition.detectCommand && externalCommandExists(definition.detectCommand))
|
|
642
|
+
return `PATH:${definition.detectCommand}`;
|
|
643
|
+
return 'missing';
|
|
644
|
+
}
|
|
645
|
+
function skillCandidatePaths(projectDir, homeDir, skillId) {
|
|
646
|
+
return [
|
|
647
|
+
join(projectDir, '.agents', 'skills', skillId, 'SKILL.md'),
|
|
648
|
+
join(projectDir, '.codex', 'skills', skillId, 'SKILL.md'),
|
|
649
|
+
join(projectDir, '.claude', 'skills', skillId, 'SKILL.md'),
|
|
650
|
+
join(homeDir, '.agents', 'skills', skillId, 'SKILL.md'),
|
|
651
|
+
join(homeDir, '.codex', 'skills', skillId, 'SKILL.md'),
|
|
652
|
+
join(homeDir, '.claude', 'skills', skillId, 'SKILL.md'),
|
|
653
|
+
];
|
|
654
|
+
}
|
|
655
|
+
function requirementSatisfied(requirement, commandExists) {
|
|
656
|
+
return requirement.split('|').some(command => commandExists(command));
|
|
657
|
+
}
|
|
658
|
+
function buildGraphifyInstallCommand(context) {
|
|
659
|
+
if (context.commandExists('uv'))
|
|
660
|
+
return GRAPHIFY_UV_INSTALL;
|
|
661
|
+
if (context.commandExists('pipx'))
|
|
662
|
+
return GRAPHIFY_PIPX_INSTALL;
|
|
663
|
+
if (context.commandExists('pip'))
|
|
664
|
+
return GRAPHIFY_PIP_INSTALL;
|
|
665
|
+
if (context.commandExists('pip3'))
|
|
666
|
+
return GRAPHIFY_PIP3_INSTALL;
|
|
667
|
+
if (context.commandExists('python'))
|
|
668
|
+
return GRAPHIFY_PYTHON_INSTALL;
|
|
669
|
+
if (context.commandExists('python3'))
|
|
670
|
+
return GRAPHIFY_PYTHON3_INSTALL;
|
|
671
|
+
return null;
|
|
672
|
+
}
|
|
673
|
+
function buildGbrainInstallCommand(context) {
|
|
674
|
+
if (!context.commandExists('bun'))
|
|
675
|
+
return null;
|
|
676
|
+
return GBRAIN_INSTALL;
|
|
677
|
+
}
|
|
678
|
+
function codegraphInitCommand(projectDir) {
|
|
679
|
+
const command = `codegraph init -i ${quotePath(projectDir)}`;
|
|
680
|
+
return process.platform === 'win32' ? `cmd /d /c ${command}` : command;
|
|
681
|
+
}
|
|
682
|
+
export function hasCodexRtkInstructions(homeDir) {
|
|
683
|
+
const codexDir = join(homeDir, '.codex');
|
|
684
|
+
const rtkPath = join(codexDir, 'RTK.md');
|
|
685
|
+
const agentsPath = join(codexDir, 'AGENTS.md');
|
|
686
|
+
if (!existsSync(rtkPath) || !existsSync(agentsPath))
|
|
687
|
+
return false;
|
|
688
|
+
try {
|
|
689
|
+
const agents = readFileSync(agentsPath, 'utf-8');
|
|
690
|
+
return /RTK\.md/i.test(agents);
|
|
691
|
+
}
|
|
692
|
+
catch {
|
|
693
|
+
return false;
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
function checkRtkHealth(context) {
|
|
697
|
+
const gain = runHealthCommand('rtk', ['gain']);
|
|
698
|
+
if (!gain.ok) {
|
|
699
|
+
return {
|
|
700
|
+
status: 'warn',
|
|
701
|
+
bootstrapStatus: 'needs-init',
|
|
702
|
+
reason: 'rtk CLI is installed but `rtk gain` did not run successfully; token-savings evidence is not available yet.',
|
|
703
|
+
nextCommands: ['rtk init -g --codex', 'rtk gain'],
|
|
704
|
+
};
|
|
705
|
+
}
|
|
706
|
+
const output = `${gain.stdout}\n${gain.stderr}`;
|
|
707
|
+
if (/no hook installed/i.test(output)) {
|
|
708
|
+
if (hasCodexRtkInstructions(context.homeDir)) {
|
|
709
|
+
return {
|
|
710
|
+
status: 'ok',
|
|
711
|
+
reason: 'rtk gain evidence is available; Codex mode uses RTK.md instructions instead of an automatic shell hook.',
|
|
712
|
+
};
|
|
713
|
+
}
|
|
714
|
+
return {
|
|
715
|
+
status: 'ok',
|
|
716
|
+
reason: 'rtk gain evidence is available; automatic hook installation is not active, so SCALE should keep using the explicit `rtk <command>` proxy path.',
|
|
717
|
+
};
|
|
718
|
+
}
|
|
719
|
+
return { status: 'ok', reason: 'rtk CLI and gain evidence are available.' };
|
|
720
|
+
}
|
|
721
|
+
function checkGbrainHealth() {
|
|
722
|
+
const health = inspectGbrainCliHealth();
|
|
723
|
+
if (health.available) {
|
|
724
|
+
return {
|
|
725
|
+
status: health.degraded ? 'warn' : 'ok',
|
|
726
|
+
reason: health.degraded
|
|
727
|
+
? `${health.reason}; provider can still be used for read-only recall.`
|
|
728
|
+
: 'gbrain doctor passed; provider can be used for default memory routing.',
|
|
729
|
+
};
|
|
730
|
+
}
|
|
731
|
+
return {
|
|
732
|
+
status: 'warn',
|
|
733
|
+
bootstrapStatus: 'needs-init',
|
|
734
|
+
reason: /no brain configured/i.test(health.reason)
|
|
735
|
+
? 'gbrain CLI is installed but no brain is configured yet; cross-session recall will fail until initialized.'
|
|
736
|
+
: health.reason,
|
|
737
|
+
nextCommands: ['gbrain init --pglite', 'gbrain doctor --json', 'scale memory provider status --json'],
|
|
738
|
+
};
|
|
739
|
+
}
|
|
740
|
+
async function reconcileDependencyBootstrapItems(definitions, reports, context) {
|
|
741
|
+
const definitionsById = new Map(definitions.map(definition => [definition.id, definition]));
|
|
742
|
+
for (const item of reports) {
|
|
743
|
+
if (item.status !== 'needs-init' && item.status !== 'version-drift')
|
|
744
|
+
continue;
|
|
745
|
+
const definition = definitionsById.get(item.id);
|
|
746
|
+
const commands = definition?.initializeCommands?.(context) ?? [];
|
|
747
|
+
if (commands.length === 0)
|
|
748
|
+
continue;
|
|
749
|
+
const outputs = [item.output].filter(Boolean);
|
|
750
|
+
const errors = [item.error].filter(Boolean);
|
|
751
|
+
let ok = true;
|
|
752
|
+
for (const command of commands) {
|
|
753
|
+
const result = await runInstallCommand(command, context.projectDir);
|
|
754
|
+
if (result.output)
|
|
755
|
+
outputs.push(result.output);
|
|
756
|
+
if (result.error)
|
|
757
|
+
errors.push(result.error);
|
|
758
|
+
if (!result.ok) {
|
|
759
|
+
ok = false;
|
|
760
|
+
if (!result.error)
|
|
761
|
+
errors.push(`Initialization command failed: ${command}`);
|
|
762
|
+
break;
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
item.output = outputs.join('\n') || undefined;
|
|
766
|
+
item.error = errors.join('\n') || undefined;
|
|
767
|
+
if (!ok) {
|
|
768
|
+
const rechecked = definition ? inspectDefinition(definition, context) : item;
|
|
769
|
+
item.installed = rechecked.installed;
|
|
770
|
+
item.detectedBy = rechecked.detectedBy;
|
|
771
|
+
item.health = rechecked.health;
|
|
772
|
+
item.status = definition?.id === 'gbrain' && rechecked.installed ? rechecked.status : 'failed';
|
|
773
|
+
continue;
|
|
774
|
+
}
|
|
775
|
+
const rechecked = definition ? inspectDefinition(definition, context) : item;
|
|
776
|
+
item.installed = rechecked.installed;
|
|
777
|
+
item.detectedBy = rechecked.detectedBy;
|
|
778
|
+
item.health = rechecked.health;
|
|
779
|
+
item.status = rechecked.status === 'installed' ? 'installed-now' : rechecked.status;
|
|
780
|
+
}
|
|
781
|
+
}
|
|
782
|
+
function checkGraphifyHealth(context) {
|
|
783
|
+
const graphPath = join(context.projectDir, 'graphify-out', 'graph.json');
|
|
784
|
+
const version = runHealthCommand('graphify', ['--version'], 5_000, context.projectDir);
|
|
785
|
+
const hook = runHealthCommand('graphify', ['hook', 'status'], 10_000, context.projectDir);
|
|
786
|
+
const output = `${version.stdout}\n${version.stderr}\n${hook.stdout}\n${hook.stderr}`;
|
|
787
|
+
if (/skill.*version|package.*version|drift|outdated/i.test(output)) {
|
|
788
|
+
return {
|
|
789
|
+
status: 'warn',
|
|
790
|
+
bootstrapStatus: 'version-drift',
|
|
791
|
+
reason: 'graphify CLI is installed but its generated skill/hook assets appear out of sync with the package.',
|
|
792
|
+
nextCommands: ['graphify install --platform codex', 'graphify hook status', 'scale codegraph status --json'],
|
|
793
|
+
};
|
|
794
|
+
}
|
|
795
|
+
if (!hook.ok || /not installed|missing/i.test(output)) {
|
|
796
|
+
return {
|
|
797
|
+
status: 'warn',
|
|
798
|
+
bootstrapStatus: 'needs-init',
|
|
799
|
+
reason: 'graphify CLI is installed but Codex hooks are not fully configured.',
|
|
800
|
+
nextCommands: ['graphify install --platform codex', 'graphify hook status'],
|
|
801
|
+
};
|
|
802
|
+
}
|
|
803
|
+
if (!existsSync(graphPath)) {
|
|
804
|
+
return {
|
|
805
|
+
status: 'warn',
|
|
806
|
+
bootstrapStatus: 'needs-init',
|
|
807
|
+
reason: 'graphify CLI is installed but graphify-out/graph.json is not present yet.',
|
|
808
|
+
nextCommands: [`graphify update ${quotePath(context.projectDir)} --no-cluster`, 'scale codegraph status --json'],
|
|
809
|
+
};
|
|
810
|
+
}
|
|
811
|
+
return { status: 'ok', reason: 'graphify CLI, hooks, and graph artifact are available.' };
|
|
812
|
+
}
|
|
813
|
+
function checkCodeGraphHealth(context) {
|
|
814
|
+
const indexPath = join(context.projectDir, '.codegraph');
|
|
815
|
+
if (!existsSync(indexPath)) {
|
|
816
|
+
return {
|
|
817
|
+
status: 'warn',
|
|
818
|
+
bootstrapStatus: 'needs-init',
|
|
819
|
+
reason: 'codegraph CLI is installed but this project has no .codegraph index yet.',
|
|
820
|
+
nextCommands: ['codegraph init -i', 'scale codegraph status --json'],
|
|
821
|
+
};
|
|
822
|
+
}
|
|
823
|
+
const status = runHealthCommand('codegraph', ['status', context.projectDir], 10_000);
|
|
824
|
+
if (!status.ok) {
|
|
825
|
+
return {
|
|
826
|
+
status: 'warn',
|
|
827
|
+
bootstrapStatus: 'needs-init',
|
|
828
|
+
reason: `codegraph index exists but status check failed: ${firstLine(`${status.stdout}\n${status.stderr}`)}`,
|
|
829
|
+
nextCommands: ['codegraph init -i', 'codegraph status .'],
|
|
830
|
+
};
|
|
831
|
+
}
|
|
832
|
+
return { status: 'ok', reason: 'codegraph CLI and project index are available.' };
|
|
833
|
+
}
|
|
834
|
+
function runHealthCommand(command, args, timeout = 5_000, cwd) {
|
|
835
|
+
try {
|
|
836
|
+
const result = execaSync(command, args, {
|
|
837
|
+
reject: false,
|
|
838
|
+
timeout,
|
|
839
|
+
cwd,
|
|
840
|
+
});
|
|
841
|
+
return {
|
|
842
|
+
ok: (result.exitCode ?? 1) === 0,
|
|
843
|
+
stdout: result.stdout ?? '',
|
|
844
|
+
stderr: result.stderr ?? '',
|
|
845
|
+
};
|
|
846
|
+
}
|
|
847
|
+
catch (error) {
|
|
848
|
+
const err = error;
|
|
849
|
+
return {
|
|
850
|
+
ok: false,
|
|
851
|
+
stdout: String(err.stdout ?? ''),
|
|
852
|
+
stderr: String(err.stderr ?? err.message ?? ''),
|
|
853
|
+
};
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
function firstLine(value) {
|
|
857
|
+
return value.split(/\r?\n/).map(line => line.trim()).find(Boolean) ?? 'unknown error';
|
|
858
|
+
}
|
|
859
|
+
function quotePath(path) {
|
|
860
|
+
return `"${path.replace(/"/g, '\\"')}"`;
|
|
861
|
+
}
|
|
862
|
+
async function runInstallCommand(shellCommand, cwd) {
|
|
863
|
+
const wrapped = wrapShellCommandWithRtk(shellCommand);
|
|
864
|
+
const result = wrapped
|
|
865
|
+
? await execa(wrapped.command, wrapped.args, { reject: false, timeout: 300_000, all: false, cwd })
|
|
866
|
+
: await execa(shellCommand, { shell: true, reject: false, timeout: 300_000, all: false, cwd });
|
|
867
|
+
return {
|
|
868
|
+
ok: (result.exitCode ?? 1) === 0,
|
|
869
|
+
output: result.stdout ?? '',
|
|
870
|
+
error: result.stderr ?? '',
|
|
871
|
+
};
|
|
872
|
+
}
|
|
873
|
+
async function installSkillAdapter(context, input) {
|
|
874
|
+
const vendorDir = join(context.homeDir, '.scale', 'vendor', input.id);
|
|
875
|
+
const skillDir = join(context.homeDir, '.agents', 'skills', input.id);
|
|
876
|
+
const outputs = [];
|
|
877
|
+
const errors = [];
|
|
878
|
+
mkdirSync(join(context.homeDir, '.scale', 'vendor'), { recursive: true });
|
|
879
|
+
mkdirSync(skillDir, { recursive: true });
|
|
880
|
+
if (!existsSync(vendorDir) || isEmptyDirectory(vendorDir)) {
|
|
881
|
+
if (context.commandExists('git')) {
|
|
882
|
+
const clone = await execa('git', ['clone', '--depth', '1', input.sourceUrl, vendorDir], { reject: false });
|
|
883
|
+
outputs.push(clone.stdout ?? '');
|
|
884
|
+
errors.push(clone.stderr ?? '');
|
|
885
|
+
if ((clone.exitCode ?? 1) !== 0)
|
|
886
|
+
return { ok: false, output: outputs.join('\n'), error: errors.join('\n') };
|
|
887
|
+
}
|
|
888
|
+
else if (context.commandExists('npx')) {
|
|
889
|
+
const degit = await execa('npx', ['degit', input.repoSpecifier, vendorDir], { reject: false });
|
|
890
|
+
outputs.push(degit.stdout ?? '');
|
|
891
|
+
errors.push(degit.stderr ?? '');
|
|
892
|
+
if ((degit.exitCode ?? 1) !== 0)
|
|
893
|
+
return { ok: false, output: outputs.join('\n'), error: errors.join('\n') };
|
|
894
|
+
}
|
|
895
|
+
else {
|
|
896
|
+
return { ok: false, error: 'Git or npx is required to install third-party skills.' };
|
|
897
|
+
}
|
|
898
|
+
}
|
|
899
|
+
else if (existsSync(join(vendorDir, '.git')) && context.commandExists('git')) {
|
|
900
|
+
const pull = await execa('git', ['-C', vendorDir, 'pull', '--ff-only'], { reject: false });
|
|
901
|
+
outputs.push(pull.stdout ?? '');
|
|
902
|
+
errors.push(pull.stderr ?? '');
|
|
903
|
+
if ((pull.exitCode ?? 1) !== 0)
|
|
904
|
+
return { ok: false, output: outputs.join('\n'), error: errors.join('\n') };
|
|
905
|
+
}
|
|
906
|
+
else {
|
|
907
|
+
outputs.push(`Reused existing vendor directory: ${vendorDir}`);
|
|
908
|
+
}
|
|
909
|
+
writeFileSync(join(skillDir, 'SKILL.md'), renderSkillAdapter(input, vendorDir), 'utf-8');
|
|
910
|
+
outputs.push(`Wrote skill adapter: ${join(skillDir, 'SKILL.md')}`);
|
|
911
|
+
return { ok: true, output: outputs.filter(Boolean).join('\n'), error: errors.filter(Boolean).join('\n') };
|
|
912
|
+
}
|
|
913
|
+
function isEmptyDirectory(path) {
|
|
914
|
+
return existsSync(path) && readdirSync(path).length === 0;
|
|
915
|
+
}
|
|
916
|
+
function renderSkillAdapter(input, vendorDir) {
|
|
917
|
+
const lines = [
|
|
918
|
+
'---',
|
|
919
|
+
`name: ${input.id}`,
|
|
920
|
+
`description: ${input.description}`,
|
|
921
|
+
'---',
|
|
922
|
+
'',
|
|
923
|
+
`# ${input.id}`,
|
|
924
|
+
'',
|
|
925
|
+
`Source: ${input.sourceUrl}`,
|
|
926
|
+
`Vendor path: ${vendorDir}`,
|
|
927
|
+
'',
|
|
928
|
+
'## When To Use',
|
|
929
|
+
'',
|
|
930
|
+
...input.instructions.map(item => `- ${item}`),
|
|
931
|
+
'',
|
|
932
|
+
'## Operating Rules',
|
|
933
|
+
'',
|
|
934
|
+
'- Prefer concrete project artifacts over generic advice.',
|
|
935
|
+
'- If the vendor directory is missing or outdated, run `scale setup --pack ui --apply` again.',
|
|
936
|
+
'- Keep generated project outputs, such as DESIGN.md, inside the target project rather than this skill directory.',
|
|
937
|
+
'',
|
|
938
|
+
];
|
|
939
|
+
return `${lines.join('\n')}\n`;
|
|
940
|
+
}
|
|
941
|
+
export function applyDependencyBootstrapPostActions(projectDir, scaleDir, items, deps = {}) {
|
|
942
|
+
const writeMemoryConfig = deps.writeMemoryConfig ?? writeMemoryProvidersConfig;
|
|
943
|
+
const switchMemoryProvider = deps.switchMemoryProvider ?? useMemoryProvider;
|
|
944
|
+
const writeCodeConfig = deps.writeCodeConfig ?? writeCodeIntelligenceConfig;
|
|
945
|
+
const ids = new Set(items.map(item => item.id));
|
|
946
|
+
const actions = [];
|
|
947
|
+
if (ids.has('gbrain')) {
|
|
948
|
+
const memoryConfig = writeMemoryConfig({ projectDir, scaleDir });
|
|
949
|
+
actions.push(`${memoryConfig.written ? 'Wrote' : 'Reused'} ${memoryConfig.path}`);
|
|
950
|
+
const provider = switchMemoryProvider({ projectDir, scaleDir, provider: 'gbrain' });
|
|
951
|
+
const previousOrder = provider.previousOrder.join(' -> ');
|
|
952
|
+
const nextOrder = provider.nextOrder.join(' -> ');
|
|
953
|
+
actions.push(previousOrder === nextOrder
|
|
954
|
+
? `Memory provider order unchanged: ${nextOrder}`
|
|
955
|
+
: `Memory provider order: ${previousOrder} => ${nextOrder}`);
|
|
956
|
+
}
|
|
957
|
+
if (ids.has('graphify') || ids.has('codegraph')) {
|
|
958
|
+
const codeIntelligence = writeCodeConfig({ projectDir, scaleDir });
|
|
959
|
+
actions.push(`${codeIntelligence.written ? 'Wrote' : 'Reused'} ${codeIntelligence.path}`);
|
|
960
|
+
}
|
|
961
|
+
return actions;
|
|
962
|
+
}
|
|
963
|
+
function selectDefinitions(packIds, includeIds, onlyIds = []) {
|
|
964
|
+
const selectedPacks = new Set(packIds.includes('full') ? ['ui', 'memory', 'knowledge', 'external-cli'] : packIds);
|
|
965
|
+
const selectedIds = new Set(includeIds);
|
|
966
|
+
const only = new Set(onlyIds);
|
|
967
|
+
return DEPENDENCY_BOOTSTRAP_DEFINITIONS.filter(definition => (only.size === 0 || only.has(definition.id)) &&
|
|
968
|
+
(definition.packs.some(pack => selectedPacks.has(pack)) || selectedIds.has(definition.id)));
|
|
969
|
+
}
|
|
970
|
+
function buildPostCheckCommands(packIds, items) {
|
|
971
|
+
const commands = new Set();
|
|
972
|
+
const selectedPacks = new Set(packIds.includes('full') ? ['ui', 'memory', 'knowledge', 'external-cli'] : packIds);
|
|
973
|
+
const ids = new Set(items.map(item => item.id));
|
|
974
|
+
if (selectedPacks.has('ui')) {
|
|
975
|
+
const uiToolIds = items
|
|
976
|
+
.filter(item => item.kind === 'skill' && item.packs.includes('ui'))
|
|
977
|
+
.map(item => item.id);
|
|
978
|
+
if (uiToolIds.length > 0)
|
|
979
|
+
commands.add(`scale tool doctor --tools ${uiToolIds.join(',')} --json`);
|
|
980
|
+
commands.add('scale skill doctor --json');
|
|
981
|
+
}
|
|
982
|
+
if (selectedPacks.has('memory') || ids.has('gbrain')) {
|
|
983
|
+
commands.add('scale memory provider status --json');
|
|
984
|
+
}
|
|
985
|
+
if (selectedPacks.has('knowledge') || ids.has('codegraph') || ids.has('graphify')) {
|
|
986
|
+
commands.add('scale tool doctor --tools codegraph,graphify --json');
|
|
987
|
+
commands.add('scale codegraph status --json');
|
|
988
|
+
}
|
|
989
|
+
if (selectedPacks.has('external-cli') || ids.has('rtk')) {
|
|
990
|
+
commands.add('scale tool doctor --tools rtk --json');
|
|
991
|
+
}
|
|
992
|
+
commands.add('scale doctor');
|
|
993
|
+
return [...commands];
|
|
994
|
+
}
|
|
995
|
+
function buildRollbackHints(items) {
|
|
996
|
+
const hints = new Set();
|
|
997
|
+
for (const item of items) {
|
|
998
|
+
switch (item.id) {
|
|
999
|
+
case 'rtk':
|
|
1000
|
+
hints.add('RTK rollback: cargo uninstall rtk');
|
|
1001
|
+
break;
|
|
1002
|
+
case 'codegraph':
|
|
1003
|
+
hints.add('CodeGraph rollback: npm uninstall -g @colbymchenry/codegraph');
|
|
1004
|
+
break;
|
|
1005
|
+
case 'graphify':
|
|
1006
|
+
hints.add('Graphify rollback: pip uninstall graphify # or pip3/python -m pip uninstall graphify');
|
|
1007
|
+
break;
|
|
1008
|
+
case 'gbrain':
|
|
1009
|
+
hints.add('GBrain rollback: bun unlink gbrain, then remove ~/.scale/vendor/gbrain if you want a full local cleanup');
|
|
1010
|
+
break;
|
|
1011
|
+
case 'awesome-design-md':
|
|
1012
|
+
case 'ui-ux-pro-max':
|
|
1013
|
+
case 'frontend-design':
|
|
1014
|
+
hints.add(`Skill rollback (${item.id}): remove the installed skill directory under ~/.agents/skills/${item.id} after review`);
|
|
1015
|
+
break;
|
|
1016
|
+
default:
|
|
1017
|
+
break;
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
return [...hints];
|
|
1021
|
+
}
|
|
1022
|
+
function normalizePackIds(input) {
|
|
1023
|
+
const requested = unique((input ?? ['full']).map(value => value.trim()).filter(Boolean));
|
|
1024
|
+
const packIds = requested
|
|
1025
|
+
.flatMap(value => value.split(','))
|
|
1026
|
+
.map(value => value.trim())
|
|
1027
|
+
.filter(Boolean)
|
|
1028
|
+
.map(value => normalizePackId(value))
|
|
1029
|
+
.filter((value) => value !== null);
|
|
1030
|
+
return packIds.length > 0 ? unique(packIds) : ['full'];
|
|
1031
|
+
}
|
|
1032
|
+
function normalizePackId(value) {
|
|
1033
|
+
if (value === 'ui' || value === 'memory' || value === 'knowledge' || value === 'external-cli' || value === 'full')
|
|
1034
|
+
return value;
|
|
1035
|
+
if (value === 'external' || value === 'cli')
|
|
1036
|
+
return 'external-cli';
|
|
1037
|
+
return null;
|
|
1038
|
+
}
|
|
1039
|
+
function unique(values) {
|
|
1040
|
+
return [...new Set(values)];
|
|
1041
|
+
}
|
|
1042
|
+
function resolveScaleRoot(projectDir, scaleDir) {
|
|
1043
|
+
const candidate = scaleDir ?? '.scale';
|
|
1044
|
+
return resolve(projectDir, candidate);
|
|
1045
|
+
}
|
|
1046
|
+
//# sourceMappingURL=DependencyBootstrap.js.map
|