aws-runtime-bridge 1.9.78 → 1.9.80
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapter/AcodeSdkAdapter.d.ts +0 -1
- package/dist/adapter/AcodeSdkAdapter.js +11 -1986
- package/dist/adapter/AdapterRegistry.d.ts +0 -1
- package/dist/adapter/AdapterRegistry.js +2 -100
- package/dist/adapter/ClaudeSdkAdapter.d.ts +0 -1
- package/dist/adapter/ClaudeSdkAdapter.js +4 -1300
- package/dist/adapter/CodexSdkAdapter.d.ts +0 -1
- package/dist/adapter/CodexSdkAdapter.js +4 -836
- package/dist/adapter/OpencodeSdkAdapter.d.ts +0 -1
- package/dist/adapter/OpencodeSdkAdapter.js +4 -879
- package/dist/adapter/SdkProviderSpi.d.ts +0 -1
- package/dist/adapter/SdkProviderSpi.js +2 -55
- package/dist/adapter/acode-tool-names.d.ts +0 -1
- package/dist/adapter/acode-tool-names.js +2 -37
- package/dist/adapter/idle-poll-loop.d.ts +0 -1
- package/dist/adapter/idle-poll-loop.js +2 -59
- package/dist/adapter/index.d.ts +0 -1
- package/dist/adapter/index.js +2 -11
- package/dist/adapter/instance-ai-config-resolver.d.ts +0 -1
- package/dist/adapter/instance-ai-config-resolver.js +2 -46
- package/dist/adapter/types.d.ts +0 -1
- package/dist/adapter/types.js +2 -443
- package/dist/adapters/cc-switch/common.d.ts +0 -1
- package/dist/adapters/cc-switch/common.js +2 -61
- package/dist/adapters/cc-switch/index.d.ts +0 -1
- package/dist/adapters/cc-switch/index.js +2 -57
- package/dist/adapters/cc-switch/mcp-acode.d.ts +0 -1
- package/dist/adapters/cc-switch/mcp-acode.js +2 -71
- package/dist/adapters/cc-switch/mcp-claude.d.ts +0 -1
- package/dist/adapters/cc-switch/mcp-claude.js +2 -89
- package/dist/adapters/cc-switch/mcp-claudecode.d.ts +0 -1
- package/dist/adapters/cc-switch/mcp-claudecode.js +2 -77
- package/dist/adapters/cc-switch/mcp-codex.d.ts +0 -1
- package/dist/adapters/cc-switch/mcp-codex.js +11 -249
- package/dist/adapters/cc-switch/mcp-opencode.d.ts +0 -1
- package/dist/adapters/cc-switch/mcp-opencode.js +2 -97
- package/dist/adapters/cc-switch/mcp-placeholder.d.ts +0 -1
- package/dist/adapters/cc-switch/mcp-placeholder.js +2 -19
- package/dist/adapters/cc-switch/skill-acode.d.ts +0 -1
- package/dist/adapters/cc-switch/skill-acode.js +2 -12
- package/dist/adapters/cc-switch/skill-claude.d.ts +0 -1
- package/dist/adapters/cc-switch/skill-claude.js +2 -11
- package/dist/adapters/cc-switch/skill-claudecode.d.ts +0 -1
- package/dist/adapters/cc-switch/skill-claudecode.js +2 -11
- package/dist/adapters/cc-switch/skill-codex.d.ts +0 -1
- package/dist/adapters/cc-switch/skill-codex.js +2 -6
- package/dist/adapters/cc-switch/skill-directory.d.ts +0 -1
- package/dist/adapters/cc-switch/skill-directory.js +3 -137
- package/dist/adapters/cc-switch/skill-opencode.d.ts +0 -1
- package/dist/adapters/cc-switch/skill-opencode.js +2 -11
- package/dist/adapters/cc-switch/skill-placeholder.d.ts +0 -1
- package/dist/adapters/cc-switch/skill-placeholder.js +2 -19
- package/dist/config.d.ts +0 -1
- package/dist/config.js +2 -290
- package/dist/index.d.ts +0 -1
- package/dist/index.js +2 -573
- package/dist/middleware/auth.d.ts +0 -1
- package/dist/middleware/auth.js +2 -98
- package/dist/routes/acode-todos.d.ts +0 -1
- package/dist/routes/acode-todos.js +2 -75
- package/dist/routes/ai-sources.d.ts +0 -1
- package/dist/routes/ai-sources.js +2 -132
- package/dist/routes/dashboard.d.ts +0 -1
- package/dist/routes/dashboard.js +182 -649
- package/dist/routes/events.d.ts +0 -1
- package/dist/routes/events.js +2 -22
- package/dist/routes/file-browser.d.ts +0 -1
- package/dist/routes/file-browser.js +2 -781
- package/dist/routes/file-diff-rollback.d.ts +0 -1
- package/dist/routes/file-diff-rollback.js +2 -301
- package/dist/routes/file-snapshot.d.ts +0 -1
- package/dist/routes/file-snapshot.js +2 -156
- package/dist/routes/git.d.ts +0 -1
- package/dist/routes/git.js +28 -1900
- package/dist/routes/instance.d.ts +0 -1
- package/dist/routes/instance.js +3 -748
- package/dist/routes/mcp.d.ts +0 -1
- package/dist/routes/mcp.js +2 -196
- package/dist/routes/processes.d.ts +0 -1
- package/dist/routes/processes.js +2 -252
- package/dist/routes/properties.d.ts +0 -1
- package/dist/routes/properties.js +2 -72
- package/dist/routes/pty.d.ts +0 -1
- package/dist/routes/pty.js +6 -560
- package/dist/routes/runtime-binding.d.ts +0 -1
- package/dist/routes/runtime-binding.js +2 -263
- package/dist/routes/sessions.d.ts +0 -1
- package/dist/routes/sessions.js +2 -758
- package/dist/routes/skills.d.ts +0 -1
- package/dist/routes/skills.js +2 -187
- package/dist/routes/sub-agents.d.ts +0 -1
- package/dist/routes/sub-agents.js +20 -279
- package/dist/routes/system-metrics.d.ts +0 -1
- package/dist/routes/system-metrics.js +2 -20
- package/dist/routes/task-context.d.ts +0 -1
- package/dist/routes/task-context.js +2 -78
- package/dist/routes/terminal.d.ts +0 -1
- package/dist/routes/terminal.js +54 -2882
- package/dist/routes/yml.d.ts +0 -1
- package/dist/routes/yml.js +2 -223
- package/dist/services/acode-package.d.ts +0 -1
- package/dist/services/acode-package.js +2 -111
- package/dist/services/agent-event-store.d.ts +0 -1
- package/dist/services/agent-event-store.js +2 -81
- package/dist/services/agent-process-manager.d.ts +0 -1
- package/dist/services/agent-process-manager.js +2 -796
- package/dist/services/ai-source-apply.d.ts +0 -1
- package/dist/services/ai-source-apply.js +2 -83
- package/dist/services/auto-register.d.ts +0 -1
- package/dist/services/auto-register.js +2 -1053
- package/dist/services/aws-client-agent-mcp.d.ts +0 -1
- package/dist/services/aws-client-agent-mcp.js +3 -337
- package/dist/services/bridge-package-publish-hooks.d.ts +0 -1
- package/dist/services/bridge-package-publish-hooks.js +2 -115
- package/dist/services/cc-switch-sdk.d.ts +0 -1
- package/dist/services/cc-switch-sdk.js +2 -135
- package/dist/services/cli-commands.d.ts +6 -1
- package/dist/services/cli-commands.js +6 -645
- package/dist/services/event-delta-pusher.d.ts +0 -1
- package/dist/services/event-delta-pusher.js +2 -95
- package/dist/services/fileSnapshotStore.d.ts +0 -1
- package/dist/services/fileSnapshotStore.js +2 -500
- package/dist/services/instance-ai-config-service.d.ts +0 -1
- package/dist/services/instance-ai-config-service.js +2 -174
- package/dist/services/instance-init-service.d.ts +0 -1
- package/dist/services/instance-init-service.js +2 -193
- package/dist/services/instance-service.d.ts +0 -1
- package/dist/services/instance-service.js +2 -237
- package/dist/services/instance-state.d.ts +0 -1
- package/dist/services/instance-state.js +2 -94
- package/dist/services/legacy-path-migration.d.ts +0 -1
- package/dist/services/legacy-path-migration.js +2 -66
- package/dist/services/lifecycle-state.d.ts +0 -1
- package/dist/services/lifecycle-state.js +3 -110
- package/dist/services/mcp-launch-binding-queue.d.ts +0 -1
- package/dist/services/mcp-launch-binding-queue.js +2 -175
- package/dist/services/orphan-monitor.d.ts +0 -1
- package/dist/services/orphan-monitor.js +2 -382
- package/dist/services/panel-auth.d.ts +0 -1
- package/dist/services/panel-auth.js +2 -168
- package/dist/services/process-detector.d.ts +0 -1
- package/dist/services/process-detector.js +18 -1019
- package/dist/services/process-registry.d.ts +0 -1
- package/dist/services/process-registry.js +2 -375
- package/dist/services/ring-buffer.d.ts +0 -1
- package/dist/services/ring-buffer.js +2 -103
- package/dist/services/runtime-binding.d.ts +0 -1
- package/dist/services/runtime-binding.js +6 -363
- package/dist/services/runtime-lifecycle-policy.d.ts +0 -1
- package/dist/services/runtime-lifecycle-policy.js +2 -35
- package/dist/services/session-output.d.ts +0 -1
- package/dist/services/session-output.js +5 -539
- package/dist/services/startup-config-wizard.d.ts +0 -1
- package/dist/services/startup-config-wizard.js +14 -258
- package/dist/services/sub-agent-manager-instance.d.ts +0 -1
- package/dist/services/sub-agent-manager-instance.js +2 -12
- package/dist/services/system-metrics.d.ts +0 -1
- package/dist/services/system-metrics.js +2 -252
- package/dist/services/terminal-persistence.d.ts +0 -1
- package/dist/services/terminal-persistence.js +2 -176
- package/dist/services/tool-installer.d.ts +0 -1
- package/dist/services/tool-installer.js +5 -751
- package/dist/services/tunnel-client.d.ts +0 -1
- package/dist/services/tunnel-client.js +2 -402
- package/dist/services/windows-service-manager.d.ts +3 -2
- package/dist/services/windows-service-manager.js +2 -54
- package/dist/services/workspace-files.d.ts +0 -1
- package/dist/services/workspace-files.js +2 -1275
- package/dist/services/workspace-watch.d.ts +0 -1
- package/dist/services/workspace-watch.js +2 -123
- package/dist/services/workspaceTaskChangeWatcher.d.ts +0 -1
- package/dist/services/workspaceTaskChangeWatcher.js +2 -483
- package/dist/types.d.ts +0 -1
- package/dist/types.js +1 -1
- package/dist/utils/file-utils.d.ts +0 -1
- package/dist/utils/file-utils.js +3 -208
- package/dist/utils/instance-ai-config-debug-logger.d.ts +0 -1
- package/dist/utils/instance-ai-config-debug-logger.js +4 -63
- package/dist/utils/logger.d.ts +0 -1
- package/dist/utils/logger.js +2 -154
- package/dist/utils/mcp-utils.d.ts +0 -1
- package/dist/utils/mcp-utils.js +2 -187
- package/dist/utils/path-utils.d.ts +0 -1
- package/dist/utils/path-utils.js +2 -44
- package/dist/utils/sdk-package-loader.d.ts +0 -1
- package/dist/utils/sdk-package-loader.js +2 -78
- package/dist/utils/validation.d.ts +0 -1
- package/dist/utils/validation.js +2 -53
- package/dist/utils/yaml-utils.d.ts +0 -1
- package/dist/utils/yaml-utils.js +2 -312
- package/node_modules/@cc-switch/sdk/dist/constants.d.ts +0 -1
- package/node_modules/@cc-switch/sdk/dist/constants.js +2 -63
- package/node_modules/@cc-switch/sdk/dist/errors.d.ts +0 -1
- package/node_modules/@cc-switch/sdk/dist/errors.js +2 -8
- package/node_modules/@cc-switch/sdk/dist/index.d.ts +0 -1
- package/node_modules/@cc-switch/sdk/dist/index.js +2 -9
- package/node_modules/@cc-switch/sdk/dist/schemas.d.ts +0 -1
- package/node_modules/@cc-switch/sdk/dist/schemas.js +2 -38
- package/node_modules/@cc-switch/sdk/dist/sdk.d.ts +0 -1
- package/node_modules/@cc-switch/sdk/dist/sdk.js +2 -470
- package/node_modules/@cc-switch/sdk/dist/services/ai-config-service.d.ts +0 -1
- package/node_modules/@cc-switch/sdk/dist/services/ai-config-service.js +4 -307
- package/node_modules/@cc-switch/sdk/dist/services/mcp-model.d.ts +0 -1
- package/node_modules/@cc-switch/sdk/dist/services/mcp-model.js +2 -37
- package/node_modules/@cc-switch/sdk/dist/services/mcp-service.d.ts +0 -1
- package/node_modules/@cc-switch/sdk/dist/services/mcp-service.js +2 -9
- package/node_modules/@cc-switch/sdk/dist/services/skill-model.d.ts +0 -1
- package/node_modules/@cc-switch/sdk/dist/services/skill-model.js +2 -41
- package/node_modules/@cc-switch/sdk/dist/services/skill-service.d.ts +0 -1
- package/node_modules/@cc-switch/sdk/dist/services/skill-service.js +2 -9
- package/node_modules/@cc-switch/sdk/dist/state.d.ts +0 -1
- package/node_modules/@cc-switch/sdk/dist/state.js +2 -19
- package/node_modules/@cc-switch/sdk/dist/types.d.ts +0 -1
- package/node_modules/@cc-switch/sdk/dist/types.js +1 -1
- package/node_modules/@cc-switch/sdk/dist/utils/fs.d.ts +0 -1
- package/node_modules/@cc-switch/sdk/dist/utils/fs.js +3 -114
- package/node_modules/@cc-switch/sdk/dist/utils/id.d.ts +0 -1
- package/node_modules/@cc-switch/sdk/dist/utils/id.js +2 -12
- package/node_modules/@cc-switch/sdk/package.json +1 -1
- package/package/acode/dist/ask-user-question-tool.d.ts +0 -1
- package/package/acode/dist/ask-user-question-tool.js +4 -233
- package/package/acode/dist/built-in-file-tools.d.ts +0 -1
- package/package/acode/dist/built-in-file-tools.js +4 -966
- package/package/acode/dist/built-in-symbols-tool.d.ts +0 -1
- package/package/acode/dist/built-in-symbols-tool.js +2 -117
- package/package/acode/dist/builtins/commandArtifacts.d.ts +0 -1
- package/package/acode/dist/builtins/commandArtifacts.js +9 -97
- package/package/acode/dist/builtins/commandOutputEvents.d.ts +0 -1
- package/package/acode/dist/builtins/commandOutputEvents.js +2 -56
- package/package/acode/dist/builtins/shellCommandPreparation.d.ts +0 -1
- package/package/acode/dist/builtins/shellCommandPreparation.js +5 -44
- package/package/acode/dist/builtins/shellCommandResult.d.ts +0 -1
- package/package/acode/dist/builtins/shellCommandResult.js +2 -71
- package/package/acode/dist/builtins/shellCommandRunner.d.ts +0 -1
- package/package/acode/dist/builtins/shellCommandRunner.js +2 -115
- package/package/acode/dist/builtins/shellOutputDecoder.d.ts +0 -1
- package/package/acode/dist/builtins/shellOutputDecoder.js +2 -94
- package/package/acode/dist/cli.d.ts +0 -1
- package/package/acode/dist/cli.js +4 -38
- package/package/acode/dist/commands/commandLoader.d.ts +0 -1
- package/package/acode/dist/commands/commandLoader.js +2 -33
- package/package/acode/dist/commands/commandParser.d.ts +0 -1
- package/package/acode/dist/commands/commandParser.js +3 -77
- package/package/acode/dist/commands/commandRegistry.d.ts +0 -1
- package/package/acode/dist/commands/commandRegistry.js +2 -30
- package/package/acode/dist/compaction.d.ts +0 -1
- package/package/acode/dist/compaction.js +7 -919
- package/package/acode/dist/config.d.ts +0 -1
- package/package/acode/dist/config.js +5 -105
- package/package/acode/dist/fs-utils.d.ts +0 -1
- package/package/acode/dist/fs-utils.js +2 -79
- package/package/acode/dist/hooks/hookBus.d.ts +0 -1
- package/package/acode/dist/hooks/hookBus.js +2 -40
- package/package/acode/dist/index.d.ts +0 -1
- package/package/acode/dist/index.js +2 -19
- package/package/acode/dist/mcpToolNames.d.ts +0 -1
- package/package/acode/dist/mcpToolNames.js +2 -17
- package/package/acode/dist/parsers/ast-cache.d.ts +0 -1
- package/package/acode/dist/parsers/ast-cache.js +2 -76
- package/package/acode/dist/parsers/language-detector.d.ts +0 -1
- package/package/acode/dist/parsers/language-detector.js +2 -44
- package/package/acode/dist/parsers/language-queries.d.ts +0 -1
- package/package/acode/dist/parsers/language-queries.js +12 -602
- package/package/acode/dist/parsers/symbol-extractor.d.ts +0 -1
- package/package/acode/dist/parsers/symbol-extractor.js +3 -164
- package/package/acode/dist/parsers/tree-sitter-loader.d.ts +0 -1
- package/package/acode/dist/parsers/tree-sitter-loader.js +2 -64
- package/package/acode/dist/parsers/types.d.ts +0 -1
- package/package/acode/dist/parsers/types.js +1 -7
- package/package/acode/dist/runtime.d.ts +0 -1
- package/package/acode/dist/runtime.js +86 -3771
- package/package/acode/dist/skill-tool.d.ts +0 -1
- package/package/acode/dist/skill-tool.js +5 -174
- package/package/acode/dist/sub-agent-manager.d.ts +0 -1
- package/package/acode/dist/sub-agent-manager.js +2 -1159
- package/package/acode/dist/sub-agent-store.d.ts +0 -1
- package/package/acode/dist/sub-agent-store.js +4 -236
- package/package/acode/dist/sub-agent-tools.d.ts +0 -1
- package/package/acode/dist/sub-agent-tools.js +15 -369
- package/package/acode/dist/sub-agent-types.d.ts +0 -1
- package/package/acode/dist/sub-agent-types.js +1 -8
- package/package/acode/dist/todo-store.d.ts +0 -1
- package/package/acode/dist/todo-store.js +2 -73
- package/package/acode/dist/todo-tool.d.ts +0 -1
- package/package/acode/dist/todo-tool.js +5 -121
- package/package/acode/dist/types.d.ts +0 -1
- package/package/acode/dist/types.js +1 -1
- package/package/acode/package.json +2 -2
- package/package/aws-client-agent-mcp/dist/agent-client.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/agent-client.js +2 -890
- package/package/aws-client-agent-mcp/dist/agent-client.test.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/agent-client.test.js +0 -1
- package/package/aws-client-agent-mcp/dist/config.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/config.js +2 -243
- package/package/aws-client-agent-mcp/dist/config.test.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/config.test.js +0 -1
- package/package/aws-client-agent-mcp/dist/constants.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/constants.js +2 -24
- package/package/aws-client-agent-mcp/dist/context-manager.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/context-manager.js +2 -477
- package/package/aws-client-agent-mcp/dist/context-manager.test.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/context-manager.test.js +0 -1
- package/package/aws-client-agent-mcp/dist/http-client.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/http-client.js +2 -446
- package/package/aws-client-agent-mcp/dist/http-client.test.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/http-client.test.js +0 -1
- package/package/aws-client-agent-mcp/dist/index.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/index.js +2 -34
- package/package/aws-client-agent-mcp/dist/logger.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/logger.js +3 -178
- package/package/aws-client-agent-mcp/dist/logger.test.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/logger.test.js +0 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.js +38 -2709
- package/package/aws-client-agent-mcp/dist/mcp-server.test.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.test.js +0 -1
- package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/mcp-tools.js +22 -562
- package/package/aws-client-agent-mcp/dist/mcp-tools.test.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/mcp-tools.test.js +0 -1
- package/package/aws-client-agent-mcp/dist/memory-store.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/memory-store.js +4 -826
- package/package/aws-client-agent-mcp/dist/memory-store.test.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/memory-store.test.js +0 -1
- package/package/aws-client-agent-mcp/dist/memory-tools.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/memory-tools.js +31 -294
- package/package/aws-client-agent-mcp/dist/message-buffer.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/message-buffer.js +2 -288
- package/package/aws-client-agent-mcp/dist/message-buffer.test.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/message-buffer.test.js +0 -1
- package/package/aws-client-agent-mcp/dist/messageContent.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/messageContent.js +2 -125
- package/package/aws-client-agent-mcp/dist/runtime-launch-binding.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/runtime-launch-binding.js +2 -103
- package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.js +0 -1
- package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/server-memory-store.js +2 -96
- package/package/aws-client-agent-mcp/dist/status-reporter.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.js +3 -327
- package/package/aws-client-agent-mcp/dist/status-reporter.test.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.test.js +0 -1
- package/package/aws-client-agent-mcp/dist/types.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/types.js +2 -9
- package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.js +2 -677
- package/package/aws-client-agent-mcp/dist/websocket-client.test.d.ts +0 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.test.js +0 -1
- package/package/aws-client-agent-mcp/package.json +1 -1
- package/package/cc-switch-sdk/dist/constants.d.ts +0 -1
- package/package/cc-switch-sdk/dist/constants.js +2 -63
- package/package/cc-switch-sdk/dist/errors.d.ts +0 -1
- package/package/cc-switch-sdk/dist/errors.js +2 -8
- package/package/cc-switch-sdk/dist/index.d.ts +0 -1
- package/package/cc-switch-sdk/dist/index.js +2 -9
- package/package/cc-switch-sdk/dist/schemas.d.ts +0 -1
- package/package/cc-switch-sdk/dist/schemas.js +2 -38
- package/package/cc-switch-sdk/dist/sdk.d.ts +0 -1
- package/package/cc-switch-sdk/dist/sdk.js +2 -470
- package/package/cc-switch-sdk/dist/services/ai-config-service.d.ts +0 -1
- package/package/cc-switch-sdk/dist/services/ai-config-service.js +4 -307
- package/package/cc-switch-sdk/dist/services/mcp-model.d.ts +0 -1
- package/package/cc-switch-sdk/dist/services/mcp-model.js +2 -37
- package/package/cc-switch-sdk/dist/services/mcp-service.d.ts +0 -1
- package/package/cc-switch-sdk/dist/services/mcp-service.js +2 -9
- package/package/cc-switch-sdk/dist/services/skill-model.d.ts +0 -1
- package/package/cc-switch-sdk/dist/services/skill-model.js +2 -41
- package/package/cc-switch-sdk/dist/services/skill-service.d.ts +0 -1
- package/package/cc-switch-sdk/dist/services/skill-service.js +2 -9
- package/package/cc-switch-sdk/dist/state.d.ts +0 -1
- package/package/cc-switch-sdk/dist/state.js +2 -19
- package/package/cc-switch-sdk/dist/types.d.ts +0 -1
- package/package/cc-switch-sdk/dist/types.js +1 -1
- package/package/cc-switch-sdk/dist/utils/fs.d.ts +0 -1
- package/package/cc-switch-sdk/dist/utils/fs.js +3 -114
- package/package/cc-switch-sdk/dist/utils/id.d.ts +0 -1
- package/package/cc-switch-sdk/dist/utils/id.js +2 -12
- package/package/cc-switch-sdk/package.json +1 -1
- package/package.json +4 -2
- package/dist/adapter/AcodeSdkAdapter.d.ts.map +0 -1
- package/dist/adapter/AdapterRegistry.d.ts.map +0 -1
- package/dist/adapter/ClaudeSdkAdapter.d.ts.map +0 -1
- package/dist/adapter/CodexSdkAdapter.d.ts.map +0 -1
- package/dist/adapter/OpencodeSdkAdapter.d.ts.map +0 -1
- package/dist/adapter/SdkProviderSpi.d.ts.map +0 -1
- package/dist/adapter/acode-tool-names.d.ts.map +0 -1
- package/dist/adapter/idle-poll-loop.d.ts.map +0 -1
- package/dist/adapter/index.d.ts.map +0 -1
- package/dist/adapter/instance-ai-config-resolver.d.ts.map +0 -1
- package/dist/adapter/types.d.ts.map +0 -1
- package/dist/adapters/cc-switch/common.d.ts.map +0 -1
- package/dist/adapters/cc-switch/index.d.ts.map +0 -1
- package/dist/adapters/cc-switch/mcp-acode.d.ts.map +0 -1
- package/dist/adapters/cc-switch/mcp-claude.d.ts.map +0 -1
- package/dist/adapters/cc-switch/mcp-claudecode.d.ts.map +0 -1
- package/dist/adapters/cc-switch/mcp-codex.d.ts.map +0 -1
- package/dist/adapters/cc-switch/mcp-opencode.d.ts.map +0 -1
- package/dist/adapters/cc-switch/mcp-placeholder.d.ts.map +0 -1
- package/dist/adapters/cc-switch/skill-acode.d.ts.map +0 -1
- package/dist/adapters/cc-switch/skill-claude.d.ts.map +0 -1
- package/dist/adapters/cc-switch/skill-claudecode.d.ts.map +0 -1
- package/dist/adapters/cc-switch/skill-codex.d.ts.map +0 -1
- package/dist/adapters/cc-switch/skill-directory.d.ts.map +0 -1
- package/dist/adapters/cc-switch/skill-opencode.d.ts.map +0 -1
- package/dist/adapters/cc-switch/skill-placeholder.d.ts.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/middleware/auth.d.ts.map +0 -1
- package/dist/routes/acode-todos.d.ts.map +0 -1
- package/dist/routes/ai-sources.d.ts.map +0 -1
- package/dist/routes/dashboard.d.ts.map +0 -1
- package/dist/routes/events.d.ts.map +0 -1
- package/dist/routes/file-browser.d.ts.map +0 -1
- package/dist/routes/file-diff-rollback.d.ts.map +0 -1
- package/dist/routes/file-snapshot.d.ts.map +0 -1
- package/dist/routes/git.d.ts.map +0 -1
- package/dist/routes/instance.d.ts.map +0 -1
- package/dist/routes/mcp.d.ts.map +0 -1
- package/dist/routes/processes.d.ts.map +0 -1
- package/dist/routes/properties.d.ts.map +0 -1
- package/dist/routes/pty.d.ts.map +0 -1
- package/dist/routes/runtime-binding.d.ts.map +0 -1
- package/dist/routes/sessions.d.ts.map +0 -1
- package/dist/routes/skills.d.ts.map +0 -1
- package/dist/routes/sub-agents.d.ts.map +0 -1
- package/dist/routes/system-metrics.d.ts.map +0 -1
- package/dist/routes/task-context.d.ts.map +0 -1
- package/dist/routes/terminal.d.ts.map +0 -1
- package/dist/routes/yml.d.ts.map +0 -1
- package/dist/services/acode-package.d.ts.map +0 -1
- package/dist/services/agent-event-store.d.ts.map +0 -1
- package/dist/services/agent-process-manager.d.ts.map +0 -1
- package/dist/services/ai-source-apply.d.ts.map +0 -1
- package/dist/services/auto-register.d.ts.map +0 -1
- package/dist/services/aws-client-agent-mcp.d.ts.map +0 -1
- package/dist/services/bridge-package-publish-hooks.d.ts.map +0 -1
- package/dist/services/cc-switch-sdk.d.ts.map +0 -1
- package/dist/services/cli-commands.d.ts.map +0 -1
- package/dist/services/event-delta-pusher.d.ts.map +0 -1
- package/dist/services/fileSnapshotStore.d.ts.map +0 -1
- package/dist/services/instance-ai-config-service.d.ts.map +0 -1
- package/dist/services/instance-init-service.d.ts.map +0 -1
- package/dist/services/instance-service.d.ts.map +0 -1
- package/dist/services/instance-state.d.ts.map +0 -1
- package/dist/services/legacy-path-migration.d.ts.map +0 -1
- package/dist/services/lifecycle-state.d.ts.map +0 -1
- package/dist/services/mcp-launch-binding-queue.d.ts.map +0 -1
- package/dist/services/orphan-monitor.d.ts.map +0 -1
- package/dist/services/panel-auth.d.ts.map +0 -1
- package/dist/services/process-detector.d.ts.map +0 -1
- package/dist/services/process-registry.d.ts.map +0 -1
- package/dist/services/ring-buffer.d.ts.map +0 -1
- package/dist/services/runtime-binding.d.ts.map +0 -1
- package/dist/services/runtime-lifecycle-policy.d.ts.map +0 -1
- package/dist/services/session-output.d.ts.map +0 -1
- package/dist/services/startup-config-wizard.d.ts.map +0 -1
- package/dist/services/sub-agent-manager-instance.d.ts.map +0 -1
- package/dist/services/system-metrics.d.ts.map +0 -1
- package/dist/services/terminal-persistence.d.ts.map +0 -1
- package/dist/services/tool-installer.d.ts.map +0 -1
- package/dist/services/tunnel-client.d.ts.map +0 -1
- package/dist/services/windows-service-manager.d.ts.map +0 -1
- package/dist/services/workspace-files.d.ts.map +0 -1
- package/dist/services/workspace-watch.d.ts.map +0 -1
- package/dist/services/workspaceTaskChangeWatcher.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/utils/file-utils.d.ts.map +0 -1
- package/dist/utils/instance-ai-config-debug-logger.d.ts.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/mcp-utils.d.ts.map +0 -1
- package/dist/utils/path-utils.d.ts.map +0 -1
- package/dist/utils/sdk-package-loader.d.ts.map +0 -1
- package/dist/utils/validation.d.ts.map +0 -1
- package/dist/utils/yaml-utils.d.ts.map +0 -1
- package/node_modules/@cc-switch/sdk/dist/constants.d.ts.map +0 -1
- package/node_modules/@cc-switch/sdk/dist/errors.d.ts.map +0 -1
- package/node_modules/@cc-switch/sdk/dist/index.d.ts.map +0 -1
- package/node_modules/@cc-switch/sdk/dist/schemas.d.ts.map +0 -1
- package/node_modules/@cc-switch/sdk/dist/sdk.d.ts.map +0 -1
- package/node_modules/@cc-switch/sdk/dist/services/ai-config-service.d.ts.map +0 -1
- package/node_modules/@cc-switch/sdk/dist/services/mcp-model.d.ts.map +0 -1
- package/node_modules/@cc-switch/sdk/dist/services/mcp-service.d.ts.map +0 -1
- package/node_modules/@cc-switch/sdk/dist/services/skill-model.d.ts.map +0 -1
- package/node_modules/@cc-switch/sdk/dist/services/skill-service.d.ts.map +0 -1
- package/node_modules/@cc-switch/sdk/dist/state.d.ts.map +0 -1
- package/node_modules/@cc-switch/sdk/dist/types.d.ts.map +0 -1
- package/node_modules/@cc-switch/sdk/dist/utils/fs.d.ts.map +0 -1
- package/node_modules/@cc-switch/sdk/dist/utils/id.d.ts.map +0 -1
- package/package/acode/dist/ask-user-question-tool.d.ts.map +0 -1
- package/package/acode/dist/built-in-file-tools.d.ts.map +0 -1
- package/package/acode/dist/built-in-symbols-tool.d.ts.map +0 -1
- package/package/acode/dist/builtins/commandArtifacts.d.ts.map +0 -1
- package/package/acode/dist/builtins/commandOutputEvents.d.ts.map +0 -1
- package/package/acode/dist/builtins/shellCommandPreparation.d.ts.map +0 -1
- package/package/acode/dist/builtins/shellCommandResult.d.ts.map +0 -1
- package/package/acode/dist/builtins/shellCommandRunner.d.ts.map +0 -1
- package/package/acode/dist/builtins/shellOutputDecoder.d.ts.map +0 -1
- package/package/acode/dist/cli.d.ts.map +0 -1
- package/package/acode/dist/commands/commandLoader.d.ts.map +0 -1
- package/package/acode/dist/commands/commandParser.d.ts.map +0 -1
- package/package/acode/dist/commands/commandRegistry.d.ts.map +0 -1
- package/package/acode/dist/compaction.d.ts.map +0 -1
- package/package/acode/dist/config.d.ts.map +0 -1
- package/package/acode/dist/fs-utils.d.ts.map +0 -1
- package/package/acode/dist/hooks/hookBus.d.ts.map +0 -1
- package/package/acode/dist/index.d.ts.map +0 -1
- package/package/acode/dist/mcpToolNames.d.ts.map +0 -1
- package/package/acode/dist/parsers/ast-cache.d.ts.map +0 -1
- package/package/acode/dist/parsers/language-detector.d.ts.map +0 -1
- package/package/acode/dist/parsers/language-queries.d.ts.map +0 -1
- package/package/acode/dist/parsers/symbol-extractor.d.ts.map +0 -1
- package/package/acode/dist/parsers/tree-sitter-loader.d.ts.map +0 -1
- package/package/acode/dist/parsers/types.d.ts.map +0 -1
- package/package/acode/dist/runtime.d.ts.map +0 -1
- package/package/acode/dist/skill-tool.d.ts.map +0 -1
- package/package/acode/dist/sub-agent-manager.d.ts.map +0 -1
- package/package/acode/dist/sub-agent-store.d.ts.map +0 -1
- package/package/acode/dist/sub-agent-tools.d.ts.map +0 -1
- package/package/acode/dist/sub-agent-types.d.ts.map +0 -1
- package/package/acode/dist/todo-store.d.ts.map +0 -1
- package/package/acode/dist/todo-tool.d.ts.map +0 -1
- package/package/acode/dist/types.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/agent-client.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/agent-client.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/agent-client.test.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/agent-client.test.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/config.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/config.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/config.test.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/config.test.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/constants.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/constants.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/context-manager.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/context-manager.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/context-manager.test.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/context-manager.test.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/http-client.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/http-client.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/http-client.test.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/http-client.test.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/index.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/index.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/logger.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/logger.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/logger.test.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/logger.test.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.test.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.test.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/mcp-tools.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/mcp-tools.test.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/mcp-tools.test.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/memory-store.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/memory-store.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/memory-store.test.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/memory-store.test.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/memory-tools.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/memory-tools.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/message-buffer.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/message-buffer.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/message-buffer.test.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/message-buffer.test.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/messageContent.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/messageContent.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/runtime-launch-binding.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/runtime-launch-binding.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/server-memory-store.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.test.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.test.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/types.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/types.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.js.map +0 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.test.d.ts.map +0 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.test.js.map +0 -1
- package/package/cc-switch-sdk/dist/constants.d.ts.map +0 -1
- package/package/cc-switch-sdk/dist/errors.d.ts.map +0 -1
- package/package/cc-switch-sdk/dist/index.d.ts.map +0 -1
- package/package/cc-switch-sdk/dist/schemas.d.ts.map +0 -1
- package/package/cc-switch-sdk/dist/sdk.d.ts.map +0 -1
- package/package/cc-switch-sdk/dist/services/ai-config-service.d.ts.map +0 -1
- package/package/cc-switch-sdk/dist/services/mcp-model.d.ts.map +0 -1
- package/package/cc-switch-sdk/dist/services/mcp-service.d.ts.map +0 -1
- package/package/cc-switch-sdk/dist/services/skill-model.d.ts.map +0 -1
- package/package/cc-switch-sdk/dist/services/skill-service.d.ts.map +0 -1
- package/package/cc-switch-sdk/dist/state.d.ts.map +0 -1
- package/package/cc-switch-sdk/dist/types.d.ts.map +0 -1
- package/package/cc-switch-sdk/dist/utils/fs.d.ts.map +0 -1
- package/package/cc-switch-sdk/dist/utils/id.d.ts.map +0 -1
|
@@ -1,174 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* 管理 ACode 实例的 AI provider 配置(model/baseURL/apiKey)。
|
|
5
|
-
* 支持三层来源(api > env > file)仲裁,deep-merge 后写入
|
|
6
|
-
* per-instance acode.json 供 ACode runtime 加载。
|
|
7
|
-
*/
|
|
8
|
-
import fs from "node:fs/promises";
|
|
9
|
-
import path from "node:path";
|
|
10
|
-
import { getAcodeConfigFile, getRuntimeHomeDir } from "../config.js";
|
|
11
|
-
import { getInstanceAiConfigDebugLogger } from "../utils/instance-ai-config-debug-logger.js";
|
|
12
|
-
// ── 敏感信息脱敏 ─────────────────────────────────────────
|
|
13
|
-
const SENSITIVE_KEYS = new Set([
|
|
14
|
-
"apiKey", "api_key", "apikey",
|
|
15
|
-
"key", "secret", "token", "password",
|
|
16
|
-
]);
|
|
17
|
-
/**
|
|
18
|
-
* 脱敏日志中的敏感字段(apiKey / secret / token / password)。
|
|
19
|
-
* 返回新对象,不修改原对象。
|
|
20
|
-
*/
|
|
21
|
-
export function redactForLog(obj) {
|
|
22
|
-
const result = { ...obj };
|
|
23
|
-
for (const key of Object.keys(result)) {
|
|
24
|
-
if (SENSITIVE_KEYS.has(key)) {
|
|
25
|
-
const val = result[key];
|
|
26
|
-
if (typeof val === "string" && val.length > 0) {
|
|
27
|
-
result[key] = val.length > 8
|
|
28
|
-
? `${val.slice(0, 4)}...${val.slice(-4)}`
|
|
29
|
-
: "***";
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
else if (typeof result[key] === "object" && result[key] !== null) {
|
|
33
|
-
result[key] = redactForLog(result[key]);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return result;
|
|
37
|
-
}
|
|
38
|
-
// ── 配置准备 ─────────────────────────────────────────────
|
|
39
|
-
function loadEnvLayer() {
|
|
40
|
-
return {
|
|
41
|
-
...(process.env.ACODE_MODEL ? { model: process.env.ACODE_MODEL } : {}),
|
|
42
|
-
...(process.env.ACODE_BASE_URL ? { baseURL: process.env.ACODE_BASE_URL } : {}),
|
|
43
|
-
...(process.env.ACODE_API_KEY ? { apiKey: process.env.ACODE_API_KEY } : {}),
|
|
44
|
-
...(process.env.ACODE_EFFORT ? { effort: process.env.ACODE_EFFORT } : {}),
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
async function loadFileLayer(acodeConfigPath) {
|
|
48
|
-
try {
|
|
49
|
-
const raw = await fs.readFile(acodeConfigPath, "utf-8");
|
|
50
|
-
const parsed = JSON.parse(raw);
|
|
51
|
-
const provider = parsed.provider;
|
|
52
|
-
const def = provider?.default;
|
|
53
|
-
const opts = def?.options;
|
|
54
|
-
return {
|
|
55
|
-
...(def?.model ? { model: def.model } : {}),
|
|
56
|
-
...(opts?.baseURL || opts?.baseUrl ? { baseURL: opts.baseURL || opts.baseUrl } : {}),
|
|
57
|
-
...(opts?.apiKey ? { apiKey: opts.apiKey } : {}),
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
catch {
|
|
61
|
-
return {};
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* 仲裁来源标签。优先级:api > env > file > default
|
|
66
|
-
*/
|
|
67
|
-
function resolveSourceLabel(key, apiVal, envVal, fileVal) {
|
|
68
|
-
if (apiVal !== undefined)
|
|
69
|
-
return "api";
|
|
70
|
-
if (envVal !== undefined)
|
|
71
|
-
return "env";
|
|
72
|
-
if (fileVal !== undefined)
|
|
73
|
-
return "file";
|
|
74
|
-
return "default";
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* 准备 ACode 实例配置。
|
|
78
|
-
*
|
|
79
|
-
* 主流程:
|
|
80
|
-
* 1. 从 apiOverrides(请求体)、env(环境变量)、file(acode.json)三层收集配置
|
|
81
|
-
* 2. 按 api > env > file 优先级仲裁每个字段
|
|
82
|
-
* 3. 将仲裁结果 deep-merge 写入 per-instance acode.json
|
|
83
|
-
* 4. 返回合并后的 config 和 per-instance 文件路径
|
|
84
|
-
*/
|
|
85
|
-
export async function prepareAcodeInstanceConfig(options) {
|
|
86
|
-
const runtimeHome = getRuntimeHomeDir();
|
|
87
|
-
const globalConfigPath = getAcodeConfigFile(runtimeHome);
|
|
88
|
-
const perInstanceDir = path.join(runtimeHome, ".aws-bridge", "instances", options.agentId);
|
|
89
|
-
const perInstanceConfigPath = path.join(perInstanceDir, "acode.json");
|
|
90
|
-
// 收集三层配置
|
|
91
|
-
const apiLayer = options.apiOverrides ?? {};
|
|
92
|
-
const envLayer = loadEnvLayer();
|
|
93
|
-
const fileLayer = await loadFileLayer(globalConfigPath);
|
|
94
|
-
// 逐字段仲裁(api > env > file)
|
|
95
|
-
const model = apiLayer.model ?? envLayer.model ?? fileLayer.model;
|
|
96
|
-
const baseURL = apiLayer.baseURL ?? envLayer.baseURL ?? fileLayer.baseURL;
|
|
97
|
-
const apiKey = apiLayer.apiKey ?? envLayer.apiKey ?? fileLayer.apiKey;
|
|
98
|
-
const effort = apiLayer.effort ?? envLayer.effort;
|
|
99
|
-
const resolvedConfig = {};
|
|
100
|
-
if (model)
|
|
101
|
-
resolvedConfig.model = model;
|
|
102
|
-
if (baseURL)
|
|
103
|
-
resolvedConfig.baseURL = baseURL;
|
|
104
|
-
if (apiKey)
|
|
105
|
-
resolvedConfig.apiKey = apiKey;
|
|
106
|
-
if (effort)
|
|
107
|
-
resolvedConfig.effort = effort;
|
|
108
|
-
const source = {
|
|
109
|
-
model: resolveSourceLabel("model", apiLayer.model, envLayer.model, fileLayer.model),
|
|
110
|
-
baseURL: resolveSourceLabel("baseURL", apiLayer.baseURL, envLayer.baseURL, fileLayer.baseURL),
|
|
111
|
-
apiKey: resolveSourceLabel("apiKey", apiLayer.apiKey, envLayer.apiKey, fileLayer.apiKey),
|
|
112
|
-
effort: resolveSourceLabel("effort", apiLayer.effort, envLayer.effort, undefined),
|
|
113
|
-
};
|
|
114
|
-
// 写入 per-instance acode.json(deep-merge 全局配置 + 仲裁结果)
|
|
115
|
-
const dbg = getInstanceAiConfigDebugLogger();
|
|
116
|
-
try {
|
|
117
|
-
await fs.mkdir(perInstanceDir, { recursive: true });
|
|
118
|
-
// 读取全局 acode.json 作为 base
|
|
119
|
-
let baseConfig = {};
|
|
120
|
-
try {
|
|
121
|
-
const globalRaw = await fs.readFile(globalConfigPath, "utf-8");
|
|
122
|
-
baseConfig = JSON.parse(globalRaw);
|
|
123
|
-
}
|
|
124
|
-
catch {
|
|
125
|
-
// 全局文件不存在则用空对象
|
|
126
|
-
}
|
|
127
|
-
// deep-merge provider.default.options
|
|
128
|
-
const mergedConfig = JSON.parse(JSON.stringify(baseConfig));
|
|
129
|
-
const provider = (mergedConfig.provider ?? {});
|
|
130
|
-
const def = (provider.default ?? {});
|
|
131
|
-
const options_ = (def.options ?? {});
|
|
132
|
-
if (model)
|
|
133
|
-
options_.model = model;
|
|
134
|
-
if (baseURL)
|
|
135
|
-
options_.baseURL = baseURL;
|
|
136
|
-
if (apiKey)
|
|
137
|
-
options_.apiKey = apiKey;
|
|
138
|
-
if (effort)
|
|
139
|
-
options_.effort = effort;
|
|
140
|
-
def.options = options_;
|
|
141
|
-
provider.default = def;
|
|
142
|
-
mergedConfig.provider = provider;
|
|
143
|
-
await fs.writeFile(perInstanceConfigPath, JSON.stringify(mergedConfig, null, 2), "utf-8");
|
|
144
|
-
void dbg.log({
|
|
145
|
-
level: "info",
|
|
146
|
-
category: "apply",
|
|
147
|
-
message: "per-instance acode.json 已写入",
|
|
148
|
-
source: "bridge",
|
|
149
|
-
agentId: options.agentId,
|
|
150
|
-
sessionId: options.sessionId,
|
|
151
|
-
details: {
|
|
152
|
-
perInstanceConfigPath,
|
|
153
|
-
source,
|
|
154
|
-
},
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
catch (error) {
|
|
158
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
159
|
-
void dbg.log({
|
|
160
|
-
level: "error",
|
|
161
|
-
category: "apply",
|
|
162
|
-
message: `per-instance acode.json 写入失败: ${message}`,
|
|
163
|
-
source: "bridge",
|
|
164
|
-
agentId: options.agentId,
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
return {
|
|
168
|
-
instanceConfig: {
|
|
169
|
-
config: resolvedConfig,
|
|
170
|
-
source,
|
|
171
|
-
},
|
|
172
|
-
perInstanceConfigPath,
|
|
173
|
-
};
|
|
174
|
-
}
|
|
1
|
+
import m from"node:fs/promises";import K from"node:path";import{getAcodeConfigFile as U,getRuntimeHomeDir as C}from"../config.js";import{getInstanceAiConfigDebugLogger as A}from"../utils/instance-ai-config-debug-logger.js";const I=new Set(["apiKey","api_key","apikey","key","secret","token","password"]);function _(t){const e={...t};for(const r of Object.keys(e))if(I.has(r)){const n=e[r];typeof n=="string"&&n.length>0&&(e[r]=n.length>8?`${n.slice(0,4)}...${n.slice(-4)}`:"***")}else typeof e[r]=="object"&&e[r]!==null&&(e[r]=_(e[r]));return e}function D(){return{...process.env.ACODE_MODEL?{model:process.env.ACODE_MODEL}:{},...process.env.ACODE_BASE_URL?{baseURL:process.env.ACODE_BASE_URL}:{},...process.env.ACODE_API_KEY?{apiKey:process.env.ACODE_API_KEY}:{},...process.env.ACODE_EFFORT?{effort:process.env.ACODE_EFFORT}:{}}}async function S(t){try{const e=await m.readFile(t,"utf-8"),a=JSON.parse(e).provider?.default,o=a?.options;return{...a?.model?{model:a.model}:{},...o?.baseURL||o?.baseUrl?{baseURL:o.baseURL||o.baseUrl}:{},...o?.apiKey?{apiKey:o.apiKey}:{}}}catch{return{}}}function b(t,e,r,n){return e!==void 0?"api":r!==void 0?"env":n!==void 0?"file":"default"}async function j(t){const e=C(),r=U(e),n=K.join(e,".aws-bridge","instances",t.agentId),a=K.join(n,"acode.json"),o=t.apiOverrides??{},s=D(),i=await S(r),l=o.model??s.model??i.model,g=o.baseURL??s.baseURL??i.baseURL,y=o.apiKey??s.apiKey??i.apiKey,u=o.effort??s.effort,f={};l&&(f.model=l),g&&(f.baseURL=g),y&&(f.apiKey=y),u&&(f.effort=u);const E={model:b("model",o.model,s.model,i.model),baseURL:b("baseURL",o.baseURL,s.baseURL,i.baseURL),apiKey:b("apiKey",o.apiKey,s.apiKey,i.apiKey),effort:b("effort",o.effort,s.effort,void 0)},R=A();try{await m.mkdir(n,{recursive:!0});let c={};try{const O=await m.readFile(r,"utf-8");c=JSON.parse(O)}catch{}const d=JSON.parse(JSON.stringify(c)),L=d.provider??{},v=L.default??{},p=v.options??{};l&&(p.model=l),g&&(p.baseURL=g),y&&(p.apiKey=y),u&&(p.effort=u),v.options=p,L.default=v,d.provider=L,await m.writeFile(a,JSON.stringify(d,null,2),"utf-8"),R.log({level:"info",category:"apply",message:"per-instance acode.json \u5DF2\u5199\u5165",source:"bridge",agentId:t.agentId,sessionId:t.sessionId,details:{perInstanceConfigPath:a,source:E}})}catch(c){const d=c instanceof Error?c.message:String(c);R.log({level:"error",category:"apply",message:`per-instance acode.json \u5199\u5165\u5931\u8D25: ${d}`,source:"bridge",agentId:t.agentId})}return{instanceConfig:{config:f,source:E},perInstanceConfigPath:a}}export{j as prepareAcodeInstanceConfig,_ as redactForLog};
|
|
2
|
+
|
|
@@ -1,193 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
import { ensureDir, installSkillPackageToSdk } from '../utils/file-utils.js';
|
|
4
|
-
import { buildMcpConfigContent, normalizeSdkMcpServerSpec, toLegacyMcpStateItem, toLegacySkillStateItem } from '../utils/mcp-utils.js';
|
|
5
|
-
import { normalizeMcpPayload } from '../utils/mcp-utils.js';
|
|
6
|
-
import { ensureEnabledTools, parseBoolean } from '../utils/validation.js';
|
|
7
|
-
import { loadCcSwitchSdk, runCcSwitchAdapter, toSdkAppsFromEnabledTools } from './cc-switch-sdk.js';
|
|
8
|
-
import { getAgentInitRoot, loadInstanceState, saveInstanceState } from './instance-state.js';
|
|
9
|
-
import { detectToolStatuses } from './tool-installer.js';
|
|
10
|
-
function pickInstalledTools(requestedTools, toolStatus) {
|
|
11
|
-
const installed = new Set(Object.values(toolStatus)
|
|
12
|
-
.filter((item) => item.installed)
|
|
13
|
-
.map((item) => item.tool));
|
|
14
|
-
return requestedTools.filter((tool) => installed.has(tool));
|
|
15
|
-
}
|
|
16
|
-
export async function syncLegacyStateFromSdk(agentId, sdk) {
|
|
17
|
-
const state = await loadInstanceState(agentId);
|
|
18
|
-
const mcpServers = sdk.getAllMcpServers().map((item) => toLegacyMcpStateItem(item));
|
|
19
|
-
const skills = sdk.getAllSkills().map((item) => toLegacySkillStateItem(item));
|
|
20
|
-
state.mcpServers = mcpServers;
|
|
21
|
-
state.skills = skills;
|
|
22
|
-
const initRoot = getAgentInitRoot(agentId);
|
|
23
|
-
const mcpDir = await ensureDir(path.join(initRoot, 'mcp'));
|
|
24
|
-
const mcpConfigPath = path.join(mcpDir, 'mcp-servers.json');
|
|
25
|
-
await fs.writeFile(mcpConfigPath, buildMcpConfigContent(mcpServers), 'utf-8');
|
|
26
|
-
const saved = await saveInstanceState(agentId, state);
|
|
27
|
-
return {
|
|
28
|
-
state: saved,
|
|
29
|
-
configPath: mcpConfigPath,
|
|
30
|
-
skills,
|
|
31
|
-
mcpServers,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
export async function initInstance(agentId, workspacePath, options) {
|
|
35
|
-
const normalizedWorkspace = path.resolve(workspacePath);
|
|
36
|
-
const initRoot = getAgentInitRoot(agentId);
|
|
37
|
-
const logs = [];
|
|
38
|
-
function pushLog(step, status, message, details) {
|
|
39
|
-
logs.push({
|
|
40
|
-
step,
|
|
41
|
-
status,
|
|
42
|
-
message,
|
|
43
|
-
timestamp: new Date().toISOString(),
|
|
44
|
-
details,
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
pushLog('prepare', 'running', '开始初始化实例', {
|
|
48
|
-
agentId: String(agentId),
|
|
49
|
-
workspacePath: normalizedWorkspace,
|
|
50
|
-
});
|
|
51
|
-
await ensureDir(initRoot);
|
|
52
|
-
pushLog('prepare', 'success', '初始化目录已就绪', { initRoot });
|
|
53
|
-
const tools = ensureEnabledTools(options.ccSwitchEnabledTools);
|
|
54
|
-
pushLog('detect-tools', 'running', '开始检测工具安装状态', { tools });
|
|
55
|
-
const detectedToolStatus = await detectToolStatuses(tools);
|
|
56
|
-
pushLog('detect-tools', 'success', '工具安装状态检测完成', {
|
|
57
|
-
installedTools: Object.values(detectedToolStatus).filter((item) => item.installed).map((item) => item.tool),
|
|
58
|
-
missingTools: Object.values(detectedToolStatus).filter((item) => !item.installed).map((item) => item.tool),
|
|
59
|
-
});
|
|
60
|
-
const installedTools = pickInstalledTools(tools, detectedToolStatus);
|
|
61
|
-
const missingTools = Object.values(detectedToolStatus).filter((item) => !item.installed);
|
|
62
|
-
const initResult = {
|
|
63
|
-
ok: true,
|
|
64
|
-
agentId: String(agentId),
|
|
65
|
-
workspacePath: normalizedWorkspace,
|
|
66
|
-
initRoot,
|
|
67
|
-
enabledTools: tools,
|
|
68
|
-
toolStatus: detectedToolStatus,
|
|
69
|
-
logs,
|
|
70
|
-
skill: {
|
|
71
|
-
enabled: parseBoolean(options.skillEnabled, true),
|
|
72
|
-
packagePresent: false,
|
|
73
|
-
},
|
|
74
|
-
mcp: {
|
|
75
|
-
enabled: parseBoolean(options.mcpEnabled, true),
|
|
76
|
-
configPath: null,
|
|
77
|
-
},
|
|
78
|
-
};
|
|
79
|
-
const state = await loadInstanceState(agentId);
|
|
80
|
-
if (missingTools.length > 0) {
|
|
81
|
-
pushLog('skip-uninstalled-tools', 'skipped', '已跳过未安装工具', {
|
|
82
|
-
skippedTools: missingTools.map((item) => ({ tool: item.tool, error: item.error })),
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
pushLog('select-installed-tools', 'success', '已选择可初始化工具', {
|
|
86
|
-
enabledTools: tools,
|
|
87
|
-
installedTools,
|
|
88
|
-
});
|
|
89
|
-
pushLog('load-sdk', 'running', '开始加载 CC Switch SDK');
|
|
90
|
-
const sdk = await loadCcSwitchSdk(agentId);
|
|
91
|
-
const sdkApps = toSdkAppsFromEnabledTools(installedTools);
|
|
92
|
-
pushLog('load-sdk', 'success', 'CC Switch SDK 加载完成', { sdkApps });
|
|
93
|
-
if (initResult.skill.enabled) {
|
|
94
|
-
pushLog('install-skills', 'running', '开始安装技能包', {
|
|
95
|
-
count: Array.isArray(options.skillPackages) ? options.skillPackages.length : (options.skillPackage ? 1 : 0),
|
|
96
|
-
});
|
|
97
|
-
const skillDir = await ensureDir(path.join(initRoot, 'skills'));
|
|
98
|
-
const skillCandidates = Array.isArray(options.skillPackages) && options.skillPackages.length > 0
|
|
99
|
-
? options.skillPackages
|
|
100
|
-
: (options.skillPackage ? [options.skillPackage] : []);
|
|
101
|
-
const installedSkills = [];
|
|
102
|
-
for (const candidate of skillCandidates) {
|
|
103
|
-
const installed = await installSkillPackageToSdk(sdk, candidate, skillDir, sdkApps);
|
|
104
|
-
if (!installed) {
|
|
105
|
-
continue;
|
|
106
|
-
}
|
|
107
|
-
installedSkills.push(toLegacySkillStateItem(installed));
|
|
108
|
-
}
|
|
109
|
-
if (installedSkills.length > 0) {
|
|
110
|
-
initResult.skill.packagePresent = true;
|
|
111
|
-
initResult.skill.installedCount = installedSkills.length;
|
|
112
|
-
initResult.skill.installed = installedSkills;
|
|
113
|
-
pushLog('install-skills', 'success', '技能包安装完成', {
|
|
114
|
-
installedCount: installedSkills.length,
|
|
115
|
-
skills: installedSkills.map((item) => item.name),
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
else {
|
|
119
|
-
pushLog('install-skills', 'skipped', '没有可安装的技能包');
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
pushLog('install-skills', 'skipped', '已跳过技能包安装(skillEnabled=false)');
|
|
124
|
-
}
|
|
125
|
-
if (initResult.mcp.enabled) {
|
|
126
|
-
pushLog('install-mcp', 'running', '开始写入 MCP 配置', {
|
|
127
|
-
count: Array.isArray(options.mcpServers) ? options.mcpServers.length : 0,
|
|
128
|
-
});
|
|
129
|
-
const normalizedMcpServers = (Array.isArray(options.mcpServers) ? options.mcpServers : [])
|
|
130
|
-
.map((item) => normalizeMcpPayload(item))
|
|
131
|
-
.filter((item) => item !== null);
|
|
132
|
-
const appliedMcp = [];
|
|
133
|
-
for (const item of normalizedMcpServers) {
|
|
134
|
-
const allMcps = sdk.getAllMcpServers();
|
|
135
|
-
const existing = allMcps.find((server) => String(server?.name || '').trim() === item.name);
|
|
136
|
-
const mcpInput = {
|
|
137
|
-
name: item.name,
|
|
138
|
-
server: normalizeSdkMcpServerSpec(item),
|
|
139
|
-
apps: sdkApps,
|
|
140
|
-
};
|
|
141
|
-
const existingId = String(existing?.id || '').trim();
|
|
142
|
-
const upserted = existingId
|
|
143
|
-
? await sdk.updateMcpServer(existingId, mcpInput)
|
|
144
|
-
: await sdk.createMcpServer(mcpInput);
|
|
145
|
-
appliedMcp.push(toLegacyMcpStateItem(upserted));
|
|
146
|
-
}
|
|
147
|
-
initResult.mcp.installedCount = appliedMcp.length;
|
|
148
|
-
pushLog('install-mcp', 'success', 'MCP 配置写入完成', {
|
|
149
|
-
installedCount: appliedMcp.length,
|
|
150
|
-
mcpServers: appliedMcp.map((item) => item.name),
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
pushLog('install-mcp', 'skipped', '已跳过 MCP 配置(mcpEnabled=false)');
|
|
155
|
-
}
|
|
156
|
-
pushLog('persist-state', 'running', '开始保存实例状态');
|
|
157
|
-
state.initialized = true;
|
|
158
|
-
state.enabledTools = tools;
|
|
159
|
-
state.toolStatus = detectedToolStatus;
|
|
160
|
-
state.skillEnabled = initResult.skill.enabled;
|
|
161
|
-
state.mcpEnabled = initResult.mcp.enabled;
|
|
162
|
-
await saveInstanceState(agentId, state);
|
|
163
|
-
pushLog('persist-state', 'success', '实例状态保存完成');
|
|
164
|
-
pushLog('sync-state', 'running', '开始同步 CC Switch 状态快照');
|
|
165
|
-
const synced = await syncLegacyStateFromSdk(agentId, sdk);
|
|
166
|
-
const savedState = synced.state;
|
|
167
|
-
initResult.mcp.configPath = synced.configPath;
|
|
168
|
-
pushLog('sync-state', 'success', 'CC Switch 状态同步完成', {
|
|
169
|
-
skillCount: savedState.skills.length,
|
|
170
|
-
mcpCount: savedState.mcpServers.length,
|
|
171
|
-
configPath: synced.configPath,
|
|
172
|
-
});
|
|
173
|
-
pushLog('adapter', 'running', '开始执行适配器回写');
|
|
174
|
-
const adapterResult = await runCcSwitchAdapter('init-instance', agentId, {
|
|
175
|
-
enabledTools: savedState.enabledTools,
|
|
176
|
-
skillEnabled: savedState.skillEnabled,
|
|
177
|
-
mcpEnabled: savedState.mcpEnabled,
|
|
178
|
-
skillCount: savedState.skills.length,
|
|
179
|
-
mcpCount: savedState.mcpServers.length,
|
|
180
|
-
}, sdk);
|
|
181
|
-
pushLog('adapter', 'success', '适配器回写完成', {
|
|
182
|
-
snapshot: adapterResult.snapshot,
|
|
183
|
-
});
|
|
184
|
-
pushLog('complete', 'success', missingTools.length > 0 ? '实例初始化完成,未安装工具已跳过' : '实例初始化完成');
|
|
185
|
-
return {
|
|
186
|
-
...initResult,
|
|
187
|
-
adapterResult,
|
|
188
|
-
installed: {
|
|
189
|
-
skills: savedState.skills,
|
|
190
|
-
mcpServers: savedState.mcpServers,
|
|
191
|
-
},
|
|
192
|
-
};
|
|
193
|
-
}
|
|
1
|
+
import{promises as L}from"node:fs";import b from"node:path";import{ensureDir as P,installSkillPackageToSdk as F}from"../utils/file-utils.js";import{buildMcpConfigContent as I,normalizeSdkMcpServerSpec as K,toLegacyMcpStateItem as M,toLegacySkillStateItem as E}from"../utils/mcp-utils.js";import{normalizeMcpPayload as B}from"../utils/mcp-utils.js";import{ensureEnabledTools as W,parseBoolean as j}from"../utils/validation.js";import{loadCcSwitchSdk as q,runCcSwitchAdapter as G,toSdkAppsFromEnabledTools as H}from"./cc-switch-sdk.js";import{getAgentInitRoot as D,loadInstanceState as z,saveInstanceState as O}from"./instance-state.js";import{detectToolStatuses as J}from"./tool-installer.js";function N(a,m){const s=new Set(Object.values(m).filter(n=>n.installed).map(n=>n.tool));return a.filter(n=>s.has(n))}async function Q(a,m){const s=await z(a),n=m.getAllMcpServers().map(k=>M(k)),p=m.getAllSkills().map(k=>E(k));s.mcpServers=n,s.skills=p;const f=D(a),e=await P(b.join(f,"mcp")),c=b.join(e,"mcp-servers.json");return await L.writeFile(c,I(n),"utf-8"),{state:await O(a,s),configPath:c,skills:p,mcpServers:n}}async function te(a,m,s){const n=b.resolve(m),p=D(a),f=[];function e(t,r,l,S){f.push({step:t,status:r,message:l,timestamp:new Date().toISOString(),details:S})}e("prepare","running","\u5F00\u59CB\u521D\u59CB\u5316\u5B9E\u4F8B",{agentId:String(a),workspacePath:n}),await P(p),e("prepare","success","\u521D\u59CB\u5316\u76EE\u5F55\u5DF2\u5C31\u7EEA",{initRoot:p});const c=W(s.ccSwitchEnabledTools);e("detect-tools","running","\u5F00\u59CB\u68C0\u6D4B\u5DE5\u5177\u5B89\u88C5\u72B6\u6001",{tools:c});const d=await J(c);e("detect-tools","success","\u5DE5\u5177\u5B89\u88C5\u72B6\u6001\u68C0\u6D4B\u5B8C\u6210",{installedTools:Object.values(d).filter(t=>t.installed).map(t=>t.tool),missingTools:Object.values(d).filter(t=>!t.installed).map(t=>t.tool)});const k=N(c,d),v=Object.values(d).filter(t=>!t.installed),i={ok:!0,agentId:String(a),workspacePath:n,initRoot:p,enabledTools:c,toolStatus:d,logs:f,skill:{enabled:j(s.skillEnabled,!0),packagePresent:!1},mcp:{enabled:j(s.mcpEnabled,!0),configPath:null}},u=await z(a);v.length>0&&e("skip-uninstalled-tools","skipped","\u5DF2\u8DF3\u8FC7\u672A\u5B89\u88C5\u5DE5\u5177",{skippedTools:v.map(t=>({tool:t.tool,error:t.error}))}),e("select-installed-tools","success","\u5DF2\u9009\u62E9\u53EF\u521D\u59CB\u5316\u5DE5\u5177",{enabledTools:c,installedTools:k}),e("load-sdk","running","\u5F00\u59CB\u52A0\u8F7D CC Switch SDK");const g=await q(a),w=H(k);if(e("load-sdk","success","CC Switch SDK \u52A0\u8F7D\u5B8C\u6210",{sdkApps:w}),i.skill.enabled){e("install-skills","running","\u5F00\u59CB\u5B89\u88C5\u6280\u80FD\u5305",{count:Array.isArray(s.skillPackages)?s.skillPackages.length:s.skillPackage?1:0});const t=await P(b.join(p,"skills")),r=Array.isArray(s.skillPackages)&&s.skillPackages.length>0?s.skillPackages:s.skillPackage?[s.skillPackage]:[],l=[];for(const S of r){const h=await F(g,S,t,w);h&&l.push(E(h))}l.length>0?(i.skill.packagePresent=!0,i.skill.installedCount=l.length,i.skill.installed=l,e("install-skills","success","\u6280\u80FD\u5305\u5B89\u88C5\u5B8C\u6210",{installedCount:l.length,skills:l.map(S=>S.name)})):e("install-skills","skipped","\u6CA1\u6709\u53EF\u5B89\u88C5\u7684\u6280\u80FD\u5305")}else e("install-skills","skipped","\u5DF2\u8DF3\u8FC7\u6280\u80FD\u5305\u5B89\u88C5\uFF08skillEnabled=false\uFF09");if(i.mcp.enabled){e("install-mcp","running","\u5F00\u59CB\u5199\u5165 MCP \u914D\u7F6E",{count:Array.isArray(s.mcpServers)?s.mcpServers.length:0});const t=(Array.isArray(s.mcpServers)?s.mcpServers:[]).map(l=>B(l)).filter(l=>l!==null),r=[];for(const l of t){const h=g.getAllMcpServers().find(x=>String(x?.name||"").trim()===l.name),T={name:l.name,server:K(l),apps:w},A=String(h?.id||"").trim(),R=A?await g.updateMcpServer(A,T):await g.createMcpServer(T);r.push(M(R))}i.mcp.installedCount=r.length,e("install-mcp","success","MCP \u914D\u7F6E\u5199\u5165\u5B8C\u6210",{installedCount:r.length,mcpServers:r.map(l=>l.name)})}else e("install-mcp","skipped","\u5DF2\u8DF3\u8FC7 MCP \u914D\u7F6E\uFF08mcpEnabled=false\uFF09");e("persist-state","running","\u5F00\u59CB\u4FDD\u5B58\u5B9E\u4F8B\u72B6\u6001"),u.initialized=!0,u.enabledTools=c,u.toolStatus=d,u.skillEnabled=i.skill.enabled,u.mcpEnabled=i.mcp.enabled,await O(a,u),e("persist-state","success","\u5B9E\u4F8B\u72B6\u6001\u4FDD\u5B58\u5B8C\u6210"),e("sync-state","running","\u5F00\u59CB\u540C\u6B65 CC Switch \u72B6\u6001\u5FEB\u7167");const C=await Q(a,g),o=C.state;i.mcp.configPath=C.configPath,e("sync-state","success","CC Switch \u72B6\u6001\u540C\u6B65\u5B8C\u6210",{skillCount:o.skills.length,mcpCount:o.mcpServers.length,configPath:C.configPath}),e("adapter","running","\u5F00\u59CB\u6267\u884C\u9002\u914D\u5668\u56DE\u5199");const y=await G("init-instance",a,{enabledTools:o.enabledTools,skillEnabled:o.skillEnabled,mcpEnabled:o.mcpEnabled,skillCount:o.skills.length,mcpCount:o.mcpServers.length},g);return e("adapter","success","\u9002\u914D\u5668\u56DE\u5199\u5B8C\u6210",{snapshot:y.snapshot}),e("complete","success",v.length>0?"\u5B9E\u4F8B\u521D\u59CB\u5316\u5B8C\u6210\uFF0C\u672A\u5B89\u88C5\u5DE5\u5177\u5DF2\u8DF3\u8FC7":"\u5B9E\u4F8B\u521D\u59CB\u5316\u5B8C\u6210"),{...i,adapterResult:y,installed:{skills:o.skills,mcpServers:o.mcpServers}}}export{te as initInstance,Q as syncLegacyStateFromSdk};
|
|
2
|
+
|
|
@@ -1,237 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* 负责 Agent 实例的生命周期管理:
|
|
5
|
-
* - 实例根目录、workspace 路径管理
|
|
6
|
-
* - 实例状态持久化
|
|
7
|
-
* - Skill/MCP 包安装流程
|
|
8
|
-
*
|
|
9
|
-
* 注意:此服务属于 Agent 运行时层,不属于 cc-switch-sdk 配置管理层
|
|
10
|
-
*/
|
|
11
|
-
import path from "node:path";
|
|
12
|
-
import { promises as fs } from "node:fs";
|
|
13
|
-
/**
|
|
14
|
-
* 生成唯一 ID
|
|
15
|
-
*/
|
|
16
|
-
function generateId(prefix = "inst") {
|
|
17
|
-
const timestamp = Date.now().toString(36);
|
|
18
|
-
const random = Math.random().toString(36).slice(2, 8);
|
|
19
|
-
return `${prefix}_${timestamp}_${random}`;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* 检查路径是否存在
|
|
23
|
-
*/
|
|
24
|
-
async function pathExists(target) {
|
|
25
|
-
try {
|
|
26
|
-
await fs.access(target);
|
|
27
|
-
return true;
|
|
28
|
-
}
|
|
29
|
-
catch {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* 递归复制目录
|
|
35
|
-
*/
|
|
36
|
-
async function copyDir(source, target) {
|
|
37
|
-
await fs.mkdir(target, { recursive: true });
|
|
38
|
-
const entries = await fs.readdir(source, { withFileTypes: true });
|
|
39
|
-
for (const entry of entries) {
|
|
40
|
-
const srcPath = path.join(source, entry.name);
|
|
41
|
-
const tgtPath = path.join(target, entry.name);
|
|
42
|
-
if (entry.isDirectory()) {
|
|
43
|
-
await copyDir(srcPath, tgtPath);
|
|
44
|
-
}
|
|
45
|
-
else {
|
|
46
|
-
await fs.copyFile(srcPath, tgtPath);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* 删除路径(如果存在)
|
|
52
|
-
*/
|
|
53
|
-
async function removeIfExists(target) {
|
|
54
|
-
try {
|
|
55
|
-
await fs.rm(target, { recursive: true, force: true });
|
|
56
|
-
}
|
|
57
|
-
catch {
|
|
58
|
-
// ignore
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
export class InstanceService {
|
|
62
|
-
constructor(sdk, instanceRoot, workspacePath) {
|
|
63
|
-
this.sdk = sdk;
|
|
64
|
-
this.instanceRoot = instanceRoot;
|
|
65
|
-
this.workspacePath = workspacePath;
|
|
66
|
-
}
|
|
67
|
-
getPaths() {
|
|
68
|
-
return {
|
|
69
|
-
instanceRoot: this.instanceRoot,
|
|
70
|
-
stateFile: path.join(this.instanceRoot, "instance-state.json"),
|
|
71
|
-
skillsDir: path.join(this.instanceRoot, "skills"),
|
|
72
|
-
mcpDir: path.join(this.instanceRoot, "mcp"),
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
async loadState() {
|
|
76
|
-
const paths = this.getPaths();
|
|
77
|
-
try {
|
|
78
|
-
const raw = await fs.readFile(paths.stateFile, "utf-8");
|
|
79
|
-
const parsed = JSON.parse(raw);
|
|
80
|
-
return parsed;
|
|
81
|
-
}
|
|
82
|
-
catch {
|
|
83
|
-
return {
|
|
84
|
-
initialized: false,
|
|
85
|
-
skills: [],
|
|
86
|
-
mcpServers: [],
|
|
87
|
-
enabledApps: [],
|
|
88
|
-
skillEnabled: true,
|
|
89
|
-
mcpEnabled: true,
|
|
90
|
-
updatedAt: null,
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
async saveState(state) {
|
|
95
|
-
const paths = this.getPaths();
|
|
96
|
-
state.updatedAt = new Date().toISOString();
|
|
97
|
-
await fs.mkdir(path.dirname(paths.stateFile), { recursive: true });
|
|
98
|
-
await fs.writeFile(paths.stateFile, JSON.stringify(state, null, 2), "utf-8");
|
|
99
|
-
return state;
|
|
100
|
-
}
|
|
101
|
-
async ensureInstanceRoot() {
|
|
102
|
-
await fs.mkdir(this.instanceRoot, { recursive: true });
|
|
103
|
-
}
|
|
104
|
-
toAppFlags(appIds) {
|
|
105
|
-
return {
|
|
106
|
-
acode: appIds.includes("acode"),
|
|
107
|
-
claude: appIds.includes("claude"),
|
|
108
|
-
claudecode: appIds.includes("claudecode"),
|
|
109
|
-
codex: appIds.includes("codex"),
|
|
110
|
-
gemini: appIds.includes("gemini"),
|
|
111
|
-
opencode: appIds.includes("opencode"),
|
|
112
|
-
openclaw: appIds.includes("openclaw"),
|
|
113
|
-
};
|
|
114
|
-
}
|
|
115
|
-
async initialize(options = {}) {
|
|
116
|
-
await this.ensureInstanceRoot();
|
|
117
|
-
const paths = this.getPaths();
|
|
118
|
-
const enabledApps = options.enabledApps ?? ["claudecode", "opencode"];
|
|
119
|
-
const appFlags = this.toAppFlags(enabledApps);
|
|
120
|
-
const result = {
|
|
121
|
-
ok: true,
|
|
122
|
-
instanceId: generateId(),
|
|
123
|
-
workspacePath: this.workspacePath,
|
|
124
|
-
instanceRoot: this.instanceRoot,
|
|
125
|
-
enabledApps,
|
|
126
|
-
skill: {
|
|
127
|
-
enabled: options.skillEnabled ?? true,
|
|
128
|
-
packagePresent: false,
|
|
129
|
-
},
|
|
130
|
-
mcp: {
|
|
131
|
-
enabled: options.mcpEnabled ?? true,
|
|
132
|
-
},
|
|
133
|
-
};
|
|
134
|
-
const state = await this.loadState();
|
|
135
|
-
state.initialized = true;
|
|
136
|
-
state.enabledApps = enabledApps;
|
|
137
|
-
state.skillEnabled = result.skill.enabled;
|
|
138
|
-
state.mcpEnabled = result.mcp.enabled;
|
|
139
|
-
if (result.skill.enabled) {
|
|
140
|
-
await fs.mkdir(paths.skillsDir, { recursive: true });
|
|
141
|
-
const skillCandidates = Array.isArray(options.skillPackages) && options.skillPackages.length > 0
|
|
142
|
-
? options.skillPackages
|
|
143
|
-
: options.skillPackage
|
|
144
|
-
? [options.skillPackage]
|
|
145
|
-
: [];
|
|
146
|
-
const installedSkills = [];
|
|
147
|
-
for (const candidate of skillCandidates) {
|
|
148
|
-
const installed = await this.installSkillPackage(candidate, paths.skillsDir, appFlags);
|
|
149
|
-
if (installed) {
|
|
150
|
-
installedSkills.push(installed);
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
if (installedSkills.length > 0) {
|
|
154
|
-
result.skill.packagePresent = true;
|
|
155
|
-
result.skill.installedCount = installedSkills.length;
|
|
156
|
-
result.skill.installed = installedSkills;
|
|
157
|
-
state.skills = installedSkills;
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
if (result.mcp.enabled) {
|
|
161
|
-
const mcpServers = Array.isArray(options.mcpServers)
|
|
162
|
-
? options.mcpServers
|
|
163
|
-
: [];
|
|
164
|
-
const installedMcps = [];
|
|
165
|
-
for (const input of mcpServers) {
|
|
166
|
-
const server = await this.upsertMcpServer(input, appFlags);
|
|
167
|
-
if (server) {
|
|
168
|
-
installedMcps.push(server);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
if (installedMcps.length > 0) {
|
|
172
|
-
result.mcp.installedCount = installedMcps.length;
|
|
173
|
-
result.mcp.installed = installedMcps;
|
|
174
|
-
state.mcpServers = installedMcps;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
await this.saveState(state);
|
|
178
|
-
return result;
|
|
179
|
-
}
|
|
180
|
-
async installSkillPackage(pkg, targetDir, apps) {
|
|
181
|
-
const sourceDir = pkg.localPath;
|
|
182
|
-
if (!sourceDir || !(await pathExists(sourceDir))) {
|
|
183
|
-
return null;
|
|
184
|
-
}
|
|
185
|
-
const skillName = pkg.skillName || path.basename(sourceDir).replace(/\.skill$/, "");
|
|
186
|
-
const skillId = generateId("skill");
|
|
187
|
-
const targetSkillDir = path.join(targetDir, skillName);
|
|
188
|
-
await copyDir(sourceDir, targetSkillDir);
|
|
189
|
-
const installed = await this.sdk.installSkill({
|
|
190
|
-
sourceDir: targetSkillDir,
|
|
191
|
-
name: skillName,
|
|
192
|
-
apps,
|
|
193
|
-
});
|
|
194
|
-
return installed;
|
|
195
|
-
}
|
|
196
|
-
async upsertMcpServer(input, apps) {
|
|
197
|
-
const name = String(input.name || "").trim();
|
|
198
|
-
if (!name) {
|
|
199
|
-
return null;
|
|
200
|
-
}
|
|
201
|
-
const existingMcps = this.sdk.getAllMcpServers();
|
|
202
|
-
const existing = existingMcps.find((s) => s.name === name);
|
|
203
|
-
const serverSpec = {
|
|
204
|
-
type: input.transport || "stdio",
|
|
205
|
-
command: input.command,
|
|
206
|
-
url: input.url,
|
|
207
|
-
args: input.args,
|
|
208
|
-
env: input.env,
|
|
209
|
-
};
|
|
210
|
-
if (existing) {
|
|
211
|
-
return this.sdk.updateMcpServer(existing.id, {
|
|
212
|
-
name,
|
|
213
|
-
server: serverSpec,
|
|
214
|
-
apps,
|
|
215
|
-
});
|
|
216
|
-
}
|
|
217
|
-
return this.sdk.createMcpServer({
|
|
218
|
-
name,
|
|
219
|
-
server: serverSpec,
|
|
220
|
-
apps,
|
|
221
|
-
});
|
|
222
|
-
}
|
|
223
|
-
async getState() {
|
|
224
|
-
return this.loadState();
|
|
225
|
-
}
|
|
226
|
-
async updateState(partial) {
|
|
227
|
-
const state = await this.loadState();
|
|
228
|
-
Object.assign(state, partial);
|
|
229
|
-
return this.saveState(state);
|
|
230
|
-
}
|
|
231
|
-
async reset() {
|
|
232
|
-
const paths = this.getPaths();
|
|
233
|
-
await removeIfExists(paths.stateFile);
|
|
234
|
-
await removeIfExists(paths.skillsDir);
|
|
235
|
-
await removeIfExists(paths.mcpDir);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
1
|
+
import d from"node:path";import{promises as l}from"node:fs";function p(c="inst"){const e=Date.now().toString(36),t=Math.random().toString(36).slice(2,8);return`${c}_${e}_${t}`}async function g(c){try{return await l.access(c),!0}catch{return!1}}async function m(c,e){await l.mkdir(e,{recursive:!0});const t=await l.readdir(c,{withFileTypes:!0});for(const a of t){const n=d.join(c,a.name),s=d.join(e,a.name);a.isDirectory()?await m(n,s):await l.copyFile(n,s)}}async function k(c){try{await l.rm(c,{recursive:!0,force:!0})}catch{}}class f{constructor(e,t,a){this.sdk=e,this.instanceRoot=t,this.workspacePath=a}getPaths(){return{instanceRoot:this.instanceRoot,stateFile:d.join(this.instanceRoot,"instance-state.json"),skillsDir:d.join(this.instanceRoot,"skills"),mcpDir:d.join(this.instanceRoot,"mcp")}}async loadState(){const e=this.getPaths();try{const t=await l.readFile(e.stateFile,"utf-8");return JSON.parse(t)}catch{return{initialized:!1,skills:[],mcpServers:[],enabledApps:[],skillEnabled:!0,mcpEnabled:!0,updatedAt:null}}}async saveState(e){const t=this.getPaths();return e.updatedAt=new Date().toISOString(),await l.mkdir(d.dirname(t.stateFile),{recursive:!0}),await l.writeFile(t.stateFile,JSON.stringify(e,null,2),"utf-8"),e}async ensureInstanceRoot(){await l.mkdir(this.instanceRoot,{recursive:!0})}toAppFlags(e){return{acode:e.includes("acode"),claude:e.includes("claude"),claudecode:e.includes("claudecode"),codex:e.includes("codex"),gemini:e.includes("gemini"),opencode:e.includes("opencode"),openclaw:e.includes("openclaw")}}async initialize(e={}){await this.ensureInstanceRoot();const t=this.getPaths(),a=e.enabledApps??["claudecode","opencode"],n=this.toAppFlags(a),s={ok:!0,instanceId:p(),workspacePath:this.workspacePath,instanceRoot:this.instanceRoot,enabledApps:a,skill:{enabled:e.skillEnabled??!0,packagePresent:!1},mcp:{enabled:e.mcpEnabled??!0}},r=await this.loadState();if(r.initialized=!0,r.enabledApps=a,r.skillEnabled=s.skill.enabled,r.mcpEnabled=s.mcp.enabled,s.skill.enabled){await l.mkdir(t.skillsDir,{recursive:!0});const o=Array.isArray(e.skillPackages)&&e.skillPackages.length>0?e.skillPackages:e.skillPackage?[e.skillPackage]:[],i=[];for(const h of o){const u=await this.installSkillPackage(h,t.skillsDir,n);u&&i.push(u)}i.length>0&&(s.skill.packagePresent=!0,s.skill.installedCount=i.length,s.skill.installed=i,r.skills=i)}if(s.mcp.enabled){const o=Array.isArray(e.mcpServers)?e.mcpServers:[],i=[];for(const h of o){const u=await this.upsertMcpServer(h,n);u&&i.push(u)}i.length>0&&(s.mcp.installedCount=i.length,s.mcp.installed=i,r.mcpServers=i)}return await this.saveState(r),s}async installSkillPackage(e,t,a){const n=e.localPath;if(!n||!await g(n))return null;const s=e.skillName||d.basename(n).replace(/\.skill$/,""),r=p("skill"),o=d.join(t,s);return await m(n,o),await this.sdk.installSkill({sourceDir:o,name:s,apps:a})}async upsertMcpServer(e,t){const a=String(e.name||"").trim();if(!a)return null;const s=this.sdk.getAllMcpServers().find(o=>o.name===a),r={type:e.transport||"stdio",command:e.command,url:e.url,args:e.args,env:e.env};return s?this.sdk.updateMcpServer(s.id,{name:a,server:r,apps:t}):this.sdk.createMcpServer({name:a,server:r,apps:t})}async getState(){return this.loadState()}async updateState(e){const t=await this.loadState();return Object.assign(t,e),this.saveState(t)}async reset(){const e=this.getPaths();await k(e.stateFile),await k(e.skillsDir),await k(e.mcpDir)}}export{f as InstanceService};
|
|
2
|
+
|