aws-runtime-bridge 1.9.175 → 1.9.179
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/CHANGELOG.md +188 -0
- package/README.md +61 -2
- package/dist/adapter/AcodeSdkAdapter.d.ts +369 -0
- package/dist/adapter/AcodeSdkAdapter.js +2 -2
- package/dist/adapter/AdapterRegistry.d.ts +28 -0
- package/dist/adapter/ClaudeSdkAdapter.d.ts +71 -0
- package/dist/adapter/CodexSdkAdapter.d.ts +14 -0
- package/dist/adapter/OpencodeSdkAdapter.d.ts +44 -0
- package/dist/adapter/acode-tool-names.d.ts +9 -0
- package/dist/adapter/idle-poll-loop.d.ts +20 -0
- package/dist/adapter/index.d.ts +3 -0
- package/dist/adapter/instance-ai-config-resolver.d.ts +20 -0
- package/dist/adapter/prompts.d.ts +12 -0
- package/dist/adapter/types.d.ts +182 -0
- package/dist/browser/browser-bootstrap.d.ts +15 -0
- package/dist/browser/browser-connect-token.d.ts +11 -0
- package/dist/browser/browser-frame-encode.d.ts +32 -0
- package/dist/browser/browser-pool.d.ts +129 -0
- package/dist/browser/browser-profile-store.d.ts +41 -0
- package/dist/browser/browser-ws-bridge.d.ts +20 -0
- package/dist/browser/built-in-browser-tools.d.ts +44 -0
- package/dist/browser/element-locator.d.ts +25 -0
- package/dist/browser/element-picker.d.ts +30 -0
- package/dist/browser/frame-encode.d.ts +19 -0
- package/dist/browser/input-dispatcher.d.ts +35 -0
- package/dist/browser/listener-store.d.ts +44 -0
- package/dist/browser/page-listener-manager.d.ts +88 -0
- package/dist/browser/page-listener-types.d.ts +38 -0
- package/dist/browser/screencast-differ.d.ts +10 -0
- package/dist/browser/screencast-manager.d.ts +94 -0
- package/dist/browser/snapshot-serializer.d.ts +56 -0
- package/dist/browser/ssrf-guard.d.ts +44 -0
- package/dist/browser/stealth.d.ts +21 -0
- package/dist/browser/step-archive.d.ts +13 -0
- package/dist/browser/types.d.ts +100 -0
- package/dist/browser/ws-server.d.ts +54 -0
- package/dist/config.d.ts +138 -2
- package/dist/config.js +2 -2
- package/dist/desktop/built-in-desktop-tools.d.ts +68 -0
- package/dist/desktop/built-in-desktop-tools.js +2 -1
- package/dist/desktop/desktop-control.d.ts +142 -0
- package/dist/desktop/desktop-control.js +2 -0
- package/dist/desktop/desktop-mcp-client.d.ts +28 -0
- package/dist/desktop/desktop-staleness.d.ts +66 -0
- package/dist/desktop/desktop-staleness.js +2 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +1 -1
- package/dist/middleware/auth.d.ts +26 -0
- package/dist/middleware/auth.js +1 -1
- package/dist/remote-desktop/computer-control.d.ts +3 -0
- package/dist/remote-desktop/coords.d.ts +6 -0
- package/dist/remote-desktop/frame-backpressure.d.ts +10 -0
- package/dist/remote-desktop/frame-encode.d.ts +3 -0
- package/dist/remote-desktop/index.js +2 -2
- package/dist/remote-desktop/input-dispatcher.d.ts +4 -0
- package/dist/remote-desktop/permission-manager.d.ts +3 -0
- package/dist/remote-desktop/screen-capture.d.ts +91 -0
- package/dist/remote-desktop/session-manager.d.ts +47 -0
- package/dist/remote-desktop/session-manager.js +1 -1
- package/dist/remote-desktop/system-backend.d.ts +64 -0
- package/dist/remote-desktop/types.d.ts +25 -0
- package/dist/remote-desktop/ui-automation.d.ts +11 -0
- package/dist/remote-desktop/win32-api.d.ts +10 -0
- package/dist/routes/acode-todos.d.ts +13 -0
- package/dist/routes/agent-state.d.ts +15 -0
- package/dist/routes/ai-sources.js +1 -1
- package/dist/routes/background-tasks.d.ts +18 -0
- package/dist/routes/background-tasks.js +2 -2
- package/dist/routes/browser-listeners.d.ts +17 -0
- package/dist/routes/browser-sessions.d.ts +10 -0
- package/dist/routes/capabilities.js +1 -1
- package/dist/routes/dashboard-icon.d.ts +9 -0
- package/dist/routes/dashboard-icon.js +2 -0
- package/dist/routes/dashboard-theme.d.ts +24 -0
- package/dist/routes/dashboard-theme.js +157 -0
- package/dist/routes/dashboard.d.ts +9 -0
- package/dist/routes/dashboard.js +1988 -625
- package/dist/routes/debug-mount.d.ts +16 -0
- package/dist/routes/desktop-control.d.ts +15 -0
- package/dist/routes/desktop-control.js +2 -0
- package/dist/routes/events.d.ts +4 -0
- package/dist/routes/file-browser.d.ts +11 -0
- package/dist/routes/file-change-diff.d.ts +25 -0
- package/dist/routes/file-diff-rollback.d.ts +28 -0
- package/dist/routes/file-snapshot.d.ts +7 -0
- package/dist/routes/git.d.ts +143 -0
- package/dist/routes/instance-tool-status.d.ts +5 -0
- package/dist/routes/instance.d.ts +8 -0
- package/dist/routes/instance.js +1 -1
- package/dist/routes/jdks.d.ts +4 -0
- package/dist/routes/launch.d.ts +5 -0
- package/dist/routes/lsp-providers.d.ts +11 -0
- package/dist/routes/lsp-providers.js +2 -0
- package/dist/routes/lsp.d.ts +41 -0
- package/dist/routes/lsp.js +4 -2
- package/dist/routes/mcp-extra.d.ts +15 -0
- package/dist/routes/mcp.d.ts +16 -0
- package/dist/routes/mcp.js +1 -1
- package/dist/routes/plugins.d.ts +19 -0
- package/dist/routes/plugins.js +1 -1
- package/dist/routes/processes.d.ts +4 -0
- package/dist/routes/properties.d.ts +4 -0
- package/dist/routes/pty.d.ts +29 -0
- package/dist/routes/runtime-binding.d.ts +3 -0
- package/dist/routes/sessions.d.ts +22 -0
- package/dist/routes/skills.d.ts +15 -0
- package/dist/routes/skills.js +1 -1
- package/dist/routes/sub-agents.d.ts +11 -0
- package/dist/routes/sub-agents.js +1 -1
- package/dist/routes/task-context.d.ts +5 -0
- package/dist/routes/tech-stack.d.ts +4 -0
- package/dist/routes/terminal.d.ts +122 -0
- package/dist/routes/terminal.js +16 -16
- package/dist/routes/workspace-index.d.ts +12 -0
- package/dist/routes/workspace-index.js +2 -0
- package/dist/routes/yml.d.ts +4 -0
- package/dist/scripts/migrate-user-scopes.d.ts +26 -0
- package/dist/scripts/migrate-user-scopes.js +2 -0
- package/dist/services/access-control.d.ts +21 -0
- package/dist/services/acode-bg-manager.d.ts +21 -0
- package/dist/services/acode-package.d.ts +10 -0
- package/dist/services/acode-package.js +1 -1
- package/dist/services/agent-capability-sync.d.ts +26 -0
- package/dist/services/agent-capability-sync.js +1 -1
- package/dist/services/agent-event-store.d.ts +20 -0
- package/dist/services/agent-ownership.d.ts +58 -0
- package/dist/services/agent-ownership.js +3 -0
- package/dist/services/agent-process-manager.d.ts +154 -0
- package/dist/services/agent-pty-manager.d.ts +37 -0
- package/dist/services/agent-startup-memory.d.ts +34 -0
- package/dist/services/agent-startup-memory.js +1 -1
- package/dist/services/ai-config-service.d.ts +26 -52
- package/dist/services/ai-config-service.js +1 -3
- package/dist/services/ai-source-apply.d.ts +7 -15
- package/dist/services/ai-source-apply.js +1 -1
- package/dist/services/auto-register.d.ts +165 -1
- package/dist/services/auto-register.js +1 -1
- package/dist/services/aws-client-agent-mcp.d.ts +14 -0
- package/dist/services/aws-client-agent-mcp.js +2 -2
- package/dist/services/bridge-package-publish-hooks.d.ts +14 -0
- package/dist/services/bridge-pairing.d.ts +82 -0
- package/dist/services/bridge-pairing.js +2 -0
- package/dist/services/bridge-temp-files.d.ts +29 -0
- package/dist/services/browser-session-manager.d.ts +71 -0
- package/dist/services/capability-config.d.ts +60 -15
- package/dist/services/capability-config.js +2 -2
- package/dist/services/change-cache-retention.d.ts +9 -0
- package/dist/services/changelog.d.ts +9 -0
- package/dist/services/cli-commands.d.ts +82 -0
- package/dist/services/cli-commands.js +6 -6
- package/dist/services/connection-key-rotation.d.ts +27 -0
- package/dist/services/connection-key-rotation.js +2 -0
- package/dist/services/debug-mount.d.ts +49 -0
- package/dist/services/desktop-mcp-manager.d.ts +103 -1
- package/dist/services/desktop-mcp-manager.js +1 -1
- package/dist/services/event-delta-pusher.d.ts +15 -0
- package/dist/services/fileSnapshotStore.d.ts +33 -0
- package/dist/services/gitignore.d.ts +9 -0
- package/dist/services/instance-ai-config-service.d.ts +9 -0
- package/dist/services/instance-ai-config-service.js +1 -1
- package/dist/services/instance-features.d.ts +127 -0
- package/dist/services/instance-features.js +1 -1
- package/dist/services/instance-init-service.d.ts +3 -0
- package/dist/services/instance-init-service.js +1 -1
- package/dist/services/instance-state.d.ts +23 -0
- package/dist/services/jdk-scanner.d.ts +15 -0
- package/dist/services/launch-manager.d.ts +138 -0
- package/dist/services/launch-metrics.d.ts +42 -0
- package/dist/services/launch-streams.d.ts +19 -0
- package/dist/services/lifecycle-state.d.ts +5 -0
- package/dist/services/log-retention.d.ts +38 -0
- package/dist/services/lsp/install-manager.d.ts +55 -0
- package/dist/services/lsp/install-manager.js +2 -0
- package/dist/services/lsp/provider-registry.d.ts +108 -0
- package/dist/services/lsp/provider-registry.js +2 -0
- package/dist/services/lsp/uri-rewrite.d.ts +44 -0
- package/dist/services/lsp/uri-rewrite.js +2 -0
- package/dist/services/lsp-stdio-bridge.d.ts +41 -4
- package/dist/services/lsp-stdio-bridge.js +3 -3
- package/dist/services/mcp-deploy.d.ts +45 -4
- package/dist/services/mcp-deploy.js +4 -4
- package/dist/services/mcp-env-injector.d.ts +52 -0
- package/dist/services/mcp-launch-binding-queue.d.ts +12 -0
- package/dist/services/mcp-package.d.ts +22 -0
- package/dist/services/mcp-package.js +1 -1
- package/dist/services/mcp-probe-client.d.ts +19 -0
- package/dist/services/mcp-probe-client.js +1 -1
- package/dist/services/open-doc-events.d.ts +22 -0
- package/dist/services/open-doc-registry.d.ts +35 -0
- package/dist/services/orphan-monitor.d.ts +43 -0
- package/dist/services/panel-auth.d.ts +24 -0
- package/dist/services/panel-env.d.ts +28 -0
- package/dist/services/plugin-deployment.d.ts +34 -1
- package/dist/services/plugin-deployment.js +2 -2
- package/dist/services/plugin-event-buffer.d.ts +21 -0
- package/dist/services/plugin-fs.d.ts +11 -0
- package/dist/services/plugin-handler-adapter.d.ts +13 -0
- package/dist/services/plugin-listener-runner.d.ts +10 -0
- package/dist/services/plugin-loader.d.ts +15 -0
- package/dist/services/plugin-manager.d.ts +95 -9
- package/dist/services/plugin-manager.js +4 -4
- package/dist/services/plugin-manifest.d.ts +14 -0
- package/dist/services/plugin-package.d.ts +13 -0
- package/dist/services/plugin-runtime.d.ts +15 -0
- package/dist/services/port-detector.d.ts +15 -0
- package/dist/services/process-detail.d.ts +3 -0
- package/dist/services/process-detector.d.ts +132 -0
- package/dist/services/process-registry.d.ts +120 -0
- package/dist/services/process-top.d.ts +6 -0
- package/dist/services/request-identity.d.ts +77 -0
- package/dist/services/request-identity.js +2 -0
- package/dist/services/request-invalid-dump.d.ts +4 -0
- package/dist/services/ring-buffer.d.ts +33 -0
- package/dist/services/runtime-binding.d.ts +56 -4
- package/dist/services/runtime-binding.js +4 -4
- package/dist/services/runtime-lifecycle-policy.d.ts +17 -0
- package/dist/services/runtime-resources-snapshot.d.ts +26 -0
- package/dist/services/sdk-tool-file-change-recorder.d.ts +9 -0
- package/dist/services/session-output.d.ts +63 -0
- package/dist/services/session-output.js +3 -3
- package/dist/services/skill-manager.d.ts +42 -5
- package/dist/services/skill-manager.js +3 -3
- package/dist/services/snapshot-retention.d.ts +23 -0
- package/dist/services/startup-config-wizard.d.ts +7 -1
- package/dist/services/startup-config-wizard.js +10 -10
- package/dist/services/system-metrics.d.ts +3 -0
- package/dist/services/tech-stack-scanner.d.ts +12 -0
- package/dist/services/terminal-persistence.d.ts +43 -0
- package/dist/services/tool-installer.d.ts +12 -0
- package/dist/services/tunnel-client.d.ts +57 -2
- package/dist/services/tunnel-client.js +1 -1
- package/dist/services/update-log.d.ts +6 -0
- package/dist/services/update-notifier.d.ts +17 -0
- package/dist/services/update-notifier.js +2 -2
- package/dist/services/user-scope.d.ts +115 -0
- package/dist/services/user-scope.js +2 -0
- package/dist/services/windows-service-manager.d.ts +12 -0
- package/dist/services/workspace-files.d.ts +64 -0
- package/dist/services/workspace-index/index-manager.d.ts +46 -0
- package/dist/services/workspace-index/index-manager.js +2 -0
- package/dist/services/workspace-index/indexer.d.ts +15 -0
- package/dist/services/workspace-index/indexer.js +2 -0
- package/dist/services/workspace-index/query.d.ts +74 -0
- package/dist/services/workspace-index/query.js +5 -0
- package/dist/services/workspace-index/resolver.d.ts +26 -0
- package/dist/services/workspace-index/resolver.js +2 -0
- package/dist/services/workspace-index/types.d.ts +89 -0
- package/dist/services/workspace-index/types.js +2 -0
- package/dist/services/workspace-watch.d.ts +4 -0
- package/dist/services/workspaceTaskChangeWatcher.d.ts +49 -0
- package/dist/services/workspaceTaskChangeWatcher.js +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/utils/config-write-queue.d.ts +11 -0
- package/dist/utils/env-safety.d.ts +21 -0
- package/dist/utils/file-utils.d.ts +15 -0
- package/dist/utils/instance-ai-config-debug-logger.d.ts +15 -0
- package/dist/utils/lifecycle-log.d.ts +5 -0
- package/dist/utils/logger.d.ts +13 -0
- package/dist/utils/logger.js +2 -1
- package/dist/utils/npm-version.d.ts +10 -0
- package/dist/utils/path-utils.d.ts +12 -0
- package/dist/utils/scheduler-url.d.ts +18 -0
- package/dist/utils/scheduler-url.js +2 -0
- package/dist/utils/sdk-package-loader.d.ts +13 -0
- package/dist/utils/sdk-package-loader.js +1 -1
- package/dist/utils/target-identity.d.ts +31 -0
- package/dist/utils/target-identity.js +2 -0
- package/dist/utils/validation.d.ts +17 -0
- package/dist/utils/yaml-utils.d.ts +48 -0
- package/package/acode/dist/__tests__/summary-request-helper.d.ts +10 -0
- package/package/acode/dist/ask-user-question-tool.d.ts +17 -0
- package/package/acode/dist/await-complete-tool.d.ts +12 -0
- package/package/acode/dist/background-command-manager.d.ts +105 -0
- package/package/acode/dist/background-command-store.d.ts +27 -0
- package/package/acode/dist/background-command-tools.d.ts +8 -0
- package/package/acode/dist/background-output-ringbuffer.d.ts +15 -0
- package/package/acode/dist/built-in-file-tools.d.ts +65 -0
- package/package/acode/dist/built-in-symbols-tool.d.ts +3 -0
- package/package/acode/dist/builtins/commandArtifacts.d.ts +3 -0
- package/package/acode/dist/builtins/shellCommandPreparation.d.ts +17 -0
- package/package/acode/dist/builtins/shellCommandRunner.d.ts +4 -0
- package/package/acode/dist/builtins/shellOutputDecoder.d.ts +15 -0
- package/package/acode/dist/cache-control.d.ts +45 -0
- package/package/acode/dist/commands/commandLoader.d.ts +3 -0
- package/package/acode/dist/commands/commandParser.d.ts +3 -0
- package/package/acode/dist/commands/commandRegistry.d.ts +3 -0
- package/package/acode/dist/compaction.d.ts +354 -0
- package/package/acode/dist/config.d.ts +3 -0
- package/package/acode/dist/context-overflow.d.ts +32 -0
- package/package/acode/dist/fs-utils.d.ts +18 -0
- package/package/acode/dist/hooks/hookBus.d.ts +3 -0
- package/package/acode/dist/image-utils.d.ts +35 -0
- package/package/acode/dist/index.d.ts +1 -0
- package/package/acode/dist/index.js +1 -1
- package/package/acode/dist/mcpToolNames.d.ts +32 -0
- package/package/acode/dist/microcompact.d.ts +53 -0
- package/package/acode/dist/parsers/ast-cache.d.ts +41 -0
- package/package/acode/dist/parsers/file-index.d.ts +83 -0
- package/package/acode/dist/parsers/file-index.js +4 -0
- package/package/acode/dist/parsers/language-detector.d.ts +4 -0
- package/package/acode/dist/parsers/tree-sitter-loader.d.ts +12 -0
- package/package/acode/dist/parsers/types.d.ts +11 -0
- package/package/acode/dist/paths.d.ts +14 -0
- package/package/acode/dist/plugin-types.d.ts +34 -0
- package/package/acode/dist/read-file-state.d.ts +15 -0
- package/package/acode/dist/runtime-environment.d.ts +16 -0
- package/package/acode/dist/runtime.d.ts +824 -9
- package/package/acode/dist/runtime.js +21 -21
- package/package/acode/dist/skill-tool.d.ts +20 -0
- package/package/acode/dist/sub-agent-manager.d.ts +169 -0
- package/package/acode/dist/sub-agent-manager.js +1 -1
- package/package/acode/dist/sub-agent-store.d.ts +50 -0
- package/package/acode/dist/sub-agent-tools.d.ts +15 -0
- package/package/acode/dist/sub-agent-types.d.ts +13 -0
- package/package/acode/dist/terminal-tool.d.ts +15 -0
- package/package/acode/dist/terminal-types.d.ts +10 -0
- package/package/acode/dist/todo-store.d.ts +15 -0
- package/package/acode/dist/token-estimator.d.ts +17 -0
- package/package/acode/dist/tool-allocation.d.ts +113 -0
- package/package/acode/dist/tool-concurrency/index.d.ts +8 -0
- package/package/acode/dist/tool-concurrency/observability.d.ts +32 -0
- package/package/acode/dist/tool-concurrency/resource-lock.d.ts +30 -0
- package/package/acode/dist/tool-concurrency/scheduler.d.ts +19 -0
- package/package/acode/dist/tool-concurrency/types.d.ts +57 -0
- package/package/acode/dist/tool-group-manager.d.ts +195 -0
- package/package/acode/dist/tool-group-manager.js +4 -4
- package/package/acode/dist/types.d.ts +179 -0
- package/package/aws-client-agent-mcp/README.md +130 -215
- package/package/aws-client-agent-mcp/dist/ability-market-tools.d.ts +57 -0
- package/package/aws-client-agent-mcp/dist/agent-client.d.ts +277 -3
- package/package/aws-client-agent-mcp/dist/agent-client.js +1 -1
- package/package/aws-client-agent-mcp/dist/config.d.ts +18 -0
- package/package/aws-client-agent-mcp/dist/constants.d.ts +2 -0
- package/package/aws-client-agent-mcp/dist/context-manager.d.ts +70 -0
- package/package/aws-client-agent-mcp/dist/http-client.d.ts +61 -0
- package/package/aws-client-agent-mcp/dist/index.d.ts +10 -0
- package/package/aws-client-agent-mcp/dist/logger.d.ts +24 -0
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +606 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.js +4 -4
- package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +158 -0
- package/package/aws-client-agent-mcp/dist/mcp-tools.js +38 -22
- package/package/aws-client-agent-mcp/dist/memory-store.d.ts +81 -0
- package/package/aws-client-agent-mcp/dist/memory-tools.d.ts +18 -0
- package/package/aws-client-agent-mcp/dist/message-buffer.d.ts +86 -0
- package/package/aws-client-agent-mcp/dist/messageContent.d.ts +24 -0
- package/package/aws-client-agent-mcp/dist/office/office-equation.d.ts +19 -0
- package/package/aws-client-agent-mcp/dist/office/office-image.d.ts +18 -0
- package/package/aws-client-agent-mcp/dist/office/office-workspace.d.ts +29 -0
- package/package/aws-client-agent-mcp/dist/parent-lifecycle.d.ts +18 -0
- package/package/aws-client-agent-mcp/dist/runtime-launch-binding.d.ts +6 -0
- package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts +4 -0
- package/package/aws-client-agent-mcp/dist/status-reporter.d.ts +41 -0
- package/package/aws-client-agent-mcp/dist/tool-groups.d.ts +136 -0
- package/package/aws-client-agent-mcp/dist/types.d.ts +123 -0
- package/package/aws-client-agent-mcp/dist/watchdog.d.ts +7 -0
- package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +108 -0
- package/package.json +1 -1
|
@@ -1,4 +1,15 @@
|
|
|
1
1
|
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
2
13
|
import { type BrowserPool } from "../browser/browser-pool.js";
|
|
3
14
|
import { createBuiltInBrowserTools } from "../browser/built-in-browser-tools.js";
|
|
4
15
|
import type { AddListenerParams, UpdateListenerParams } from "../browser/page-listener-manager.js";
|
|
@@ -13,28 +24,65 @@ interface BrowserSessionManagerState {
|
|
|
13
24
|
wsHost: string;
|
|
14
25
|
}
|
|
15
26
|
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
16
32
|
export declare function startBrowserSessionManager(poolConfig?: Partial<BrowserPoolConfig>, wsConfig?: Partial<WsServerConfig>): Promise<BrowserSessionManagerState>;
|
|
17
33
|
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
18
40
|
export declare function getBrowserWsUrl(agentId: string, browserId?: string): string | null;
|
|
19
41
|
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
20
45
|
export declare function listBrowserWsUrls(agentId: string): Array<{
|
|
21
46
|
browserId: string;
|
|
22
47
|
title: string;
|
|
23
48
|
wsUrl: string;
|
|
24
49
|
}>;
|
|
25
50
|
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
26
54
|
export declare function getBrowserWsPort(): number | null;
|
|
27
55
|
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
28
66
|
export declare function getBrowserTools(agentId: string | undefined, scopeKey?: string, ssrfConfig?: SsrfConfig): Promise<ReturnType<typeof createBuiltInBrowserTools>>;
|
|
29
67
|
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
30
71
|
export declare function closeBrowserSession(agentId: string): Promise<void>;
|
|
31
72
|
|
|
73
|
+
|
|
74
|
+
|
|
32
75
|
export declare function closeBrowserSessionById(agentId: string, browserId?: string): Promise<void>;
|
|
33
76
|
|
|
77
|
+
|
|
78
|
+
|
|
34
79
|
export declare function disposeBrowserSessionManager(): Promise<void>;
|
|
35
80
|
|
|
36
81
|
export declare function isBrowserSessionManagerStarted(): boolean;
|
|
37
82
|
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
38
86
|
export declare function addBrowserListener(agentId: string, browserId: string, params: AddListenerParams): Promise<PageListener>;
|
|
39
87
|
|
|
40
88
|
export declare function updateBrowserListener(agentId: string, browserId: string, listenerId: ListenerId, params: Omit<UpdateListenerParams, "listenerId">): Promise<PageListener | undefined>;
|
|
@@ -45,11 +93,34 @@ export declare function toggleBrowserListener(agentId: string, browserId: string
|
|
|
45
93
|
|
|
46
94
|
export declare function listBrowserListeners(agentId: string, browserId: string): Promise<PageListenerInfo[]>;
|
|
47
95
|
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
48
100
|
export declare function collectAgentListenerEvents(agentId: string): Promise<ListenerTriggerEvent[]>;
|
|
49
101
|
|
|
50
102
|
export declare function registerListenerWakeHook(agentId: string | undefined, fn: () => void): void;
|
|
51
103
|
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
|
|
52
108
|
export declare function unregisterListenerWakeHook(agentId: string | undefined, fn?: () => void): void;
|
|
53
109
|
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
54
125
|
export declare function buildListenerInjectionPrompt(events: ListenerTriggerEvent[]): string;
|
|
55
126
|
export {};
|
|
@@ -1,29 +1,74 @@
|
|
|
1
|
-
|
|
1
|
+
import { type CapabilityType, type UserScope } from "./user-scope.js";
|
|
2
|
+
export type { CapabilityType } from "./user-scope.js";
|
|
2
3
|
export declare const CAPABILITY_TYPES: readonly CapabilityType[];
|
|
3
|
-
export declare function setDeployedDefaultsProvider(type: CapabilityType, provider: (() => Record<string, boolean>) | null): void;
|
|
4
|
+
export declare function setDeployedDefaultsProvider(type: CapabilityType, provider: ((scope: UserScope | null) => Record<string, boolean>) | null): void;
|
|
4
5
|
|
|
5
|
-
export declare function getDefaults(type: CapabilityType): Record<string, boolean>;
|
|
6
6
|
|
|
7
|
-
export declare function getOverrides(agentId: string, type: CapabilityType): Record<string, boolean>;
|
|
8
7
|
|
|
9
|
-
export declare function getInherited(agentId: string, type: CapabilityType): Record<string, boolean>;
|
|
10
8
|
|
|
11
|
-
export declare function
|
|
9
|
+
export declare function getDefaults(scope: UserScope | null, type: CapabilityType): Record<string, boolean>;
|
|
12
10
|
|
|
13
|
-
export declare function getEffectiveSource(agentId: string, type: CapabilityType, name: string): "agent" | "inherited" | "bridge" | "deployed" | "default";
|
|
14
11
|
|
|
15
|
-
export declare function setDefault(type: CapabilityType, name: string, value: boolean | null): boolean;
|
|
16
12
|
|
|
17
|
-
export declare function setOverride(agentId: string, type: CapabilityType, name: string, value: boolean | null): boolean;
|
|
18
13
|
|
|
19
|
-
export declare function
|
|
14
|
+
export declare function getOverrides(scope: UserScope | null, agentId: string, type: CapabilityType): Record<string, boolean>;
|
|
20
15
|
|
|
21
|
-
export declare function listOverrideAgents(type: CapabilityType): string[];
|
|
22
16
|
|
|
23
|
-
export declare function reconcileDefaultsFromDeployed(type: CapabilityType): number;
|
|
24
17
|
|
|
25
|
-
export declare function hasAnyDefault(type: CapabilityType): boolean;
|
|
26
18
|
|
|
27
|
-
export declare function
|
|
19
|
+
export declare function getInherited(scope: UserScope | null, agentId: string, type: CapabilityType): Record<string, boolean>;
|
|
28
20
|
|
|
29
|
-
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
export declare function getEffective(scope: UserScope | null, agentId: string, type: CapabilityType, name: string, fallback?: boolean): boolean;
|
|
29
|
+
|
|
30
|
+
export declare function getEffectiveSource(scope: UserScope | null, agentId: string, type: CapabilityType, name: string): "agent" | "inherited" | "bridge" | "deployed" | "default";
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
export declare function setDefault(scope: UserScope, type: CapabilityType, name: string, value: boolean | null): boolean;
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
export declare function setOverride(scope: UserScope, agentId: string, type: CapabilityType, name: string, value: boolean | null): boolean;
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
export declare function setInherited(scope: UserScope, agentId: string, type: CapabilityType, map: Record<string, boolean> | null): boolean;
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
export declare function listOverrideAgents(scope: UserScope | null, type: CapabilityType): string[];
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
export declare function reconcileDefaultsFromDeployed(scope: UserScope, type: CapabilityType): number;
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
export declare function hasAnyDefault(scope: UserScope | null, type: CapabilityType): boolean;
|
|
67
|
+
|
|
68
|
+
export declare function getEffectiveMap(scope: UserScope | null, agentId: string, type: CapabilityType, names: Iterable<string>): Record<string, boolean>;
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
export declare function setInheritedMap(scope: UserScope, agentId: string, byType: Partial<Record<CapabilityType, Record<string, boolean>>> | null): CapabilityType[];
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{existsSync as
|
|
2
|
-
`)}function
|
|
1
|
+
import{existsSync as A,readFileSync as x,readdirSync as B}from"node:fs";import h from"node:path";import{getBridgeTemplateMcpDir as P,getBridgeTemplatePluginsDir as W,getBridgeTemplateSkillsDir as C}from"../config.js";import{atomicWriteFileSync as $,sanitizeAgentId as z}from"../utils/file-utils.js";import{getAgentOwner as F}from"./agent-ownership.js";import{getUserCapabilityAgentFile as R,getUserCapabilityDefaultsFile as U,isLegacyFallbackDisabled as v,scopeEquals as Y}from"./user-scope.js";const J=["skills","mcp","plugins"];function a(r,e){if(e){const t=F(e);if(t)return t}return r}function N(r,e){if(!e)return;const t=F(e);if(t&&!Y(t,r))throw new Error("agent-ownership-mismatch")}function j(r){switch(r){case"skills":return C();case"mcp":return P();case"plugins":return W();default:throw new Error(`\u672A\u77E5\u80FD\u529B\u7C7B\u578B: ${String(r)}`)}}function k(r){return h.join(j(r),"config.json")}function O(r,e){return h.join(j(r),"agents",`${z(e)}.json`)}function E(r,e){return U(r,e)}function g(r,e,t){return R(r,e,t)}const y=new Map;function ie(r,e){e?y.set(r,e):y.delete(r)}function S(r,e,t){const n=y.get(r);if(n)try{return n(t)[e]}catch{return}}function b(r){try{if(!A(r))return{};const e=JSON.parse(x(r,"utf8"));return!e||typeof e!="object"||Array.isArray(e)?{}:e}catch{return{}}}function M(r,e){$(r,`${JSON.stringify(e,null,2)}
|
|
2
|
+
`)}function l(r,e){const t=e[r];if(!t||typeof t!="object"||Array.isArray(t))return{};const n={};for(const[i,o]of Object.entries(t))i.trim()&&typeof o=="boolean"&&(n[i.trim()]=o);return n}function _(r,e,t,n){const i={...l(e,r)};n==null?delete i[t]:i[t]=n,r[e]=i}function q(r){try{if(!A(r))return{};const e=JSON.parse(x(r,"utf8"));return!e||typeof e!="object"||Array.isArray(e)?{}:e}catch{return{}}}function c(r,e,t){const n=q(r),i=n[t];return i&&typeof i=="object"&&!Array.isArray(i)?l(e,i):t==="overrides"?l(e,n):{}}function T(r,e,t,n){const i={};for(const o of["overrides","inherited"]){const s=o===t?n:c(r,e,o),f={};for(const u of J){const d=u===e?s:c(r,u,o);f[u]=d}i[o]=f}M(r,i)}function p(r,e){const t={};return r?(Object.assign(t,l(e,b(E(r,e)))),t):(v()||Object.assign(t,l(e,b(k(e)))),t)}function L(r,e,t){if(!e)return{};const n=a(r,e);return n?c(g(n,t,e),t,"overrides"):v()?{}:c(O(t,e),t,"overrides")}function V(r,e,t){if(!e)return{};const n=a(r,e);return n?c(g(n,t,e),t,"inherited"):v()?{}:c(O(t,e),t,"inherited")}function G(r,e,t,n,i){const o=a(r,e),f=L(o,e,t)[n];if(f!==void 0)return f;const d=V(o,e,t)[n];if(d!==void 0)return d;const D=p(o,t)[n];if(D!==void 0)return D;if(i!==void 0)return i;const m=S(t,n,o);if(m!==void 0)return m;if(o&&!v()){const w=H(e,t,n);if(w!==void 0)return w}return!1}function H(r,e,t){if(r){const i=c(O(e,r),e,"overrides")[t];if(i!==void 0)return i;const o=c(O(e,r),e,"inherited")[t];if(o!==void 0)return o}const n=l(e,b(k(e)))[t];return n!==void 0?n:S(e,t,null)}function oe(r,e,t,n){const i=a(r,e);return L(i,e,t)[n]!==void 0?"agent":V(i,e,t)[n]!==void 0?"inherited":p(i,t)[n]!==void 0?"bridge":S(t,n,i)!==void 0?"deployed":"default"}function K(r,e,t,n){const i=E(r,e),o=b(i),s=l(e,o);_(o,e,t,n);const f=l(e,o);return JSON.stringify(s)===JSON.stringify(f)?!1:(M(i,o),!0)}function fe(r,e,t,n,i){if(!e)return!1;N(r,e);const o=a(r,e)??r,s=g(o,t,e),f=c(s,t,"overrides"),u={...f};return i==null?delete u[n]:u[n]=i,JSON.stringify(f)===JSON.stringify(u)?!1:(T(s,t,"overrides",u),!0)}function Q(r,e,t,n){if(!e)return!1;N(r,e);const i=a(r,e)??r,o=g(i,t,e),s=c(o,t,"inherited"),f={};if(n&&typeof n=="object"&&!Array.isArray(n))for(const[u,d]of Object.entries(n))u.trim()&&typeof d=="boolean"&&(f[u.trim()]=d);return JSON.stringify(s)===JSON.stringify(f)?!1:(T(o,t,"inherited",f),!0)}function se(r,e){const t=r?h.dirname(g(r,e,"_probe")):h.join(j(e),"agents");try{return A(t)?B(t).filter(n=>n.endsWith(".json")&&!n.startsWith(".")).map(n=>n.slice(0,-5)):[]}catch{return[]}}function ue(r,e){const t=y.get(e);if(!t)return 0;let n=0;const i=p(r,e),o=t(r)??{};for(const s of Object.keys(o))s in i||o[s]===!0&&(K(r,e,s,!1),n++);return n}function ce(r,e){return Object.keys(p(r,e)).length>0}function le(r,e,t,n){const i={};for(const o of n)i[o]=G(r,e,t,o);return i}function de(r,e,t){const n=[];if(!e)return n;for(const i of J){const o=t&&typeof t=="object"?t[i]??{}:{};Q(r,e,i,o)&&n.push(i)}return n}export{J as CAPABILITY_TYPES,p as getDefaults,G as getEffective,le as getEffectiveMap,oe as getEffectiveSource,V as getInherited,L as getOverrides,ce as hasAnyDefault,se as listOverrideAgents,ue as reconcileDefaultsFromDeployed,K as setDefault,ie as setDeployedDefaultsProvider,Q as setInherited,de as setInheritedMap,fe as setOverride};
|
|
3
3
|
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
2
7
|
export declare function readChangelog(version: string): Promise<{
|
|
3
8
|
found: boolean;
|
|
4
9
|
content: string;
|
|
5
10
|
path: string;
|
|
6
11
|
}>;
|
|
7
12
|
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
8
17
|
export declare function appendChangelogSection(version: string, body: string): Promise<void>;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type PairBridgeOptions, type PairBridgeResult } from "./bridge-pairing.js";
|
|
1
2
|
import type { StartupConfigWizardResult } from "./startup-config-wizard.js";
|
|
2
3
|
import { type WindowsServiceManager } from "./windows-service-manager.js";
|
|
3
4
|
export interface CliCommandResult {
|
|
@@ -29,6 +30,9 @@ export interface CliCommandOptions {
|
|
|
29
30
|
|
|
30
31
|
launchdLogPath?: string;
|
|
31
32
|
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
32
36
|
launchdDomainTarget?: string;
|
|
33
37
|
|
|
34
38
|
findRunningBridgeProcesses?: (platform: NodeJS.Platform) => number[];
|
|
@@ -37,32 +41,110 @@ export interface CliCommandOptions {
|
|
|
37
41
|
|
|
38
42
|
prompt?: (question: string) => Promise<string>;
|
|
39
43
|
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
40
48
|
globalModulePath?: () => string | null;
|
|
41
49
|
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
42
54
|
queryWindowsServiceState?: (serviceName: string) => string | null;
|
|
43
55
|
|
|
56
|
+
pair?: (options: PairBridgeOptions) => Promise<PairBridgeResult>;
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
44
62
|
assumeYes?: boolean;
|
|
45
63
|
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
46
69
|
skipKill?: boolean;
|
|
47
70
|
}
|
|
48
71
|
export declare function readPackageVersion(packageRoot?: string): string;
|
|
49
72
|
|
|
73
|
+
|
|
74
|
+
|
|
50
75
|
export declare function createSystemdUnitContent(executablePath: string): string;
|
|
51
76
|
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
52
89
|
export declare function createLaunchdPlistContent(executablePath: string, options?: {
|
|
53
90
|
userHomeDir?: string;
|
|
54
91
|
logPath?: string;
|
|
55
92
|
}): string;
|
|
56
93
|
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
|
|
57
107
|
export declare function defaultFindRunningBridgeProcesses(platform: NodeJS.Platform): number[];
|
|
58
108
|
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
|
|
59
118
|
export declare function defaultKillBridgeProcess(pid: number, platform: NodeJS.Platform, waitTimeoutMs?: number, waitIntervalMs?: number): void;
|
|
60
119
|
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
|
|
61
124
|
export declare function defaultProcessIsGone(pid: number, platform: NodeJS.Platform): boolean;
|
|
62
125
|
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
63
133
|
export declare function waitForProcessGone(isProcessGone: (pid: number, platform: NodeJS.Platform) => boolean, pid: number, platform: NodeJS.Platform, timeoutMs?: number, intervalMs?: number): boolean;
|
|
64
134
|
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
65
139
|
export declare function removeDirWithRetry(targetDir: string, retries?: number, baseDelayMs?: number): void;
|
|
66
140
|
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
|
|
67
149
|
export declare function removeUpdateFseventsResidue(globalRoot: string): void;
|
|
68
150
|
export declare function handleCliCommand(options?: CliCommandOptions): Promise<CliCommandResult>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{spawnSync as
|
|
2
|
-
`)}function
|
|
3
|
-
`)}function
|
|
4
|
-
`)}function y(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function
|
|
5
|
-
`)}function C(e,r){return e("systemctl",r)}function x(e,r){return r.error?`[runtime-bridge] ${e}\u5931\u8D25: ${r.error.message}`:`[runtime-bridge] ${e}\u5931\u8D25\uFF0Csystemctl \u9000\u51FA\u7801: ${r.status??"unknown"}`}function o(e){return!e.error&&e.status===0}function $(e,r){return e==="linux"?!0:(r("[runtime-bridge] service \u547D\u4EE4\u4EC5\u652F\u6301 Linux systemd \u73AF\u5883\u3002"),!1)}function
|
|
6
|
-
npm install -g aws-runtime-bridge`),{handled:!0,exitCode:1}}async function j(e){const r=e.windowsServiceManager;if(!r&&!ae())return ye(e.stderr);const t=e.windowsServiceLogPath||Y,i=c.dirname(e.executablePath),s=W.homedir();try{await(r||se()).install({name:K,description:"awsb runtime bridge",script:e.executablePath,workingDirectory:i,env:[{name:"AWS_BRIDGE_SKIP_SETUP",value:"true"},{name:"AWS_RUNTIME_HOME_DIR",value:s}],logpath:A()})}catch(u){const m=u instanceof Error?u:new Error(String(u));return e.stderr(`[runtime-bridge] \u5B89\u88C5 Windows \u670D\u52A1\u5931\u8D25: ${m.message}`),{handled:!0,exitCode:1}}const n=e.runCommand("sc.exe",["start",l]);if(!o(n))return e.stderr(`[runtime-bridge] \u542F\u52A8 Windows \u670D\u52A1\u5931\u8D25: ${n.error?.message??`\u9000\u51FA\u7801 ${n.status??"unknown"}`}`),{handled:!0,exitCode:n.status??1};const a=["failure",l,"reset=","86400","actions=","restart/5000/restart/10000/restart/30000"],d=e.runCommand("sc.exe",a);return o(d)?e.stdout("[runtime-bridge] \u5DF2\u914D\u7F6E awsb \u670D\u52A1\u5931\u8D25\u81EA\u52A8\u91CD\u542F\uFF085s/10s/30s\uFF09\u3002"):e.stderr(`[runtime-bridge] \u914D\u7F6E\u670D\u52A1\u5931\u8D25\u81EA\u52A8\u91CD\u542F\u672A\u751F\u6548\uFF08\u53EF\u5FFD\u7565\uFF09: ${d.error?.message??`\u9000\u51FA\u7801 ${d.status??"unknown"}`}`),e.stdout(`[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u5B89\u88C5\u5E76\u5DF2\u542F\u52A8\uFF08\u65E5\u5FD7: ${t}\uFF09\u3002`),{handled:!0,exitCode:0}}function Pe(e){const r=i=>e.runCommand("sc.exe",i);r(["stop",l]);const t=r(["delete",l]);return o(t)?(e.stdout("[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u5378\u8F7D\u3002"),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u5378\u8F7D Windows \u670D\u52A1\u5931\u8D25: ${t.error?.message??`\u9000\u51FA\u7801 ${t.status??"unknown"}`}`),{handled:!0,exitCode:t.status??1})}async function Ee(e){e.runCommand("sc.exe",["stop",l]);const r=e.queryWindowsServiceState||O;return J(r,l)||e.stdout("[runtime-bridge] \u7B49\u5F85 Windows \u670D\u52A1\u505C\u6B62\u8D85\u65F6\uFF0C\u4ECD\u5C1D\u8BD5\u542F\u52A8\uFF08\u53EF\u80FD\u62A5 1056\uFF09\u3002"),X(e,"\u91CD\u542F")}async function $e(e){return X(e,"\u542F\u52A8")}const pe=2,Re=1056;async function X(e,r){const t=e.runCommand("sc.exe",["start",l]);if(o(t))return e.stdout(`[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2${r}\u3002`),{handled:!0,exitCode:0};if(t.status===Re)return e.stdout(`[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u5728\u8FD0\u884C\u4E2D\uFF08\u65E0\u9700${r}\uFF09\u3002`),{handled:!0,exitCode:0};if(t.status===pe){e.stdout("[runtime-bridge] \u68C0\u6D4B\u5230 Windows \u670D\u52A1\u4E8C\u8FDB\u5236\u6587\u4EF6\u4E22\u5931\uFF08winsw.exe\uFF09\uFF0C\u6B63\u5728\u91CD\u5EFA..."),e.runCommand("sc.exe",["delete",l]);try{const i=await j(e);return i.exitCode!==0&&e.stderr(`[runtime-bridge] ${r} Windows \u670D\u52A1\u5931\u8D25\u4E14\u81EA\u52A8\u91CD\u5EFA\u5931\u8D25\u3002\u8BF7\u624B\u52A8\u6267\u884C \`awsb service uninstall && awsb service install\` \u4FEE\u590D\u3002`),i}catch(i){const s=i instanceof Error?i:new Error(String(i));return e.stderr(`[runtime-bridge] ${r} Windows \u670D\u52A1\u5931\u8D25\u4E14\u81EA\u52A8\u91CD\u5EFA\u5F02\u5E38: ${s.message}\u3002\u8BF7\u624B\u52A8\u6267\u884C \`awsb service uninstall && awsb service install\` \u4FEE\u590D\u3002`),{handled:!0,exitCode:1}}}return e.stderr(`[runtime-bridge] ${r} Windows \u670D\u52A1\u5931\u8D25: ${t.error?.message??`\u9000\u51FA\u7801 ${t.status??"unknown"}`}`),{handled:!0,exitCode:t.status??1}}function ke(e){const r=e.runCommand("sc.exe",["stop",l]);return o(r)?(e.stdout("[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u505C\u6B62\u3002"),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u505C\u6B62 Windows \u670D\u52A1\u5931\u8D25: ${r.error?.message??`\u9000\u51FA\u7801 ${r.status??"unknown"}`}`),{handled:!0,exitCode:r.status??1})}function De(){return`gui/${process.getuid?.()??0}`}function R(e){return e.launchdDomainTarget||De()}function k(e){return`${e}/${U}`}function D(e,r){return r.error?`[runtime-bridge] ${e}\u5931\u8D25: ${r.error.message}`:`[runtime-bridge] ${e}\u5931\u8D25\uFF0Claunchctl \u9000\u51FA\u7801: ${r.status??"unknown"}`}function We(e){if(!p(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=e.launchdPlistPath||_,t=e.launchdLogPath||M,i=he(e.executablePath,{userHomeDir:W.homedir(),logPath:t});try{I(c.dirname(r),{recursive:!0}),I(c.dirname(t),{recursive:!0}),B(r,i,{encoding:"utf-8",mode:420})}catch(a){const d=a instanceof Error?a:new Error(String(a));return e.stderr(`[runtime-bridge] \u5199\u5165 launchd plist \u5931\u8D25: ${d.message}`),{handled:!0,exitCode:1}}const s=R(e);e.runCommand("launchctl",["bootout",k(s)]);const n=e.runCommand("launchctl",["bootstrap",s,r]);return o(n)?(e.stdout(`[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u5B89\u88C5\u5E76\u5DF2\u542F\u52A8\uFF08\u65E5\u5FD7: ${t}\uFF09\u3002`),{handled:!0,exitCode:0}):(e.stderr(D("\u5B89\u88C5 awsb \u670D\u52A1",n)),{handled:!0,exitCode:n.status??1})}function _e(e){if(!p(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=e.launchdPlistPath||_,t=R(e),i=k(t),s=e.runCommand("launchctl",["bootout",i]);if(s.error)return e.stderr(D("\u5378\u8F7D awsb \u670D\u52A1",s)),{handled:!0,exitCode:1};if(f(r))try{N(r)}catch(n){const a=n instanceof Error?n:new Error(String(n));return e.stderr(`[runtime-bridge] \u5220\u9664 launchd plist \u5931\u8D25: ${a.message}`),{handled:!0,exitCode:1}}else e.stdout("[runtime-bridge] awsb launchd plist \u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u5220\u9664\u3002");return e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u5378\u8F7D\u3002"),{handled:!0,exitCode:0}}function Te(e){if(!p(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=e.launchdPlistPath||_;if(!f(r))return e.stderr("[runtime-bridge] awsb launchd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const t=R(e),i=k(t),s=e.runCommand("launchctl",["kickstart",i]);if(o(s))return e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0};const n=e.runCommand("launchctl",["bootstrap",t,r]);return o(n)?(e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0}):(e.stderr(D("\u542F\u52A8 awsb \u670D\u52A1",n)),{handled:!0,exitCode:n.status??1})}function Ie(e){if(!p(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=R(e),t=e.runCommand("launchctl",["bootout",k(r)]);return o(t)?(e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u505C\u6B62\u3002"),{handled:!0,exitCode:0}):(e.stderr(D("\u505C\u6B62 awsb \u670D\u52A1",t)),{handled:!0,exitCode:t.status??1})}function Ne(e){if(!p(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=e.launchdPlistPath||_;if(!f(r))return e.stderr("[runtime-bridge] awsb launchd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const t=R(e);e.runCommand("launchctl",["bootout",k(t)]);const i=e.runCommand("launchctl",["bootstrap",t,r]);return o(i)?(e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u91CD\u542F\u3002"),{handled:!0,exitCode:0}):(e.stderr(D("\u91CD\u542F awsb \u670D\u52A1",i)),{handled:!0,exitCode:i.status??1})}async function Le(e,r,t,i){const s=e[1];if(!s||s==="-h"||s==="--help"||s==="help")return z(t),{handled:!0,exitCode:s?0:1};const n={stdout:t,stderr:i,runCommand:r.runCommand||T,platform:r.platform||process.platform,serviceUnitPath:r.serviceUnitPath||L,executablePath:r.executablePath||Q(),windowsServiceManager:r.windowsServiceManager,launchdPlistPath:r.launchdPlistPath,launchdLogPath:r.launchdLogPath,launchdDomainTarget:r.launchdDomainTarget,queryWindowsServiceState:r.queryWindowsServiceState||O};return n.platform!=="linux"&&n.platform!=="win32"&&n.platform!=="darwin"?(i("[runtime-bridge] service \u547D\u4EE4\u4EC5\u652F\u6301 Linux systemd\u3001Windows \u670D\u52A1\u4E0E macOS launchd \u73AF\u5883\u3002"),{handled:!0,exitCode:1}):s==="install"?n.platform==="win32"?await j(n):n.platform==="darwin"?We(n):be(n):s==="uninstall"?n.platform==="win32"?Pe(n):n.platform==="darwin"?_e(n):Ce(n):s==="restart"?n.platform==="win32"?Ee(n):n.platform==="darwin"?Ne(n):xe(n):s==="start"?n.platform==="win32"?$e(n):n.platform==="darwin"?Te(n):Se(n):s==="stop"?n.platform==="win32"?ke(n):n.platform==="darwin"?Ie(n):ve(n):(i(`[runtime-bridge] \u672A\u77E5 service \u5B50\u547D\u4EE4: ${s}`),z(t),{handled:!0,exitCode:1})}function Z(e){return e?e.split(/\r?\n/).map(r=>r.trim()).filter(r=>/^\d+$/.test(r)).map(Number):[]}function Ae(e){try{if(e==="win32"){const t=h("powershell",["-NoProfile","-Command",`Get-CimInstance Win32_Process -Filter "Name='node.exe'" | Where-Object { $_.CommandLine -like '*aws-runtime-bridge*' -and $_.ProcessId -ne ${process.pid} } | ForEach-Object { $_.ProcessId }`],{encoding:"utf-8"}),i=Ue(e);return Me([...Z(t.stdout),...i]).filter(s=>s!==process.pid)}const r=h("pgrep",["-f","aws-runtime-bridge"],{encoding:"utf-8"});return Z(r.stdout).filter(t=>t!==process.pid)}catch{return[]}}function Ue(e){if(e!=="win32")return[];try{const r=h("sc.exe",["query",l],{encoding:"utf-8",shell:!0,stdio:["ignore","pipe","ignore"]});if(r.status!==0||!r.stdout)return[];const t=r.stdout.match(/STATE\s*:\s*\d+\s+(\S+)/);if(!t)return[];const i=t[1];if(i!=="RUNNING"&&i!=="START_PENDING"&&i!=="STOP_PENDING")return[];const s=h("tasklist",["/FI","IMAGENAME eq awsb.exe","/FO","CSV","/NH"],{encoding:"utf-8",shell:!0,stdio:["ignore","pipe","ignore"]});return s.status!==0||!s.stdout?[]:s.stdout.split(/\r?\n/).map(n=>n.trim()).filter(n=>n.length>0).map(n=>{const a=n.match(/^"awsb\.exe","(\d+)"/i);return a?Number(a[1]):NaN}).filter(n=>Number.isFinite(n)&&n>0)}catch{return[]}}function Me(e){const r=new Set,t=[];for(const i of e)r.has(i)||(r.add(i),t.push(i));return t}function Fe(e,r,t=1e4,i=250){if(r==="win32"){if(He(e,r)){h("sc.exe",["stop",l],{stdio:"ignore",shell:!0}),J(O,l);return}h("taskkill",["/PID",String(e),"/F","/T"],{stdio:"ignore"}),je(Oe,e,r,t,i);return}h("kill",["-9",String(e)],{stdio:"ignore"})}function Oe(e,r){if(r!=="win32"||!Number.isFinite(e)||e<=0)return!0;try{const t=h("tasklist",["/FI",`PID eq ${e}`,"/NH"],{encoding:"utf-8",stdio:["ignore","pipe","ignore"]});return t.status!==0||!t.stdout?!0:!t.stdout.includes(String(e))}catch{return!0}}function je(e,r,t,i=1e4,s=250){const n=Date.now()+i;for(;Date.now()<n;){if(e(r,t))return!0;F(s)}return e(r,t)}function He(e,r){if(r!=="win32"||!Number.isFinite(e)||e<=0)return!1;try{const t=h("powershell",["-NoProfile","-Command",`(Get-CimInstance Win32_Process -Filter "ProcessId=${e}" -ErrorAction SilentlyContinue).Name`],{encoding:"utf-8",stdio:["ignore","pipe","ignore"]});return t.status!==0||!t.stdout?!1:/^awsb\.exe$/i.test(t.stdout.trim())}catch{return!1}}function Ge(e){if(!process.stdin.isTTY)return Promise.resolve("n");const r=re({input:process.stdin,output:process.stdout});return r.question(e).finally(()=>r.close())}function qe(e,r=3,t=500){let i;for(let s=0;s<=r;s+=1)try{q(e,{recursive:!0,force:!0});return}catch(n){i=n instanceof Error?n:new Error(String(n)),s<r&&F(t*2**s)}throw i??new Error(`\u65E0\u6CD5\u5220\u9664\u76EE\u5F55: ${e}`)}function Be(e){const r=c.join(e,"aws-runtime-bridge","node_modules"),t=c.join(r,"fsevents");if(f(t))try{q(t,{recursive:!0,force:!0})}catch{}const i=c.join(r,".package-lock.json");if(f(i))try{G(i,"utf-8").includes("fsevents")&&N(i)}catch{}}async function Ve(e,r,t){const i=e.runCommand||T,s=e.platform||process.platform,n=e.findRunningBridgeProcesses||Ae,a=e.prompt||Ge,d=e.killBridgeProcess||Fe,u=e.globalModulePath||oe;r("[runtime-bridge] \u6B63\u5728\u66F4\u65B0 aws-runtime-bridge \u5230\u6700\u65B0\u7248\u672C...");let m=!1;if(e.skipKill)m=!0,r("[runtime-bridge] \u5DF2\u6307\u5B9A --no-kill\uFF0C\u8DF3\u8FC7\u8FD0\u884C\u8FDB\u7A0B\u68C0\u6D4B\uFF0C\u5C06\u4EE5 --force \u65B9\u5F0F\u5B89\u88C5\u3002");else{const S=n(s).filter(g=>g!==process.pid);if(S.length>0)if(r(`[runtime-bridge] \u68C0\u6D4B\u5230 aws-runtime-bridge \u6B63\u5728\u8FD0\u884C (PID: ${S.join(", ")})\uFF0C\u66F4\u65B0\u65F6\u8FD9\u4E9B\u8FDB\u7A0B\u53EF\u80FD\u5360\u7528\u6587\u4EF6\u5BFC\u81F4\u8986\u76D6\u5931\u8D25\u3002`),e.assumeYes){r("[runtime-bridge] \u975E\u4EA4\u4E92\u6A21\u5F0F(--yes)\uFF0C\u81EA\u52A8\u5173\u95ED\u4E0A\u8FF0\u8FDB\u7A0B\u4EE5\u7EE7\u7EED\u66F4\u65B0...");for(const g of S)try{d(g,s),r(`[runtime-bridge] \u5DF2\u5173\u95ED\u8FDB\u7A0B PID: ${g}`)}catch(v){const E=v instanceof Error?v:new Error(String(v));t(`[runtime-bridge] \u5173\u95ED\u8FDB\u7A0B PID ${g} \u5931\u8D25: ${E.message}`)}}else{const g=(await a("\u662F\u5426\u5173\u95ED\u4E0A\u8FF0\u8FDB\u7A0B\u4EE5\u7EE7\u7EED\u66F4\u65B0? (y/N) ")).trim().toLowerCase();if(g==="y"||g==="yes")for(const v of S)try{d(v,s),r(`[runtime-bridge] \u5DF2\u5173\u95ED\u8FDB\u7A0B PID: ${v}`)}catch(E){const ee=E instanceof Error?E:new Error(String(E));t(`[runtime-bridge] \u5173\u95ED\u8FDB\u7A0B PID ${v} \u5931\u8D25: ${ee.message}`)}else m=!0,r("[runtime-bridge] \u5DF2\u9009\u62E9\u4E0D\u5173\u95ED\u8FDB\u7A0B\uFF0C\u5C06\u4EE5 --force \u65B9\u5F0F\u5F3A\u5236\u5B89\u88C5\uFF08\u82E5\u6587\u4EF6\u4ECD\u88AB\u5360\u7528\u53EF\u80FD\u4F1A\u6709\u8B66\u544A\uFF09\u3002")}}const w=u();if(w){const S=c.join(w,"aws-runtime-bridge");if(f(S)){r("[runtime-bridge] \u6E05\u7406\u65E7\u7248\u672C\u6B8B\u7559\u76EE\u5F55...");try{qe(S)}catch(g){const v=g instanceof Error?g:new Error(String(g));t(`[runtime-bridge] \u6E05\u7406\u6B8B\u7559\u76EE\u5F55\u5931\u8D25\uFF08\u5C06\u5C1D\u8BD5\u7EE7\u7EED\u5B89\u88C5\uFF09: ${v.message}`),Be(w)}}}const H=["install","-g","aws-runtime-bridge@latest","--omit=optional"];m&&H.push("--force");const P=i("npm",H);if(P.error)return t(`[runtime-bridge] \u66F4\u65B0\u5931\u8D25: ${P.error.message}`),{handled:!0,exitCode:1};if(P.status!==0)return t(`[runtime-bridge] \u66F4\u65B0\u5931\u8D25\uFF0Cnpm \u9000\u51FA\u7801: ${P.status??"unknown"}`),{handled:!0,exitCode:P.status??1};if(s==="win32"){const S=await Ke(e,r,t);if(S.exitCode!==0)return S}return r("[runtime-bridge] \u66F4\u65B0\u5B8C\u6210\u3002\u8BF7\u91CD\u65B0\u8FD0\u884C awsb -v \u67E5\u770B\u5F53\u524D\u7248\u672C\u3002"),{handled:!0,exitCode:0}}async function Ke(e,r,t){const i=e.runCommand||T,s=i("sc.exe",["query",l]);if(!o(s))return{handled:!0,exitCode:0};r("[runtime-bridge] \u68C0\u6D4B\u5230 Windows \u670D\u52A1\u5DF2\u6CE8\u518C\uFF0C\u6B63\u5728\u91CD\u5EFA\u670D\u52A1\u6587\u4EF6\uFF08daemon/winsw.exe\uFF09..."),i("sc.exe",["stop",l]);const n=i("sc.exe",["delete",l]);o(n)||t(`[runtime-bridge] \u5220\u9664\u65E7 SCM \u8BB0\u5F55\u5931\u8D25: ${n.error?.message??`\u9000\u51FA\u7801 ${n.status??"unknown"}`}\uFF08\u5C1D\u8BD5\u7EE7\u7EED\u5B89\u88C5\uFF09`);const a={stdout:r,stderr:t,runCommand:i,platform:"win32",serviceUnitPath:e.serviceUnitPath||L,executablePath:e.executablePath||Q(),windowsServiceManager:e.windowsServiceManager};try{return(await j(a)).exitCode!==0?(t("[runtime-bridge] \u91CD\u5EFA Windows \u670D\u52A1\u6587\u4EF6\u5931\u8D25\u3002\u5305\u5DF2\u66F4\u65B0\uFF0C\u8BF7\u624B\u52A8\u6267\u884C `awsb service uninstall && awsb service install` \u4FEE\u590D\u670D\u52A1\u3002"),{handled:!0,exitCode:0}):(r("[runtime-bridge] Windows \u670D\u52A1\u6587\u4EF6\u5DF2\u91CD\u5EFA\u3002"),{handled:!0,exitCode:0})}catch(d){const u=d instanceof Error?d:new Error(String(d));return t(`[runtime-bridge] \u91CD\u5EFA Windows \u670D\u52A1\u6587\u4EF6\u5F02\u5E38: ${u.message}\u3002\u5305\u5DF2\u66F4\u65B0\uFF0C\u8BF7\u624B\u52A8\u6267\u884C \`awsb service uninstall && awsb service install\` \u4FEE\u590D\u670D\u52A1\u3002`),{handled:!0,exitCode:0}}}function Ye(e,r,t){const s=(e.argv||process.argv.slice(2)).slice(1).some(u=>u==="--follow"||u==="-f"),n=e.platform||process.platform,a=e.runCommand||T,d=e.serviceUnitPath||L;if(n==="linux"){if(!f(d))return t("[runtime-bridge] awsb \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF08awsb service install\uFF09\uFF0C\u65E0\u65E5\u5FD7\u53EF\u67E5\u770B\u3002"),{handled:!0,exitCode:1};const u=["-u",b];s?u.push("-f"):u.push("-n","200","--no-pager");const m=a("journalctl",u);return m.error?(t(`[runtime-bridge] \u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25: ${m.error.message}`),{handled:!0,exitCode:1}):{handled:!0,exitCode:m.status??0}}if(n==="win32"){const u=e.windowsServiceLogPath||Y;if(!f(u))return t(`[runtime-bridge] \u5C1A\u672A\u751F\u6210\u65E5\u5FD7\u6587\u4EF6: ${u}\u3002\u8BF7\u5148\u6267\u884C \`awsb service install\` \u5E76\u8FD0\u884C\u670D\u52A1\u3002`),{handled:!0,exitCode:1};const m=`Get-Content -Encoding UTF8 -Tail 200 "${u}"`+(s?" -Wait":""),w=a("powershell",["-NoProfile","-Command",m]);return w.error?(t(`[runtime-bridge] \u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25: ${w.error.message}`),{handled:!0,exitCode:1}):{handled:!0,exitCode:w.status??0}}if(n==="darwin"){const u=e.launchdLogPath||M;if(!f(u))return t(`[runtime-bridge] \u5C1A\u672A\u751F\u6210\u65E5\u5FD7\u6587\u4EF6: ${u}\u3002\u8BF7\u5148\u6267\u884C \`awsb service install\` \u5E76\u8FD0\u884C\u670D\u52A1\u3002`),{handled:!0,exitCode:1};const w=a("tail",s?["-f",u]:["-n","200",u]);return w.error?(t(`[runtime-bridge] \u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25: ${w.error.message}`),{handled:!0,exitCode:1}):{handled:!0,exitCode:w.status??0}}return t("[runtime-bridge] awsb log \u4EC5\u652F\u6301 Linux systemd\u3001Windows \u670D\u52A1\u4E0E macOS launchd \u73AF\u5883\u3002"),{handled:!0,exitCode:1}}async function ir(e={}){const r=e.argv||process.argv.slice(2),t=r[0],i=e.stdout||ce,s=e.stderr||le;if(t===void 0)return{handled:!1,exitCode:0};if(t==="-h"||t==="--help"||t==="help")return we(i),{handled:!0,exitCode:0};if(me(t))return i(`aws-runtime-bridge ${de(e.packageRoot)}`),{handled:!0,exitCode:0};if(t==="update"){const n=r.includes("--yes")||r.includes("-y"),a=r.includes("--no-kill"),d=n||a?{...e,assumeYes:n,skipKill:a}:e;return await Ve(d,i,s)}if(t==="config"){const n=r[1];if(n==="example"||n==="minimal"||n==="--minimal"||n==="-m")return{handled:!0,exitCode:await(e.configureExample||ie)()==="created"?0:1};const d=await(e.configure||ne)();return{handled:!0,exitCode:d==="configured"||d==="created"?0:1}}return t==="service"?await Le(r,e,i,s):t==="log"?Ye(e,i,s):(s(`[runtime-bridge] \u672A\u77E5\u547D\u4EE4: ${t}`),s("[runtime-bridge] \u8BF7\u8FD0\u884C `awsb --help` \u67E5\u770B\u652F\u6301\u7684\u547D\u4EE4\u3002"),{handled:!0,exitCode:1})}export{he as createLaunchdPlistContent,ge as createSystemdUnitContent,Ae as defaultFindRunningBridgeProcesses,Fe as defaultKillBridgeProcess,Oe as defaultProcessIsGone,ir as handleCliCommand,de as readPackageVersion,qe as removeDirWithRetry,Be as removeUpdateFseventsResidue,je as waitForProcessGone};
|
|
1
|
+
import{spawnSync as w}from"node:child_process";import{existsSync as g,mkdirSync as T,readFileSync as G,rmSync as q,unlinkSync as N,writeFileSync as B}from"node:fs";import W from"node:os";import l from"node:path";import{createInterface as te}from"node:readline/promises";import{fileURLToPath as V}from"node:url";import{getRuntimeHomeDir as ne,isDesktopAppMode as K}from"../config.js";import{pairBridge as ie}from"./bridge-pairing.js";import{configureStartupConfig as se,printConfigExampleCommand as ae}from"./startup-config-wizard.js";import{createWindowsServiceManager as ue,isNodeWindowsAvailable as de}from"./windows-service-manager.js";const b="awsb.service",A=`/etc/systemd/system/${b}`,Y="awsb",m=`${Y}.exe`;function L(){return l.join(ne(),".aws-bridge","log")}const J=l.join(L(),"awsb.out.log"),U="com.agentsworkstudio.awsb",_=l.join(W.homedir(),"Library","LaunchAgents",`${U}.plist`),M=l.join(L(),"awsb.out.log");function oe(){const e=V(import.meta.url);return l.resolve(l.dirname(e),"..","..")}function ce(e=oe()){const r=l.join(e,"package.json");return JSON.parse(G(r,"utf-8")).version||"unknown"}function I(e,r){const t=w(e,r,{shell:process.platform==="win32",stdio:"inherit"});return{status:t.status,error:t.error}}function le(){try{const e=w("npm",["root","-g"],{shell:process.platform==="win32",encoding:"utf-8",stdio:["ignore","pipe","ignore"]});if(e.status===0&&e.stdout){const r=e.stdout.trim();if(r)return r}}catch{}return null}function O(e){try{const r=new SharedArrayBuffer(4);Atomics.wait(new Int32Array(r),0,0,e)}catch{const r=Date.now()+e;for(;Date.now()<r;);}}function F(e){if(process.platform!=="win32")return null;try{const r=w("sc.exe",["query",e],{shell:!0,encoding:"utf-8",stdio:["ignore","pipe","ignore"]});if(r.status!==0||!r.stdout)return null;const t=r.stdout.match(/STATE\s*:\s*\d+\s+(\S+)/);return t?t[1]:null}catch{return null}}function Q(e,r,t=15e3,i=500){const s=Date.now()+t;for(;Date.now()<s;){const n=e(r);if(n===null||n==="STOPPED")return!0;O(i)}return!1}function me(e){process.stdout.write(`${e}
|
|
2
|
+
`)}function fe(e){process.stderr.write(`${e}
|
|
3
|
+
`)}function ge(e){return e==="-v"||e==="--version"||e==="version"}function he(e){return`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`}function z(){return process.argv[1]?l.resolve(process.argv[1]):V(import.meta.url)}function we(e){return["[Unit]","Description=AgentsWorkStudio Runtime Bridge","After=network-online.target","Wants=network-online.target","","[Service]","Type=simple","Environment=AWS_BRIDGE_SKIP_SETUP=true",`ExecStart=${[process.execPath,e].map(t=>he(t)).join(" ")}`,"Restart=on-failure","RestartSec=5s","","[Install]","WantedBy=multi-user.target",""].join(`
|
|
4
|
+
`)}function y(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function be(e,r={}){const t=r.userHomeDir??W.homedir(),i=r.logPath??M,s=i.replace(/\.out\.log$/,".err.log");return['<?xml version="1.0" encoding="UTF-8"?>','<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">','<plist version="1.0">',"<dict>"," <key>Label</key>",` <string>${y(U)}</string>`," <key>ProgramArguments</key>"," <array>",` <string>${y(process.execPath)}</string>`,` <string>${y(e)}</string>`," </array>"," <key>EnvironmentVariables</key>"," <dict>"," <key>AWS_BRIDGE_SKIP_SETUP</key>"," <string>true</string>"," <key>AWS_RUNTIME_HOME_DIR</key>",` <string>${y(t)}</string>`," </dict>"," <key>RunAtLoad</key>"," <true/>"," <key>KeepAlive</key>"," <true/>"," <key>StandardOutPath</key>",` <string>${y(i)}</string>`," <key>StandardErrorPath</key>",` <string>${y(s)}</string>`,"</dict>","</plist>",""].join(`
|
|
5
|
+
`)}function C(e,r){return e("systemctl",r)}function x(e,r){return r.error?`[runtime-bridge] ${e}\u5931\u8D25: ${r.error.message}`:`[runtime-bridge] ${e}\u5931\u8D25\uFF0Csystemctl \u9000\u51FA\u7801: ${r.status??"unknown"}`}function o(e){return!e.error&&e.status===0}function $(e,r){return e==="linux"?!0:(r("[runtime-bridge] service \u547D\u4EE4\u4EC5\u652F\u6301 Linux systemd \u73AF\u5883\u3002"),!1)}function E(e,r){return e==="darwin"?!0:(r("[runtime-bridge] service \u547D\u4EE4\u4EC5\u652F\u6301 macOS launchd \u73AF\u5883\u3002"),!1)}function X(e){e("Usage: awsb service <install|uninstall|start|stop|restart>")}function Ce(e){e("Usage: awsb <command> [options]"),e(""),e("\u547D\u4EE4:"),e(" -v, --version, version \u663E\u793A\u7248\u672C\u53F7"),e(" update [--yes|-y|--no-kill] \u66F4\u65B0\u5230\u6700\u65B0\u7248\u672C"),e(" config [example|minimal] \u914D\u7F6E\u8FD0\u884C\u53C2\u6570"),e(" pair --ticket <ticket> \u7528\u7BA1\u7406\u9875\u7684\u4E00\u6B21\u6027\u7968\u636E\u914D\u5BF9\uFF0C\u6362\u53D6\u673A\u5668\u51ED\u636E"),e(" service <install|uninstall|start|stop|restart> \u7BA1\u7406\u7CFB\u7EDF\u670D\u52A1"),e(" log [--follow|-f] \u67E5\u770B\u670D\u52A1\u65E5\u5FD7"),e(" -h, --help, help \u663E\u793A\u672C\u5E2E\u52A9")}async function xe(e,r,t,i){const s=e.slice(1);if(s.includes("-h")||s.includes("--help"))return t("\u7528\u6CD5: awsb pair --ticket awsp_xxx [--server-url http://host:port] [--instance-id bridge-xxx] [--target-identity credential-id] [--instance-name name] [--register-addr host:port]"),{handled:!0,exitCode:0};const n=c=>{const f=s.indexOf(c);if(!(f<0))return s[f+1]?.trim()||void 0},u=n("--ticket")||s.find(c=>c.startsWith("awsp_"));if(!u)return i("\u7F3A\u5C11\u914D\u5BF9\u7968\u636E\u3002\u7528\u6CD5: awsb pair --ticket awsp_xxx [--server-url URL]"),{handled:!0,exitCode:1};const d=r.pair||ie;let a;try{a=await d({ticket:u,serverUrl:n("--server-url"),instanceId:n("--instance-id"),targetIdentity:n("--target-identity"),instanceName:n("--instance-name"),registerAddr:n("--register-addr")})}catch(c){return i(`\u914D\u5BF9\u5931\u8D25: ${c.message}`),{handled:!0,exitCode:1}}return a.success?(t("\u2713 \u914D\u5BF9\u6210\u529F\uFF0C\u673A\u5668\u51ED\u636E\u5DF2\u5199\u5165 config.json\uFF08\u660E\u6587\u4E0D\u663E\u793A\uFF09"),t(` \u5B9E\u4F8B ID: ${a.instanceId||"(\u672A\u77E5)"}`),t(` \u8C03\u5EA6\u4E2D\u5FC3: ${a.serverUrl||"(\u672A\u77E5)"}`),t(" \u8BF7\u91CD\u542F Bridge \u4F7F\u65B0\u914D\u7F6E\u751F\u6548\uFF1Aawsb service restart\uFF08\u6216\u91CD\u65B0\u542F\u52A8 awsb\uFF09"),{handled:!0,exitCode:0}):(i(`\u914D\u5BF9\u5931\u8D25: ${a.error||"\u672A\u77E5\u9519\u8BEF"}`),{handled:!0,exitCode:1})}function ve(e){if(!$(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=we(e.executablePath);try{T(l.dirname(e.serviceUnitPath),{recursive:!0}),B(e.serviceUnitPath,r,{encoding:"utf-8",mode:420})}catch(n){const u=n instanceof Error?n:new Error(String(n));return e.stderr(`[runtime-bridge] \u5199\u5165 systemd unit \u5931\u8D25: ${u.message}`),{handled:!0,exitCode:1}}const t=C(e.runCommand,["daemon-reload"]);if(!o(t))return e.stderr(x("\u91CD\u8F7D systemd",t)),{handled:!0,exitCode:t.status??1};const i=C(e.runCommand,["enable",b]);if(!o(i))return e.stderr(x("\u542F\u7528 awsb \u5F00\u673A\u81EA\u542F",i)),{handled:!0,exitCode:i.status??1};const s=C(e.runCommand,["is-active","--quiet",b]);if(s.error)return e.stderr(x("\u68C0\u67E5 awsb \u670D\u52A1\u72B6\u6001",s)),{handled:!0,exitCode:1};if(s.status!==0){const n=C(e.runCommand,["start",b]);return o(n)?(e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u5B89\u88C5\u3001\u5DF2\u542F\u7528\u5F00\u673A\u81EA\u542F\u5E76\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0}):(e.stderr(x("\u542F\u52A8 awsb \u670D\u52A1",n)),{handled:!0,exitCode:n.status??1})}return e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u5B89\u88C5\u5E76\u5DF2\u542F\u7528\u5F00\u673A\u81EA\u542F\uFF1B\u670D\u52A1\u5DF2\u5728\u8FD0\u884C\u3002"),{handled:!0,exitCode:0}}function Se(e){if(!$(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=g(e.serviceUnitPath),t=C(e.runCommand,["is-active","--quiet",b]);if(t.error)return e.stderr(x("\u68C0\u67E5 awsb \u670D\u52A1\u72B6\u6001",t)),{handled:!0,exitCode:1};if(t.status===0){const n=C(e.runCommand,["stop",b]);if(!o(n))return e.stderr(x("\u505C\u6B62 awsb \u670D\u52A1",n)),{handled:!0,exitCode:n.status??1}}const i=C(e.runCommand,["disable",b]);if(i.error||i.status!==0&&r)return e.stderr(x("\u7981\u7528 awsb \u5F00\u673A\u81EA\u542F",i)),{handled:!0,exitCode:i.status??1};if(r)try{N(e.serviceUnitPath)}catch(n){const u=n instanceof Error?n:new Error(String(n));return e.stderr(`[runtime-bridge] \u5220\u9664 systemd unit \u5931\u8D25: ${u.message}`),{handled:!0,exitCode:1}}else e.stdout("[runtime-bridge] awsb systemd unit \u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u5220\u9664\u3002");const s=C(e.runCommand,["daemon-reload"]);return o(s)?(e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u5378\u8F7D\u3002"),{handled:!0,exitCode:0}):(e.stderr(x("\u91CD\u8F7D systemd",s)),{handled:!0,exitCode:s.status??1})}function ye(e){if(!$(e.platform,e.stderr))return{handled:!0,exitCode:1};if(!g(e.serviceUnitPath))return e.stderr("[runtime-bridge] awsb systemd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const r=C(e.runCommand,["restart",b]);return o(r)?(e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u91CD\u542F\u3002"),{handled:!0,exitCode:0}):(e.stderr(x("\u91CD\u542F awsb \u670D\u52A1",r)),{handled:!0,exitCode:r.status??1})}function Pe(e){if(!$(e.platform,e.stderr))return{handled:!0,exitCode:1};if(!g(e.serviceUnitPath))return e.stderr("[runtime-bridge] awsb systemd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const r=C(e.runCommand,["start",b]);return o(r)?(e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0}):(e.stderr(x("\u542F\u52A8 awsb \u670D\u52A1",r)),{handled:!0,exitCode:r.status??1})}function pe(e){if(!$(e.platform,e.stderr))return{handled:!0,exitCode:1};if(!g(e.serviceUnitPath))return e.stderr("[runtime-bridge] awsb systemd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const r=C(e.runCommand,["stop",b]);return o(r)?(e.stdout("[runtime-bridge] awsb systemd \u670D\u52A1\u5DF2\u505C\u6B62\u3002"),{handled:!0,exitCode:0}):(e.stderr(x("\u505C\u6B62 awsb \u670D\u52A1",r)),{handled:!0,exitCode:r.status??1})}function $e(e){return e(`[runtime-bridge] \u672A\u68C0\u6D4B\u5230 node-windows \u6A21\u5757\u3002\u8BF7\u91CD\u65B0\u5B89\u88C5 aws-runtime-bridge\uFF1A
|
|
6
|
+
npm install -g aws-runtime-bridge`),{handled:!0,exitCode:1}}async function j(e){const r=e.windowsServiceManager;if(!r&&!de())return $e(e.stderr);const t=e.windowsServiceLogPath||J,i=l.dirname(e.executablePath),s=W.homedir();try{await(r||ue()).install({name:Y,description:"awsb runtime bridge",script:e.executablePath,workingDirectory:i,env:[{name:"AWS_BRIDGE_SKIP_SETUP",value:"true"},{name:"AWS_RUNTIME_HOME_DIR",value:s}],logpath:L()})}catch(a){const c=a instanceof Error?a:new Error(String(a));return e.stderr(`[runtime-bridge] \u5B89\u88C5 Windows \u670D\u52A1\u5931\u8D25: ${c.message}`),{handled:!0,exitCode:1}}const n=e.runCommand("sc.exe",["start",m]);if(!o(n))return e.stderr(`[runtime-bridge] \u542F\u52A8 Windows \u670D\u52A1\u5931\u8D25: ${n.error?.message??`\u9000\u51FA\u7801 ${n.status??"unknown"}`}`),{handled:!0,exitCode:n.status??1};const u=["failure",m,"reset=","86400","actions=","restart/5000/restart/10000/restart/30000"],d=e.runCommand("sc.exe",u);return o(d)?e.stdout("[runtime-bridge] \u5DF2\u914D\u7F6E awsb \u670D\u52A1\u5931\u8D25\u81EA\u52A8\u91CD\u542F\uFF085s/10s/30s\uFF09\u3002"):e.stderr(`[runtime-bridge] \u914D\u7F6E\u670D\u52A1\u5931\u8D25\u81EA\u52A8\u91CD\u542F\u672A\u751F\u6548\uFF08\u53EF\u5FFD\u7565\uFF09: ${d.error?.message??`\u9000\u51FA\u7801 ${d.status??"unknown"}`}`),e.stdout(`[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u5B89\u88C5\u5E76\u5DF2\u542F\u52A8\uFF08\u65E5\u5FD7: ${t}\uFF09\u3002`),{handled:!0,exitCode:0}}function Ee(e){const r=i=>e.runCommand("sc.exe",i);r(["stop",m]);const t=r(["delete",m]);return o(t)?(e.stdout("[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u5378\u8F7D\u3002"),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u5378\u8F7D Windows \u670D\u52A1\u5931\u8D25: ${t.error?.message??`\u9000\u51FA\u7801 ${t.status??"unknown"}`}`),{handled:!0,exitCode:t.status??1})}async function ke(e){e.runCommand("sc.exe",["stop",m]);const r=e.queryWindowsServiceState||F;return Q(r,m)||e.stdout("[runtime-bridge] \u7B49\u5F85 Windows \u670D\u52A1\u505C\u6B62\u8D85\u65F6\uFF0C\u4ECD\u5C1D\u8BD5\u542F\u52A8\uFF08\u53EF\u80FD\u62A5 1056\uFF09\u3002"),Z(e,"\u91CD\u542F")}async function Re(e){return Z(e,"\u542F\u52A8")}const De=2,We=1056;async function Z(e,r){const t=e.runCommand("sc.exe",["start",m]);if(o(t))return e.stdout(`[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2${r}\u3002`),{handled:!0,exitCode:0};if(t.status===We)return e.stdout(`[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u5728\u8FD0\u884C\u4E2D\uFF08\u65E0\u9700${r}\uFF09\u3002`),{handled:!0,exitCode:0};if(t.status===De){e.stdout("[runtime-bridge] \u68C0\u6D4B\u5230 Windows \u670D\u52A1\u4E8C\u8FDB\u5236\u6587\u4EF6\u4E22\u5931\uFF08winsw.exe\uFF09\uFF0C\u6B63\u5728\u91CD\u5EFA..."),e.runCommand("sc.exe",["delete",m]);try{const i=await j(e);return i.exitCode!==0&&e.stderr(`[runtime-bridge] ${r} Windows \u670D\u52A1\u5931\u8D25\u4E14\u81EA\u52A8\u91CD\u5EFA\u5931\u8D25\u3002\u8BF7\u624B\u52A8\u6267\u884C \`awsb service uninstall && awsb service install\` \u4FEE\u590D\u3002`),i}catch(i){const s=i instanceof Error?i:new Error(String(i));return e.stderr(`[runtime-bridge] ${r} Windows \u670D\u52A1\u5931\u8D25\u4E14\u81EA\u52A8\u91CD\u5EFA\u5F02\u5E38: ${s.message}\u3002\u8BF7\u624B\u52A8\u6267\u884C \`awsb service uninstall && awsb service install\` \u4FEE\u590D\u3002`),{handled:!0,exitCode:1}}}return e.stderr(`[runtime-bridge] ${r} Windows \u670D\u52A1\u5931\u8D25: ${t.error?.message??`\u9000\u51FA\u7801 ${t.status??"unknown"}`}`),{handled:!0,exitCode:t.status??1}}function _e(e){const r=e.runCommand("sc.exe",["stop",m]);return o(r)?(e.stdout("[runtime-bridge] awsb Windows \u670D\u52A1\u5DF2\u505C\u6B62\u3002"),{handled:!0,exitCode:0}):(e.stderr(`[runtime-bridge] \u505C\u6B62 Windows \u670D\u52A1\u5931\u8D25: ${r.error?.message??`\u9000\u51FA\u7801 ${r.status??"unknown"}`}`),{handled:!0,exitCode:r.status??1})}function Ie(){return`gui/${process.getuid?.()??0}`}function k(e){return e.launchdDomainTarget||Ie()}function R(e){return`${e}/${U}`}function D(e,r){return r.error?`[runtime-bridge] ${e}\u5931\u8D25: ${r.error.message}`:`[runtime-bridge] ${e}\u5931\u8D25\uFF0Claunchctl \u9000\u51FA\u7801: ${r.status??"unknown"}`}function Te(e){if(!E(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=e.launchdPlistPath||_,t=e.launchdLogPath||M,i=be(e.executablePath,{userHomeDir:W.homedir(),logPath:t});try{T(l.dirname(r),{recursive:!0}),T(l.dirname(t),{recursive:!0}),B(r,i,{encoding:"utf-8",mode:420})}catch(u){const d=u instanceof Error?u:new Error(String(u));return e.stderr(`[runtime-bridge] \u5199\u5165 launchd plist \u5931\u8D25: ${d.message}`),{handled:!0,exitCode:1}}const s=k(e);e.runCommand("launchctl",["bootout",R(s)]);const n=e.runCommand("launchctl",["bootstrap",s,r]);return o(n)?(e.stdout(`[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u5B89\u88C5\u5E76\u5DF2\u542F\u52A8\uFF08\u65E5\u5FD7: ${t}\uFF09\u3002`),{handled:!0,exitCode:0}):(e.stderr(D("\u5B89\u88C5 awsb \u670D\u52A1",n)),{handled:!0,exitCode:n.status??1})}function Ne(e){if(!E(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=e.launchdPlistPath||_,t=k(e),i=R(t),s=e.runCommand("launchctl",["bootout",i]);if(s.error)return e.stderr(D("\u5378\u8F7D awsb \u670D\u52A1",s)),{handled:!0,exitCode:1};if(g(r))try{N(r)}catch(n){const u=n instanceof Error?n:new Error(String(n));return e.stderr(`[runtime-bridge] \u5220\u9664 launchd plist \u5931\u8D25: ${u.message}`),{handled:!0,exitCode:1}}else e.stdout("[runtime-bridge] awsb launchd plist \u4E0D\u5B58\u5728\uFF0C\u8DF3\u8FC7\u5220\u9664\u3002");return e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u5378\u8F7D\u3002"),{handled:!0,exitCode:0}}function Ae(e){if(!E(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=e.launchdPlistPath||_;if(!g(r))return e.stderr("[runtime-bridge] awsb launchd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const t=k(e),i=R(t),s=e.runCommand("launchctl",["kickstart",i]);if(o(s))return e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0};const n=e.runCommand("launchctl",["bootstrap",t,r]);return o(n)?(e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u542F\u52A8\u3002"),{handled:!0,exitCode:0}):(e.stderr(D("\u542F\u52A8 awsb \u670D\u52A1",n)),{handled:!0,exitCode:n.status??1})}function Le(e){if(!E(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=k(e),t=e.runCommand("launchctl",["bootout",R(r)]);return o(t)?(e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u505C\u6B62\u3002"),{handled:!0,exitCode:0}):(e.stderr(D("\u505C\u6B62 awsb \u670D\u52A1",t)),{handled:!0,exitCode:t.status??1})}function Ue(e){if(!E(e.platform,e.stderr))return{handled:!0,exitCode:1};const r=e.launchdPlistPath||_;if(!g(r))return e.stderr("[runtime-bridge] awsb launchd \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF0C\u8BF7\u5148\u6267\u884C `awsb service install`\u3002"),{handled:!0,exitCode:1};const t=k(e);e.runCommand("launchctl",["bootout",R(t)]);const i=e.runCommand("launchctl",["bootstrap",t,r]);return o(i)?(e.stdout("[runtime-bridge] awsb launchd \u670D\u52A1\u5DF2\u91CD\u542F\u3002"),{handled:!0,exitCode:0}):(e.stderr(D("\u91CD\u542F awsb \u670D\u52A1",i)),{handled:!0,exitCode:i.status??1})}async function Me(e,r,t,i){const s=e[1];if(K())return i("[runtime-bridge] \u684C\u9762\u7248\u4E0D\u652F\u6301 service \u547D\u4EE4\uFF0C\u8BF7\u4F7F\u7528\u684C\u9762\u5E94\u7528\u7684\u6258\u76D8\u83DC\u5355\u7BA1\u7406\u542F\u52A8\u4E0E\u5F00\u673A\u81EA\u542F\u3002"),{handled:!0,exitCode:1};if(!s||s==="-h"||s==="--help"||s==="help")return X(t),{handled:!0,exitCode:s?0:1};const n={stdout:t,stderr:i,runCommand:r.runCommand||I,platform:r.platform||process.platform,serviceUnitPath:r.serviceUnitPath||A,executablePath:r.executablePath||z(),windowsServiceManager:r.windowsServiceManager,launchdPlistPath:r.launchdPlistPath,launchdLogPath:r.launchdLogPath,launchdDomainTarget:r.launchdDomainTarget,queryWindowsServiceState:r.queryWindowsServiceState||F};return n.platform!=="linux"&&n.platform!=="win32"&&n.platform!=="darwin"?(i("[runtime-bridge] service \u547D\u4EE4\u4EC5\u652F\u6301 Linux systemd\u3001Windows \u670D\u52A1\u4E0E macOS launchd \u73AF\u5883\u3002"),{handled:!0,exitCode:1}):s==="install"?n.platform==="win32"?await j(n):n.platform==="darwin"?Te(n):ve(n):s==="uninstall"?n.platform==="win32"?Ee(n):n.platform==="darwin"?Ne(n):Se(n):s==="restart"?n.platform==="win32"?ke(n):n.platform==="darwin"?Ue(n):ye(n):s==="start"?n.platform==="win32"?Re(n):n.platform==="darwin"?Ae(n):Pe(n):s==="stop"?n.platform==="win32"?_e(n):n.platform==="darwin"?Le(n):pe(n):(i(`[runtime-bridge] \u672A\u77E5 service \u5B50\u547D\u4EE4: ${s}`),X(t),{handled:!0,exitCode:1})}function ee(e){return e?e.split(/\r?\n/).map(r=>r.trim()).filter(r=>/^\d+$/.test(r)).map(Number):[]}function Oe(e){try{if(e==="win32"){const t=w("powershell",["-NoProfile","-Command",`Get-CimInstance Win32_Process -Filter "Name='node.exe'" | Where-Object { $_.CommandLine -like '*aws-runtime-bridge*' -and $_.ProcessId -ne ${process.pid} } | ForEach-Object { $_.ProcessId }`],{encoding:"utf-8"}),i=Fe(e);return je([...ee(t.stdout),...i]).filter(s=>s!==process.pid)}const r=w("pgrep",["-f","aws-runtime-bridge"],{encoding:"utf-8"});return ee(r.stdout).filter(t=>t!==process.pid)}catch{return[]}}function Fe(e){if(e!=="win32")return[];try{const r=w("sc.exe",["query",m],{encoding:"utf-8",shell:!0,stdio:["ignore","pipe","ignore"]});if(r.status!==0||!r.stdout)return[];const t=r.stdout.match(/STATE\s*:\s*\d+\s+(\S+)/);if(!t)return[];const i=t[1];if(i!=="RUNNING"&&i!=="START_PENDING"&&i!=="STOP_PENDING")return[];const s=w("tasklist",["/FI","IMAGENAME eq awsb.exe","/FO","CSV","/NH"],{encoding:"utf-8",shell:!0,stdio:["ignore","pipe","ignore"]});return s.status!==0||!s.stdout?[]:s.stdout.split(/\r?\n/).map(n=>n.trim()).filter(n=>n.length>0).map(n=>{const u=n.match(/^"awsb\.exe","(\d+)"/i);return u?Number(u[1]):NaN}).filter(n=>Number.isFinite(n)&&n>0)}catch{return[]}}function je(e){const r=new Set,t=[];for(const i of e)r.has(i)||(r.add(i),t.push(i));return t}function He(e,r,t=1e4,i=250){if(r==="win32"){if(Be(e,r)){w("sc.exe",["stop",m],{stdio:"ignore",shell:!0}),Q(F,m);return}w("taskkill",["/PID",String(e),"/F","/T"],{stdio:"ignore"}),qe(Ge,e,r,t,i);return}w("kill",["-9",String(e)],{stdio:"ignore"})}function Ge(e,r){if(r!=="win32"||!Number.isFinite(e)||e<=0)return!0;try{const t=w("tasklist",["/FI",`PID eq ${e}`,"/NH"],{encoding:"utf-8",stdio:["ignore","pipe","ignore"]});return t.status!==0||!t.stdout?!0:!t.stdout.includes(String(e))}catch{return!0}}function qe(e,r,t,i=1e4,s=250){const n=Date.now()+i;for(;Date.now()<n;){if(e(r,t))return!0;O(s)}return e(r,t)}function Be(e,r){if(r!=="win32"||!Number.isFinite(e)||e<=0)return!1;try{const t=w("powershell",["-NoProfile","-Command",`(Get-CimInstance Win32_Process -Filter "ProcessId=${e}" -ErrorAction SilentlyContinue).Name`],{encoding:"utf-8",stdio:["ignore","pipe","ignore"]});return t.status!==0||!t.stdout?!1:/^awsb\.exe$/i.test(t.stdout.trim())}catch{return!1}}function Ve(e){if(!process.stdin.isTTY)return Promise.resolve("n");const r=te({input:process.stdin,output:process.stdout});return r.question(e).finally(()=>r.close())}function Ke(e,r=3,t=500){let i;for(let s=0;s<=r;s+=1)try{q(e,{recursive:!0,force:!0});return}catch(n){i=n instanceof Error?n:new Error(String(n)),s<r&&O(t*2**s)}throw i??new Error(`\u65E0\u6CD5\u5220\u9664\u76EE\u5F55: ${e}`)}function Ye(e){const r=l.join(e,"aws-runtime-bridge","node_modules"),t=l.join(r,"fsevents");if(g(t))try{q(t,{recursive:!0,force:!0})}catch{}const i=l.join(r,".package-lock.json");if(g(i))try{G(i,"utf-8").includes("fsevents")&&N(i)}catch{}}async function Je(e,r,t){const i=e.runCommand||I,s=e.platform||process.platform,n=e.findRunningBridgeProcesses||Oe,u=e.prompt||Ve,d=e.killBridgeProcess||He,a=e.globalModulePath||le;r("[runtime-bridge] \u6B63\u5728\u66F4\u65B0 aws-runtime-bridge \u5230\u6700\u65B0\u7248\u672C...");let c=!1;if(e.skipKill)c=!0,r("[runtime-bridge] \u5DF2\u6307\u5B9A --no-kill\uFF0C\u8DF3\u8FC7\u8FD0\u884C\u8FDB\u7A0B\u68C0\u6D4B\uFF0C\u5C06\u4EE5 --force \u65B9\u5F0F\u5B89\u88C5\u3002");else{const v=n(s).filter(h=>h!==process.pid);if(v.length>0)if(r(`[runtime-bridge] \u68C0\u6D4B\u5230 aws-runtime-bridge \u6B63\u5728\u8FD0\u884C (PID: ${v.join(", ")})\uFF0C\u66F4\u65B0\u65F6\u8FD9\u4E9B\u8FDB\u7A0B\u53EF\u80FD\u5360\u7528\u6587\u4EF6\u5BFC\u81F4\u8986\u76D6\u5931\u8D25\u3002`),e.assumeYes){r("[runtime-bridge] \u975E\u4EA4\u4E92\u6A21\u5F0F(--yes)\uFF0C\u81EA\u52A8\u5173\u95ED\u4E0A\u8FF0\u8FDB\u7A0B\u4EE5\u7EE7\u7EED\u66F4\u65B0...");for(const h of v)try{d(h,s),r(`[runtime-bridge] \u5DF2\u5173\u95ED\u8FDB\u7A0B PID: ${h}`)}catch(S){const p=S instanceof Error?S:new Error(String(S));t(`[runtime-bridge] \u5173\u95ED\u8FDB\u7A0B PID ${h} \u5931\u8D25: ${p.message}`)}}else{const h=(await u("\u662F\u5426\u5173\u95ED\u4E0A\u8FF0\u8FDB\u7A0B\u4EE5\u7EE7\u7EED\u66F4\u65B0? (y/N) ")).trim().toLowerCase();if(h==="y"||h==="yes")for(const S of v)try{d(S,s),r(`[runtime-bridge] \u5DF2\u5173\u95ED\u8FDB\u7A0B PID: ${S}`)}catch(p){const re=p instanceof Error?p:new Error(String(p));t(`[runtime-bridge] \u5173\u95ED\u8FDB\u7A0B PID ${S} \u5931\u8D25: ${re.message}`)}else c=!0,r("[runtime-bridge] \u5DF2\u9009\u62E9\u4E0D\u5173\u95ED\u8FDB\u7A0B\uFF0C\u5C06\u4EE5 --force \u65B9\u5F0F\u5F3A\u5236\u5B89\u88C5\uFF08\u82E5\u6587\u4EF6\u4ECD\u88AB\u5360\u7528\u53EF\u80FD\u4F1A\u6709\u8B66\u544A\uFF09\u3002")}}const f=a();if(f){const v=l.join(f,"aws-runtime-bridge");if(g(v)){r("[runtime-bridge] \u6E05\u7406\u65E7\u7248\u672C\u6B8B\u7559\u76EE\u5F55...");try{Ke(v)}catch(h){const S=h instanceof Error?h:new Error(String(h));t(`[runtime-bridge] \u6E05\u7406\u6B8B\u7559\u76EE\u5F55\u5931\u8D25\uFF08\u5C06\u5C1D\u8BD5\u7EE7\u7EED\u5B89\u88C5\uFF09: ${S.message}`),Ye(f)}}}const H=["install","-g","aws-runtime-bridge@latest","--omit=optional"];c&&H.push("--force");const P=i("npm",H);if(P.error)return t(`[runtime-bridge] \u66F4\u65B0\u5931\u8D25: ${P.error.message}`),{handled:!0,exitCode:1};if(P.status!==0)return t(`[runtime-bridge] \u66F4\u65B0\u5931\u8D25\uFF0Cnpm \u9000\u51FA\u7801: ${P.status??"unknown"}`),{handled:!0,exitCode:P.status??1};if(s==="win32"){const v=await Qe(e,r,t);if(v.exitCode!==0)return v}return r("[runtime-bridge] \u66F4\u65B0\u5B8C\u6210\u3002\u8BF7\u91CD\u65B0\u8FD0\u884C awsb -v \u67E5\u770B\u5F53\u524D\u7248\u672C\u3002"),{handled:!0,exitCode:0}}async function Qe(e,r,t){const i=e.runCommand||I,s=i("sc.exe",["query",m]);if(!o(s))return{handled:!0,exitCode:0};r("[runtime-bridge] \u68C0\u6D4B\u5230 Windows \u670D\u52A1\u5DF2\u6CE8\u518C\uFF0C\u6B63\u5728\u91CD\u5EFA\u670D\u52A1\u6587\u4EF6\uFF08daemon/winsw.exe\uFF09..."),i("sc.exe",["stop",m]);const n=i("sc.exe",["delete",m]);o(n)||t(`[runtime-bridge] \u5220\u9664\u65E7 SCM \u8BB0\u5F55\u5931\u8D25: ${n.error?.message??`\u9000\u51FA\u7801 ${n.status??"unknown"}`}\uFF08\u5C1D\u8BD5\u7EE7\u7EED\u5B89\u88C5\uFF09`);const u={stdout:r,stderr:t,runCommand:i,platform:"win32",serviceUnitPath:e.serviceUnitPath||A,executablePath:e.executablePath||z(),windowsServiceManager:e.windowsServiceManager};try{return(await j(u)).exitCode!==0?(t("[runtime-bridge] \u91CD\u5EFA Windows \u670D\u52A1\u6587\u4EF6\u5931\u8D25\u3002\u5305\u5DF2\u66F4\u65B0\uFF0C\u8BF7\u624B\u52A8\u6267\u884C `awsb service uninstall && awsb service install` \u4FEE\u590D\u670D\u52A1\u3002"),{handled:!0,exitCode:0}):(r("[runtime-bridge] Windows \u670D\u52A1\u6587\u4EF6\u5DF2\u91CD\u5EFA\u3002"),{handled:!0,exitCode:0})}catch(d){const a=d instanceof Error?d:new Error(String(d));return t(`[runtime-bridge] \u91CD\u5EFA Windows \u670D\u52A1\u6587\u4EF6\u5F02\u5E38: ${a.message}\u3002\u5305\u5DF2\u66F4\u65B0\uFF0C\u8BF7\u624B\u52A8\u6267\u884C \`awsb service uninstall && awsb service install\` \u4FEE\u590D\u670D\u52A1\u3002`),{handled:!0,exitCode:0}}}function ze(e,r,t){const s=(e.argv||process.argv.slice(2)).slice(1).some(a=>a==="--follow"||a==="-f"),n=e.platform||process.platform,u=e.runCommand||I,d=e.serviceUnitPath||A;if(n==="linux"){if(!g(d))return t("[runtime-bridge] awsb \u670D\u52A1\u5C1A\u672A\u5B89\u88C5\uFF08awsb service install\uFF09\uFF0C\u65E0\u65E5\u5FD7\u53EF\u67E5\u770B\u3002"),{handled:!0,exitCode:1};const a=["-u",b];s?a.push("-f"):a.push("-n","200","--no-pager");const c=u("journalctl",a);return c.error?(t(`[runtime-bridge] \u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25: ${c.error.message}`),{handled:!0,exitCode:1}):{handled:!0,exitCode:c.status??0}}if(n==="win32"){const a=e.windowsServiceLogPath||J;if(!g(a))return t(`[runtime-bridge] \u5C1A\u672A\u751F\u6210\u65E5\u5FD7\u6587\u4EF6: ${a}\u3002\u8BF7\u5148\u6267\u884C \`awsb service install\` \u5E76\u8FD0\u884C\u670D\u52A1\u3002`),{handled:!0,exitCode:1};const c=`Get-Content -Encoding UTF8 -Tail 200 "${a}"`+(s?" -Wait":""),f=u("powershell",["-NoProfile","-Command",c]);return f.error?(t(`[runtime-bridge] \u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25: ${f.error.message}`),{handled:!0,exitCode:1}):{handled:!0,exitCode:f.status??0}}if(n==="darwin"){const a=e.launchdLogPath||M;if(!g(a))return t(`[runtime-bridge] \u5C1A\u672A\u751F\u6210\u65E5\u5FD7\u6587\u4EF6: ${a}\u3002\u8BF7\u5148\u6267\u884C \`awsb service install\` \u5E76\u8FD0\u884C\u670D\u52A1\u3002`),{handled:!0,exitCode:1};const f=u("tail",s?["-f",a]:["-n","200",a]);return f.error?(t(`[runtime-bridge] \u8BFB\u53D6\u65E5\u5FD7\u5931\u8D25: ${f.error.message}`),{handled:!0,exitCode:1}):{handled:!0,exitCode:f.status??0}}return t("[runtime-bridge] awsb log \u4EC5\u652F\u6301 Linux systemd\u3001Windows \u670D\u52A1\u4E0E macOS launchd \u73AF\u5883\u3002"),{handled:!0,exitCode:1}}async function dr(e={}){const r=e.argv||process.argv.slice(2),t=r[0],i=e.stdout||me,s=e.stderr||fe;if(t===void 0)return{handled:!1,exitCode:0};if(t==="-h"||t==="--help"||t==="help")return Ce(i),{handled:!0,exitCode:0};if(ge(t))return i(`aws-runtime-bridge ${ce(e.packageRoot)}`),{handled:!0,exitCode:0};if(t==="update"){if(K())return s("[runtime-bridge] \u684C\u9762\u7248\u4E0D\u652F\u6301 awsb update\uFF0C\u8BF7\u901A\u8FC7\u684C\u9762\u5E94\u7528\u7684\u66F4\u65B0\u63D0\u793A\u5347\u7EA7\u3002"),{handled:!0,exitCode:1};const n=r.includes("--yes")||r.includes("-y"),u=r.includes("--no-kill"),d=n||u?{...e,assumeYes:n,skipKill:u}:e;return await Je(d,i,s)}if(t==="config"){const n=r[1];if(n==="example"||n==="minimal"||n==="--minimal"||n==="-m")return{handled:!0,exitCode:await(e.configureExample||ae)()==="created"?0:1};const d=await(e.configure||se)();return{handled:!0,exitCode:d==="configured"||d==="created"?0:1}}return t==="pair"?await xe(r,e,i,s):t==="service"?await Me(r,e,i,s):t==="log"?ze(e,i,s):(s(`[runtime-bridge] \u672A\u77E5\u547D\u4EE4: ${t}`),s("[runtime-bridge] \u8BF7\u8FD0\u884C `awsb --help` \u67E5\u770B\u652F\u6301\u7684\u547D\u4EE4\u3002"),{handled:!0,exitCode:1})}export{be as createLaunchdPlistContent,we as createSystemdUnitContent,Oe as defaultFindRunningBridgeProcesses,He as defaultKillBridgeProcess,Ge as defaultProcessIsGone,dr as handleCliCommand,ce as readPackageVersion,Ke as removeDirWithRetry,Ye as removeUpdateFseventsResidue,qe as waitForProcessGone};
|
|
7
7
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
export interface ConnectionKeyRotationResult {
|
|
8
|
+
status: number;
|
|
9
|
+
body: Record<string, unknown>;
|
|
10
|
+
}
|
|
11
|
+
export interface ConnectionKeyRotationTarget {
|
|
12
|
+
|
|
13
|
+
serverUrl?: string;
|
|
14
|
+
|
|
15
|
+
instanceId?: string;
|
|
16
|
+
|
|
17
|
+
credentialId?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
export declare function rotateConnectionKeyFromServer(requestedKey: unknown, target?: ConnectionKeyRotationTarget): Promise<ConnectionKeyRotationResult>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{replaceConfiguredConnectionKey as s}from"./auto-register.js";async function i(n,o){const e=String(n||"").trim();if(!e)return{status:400,body:{ok:!1,error:"connectionKey is required"}};if(e.length<8||e.length>256||/\s/.test(e))return{status:400,body:{ok:!1,error:"invalid connectionKey format"}};if(!String(o?.serverUrl||"").trim())return{status:400,body:{ok:!1,error:"serverUrl is required to rotate a target connectionKey"}};try{const r=await s(e,o);return{status:200,body:{ok:!0,rotated:r.rotated,envOverrideWarning:r.envOverrideWarning}}}catch(r){const t=r;return(t.message||"").startsWith("\u65E0\u6CD5\u552F\u4E00\u5B9A\u4F4D")?{status:400,body:{ok:!1,error:t.message}}:{status:500,body:{ok:!1,error:t.message||"rotate connection key failed"}}}}export{i as rotateConnectionKeyFromServer};
|
|
2
|
+
|