@songsid/agend 2.3.4-beta.6 → 2.3.5-alpha.2
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/README.md +2 -0
- package/README.zh-TW.md +2 -0
- package/THIRD_PARTY_NOTICES.md +53 -0
- package/dist/agent-endpoint.d.ts +5 -1
- package/dist/agent-endpoint.js +12 -2
- package/dist/agent-endpoint.js.map +1 -1
- package/dist/backend/claude-code.d.ts +15 -12
- package/dist/backend/claude-code.js +137 -133
- package/dist/backend/claude-code.js.map +1 -1
- package/dist/backend/codex-package.d.ts +5 -2
- package/dist/backend/codex-package.js +1 -5
- package/dist/backend/codex-package.js.map +1 -1
- package/dist/backend/codex.d.ts +136 -113
- package/dist/backend/codex.js +1271 -1219
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/grok-model-cache.d.ts +7 -0
- package/dist/backend/grok-model-cache.js +65 -0
- package/dist/backend/grok-model-cache.js.map +1 -0
- package/dist/backend/grok.d.ts +2 -0
- package/dist/backend/grok.js +22 -0
- package/dist/backend/grok.js.map +1 -1
- package/dist/backend/native-pane.d.ts +9 -0
- package/dist/backend/native-pane.js +59 -0
- package/dist/backend/native-pane.js.map +1 -0
- package/dist/backend/types.d.ts +7 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/channel/ipc-bridge.d.ts +2 -0
- package/dist/channel/mcp-tools.js +1 -1
- package/dist/channel/mcp-tools.js.map +1 -1
- package/dist/cli.js +6 -2
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +59 -0
- package/dist/config-validator.js.map +1 -1
- package/dist/config.js +16 -0
- package/dist/config.js.map +1 -1
- package/dist/daemon.d.ts +62 -5
- package/dist/daemon.js +749 -267
- package/dist/daemon.js.map +1 -1
- package/dist/delivery-consumed-watch.d.ts +15 -3
- package/dist/delivery-consumed-watch.js +23 -1
- package/dist/delivery-consumed-watch.js.map +1 -1
- package/dist/delivery-outbox.d.ts +5 -0
- package/dist/delivery-outbox.js +32 -4
- package/dist/delivery-outbox.js.map +1 -1
- package/dist/delivery-reconciliation.d.ts +2 -35
- package/dist/delivery-reconciliation.js +2 -156
- package/dist/delivery-reconciliation.js.map +1 -1
- package/dist/fleet-context.d.ts +2 -2
- package/dist/fleet-level-config.d.ts +1 -1
- package/dist/fleet-level-config.js +2 -0
- package/dist/fleet-level-config.js.map +1 -1
- package/dist/fleet-manager.d.ts +125 -2
- package/dist/fleet-manager.js +1157 -27
- package/dist/fleet-manager.js.map +1 -1
- package/dist/fleet-windows-runtime.d.ts +92 -0
- package/dist/fleet-windows-runtime.js +373 -0
- package/dist/fleet-windows-runtime.js.map +1 -0
- package/dist/instance-config-impact.js +4 -0
- package/dist/instance-config-impact.js.map +1 -1
- package/dist/instance-lifecycle.d.ts +20 -3
- package/dist/instance-lifecycle.js +358 -156
- package/dist/instance-lifecycle.js.map +1 -1
- package/dist/local-pane-endpoint.d.ts +46 -0
- package/dist/local-pane-endpoint.js +189 -0
- package/dist/local-pane-endpoint.js.map +1 -0
- package/dist/local-pane-launcher.d.ts +2 -0
- package/dist/local-pane-launcher.js +38 -0
- package/dist/local-pane-launcher.js.map +1 -0
- package/dist/local-pane-stage.ps1 +101 -0
- package/dist/locale.js +34 -0
- package/dist/locale.js.map +1 -1
- package/dist/model-catalog-defaults.d.ts +14 -0
- package/dist/model-catalog-defaults.js +20 -0
- package/dist/model-catalog-defaults.js.map +1 -0
- package/dist/native-agent-admission.d.ts +7 -0
- package/dist/native-agent-admission.js +26 -0
- package/dist/native-agent-admission.js.map +1 -0
- package/dist/native-daemon-client.d.ts +13 -0
- package/dist/native-daemon-client.js +28 -0
- package/dist/native-daemon-client.js.map +1 -0
- package/dist/native-instance-api.d.ts +14 -0
- package/dist/native-instance-api.js +205 -0
- package/dist/native-instance-api.js.map +1 -0
- package/dist/native-instance-input.d.ts +84 -0
- package/dist/native-instance-input.js +54 -0
- package/dist/native-instance-input.js.map +1 -0
- package/dist/native-instance-registry.d.ts +32 -0
- package/dist/native-instance-registry.js +105 -0
- package/dist/native-instance-registry.js.map +1 -0
- package/dist/native-mcp.d.ts +40 -0
- package/dist/native-mcp.js +278 -0
- package/dist/native-mcp.js.map +1 -0
- package/dist/native-model-catalog.d.ts +5 -0
- package/dist/native-model-catalog.js +76 -0
- package/dist/native-model-catalog.js.map +1 -0
- package/dist/native-pane-crash-budget.d.ts +20 -0
- package/dist/native-pane-crash-budget.js +60 -0
- package/dist/native-pane-crash-budget.js.map +1 -0
- package/dist/native-pane-create.d.ts +26 -0
- package/dist/native-pane-create.js +53 -0
- package/dist/native-pane-create.js.map +1 -0
- package/dist/native-pane-lifecycle.d.ts +65 -0
- package/dist/native-pane-lifecycle.js +227 -0
- package/dist/native-pane-lifecycle.js.map +1 -0
- package/dist/native-pane-manager.d.ts +58 -0
- package/dist/native-pane-manager.js +563 -0
- package/dist/native-pane-manager.js.map +1 -0
- package/dist/native-pane-output-log.d.ts +15 -0
- package/dist/native-pane-output-log.js +108 -0
- package/dist/native-pane-output-log.js.map +1 -0
- package/dist/native-pane-reconciliation.d.ts +4 -0
- package/dist/native-pane-reconciliation.js +40 -0
- package/dist/native-pane-reconciliation.js.map +1 -0
- package/dist/native-pane-recovery.d.ts +12 -0
- package/dist/native-pane-recovery.js +10 -0
- package/dist/native-pane-recovery.js.map +1 -0
- package/dist/native-pane-tools.d.ts +2 -0
- package/dist/native-pane-tools.js +14 -0
- package/dist/native-pane-tools.js.map +1 -0
- package/dist/needs-you-hub.d.ts +2 -0
- package/dist/needs-you-hub.js +1 -0
- package/dist/needs-you-hub.js.map +1 -1
- package/dist/needs-you.d.ts +12 -1
- package/dist/needs-you.js +8 -1
- package/dist/needs-you.js.map +1 -1
- package/dist/outbound-handlers.d.ts +16 -2
- package/dist/outbound-handlers.js +67 -3
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/outbound-schemas.d.ts +38 -0
- package/dist/outbound-schemas.js +12 -0
- package/dist/outbound-schemas.js.map +1 -1
- package/dist/pane-port.d.ts +107 -0
- package/dist/pane-port.js +2 -0
- package/dist/pane-port.js.map +1 -0
- package/dist/runtime-api.d.ts +8 -0
- package/dist/runtime-api.js +96 -0
- package/dist/runtime-api.js.map +1 -0
- package/dist/runtime-assets/@xterm/addon-serialize/LICENSE +21 -0
- package/dist/runtime-assets/@xterm/addon-serialize/lib/addon-serialize.js +2 -0
- package/dist/runtime-assets/@xterm/addon-serialize/lib/addon-serialize.mjs +19 -0
- package/dist/runtime-assets/@xterm/addon-serialize/package.json +29 -0
- package/dist/runtime-assets/@xterm/headless/LICENSE +21 -0
- package/dist/runtime-assets/@xterm/headless/lib-headless/xterm-headless.js +2 -0
- package/dist/runtime-assets/@xterm/headless/lib-headless/xterm-headless.mjs +46 -0
- package/dist/runtime-assets/@xterm/headless/package.json +29 -0
- package/dist/runtime-assets/node-pty/CONPTY-LICENSE +21 -0
- package/dist/runtime-assets/node-pty/CONPTY-NOTICE.md +503 -0
- package/dist/runtime-assets/node-pty/LICENSE +69 -0
- package/dist/runtime-assets/node-pty/lib/conpty_console_list_agent.js +16 -0
- package/dist/runtime-assets/node-pty/lib/eventEmitter2.js +47 -0
- package/dist/runtime-assets/node-pty/lib/index.js +52 -0
- package/dist/runtime-assets/node-pty/lib/interfaces.js +7 -0
- package/dist/runtime-assets/node-pty/lib/shared/conout.js +11 -0
- package/dist/runtime-assets/node-pty/lib/terminal.js +190 -0
- package/dist/runtime-assets/node-pty/lib/types.js +7 -0
- package/dist/runtime-assets/node-pty/lib/unixTerminal.js +346 -0
- package/dist/runtime-assets/node-pty/lib/utils.js +39 -0
- package/dist/runtime-assets/node-pty/lib/windowsConoutConnection.js +125 -0
- package/dist/runtime-assets/node-pty/lib/windowsPtyAgent.js +320 -0
- package/dist/runtime-assets/node-pty/lib/windowsTerminal.js +199 -0
- package/dist/runtime-assets/node-pty/lib/worker/conoutSocketWorker.js +22 -0
- package/dist/runtime-assets/node-pty/package.json +64 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty.node +0 -0
- package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
- package/dist/runtime-bundle.d.ts +17 -0
- package/dist/runtime-bundle.js +147 -0
- package/dist/runtime-bundle.js.map +1 -0
- package/dist/runtime-cli.d.ts +2 -0
- package/dist/runtime-cli.js +117 -0
- package/dist/runtime-cli.js.map +1 -0
- package/dist/runtime-client-store.d.ts +49 -0
- package/dist/runtime-client-store.js +292 -0
- package/dist/runtime-client-store.js.map +1 -0
- package/dist/runtime-client.d.ts +100 -0
- package/dist/runtime-client.js +700 -0
- package/dist/runtime-client.js.map +1 -0
- package/dist/runtime-coordinator.d.ts +82 -0
- package/dist/runtime-coordinator.js +864 -0
- package/dist/runtime-coordinator.js.map +1 -0
- package/dist/runtime-pane-assets.d.ts +17 -0
- package/dist/runtime-pane-assets.js +23 -0
- package/dist/runtime-pane-assets.js.map +1 -0
- package/dist/runtime-pane-boot.d.ts +2 -0
- package/dist/runtime-pane-boot.js +24 -0
- package/dist/runtime-pane-boot.js.map +1 -0
- package/dist/runtime-pane-codex-index.d.ts +1 -0
- package/dist/runtime-pane-codex-index.js +47 -0
- package/dist/runtime-pane-codex-index.js.map +1 -0
- package/dist/runtime-pane-config.d.ts +16 -0
- package/dist/runtime-pane-config.js +54 -0
- package/dist/runtime-pane-config.js.map +1 -0
- package/dist/runtime-pane-host.d.ts +43 -0
- package/dist/runtime-pane-host.js +403 -0
- package/dist/runtime-pane-host.js.map +1 -0
- package/dist/runtime-pane-job-owner.d.ts +1 -0
- package/dist/runtime-pane-job-owner.js +29 -0
- package/dist/runtime-pane-job-owner.js.map +1 -0
- package/dist/runtime-pane-job.ps1 +116 -0
- package/dist/runtime-pane-link.d.ts +40 -0
- package/dist/runtime-pane-link.js +246 -0
- package/dist/runtime-pane-link.js.map +1 -0
- package/dist/runtime-pane-mcp-protocol.d.ts +32 -0
- package/dist/runtime-pane-mcp-protocol.js +39 -0
- package/dist/runtime-pane-mcp-protocol.js.map +1 -0
- package/dist/runtime-pane-mcp-relay.d.ts +17 -0
- package/dist/runtime-pane-mcp-relay.js +70 -0
- package/dist/runtime-pane-mcp-relay.js.map +1 -0
- package/dist/runtime-pane-mcp.d.ts +43 -0
- package/dist/runtime-pane-mcp.js +137 -0
- package/dist/runtime-pane-mcp.js.map +1 -0
- package/dist/runtime-pane-native.d.ts +45 -0
- package/dist/runtime-pane-native.js +65 -0
- package/dist/runtime-pane-native.js.map +1 -0
- package/dist/runtime-pane-output.d.ts +19 -0
- package/dist/runtime-pane-output.js +53 -0
- package/dist/runtime-pane-output.js.map +1 -0
- package/dist/runtime-pane-port.d.ts +134 -0
- package/dist/runtime-pane-port.js +537 -0
- package/dist/runtime-pane-port.js.map +1 -0
- package/dist/runtime-pane-private.d.ts +14 -0
- package/dist/runtime-pane-private.js +51 -0
- package/dist/runtime-pane-private.js.map +1 -0
- package/dist/runtime-pane-private.ps1 +14 -0
- package/dist/runtime-pane-process.d.ts +4 -0
- package/dist/runtime-pane-process.js +108 -0
- package/dist/runtime-pane-process.js.map +1 -0
- package/dist/runtime-pane-protocol.d.ts +169 -0
- package/dist/runtime-pane-protocol.js +189 -0
- package/dist/runtime-pane-protocol.js.map +1 -0
- package/dist/runtime-pane-screen.d.ts +19 -0
- package/dist/runtime-pane-screen.js +76 -0
- package/dist/runtime-pane-screen.js.map +1 -0
- package/dist/runtime-pane-service.d.ts +11 -0
- package/dist/runtime-pane-service.js +221 -0
- package/dist/runtime-pane-service.js.map +1 -0
- package/dist/runtime-pane-stdio-protocol.d.ts +54 -0
- package/dist/runtime-pane-stdio-protocol.js +94 -0
- package/dist/runtime-pane-stdio-protocol.js.map +1 -0
- package/dist/runtime-pane-stdio.d.ts +3 -0
- package/dist/runtime-pane-stdio.js +123 -0
- package/dist/runtime-pane-stdio.js.map +1 -0
- package/dist/runtime-pane-store.d.ts +33 -0
- package/dist/runtime-pane-store.js +164 -0
- package/dist/runtime-pane-store.js.map +1 -0
- package/dist/runtime-pane-transcript-protocol.d.ts +43 -0
- package/dist/runtime-pane-transcript-protocol.js +58 -0
- package/dist/runtime-pane-transcript-protocol.js.map +1 -0
- package/dist/runtime-pane-transcript.d.ts +45 -0
- package/dist/runtime-pane-transcript.js +605 -0
- package/dist/runtime-pane-transcript.js.map +1 -0
- package/dist/runtime-pane-worker.d.ts +1 -0
- package/dist/runtime-pane-worker.js +154 -0
- package/dist/runtime-pane-worker.js.map +1 -0
- package/dist/runtime-protocol.d.ts +149 -0
- package/dist/runtime-protocol.js +19 -0
- package/dist/runtime-protocol.js.map +1 -0
- package/dist/runtime-switches.d.ts +79 -0
- package/dist/runtime-switches.js +90 -0
- package/dist/runtime-switches.js.map +1 -0
- package/dist/runtime-transcript-delta-reader.d.ts +23 -0
- package/dist/runtime-transcript-delta-reader.js +74 -0
- package/dist/runtime-transcript-delta-reader.js.map +1 -0
- package/dist/runtime-transcript-source.d.ts +36 -0
- package/dist/runtime-transcript-source.js +189 -0
- package/dist/runtime-transcript-source.js.map +1 -0
- package/dist/runtime-windows-bridge.d.ts +41 -0
- package/dist/runtime-windows-bridge.js +157 -0
- package/dist/runtime-windows-bridge.js.map +1 -0
- package/dist/settings-api.js +58 -0
- package/dist/settings-api.js.map +1 -1
- package/dist/settings-change.js +28 -0
- package/dist/settings-change.js.map +1 -1
- package/dist/settings-confirmation.d.ts +15 -1
- package/dist/settings-confirmation.js +46 -9
- package/dist/settings-confirmation.js.map +1 -1
- package/dist/settings-effect.js +23 -1
- package/dist/settings-effect.js.map +1 -1
- package/dist/settings-http-confirmation.js +11 -2
- package/dist/settings-http-confirmation.js.map +1 -1
- package/dist/tmux-control.d.ts +2 -1
- package/dist/tmux-control.js.map +1 -1
- package/dist/tmux-manager.d.ts +2 -1
- package/dist/tmux-manager.js.map +1 -1
- package/dist/tmux-pane-host.d.ts +26 -0
- package/dist/tmux-pane-host.js +25 -0
- package/dist/tmux-pane-host.js.map +1 -0
- package/dist/topic-commands.js +3 -0
- package/dist/topic-commands.js.map +1 -1
- package/dist/transcript-delta-reader.d.ts +1 -1
- package/dist/transcript-delta-reader.js +1 -1
- package/dist/transcript-delta-reader.js.map +1 -1
- package/dist/transcript-monitor.d.ts +3 -0
- package/dist/transcript-monitor.js +22 -46
- package/dist/transcript-monitor.js.map +1 -1
- package/dist/transcript-needles.d.ts +35 -0
- package/dist/transcript-needles.js +158 -0
- package/dist/transcript-needles.js.map +1 -0
- package/dist/transcript-records.d.ts +21 -0
- package/dist/transcript-records.js +140 -0
- package/dist/transcript-records.js.map +1 -0
- package/dist/transcript-sources.d.ts +5 -0
- package/dist/transcript-sources.js +8 -79
- package/dist/transcript-sources.js.map +1 -1
- package/dist/types.d.ts +21 -0
- package/dist/ui/agent-proposals.js +90 -0
- package/dist/ui/agent-runtime.js +106 -0
- package/dist/ui/chat-store.js +13 -2
- package/dist/ui/chat-strings.js +48 -0
- package/dist/ui/cli-picker.js +42 -0
- package/dist/ui/native-instance-settings.js +47 -0
- package/dist/ui/native-pane-recovery.js +45 -0
- package/dist/ui/panel-chat.js +61 -32
- package/dist/ui/panel-details.js +2 -1
- package/dist/ui/panel-fleet.js +99 -18
- package/dist/ui/panel-needs.js +152 -3
- package/dist/ui/panel-runtimes.js +231 -0
- package/dist/ui/panel-settings.js +14 -8
- package/dist/ui/panel-windows-agent.js +86 -0
- package/dist/ui/panel-windows-cli.js +143 -0
- package/dist/ui/provider-marks.js +83 -0
- package/dist/ui/runtime-catalog.js +55 -0
- package/dist/ui/settings-catalog.js +37 -10
- package/dist/ui/settings-confirm.js +3 -1
- package/dist/ui/settings-dialogs.js +14 -5
- package/dist/ui/settings-registry.js +5 -0
- package/dist/ui/settings-strings.js +14 -0
- package/dist/ui/shared/app-i18n.js +2 -2
- package/dist/ui/shared/app-route.js +6 -2
- package/dist/ui/shared/app-shell.js +3 -2
- package/dist/ui/shared/app-store.js +1 -0
- package/dist/ui/shared/app-stream.js +3 -1
- package/dist/ui/shared/app.css +301 -0
- package/dist/ui/shared/app.js +4 -0
- package/dist/ui/shared/header-tools.js +6 -4
- package/dist/ui/shared/instance-nav.js +20 -4
- package/dist/ui/shared/instance-switch.js +4 -3
- package/dist/ui/shared/ui-menu.js +28 -8
- package/dist/ui/shared/view-strings.js +6 -0
- package/dist/ui/windows-agents-nav.js +2 -0
- package/dist/ui/windows-cli-catalog.js +79 -0
- package/dist/update-check.d.ts +8 -2
- package/dist/update-check.js +5 -2
- package/dist/update-check.js.map +1 -1
- package/dist/web-api.d.ts +25 -0
- package/dist/web-api.js +171 -6
- package/dist/web-api.js.map +1 -1
- package/dist/web-chat-history.d.ts +19 -2
- package/dist/web-chat-history.js +72 -3
- package/dist/web-chat-history.js.map +1 -1
- package/dist/web-shell-routes.d.ts +4 -1
- package/dist/web-shell-routes.js +7 -2
- package/dist/web-shell-routes.js.map +1 -1
- package/dist/windows-agents.d.ts +112 -0
- package/dist/windows-agents.js +463 -0
- package/dist/windows-agents.js.map +1 -0
- package/dist/windows-cli-api.d.ts +23 -0
- package/dist/windows-cli-api.js +158 -0
- package/dist/windows-cli-api.js.map +1 -0
- package/dist/windows-cli-providers.d.ts +115 -0
- package/dist/windows-cli-providers.js +429 -0
- package/dist/windows-cli-providers.js.map +1 -0
- package/dist/windows-cli-worker.d.ts +58 -0
- package/dist/windows-cli-worker.js +479 -0
- package/dist/windows-cli-worker.js.map +1 -0
- package/dist/windows-cli.d.ts +115 -0
- package/dist/windows-cli.js +402 -0
- package/dist/windows-cli.js.map +1 -0
- package/dist/windows-native-mcp.d.ts +19 -0
- package/dist/windows-native-mcp.js +143 -0
- package/dist/windows-native-mcp.js.map +1 -0
- package/dist/windows-pane-mcp.d.ts +26 -0
- package/dist/windows-pane-mcp.js +187 -0
- package/dist/windows-pane-mcp.js.map +1 -0
- package/package.json +9 -3
- package/templates/runtime-assets/conpty-LICENSE +21 -0
- package/templates/runtime-assets/conpty-NOTICE.md +503 -0
- package/templates/runtime-assets/local-pane-stage.ps1 +101 -0
- package/templates/runtime-assets/runtime-pane-job.ps1 +116 -0
- package/templates/runtime-assets/runtime-pane-private.ps1 +14 -0
- package/templates/runtime-assets/xterm-LICENSE +21 -0
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { t } from "./locale.js";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { readBoundedWebBody } from "./web-body.js";
|
|
4
|
+
import { nativeCliAuthorization } from "./windows-cli-api.js";
|
|
5
|
+
import { windowsCliEnabled } from "./windows-cli.js";
|
|
6
|
+
import { authorizeExplicitInstanceRemoval } from "./instance-removal.js";
|
|
7
|
+
import { isWindowsInstance, isNativePaneInstance } from "./native-instance-registry.js";
|
|
8
|
+
import { settingsRequestExecution } from "./settings-request-capability.js";
|
|
9
|
+
import { NativeInstancePatch, parseNativeInstanceCreate } from "./native-instance-input.js";
|
|
10
|
+
const Message = z.object({ requestId: z.string().uuid(), prompt: z.string().min(1).max(8000) }).strict();
|
|
11
|
+
function json(res, status, value) {
|
|
12
|
+
if (res.destroyed || res.writableEnded)
|
|
13
|
+
return;
|
|
14
|
+
res.writeHead(status, { "Content-Type": "application/json; charset=utf-8", "Cache-Control": "no-store" });
|
|
15
|
+
res.end(JSON.stringify(value));
|
|
16
|
+
}
|
|
17
|
+
function admission(req, res, url, ctx) {
|
|
18
|
+
if (!windowsCliEnabled()) {
|
|
19
|
+
json(res, 404, { error: "Windows runtime is not enabled" });
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
const allowed = () => nativeCliAuthorization(req, url, ctx);
|
|
23
|
+
if (!allowed()) {
|
|
24
|
+
json(res, 403, { error: "Windows runtime requires an administrator on the local dashboard" });
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
if (!ctx.nativeInstanceRuntime) {
|
|
28
|
+
json(res, 503, { error: "The Fleet Windows runtime is not available" });
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return allowed;
|
|
32
|
+
}
|
|
33
|
+
/** The Windows creation both paths run: the web's confirmed/direct request and #2942's confirmed agent request. */
|
|
34
|
+
export function createNativeWindowsInstance(host, parsed, allowed, execution) {
|
|
35
|
+
const { profile, input } = parsed;
|
|
36
|
+
return input.native_adapter === "pane"
|
|
37
|
+
? (() => { if (!execution || !host.createNativePaneInstance)
|
|
38
|
+
throw Error("Persistent pane creation requires its approved Settings operation"); return host.createNativePaneInstance(profile, input.channel_id, allowed, execution); })()
|
|
39
|
+
: (async () => { const runtime = host.nativeInstanceRuntime(); return execution ? runtime.create(profile, allowed, execution) : runtime.create(profile, allowed); })();
|
|
40
|
+
}
|
|
41
|
+
/** The Windows settings write both paths run (the web editor's PATCH and #2942's confirmed agent update). */
|
|
42
|
+
export function updateNativeWindowsInstance(host, name, patch, allowed, execution) {
|
|
43
|
+
const pane = isNativePaneInstance(host.fleetConfig?.instances[name]);
|
|
44
|
+
if (pane && !host.updateNativePaneConfig)
|
|
45
|
+
throw Error("Persistent pane settings are unavailable");
|
|
46
|
+
// The web's own calls keep their arguments exactly; only a settings execution adds its transaction.
|
|
47
|
+
if (pane)
|
|
48
|
+
return execution ? host.updateNativePaneConfig(name, patch, allowed, execution) : host.updateNativePaneConfig(name, patch, allowed);
|
|
49
|
+
return (async () => execution ? host.nativeInstanceRuntime().update(name, patch, allowed, execution) : host.nativeInstanceRuntime().update(name, patch, allowed))();
|
|
50
|
+
}
|
|
51
|
+
/** The shared creation route has already read the body; Linux creation continues through its existing lifecycle. */
|
|
52
|
+
export async function createNativeInstance(req, res, url, ctx, body) {
|
|
53
|
+
const allowed = admission(req, res, url, ctx);
|
|
54
|
+
if (!allowed)
|
|
55
|
+
return;
|
|
56
|
+
try {
|
|
57
|
+
const parsed = parseNativeInstanceCreate(body), execution = settingsRequestExecution(req);
|
|
58
|
+
const result = await createNativeWindowsInstance(ctx, parsed, allowed, execution);
|
|
59
|
+
// A committed settings execution has already checked authority and persisted the identity. Its capability
|
|
60
|
+
// cannot authorize another write, but the completed operation must still return its success receipt.
|
|
61
|
+
if (!execution?.completed && !allowed()) {
|
|
62
|
+
json(res, 403, { error: "Authorization expired" });
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
ctx.emitSseEvent("status", ctx.getUiStatus());
|
|
66
|
+
json(res, 201, result);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
// S-35: an approved Settings replay answers only the server's own collector, never a browser. Its execution ends with the
|
|
70
|
+
// failure, so allowed() is false there; answering "Authorization expired" hid the real cause (a relay that did not
|
|
71
|
+
// start, a startup race, the per-PC agent limit). A real browser request keeps the old rule.
|
|
72
|
+
const replay = settingsRequestExecution(req) != null, ok = replay || allowed();
|
|
73
|
+
json(res, ok ? 400 : 403, { error: ok ? (error instanceof Error ? error.message : "Could not create instance") : "Authorization expired" });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/** Common CRUD/message routes. The old native URLs remain compatibility aliases. */
|
|
77
|
+
export function handleNativeInstanceRequest(req, res, url, ctx) {
|
|
78
|
+
const match = /^\/ui\/instances\/([^/]+)(?:\/(messages|cancel|recover|recover-pane|new-conversation))?$/.exec(url.pathname);
|
|
79
|
+
if (!match)
|
|
80
|
+
return false;
|
|
81
|
+
let name;
|
|
82
|
+
try {
|
|
83
|
+
name = decodeURIComponent(match[1]);
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
if (!isWindowsInstance(ctx.fleetConfig?.instances[name]))
|
|
89
|
+
return false;
|
|
90
|
+
const allowed = admission(req, res, url, ctx);
|
|
91
|
+
if (!allowed)
|
|
92
|
+
return true;
|
|
93
|
+
const service = ctx.nativeInstanceRuntime(), operation = match[2], method = req.method ?? "GET";
|
|
94
|
+
void (async () => {
|
|
95
|
+
if (method === "GET" && !operation) {
|
|
96
|
+
json(res, 200, { name, runtime: "windows", agent: service.get(name) });
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
const raw = await readBoundedWebBody(req, 40_000);
|
|
100
|
+
if (!allowed()) {
|
|
101
|
+
json(res, 403, { error: "Authorization expired" });
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const body = raw.length ? JSON.parse(raw.toString("utf8")) : {};
|
|
105
|
+
if (method === "PATCH" && !operation) {
|
|
106
|
+
const patch = NativeInstancePatch.parse(body);
|
|
107
|
+
const result = await updateNativeWindowsInstance(ctx, name, patch, allowed);
|
|
108
|
+
if (!allowed()) {
|
|
109
|
+
json(res, 403, { error: "Authorization expired" });
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
ctx.emitSseEvent("status", ctx.getUiStatus());
|
|
113
|
+
json(res, 200, result);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (method === "DELETE" && !operation) {
|
|
117
|
+
z.object({}).strict().parse(body);
|
|
118
|
+
if (isNativePaneInstance(ctx.fleetConfig?.instances[name]))
|
|
119
|
+
await ctx.removeInstance(name, authorizeExplicitInstanceRemoval("dashboard-confirmed"), settingsRequestExecution(req));
|
|
120
|
+
else
|
|
121
|
+
await service.remove(name, allowed);
|
|
122
|
+
if (!allowed()) {
|
|
123
|
+
json(res, 403, { error: "Authorization expired" });
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
ctx.emitSseEvent("status", ctx.getUiStatus());
|
|
127
|
+
json(res, 200, { deleted: name });
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (method === "POST" && operation === "messages") {
|
|
131
|
+
if (isNativePaneInstance(ctx.fleetConfig?.instances[name]))
|
|
132
|
+
throw Error("Use the shared chat endpoint for a persistent Windows pane");
|
|
133
|
+
const input = Message.parse(body);
|
|
134
|
+
if (!input.prompt.trim())
|
|
135
|
+
throw new Error("Enter a message");
|
|
136
|
+
const existing = service.get(name)?.turns.find(turn => turn.id === input.requestId);
|
|
137
|
+
if (existing) {
|
|
138
|
+
if (existing.prompt !== input.prompt)
|
|
139
|
+
throw new Error("requestId belongs to a different message");
|
|
140
|
+
json(res, 200, { accepted: true, repeated: true, agent: service.get(name) });
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
const ts = new Date().toISOString(), messageId = `native:${input.requestId}:user`;
|
|
144
|
+
const sent = await ctx.deliverToInstance(name, { type: "fleet_inbound", content: input.prompt, requestId: input.requestId, targetSession: name,
|
|
145
|
+
meta: { source: "web", user: "You", message_id: messageId, ts } }, { stillCurrent: allowed });
|
|
146
|
+
if (sent === false)
|
|
147
|
+
throw new Error("The instance did not accept this message");
|
|
148
|
+
if (!allowed()) {
|
|
149
|
+
json(res, 403, { error: "Authorization expired" });
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
ctx.emitSseEvent("message", { instance: name, sender: "You", role: "user", text: input.prompt, ts, messageId });
|
|
153
|
+
json(res, 202, { accepted: true, agent: service.get(name) });
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
if (method === "POST" && operation === "cancel") {
|
|
157
|
+
z.object({}).strict().parse(body);
|
|
158
|
+
if (isNativePaneInstance(ctx.fleetConfig?.instances[name])) {
|
|
159
|
+
if (!ctx.cancelInstance || !ctx.cancelInstance(name))
|
|
160
|
+
throw Error("The native pane is not running");
|
|
161
|
+
json(res, 202, { agent: service.get(name), task: null });
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const result = service.cancel(name);
|
|
165
|
+
json(res, 202, { agent: service.get(name), task: result });
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (method === "POST" && operation === "new-conversation") {
|
|
169
|
+
if (!isNativePaneInstance(ctx.fleetConfig?.instances[name]) || !ctx.startFreshNativePane)
|
|
170
|
+
throw Error(t("native_pane.unavailable"));
|
|
171
|
+
const input = z.object({ confirmedNewConversation: z.literal(true), launchId: z.string().uuid(), sessionId: z.string().uuid().nullable() }).strict().parse(body);
|
|
172
|
+
await ctx.startFreshNativePane(name, input.launchId, input.sessionId, allowed);
|
|
173
|
+
if (!allowed()) {
|
|
174
|
+
json(res, 403, { error: "Authorization expired" });
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
ctx.emitSseEvent("status", ctx.getUiStatus());
|
|
178
|
+
json(res, 200, { agent: service.get(name) });
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (method === "POST" && operation === "recover-pane") {
|
|
182
|
+
if (!isNativePaneInstance(ctx.fleetConfig?.instances[name]) || !ctx.recoverNativePane)
|
|
183
|
+
throw Error(t("native_pane.unavailable"));
|
|
184
|
+
const input = z.object({ confirmedStopped: z.literal(true), launchId: z.string().uuid() }).strict().parse(body);
|
|
185
|
+
await ctx.recoverNativePane(name, input.launchId, allowed);
|
|
186
|
+
if (!allowed()) {
|
|
187
|
+
json(res, 403, { error: "Authorization expired" });
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
ctx.emitSseEvent("status", ctx.getUiStatus());
|
|
191
|
+
json(res, 200, { agent: service.get(name) });
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
if (method === "POST" && operation === "recover") {
|
|
195
|
+
if (isNativePaneInstance(ctx.fleetConfig?.instances[name]))
|
|
196
|
+
throw Error("Use the shared Start or Restart control to reconcile the retained pane");
|
|
197
|
+
const input = z.object({ confirmedStopped: z.literal(true) }).strict().parse(body);
|
|
198
|
+
json(res, 200, { agent: service.recoverAsync ? await service.recoverAsync(name, input.confirmedStopped) : service.recover(name, input.confirmedStopped) });
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
json(res, 405, { error: "Unsupported instance operation" });
|
|
202
|
+
})().catch(error => json(res, allowed() ? 400 : 403, { error: allowed() ? (error instanceof Error ? error.message : "Instance operation failed") : "Authorization expired" }));
|
|
203
|
+
return true;
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=native-instance-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-instance-api.js","sourceRoot":"","sources":["../src/native-instance-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/** Shared, side-effect-free validation for native creation and its settings confirmation. */
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import type { FleetConfig } from "./types.js";
|
|
4
|
+
export declare const NativeInstanceCreateArgs: z.ZodObject<{
|
|
5
|
+
runtime: z.ZodLiteral<"windows">;
|
|
6
|
+
native_adapter: z.ZodOptional<z.ZodEnum<{
|
|
7
|
+
exec: "exec";
|
|
8
|
+
pane: "pane";
|
|
9
|
+
}>>;
|
|
10
|
+
channel_id: z.ZodOptional<z.ZodString>;
|
|
11
|
+
topic_name: z.ZodOptional<z.ZodString>;
|
|
12
|
+
machineId: z.ZodOptional<z.ZodString>;
|
|
13
|
+
directory: z.ZodOptional<z.ZodString>;
|
|
14
|
+
backend: z.ZodDefault<z.ZodEnum<{
|
|
15
|
+
antigravity: "antigravity";
|
|
16
|
+
"claude-code": "claude-code";
|
|
17
|
+
codex: "codex";
|
|
18
|
+
grok: "grok";
|
|
19
|
+
"kiro-cli": "kiro-cli";
|
|
20
|
+
muse: "muse";
|
|
21
|
+
opencode: "opencode";
|
|
22
|
+
}>>;
|
|
23
|
+
model: z.ZodOptional<z.ZodString>;
|
|
24
|
+
description: z.ZodOptional<z.ZodString>;
|
|
25
|
+
systemPrompt: z.ZodOptional<z.ZodString>;
|
|
26
|
+
sandbox: z.ZodDefault<z.ZodEnum<{
|
|
27
|
+
"read-only": "read-only";
|
|
28
|
+
"workspace-write": "workspace-write";
|
|
29
|
+
}>>;
|
|
30
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
31
|
+
}, z.core.$strict>;
|
|
32
|
+
/** The web editor's Windows settings patch (PATCH /ui/instances/:name). The one parser for it: the web and #2942's pending MCP update. */
|
|
33
|
+
export declare const NativeInstancePatch: z.ZodObject<{
|
|
34
|
+
display_name: z.ZodOptional<z.ZodString>;
|
|
35
|
+
description: z.ZodOptional<z.ZodString>;
|
|
36
|
+
working_directory: z.ZodOptional<z.ZodString>;
|
|
37
|
+
model: z.ZodOptional<z.ZodString>;
|
|
38
|
+
systemPrompt: z.ZodOptional<z.ZodString>;
|
|
39
|
+
native_sandbox: z.ZodOptional<z.ZodEnum<{
|
|
40
|
+
"read-only": "read-only";
|
|
41
|
+
"workspace-write": "workspace-write";
|
|
42
|
+
}>>;
|
|
43
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
44
|
+
}, z.core.$strict>;
|
|
45
|
+
/** The Windows settings an agent may ask to change (#2942): the web editor's fields the MCP schema offers, nothing more. */
|
|
46
|
+
export declare const NativeInstanceConfigEdit: z.ZodObject<{
|
|
47
|
+
display_name: z.ZodOptional<z.ZodString>;
|
|
48
|
+
description: z.ZodOptional<z.ZodString>;
|
|
49
|
+
model: z.ZodOptional<z.ZodString>;
|
|
50
|
+
}, z.core.$strict>;
|
|
51
|
+
/** Resolve before approval, then recheck this exact connection rather than substituting another world. */
|
|
52
|
+
export declare function nativePaneTopicTarget(config: FleetConfig | null, requested?: string): {
|
|
53
|
+
id: string;
|
|
54
|
+
type: string;
|
|
55
|
+
group_id: string | number | undefined;
|
|
56
|
+
} | null;
|
|
57
|
+
export declare function parseNativeInstanceCreate(body: unknown): {
|
|
58
|
+
input: {
|
|
59
|
+
runtime: "windows";
|
|
60
|
+
native_adapter?: "exec" | "pane" | undefined;
|
|
61
|
+
channel_id?: string | undefined;
|
|
62
|
+
machineId?: string | undefined;
|
|
63
|
+
backend: "antigravity" | "claude-code" | "codex" | "grok" | "kiro-cli" | "muse" | "opencode";
|
|
64
|
+
model?: string | undefined;
|
|
65
|
+
description?: string | undefined;
|
|
66
|
+
systemPrompt?: string | undefined;
|
|
67
|
+
sandbox: "read-only" | "workspace-write";
|
|
68
|
+
tags?: string[] | undefined;
|
|
69
|
+
topic_name: string;
|
|
70
|
+
directory: string | undefined;
|
|
71
|
+
};
|
|
72
|
+
profile: {
|
|
73
|
+
name: string;
|
|
74
|
+
cli: "antigravity" | "claude-code" | "codex" | "grok" | "kiro-cli" | "muse" | "opencode";
|
|
75
|
+
cwd?: string | undefined;
|
|
76
|
+
machineId?: string | undefined;
|
|
77
|
+
model: string | undefined;
|
|
78
|
+
description: string;
|
|
79
|
+
instructions: string;
|
|
80
|
+
sandbox: "read-only" | "workspace-write";
|
|
81
|
+
tags?: string[] | undefined;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
export type NativeInstanceCreateInput = ReturnType<typeof parseNativeInstanceCreate>;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/** Shared, side-effect-free validation for native creation and its settings confirmation. */
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
export const NativeInstanceCreateArgs = z.object({
|
|
4
|
+
runtime: z.literal("windows"), native_adapter: z.enum(["exec", "pane"]).optional(), channel_id: z.string().min(1).max(160).optional(), topic_name: z.string().max(64).optional(),
|
|
5
|
+
machineId: z.string().uuid().optional(), directory: z.string().max(1024).optional(),
|
|
6
|
+
backend: z.enum(["codex", "claude-code", "antigravity", "grok", "kiro-cli", "opencode", "muse"]).default("codex"),
|
|
7
|
+
model: z.string().max(160).optional(), description: z.string().max(512).optional(),
|
|
8
|
+
systemPrompt: z.string().max(8000).optional(), sandbox: z.enum(["read-only", "workspace-write"]).default("read-only"),
|
|
9
|
+
tags: z.array(z.string().min(1).max(64)).max(32).optional(),
|
|
10
|
+
}).strict().superRefine((value, ctx) => {
|
|
11
|
+
if (value.native_adapter === "pane" && !['codex', 'claude-code'].includes(value.backend))
|
|
12
|
+
ctx.addIssue({ code: "custom", message: "Persistent Windows panes support Codex and Claude Code only" });
|
|
13
|
+
if (value.channel_id && value.native_adapter !== "pane")
|
|
14
|
+
ctx.addIssue({ code: "custom", message: "Only persistent panes allocate topics" });
|
|
15
|
+
});
|
|
16
|
+
/** The web editor's Windows settings patch (PATCH /ui/instances/:name). The one parser for it: the web and #2942's pending MCP update. */
|
|
17
|
+
export const NativeInstancePatch = z.object({
|
|
18
|
+
display_name: z.string().min(1).max(64).optional(), description: z.string().max(512).optional(),
|
|
19
|
+
working_directory: z.string().min(1).max(1024).optional(), model: z.string().max(160).optional(),
|
|
20
|
+
systemPrompt: z.string().max(8000).optional(), native_sandbox: z.enum(["read-only", "workspace-write"]).optional(),
|
|
21
|
+
tags: z.array(z.string().min(1).max(64)).max(32).optional(),
|
|
22
|
+
}).strict().refine(value => Object.keys(value).length > 0, "Choose a setting to update");
|
|
23
|
+
/** The Windows settings an agent may ask to change (#2942): the web editor's fields the MCP schema offers, nothing more. */
|
|
24
|
+
export const NativeInstanceConfigEdit = z.object({
|
|
25
|
+
display_name: z.string().min(1).max(64).optional(), description: z.string().max(512).optional(), model: z.string().max(160).optional(),
|
|
26
|
+
}).strict().refine(value => Object.keys(value).length > 0, "Choose a setting to update");
|
|
27
|
+
/** Resolve before approval, then recheck this exact connection rather than substituting another world. */
|
|
28
|
+
export function nativePaneTopicTarget(config, requested) {
|
|
29
|
+
const channels = config?.channels ?? (config?.channel ? [config.channel] : []);
|
|
30
|
+
if (!channels.length) {
|
|
31
|
+
if (requested)
|
|
32
|
+
throw Error("Topic connection is unavailable");
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const selected = requested ? channels.filter(channel => (channel.id ?? channel.type) === requested) : channels.slice(0, 1);
|
|
36
|
+
if (selected.length !== 1 || !['telegram', 'discord'].includes(selected[0].type))
|
|
37
|
+
throw Error("Choose one configured chat connection for this pane");
|
|
38
|
+
const channel = selected[0];
|
|
39
|
+
return { id: channel.id ?? channel.type, type: channel.type, group_id: channel.group_id };
|
|
40
|
+
}
|
|
41
|
+
export function parseNativeInstanceCreate(body) {
|
|
42
|
+
const parsed = NativeInstanceCreateArgs.parse(body);
|
|
43
|
+
const name = parsed.topic_name?.trim() || parsed.directory?.trim().replace(/[\\/]+$/, "").split(/[\\/]/).pop() || "";
|
|
44
|
+
if (!name)
|
|
45
|
+
throw new Error("Enter an agent name");
|
|
46
|
+
const cwd = parsed.directory?.trim();
|
|
47
|
+
const input = { ...parsed, topic_name: name, directory: cwd || undefined };
|
|
48
|
+
const profile = { name, cli: input.backend, ...(cwd ? { cwd } : {}),
|
|
49
|
+
...(input.machineId ? { machineId: input.machineId } : {}), model: input.model,
|
|
50
|
+
description: input.description ?? "", instructions: input.systemPrompt ?? "", sandbox: input.sandbox,
|
|
51
|
+
...(input.tags ? { tags: input.tags } : {}) };
|
|
52
|
+
return { input, profile };
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=native-instance-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-instance-input.js","sourceRoot":"","sources":["../src/native-instance-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Runtime identity shared by Fleet, HTTP and the native Windows execution adapter. */
|
|
2
|
+
import type { FleetConfig, InstanceConfig } from "./types.js";
|
|
3
|
+
import type { WindowsAgent, WindowsAgents } from "./windows-agents.js";
|
|
4
|
+
/** M-2239 P1-1: why create_instance (and every path through handleCreate) refuses a Windows agent. */
|
|
5
|
+
export declare const WINDOWS_CREATE_REFUSED = "Windows agents can only be created by an administrator in the web dashboard (Fleet \u2192 New agent \u2192 Native Windows) or confirmed in General after an agent's create_instance request, not through a template or any other path";
|
|
6
|
+
/** M-2239 P1-1: why another agent's MCP call may not reconfigure or replace a Windows agent. */
|
|
7
|
+
export declare const WINDOWS_CONFIG_REFUSED = "A Windows agent's settings are changed by an administrator: in the web dashboard, or confirmed in General after an update_instance_config request (display_name, description and model only)";
|
|
8
|
+
export type NativeInstanceConfig = InstanceConfig & {
|
|
9
|
+
runtime: "windows";
|
|
10
|
+
native_agent_id: string;
|
|
11
|
+
native_sandbox: "read-only" | "workspace-write";
|
|
12
|
+
};
|
|
13
|
+
export declare function nativeInstanceName(agentId: string): string;
|
|
14
|
+
export declare function isWindowsInstance(config: Partial<InstanceConfig> | null | undefined): config is InstanceConfig & {
|
|
15
|
+
runtime: "windows";
|
|
16
|
+
};
|
|
17
|
+
export declare function isNativePaneInstance(config: Partial<InstanceConfig> | null | undefined): config is InstanceConfig & {
|
|
18
|
+
runtime: "windows";
|
|
19
|
+
native_adapter: "pane";
|
|
20
|
+
};
|
|
21
|
+
export declare function isNativeExecInstance(config: Partial<InstanceConfig> | null | undefined): config is InstanceConfig & {
|
|
22
|
+
runtime: "windows";
|
|
23
|
+
native_adapter?: "exec";
|
|
24
|
+
};
|
|
25
|
+
export declare function nativeAgentId(config: Partial<InstanceConfig> | null | undefined): string | null;
|
|
26
|
+
export declare function nativeInstanceConfig(agent: Omit<WindowsAgent, "turns" | "instructions"> & {
|
|
27
|
+
instructions?: string;
|
|
28
|
+
}): NativeInstanceConfig;
|
|
29
|
+
/** Import legacy native profiles once. Existing Fleet entries remain the source of settings. */
|
|
30
|
+
export declare function registerWindowsProfiles(fleet: FleetConfig, store: WindowsAgents, save: () => void): boolean;
|
|
31
|
+
export declare function previewWindowsProfile(config: InstanceConfig, store: WindowsAgents): WindowsAgent;
|
|
32
|
+
export declare function syncWindowsProfile(config: InstanceConfig, store: WindowsAgents, authorized?: () => boolean): WindowsAgent;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { DEFAULT_INSTANCE_CONFIG } from "./config.js";
|
|
2
|
+
import { validWindowsAgentId } from "./windows-cli-worker.js";
|
|
3
|
+
import { isNativeProviderId } from "./windows-cli-providers.js";
|
|
4
|
+
/** M-2239 P1-1: why create_instance (and every path through handleCreate) refuses a Windows agent. */
|
|
5
|
+
export const WINDOWS_CREATE_REFUSED = "Windows agents can only be created by an administrator in the web dashboard (Fleet → New agent → Native Windows) or confirmed in General after an agent's create_instance request, not through a template or any other path";
|
|
6
|
+
/** M-2239 P1-1: why another agent's MCP call may not reconfigure or replace a Windows agent. */
|
|
7
|
+
export const WINDOWS_CONFIG_REFUSED = "A Windows agent's settings are changed by an administrator: in the web dashboard, or confirmed in General after an update_instance_config request (display_name, description and model only)";
|
|
8
|
+
export function nativeInstanceName(agentId) {
|
|
9
|
+
if (!validWindowsAgentId(agentId))
|
|
10
|
+
throw new Error("Invalid Windows agent id");
|
|
11
|
+
return `windows-${agentId.toLowerCase()}`;
|
|
12
|
+
}
|
|
13
|
+
export function isWindowsInstance(config) {
|
|
14
|
+
return config?.runtime === "windows";
|
|
15
|
+
}
|
|
16
|
+
export function isNativePaneInstance(config) {
|
|
17
|
+
return isWindowsInstance(config) && config.native_adapter === "pane";
|
|
18
|
+
}
|
|
19
|
+
export function isNativeExecInstance(config) {
|
|
20
|
+
return isWindowsInstance(config) && config.native_adapter !== "pane";
|
|
21
|
+
}
|
|
22
|
+
export function nativeAgentId(config) {
|
|
23
|
+
return isWindowsInstance(config) && validWindowsAgentId(config.native_agent_id) ? config.native_agent_id.toLowerCase() : null;
|
|
24
|
+
}
|
|
25
|
+
export function nativeInstanceConfig(agent) {
|
|
26
|
+
return {
|
|
27
|
+
...structuredClone(DEFAULT_INSTANCE_CONFIG), runtime: "windows", native_agent_id: agent.id, native_sandbox: agent.sandbox,
|
|
28
|
+
...(agent.machineId ? { machine_id: agent.machineId } : {}),
|
|
29
|
+
working_directory: agent.cwd, display_name: agent.name, description: agent.description, backend: agent.cli,
|
|
30
|
+
// Explicit empties prevent a Linux fleet's model/prompt from being inherited on config reload.
|
|
31
|
+
model: agent.model || "", systemPrompt: agent.instructions || "", agent_mode: "cli",
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/** Import legacy native profiles once. Existing Fleet entries remain the source of settings. */
|
|
35
|
+
export function registerWindowsProfiles(fleet, store, save) {
|
|
36
|
+
const before = { ...fleet.instances };
|
|
37
|
+
let changed = false, saved = false;
|
|
38
|
+
const bindings = [];
|
|
39
|
+
try {
|
|
40
|
+
const claimed = new Set(Object.values(fleet.instances).map(nativeAgentId).filter((id) => id !== null));
|
|
41
|
+
for (const profile of store.list()) {
|
|
42
|
+
if (claimed.has(profile.id.toLowerCase())) {
|
|
43
|
+
const entry = Object.entries(fleet.instances).find(([, config]) => nativeAgentId(config) === profile.id.toLowerCase());
|
|
44
|
+
if (entry)
|
|
45
|
+
bindings.push({ id: profile.id, name: entry[0] });
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (profile.fleet_instance)
|
|
49
|
+
continue;
|
|
50
|
+
const name = nativeInstanceName(profile.id);
|
|
51
|
+
if (Object.hasOwn(fleet.instances, name))
|
|
52
|
+
throw new Error(`Cannot register Windows agent over existing instance ${name}`);
|
|
53
|
+
fleet.instances[name] = nativeInstanceConfig(store.get(profile.id));
|
|
54
|
+
claimed.add(profile.id.toLowerCase());
|
|
55
|
+
changed = true;
|
|
56
|
+
bindings.push({ id: profile.id, name });
|
|
57
|
+
}
|
|
58
|
+
if (changed) {
|
|
59
|
+
save();
|
|
60
|
+
saved = true;
|
|
61
|
+
}
|
|
62
|
+
for (const binding of bindings)
|
|
63
|
+
store.bindInstance(binding.id, binding.name);
|
|
64
|
+
return changed;
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
if (!saved)
|
|
68
|
+
fleet.instances = before;
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/** Copy common instance settings into provider state before use, keeping session/history untouched. */
|
|
73
|
+
function windowsProfilePatch(config, store) {
|
|
74
|
+
const id = nativeAgentId(config);
|
|
75
|
+
if (!id)
|
|
76
|
+
throw new Error("Instance does not name a Windows runtime agent");
|
|
77
|
+
const current = store.get(id);
|
|
78
|
+
if (config.machine_id !== current.machineId)
|
|
79
|
+
throw new Error("This conversation belongs to a different runtime machine; create a new agent to move it");
|
|
80
|
+
const patch = {};
|
|
81
|
+
const desired = {
|
|
82
|
+
name: config.display_name ?? current.name, cwd: config.working_directory,
|
|
83
|
+
description: config.description ?? "", instructions: config.systemPrompt ?? "",
|
|
84
|
+
model: config.model ?? "", sandbox: config.native_sandbox ?? current.sandbox,
|
|
85
|
+
};
|
|
86
|
+
if (config.backend !== undefined) {
|
|
87
|
+
if (!isNativeProviderId(config.backend))
|
|
88
|
+
throw new Error("Choose a supported Windows CLI");
|
|
89
|
+
desired.cli = config.backend;
|
|
90
|
+
}
|
|
91
|
+
for (const key of Object.keys(desired)) {
|
|
92
|
+
if ((desired[key] ?? "") !== (current[key] ?? ""))
|
|
93
|
+
patch[key] = desired[key];
|
|
94
|
+
}
|
|
95
|
+
return { id, current, patch };
|
|
96
|
+
}
|
|
97
|
+
export function previewWindowsProfile(config, store) {
|
|
98
|
+
const { id, current, patch } = windowsProfilePatch(config, store);
|
|
99
|
+
return Object.keys(patch).length ? store.previewUpdate(id, patch) : current;
|
|
100
|
+
}
|
|
101
|
+
export function syncWindowsProfile(config, store, authorized = () => true) {
|
|
102
|
+
const { id, current, patch } = windowsProfilePatch(config, store);
|
|
103
|
+
return Object.keys(patch).length ? store.update(id, patch, authorized) : current;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=native-instance-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-instance-registry.js","sourceRoot":"","sources":["../src/native-instance-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from "node:http";
|
|
2
|
+
import { type AgentEndpointContext } from "./agent-endpoint.js";
|
|
3
|
+
import type { NativeMcpConnection, NativeSandbox } from "./windows-cli-providers.js";
|
|
4
|
+
export interface NativeMcpGrant {
|
|
5
|
+
instance: string;
|
|
6
|
+
requestId: string;
|
|
7
|
+
sandbox: NativeSandbox;
|
|
8
|
+
endpoint: string;
|
|
9
|
+
stillCurrent: () => boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface NativeMcpLease {
|
|
12
|
+
connection: NativeMcpConnection;
|
|
13
|
+
close(): void;
|
|
14
|
+
reportedCorrelations(targetInstance?: string): string[];
|
|
15
|
+
}
|
|
16
|
+
export declare class NativeMcpSessions {
|
|
17
|
+
private readonly ctx;
|
|
18
|
+
private readonly sessions;
|
|
19
|
+
constructor(ctx: AgentEndpointContext);
|
|
20
|
+
grant(input: NativeMcpGrant): NativeMcpLease;
|
|
21
|
+
hasActive(instance: string): boolean;
|
|
22
|
+
closeInstance(instance: string): void;
|
|
23
|
+
closeAll(): void;
|
|
24
|
+
private closeToken;
|
|
25
|
+
private current;
|
|
26
|
+
private prune;
|
|
27
|
+
private readOnly;
|
|
28
|
+
private allowed;
|
|
29
|
+
private canCall;
|
|
30
|
+
/**
|
|
31
|
+
* A handler may await before it commits a delivery or a task change. Keep the original turn's capability at
|
|
32
|
+
* those commit points, even if another turn for this instance has started in the same Fleet process meanwhile.
|
|
33
|
+
* Bind other methods to the real context so FleetManager's private state and getters keep their owner.
|
|
34
|
+
*/
|
|
35
|
+
private dispatcherContext;
|
|
36
|
+
private menu;
|
|
37
|
+
/** Consumes native-token requests even when invalid; they must never fall through to legacy credentials. */
|
|
38
|
+
handleRequest(req: IncomingMessage, res: ServerResponse): boolean;
|
|
39
|
+
private readRequest;
|
|
40
|
+
}
|