@panorama-ai/gateway 2.29.14 → 2.30.181
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 +167 -10
- 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/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 +13 -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 +18 -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 +4209 -759
- package/dist/database.types.d.ts.map +1 -1
- package/dist/database.types.js +0 -3
- 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 +1 -1
- package/dist/gateway-operational-status.d.ts.map +1 -1
- package/dist/gateway-operational-status.js +7 -14
- package/dist/gateway-operational-status.js.map +1 -1
- 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 +11671 -5503
- package/dist/index.js.map +7 -1
- 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/{subagent-process-control.d.ts → process-control.d.ts} +1 -1
- package/dist/process-control.d.ts.map +1 -0
- package/dist/{subagent-process-control.js → process-control.js} +1 -1
- 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 +11 -0
- package/dist/remote-shell-resource.d.ts.map +1 -1
- package/dist/remote-shell-resource.js +66 -12
- package/dist/remote-shell-resource.js.map +1 -1
- package/dist/stream-json-collector.d.ts +1 -2
- package/dist/stream-json-collector.d.ts.map +1 -1
- package/dist/stream-json-collector.js +7 -18
- package/dist/stream-json-collector.js.map +1 -1
- package/dist/subagent-adapters/claude-code.d.ts.map +1 -1
- package/dist/subagent-adapters/claude-code.js +1 -5
- package/dist/subagent-adapters/claude-code.js.map +1 -1
- package/dist/subagent-adapters/codex.d.ts.map +1 -1
- package/dist/subagent-adapters/codex.js +5 -22
- 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 +9 -56
- 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 +4 -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-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.map +1 -1
- package/dist/subagent-full-control.js +7 -4
- package/dist/subagent-full-control.js.map +1 -1
- 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 +6 -3
- package/dist/subagent-process-control.d.ts.map +0 -1
- package/dist/subagent-process-control.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
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
|
|
|
@@ -30,6 +36,16 @@ Start this gateway and begin listening for jobs (foreground in dev, background f
|
|
|
30
36
|
pnpm --filter @panorama-ai/gateway dev -- start
|
|
31
37
|
```
|
|
32
38
|
|
|
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
|
+
|
|
33
49
|
Force this gateway into the background (built binary only):
|
|
34
50
|
|
|
35
51
|
```bash
|
|
@@ -55,7 +71,8 @@ Check this gateway's status:
|
|
|
55
71
|
pnpm --filter @panorama-ai/gateway dev -- status
|
|
56
72
|
```
|
|
57
73
|
|
|
58
|
-
Manage
|
|
74
|
+
Manage host machine control on this host (the CLI command is still `full-control`
|
|
75
|
+
for compatibility):
|
|
59
76
|
|
|
60
77
|
```bash
|
|
61
78
|
pnpm --filter @panorama-ai/gateway dev -- full-control status
|
|
@@ -75,6 +92,7 @@ Optional flags:
|
|
|
75
92
|
- `--verbose`, `-v` (show technical details like paths, IDs, and PIDs)
|
|
76
93
|
- `--env local|dev|test|stage|prod`
|
|
77
94
|
- `--env-file /path/to/.env`
|
|
95
|
+
- `--mode local|managed` (`start` only; default `local`)
|
|
78
96
|
- `--foreground` (run in the foreground)
|
|
79
97
|
- `--daemon` (force background for built CLI)
|
|
80
98
|
- `--config-dir /path/to/dir`
|
|
@@ -102,24 +120,108 @@ You can always point to a specific env file with `--env-file`.
|
|
|
102
120
|
|
|
103
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.
|
|
104
122
|
|
|
105
|
-
|
|
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:
|
|
106
196
|
|
|
107
197
|
- Gateway processes run as the logged-in user and are designed to behave like direct local CLI usage.
|
|
108
|
-
-
|
|
109
|
-
|
|
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.
|
|
110
204
|
- Machine-control capabilities are layered:
|
|
111
|
-
-
|
|
112
|
-
- team-level gateway toggle (Team Integrations UI / `set-gateway-full-control`)
|
|
205
|
+
- host machine-control toggle (`panorama-gateway full-control enable`)
|
|
206
|
+
- team-level gateway machine-control toggle (Team Integrations UI / `set-gateway-full-control`)
|
|
113
207
|
- resource-level opt-in (`config.full_control=true` for gateway subagents, `metadata.full_control=true` for `remote_shell` resources)
|
|
114
208
|
- Gateway state is stored locally under `~/.panorama/gateway` by default and includes pairing/session tokens needed for reconnects.
|
|
115
209
|
- On POSIX platforms, gateway state directories/files are enforced as owner-only (`0700` for dirs, `0600` for files).
|
|
116
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
|
+
|
|
117
219
|
Recommended deployment model:
|
|
118
220
|
|
|
119
221
|
- Use a machine/account you control (for example a dedicated cloud VM user) for each gateway instance.
|
|
120
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.
|
|
121
223
|
- Treat gateway host access as equivalent to local CLI access for that user account.
|
|
122
|
-
- For Panorama-managed VM guest images, start from `packages/gateway/vm-template/Dockerfile` and keep the guest
|
|
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.
|
|
123
225
|
|
|
124
226
|
If you hit a permission hardening error, fix ownership/permissions on the gateway state path and re-run `pair` or `start`.
|
|
125
227
|
|
|
@@ -145,11 +247,66 @@ Gateway currently handles:
|
|
|
145
247
|
|
|
146
248
|
- `diagnostic` jobs for host/provider validation
|
|
147
249
|
- `model_run` jobs for provider model execution
|
|
148
|
-
- `subagent_run` and `subagent_cancel` jobs for delegated
|
|
149
|
-
|
|
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
|
|
150
253
|
|
|
151
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.
|
|
152
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
|
+
|
|
153
283
|
## CLI Provider Notes
|
|
154
284
|
|
|
155
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,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":"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"}
|
|
@@ -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"}
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import fsSync from 'node:fs';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
const DEFAULT_MAX_CLAUDE_WRAPPER_BYTES = 4096;
|
|
5
|
+
function resolveOptions(options = {}) {
|
|
6
|
+
return {
|
|
7
|
+
env: options.env ?? process.env,
|
|
8
|
+
homeDir: options.homeDir ?? os.homedir(),
|
|
9
|
+
platform: options.platform ?? process.platform,
|
|
10
|
+
maxClaudeWrapperBytes: options.maxClaudeWrapperBytes ?? DEFAULT_MAX_CLAUDE_WRAPPER_BYTES,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export function expandHomePath(value, homeDir = os.homedir()) {
|
|
14
|
+
if (value.startsWith('~/')) {
|
|
15
|
+
return path.join(homeDir, value.slice(2));
|
|
16
|
+
}
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
export function extractClaudeWrapperTarget(commandPath, options = {}) {
|
|
20
|
+
const { homeDir, maxClaudeWrapperBytes } = resolveOptions(options);
|
|
21
|
+
try {
|
|
22
|
+
const stat = fsSync.statSync(commandPath);
|
|
23
|
+
if (!stat.isFile() || stat.size > maxClaudeWrapperBytes)
|
|
24
|
+
return null;
|
|
25
|
+
const raw = fsSync.readFileSync(commandPath, 'utf8');
|
|
26
|
+
const match = raw.match(/exec\s+(?:"([^"]+)"|'([^']+)'|([^\s]+))/);
|
|
27
|
+
const target = match?.[1] ?? match?.[2] ?? match?.[3];
|
|
28
|
+
if (!target)
|
|
29
|
+
return null;
|
|
30
|
+
return expandHomePath(target, homeDir);
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
export function isBrokenClaudeWrapper(commandPath, options = {}) {
|
|
37
|
+
const target = extractClaudeWrapperTarget(commandPath, options);
|
|
38
|
+
if (!target)
|
|
39
|
+
return false;
|
|
40
|
+
try {
|
|
41
|
+
return !fsSync.existsSync(target);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export function isExecutableCandidate(candidate, platform = process.platform) {
|
|
48
|
+
try {
|
|
49
|
+
const stat = fsSync.statSync(candidate);
|
|
50
|
+
if (!stat.isFile())
|
|
51
|
+
return false;
|
|
52
|
+
if (platform === 'win32')
|
|
53
|
+
return true;
|
|
54
|
+
fsSync.accessSync(candidate, fsSync.constants.X_OK);
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export function collectBinDirs(options = {}) {
|
|
62
|
+
const { env, homeDir, platform } = resolveOptions(options);
|
|
63
|
+
const dirs = new Set();
|
|
64
|
+
const addDir = (dir) => {
|
|
65
|
+
if (!dir)
|
|
66
|
+
return;
|
|
67
|
+
const resolved = expandHomePath(dir, homeDir);
|
|
68
|
+
if (!resolved)
|
|
69
|
+
return;
|
|
70
|
+
dirs.add(path.resolve(resolved));
|
|
71
|
+
};
|
|
72
|
+
const addPrefixBin = (prefix) => {
|
|
73
|
+
if (!prefix)
|
|
74
|
+
return;
|
|
75
|
+
const resolved = expandHomePath(prefix, homeDir);
|
|
76
|
+
if (!resolved)
|
|
77
|
+
return;
|
|
78
|
+
dirs.add(path.resolve(resolved, 'bin'));
|
|
79
|
+
};
|
|
80
|
+
addDir(env.PNPM_HOME);
|
|
81
|
+
addPrefixBin(env.NPM_CONFIG_PREFIX);
|
|
82
|
+
addPrefixBin(env.npm_config_prefix);
|
|
83
|
+
addDir(env.VOLTA_HOME ? path.join(env.VOLTA_HOME, 'bin') : null);
|
|
84
|
+
addDir(env.BUN_INSTALL ? path.join(env.BUN_INSTALL, 'bin') : null);
|
|
85
|
+
addPrefixBin(env.HOMEBREW_PREFIX);
|
|
86
|
+
addPrefixBin(env.BREW_PREFIX);
|
|
87
|
+
if (env.ASDF_DATA_DIR) {
|
|
88
|
+
addDir(path.join(env.ASDF_DATA_DIR, 'shims'));
|
|
89
|
+
}
|
|
90
|
+
if (platform === 'darwin') {
|
|
91
|
+
addDir('/opt/homebrew/bin');
|
|
92
|
+
addDir('/usr/local/bin');
|
|
93
|
+
addDir(path.join(homeDir, 'Library', 'pnpm'));
|
|
94
|
+
}
|
|
95
|
+
if (platform !== 'win32') {
|
|
96
|
+
addDir('/usr/local/bin');
|
|
97
|
+
addDir('/usr/bin');
|
|
98
|
+
addDir('/bin');
|
|
99
|
+
addDir(path.join(homeDir, '.local', 'bin'));
|
|
100
|
+
addDir(path.join(homeDir, 'bin'));
|
|
101
|
+
addDir(path.join(homeDir, '.npm-global', 'bin'));
|
|
102
|
+
addDir(path.join(homeDir, '.nvm', 'versions', 'node', 'current', 'bin'));
|
|
103
|
+
addDir(path.join(homeDir, '.asdf', 'shims'));
|
|
104
|
+
addDir(path.join(homeDir, '.nix-profile', 'bin'));
|
|
105
|
+
}
|
|
106
|
+
const pathDelimiter = platform === 'win32' ? ';' : ':';
|
|
107
|
+
const pathEntries = (env.PATH ?? '')
|
|
108
|
+
.split(pathDelimiter)
|
|
109
|
+
.map((entry) => entry.trim())
|
|
110
|
+
.filter(Boolean);
|
|
111
|
+
for (const entry of pathEntries) {
|
|
112
|
+
addDir(entry);
|
|
113
|
+
}
|
|
114
|
+
return Array.from(dirs);
|
|
115
|
+
}
|
|
116
|
+
export function expandCommandExtensions(command, options = {}) {
|
|
117
|
+
const env = options.env ?? process.env;
|
|
118
|
+
const platform = options.platform ?? process.platform;
|
|
119
|
+
if (platform !== 'win32')
|
|
120
|
+
return [command];
|
|
121
|
+
const extList = (env.PATHEXT ?? '.EXE;.CMD;.BAT')
|
|
122
|
+
.split(';')
|
|
123
|
+
.map((entry) => entry.trim())
|
|
124
|
+
.filter(Boolean);
|
|
125
|
+
return extList.map((ext) => `${command}${ext.toLowerCase()}`);
|
|
126
|
+
}
|
|
127
|
+
export function collectCommandCandidates(command, extraCandidates, options = {}) {
|
|
128
|
+
const resolvedOptions = resolveOptions(options);
|
|
129
|
+
const candidates = new Set();
|
|
130
|
+
const addCandidate = (value) => {
|
|
131
|
+
if (!value)
|
|
132
|
+
return;
|
|
133
|
+
const resolved = expandHomePath(value, resolvedOptions.homeDir);
|
|
134
|
+
candidates.add(resolved);
|
|
135
|
+
};
|
|
136
|
+
extraCandidates.forEach(addCandidate);
|
|
137
|
+
const binDirs = collectBinDirs(resolvedOptions);
|
|
138
|
+
const extensions = expandCommandExtensions(command, resolvedOptions);
|
|
139
|
+
for (const dir of binDirs) {
|
|
140
|
+
for (const extCommand of extensions) {
|
|
141
|
+
const candidate = path.join(dir, extCommand);
|
|
142
|
+
if (isExecutableCandidate(candidate, resolvedOptions.platform)) {
|
|
143
|
+
candidates.add(candidate);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
candidates.add(command);
|
|
148
|
+
return Array.from(candidates);
|
|
149
|
+
}
|
|
150
|
+
export function resolveClaudeFallbackCommand(commandPath, options = {}) {
|
|
151
|
+
const resolvedOptions = resolveOptions(options);
|
|
152
|
+
if (!isBrokenClaudeWrapper(commandPath, resolvedOptions))
|
|
153
|
+
return null;
|
|
154
|
+
const excluded = new Set();
|
|
155
|
+
const addExcluded = (value) => {
|
|
156
|
+
if (!value)
|
|
157
|
+
return;
|
|
158
|
+
excluded.add(path.resolve(value));
|
|
159
|
+
try {
|
|
160
|
+
excluded.add(fsSync.realpathSync(value));
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// ignore realpath errors
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
addExcluded(commandPath);
|
|
167
|
+
const candidates = [path.join(resolvedOptions.homeDir, '.claude', 'claude')];
|
|
168
|
+
for (const candidate of candidates) {
|
|
169
|
+
if (excluded.has(path.resolve(candidate)))
|
|
170
|
+
continue;
|
|
171
|
+
if (isExecutableCandidate(candidate, resolvedOptions.platform))
|
|
172
|
+
return candidate;
|
|
173
|
+
}
|
|
174
|
+
const extensions = expandCommandExtensions('claude', resolvedOptions);
|
|
175
|
+
for (const dir of collectBinDirs(resolvedOptions)) {
|
|
176
|
+
for (const extCommand of extensions) {
|
|
177
|
+
const candidate = path.join(dir, extCommand);
|
|
178
|
+
if (excluded.has(path.resolve(candidate)))
|
|
179
|
+
continue;
|
|
180
|
+
if (isExecutableCandidate(candidate, resolvedOptions.platform))
|
|
181
|
+
return candidate;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
export function extractVersion(text) {
|
|
187
|
+
const normalized = text.trim();
|
|
188
|
+
if (!normalized)
|
|
189
|
+
return null;
|
|
190
|
+
const match = normalized.match(/v?(\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?)/);
|
|
191
|
+
if (match?.[1])
|
|
192
|
+
return match[1];
|
|
193
|
+
const fallback = normalized.match(/v?(\d+\.\d+)/);
|
|
194
|
+
if (fallback?.[1])
|
|
195
|
+
return `${fallback[1]}.0`;
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
export function compareVersions(a, b) {
|
|
199
|
+
const parse = (value) => {
|
|
200
|
+
const cleaned = value.replace(/^v/i, '');
|
|
201
|
+
const [main, pre] = cleaned.split('-', 2);
|
|
202
|
+
const parts = main.split('.').map((part) => Number.parseInt(part, 10));
|
|
203
|
+
if (parts.some((part) => Number.isNaN(part)))
|
|
204
|
+
return null;
|
|
205
|
+
return { parts, pre: pre ?? null };
|
|
206
|
+
};
|
|
207
|
+
const parsedA = parse(a);
|
|
208
|
+
const parsedB = parse(b);
|
|
209
|
+
if (!parsedA || !parsedB)
|
|
210
|
+
return 0;
|
|
211
|
+
const length = Math.max(parsedA.parts.length, parsedB.parts.length);
|
|
212
|
+
for (let i = 0; i < length; i += 1) {
|
|
213
|
+
const left = parsedA.parts[i] ?? 0;
|
|
214
|
+
const right = parsedB.parts[i] ?? 0;
|
|
215
|
+
if (left !== right)
|
|
216
|
+
return left > right ? 1 : -1;
|
|
217
|
+
}
|
|
218
|
+
if (parsedA.pre && !parsedB.pre)
|
|
219
|
+
return -1;
|
|
220
|
+
if (!parsedA.pre && parsedB.pre)
|
|
221
|
+
return 1;
|
|
222
|
+
if (parsedA.pre && parsedB.pre) {
|
|
223
|
+
if (parsedA.pre === parsedB.pre)
|
|
224
|
+
return 0;
|
|
225
|
+
return parsedA.pre > parsedB.pre ? 1 : -1;
|
|
226
|
+
}
|
|
227
|
+
return 0;
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=cli-command-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-command-discovery.js","sourceRoot":"","sources":["../src/cli-command-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,MAAM,gCAAgC,GAAG,IAAI,CAAA;AAS7C,SAAS,cAAc,CAAC,UAAmC,EAAE;IAC3D,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG;QAC/B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE;QACxC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ;QAC9C,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,IAAI,gCAAgC;KACzF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,UAAkB,EAAE,CAAC,OAAO,EAAE;IAC1E,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,WAAmB,EACnB,UAAmC,EAAE;IAErC,MAAM,EAAE,OAAO,EAAE,qBAAqB,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAClE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;QACzC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,qBAAqB;YAAE,OAAO,IAAI,CAAA;QACpE,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;QACpD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAA;QAClE,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;QACrD,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA;QACxB,OAAO,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,WAAmB,EACnB,UAAmC,EAAE;IAErC,MAAM,MAAM,GAAG,0BAA0B,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;IAC/D,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACzB,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,SAAiB,EACjB,WAA4B,OAAO,CAAC,QAAQ;IAE5C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QACvC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO,KAAK,CAAA;QAChC,IAAI,QAAQ,KAAK,OAAO;YAAE,OAAO,IAAI,CAAA;QACrC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACnD,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,UAAmC,EAAE;IAClE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAC1D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAE9B,MAAM,MAAM,GAAG,CAAC,GAAmB,EAAE,EAAE;QACrC,IAAI,CAAC,GAAG;YAAE,OAAM;QAChB,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC7C,IAAI,CAAC,QAAQ;YAAE,OAAM;QACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAA;IAClC,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,CAAC,MAAsB,EAAE,EAAE;QAC9C,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAChD,IAAI,CAAC,QAAQ;YAAE,OAAM;QACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;IACzC,CAAC,CAAA;IAED,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACrB,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IACnC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IACnC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAChE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IAClE,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;IACjC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;IAC7B,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,mBAAmB,CAAC,CAAA;QAC3B,MAAM,CAAC,gBAAgB,CAAC,CAAA;QACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;IAC/C,CAAC;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,CAAC,gBAAgB,CAAC,CAAA;QACxB,MAAM,CAAC,UAAU,CAAC,CAAA;QAClB,MAAM,CAAC,MAAM,CAAC,CAAA;QACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAA;QAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;QACjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAA;QAChD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAA;QACxE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;QAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC,CAAA;IACnD,CAAC;IAED,MAAM,aAAa,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;IACtD,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;SACjC,KAAK,CAAC,aAAa,CAAC;SACpB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC,CAAA;IAClB,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,CAAA;IACf,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,OAAe,EACf,UAA6D,EAAE;IAE/D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAA;IACrD,IAAI,QAAQ,KAAK,OAAO;QAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAC1C,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,gBAAgB,CAAC;SAC9C,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC,CAAA;IAClB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;AAC/D,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,OAAe,EACf,eAAyB,EACzB,UAAmC,EAAE;IAErC,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAC/C,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAA;IAEpC,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE;QACrC,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAA;QAC/D,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC1B,CAAC,CAAA;IAED,eAAe,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IAErC,MAAM,OAAO,GAAG,cAAc,CAAC,eAAe,CAAC,CAAA;IAC/C,MAAM,UAAU,GAAG,uBAAuB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAA;IACpE,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;YAC5C,IAAI,qBAAqB,CAAC,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/D,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAEvB,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;AAC/B,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,WAAmB,EACnB,UAAmC,EAAE;IAErC,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAC/C,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,eAAe,CAAC;QAAE,OAAO,IAAI,CAAA;IAErE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;IAClC,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,EAAE;QACpC,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QACjC,IAAI,CAAC;YACH,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAA;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC,CAAA;IAED,WAAW,CAAC,WAAW,CAAC,CAAA;IAExB,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC5E,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAAE,SAAQ;QACnD,IAAI,qBAAqB,CAAC,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC;YAAE,OAAO,SAAS,CAAA;IAClF,CAAC;IAED,MAAM,UAAU,GAAG,uBAAuB,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAA;IACrE,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,eAAe,CAAC,EAAE,CAAC;QAClD,KAAK,MAAM,UAAU,IAAI,UAAU,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;YAC5C,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAAE,SAAQ;YACnD,IAAI,qBAAqB,CAAC,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC;gBAAE,OAAO,SAAS,CAAA;QAClF,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAC9B,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAA;IAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAA;IAC1E,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/B,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAA;IACjD,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA;IAC5C,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,CAAS;IAClD,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE;QAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACxC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;QACtE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,IAAI,CAAA;QACzD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,IAAI,EAAE,CAAA;IACpC,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACxB,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO;QAAE,OAAO,CAAC,CAAA;IAElC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACnE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACnC,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG;QAAE,OAAO,CAAC,CAAC,CAAA;IAC1C,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG;QAAE,OAAO,CAAC,CAAA;IACzC,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG;YAAE,OAAO,CAAC,CAAA;QACzC,OAAO,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3C,CAAC;IAED,OAAO,CAAC,CAAA;AACV,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type ParsedArgs } from './cli-args.js';
|
|
2
|
+
export declare function applyOptionEnvOverrides(options: ParsedArgs['options'], env?: NodeJS.ProcessEnv): void;
|
|
3
|
+
export declare function buildGatewayEnvOverrides(options: ParsedArgs['options']): NodeJS.ProcessEnv;
|
|
4
|
+
export declare function normalizeEnvName(raw: string | undefined): string | null;
|
|
5
|
+
export declare function parseBooleanEnv(value: string | undefined, fallback: boolean): boolean;
|
|
6
|
+
export declare function parseNumberEnv(value: string | undefined, fallback: number): number;
|
|
7
|
+
//# sourceMappingURL=cli-env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-env.d.ts","sourceRoot":"","sources":["../src/cli-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAA;AAIhE,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,EAC9B,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,IAAI,CAaN;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,UAAU,CAuB1F;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAQvE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAUrF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKlF"}
|