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,11 +1,23 @@
|
|
|
1
1
|
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
2
6
|
import { type AxiosResponse } from "axios";
|
|
3
7
|
import type { RuntimeToolBatchMetrics } from "../adapter/types.js";
|
|
4
8
|
import type { Session } from "../types.js";
|
|
5
9
|
import { RingBuffer, type RingBufferEntry, type RingBufferSlice } from "./ring-buffer.js";
|
|
6
10
|
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
7
14
|
export type BridgeEventCategory = "status" | "output" | "question" | "file_changed";
|
|
8
15
|
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
9
21
|
export interface BridgeEventPayload {
|
|
10
22
|
readonly category: BridgeEventCategory;
|
|
11
23
|
readonly agentId: string;
|
|
@@ -44,6 +56,11 @@ export interface BridgeEventPayload {
|
|
|
44
56
|
|
|
45
57
|
export type { RingBufferEntry, RingBufferSlice };
|
|
46
58
|
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
47
64
|
export declare const bridgeEventBuffer: RingBuffer<BridgeEventPayload>;
|
|
48
65
|
interface RuntimeStatusActionInfo {
|
|
49
66
|
actionType?: string;
|
|
@@ -68,6 +85,12 @@ export interface RuntimeCallbackAuthOptions {
|
|
|
68
85
|
export interface RuntimeOutputMetadata {
|
|
69
86
|
sourceEventType?: string;
|
|
70
87
|
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
|
|
71
94
|
skipLocalPersist?: boolean;
|
|
72
95
|
logLevel?: "info" | "warn" | "error";
|
|
73
96
|
logMessage?: string;
|
|
@@ -81,6 +104,13 @@ export interface RuntimeOutputMetadata {
|
|
|
81
104
|
|
|
82
105
|
export declare const sessions: Map<string, Session>;
|
|
83
106
|
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
|
|
84
114
|
export declare function sendStatus(agentId: string, sessionId: string | null, status: string, actionInfo?: RuntimeStatusActionInfo, usage?: {
|
|
85
115
|
inputTokens: number;
|
|
86
116
|
outputTokens: number;
|
|
@@ -94,8 +124,23 @@ export declare function sendStatus(agentId: string, sessionId: string | null, st
|
|
|
94
124
|
cacheMissTokens?: number;
|
|
95
125
|
}, authOptions?: RuntimeCallbackAuthOptions, timestamp?: number, sourceEventType?: string): Promise<AxiosResponse<unknown> | undefined>;
|
|
96
126
|
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
|
|
97
134
|
export declare function sendOutput(agentId: string, output: string, sessionId: string, seq: number, metadata?: RuntimeOutputMetadata, authOptions?: RuntimeCallbackAuthOptions, signal?: AbortSignal): Promise<void>;
|
|
98
135
|
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
99
144
|
export declare function sendQuestionRequest(agentId: string, sessionId: string, questions: unknown[], authOptions?: RuntimeCallbackAuthOptions, toolCallId?: string): Promise<void>;
|
|
100
145
|
export interface RuntimeFileChangedPayload {
|
|
101
146
|
bridgeBaseUrl?: string;
|
|
@@ -114,12 +159,30 @@ export interface ToolAuthRequestPayload {
|
|
|
114
159
|
operation?: string;
|
|
115
160
|
}
|
|
116
161
|
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
117
166
|
export declare function sendToolAuthRequest(agentId: string, sessionId: string, request: ToolAuthRequestPayload, authOptions?: RuntimeCallbackAuthOptions): Promise<void>;
|
|
118
167
|
|
|
168
|
+
|
|
169
|
+
|
|
119
170
|
export declare function sendFileChanged(payload: RuntimeFileChangedPayload): Promise<void>;
|
|
120
171
|
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
|
|
121
176
|
export declare function appendSessionOutput(sessionId: string, data: string): void;
|
|
122
177
|
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
|
|
123
182
|
export declare function scheduleOutputFlush(sessionId: string): void;
|
|
124
183
|
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
|
|
125
188
|
export declare function flushSessionOutput(sessionId: string): Promise<void>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
${
|
|
1
|
+
import m from"axios";import{resolveSchedulerBaseUrlFrom as H}from"../config.js";import{requestRuntimeAccessTokenRefreshForServer as P,resolveTargetIdentityFromToken as C}from"../services/auto-register.js";import{logger as d}from"../utils/logger.js";import{agentEventStore as S}from"./agent-event-store.js";import{scheduleEventPush as $}from"./event-delta-pusher.js";import{RingBuffer as O}from"./ring-buffer.js";import{getRuntimeAccessToken as _}from"./runtime-binding.js";const B=new O(2e3);function k(t,n=b(t)){const c=t?.runtimeAccessToken||_(n)||_();return c?{"X-Runtime-Token":c}:void 0}function x(t){if(t)return{schedulerBaseUrl:t.schedulerBaseUrl}}function b(t){return H(t?.schedulerBaseUrl).url}const D=100;function w(t){if(typeof t!="object"||t===null)return;const n=t.response;if(typeof n!="object"||n===null)return;const c=n.status;return typeof c=="number"?c:void 0}let R=null;async function L(t,n){if(R)return R;R=(async()=>{try{const c=n?C(n)?.identityKey:void 0,e=await P(t,c);return e.success&&e.runtimeAccessToken?(d.info("[session-output] Runtime token refreshed after 401"),!0):(d.warn("[session-output] Runtime token refresh failed",{error:e.error}),!1)}catch(c){return d.warn("[session-output] Runtime token refresh threw",{error:c}),!1}})();try{return await R}finally{R=null}}const E=8e3,M=64*1024,g=32*1024,v=15e3,U=new Map;async function V(t,n,c,e,r,o,a,l){const i={agentId:t,sessionId:n,status:c};a!==void 0&&(i.timestamp=a),e&&(e.actionType&&(i.actionType=e.actionType),e.actionLabel&&(i.actionLabel=e.actionLabel),e.actionDetail&&(i.actionDetail=e.actionDetail),e.actionInput&&(i.actionInput=e.actionInput),e.actionResult&&(i.actionResult=e.actionResult),e.actionError&&(i.actionError=e.actionError),e.actionId&&(i.actionId=e.actionId),e.parentId&&(i.parentId=e.parentId),e.batchId&&(i.batchId=e.batchId),e.batchMetrics&&(i.batchMetrics=e.batchMetrics)),r&&(i.inputTokens=r.inputTokens,i.outputTokens=r.outputTokens,r.contextLimit&&(i.contextLimit=r.contextLimit),r.maxOutput&&(i.maxOutput=r.maxOutput),r.inputLimit&&(i.inputLimit=r.inputLimit),r.compactionThreshold&&(i.compactionThreshold=r.compactionThreshold),r.cacheHitTokens!==void 0&&(i.cacheHitTokens=r.cacheHitTokens),r.cacheMissTokens!==void 0&&(i.cacheMissTokens=r.cacheMissTokens)),l&&(i.sourceEventType=l),process.env.ACODE_TOKEN_DEBUG==="1"&&(i.inputTokens!==void 0||i.outputTokens!==void 0||i.cacheHitTokens!==void 0||i.cacheMissTokens!==void 0)&&console.log(`[TokenDebug][SendStatus] status=${c} inputTokens=${i.inputTokens??"(none)"} outputTokens=${i.outputTokens??"(none)"} cacheHitTokens=${i.cacheHitTokens??"(none)"} cacheMissTokens=${i.cacheMissTokens??"(none)"} contextLimit=${i.contextLimit??"(none)"} actionType=${i.actionType??"(none)"}`);const s=b(o),f=k(o,s);if(!f){d.warn("Skip runtime status callback because runtime token is missing",{agentId:t,sessionId:n,status:c,schedulerBaseUrl:s});return}const T=e?.actionType==="context_compaction";T&&d.info("[compaction-diag] sendStatus enter",{agentId:t,sessionId:n,status:c,actionId:e?.actionId,parentId:e?.parentId,actionLabel:e?.actionLabel});try{const u=await m.post(`${s}/api/runtime/callback/status`,i,{headers:f,timeout:15e3});if(T){const p=u?.data;d.info("[compaction-diag] sendStatus success",{agentId:t,actionId:e?.actionId,actionLabel:e?.actionLabel,httpStatus:u?.status,ignored:p?.ignored,responseBody:p})}return u}catch(u){if(w(u)===401&&await L(s,f?.["X-Runtime-Token"])){const y=k(x(o),s);if(y)try{const h=await m.post(`${s}/api/runtime/callback/status`,i,{headers:y,timeout:15e3});if(T){const A=h?.data;d.info("[compaction-diag] sendStatus retry success",{agentId:t,actionId:e?.actionId,actionLabel:e?.actionLabel,httpStatus:h?.status,ignored:A?.ignored})}return h}catch(h){d.warn("Runtime status callback retry failed after token refresh",{agentId:t,sessionId:n,status:c,error:h});return}}d.warn("Runtime status callback failed",{agentId:t,sessionId:n,status:c,schedulerBaseUrl:s,error:u});return}finally{const u={category:"status",agentId:t,sessionId:n,status:c,actionType:e?.actionType,actionLabel:e?.actionLabel,actionDetail:e?.actionDetail,actionInput:e?.actionInput,actionResult:e?.actionResult,actionError:e?.actionError,actionId:e?.actionId,parentId:e?.parentId,batchId:e?.batchId,batchMetrics:e?.batchMetrics,inputTokens:r?.inputTokens,outputTokens:r?.outputTokens,cacheHitTokens:r?.cacheHitTokens,cacheMissTokens:r?.cacheMissTokens,sourceEventType:l};B.append(u);const p=S.append(t,u);$(t,p,o)}}async function F(t,n,c,e,r,o,a){const l=b(o),i=k(o,l);try{if(!i){d.warn("Skip runtime output callback because runtime token is missing",{agentId:t,sessionId:c,schedulerBaseUrl:l});return}const s={headers:i,timeout:v};a&&(s.signal=a),await m.post(`${l}/api/runtime/callback/output`,{agentId:t,output:n,sessionId:c,seq:e,...r},s)}catch(s){if(a?.aborted||s?.name==="AbortError"||s?.code==="ERR_CANCELED")throw s;if(w(s)===401&&await L(l,i?.["X-Runtime-Token"])){const T=k(x(o),l);if(T)try{const u={headers:T,timeout:v};a&&(u.signal=a),await m.post(`${l}/api/runtime/callback/output`,{agentId:t,output:n,sessionId:c,seq:e,...r},u);return}catch{}}throw d.warn("Runtime output callback failed",{agentId:t,sessionId:c,error:s}),s}finally{if(!r?.skipLocalPersist){const s=n.length>E?`...(truncated)
|
|
2
|
+
${n.slice(-E)}`:n,f={category:"output",agentId:t,sessionId:c,output:s,seq:e,sourceEventType:r?.sourceEventType,logLevel:r?.logLevel,logCategory:r?.logCategory};B.appendOrMerge(f,u=>{const p=u.data;if(p.category!=="output"||p.sessionId!==c||p.sourceEventType!==r?.sourceEventType||Date.now()-u.timestamp>1e4)return!1;const y=(p.output||"").length,h=(f.output||"").length;return y+h<=E},(u,p)=>{const y=u.output||"",h=p.output||"";return y.includes(h)?u:{...u,output:`${y}${h}`}});const T=S.appendOrMergeOutput(t,f);$(t,T,o)}}}async function Y(t,n,c,e,r){const o=b(e),a={agentId:t,sessionId:n,questions:c,...r?{toolCallId:r}:{}},l=k(e,o);try{if(!l)return;await m.post(`${o}/api/runtime/callback/question`,a,{headers:l})}catch(i){if(w(i)===401&&await L(o,l?.["X-Runtime-Token"])){const f=k(x(e),o);if(f)try{await m.post(`${o}/api/runtime/callback/question`,a,{headers:f});return}catch{}}}finally{const i={category:"question",agentId:t,sessionId:n,...r?{toolCallId:r}:{},questions:c};B.append(i);const s=S.append(t,i);$(t,s,e)}}async function Z(t,n,c,e){const r=b(e),o={agentId:t,sessionId:n,...c},a=k(e,r);try{if(!a)return;await m.post(`${r}/api/runtime/callback/tool-auth`,o,{headers:a})}catch(l){if(w(l)===401&&await L(r,a?.["X-Runtime-Token"])){const s=k(x(e),r);if(s)try{await m.post(`${r}/api/runtime/callback/tool-auth`,o,{headers:s});return}catch{}}}}async function I(t){const n=b(),c=k(void 0,n);try{if(!c)return;await m.post(`${n}/api/runtime/callback/file-changed`,t,{headers:c})}catch(e){if(w(e)===401&&await L(n,c?.["X-Runtime-Token"])){const o=k(void 0,n);if(o)try{await m.post(`${n}/api/runtime/callback/file-changed`,t,{headers:o});return}catch{}}}finally{const e={category:"file_changed",agentId:"",sessionId:null,workspacePath:t.workspacePath,filePath:t.filePath,eventType:t.eventType,size:t.size};B.append(e)}}function ee(t,n){const c=U.get(t);if(!c||!n)return;const e=`${c.outputBuffer}${n}`;if(e.length<=M){c.outputBuffer=e;return}const o=`\r
|
|
3
3
|
[AgentsWorkStudio: omitted ${e.length-M} chars of old terminal output]\r
|
|
4
|
-
`,
|
|
4
|
+
`,a=Math.max(0,M-o.length);c.outputBuffer=`${o}${e.slice(-a)}`}function X(t){const n=U.get(t);n&&(n.flushTimer||(n.flushTimer=setTimeout(()=>{n.flushTimer=null,q(t).catch(()=>{})},D)))}async function q(t){const n=U.get(t);if(!n||n.flushInFlight||!n.outputBuffer)return;const c=n.outputBuffer.slice(0,g);n.outputBuffer=n.outputBuffer.slice(g);const e=(async()=>{const r=n.seq+1;n.seq=r,await F(n.agentId,c,t,r),U.get(t)?.outputBuffer&&X(t)})();n.flushInFlight=e;try{await e}finally{const r=U.get(t);r&&(r.flushInFlight=null)}}export{ee as appendSessionOutput,B as bridgeEventBuffer,q as flushSessionOutput,X as scheduleOutputFlush,I as sendFileChanged,F as sendOutput,Y as sendQuestionRequest,V as sendStatus,Z as sendToolAuthRequest,U as sessions};
|
|
5
5
|
|
|
@@ -1,4 +1,23 @@
|
|
|
1
1
|
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
import { type UserScope } from "./user-scope.js";
|
|
2
21
|
export interface DeployedSkillEntry {
|
|
3
22
|
skillName: string;
|
|
4
23
|
zipFile: string;
|
|
@@ -16,9 +35,15 @@ export interface DeployedSkillResult {
|
|
|
16
35
|
|
|
17
36
|
export declare function isValidSkillName(name: unknown): name is string;
|
|
18
37
|
export declare class SkillManager {
|
|
38
|
+
private readonly scope;
|
|
19
39
|
private readonly rootDir;
|
|
20
|
-
private static
|
|
21
|
-
|
|
40
|
+
private static instances;
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
static forScope(scope: UserScope): SkillManager;
|
|
22
47
|
private constructor();
|
|
23
48
|
private manifestFile;
|
|
24
49
|
private skillDir;
|
|
@@ -26,6 +51,11 @@ export declare class SkillManager {
|
|
|
26
51
|
private readManifest;
|
|
27
52
|
private writeManifest;
|
|
28
53
|
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
29
59
|
saveSharedSkill(zipBuffer: Buffer, originalName: string, defaultEnabled?: boolean, sha256?: string, requestedSkillName?: string): Promise<DeployedSkillResult>;
|
|
30
60
|
|
|
31
61
|
removeDeployedSkill(skillName: string): Promise<{
|
|
@@ -39,6 +69,9 @@ export declare class SkillManager {
|
|
|
39
69
|
private readPrivateManifest;
|
|
40
70
|
private writePrivateManifest;
|
|
41
71
|
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
42
75
|
savePrivateSkill(agentId: string, zipBuffer: Buffer, originalName: string, sha256?: string, requestedSkillName?: string): Promise<DeployedSkillResult>;
|
|
43
76
|
|
|
44
77
|
removePrivateSkill(agentId: string, skillName: string): Promise<{
|
|
@@ -50,7 +83,11 @@ export declare class SkillManager {
|
|
|
50
83
|
|
|
51
84
|
deployedDefaultEnabled(): Record<string, boolean>;
|
|
52
85
|
|
|
53
|
-
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
private applyToUserAgents;
|
|
54
90
|
}
|
|
55
|
-
|
|
56
|
-
export declare
|
|
91
|
+
|
|
92
|
+
export declare function getSkillManager(scope: UserScope): SkillManager;
|
|
93
|
+
export declare const reconcileSkillsDefaultsFromDeployed: (scope: UserScope) => number;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{promises as F,cpSync as
|
|
2
|
-
`,"utf8")}async saveSharedSkill(r,e,t=!0,o,
|
|
3
|
-
`,"utf8")}async savePrivateSkill(r,e,t,o,
|
|
1
|
+
import{promises as F,cpSync as d,existsSync as p,mkdirSync as D,readFileSync as E,rmSync as h,writeFileSync as P}from"node:fs";import i from"node:path";import{getBridgeInstancePrivateSkillsDir as N,getBridgeInstancePrivateSkillsManifest as z}from"../config.js";import{runExclusiveConfigWrite as w}from"../utils/config-write-queue.js";import{extractSkillZip as K,resolveSkillSourceDirFromExtractRoot as A}from"../utils/file-utils.js";import{createLogger as J}from"../utils/logger.js";import{syncAgentSkillFarm as L}from"./agent-capability-sync.js";import{listAgentsOwnedBy as R}from"./agent-ownership.js";import{setDeployedDefaultsProvider as _,reconcileDefaultsFromDeployed as T}from"./capability-config.js";import{getAgentInitRoot as j}from"./instance-state.js";import{getUserSkillsDeployedDir as U}from"./user-scope.js";const v=J("skill-manager");function M(a){return typeof a=="string"&&a.length>0&&a.length<=128&&/^[a-zA-Z0-9_.-]+$/.test(a)}const x=1;class g{static forScope(r){const e=U(r),t=i.resolve(e);let o=this.instances.get(t);return o||(o=new g(r,e),this.instances.set(t,o)),o}constructor(r,e){this.scope=r,this.rootDir=e}manifestFile(){return i.join(this.rootDir,"manifest.json")}skillDir(r){const e=i.join(this.rootDir,r),t=i.resolve(this.rootDir);if(i.resolve(e)!==i.join(t,r))throw new Error(`\u6280\u80FD\u76EE\u5F55\u8D8A\u51FA\u90E8\u7F72\u533A: ${r}`);return e}isHealthy(r){return p(i.join(this.skillDir(r),"SKILL.md"))}readManifest(){try{const r=JSON.parse(E(this.manifestFile(),"utf8"));return Array.isArray(r.skills)?r.skills.filter(e=>e&&e.skillName):[]}catch{return[]}}writeManifest(r){D(this.rootDir,{recursive:!0}),P(this.manifestFile(),`${JSON.stringify({version:x,skills:r},null,2)}
|
|
2
|
+
`,"utf8")}async saveSharedSkill(r,e,t=!0,o,S){if(!r||r.length===0)return{ok:!1,error:"zip \u5305\u5185\u5BB9\u4E3A\u7A7A"};const y=i.join(j("_tmp"),`skill-deploy-${Date.now()}-${Math.random().toString(36).slice(2,8)}`);try{await b(r,y);const n=await A(y),l=i.basename(i.resolve(n)),$=String(e||"").replace(/\.zip$/i,"").trim(),s=S&&S.trim()||(l&&!l.startsWith("skill-deploy-")?l:"")||$;if(!M(s))return{ok:!1,error:`\u6280\u80FD\u540D\u975E\u6CD5: ${JSON.stringify(s)}`};if(!p(i.join(n,"SKILL.md")))return{ok:!1,error:`\u6280\u80FD\u5305\u7F3A\u5C11 SKILL.md: ${e}`};const u=this.readManifest().find(c=>c.skillName===s);if(u&&u.sha256===o&&this.isHealthy(s))return{ok:!0,skillName:s};D(this.rootDir,{recursive:!0});const m=this.skillDir(s),k=i.join(this.rootDir,`.old-${s}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`);if(p(m))try{d(m,k,{recursive:!0})}catch{h(m,{recursive:!0,force:!0})}try{d(n,m,{recursive:!0})}catch(c){throw p(k)&&(h(m,{recursive:!0,force:!0}),d(k,m,{recursive:!0})),c}return p(k)&&h(k,{recursive:!0,force:!0}),await w(this.manifestFile(),()=>{const c=this.readManifest().filter(f=>f.skillName!==s);c.push({skillName:s,zipFile:u?.zipFile??`${s}.zip`,fileName:e,defaultEnabled:t,sha256:o}),this.writeManifest(c)}),v.info("[shared] \u6280\u80FD\u5DF2\u90E8\u7F72\u5230\u7528\u6237\u5E93: %s\uFF08scope=%s/%s \u6765\u6E90 %s%s\uFF09",s,this.scope.tenantId,this.scope.userId,e,o?`, sha256=${o.slice(0,12)}\u2026`:""),this.applyToUserAgents(),{ok:!0,skillName:s}}catch(n){const l=n instanceof Error?n.message:String(n);return v.warn("[shared] \u6280\u80FD\u90E8\u7F72\u5931\u8D25\uFF08%s\uFF09: %s",e,l),{ok:!1,error:`\u6280\u80FD\u90E8\u7F72\u5931\u8D25: ${l}`}}finally{try{h(y,{recursive:!0,force:!0})}catch{}}}async removeDeployedSkill(r){if(!M(r))return{ok:!1,error:"skillName \u975E\u6CD5"};await w(this.manifestFile(),()=>{const e=this.readManifest().filter(t=>t.skillName!==r);this.writeManifest(e)});try{h(this.skillDir(r),{recursive:!0,force:!0})}catch(e){return{ok:!1,error:`\u90E8\u7F72\u76EE\u5F55\u6E05\u7406\u5931\u8D25: ${e instanceof Error?e.message:String(e)}`}}return this.applyToUserAgents(),v.info("[shared] \u6280\u80FD\u5DF2\u4ECE\u7528\u6237\u5E93\u79FB\u9664\u90E8\u7F72: %s",r),{ok:!0}}listDeployed(){return this.readManifest().filter(r=>!/^skill-deploy-/.test(r.skillName)).map(r=>({...r,deployed:this.isHealthy(r.skillName)}))}privateManifestFile(r){return z(r)}privateSkillDir(r,e){const t=i.resolve(N(r)),o=i.join(t,e);if(i.resolve(o)!==i.join(t,e))throw new Error(`\u79C1\u6709\u6280\u80FD\u76EE\u5F55\u8D8A\u51FA\u5B9E\u4F8B\u79C1\u6709\u533A: ${e}`);return o}readPrivateManifest(r){try{const e=JSON.parse(E(this.privateManifestFile(r),"utf8"));return Array.isArray(e.skills)?e.skills.filter(t=>t&&t.skillName):[]}catch{return[]}}writePrivateManifest(r,e){const t=this.privateManifestFile(r);D(i.dirname(t),{recursive:!0}),P(t,`${JSON.stringify({version:x,skills:e},null,2)}
|
|
3
|
+
`,"utf8")}async savePrivateSkill(r,e,t,o,S){if(!r)return{ok:!1,error:"agentId is required"};if(!e||e.length===0)return{ok:!1,error:"zip \u5305\u5185\u5BB9\u4E3A\u7A7A"};const y=i.join(j("_tmp"),`skill-private-${Date.now()}-${Math.random().toString(36).slice(2,8)}`);try{await b(e,y);const n=await A(y),l=i.basename(i.resolve(n)),$=String(t||"").replace(/\.zip$/i,"").trim(),s=S&&S.trim()||(l&&!l.startsWith("skill-private-")?l:"")||$;if(!M(s))return{ok:!1,error:`\u6280\u80FD\u540D\u975E\u6CD5: ${JSON.stringify(s)}`};if(!p(i.join(n,"SKILL.md")))return{ok:!1,error:`\u6280\u80FD\u5305\u7F3A\u5C11 SKILL.md: ${t}`};const u=this.privateSkillDir(r,s),m=N(r);D(m,{recursive:!0});const k=this.readPrivateManifest(r).find(f=>f.skillName===s);if(k&&k.sha256===o&&p(i.join(u,"SKILL.md")))return{ok:!0,skillName:s};const c=i.join(m,`.old-${s}-${Date.now()}-${Math.random().toString(36).slice(2,8)}`);if(p(u))try{d(u,c,{recursive:!0})}catch{h(u,{recursive:!0,force:!0})}try{d(n,u,{recursive:!0})}catch(f){throw p(c)&&(h(u,{recursive:!0,force:!0}),d(c,u,{recursive:!0})),f}p(c)&&h(c,{recursive:!0,force:!0}),await w(this.privateManifestFile(r),()=>{const f=this.readPrivateManifest(r).filter(O=>O.skillName!==s);f.push({skillName:s,zipFile:k?.zipFile??`${s}.zip`,fileName:t,defaultEnabled:!0,sha256:o}),this.writePrivateManifest(r,f)}),v.info("[private] agent=%s \u79C1\u6709\u6280\u80FD\u5DF2\u5B89\u88C5: %s\uFF08\u6765\u6E90 %s%s\uFF09",r,s,t,o?`, sha256=${o.slice(0,12)}\u2026`:"");try{L(r)}catch(f){v.warn("[private] agent=%s \u79C1\u6709\u6280\u80FD\u5B89\u88C5\u540E\u540C\u6B65\u519C\u573A\u5931\u8D25: %s",r,f instanceof Error?f.message:String(f))}return{ok:!0,skillName:s}}catch(n){const l=n instanceof Error?n.message:String(n);return v.warn("[private] \u79C1\u6709\u6280\u80FD\u5B89\u88C5\u5931\u8D25\uFF08%s\uFF09: %s",t,l),{ok:!1,error:`\u79C1\u6709\u6280\u80FD\u5B89\u88C5\u5931\u8D25: ${l}`}}finally{try{h(y,{recursive:!0,force:!0})}catch{}}}async removePrivateSkill(r,e){if(!r)return{ok:!1,error:"agentId is required"};if(!M(e))return{ok:!1,error:"skillName \u975E\u6CD5"};await w(this.privateManifestFile(r),()=>{const t=this.readPrivateManifest(r).filter(o=>o.skillName!==e);this.writePrivateManifest(r,t)});try{h(this.privateSkillDir(r,e),{recursive:!0,force:!0})}catch(t){return{ok:!1,error:`\u79C1\u6709\u6280\u80FD\u76EE\u5F55\u6E05\u7406\u5931\u8D25: ${t instanceof Error?t.message:String(t)}`}}try{L(r)}catch{}return v.info("[private] agent=%s \u79C1\u6709\u6280\u80FD\u5DF2\u79FB\u9664: %s",r,e),{ok:!0}}listPrivateSkills(r){return r?this.readPrivateManifest(r).filter(e=>!/^skill-private-/.test(e.skillName)).map(e=>({...e,deployed:p(i.join(this.privateSkillDir(r,e.skillName),"SKILL.md"))})):[]}deployedDefaultEnabled(){const r={};for(const e of this.readManifest())/^skill-deploy-/.test(e.skillName)||(r[e.skillName]=e.defaultEnabled);return r}applyToUserAgents(){for(const r of R(this.scope))try{L(r)}catch(e){v.warn("[shared] \u540C\u6B65\u6280\u80FD\u519C\u573A\u5931\u8D25 agent=%s: %s",r,e instanceof Error?e.message:String(e))}}}g.instances=new Map;function Y(a){return g.forScope(a)}async function b(a,r){const e=i.join(j("_tmp"),`skill-${Date.now()}-${Math.random().toString(36).slice(2,8)}.zip`);await F.mkdir(i.dirname(e),{recursive:!0}),await F.writeFile(e,a);try{await K(e,r)}finally{await F.rm(e,{force:!0}).catch(()=>{})}}_("skills",a=>a?g.forScope(a).deployedDefaultEnabled():{});const rr=a=>T(a,"skills");export{g as SkillManager,Y as getSkillManager,M as isValidSkillName,rr as reconcileSkillsDefaultsFromDeployed};
|
|
4
4
|
|
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
3
26
|
export declare function setSnapshotRetentionDays(days: unknown, fromConfig?: boolean): void;
|
|
4
27
|
|
|
5
28
|
export declare function getSnapshotRetentionDays(): number | null;
|
|
@@ -6,11 +6,14 @@ interface AutoRegisterTargetConfig {
|
|
|
6
6
|
[key: string]: unknown;
|
|
7
7
|
}
|
|
8
8
|
interface StartupConfigFile {
|
|
9
|
-
connectionKey?: string;
|
|
10
9
|
autoRegisterTargets?: AutoRegisterTargetConfig[];
|
|
11
10
|
[key: string]: unknown;
|
|
12
11
|
}
|
|
13
12
|
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
14
17
|
export declare const MINIMAL_CONFIG_TEMPLATE: StartupConfigFile;
|
|
15
18
|
|
|
16
19
|
export declare function formatConfigExample(template?: object): string;
|
|
@@ -29,5 +32,8 @@ export type StartupConfigWizardResult = "exists" | "created" | "configured" | "s
|
|
|
29
32
|
export declare function ensureStartupConfig(options?: EnsureStartupConfigOptions): Promise<StartupConfigWizardResult>;
|
|
30
33
|
export declare function configureStartupConfig(options?: EnsureStartupConfigOptions): Promise<StartupConfigWizardResult>;
|
|
31
34
|
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
32
38
|
export declare function printConfigExampleCommand(options?: EnsureStartupConfigOptions): Promise<StartupConfigWizardResult>;
|
|
33
39
|
export {};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import{randomBytes as
|
|
1
|
+
import{randomBytes as T}from"node:crypto";import{existsSync as m,readFileSync as R}from"node:fs";import E from"node:os";import{stdin as x,stdout as i}from"node:process";import{createInterface as _}from"node:readline/promises";import{atomicWriteJsonFile as U}from"../utils/file-utils.js";import{logger as o}from"../utils/logger.js";import{getAutoRegisterConfigFilePath as d}from"./auto-register.js";const w={autoRegisterTargets:[{instanceName:"<\u5B9E\u4F8B\u540D\u79F0\uFF0C\u4F8B\u5982 \u6211\u7684\u4E3B\u673A>",serverUrl:"http://<\u8C03\u5EA6\u4E2D\u5FC3IP>:<\u7AEF\u53E3>",userKey:"<\u4F60\u7684 userKey>",connectionKey:"<\u8BE5 target \u4E13\u7528\u8FDE\u63A5\u5BC6\u94A5\uFF0C\u53EF\u7531\u5411\u5BFC\u751F\u6210>",instanceId:"<\u5B9E\u4F8BID\uFF0C\u9996\u6B21\u53EF\u7559\u7A7A\u7531\u670D\u52A1\u7AEF\u751F\u6210>"}],panelUsername:"<\u9762\u677F\u7528\u6237\u540D>",panelPassword:"<\u9762\u677F\u5BC6\u7801>"};function K(t=w){return`[runtime-bridge] \u6700\u5C0F\u914D\u7F6E\u793A\u4F8B\uFF08\u8BF7\u5C06 <\u5360\u4F4D\u7B26> \u66FF\u6362\u4E3A\u771F\u5B9E\u503C\u540E\u4FDD\u5B58\uFF09:
|
|
2
2
|
${JSON.stringify(t,null,2)}
|
|
3
|
-
[runtime-bridge] \u8BF4\u660E\
|
|
4
|
-
[runtime-bridge] \u81EA\u52A8\u751F\u6210 connectionKey: ${
|
|
5
|
-
[runtime-bridge] \u8BF7\u4FDD\u5B58\u8BE5 connectionKey\uFF1Bserver/\u9762\u677F\u8FDE\u63A5\u6B64 Bridge \u65F6\u9700\u8981\u4F7F\u7528\u5B83\u3002`;o.info(
|
|
6
|
-
`)}async function y(t,e,
|
|
7
|
-
`)}}async function
|
|
8
|
-
`)}}async function q(t){for(;;){const e=await t.question("\u672A\u68C0\u6D4B\u5230\u914D\u7F6E\u6587\u4EF6\uFF0C\u8BF7\u9009\u62E9\u914D\u7F6E\u65B9\u5F0F\uFF1A[1] \u5B8C\u6574\u9010\u6B65\u5F15\u5BFC [2] \u6700\u5C0F\u914D\u7F6E\u793A\u4F8B\uFF08\u751F\u6210\u5360\u4F4D\u7B26\u6A21\u677F\uFF0C\u7A0D\u540E\u624B\u52A8\u586B\u5199\uFF09 (\u9ED8\u8BA4 1): "),
|
|
9
|
-
`)}}async function
|
|
3
|
+
[runtime-bridge] \u8BF4\u660E\uFF1AconnectionKey \u5C5E\u4E8E\u6BCF\u4E2A target\uFF0C\u591A\u4E2A target \u4E0D\u5F97\u5171\u7528\uFF1BinstanceId \u9996\u6B21\u53EF\u7701\u7565\uFF0C\u7531\u670D\u52A1\u7AEF\u751F\u6210\uFF1BpanelUsername / panelPassword \u4E3A\u53EF\u9009\u9762\u677F\u8BA4\u8BC1\u3002`}function l(t){return t.trim().toLowerCase()}function N(t){return["","y","yes","\u662F","\u597D","\u914D\u7F6E"].includes(l(t))}function k(t){return["n","no","\u5426","\u4E0D","\u8DF3\u8FC7","skip","s"].includes(l(t))}function B(t){if(!m(t))return{};try{const e=JSON.parse(R(t,"utf-8"));return e&&typeof e=="object"&&!Array.isArray(e)?e:{}}catch(e){const n=e;return o.warn(`[runtime-bridge] \u8BFB\u53D6\u73B0\u6709\u914D\u7F6E\u5931\u8D25\uFF0C\u5C06\u4F7F\u7528\u7A7A\u9ED8\u8BA4\u503C: ${n.message}`),{}}}function Y(){return`awsb_${T(24).toString("base64url")}`}async function g(t,e){await U(t,e)}async function p(t,e){const n=e();await g(t,{connectionKey:n});const r=`[runtime-bridge] \u5DF2\u521B\u5EFA\u914D\u7F6E\u6587\u4EF6: ${t}
|
|
4
|
+
[runtime-bridge] \u81EA\u52A8\u751F\u6210 connectionKey: ${n}
|
|
5
|
+
[runtime-bridge] \u8BF7\u4FDD\u5B58\u8BE5 connectionKey\uFF1Bserver/\u9762\u677F\u8FDE\u63A5\u6B64 Bridge \u65F6\u9700\u8981\u4F7F\u7528\u5B83\u3002`;o.info(r),i.write(`${r}
|
|
6
|
+
`)}async function y(t,e,n){return(await t.question(`${e}\uFF08\u9ED8\u8BA4\u4F7F\u7528\u5F53\u524D\u503C ${n}\uFF0C\u76F4\u63A5\u56DE\u8F66\u4FDD\u7559\uFF09: `)).trim()||n}const $=10;async function b(t,e,n){let r=0;for(;;){const a=(await t.question(n?`${e}\uFF08\u9ED8\u8BA4\u4F7F\u7528\u5F53\u524D\u503C ${n}\uFF0C\u76F4\u63A5\u56DE\u8F66\u4FDD\u7559\uFF09: `:`${e}: `)).trim();if(a)return a;if(n)return n;if(r++,r>=$)throw new Error(`${e} \u8F93\u5165\u8D85\u8FC7\u6700\u5927\u91CD\u8BD5\u6B21\u6570\uFF08${$}\uFF09\uFF0C\u9000\u51FA\u914D\u7F6E\u5F15\u5BFC`);i.write(`${e} \u4E0D\u80FD\u4E3A\u7A7A\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165\u3002
|
|
7
|
+
`)}}async function W(t){for(;;){const e=await t.question(`\u672A\u68C0\u6D4B\u5230 ${d()}\uFF0C\u662F\u5426\u73B0\u5728\u8FDB\u5165\u81EA\u52A8\u6CE8\u518C\u914D\u7F6E\u5F15\u5BFC\uFF1F(Y/n): `);if(N(e))return!0;if(k(e))return!1;i.write(`\u8BF7\u8F93\u5165 Y \u7EE7\u7EED\u914D\u7F6E\uFF0C\u6216\u8F93\u5165 n \u8DF3\u8FC7\u3002
|
|
8
|
+
`)}}async function q(t){for(;;){const e=await t.question("\u672A\u68C0\u6D4B\u5230\u914D\u7F6E\u6587\u4EF6\uFF0C\u8BF7\u9009\u62E9\u914D\u7F6E\u65B9\u5F0F\uFF1A[1] \u5B8C\u6574\u9010\u6B65\u5F15\u5BFC [2] \u6700\u5C0F\u914D\u7F6E\u793A\u4F8B\uFF08\u751F\u6210\u5360\u4F4D\u7B26\u6A21\u677F\uFF0C\u7A0D\u540E\u624B\u52A8\u586B\u5199\uFF09 (\u9ED8\u8BA4 1): "),n=l(e);if(n===""||n==="1"||n==="full"||n==="\u5B8C\u6574"||n==="\u5F15\u5BFC")return"full";if(n==="2"||n==="minimal"||n==="\u6700\u5C0F"||n==="\u793A\u4F8B")return"minimal";i.write(`\u8BF7\u8F93\u5165 1\uFF08\u5B8C\u6574\u5F15\u5BFC\uFF09\u6216 2\uFF08\u6700\u5C0F\u914D\u7F6E\u793A\u4F8B\uFF09\u3002
|
|
9
|
+
`)}}async function S(t,e={}){const n=e.autoRegisterTargets?.[0]||{},r="http://127.0.0.1:8080",a=E.hostname()||"AgentsWork Runtime Bridge",c=n.registerAddr||n.registerIp||"127.0.0.1",u=await b(t,"connectionKey\uFF08\u8BE5 target \u4E13\u7528\u8FDE\u63A5\u5BC6\u94A5\uFF09",String(n.connectionKey||e.connectionKey||"").trim()||void 0),f=await y(t,"serverUrl\uFF08\u8C03\u5EA6\u4E2D\u5FC3\u5730\u5740\uFF09",n.serverUrl||r),v=await y(t,"instanceName\uFF08\u5B9E\u4F8B\u540D\u79F0\uFF09",n.instanceName||a),A=await b(t,"userKey\uFF08\u7528\u6237 API Key\uFF09",n.userKey),P=await y(t,"registerAddr\uFF08Bridge \u5BF9\u5916\u8BBF\u95EE\u5730\u5740\uFF0C\u652F\u6301 host:port / \u7EAF host / \u5B8C\u6574 URL\uFF09",c),C={...n};delete C.registerIp;const h={...e};return delete h.connectionKey,{...h,autoRegisterTargets:[{...C,serverUrl:f,instanceName:v,userKey:A,connectionKey:u,registerAddr:P}]}}async function I(t){return{prompt:t.prompt||_({input:x,output:i,terminal:!0}),shouldClosePrompt:!t.prompt}}async function z(t={}){const e=t.configPath||d(),n=t.generateConnectionKey||Y;if(m(e))return"exists";if((t.env||process.env).AWS_BRIDGE_SKIP_SETUP==="true")return await p(e,n),o.info("[runtime-bridge] AWS_BRIDGE_SKIP_SETUP=true\uFF0C\u8DF3\u8FC7\u9996\u6B21\u914D\u7F6E\u5F15\u5BFC"),"skipped";if(!(t.interactive??!!(process.stdin.isTTY&&process.stdout.isTTY)))return await p(e,n),o.info(`[runtime-bridge] \u672A\u68C0\u6D4B\u5230\u914D\u7F6E\u6587\u4EF6: ${e}\uFF1B\u5F53\u524D\u4E3A\u975E\u4EA4\u4E92\u73AF\u5883\uFF0C\u8DF3\u8FC7\u9996\u6B21\u914D\u7F6E\u5F15\u5BFC`),"non-interactive";const{prompt:s,shouldClosePrompt:c}=await I(t);try{if(!await W(s))return await p(e,n),o.info("[runtime-bridge] \u5DF2\u8DF3\u8FC7\u9996\u6B21\u914D\u7F6E\u5F15\u5BFC"),"skipped";const f=await S(s);return await g(e,f),o.info(`[runtime-bridge] \u5DF2\u5199\u5165\u914D\u7F6E\u6587\u4EF6: ${e}`),"created"}catch(u){const f=u;return o.warn(`[runtime-bridge] \u9996\u6B21\u914D\u7F6E\u5F15\u5BFC\u5931\u8D25: ${f.message}`),"failed"}finally{c&&s.close()}}async function Q(t={}){const e=t.configPath||d();if(!(t.interactive??!!(process.stdin.isTTY&&process.stdout.isTTY)))return o.warn("[runtime-bridge] awsb config \u9700\u8981\u4EA4\u4E92\u5F0F\u7EC8\u7AEF"),"failed";const{prompt:r,shouldClosePrompt:a}=await I(t);try{const s=B(e);if(!m(e)&&await q(r)==="minimal")return i.write(K()),await g(e,w),i.write(`[runtime-bridge] \u5DF2\u5C06\u6700\u5C0F\u914D\u7F6E\u793A\u4F8B\u6A21\u677F\u5199\u5165: ${e}
|
|
10
10
|
`),i.write(`[runtime-bridge] \u8BF7\u5C06 <\u5360\u4F4D\u7B26> \u66FF\u6362\u4E3A\u771F\u5B9E\u503C\u540E\u4FDD\u5B58\u3002
|
|
11
|
-
`),"created";const u=await
|
|
11
|
+
`),"created";const u=await S(r,s);return await g(e,u),o.info(`[runtime-bridge] \u5DF2\u66F4\u65B0\u914D\u7F6E\u6587\u4EF6: ${e}`),"configured"}catch(s){const c=s;return o.warn(`[runtime-bridge] \u914D\u7F6E\u5F15\u5BFC\u5931\u8D25: ${c.message}`),"failed"}finally{a&&r.close()}}async function X(t={}){const e=t.configPath||d();i.write(K());try{return await g(e,w),i.write(`[runtime-bridge] \u5DF2\u5C06\u6700\u5C0F\u914D\u7F6E\u793A\u4F8B\u6A21\u677F\u5199\u5165: ${e}
|
|
12
12
|
`),i.write(`[runtime-bridge] \u8BF7\u5C06 <\u5360\u4F4D\u7B26> \u66FF\u6362\u4E3A\u771F\u5B9E\u503C\u540E\u4FDD\u5B58\u3002
|
|
13
|
-
`),"created"}catch(
|
|
13
|
+
`),"created"}catch(n){const r=n;return o.warn(`[runtime-bridge] \u5199\u5165\u793A\u4F8B\u6A21\u677F\u5931\u8D25: ${r.message}`),"failed"}}export{w as MINIMAL_CONFIG_TEMPLATE,Q as configureStartupConfig,z as ensureStartupConfig,K as formatConfigExample,X as printConfigExampleCommand};
|
|
14
14
|
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
3
11
|
export type LaunchStackType = "generic" | "java" | "python" | "node" | "go" | "php";
|
|
4
12
|
export interface TechStackCandidate {
|
|
5
13
|
|
|
@@ -28,4 +36,8 @@ export interface TechStackScanResult {
|
|
|
28
36
|
candidates: TechStackCandidate[];
|
|
29
37
|
}
|
|
30
38
|
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
31
43
|
export declare function scanTechStack(workspacePath: string): Promise<TechStackScanResult>;
|
|
@@ -1,19 +1,48 @@
|
|
|
1
1
|
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
2
6
|
import type { PersistedSession } from '../types.js';
|
|
3
7
|
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
4
12
|
export declare function getPersistedSessionsFile(): string;
|
|
5
13
|
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
6
18
|
export declare function loadPersistedSessions(): Promise<PersistedSession[]>;
|
|
7
19
|
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
8
24
|
export declare function savePersistedSessions(sessions: PersistedSession[]): Promise<void>;
|
|
9
25
|
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
10
30
|
export declare function upsertPersistedSession(session: PersistedSession): Promise<void>;
|
|
11
31
|
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
12
36
|
export declare function updatePersistedSessionAutoCommands(agentId: string, commands: {
|
|
13
37
|
idleInputAutoCommand: string;
|
|
14
38
|
nonInputAutoCommand: string;
|
|
15
39
|
}): Promise<boolean>;
|
|
16
40
|
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
17
46
|
export declare function updatePersistedSessionRuntimeState(sessionId: string, runtimeState: {
|
|
18
47
|
runtimeStatus: string;
|
|
19
48
|
runtimeActionType?: string;
|
|
@@ -21,8 +50,22 @@ export declare function updatePersistedSessionRuntimeState(sessionId: string, ru
|
|
|
21
50
|
runtimeActionDetail?: string;
|
|
22
51
|
}): Promise<boolean>;
|
|
23
52
|
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
|
|
24
57
|
export declare function removePersistedSession(sessionId: string): Promise<void>;
|
|
25
58
|
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
26
64
|
export declare function findPersistedSessionByAgentId(agentId: string): Promise<PersistedSession | undefined>;
|
|
27
65
|
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
28
71
|
export declare function removePersistedSessionByAgentId(agentId: string): Promise<void>;
|
|
@@ -11,8 +11,12 @@ type ToolCommand = {
|
|
|
11
11
|
export declare const SUPPORTED_INSTALLABLE_TOOLS: readonly string[];
|
|
12
12
|
export declare const SUPPORTED_UNINSTALLABLE_TOOLS: readonly string[];
|
|
13
13
|
|
|
14
|
+
|
|
15
|
+
|
|
14
16
|
export declare function getToolUninstallCommands(tool: string): string[];
|
|
15
17
|
|
|
18
|
+
|
|
19
|
+
|
|
16
20
|
export declare function getToolCommandSpecs(tool: string, phase: "install" | "uninstall"): Array<{
|
|
17
21
|
command: string;
|
|
18
22
|
args: string[];
|
|
@@ -29,11 +33,19 @@ export declare function buildSdkCliInstallStatus(tool: string, sdkResult: {
|
|
|
29
33
|
error: string | null;
|
|
30
34
|
}, requiresCli: boolean): ToolInstallStatus;
|
|
31
35
|
|
|
36
|
+
|
|
37
|
+
|
|
32
38
|
export declare function detectToolInstallStatus(tool: string): Promise<ToolInstallStatus>;
|
|
33
39
|
|
|
40
|
+
|
|
41
|
+
|
|
34
42
|
export declare function detectToolStatuses(tools: string[]): Promise<Record<string, ToolInstallStatus>>;
|
|
35
43
|
|
|
44
|
+
|
|
45
|
+
|
|
36
46
|
export declare function ensureToolsInstalled(tools: string[]): Promise<Record<string, ToolInstallStatus>>;
|
|
37
47
|
|
|
48
|
+
|
|
49
|
+
|
|
38
50
|
export declare function uninstallTools(tools: string[]): Promise<Record<string, ToolInstallStatus>>;
|
|
39
51
|
export {};
|
|
@@ -1,4 +1,18 @@
|
|
|
1
1
|
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
2
16
|
import WebSocket from "ws";
|
|
3
17
|
interface LocalStream {
|
|
4
18
|
ws: WebSocket;
|
|
@@ -11,6 +25,13 @@ interface LocalStream {
|
|
|
11
25
|
interface TunnelState {
|
|
12
26
|
|
|
13
27
|
serverUrl: string;
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
targetKey: string;
|
|
33
|
+
|
|
34
|
+
userKey?: string;
|
|
14
35
|
instanceId: string;
|
|
15
36
|
ws?: WebSocket;
|
|
16
37
|
|
|
@@ -24,6 +45,10 @@ interface TunnelState {
|
|
|
24
45
|
shuttingDown: boolean;
|
|
25
46
|
}
|
|
26
47
|
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
27
52
|
interface PendingRequestChunks {
|
|
28
53
|
method: string;
|
|
29
54
|
path: string;
|
|
@@ -32,13 +57,39 @@ interface PendingRequestChunks {
|
|
|
32
57
|
timer: NodeJS.Timeout;
|
|
33
58
|
}
|
|
34
59
|
|
|
35
|
-
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
export declare function startTunnelClient(serverUrl: string, instanceId: string, userKey?: string): void;
|
|
36
64
|
|
|
37
65
|
export declare function stopTunnelClient(): void;
|
|
38
66
|
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
export declare function stopTunnelClientForTarget(serverUrl: string, userKey?: string): void;
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
39
76
|
export declare function stopTunnelClientForServer(serverUrl: string): void;
|
|
40
77
|
|
|
41
|
-
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
export declare function stopTunnelClientsExcept(targetKeys: string[]): void;
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
42
93
|
|
|
43
94
|
export declare const __tunnelClientTestHooks: {
|
|
44
95
|
createState(serverUrl?: string, instanceId?: string): TunnelState;
|
|
@@ -46,6 +97,10 @@ export declare const __tunnelClientTestHooks: {
|
|
|
46
97
|
|
|
47
98
|
pendingChunkIds(state: TunnelState): string[];
|
|
48
99
|
|
|
100
|
+
activeTargetKeys(): string[];
|
|
101
|
+
|
|
49
102
|
cleanup(state: TunnelState): void;
|
|
103
|
+
|
|
104
|
+
teardown(state: TunnelState): void;
|
|
50
105
|
};
|
|
51
106
|
export {};
|