@panorama-ai/gateway 2.28.50 → 2.30.176
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 +188 -12
- package/dist/child-process-env.d.ts.map +1 -1
- package/dist/child-process-env.js +1 -0
- package/dist/child-process-env.js.map +1 -1
- package/dist/child-process-startup.d.ts +4 -0
- package/dist/child-process-startup.d.ts.map +1 -0
- package/dist/child-process-startup.js +33 -0
- package/dist/child-process-startup.js.map +1 -0
- package/dist/cli-args.d.ts +11 -0
- package/dist/cli-args.d.ts.map +1 -0
- package/dist/cli-args.js +72 -0
- package/dist/cli-args.js.map +1 -0
- package/dist/cli-command-discovery.d.ts +17 -0
- package/dist/cli-command-discovery.d.ts.map +1 -0
- package/dist/cli-command-discovery.js +229 -0
- package/dist/cli-command-discovery.js.map +1 -0
- package/dist/cli-env.d.ts +7 -0
- package/dist/cli-env.d.ts.map +1 -0
- package/dist/cli-env.js +82 -0
- package/dist/cli-env.js.map +1 -0
- package/dist/cli-output.d.ts +23 -0
- package/dist/cli-output.d.ts.map +1 -0
- package/dist/cli-output.js +86 -0
- package/dist/cli-output.js.map +1 -0
- package/dist/cli-provider-commands.d.ts +59 -0
- package/dist/cli-provider-commands.d.ts.map +1 -0
- package/dist/cli-provider-commands.js +157 -0
- package/dist/cli-provider-commands.js.map +1 -0
- package/dist/cli-providers/claude.d.ts.map +1 -1
- package/dist/cli-providers/claude.js +11 -110
- package/dist/cli-providers/claude.js.map +1 -1
- package/dist/cli-providers/codex.d.ts.map +1 -1
- package/dist/cli-providers/codex.js +14 -53
- package/dist/cli-providers/codex.js.map +1 -1
- package/dist/cli-providers/gemini.d.ts.map +1 -1
- package/dist/cli-providers/gemini.js +30 -88
- package/dist/cli-providers/gemini.js.map +1 -1
- package/dist/cli-providers/types.d.ts +3 -1
- package/dist/cli-providers/types.d.ts.map +1 -1
- package/dist/cli-providers/types.js.map +1 -1
- package/dist/database.types.d.ts +4688 -616
- package/dist/database.types.d.ts.map +1 -1
- package/dist/database.types.js.map +1 -1
- package/dist/debug-redaction.d.ts +11 -0
- package/dist/debug-redaction.d.ts.map +1 -1
- package/dist/debug-redaction.js +33 -4
- package/dist/debug-redaction.js.map +1 -1
- package/dist/finalize-subagent-run.d.ts +28 -0
- package/dist/finalize-subagent-run.d.ts.map +1 -0
- package/dist/finalize-subagent-run.js +34 -0
- package/dist/finalize-subagent-run.js.map +1 -0
- package/dist/gateway-capability-services.d.ts +10 -0
- package/dist/gateway-capability-services.d.ts.map +1 -0
- package/dist/gateway-capability-services.js +40 -0
- package/dist/gateway-capability-services.js.map +1 -0
- package/dist/gateway-cli-commands.d.ts +25 -0
- package/dist/gateway-cli-commands.d.ts.map +1 -0
- package/dist/gateway-cli-commands.js +202 -0
- package/dist/gateway-cli-commands.js.map +1 -0
- package/dist/gateway-command-runner.d.ts +48 -0
- package/dist/gateway-command-runner.d.ts.map +1 -0
- package/dist/gateway-command-runner.js +154 -0
- package/dist/gateway-command-runner.js.map +1 -0
- package/dist/gateway-control-plane.d.ts +44 -0
- package/dist/gateway-control-plane.d.ts.map +1 -0
- package/dist/gateway-control-plane.js +147 -0
- package/dist/gateway-control-plane.js.map +1 -0
- package/dist/gateway-daemon.d.ts +41 -0
- package/dist/gateway-daemon.d.ts.map +1 -0
- package/dist/gateway-daemon.js +69 -0
- package/dist/gateway-daemon.js.map +1 -0
- package/dist/gateway-doctor.d.ts +45 -0
- package/dist/gateway-doctor.d.ts.map +1 -0
- package/dist/gateway-doctor.js +81 -0
- package/dist/gateway-doctor.js.map +1 -0
- package/dist/gateway-execution-support.d.ts +56 -0
- package/dist/gateway-execution-support.d.ts.map +1 -0
- package/dist/gateway-execution-support.js +135 -0
- package/dist/gateway-execution-support.js.map +1 -0
- package/dist/gateway-job-controller.d.ts +68 -0
- package/dist/gateway-job-controller.d.ts.map +1 -0
- package/dist/gateway-job-controller.js +266 -0
- package/dist/gateway-job-controller.js.map +1 -0
- package/dist/gateway-job-handlers.d.ts +76 -0
- package/dist/gateway-job-handlers.d.ts.map +1 -0
- package/dist/gateway-job-handlers.js +235 -0
- package/dist/gateway-job-handlers.js.map +1 -0
- package/dist/gateway-job-processor.d.ts +24 -0
- package/dist/gateway-job-processor.d.ts.map +1 -0
- package/dist/gateway-job-processor.js +90 -0
- package/dist/gateway-job-processor.js.map +1 -0
- package/dist/gateway-job-store.d.ts +13 -0
- package/dist/gateway-job-store.d.ts.map +1 -0
- package/dist/gateway-job-store.js +106 -0
- package/dist/gateway-job-store.js.map +1 -0
- package/dist/gateway-jobs.d.ts +31 -0
- package/dist/gateway-jobs.d.ts.map +1 -0
- package/dist/gateway-jobs.js +52 -0
- package/dist/gateway-jobs.js.map +1 -0
- package/dist/gateway-lifecycle.d.ts +43 -0
- package/dist/gateway-lifecycle.d.ts.map +1 -0
- package/dist/gateway-lifecycle.js +62 -0
- package/dist/gateway-lifecycle.js.map +1 -0
- package/dist/gateway-local-runtime.d.ts +68 -0
- package/dist/gateway-local-runtime.d.ts.map +1 -0
- package/dist/gateway-local-runtime.js +208 -0
- package/dist/gateway-local-runtime.js.map +1 -0
- package/dist/gateway-model-run.d.ts +48 -0
- package/dist/gateway-model-run.d.ts.map +1 -0
- package/dist/gateway-model-run.js +205 -0
- package/dist/gateway-model-run.js.map +1 -0
- package/dist/gateway-operational-status.d.ts +15 -0
- package/dist/gateway-operational-status.d.ts.map +1 -0
- package/dist/gateway-operational-status.js +24 -0
- package/dist/gateway-operational-status.js.map +1 -0
- package/dist/gateway-pairing.d.ts +58 -0
- package/dist/gateway-pairing.d.ts.map +1 -0
- package/dist/gateway-pairing.js +151 -0
- package/dist/gateway-pairing.js.map +1 -0
- package/dist/gateway-provider-capabilities.d.ts +59 -0
- package/dist/gateway-provider-capabilities.d.ts.map +1 -0
- package/dist/gateway-provider-capabilities.js +231 -0
- package/dist/gateway-provider-capabilities.js.map +1 -0
- package/dist/gateway-provider-health.d.ts +19 -0
- package/dist/gateway-provider-health.d.ts.map +1 -0
- package/dist/gateway-provider-health.js +75 -0
- package/dist/gateway-provider-health.js.map +1 -0
- package/dist/gateway-provider-runtime.d.ts +72 -0
- package/dist/gateway-provider-runtime.d.ts.map +1 -0
- package/dist/gateway-provider-runtime.js +169 -0
- package/dist/gateway-provider-runtime.js.map +1 -0
- package/dist/gateway-restart.d.ts +8 -0
- package/dist/gateway-restart.d.ts.map +1 -0
- package/dist/gateway-restart.js +129 -0
- package/dist/gateway-restart.js.map +1 -0
- package/dist/gateway-run-helpers.d.ts +35 -0
- package/dist/gateway-run-helpers.d.ts.map +1 -0
- package/dist/gateway-run-helpers.js +203 -0
- package/dist/gateway-run-helpers.js.map +1 -0
- package/dist/gateway-runtime-provider-health.d.ts +31 -0
- package/dist/gateway-runtime-provider-health.d.ts.map +1 -0
- package/dist/gateway-runtime-provider-health.js +99 -0
- package/dist/gateway-runtime-provider-health.js.map +1 -0
- package/dist/gateway-runtime-state.d.ts +35 -0
- package/dist/gateway-runtime-state.d.ts.map +1 -0
- package/dist/gateway-runtime-state.js +18 -0
- package/dist/gateway-runtime-state.js.map +1 -0
- package/dist/gateway-shell-exec.d.ts +46 -0
- package/dist/gateway-shell-exec.d.ts.map +1 -0
- package/dist/gateway-shell-exec.js +130 -0
- package/dist/gateway-shell-exec.js.map +1 -0
- package/dist/gateway-start-command.d.ts +28 -0
- package/dist/gateway-start-command.d.ts.map +1 -0
- package/dist/gateway-start-command.js +101 -0
- package/dist/gateway-start-command.js.map +1 -0
- package/dist/gateway-state.d.ts +29 -0
- package/dist/gateway-state.d.ts.map +1 -0
- package/dist/gateway-state.js +97 -0
- package/dist/gateway-state.js.map +1 -0
- package/dist/gateway-subagent-run-finalizer.d.ts +27 -0
- package/dist/gateway-subagent-run-finalizer.d.ts.map +1 -0
- package/dist/gateway-subagent-run-finalizer.js +196 -0
- package/dist/gateway-subagent-run-finalizer.js.map +1 -0
- package/dist/gateway-subagent-run-job.d.ts +4 -0
- package/dist/gateway-subagent-run-job.d.ts.map +1 -0
- package/dist/gateway-subagent-run-job.js +430 -0
- package/dist/gateway-subagent-run-job.js.map +1 -0
- package/dist/gateway-subagent-run-target.d.ts +16 -0
- package/dist/gateway-subagent-run-target.d.ts.map +1 -0
- package/dist/gateway-subagent-run-target.js +239 -0
- package/dist/gateway-subagent-run-target.js.map +1 -0
- package/dist/gateway-subagent-run-types.d.ts +110 -0
- package/dist/gateway-subagent-run-types.d.ts.map +1 -0
- package/dist/gateway-subagent-run-types.js +2 -0
- package/dist/gateway-subagent-run-types.js.map +1 -0
- package/dist/index.js +11656 -3901
- package/dist/index.js.map +7 -1
- package/dist/job-queue.d.ts +23 -0
- package/dist/job-queue.d.ts.map +1 -0
- package/dist/job-queue.js +70 -0
- package/dist/job-queue.js.map +1 -0
- package/dist/local-runtime/heartbeat-supervisor.d.ts +39 -0
- package/dist/local-runtime/heartbeat-supervisor.d.ts.map +1 -0
- package/dist/local-runtime/heartbeat-supervisor.js +96 -0
- package/dist/local-runtime/heartbeat-supervisor.js.map +1 -0
- package/dist/local-runtime/restart-supervisor.d.ts +27 -0
- package/dist/local-runtime/restart-supervisor.d.ts.map +1 -0
- package/dist/local-runtime/restart-supervisor.js +169 -0
- package/dist/local-runtime/restart-supervisor.js.map +1 -0
- package/dist/local-runtime/runtime-utils.d.ts +20 -0
- package/dist/local-runtime/runtime-utils.d.ts.map +1 -0
- package/dist/local-runtime/runtime-utils.js +54 -0
- package/dist/local-runtime/runtime-utils.js.map +1 -0
- package/dist/local-runtime/shutdown-supervisor.d.ts +32 -0
- package/dist/local-runtime/shutdown-supervisor.d.ts.map +1 -0
- package/dist/local-runtime/shutdown-supervisor.js +110 -0
- package/dist/local-runtime/shutdown-supervisor.js.map +1 -0
- package/dist/local-runtime/types.d.ts +26 -0
- package/dist/local-runtime/types.d.ts.map +1 -0
- package/dist/local-runtime/types.js +2 -0
- package/dist/local-runtime/types.js.map +1 -0
- package/dist/managed-runtime/config.d.ts +20 -0
- package/dist/managed-runtime/config.d.ts.map +1 -0
- package/dist/managed-runtime/config.js +80 -0
- package/dist/managed-runtime/config.js.map +1 -0
- package/dist/managed-runtime/control-client.d.ts +66 -0
- package/dist/managed-runtime/control-client.d.ts.map +1 -0
- package/dist/managed-runtime/control-client.js +142 -0
- package/dist/managed-runtime/control-client.js.map +1 -0
- package/dist/managed-runtime/dependencies.d.ts +17 -0
- package/dist/managed-runtime/dependencies.d.ts.map +1 -0
- package/dist/managed-runtime/dependencies.js +28 -0
- package/dist/managed-runtime/dependencies.js.map +1 -0
- package/dist/managed-runtime/execution-dispatcher.d.ts +25 -0
- package/dist/managed-runtime/execution-dispatcher.d.ts.map +1 -0
- package/dist/managed-runtime/execution-dispatcher.js +155 -0
- package/dist/managed-runtime/execution-dispatcher.js.map +1 -0
- package/dist/managed-runtime/heartbeat.d.ts +7 -0
- package/dist/managed-runtime/heartbeat.d.ts.map +1 -0
- package/dist/managed-runtime/heartbeat.js +44 -0
- package/dist/managed-runtime/heartbeat.js.map +1 -0
- package/dist/managed-runtime/host-state.d.ts +15 -0
- package/dist/managed-runtime/host-state.d.ts.map +1 -0
- package/dist/managed-runtime/host-state.js +50 -0
- package/dist/managed-runtime/host-state.js.map +1 -0
- package/dist/managed-runtime/realtime.d.ts +25 -0
- package/dist/managed-runtime/realtime.d.ts.map +1 -0
- package/dist/managed-runtime/realtime.js +189 -0
- package/dist/managed-runtime/realtime.js.map +1 -0
- package/dist/managed-runtime/runtime-utils.d.ts +8 -0
- package/dist/managed-runtime/runtime-utils.d.ts.map +1 -0
- package/dist/managed-runtime/runtime-utils.js +39 -0
- package/dist/managed-runtime/runtime-utils.js.map +1 -0
- package/dist/managed-runtime/shell-execution.d.ts +33 -0
- package/dist/managed-runtime/shell-execution.d.ts.map +1 -0
- package/dist/managed-runtime/shell-execution.js +186 -0
- package/dist/managed-runtime/shell-execution.js.map +1 -0
- package/dist/managed-runtime/step-result.d.ts +22 -0
- package/dist/managed-runtime/step-result.d.ts.map +1 -0
- package/dist/managed-runtime/step-result.js +252 -0
- package/dist/managed-runtime/step-result.js.map +1 -0
- package/dist/managed-runtime/wake-signal.d.ts +5 -0
- package/dist/managed-runtime/wake-signal.d.ts.map +1 -0
- package/dist/managed-runtime/wake-signal.js +29 -0
- package/dist/managed-runtime/wake-signal.js.map +1 -0
- package/dist/managed-runtime.d.ts +8 -0
- package/dist/managed-runtime.d.ts.map +1 -0
- package/dist/managed-runtime.js +224 -0
- package/dist/managed-runtime.js.map +1 -0
- package/dist/process-control.d.ts +9 -0
- package/dist/process-control.d.ts.map +1 -0
- package/dist/process-control.js +32 -0
- package/dist/process-control.js.map +1 -0
- package/dist/process-output-capture.d.ts +21 -0
- package/dist/process-output-capture.d.ts.map +1 -0
- package/dist/process-output-capture.js +47 -0
- package/dist/process-output-capture.js.map +1 -0
- package/dist/provider-runtime-utils.d.ts +24 -0
- package/dist/provider-runtime-utils.d.ts.map +1 -0
- package/dist/provider-runtime-utils.js +97 -0
- package/dist/provider-runtime-utils.js.map +1 -0
- package/dist/remote-shell-resource.d.ts +30 -0
- package/dist/remote-shell-resource.d.ts.map +1 -0
- package/dist/remote-shell-resource.js +105 -0
- package/dist/remote-shell-resource.js.map +1 -0
- package/dist/stream-json-collector.d.ts +28 -0
- package/dist/stream-json-collector.d.ts.map +1 -0
- package/dist/stream-json-collector.js +68 -0
- package/dist/stream-json-collector.js.map +1 -0
- package/dist/subagent-adapters/claude-code.d.ts.map +1 -1
- package/dist/subagent-adapters/claude-code.js +55 -17
- package/dist/subagent-adapters/claude-code.js.map +1 -1
- package/dist/subagent-adapters/claude-support.d.ts +2 -0
- package/dist/subagent-adapters/claude-support.d.ts.map +1 -1
- package/dist/subagent-adapters/claude-support.js +4 -0
- package/dist/subagent-adapters/claude-support.js.map +1 -1
- package/dist/subagent-adapters/codex.d.ts.map +1 -1
- package/dist/subagent-adapters/codex.js +37 -24
- package/dist/subagent-adapters/codex.js.map +1 -1
- package/dist/subagent-adapters/gemini.d.ts.map +1 -1
- package/dist/subagent-adapters/gemini.js +28 -47
- package/dist/subagent-adapters/gemini.js.map +1 -1
- package/dist/subagent-adapters/output-format.d.ts +3 -0
- package/dist/subagent-adapters/output-format.d.ts.map +1 -0
- package/dist/subagent-adapters/output-format.js +12 -0
- package/dist/subagent-adapters/output-format.js.map +1 -0
- package/dist/subagent-adapters/types.d.ts +5 -1
- package/dist/subagent-adapters/types.d.ts.map +1 -1
- package/dist/subagent-adapters/types.js.map +1 -1
- package/dist/subagent-cancel-job.d.ts +25 -0
- package/dist/subagent-cancel-job.d.ts.map +1 -0
- package/dist/subagent-cancel-job.js +295 -0
- package/dist/subagent-cancel-job.js.map +1 -0
- package/dist/subagent-cancel-target.d.ts +15 -0
- package/dist/subagent-cancel-target.d.ts.map +1 -0
- package/dist/subagent-cancel-target.js +22 -0
- package/dist/subagent-cancel-target.js.map +1 -0
- package/dist/subagent-failure.d.ts +11 -0
- package/dist/subagent-failure.d.ts.map +1 -0
- package/dist/subagent-failure.js +99 -0
- package/dist/subagent-failure.js.map +1 -0
- package/dist/subagent-full-control.d.ts +7 -0
- package/dist/subagent-full-control.d.ts.map +1 -0
- package/dist/subagent-full-control.js +50 -0
- package/dist/subagent-full-control.js.map +1 -0
- package/dist/subagent-output-persistence.d.ts +12 -0
- package/dist/subagent-output-persistence.d.ts.map +1 -0
- package/dist/subagent-output-persistence.js +15 -0
- package/dist/subagent-output-persistence.js.map +1 -0
- package/dist/subagent-run-events.d.ts +17 -0
- package/dist/subagent-run-events.d.ts.map +1 -0
- package/dist/subagent-run-events.js +60 -0
- package/dist/subagent-run-events.js.map +1 -0
- package/dist/subagent-run-execution.d.ts +39 -0
- package/dist/subagent-run-execution.d.ts.map +1 -0
- package/dist/subagent-run-execution.js +145 -0
- package/dist/subagent-run-execution.js.map +1 -0
- package/dist/subagent-run-helpers.d.ts +35 -0
- package/dist/subagent-run-helpers.d.ts.map +1 -0
- package/dist/subagent-run-helpers.js +88 -0
- package/dist/subagent-run-helpers.js.map +1 -0
- package/dist/subagent-run-job.d.ts +33 -0
- package/dist/subagent-run-job.d.ts.map +1 -0
- package/dist/subagent-run-job.js +74 -0
- package/dist/subagent-run-job.js.map +1 -0
- package/dist/subagent-run-store.d.ts +6 -0
- package/dist/subagent-run-store.d.ts.map +1 -0
- package/dist/subagent-run-store.js +22 -0
- package/dist/subagent-run-store.js.map +1 -0
- package/dist/subagent-shutdown-cancellation.d.ts +22 -0
- package/dist/subagent-shutdown-cancellation.d.ts.map +1 -0
- package/dist/subagent-shutdown-cancellation.js +127 -0
- package/dist/subagent-shutdown-cancellation.js.map +1 -0
- package/package.json +10 -7
package/README.md
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
# Panorama Gateway
|
|
2
2
|
|
|
3
|
-
Gateway service for connecting
|
|
3
|
+
Gateway service for connecting host-side runtime capabilities to Panorama.
|
|
4
|
+
|
|
5
|
+
In local mode, a team can pair multiple gateways from different machines; each
|
|
6
|
+
gateway instance is identified by its own `gateway_id`.
|
|
7
|
+
|
|
8
|
+
In managed mode, Panorama provisions the host and starts the gateway with scoped
|
|
9
|
+
managed-runtime credentials.
|
|
4
10
|
|
|
5
11
|
## Usage
|
|
6
12
|
|
|
7
|
-
Pair
|
|
13
|
+
Pair this gateway instance with a team using a pairing code:
|
|
8
14
|
|
|
9
15
|
```bash
|
|
10
16
|
panorama-gateway pair <PAIRING_CODE>
|
|
@@ -24,13 +30,23 @@ SUPABASE_ANON_KEY="your-anon-key" \
|
|
|
24
30
|
pnpm --filter @panorama-ai/gateway dev -- pair <PAIRING_CODE>
|
|
25
31
|
```
|
|
26
32
|
|
|
27
|
-
Start
|
|
33
|
+
Start this gateway and begin listening for jobs (foreground in dev, background for built CLI):
|
|
28
34
|
|
|
29
35
|
```bash
|
|
30
36
|
pnpm --filter @panorama-ai/gateway dev -- start
|
|
31
37
|
```
|
|
32
38
|
|
|
33
|
-
|
|
39
|
+
Run as a Panorama-managed host runtime:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
panorama-gateway start --mode managed
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Managed mode is only intended for Panorama-provisioned hosts with the managed
|
|
46
|
+
runtime environment contract described below. It is not a replacement for
|
|
47
|
+
locally paired user gateways.
|
|
48
|
+
|
|
49
|
+
Force this gateway into the background (built binary only):
|
|
34
50
|
|
|
35
51
|
```bash
|
|
36
52
|
pnpm --filter @panorama-ai/gateway build
|
|
@@ -43,18 +59,27 @@ Run in the foreground (built binary):
|
|
|
43
59
|
pnpm --filter @panorama-ai/gateway start -- --foreground
|
|
44
60
|
```
|
|
45
61
|
|
|
46
|
-
Stop
|
|
62
|
+
Stop this gateway:
|
|
47
63
|
|
|
48
64
|
```bash
|
|
49
65
|
pnpm --filter @panorama-ai/gateway dev -- stop
|
|
50
66
|
```
|
|
51
67
|
|
|
52
|
-
Check gateway status:
|
|
68
|
+
Check this gateway's status:
|
|
53
69
|
|
|
54
70
|
```bash
|
|
55
71
|
pnpm --filter @panorama-ai/gateway dev -- status
|
|
56
72
|
```
|
|
57
73
|
|
|
74
|
+
Manage host machine control on this host (the CLI command is still `full-control`
|
|
75
|
+
for compatibility):
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
pnpm --filter @panorama-ai/gateway dev -- full-control status
|
|
79
|
+
pnpm --filter @panorama-ai/gateway dev -- full-control enable
|
|
80
|
+
pnpm --filter @panorama-ai/gateway dev -- full-control disable
|
|
81
|
+
```
|
|
82
|
+
|
|
58
83
|
Tail logs:
|
|
59
84
|
|
|
60
85
|
```bash
|
|
@@ -67,6 +92,7 @@ Optional flags:
|
|
|
67
92
|
- `--verbose`, `-v` (show technical details like paths, IDs, and PIDs)
|
|
68
93
|
- `--env local|dev|test|stage|prod`
|
|
69
94
|
- `--env-file /path/to/.env`
|
|
95
|
+
- `--mode local|managed` (`start` only; default `local`)
|
|
70
96
|
- `--foreground` (run in the foreground)
|
|
71
97
|
- `--daemon` (force background for built CLI)
|
|
72
98
|
- `--config-dir /path/to/dir`
|
|
@@ -94,24 +120,114 @@ You can always point to a specific env file with `--env-file`.
|
|
|
94
120
|
|
|
95
121
|
The gateway runs CLI providers using the current user environment (HOME, PATH, etc.) so it matches what you see when running the CLIs directly.
|
|
96
122
|
|
|
97
|
-
|
|
123
|
+
Managed mode is for Panorama-provisioned runtimes. It reads the managed Linux
|
|
124
|
+
host environment contract:
|
|
125
|
+
|
|
126
|
+
- `PANORAMA_AGENT_ID`
|
|
127
|
+
- `PANORAMA_LINUX_HOST_ID`
|
|
128
|
+
- `PANORAMA_LINUX_HOST_ATTEMPT_GENERATION`
|
|
129
|
+
- `PANORAMA_SUPABASE_URL`
|
|
130
|
+
- `PANORAMA_SUPABASE_ANON_KEY`
|
|
131
|
+
- `PANORAMA_LINUX_HOST_CONTROL_URL`
|
|
132
|
+
- `PANORAMA_LINUX_HOST_CONTROL_TOKEN`
|
|
133
|
+
- `PANORAMA_TOOL_EXECUTION_URL`
|
|
134
|
+
- `PANORAMA_TOOL_EXECUTION_TOKEN`
|
|
135
|
+
- `PANORAMA_MANAGED_RUNTIME_ID` (optional)
|
|
136
|
+
- `PANORAMA_MANAGED_RUNTIME_RETRY_BACKOFF_MS` (optional)
|
|
137
|
+
- `PANORAMA_MANAGED_RUNTIME_CONTROL_TIMEOUT_MS` (optional, default `30000`)
|
|
138
|
+
- `PANORAMA_MANAGED_RUNTIME_OUTPUT_CAPTURE_BYTES` (optional, default `5000000`)
|
|
139
|
+
- `PANORAMA_MANAGED_RUNTIME_HEARTBEAT_INTERVAL_MS` (optional)
|
|
140
|
+
- `PANORAMA_MANAGED_RUNTIME_MAX_CONSECUTIVE_HEARTBEAT_FAILURES` (optional)
|
|
141
|
+
|
|
142
|
+
## Runtime Structure
|
|
143
|
+
|
|
144
|
+
The gateway package is published to NPM as a single CLI, but internally it has
|
|
145
|
+
separate runtime boundaries for local and managed execution.
|
|
146
|
+
|
|
147
|
+
Local runtime modules:
|
|
148
|
+
|
|
149
|
+
- `src/gateway-local-runtime.ts` owns local startup orchestration: paired
|
|
150
|
+
session loading, provider validation, job controller wiring, signal handling,
|
|
151
|
+
and lifecycle coordination.
|
|
152
|
+
- `src/local-runtime/heartbeat-supervisor.ts` owns local capability refreshes
|
|
153
|
+
and heartbeat reporting.
|
|
154
|
+
- `src/local-runtime/restart-supervisor.ts` owns package/probe watching and
|
|
155
|
+
drain-before-restart behavior.
|
|
156
|
+
- `src/local-runtime/shutdown-supervisor.ts` owns drain, termination, offline
|
|
157
|
+
heartbeat, and residual job cleanup behavior.
|
|
158
|
+
|
|
159
|
+
Managed runtime modules:
|
|
160
|
+
|
|
161
|
+
- `src/managed-runtime.ts` owns managed startup orchestration and dependency
|
|
162
|
+
wiring.
|
|
163
|
+
- `src/managed-runtime/control-client.ts` owns managed host-control HTTP calls.
|
|
164
|
+
- `src/managed-runtime/realtime.ts` owns Supabase session setup and wake-signal
|
|
165
|
+
subscription behavior.
|
|
166
|
+
- `src/managed-runtime/execution-dispatcher.ts` owns managed shell execution
|
|
167
|
+
dispatch, result capture, and completion reporting.
|
|
168
|
+
- `src/managed-runtime/heartbeat.ts`, `src/managed-runtime/host-state.ts`, and
|
|
169
|
+
`src/managed-runtime/wake-signal.ts` own managed heartbeat, host identity
|
|
170
|
+
derivation, and wake-signal parsing helpers.
|
|
171
|
+
|
|
172
|
+
Shared runtime helpers:
|
|
173
|
+
|
|
174
|
+
- `src/process-output-capture.ts` owns bounded stdout/stderr capture for shell
|
|
175
|
+
execution, provider streaming, and managed command execution.
|
|
176
|
+
- `src/provider-runtime-utils.ts` owns provider environment construction and
|
|
177
|
+
command/result parsing helpers used by CLI provider adapters.
|
|
178
|
+
- `src/subagent-adapters/output-format.ts` owns shared subagent output format
|
|
179
|
+
normalization.
|
|
180
|
+
|
|
181
|
+
The key split is not "VM versus non-VM"; it is which control surface drives the
|
|
182
|
+
host. Local mode is driven by a paired gateway session and user-delegated host
|
|
183
|
+
capabilities. Managed mode is driven by Panorama-scoped runtime credentials and
|
|
184
|
+
managed host control.
|
|
185
|
+
|
|
186
|
+
## Execution Bridge and Trust Model
|
|
187
|
+
|
|
188
|
+
The gateway has two runtime modes:
|
|
189
|
+
|
|
190
|
+
- Local mode connects Panorama's control plane to a machine/account the team
|
|
191
|
+
controls.
|
|
192
|
+
- Managed mode connects Panorama's control plane to a Panorama-provisioned host
|
|
193
|
+
using scoped runtime credentials.
|
|
194
|
+
|
|
195
|
+
Local mode:
|
|
98
196
|
|
|
99
197
|
- Gateway processes run as the logged-in user and are designed to behave like direct local CLI usage.
|
|
100
|
-
-
|
|
101
|
-
|
|
198
|
+
- Gateway hosts are a **user-delegated host** trust zone. Treat gateway access
|
|
199
|
+
as equivalent to local CLI access for that user account.
|
|
200
|
+
- Provider child processes inherit user environment semantics, but
|
|
201
|
+
gateway-internal secrets are scrubbed before launch.
|
|
202
|
+
- Provider-side execution controls rely on built-in provider flags (for example
|
|
203
|
+
Codex read-only sandbox + tool flags), not heavyweight host isolation.
|
|
204
|
+
- Machine-control capabilities are layered:
|
|
205
|
+
- host machine-control toggle (`panorama-gateway full-control enable`)
|
|
206
|
+
- team-level gateway machine-control toggle (Team Integrations UI / `set-gateway-full-control`)
|
|
207
|
+
- resource-level opt-in (`config.full_control=true` for gateway subagents, `metadata.full_control=true` for `remote_shell` resources)
|
|
102
208
|
- Gateway state is stored locally under `~/.panorama/gateway` by default and includes pairing/session tokens needed for reconnects.
|
|
103
209
|
- On POSIX platforms, gateway state directories/files are enforced as owner-only (`0700` for dirs, `0600` for files).
|
|
104
210
|
|
|
211
|
+
Managed mode:
|
|
212
|
+
|
|
213
|
+
- Gateway processes run as Panorama-managed runtime participants.
|
|
214
|
+
- Managed hosts use scoped control and tool execution tokens.
|
|
215
|
+
- Shell child processes receive the tool execution token, not the host control
|
|
216
|
+
token.
|
|
217
|
+
- Managed mode does not use paired-user gateway session material.
|
|
218
|
+
|
|
105
219
|
Recommended deployment model:
|
|
106
220
|
|
|
107
|
-
- Use a machine/account you control (for example a dedicated cloud VM user) for
|
|
221
|
+
- Use a machine/account you control (for example a dedicated cloud VM user) for each gateway instance.
|
|
222
|
+
- A team can pair multiple gateways (e.g. different developer machines, CI hosts, or VMs). Each gateway gets its own `gateway_id` and reports status independently.
|
|
108
223
|
- Treat gateway host access as equivalent to local CLI access for that user account.
|
|
224
|
+
- For Panorama-managed VM guest images, start from `packages/gateway/vm-template/Dockerfile` and keep the guest gateway bridge scoped to its linked VM identity.
|
|
109
225
|
|
|
110
226
|
If you hit a permission hardening error, fix ownership/permissions on the gateway state path and re-run `pair` or `start`.
|
|
111
227
|
|
|
112
228
|
## Auto-Restart on Upgrade
|
|
113
229
|
|
|
114
|
-
|
|
230
|
+
Each gateway CLI instance watches its installed package version and restarts itself when the version changes.
|
|
115
231
|
It drains in-flight jobs first and then respawns using the same CLI arguments.
|
|
116
232
|
|
|
117
233
|
Defaults:
|
|
@@ -127,10 +243,70 @@ Environment overrides:
|
|
|
127
243
|
|
|
128
244
|
## Job Handling
|
|
129
245
|
|
|
130
|
-
|
|
246
|
+
Gateway currently handles:
|
|
247
|
+
|
|
248
|
+
- `diagnostic` jobs for host/provider validation
|
|
249
|
+
- `model_run` jobs for provider model execution
|
|
250
|
+
- `subagent_run` and `subagent_cancel` jobs for delegated provider harnesses on
|
|
251
|
+
gateway hosts
|
|
252
|
+
- `shell_exec` jobs for remote shell execution via remote shell resources
|
|
131
253
|
|
|
132
254
|
For JSON model runs, the worker prefers providers that support explicit output schema mode. JSON streaming support is optional and used as a compatibility path when schema mode is unavailable.
|
|
133
255
|
|
|
256
|
+
Existing capability names map to these product surfaces:
|
|
257
|
+
|
|
258
|
+
- `model_execution` means the gateway can run local Claude/Codex/Gemini model
|
|
259
|
+
calls and gateway subagents. Gateway subagents default to restricted provider
|
|
260
|
+
sandboxes unless `config.full_control=true` explicitly requests elevated
|
|
261
|
+
provider mode.
|
|
262
|
+
- `remote_shell` means the gateway can receive `shell_exec` jobs through a
|
|
263
|
+
`remote_shell` resource.
|
|
264
|
+
- `machine_control` means direct host-control authority is available for
|
|
265
|
+
elevated gateway subagents and remote shell command execution.
|
|
266
|
+
- `linux_agent_executions` is separate from gateway jobs; it is the
|
|
267
|
+
embodied/Linux-agent command-execution queue used by Linux-runtime agents.
|
|
268
|
+
|
|
269
|
+
Remote shell execution contract:
|
|
270
|
+
|
|
271
|
+
- `shell_exec` runs one foreground shell command through the host shell with
|
|
272
|
+
`-lc`.
|
|
273
|
+
- Commands start from `/`; callers must include `cd /path && ...` when they
|
|
274
|
+
want another working directory.
|
|
275
|
+
- The default timeout is 30 seconds and the maximum accepted timeout is 10
|
|
276
|
+
minutes.
|
|
277
|
+
- Stdout/stderr are returned inline with truncation flags. Remote shell exec
|
|
278
|
+
does not create overflow artifacts.
|
|
279
|
+
- The gateway does not track background processes after the foreground command
|
|
280
|
+
exits. Callers may start background work intentionally, but they must manage
|
|
281
|
+
it with later shell commands.
|
|
282
|
+
|
|
134
283
|
## CLI Provider Notes
|
|
135
284
|
|
|
136
285
|
See `packages/gateway/CLI_PROVIDERS.md` for current findings on Claude Code, Codex CLI, and Gemini CLI usage patterns.
|
|
286
|
+
|
|
287
|
+
## Packaging and Smoke Checks
|
|
288
|
+
|
|
289
|
+
The gateway is expected to remain publishable to NPM. The package publishes
|
|
290
|
+
only the built `dist` output and this README; source files are not part of the
|
|
291
|
+
runtime package.
|
|
292
|
+
|
|
293
|
+
Run these checks before shipping gateway runtime changes:
|
|
294
|
+
|
|
295
|
+
```bash
|
|
296
|
+
pnpm --filter @panorama-ai/gateway test
|
|
297
|
+
pnpm --filter @panorama-ai/gateway build
|
|
298
|
+
pnpm --filter @panorama-ai/gateway verify:packaged-cli
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
Use targeted smoke tests when changing one runtime surface:
|
|
302
|
+
|
|
303
|
+
```bash
|
|
304
|
+
pnpm --filter @panorama-ai/gateway exec tsx --test test/gateway-start-command.test.ts test/gateway-local-runtime.test.ts test/local-runtime-heartbeat-supervisor.test.ts test/local-runtime-restart-supervisor.test.ts test/local-runtime-shutdown-supervisor.test.ts
|
|
305
|
+
pnpm --filter @panorama-ai/gateway exec tsx --test test/managed-runtime.test.ts test/managed-runtime-helpers.test.ts
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
`panorama-gateway start` requires paired local gateway state. `panorama-gateway
|
|
309
|
+
start --mode managed` requires Panorama-managed runtime credentials. Prefer the
|
|
310
|
+
packaged CLI check plus targeted runtime tests for local development smoke
|
|
311
|
+
validation unless you are intentionally testing against a live paired gateway or
|
|
312
|
+
managed host.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"child-process-env.d.ts","sourceRoot":"","sources":["../src/child-process-env.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"child-process-env.d.ts","sourceRoot":"","sources":["../src/child-process-env.ts"],"names":[],"mappings":"AAqBA,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAI5D;AAED,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,MAAM,CAAC,UAAwB,GACvC,MAAM,CAAC,UAAU,CAQnB;AAED,wBAAgB,2BAA2B,CAAC,MAAM,CAAC,EAAE;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAC9B,GAAG,MAAM,CAAC,UAAU,CAoBpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"child-process-env.js","sourceRoot":"","sources":["../src/child-process-env.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,MAAM,8BAA8B,GAAG,IAAI,GAAG,CAAC;IAC7C,cAAc;IACd,kBAAkB;IAClB,cAAc;IACd,mBAAmB;IACnB,0BAA0B;IAC1B,2BAA2B;IAC3B,uBAAuB;IACvB,4BAA4B;IAC5B,cAAc;IACd,mBAAmB;IACnB,mBAAmB;IACnB,oBAAoB;IACpB,sBAAsB;CACvB,CAAC,CAAA;AAEF,MAAM,kCAAkC,GAAG,CAAC,mBAAmB,CAAC,CAAA;AAEhE,MAAM,UAAU,uBAAuB,CAAC,GAAW;IACjD,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IACtB,IAAI,8BAA8B,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IACxD,OAAO,kCAAkC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;AACpF,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,UAA6B,OAAO,CAAC,GAAG;IAExC,MAAM,GAAG,GAAsB,EAAE,CAAA;IACjC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAQ;QACjC,IAAI,uBAAuB,CAAC,GAAG,CAAC;YAAE,SAAQ;QAC1C,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAClB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAI3C;IACC,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,OAAO,CAAC,GAAG,CAAA;IAC9C,MAAM,GAAG,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAA;IAC5C,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,CAAA;IAC7B,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;QACnB,GAAG,CAAC,GAAG,GAAG,MAAM,CAAA;QAChB,GAAG,CAAC,IAAI,GAAG,MAAM,CAAA;IACnB,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAA;IACnC,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAA;YACjB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"child-process-env.js","sourceRoot":"","sources":["../src/child-process-env.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,MAAM,8BAA8B,GAAG,IAAI,GAAG,CAAC;IAC7C,cAAc;IACd,kBAAkB;IAClB,cAAc;IACd,mBAAmB;IACnB,0BAA0B;IAC1B,2BAA2B;IAC3B,qBAAqB;IACrB,uBAAuB;IACvB,4BAA4B;IAC5B,cAAc;IACd,mBAAmB;IACnB,mBAAmB;IACnB,oBAAoB;IACpB,sBAAsB;CACvB,CAAC,CAAA;AAEF,MAAM,kCAAkC,GAAG,CAAC,mBAAmB,CAAC,CAAA;AAEhE,MAAM,UAAU,uBAAuB,CAAC,GAAW;IACjD,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IACtB,IAAI,8BAA8B,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IACxD,OAAO,kCAAkC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA;AACpF,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,UAA6B,OAAO,CAAC,GAAG;IAExC,MAAM,GAAG,GAAsB,EAAE,CAAA;IACjC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAQ;QACjC,IAAI,uBAAuB,CAAC,GAAG,CAAC;YAAE,SAAQ;QAC1C,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;IAClB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAI3C;IACC,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,OAAO,CAAC,GAAG,CAAA;IAC9C,MAAM,GAAG,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAA;IAC5C,MAAM,MAAM,GAAG,MAAM,EAAE,MAAM,CAAA;IAC7B,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,MAAM,GAAG,MAAM,CAAA;QACnB,GAAG,CAAC,GAAG,GAAG,MAAM,CAAA;QAChB,GAAG,CAAC,IAAI,GAAG,MAAM,CAAA;IACnB,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,CAAA;IACnC,IAAI,SAAS,EAAE,CAAC;QACd,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAA;YACjB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"child-process-startup.d.ts","sourceRoot":"","sources":["../src/child-process-startup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB1E;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAe5E"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export async function waitForChildSpawn(child) {
|
|
2
|
+
await new Promise((resolve, reject) => {
|
|
3
|
+
const cleanup = () => {
|
|
4
|
+
child.off('spawn', handleSpawn);
|
|
5
|
+
child.off('error', handleError);
|
|
6
|
+
};
|
|
7
|
+
const handleSpawn = () => {
|
|
8
|
+
cleanup();
|
|
9
|
+
resolve();
|
|
10
|
+
};
|
|
11
|
+
const handleError = (error) => {
|
|
12
|
+
cleanup();
|
|
13
|
+
reject(error);
|
|
14
|
+
};
|
|
15
|
+
child.once('spawn', handleSpawn);
|
|
16
|
+
child.once('error', handleError);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export async function waitForChildStartup(child) {
|
|
20
|
+
await waitForChildSpawn(child);
|
|
21
|
+
await new Promise((resolve) => {
|
|
22
|
+
setImmediate(resolve);
|
|
23
|
+
});
|
|
24
|
+
if (child.exitCode !== null || child.signalCode !== null) {
|
|
25
|
+
const detail = child.exitCode !== null
|
|
26
|
+
? `code ${child.exitCode}`
|
|
27
|
+
: child.signalCode
|
|
28
|
+
? `signal ${child.signalCode}`
|
|
29
|
+
: 'unknown reason';
|
|
30
|
+
throw new Error(`Process exited during startup (${detail})`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=child-process-startup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"child-process-startup.js","sourceRoot":"","sources":["../src/child-process-startup.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAmB;IACzD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;YAC/B,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;QACjC,CAAC,CAAA;QAED,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,OAAO,EAAE,CAAA;YACT,OAAO,EAAE,CAAA;QACX,CAAC,CAAA;QAED,MAAM,WAAW,GAAG,CAAC,KAAY,EAAE,EAAE;YACnC,OAAO,EAAE,CAAA;YACT,MAAM,CAAC,KAAK,CAAC,CAAA;QACf,CAAC,CAAA;QAED,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;QAChC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAClC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAmB;IAC3D,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAA;IAC9B,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,YAAY,CAAC,OAAO,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;QACzD,MAAM,MAAM,GACV,KAAK,CAAC,QAAQ,KAAK,IAAI;YACrB,CAAC,CAAC,QAAQ,KAAK,CAAC,QAAQ,EAAE;YAC1B,CAAC,CAAC,KAAK,CAAC,UAAU;gBAChB,CAAC,CAAC,UAAU,KAAK,CAAC,UAAU,EAAE;gBAC9B,CAAC,CAAC,gBAAgB,CAAA;QACxB,MAAM,IAAI,KAAK,CAAC,kCAAkC,MAAM,GAAG,CAAC,CAAA;IAC9D,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface ParsedArgs {
|
|
2
|
+
command: string | null;
|
|
3
|
+
positional: string[];
|
|
4
|
+
options: Record<string, string | boolean>;
|
|
5
|
+
}
|
|
6
|
+
export type GatewayRuntimeMode = 'local' | 'managed';
|
|
7
|
+
export declare function parseArgs(argv: string[]): ParsedArgs;
|
|
8
|
+
export declare function getStringOption(options: ParsedArgs['options'], key: string): string | undefined;
|
|
9
|
+
export declare function resolveGatewayRuntimeMode(options: ParsedArgs['options'], env?: NodeJS.ProcessEnv): GatewayRuntimeMode;
|
|
10
|
+
export declare function parseBooleanInput(value: unknown): boolean | null;
|
|
11
|
+
//# sourceMappingURL=cli-args.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-args.d.ts","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAA;CAC1C;AAED,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,CAAA;AAEpD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAyCpD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI/F;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,EAC9B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,kBAAkB,CAOpB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAsBhE"}
|
package/dist/cli-args.js
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export function parseArgs(argv) {
|
|
2
|
+
const normalizedArgv = argv[0] === '--' ? argv.slice(1) : argv;
|
|
3
|
+
const positional = [];
|
|
4
|
+
const options = {};
|
|
5
|
+
for (let i = 0; i < normalizedArgv.length; i += 1) {
|
|
6
|
+
const arg = normalizedArgv[i];
|
|
7
|
+
if (!arg)
|
|
8
|
+
continue;
|
|
9
|
+
if (arg === '--') {
|
|
10
|
+
positional.push(...normalizedArgv.slice(i + 1));
|
|
11
|
+
break;
|
|
12
|
+
}
|
|
13
|
+
if (arg.startsWith('--')) {
|
|
14
|
+
const [flag, inlineValue] = arg.slice(2).split('=');
|
|
15
|
+
if (inlineValue !== undefined) {
|
|
16
|
+
options[flag] = inlineValue;
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
const next = normalizedArgv[i + 1];
|
|
20
|
+
if (next && !next.startsWith('--')) {
|
|
21
|
+
options[flag] = next;
|
|
22
|
+
i += 1;
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
options[flag] = true;
|
|
26
|
+
}
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (arg.startsWith('-') && arg.length > 1) {
|
|
30
|
+
options[arg.slice(1)] = true;
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
positional.push(arg);
|
|
34
|
+
}
|
|
35
|
+
const command = positional.shift() ?? null;
|
|
36
|
+
return { command, positional, options };
|
|
37
|
+
}
|
|
38
|
+
export function getStringOption(options, key) {
|
|
39
|
+
const value = options[key];
|
|
40
|
+
if (typeof value === 'string')
|
|
41
|
+
return value;
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
44
|
+
export function resolveGatewayRuntimeMode(options, env = process.env) {
|
|
45
|
+
const rawMode = getStringOption(options, 'mode') || env.PANORAMA_GATEWAY_MODE || 'local';
|
|
46
|
+
const mode = rawMode.trim().toLowerCase();
|
|
47
|
+
if (mode === 'local' || mode === 'managed') {
|
|
48
|
+
return mode;
|
|
49
|
+
}
|
|
50
|
+
throw new Error(`Unsupported gateway mode: ${rawMode}`);
|
|
51
|
+
}
|
|
52
|
+
export function parseBooleanInput(value) {
|
|
53
|
+
if (typeof value === 'boolean')
|
|
54
|
+
return value;
|
|
55
|
+
if (typeof value === 'string') {
|
|
56
|
+
const normalized = value.trim().toLowerCase();
|
|
57
|
+
if (normalized === 'true' ||
|
|
58
|
+
normalized === '1' ||
|
|
59
|
+
normalized === 'yes' ||
|
|
60
|
+
normalized === 'on') {
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
if (normalized === 'false' ||
|
|
64
|
+
normalized === '0' ||
|
|
65
|
+
normalized === 'no' ||
|
|
66
|
+
normalized === 'off') {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=cli-args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-args.js","sourceRoot":"","sources":["../src/cli-args.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC9D,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,MAAM,OAAO,GAAqC,EAAE,CAAA;IAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;QAC7B,IAAI,CAAC,GAAG;YAAE,SAAQ;QAElB,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YAC/C,MAAK;QACP,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACnD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAA;gBAC3B,SAAQ;YACV,CAAC;YAED,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YAClC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;gBACpB,CAAC,IAAI,CAAC,CAAA;YACR,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;YACtB,CAAC;YACD,SAAQ;QACV,CAAC;QAED,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;YAC5B,SAAQ;QACV,CAAC;QAED,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACtB,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,IAAI,CAAA;IAC1C,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAA8B,EAAE,GAAW;IACzE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,OAA8B,EAC9B,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,GAAG,CAAC,qBAAqB,IAAI,OAAO,CAAA;IACxF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACzC,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QAC7C,IACE,UAAU,KAAK,MAAM;YACrB,UAAU,KAAK,GAAG;YAClB,UAAU,KAAK,KAAK;YACpB,UAAU,KAAK,IAAI,EACnB,CAAC;YACD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,IACE,UAAU,KAAK,OAAO;YACtB,UAAU,KAAK,GAAG;YAClB,UAAU,KAAK,IAAI;YACnB,UAAU,KAAK,KAAK,EACpB,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface CommandDiscoveryOptions {
|
|
2
|
+
env?: NodeJS.ProcessEnv;
|
|
3
|
+
homeDir?: string;
|
|
4
|
+
platform?: NodeJS.Platform;
|
|
5
|
+
maxClaudeWrapperBytes?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function expandHomePath(value: string, homeDir?: string): string;
|
|
8
|
+
export declare function extractClaudeWrapperTarget(commandPath: string, options?: CommandDiscoveryOptions): string | null;
|
|
9
|
+
export declare function isBrokenClaudeWrapper(commandPath: string, options?: CommandDiscoveryOptions): boolean;
|
|
10
|
+
export declare function isExecutableCandidate(candidate: string, platform?: NodeJS.Platform): boolean;
|
|
11
|
+
export declare function collectBinDirs(options?: CommandDiscoveryOptions): string[];
|
|
12
|
+
export declare function expandCommandExtensions(command: string, options?: Pick<CommandDiscoveryOptions, 'env' | 'platform'>): string[];
|
|
13
|
+
export declare function collectCommandCandidates(command: string, extraCandidates: string[], options?: CommandDiscoveryOptions): string[];
|
|
14
|
+
export declare function resolveClaudeFallbackCommand(commandPath: string, options?: CommandDiscoveryOptions): string | null;
|
|
15
|
+
export declare function extractVersion(text: string): string | null;
|
|
16
|
+
export declare function compareVersions(a: string, b: string): number;
|
|
17
|
+
//# sourceMappingURL=cli-command-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-command-discovery.d.ts","sourceRoot":"","sources":["../src/cli-command-discovery.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,uBAAuB;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B;AAWD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,MAAqB,GAAG,MAAM,CAKpF;AAED,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,uBAA4B,GACpC,MAAM,GAAG,IAAI,CAaf;AAED,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAQT;AAED,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,OAAO,CAUT;AAED,wBAAgB,cAAc,CAAC,OAAO,GAAE,uBAA4B,GAAG,MAAM,EAAE,CAyD9E;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,IAAI,CAAC,uBAAuB,EAAE,KAAK,GAAG,UAAU,CAAM,GAC9D,MAAM,EAAE,CASV;AAED,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EAAE,EACzB,OAAO,GAAE,uBAA4B,GACpC,MAAM,EAAE,CA0BV;AAED,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,uBAA4B,GACpC,MAAM,GAAG,IAAI,CAiCf;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ1D;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA4B5D"}
|