@stigmer/cli 3.0.8
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/LICENSE +190 -0
- package/README.md +42 -0
- package/auth/auth0.d.ts +19 -0
- package/auth/auth0.d.ts.map +1 -0
- package/auth/auth0.js +39 -0
- package/auth/auth0.js.map +1 -0
- package/auth/callback-server.d.ts +18 -0
- package/auth/callback-server.d.ts.map +1 -0
- package/auth/callback-server.js +77 -0
- package/auth/callback-server.js.map +1 -0
- package/auth/index.d.ts +5 -0
- package/auth/index.d.ts.map +1 -0
- package/auth/index.js +6 -0
- package/auth/index.js.map +1 -0
- package/auth/login.d.ts +2 -0
- package/auth/login.d.ts.map +1 -0
- package/auth/login.js +56 -0
- package/auth/login.js.map +1 -0
- package/auth/pages.d.ts +7 -0
- package/auth/pages.d.ts.map +1 -0
- package/auth/pages.js +21 -0
- package/auth/pages.js.map +1 -0
- package/auth/pkce.d.ts +7 -0
- package/auth/pkce.d.ts.map +1 -0
- package/auth/pkce.js +22 -0
- package/auth/pkce.js.map +1 -0
- package/auth/token.d.ts +33 -0
- package/auth/token.d.ts.map +1 -0
- package/auth/token.js +111 -0
- package/auth/token.js.map +1 -0
- package/backend.d.ts +5 -0
- package/backend.d.ts.map +1 -0
- package/backend.js +14 -0
- package/backend.js.map +1 -0
- package/cli/stigmer.d.ts +3 -0
- package/cli/stigmer.d.ts.map +1 -0
- package/cli/stigmer.js +14 -0
- package/cli/stigmer.js.map +1 -0
- package/client/client.d.ts +25 -0
- package/client/client.d.ts.map +1 -0
- package/client/client.js +55 -0
- package/client/client.js.map +1 -0
- package/client/index.d.ts +2 -0
- package/client/index.d.ts.map +1 -0
- package/client/index.js +3 -0
- package/client/index.js.map +1 -0
- package/commands/agent-exec-flags.d.ts +30 -0
- package/commands/agent-exec-flags.d.ts.map +1 -0
- package/commands/agent-exec-flags.js +52 -0
- package/commands/agent-exec-flags.js.map +1 -0
- package/commands/apikey/duration.d.ts +2 -0
- package/commands/apikey/duration.d.ts.map +1 -0
- package/commands/apikey/duration.js +30 -0
- package/commands/apikey/duration.js.map +1 -0
- package/commands/apikey/index.d.ts +3 -0
- package/commands/apikey/index.d.ts.map +1 -0
- package/commands/apikey/index.js +118 -0
- package/commands/apikey/index.js.map +1 -0
- package/commands/apply.d.ts +3 -0
- package/commands/apply.d.ts.map +1 -0
- package/commands/apply.js +155 -0
- package/commands/apply.js.map +1 -0
- package/commands/auth/index.d.ts +3 -0
- package/commands/auth/index.d.ts.map +1 -0
- package/commands/auth/index.js +76 -0
- package/commands/auth/index.js.map +1 -0
- package/commands/completion.d.ts +3 -0
- package/commands/completion.d.ts.map +1 -0
- package/commands/completion.js +82 -0
- package/commands/completion.js.map +1 -0
- package/commands/config/backend.d.ts +3 -0
- package/commands/config/backend.d.ts.map +1 -0
- package/commands/config/backend.js +49 -0
- package/commands/config/backend.js.map +1 -0
- package/commands/config/context.d.ts +3 -0
- package/commands/config/context.d.ts.map +1 -0
- package/commands/config/context.js +23 -0
- package/commands/config/context.js.map +1 -0
- package/commands/config/index.d.ts +3 -0
- package/commands/config/index.d.ts.map +1 -0
- package/commands/config/index.js +13 -0
- package/commands/config/index.js.map +1 -0
- package/commands/config/kv.d.ts +3 -0
- package/commands/config/kv.d.ts.map +1 -0
- package/commands/config/kv.js +39 -0
- package/commands/config/kv.js.map +1 -0
- package/commands/connect.d.ts +3 -0
- package/commands/connect.d.ts.map +1 -0
- package/commands/connect.js +56 -0
- package/commands/connect.js.map +1 -0
- package/commands/delete.d.ts +3 -0
- package/commands/delete.d.ts.map +1 -0
- package/commands/delete.js +41 -0
- package/commands/delete.js.map +1 -0
- package/commands/diff.d.ts +3 -0
- package/commands/diff.d.ts.map +1 -0
- package/commands/diff.js +87 -0
- package/commands/diff.js.map +1 -0
- package/commands/down.d.ts +3 -0
- package/commands/down.d.ts.map +1 -0
- package/commands/down.js +23 -0
- package/commands/down.js.map +1 -0
- package/commands/download.d.ts +3 -0
- package/commands/download.d.ts.map +1 -0
- package/commands/download.js +46 -0
- package/commands/download.js.map +1 -0
- package/commands/draft.d.ts +3 -0
- package/commands/draft.d.ts.map +1 -0
- package/commands/draft.js +97 -0
- package/commands/draft.js.map +1 -0
- package/commands/execution/approve.d.ts +3 -0
- package/commands/execution/approve.d.ts.map +1 -0
- package/commands/execution/approve.js +60 -0
- package/commands/execution/approve.js.map +1 -0
- package/commands/execution/control.d.ts +3 -0
- package/commands/execution/control.d.ts.map +1 -0
- package/commands/execution/control.js +57 -0
- package/commands/execution/control.js.map +1 -0
- package/commands/execution/index.d.ts +3 -0
- package/commands/execution/index.d.ts.map +1 -0
- package/commands/execution/index.js +21 -0
- package/commands/execution/index.js.map +1 -0
- package/commands/execution/logs.d.ts +3 -0
- package/commands/execution/logs.d.ts.map +1 -0
- package/commands/execution/logs.js +34 -0
- package/commands/execution/logs.js.map +1 -0
- package/commands/execution/trace.d.ts +3 -0
- package/commands/execution/trace.d.ts.map +1 -0
- package/commands/execution/trace.js +24 -0
- package/commands/execution/trace.js.map +1 -0
- package/commands/get.d.ts +3 -0
- package/commands/get.d.ts.map +1 -0
- package/commands/get.js +81 -0
- package/commands/get.js.map +1 -0
- package/commands/internal-daemon.d.ts +3 -0
- package/commands/internal-daemon.d.ts.map +1 -0
- package/commands/internal-daemon.js +22 -0
- package/commands/internal-daemon.js.map +1 -0
- package/commands/list.d.ts +3 -0
- package/commands/list.d.ts.map +1 -0
- package/commands/list.js +117 -0
- package/commands/list.js.map +1 -0
- package/commands/logs.d.ts +3 -0
- package/commands/logs.d.ts.map +1 -0
- package/commands/logs.js +59 -0
- package/commands/logs.js.map +1 -0
- package/commands/mcp-server.d.ts +22 -0
- package/commands/mcp-server.d.ts.map +1 -0
- package/commands/mcp-server.js +104 -0
- package/commands/mcp-server.js.map +1 -0
- package/commands/push.d.ts +3 -0
- package/commands/push.d.ts.map +1 -0
- package/commands/push.js +150 -0
- package/commands/push.js.map +1 -0
- package/commands/reset.d.ts +3 -0
- package/commands/reset.d.ts.map +1 -0
- package/commands/reset.js +45 -0
- package/commands/reset.js.map +1 -0
- package/commands/resume.d.ts +3 -0
- package/commands/resume.d.ts.map +1 -0
- package/commands/resume.js +87 -0
- package/commands/resume.js.map +1 -0
- package/commands/run.d.ts +3 -0
- package/commands/run.d.ts.map +1 -0
- package/commands/run.js +193 -0
- package/commands/run.js.map +1 -0
- package/commands/search.d.ts +3 -0
- package/commands/search.d.ts.map +1 -0
- package/commands/search.js +73 -0
- package/commands/search.js.map +1 -0
- package/commands/seedpack.d.ts +3 -0
- package/commands/seedpack.d.ts.map +1 -0
- package/commands/seedpack.js +76 -0
- package/commands/seedpack.js.map +1 -0
- package/commands/setup.d.ts +3 -0
- package/commands/setup.d.ts.map +1 -0
- package/commands/setup.js +57 -0
- package/commands/setup.js.map +1 -0
- package/commands/shared.d.ts +15 -0
- package/commands/shared.d.ts.map +1 -0
- package/commands/shared.js +34 -0
- package/commands/shared.js.map +1 -0
- package/commands/status.d.ts +3 -0
- package/commands/status.d.ts.map +1 -0
- package/commands/status.js +18 -0
- package/commands/status.js.map +1 -0
- package/commands/tag.d.ts +3 -0
- package/commands/tag.d.ts.map +1 -0
- package/commands/tag.js +24 -0
- package/commands/tag.js.map +1 -0
- package/commands/up.d.ts +3 -0
- package/commands/up.d.ts.map +1 -0
- package/commands/up.js +39 -0
- package/commands/up.js.map +1 -0
- package/commands/usage.d.ts +3 -0
- package/commands/usage.d.ts.map +1 -0
- package/commands/usage.js +56 -0
- package/commands/usage.js.map +1 -0
- package/commands/validate.d.ts +3 -0
- package/commands/validate.d.ts.map +1 -0
- package/commands/validate.js +64 -0
- package/commands/validate.js.map +1 -0
- package/commands/version.d.ts +3 -0
- package/commands/version.d.ts.map +1 -0
- package/commands/version.js +11 -0
- package/commands/version.js.map +1 -0
- package/config/config.d.ts +39 -0
- package/config/config.d.ts.map +1 -0
- package/config/config.js +85 -0
- package/config/config.js.map +1 -0
- package/config/index.d.ts +5 -0
- package/config/index.d.ts.map +1 -0
- package/config/index.js +6 -0
- package/config/index.js.map +1 -0
- package/config/keys.d.ts +6 -0
- package/config/keys.d.ts.map +1 -0
- package/config/keys.js +53 -0
- package/config/keys.js.map +1 -0
- package/config/paths.d.ts +10 -0
- package/config/paths.d.ts.map +1 -0
- package/config/paths.js +21 -0
- package/config/paths.js.map +1 -0
- package/config/resolve.d.ts +33 -0
- package/config/resolve.d.ts.map +1 -0
- package/config/resolve.js +77 -0
- package/config/resolve.js.map +1 -0
- package/errors/classify.d.ts +17 -0
- package/errors/classify.d.ts.map +1 -0
- package/errors/classify.js +158 -0
- package/errors/classify.js.map +1 -0
- package/errors/cli-exit-error.d.ts +6 -0
- package/errors/cli-exit-error.d.ts.map +1 -0
- package/errors/cli-exit-error.js +15 -0
- package/errors/cli-exit-error.js.map +1 -0
- package/errors/exit-codes.d.ts +10 -0
- package/errors/exit-codes.d.ts.map +1 -0
- package/errors/exit-codes.js +12 -0
- package/errors/exit-codes.js.map +1 -0
- package/errors/handle.d.ts +14 -0
- package/errors/handle.d.ts.map +1 -0
- package/errors/handle.js +46 -0
- package/errors/handle.js.map +1 -0
- package/errors/index.d.ts +6 -0
- package/errors/index.d.ts.map +1 -0
- package/errors/index.js +7 -0
- package/errors/index.js.map +1 -0
- package/errors/usage-error.d.ts +5 -0
- package/errors/usage-error.d.ts.map +1 -0
- package/errors/usage-error.js +13 -0
- package/errors/usage-error.js.map +1 -0
- package/index.d.ts +3 -0
- package/index.d.ts.map +1 -0
- package/index.js +8 -0
- package/index.js.map +1 -0
- package/local/artifact.d.ts +38 -0
- package/local/artifact.d.ts.map +1 -0
- package/local/artifact.js +133 -0
- package/local/artifact.js.map +1 -0
- package/local/constants.d.ts +36 -0
- package/local/constants.d.ts.map +1 -0
- package/local/constants.js +44 -0
- package/local/constants.js.map +1 -0
- package/local/daemon/components.d.ts +20 -0
- package/local/daemon/components.d.ts.map +1 -0
- package/local/daemon/components.js +105 -0
- package/local/daemon/components.js.map +1 -0
- package/local/daemon/env.d.ts +55 -0
- package/local/daemon/env.d.ts.map +1 -0
- package/local/daemon/env.js +82 -0
- package/local/daemon/env.js.map +1 -0
- package/local/daemon/host.d.ts +7 -0
- package/local/daemon/host.d.ts.map +1 -0
- package/local/daemon/host.js +74 -0
- package/local/daemon/host.js.map +1 -0
- package/local/daemon/index.d.ts +8 -0
- package/local/daemon/index.d.ts.map +1 -0
- package/local/daemon/index.js +8 -0
- package/local/daemon/index.js.map +1 -0
- package/local/daemon/launch.d.ts +11 -0
- package/local/daemon/launch.d.ts.map +1 -0
- package/local/daemon/launch.js +219 -0
- package/local/daemon/launch.js.map +1 -0
- package/local/daemon/process.d.ts +28 -0
- package/local/daemon/process.d.ts.map +1 -0
- package/local/daemon/process.js +149 -0
- package/local/daemon/process.js.map +1 -0
- package/local/daemon/supervisor.d.ts +56 -0
- package/local/daemon/supervisor.d.ts.map +1 -0
- package/local/daemon/supervisor.js +211 -0
- package/local/daemon/supervisor.js.map +1 -0
- package/local/daemon/types.d.ts +63 -0
- package/local/daemon/types.d.ts.map +1 -0
- package/local/daemon/types.js +9 -0
- package/local/daemon/types.js.map +1 -0
- package/local/llm-config.d.ts +30 -0
- package/local/llm-config.d.ts.map +1 -0
- package/local/llm-config.js +93 -0
- package/local/llm-config.js.map +1 -0
- package/local/logs/tail.d.ts +19 -0
- package/local/logs/tail.d.ts.map +1 -0
- package/local/logs/tail.js +86 -0
- package/local/logs/tail.js.map +1 -0
- package/local/logs/view.d.ts +20 -0
- package/local/logs/view.d.ts.map +1 -0
- package/local/logs/view.js +50 -0
- package/local/logs/view.js.map +1 -0
- package/local/net/tcp.d.ts +23 -0
- package/local/net/tcp.d.ts.map +1 -0
- package/local/net/tcp.js +47 -0
- package/local/net/tcp.js.map +1 -0
- package/local/paths.d.ts +26 -0
- package/local/paths.d.ts.map +1 -0
- package/local/paths.js +57 -0
- package/local/paths.js.map +1 -0
- package/local/reset.d.ts +14 -0
- package/local/reset.d.ts.map +1 -0
- package/local/reset.js +57 -0
- package/local/reset.js.map +1 -0
- package/local/runtime/index.d.ts +5 -0
- package/local/runtime/index.d.ts.map +1 -0
- package/local/runtime/index.js +6 -0
- package/local/runtime/index.js.map +1 -0
- package/local/runtime/node.d.ts +8 -0
- package/local/runtime/node.d.ts.map +1 -0
- package/local/runtime/node.js +59 -0
- package/local/runtime/node.js.map +1 -0
- package/local/runtime/runner.d.ts +40 -0
- package/local/runtime/runner.d.ts.map +1 -0
- package/local/runtime/runner.js +154 -0
- package/local/runtime/runner.js.map +1 -0
- package/local/runtime/server.d.ts +39 -0
- package/local/runtime/server.d.ts.map +1 -0
- package/local/runtime/server.js +141 -0
- package/local/runtime/server.js.map +1 -0
- package/local/runtime/which.d.ts +3 -0
- package/local/runtime/which.d.ts.map +1 -0
- package/local/runtime/which.js +30 -0
- package/local/runtime/which.js.map +1 -0
- package/local/seedpack/apply.d.ts +43 -0
- package/local/seedpack/apply.d.ts.map +1 -0
- package/local/seedpack/apply.js +94 -0
- package/local/seedpack/apply.js.map +1 -0
- package/local/seedpack/content.d.ts +56 -0
- package/local/seedpack/content.d.ts.map +1 -0
- package/local/seedpack/content.js +201 -0
- package/local/seedpack/content.js.map +1 -0
- package/local/setup/prompt.d.ts +8 -0
- package/local/setup/prompt.d.ts.map +1 -0
- package/local/setup/prompt.js +63 -0
- package/local/setup/prompt.js.map +1 -0
- package/local/setup/wizard.d.ts +22 -0
- package/local/setup/wizard.d.ts.map +1 -0
- package/local/setup/wizard.js +65 -0
- package/local/setup/wizard.js.map +1 -0
- package/local/state/health-state.d.ts +26 -0
- package/local/state/health-state.d.ts.map +1 -0
- package/local/state/health-state.js +34 -0
- package/local/state/health-state.js.map +1 -0
- package/local/state/index.d.ts +7 -0
- package/local/state/index.d.ts.map +1 -0
- package/local/state/index.js +8 -0
- package/local/state/index.js.map +1 -0
- package/local/state/lock.d.ts +12 -0
- package/local/state/lock.d.ts.map +1 -0
- package/local/state/lock.js +70 -0
- package/local/state/lock.js.map +1 -0
- package/local/state/log-rotation.d.ts +17 -0
- package/local/state/log-rotation.d.ts.map +1 -0
- package/local/state/log-rotation.js +101 -0
- package/local/state/log-rotation.js.map +1 -0
- package/local/state/pidfile.d.ts +11 -0
- package/local/state/pidfile.d.ts.map +1 -0
- package/local/state/pidfile.js +35 -0
- package/local/state/pidfile.js.map +1 -0
- package/local/state/proc.d.ts +16 -0
- package/local/state/proc.d.ts.map +1 -0
- package/local/state/proc.js +69 -0
- package/local/state/proc.js.map +1 -0
- package/local/state/startup-config.d.ts +23 -0
- package/local/state/startup-config.d.ts.map +1 -0
- package/local/state/startup-config.js +33 -0
- package/local/state/startup-config.js.map +1 -0
- package/local/status.d.ts +9 -0
- package/local/status.d.ts.map +1 -0
- package/local/status.js +168 -0
- package/local/status.js.map +1 -0
- package/local/temporal/download.d.ts +20 -0
- package/local/temporal/download.d.ts.map +1 -0
- package/local/temporal/download.js +36 -0
- package/local/temporal/download.js.map +1 -0
- package/local/temporal/index.d.ts +5 -0
- package/local/temporal/index.d.ts.map +1 -0
- package/local/temporal/index.js +6 -0
- package/local/temporal/index.js.map +1 -0
- package/local/temporal/inspect.d.ts +8 -0
- package/local/temporal/inspect.d.ts.map +1 -0
- package/local/temporal/inspect.js +33 -0
- package/local/temporal/inspect.js.map +1 -0
- package/local/temporal/manager.d.ts +50 -0
- package/local/temporal/manager.d.ts.map +1 -0
- package/local/temporal/manager.js +208 -0
- package/local/temporal/manager.js.map +1 -0
- package/local/temporal/supervisor.d.ts +34 -0
- package/local/temporal/supervisor.d.ts.map +1 -0
- package/local/temporal/supervisor.js +83 -0
- package/local/temporal/supervisor.js.map +1 -0
- package/local/webconsole/index.d.ts +4 -0
- package/local/webconsole/index.d.ts.map +1 -0
- package/local/webconsole/index.js +13 -0
- package/local/webconsole/index.js.map +1 -0
- package/logger.d.ts +13 -0
- package/logger.d.ts.map +1 -0
- package/logger.js +35 -0
- package/logger.js.map +1 -0
- package/output/command-result.d.ts +47 -0
- package/output/command-result.d.ts.map +1 -0
- package/output/command-result.js +134 -0
- package/output/command-result.js.map +1 -0
- package/output/confirm.d.ts +22 -0
- package/output/confirm.d.ts.map +1 -0
- package/output/confirm.js +42 -0
- package/output/confirm.js.map +1 -0
- package/output/format.d.ts +22 -0
- package/output/format.d.ts.map +1 -0
- package/output/format.js +72 -0
- package/output/format.js.map +1 -0
- package/output/index.d.ts +7 -0
- package/output/index.d.ts.map +1 -0
- package/output/index.js +8 -0
- package/output/index.js.map +1 -0
- package/output/ndjson.d.ts +24 -0
- package/output/ndjson.d.ts.map +1 -0
- package/output/ndjson.js +38 -0
- package/output/ndjson.js.map +1 -0
- package/output/proto.d.ts +12 -0
- package/output/proto.d.ts.map +1 -0
- package/output/proto.js +34 -0
- package/output/proto.js.map +1 -0
- package/output/style.d.ts +19 -0
- package/output/style.d.ts.map +1 -0
- package/output/style.js +44 -0
- package/output/style.js.map +1 -0
- package/output/table.d.ts +5 -0
- package/output/table.d.ts.map +1 -0
- package/output/table.js +43 -0
- package/output/table.js.map +1 -0
- package/package.json +49 -0
- package/program.d.ts +3 -0
- package/program.d.ts.map +1 -0
- package/program.js +95 -0
- package/program.js.map +1 -0
- package/registry/aliases.d.ts +18 -0
- package/registry/aliases.d.ts.map +1 -0
- package/registry/aliases.js +85 -0
- package/registry/aliases.js.map +1 -0
- package/registry/index.d.ts +6 -0
- package/registry/index.d.ts.map +1 -0
- package/registry/index.js +7 -0
- package/registry/index.js.map +1 -0
- package/registry/metadata.d.ts +12 -0
- package/registry/metadata.d.ts.map +1 -0
- package/registry/metadata.js +49 -0
- package/registry/metadata.js.map +1 -0
- package/registry/registry.d.ts +39 -0
- package/registry/registry.d.ts.map +1 -0
- package/registry/registry.js +59 -0
- package/registry/registry.js.map +1 -0
- package/registry/verb-support.d.ts +5 -0
- package/registry/verb-support.d.ts.map +1 -0
- package/registry/verb-support.js +48 -0
- package/registry/verb-support.js.map +1 -0
- package/registry/verbs.d.ts +16 -0
- package/registry/verbs.d.ts.map +1 -0
- package/registry/verbs.js +36 -0
- package/registry/verbs.js.map +1 -0
- package/resources/apply/apply.d.ts +55 -0
- package/resources/apply/apply.d.ts.map +1 -0
- package/resources/apply/apply.js +163 -0
- package/resources/apply/apply.js.map +1 -0
- package/resources/apply/declarative.d.ts +106 -0
- package/resources/apply/declarative.d.ts.map +1 -0
- package/resources/apply/declarative.js +378 -0
- package/resources/apply/declarative.js.map +1 -0
- package/resources/apply/discovery.d.ts +7 -0
- package/resources/apply/discovery.d.ts.map +1 -0
- package/resources/apply/discovery.js +47 -0
- package/resources/apply/discovery.js.map +1 -0
- package/resources/apply/handlers.d.ts +15 -0
- package/resources/apply/handlers.d.ts.map +1 -0
- package/resources/apply/handlers.js +126 -0
- package/resources/apply/handlers.js.map +1 -0
- package/resources/apply/synth/project-track.d.ts +21 -0
- package/resources/apply/synth/project-track.d.ts.map +1 -0
- package/resources/apply/synth/project-track.js +102 -0
- package/resources/apply/synth/project-track.js.map +1 -0
- package/resources/apply/synth/reader.d.ts +18 -0
- package/resources/apply/synth/reader.d.ts.map +1 -0
- package/resources/apply/synth/reader.js +55 -0
- package/resources/apply/synth/reader.js.map +1 -0
- package/resources/apply/synth/runtime.d.ts +8 -0
- package/resources/apply/synth/runtime.d.ts.map +1 -0
- package/resources/apply/synth/runtime.js +32 -0
- package/resources/apply/synth/runtime.js.map +1 -0
- package/resources/apply/synth/synthesize.d.ts +43 -0
- package/resources/apply/synth/synthesize.d.ts.map +1 -0
- package/resources/apply/synth/synthesize.js +115 -0
- package/resources/apply/synth/synthesize.js.map +1 -0
- package/resources/connect/connect.d.ts +24 -0
- package/resources/connect/connect.d.ts.map +1 -0
- package/resources/connect/connect.js +71 -0
- package/resources/connect/connect.js.map +1 -0
- package/resources/connect/discover.d.ts +5 -0
- package/resources/connect/discover.d.ts.map +1 -0
- package/resources/connect/discover.js +100 -0
- package/resources/connect/discover.js.map +1 -0
- package/resources/connect/display.d.ts +5 -0
- package/resources/connect/display.d.ts.map +1 -0
- package/resources/connect/display.js +58 -0
- package/resources/connect/display.js.map +1 -0
- package/resources/connect/oauth.d.ts +45 -0
- package/resources/connect/oauth.d.ts.map +1 -0
- package/resources/connect/oauth.js +152 -0
- package/resources/connect/oauth.js.map +1 -0
- package/resources/delete.d.ts +18 -0
- package/resources/delete.d.ts.map +1 -0
- package/resources/delete.js +180 -0
- package/resources/delete.js.map +1 -0
- package/resources/diff.d.ts +16 -0
- package/resources/diff.d.ts.map +1 -0
- package/resources/diff.js +158 -0
- package/resources/diff.js.map +1 -0
- package/resources/documents.d.ts +16 -0
- package/resources/documents.d.ts.map +1 -0
- package/resources/documents.js +89 -0
- package/resources/documents.js.map +1 -0
- package/resources/download.d.ts +16 -0
- package/resources/download.d.ts.map +1 -0
- package/resources/download.js +107 -0
- package/resources/download.js.map +1 -0
- package/resources/execution-approve.d.ts +26 -0
- package/resources/execution-approve.d.ts.map +1 -0
- package/resources/execution-approve.js +69 -0
- package/resources/execution-approve.js.map +1 -0
- package/resources/execution-control.d.ts +16 -0
- package/resources/execution-control.d.ts.map +1 -0
- package/resources/execution-control.js +57 -0
- package/resources/execution-control.js.map +1 -0
- package/resources/execution-format.d.ts +12 -0
- package/resources/execution-format.d.ts.map +1 -0
- package/resources/execution-format.js +56 -0
- package/resources/execution-format.js.map +1 -0
- package/resources/execution-logs.d.ts +16 -0
- package/resources/execution-logs.d.ts.map +1 -0
- package/resources/execution-logs.js +132 -0
- package/resources/execution-logs.js.map +1 -0
- package/resources/execution-trace.d.ts +10 -0
- package/resources/execution-trace.d.ts.map +1 -0
- package/resources/execution-trace.js +125 -0
- package/resources/execution-trace.js.map +1 -0
- package/resources/execution.d.ts +59 -0
- package/resources/execution.d.ts.map +1 -0
- package/resources/execution.js +192 -0
- package/resources/execution.js.map +1 -0
- package/resources/get-bindings.d.ts +12 -0
- package/resources/get-bindings.d.ts.map +1 -0
- package/resources/get-bindings.js +40 -0
- package/resources/get-bindings.js.map +1 -0
- package/resources/get.d.ts +6 -0
- package/resources/get.d.ts.map +1 -0
- package/resources/get.js +31 -0
- package/resources/get.js.map +1 -0
- package/resources/git.d.ts +15 -0
- package/resources/git.d.ts.map +1 -0
- package/resources/git.js +69 -0
- package/resources/git.js.map +1 -0
- package/resources/ignore/defaults.d.ts +2 -0
- package/resources/ignore/defaults.d.ts.map +1 -0
- package/resources/ignore/defaults.js +140 -0
- package/resources/ignore/defaults.js.map +1 -0
- package/resources/ignore/index.d.ts +5 -0
- package/resources/ignore/index.d.ts.map +1 -0
- package/resources/ignore/index.js +6 -0
- package/resources/ignore/index.js.map +1 -0
- package/resources/ignore/match.d.ts +3 -0
- package/resources/ignore/match.d.ts.map +1 -0
- package/resources/ignore/match.js +166 -0
- package/resources/ignore/match.js.map +1 -0
- package/resources/ignore/matcher.d.ts +44 -0
- package/resources/ignore/matcher.d.ts.map +1 -0
- package/resources/ignore/matcher.js +125 -0
- package/resources/ignore/matcher.js.map +1 -0
- package/resources/ignore/pattern.d.ts +13 -0
- package/resources/ignore/pattern.d.ts.map +1 -0
- package/resources/ignore/pattern.js +118 -0
- package/resources/ignore/pattern.js.map +1 -0
- package/resources/list.d.ts +7 -0
- package/resources/list.d.ts.map +1 -0
- package/resources/list.js +82 -0
- package/resources/list.js.map +1 -0
- package/resources/mcp/runtime-env.d.ts +23 -0
- package/resources/mcp/runtime-env.d.ts.map +1 -0
- package/resources/mcp/runtime-env.js +68 -0
- package/resources/mcp/runtime-env.js.map +1 -0
- package/resources/picker/ink.d.ts +35 -0
- package/resources/picker/ink.d.ts.map +1 -0
- package/resources/picker/ink.js +45 -0
- package/resources/picker/ink.js.map +1 -0
- package/resources/picker/tty.d.ts +19 -0
- package/resources/picker/tty.d.ts.map +1 -0
- package/resources/picker/tty.js +21 -0
- package/resources/picker/tty.js.map +1 -0
- package/resources/reference.d.ts +32 -0
- package/resources/reference.d.ts.map +1 -0
- package/resources/reference.js +128 -0
- package/resources/reference.js.map +1 -0
- package/resources/render.d.ts +28 -0
- package/resources/render.d.ts.map +1 -0
- package/resources/render.js +87 -0
- package/resources/render.js.map +1 -0
- package/resources/run/agent-exec.d.ts +15 -0
- package/resources/run/agent-exec.d.ts.map +1 -0
- package/resources/run/agent-exec.js +81 -0
- package/resources/run/agent-exec.js.map +1 -0
- package/resources/run/attachments.d.ts +24 -0
- package/resources/run/attachments.d.ts.map +1 -0
- package/resources/run/attachments.js +209 -0
- package/resources/run/attachments.js.map +1 -0
- package/resources/run/create.d.ts +56 -0
- package/resources/run/create.d.ts.map +1 -0
- package/resources/run/create.js +105 -0
- package/resources/run/create.js.map +1 -0
- package/resources/run/env.d.ts +18 -0
- package/resources/run/env.d.ts.map +1 -0
- package/resources/run/env.js +147 -0
- package/resources/run/env.js.map +1 -0
- package/resources/run/epilogue.d.ts +9 -0
- package/resources/run/epilogue.d.ts.map +1 -0
- package/resources/run/epilogue.js +144 -0
- package/resources/run/epilogue.js.map +1 -0
- package/resources/run/header.d.ts +23 -0
- package/resources/run/header.d.ts.map +1 -0
- package/resources/run/header.js +51 -0
- package/resources/run/header.js.map +1 -0
- package/resources/run/prepare.d.ts +60 -0
- package/resources/run/prepare.d.ts.map +1 -0
- package/resources/run/prepare.js +78 -0
- package/resources/run/prepare.js.map +1 -0
- package/resources/run/resolve.d.ts +8 -0
- package/resources/run/resolve.d.ts.map +1 -0
- package/resources/run/resolve.js +28 -0
- package/resources/run/resolve.js.map +1 -0
- package/resources/run/resume.d.ts +13 -0
- package/resources/run/resume.d.ts.map +1 -0
- package/resources/run/resume.js +94 -0
- package/resources/run/resume.js.map +1 -0
- package/resources/run/stream.d.ts +24 -0
- package/resources/run/stream.d.ts.map +1 -0
- package/resources/run/stream.js +80 -0
- package/resources/run/stream.js.map +1 -0
- package/resources/run/workflow-stream.d.ts +25 -0
- package/resources/run/workflow-stream.d.ts.map +1 -0
- package/resources/run/workflow-stream.js +152 -0
- package/resources/run/workflow-stream.js.map +1 -0
- package/resources/run/workspace.d.ts +17 -0
- package/resources/run/workspace.d.ts.map +1 -0
- package/resources/run/workspace.js +147 -0
- package/resources/run/workspace.js.map +1 -0
- package/resources/search.d.ts +22 -0
- package/resources/search.d.ts.map +1 -0
- package/resources/search.js +23 -0
- package/resources/search.js.map +1 -0
- package/resources/session.d.ts +19 -0
- package/resources/session.d.ts.map +1 -0
- package/resources/session.js +51 -0
- package/resources/session.js.map +1 -0
- package/resources/skill.d.ts +84 -0
- package/resources/skill.d.ts.map +1 -0
- package/resources/skill.js +342 -0
- package/resources/skill.js.map +1 -0
- package/resources/stream/approval-detect.d.ts +38 -0
- package/resources/stream/approval-detect.d.ts.map +1 -0
- package/resources/stream/approval-detect.js +93 -0
- package/resources/stream/approval-detect.js.map +1 -0
- package/resources/stream/convert.d.ts +38 -0
- package/resources/stream/convert.d.ts.map +1 -0
- package/resources/stream/convert.js +178 -0
- package/resources/stream/convert.js.map +1 -0
- package/resources/stream/diff.d.ts +29 -0
- package/resources/stream/diff.d.ts.map +1 -0
- package/resources/stream/diff.js +214 -0
- package/resources/stream/diff.js.map +1 -0
- package/resources/stream/events.d.ts +137 -0
- package/resources/stream/events.d.ts.map +1 -0
- package/resources/stream/events.js +15 -0
- package/resources/stream/events.js.map +1 -0
- package/resources/stream/headless.d.ts +38 -0
- package/resources/stream/headless.d.ts.map +1 -0
- package/resources/stream/headless.js +75 -0
- package/resources/stream/headless.js.map +1 -0
- package/resources/stream/ink.d.ts +22 -0
- package/resources/stream/ink.d.ts.map +1 -0
- package/resources/stream/ink.js +24 -0
- package/resources/stream/ink.js.map +1 -0
- package/resources/stream/render-ndjson.d.ts +25 -0
- package/resources/stream/render-ndjson.d.ts.map +1 -0
- package/resources/stream/render-ndjson.js +156 -0
- package/resources/stream/render-ndjson.js.map +1 -0
- package/resources/stream/render-plaintext.d.ts +18 -0
- package/resources/stream/render-plaintext.d.ts.map +1 -0
- package/resources/stream/render-plaintext.js +71 -0
- package/resources/stream/render-plaintext.js.map +1 -0
- package/resources/stream/snapshot.d.ts +8 -0
- package/resources/stream/snapshot.d.ts.map +1 -0
- package/resources/stream/snapshot.js +163 -0
- package/resources/stream/snapshot.js.map +1 -0
- package/resources/stream/subagent.d.ts +12 -0
- package/resources/stream/subagent.d.ts.map +1 -0
- package/resources/stream/subagent.js +76 -0
- package/resources/stream/subagent.js.map +1 -0
- package/resources/stream/submit.d.ts +20 -0
- package/resources/stream/submit.d.ts.map +1 -0
- package/resources/stream/submit.js +125 -0
- package/resources/stream/submit.js.map +1 -0
- package/resources/stream/todo.d.ts +11 -0
- package/resources/stream/todo.d.ts.map +1 -0
- package/resources/stream/todo.js +44 -0
- package/resources/stream/todo.js.map +1 -0
- package/resources/stream/tool-state.d.ts +31 -0
- package/resources/stream/tool-state.d.ts.map +1 -0
- package/resources/stream/tool-state.js +126 -0
- package/resources/stream/tool-state.js.map +1 -0
- package/resources/stream/tty.d.ts +8 -0
- package/resources/stream/tty.d.ts.map +1 -0
- package/resources/stream/tty.js +15 -0
- package/resources/stream/tty.js.map +1 -0
- package/resources/stream/workflow-event-view.d.ts +21 -0
- package/resources/stream/workflow-event-view.d.ts.map +1 -0
- package/resources/stream/workflow-event-view.js +88 -0
- package/resources/stream/workflow-event-view.js.map +1 -0
- package/resources/stream/workflow-render-ndjson.d.ts +5 -0
- package/resources/stream/workflow-render-ndjson.d.ts.map +1 -0
- package/resources/stream/workflow-render-ndjson.js +54 -0
- package/resources/stream/workflow-render-ndjson.js.map +1 -0
- package/resources/stream/workflow-render-plaintext.d.ts +8 -0
- package/resources/stream/workflow-render-plaintext.d.ts.map +1 -0
- package/resources/stream/workflow-render-plaintext.js +34 -0
- package/resources/stream/workflow-render-plaintext.js.map +1 -0
- package/resources/tag.d.ts +4 -0
- package/resources/tag.d.ts.map +1 -0
- package/resources/tag.js +36 -0
- package/resources/tag.js.map +1 -0
- package/resources/usage.d.ts +14 -0
- package/resources/usage.d.ts.map +1 -0
- package/resources/usage.js +251 -0
- package/resources/usage.js.map +1 -0
- package/resources/validate.d.ts +6 -0
- package/resources/validate.d.ts.map +1 -0
- package/resources/validate.js +28 -0
- package/resources/validate.js.map +1 -0
- package/resources/version.d.ts +6 -0
- package/resources/version.d.ts.map +1 -0
- package/resources/version.js +75 -0
- package/resources/version.js.map +1 -0
- package/runtime.d.ts +5 -0
- package/runtime.d.ts.map +1 -0
- package/runtime.js +19 -0
- package/runtime.js.map +1 -0
- package/src/auth/auth0.ts +43 -0
- package/src/auth/callback-server.ts +104 -0
- package/src/auth/index.ts +6 -0
- package/src/auth/login.ts +61 -0
- package/src/auth/pages.ts +31 -0
- package/src/auth/pkce.test.ts +37 -0
- package/src/auth/pkce.ts +26 -0
- package/src/auth/token.test.ts +95 -0
- package/src/auth/token.ts +135 -0
- package/src/backend.ts +15 -0
- package/src/cli/stigmer.ts +16 -0
- package/src/client/client.test.ts +46 -0
- package/src/client/client.ts +84 -0
- package/src/client/index.ts +3 -0
- package/src/commands/agent-exec-flags.ts +75 -0
- package/src/commands/apikey/duration.test.ts +23 -0
- package/src/commands/apikey/duration.ts +35 -0
- package/src/commands/apikey/index.ts +133 -0
- package/src/commands/apply.ts +213 -0
- package/src/commands/auth/index.ts +87 -0
- package/src/commands/completion.ts +96 -0
- package/src/commands/config/backend.ts +58 -0
- package/src/commands/config/context.ts +26 -0
- package/src/commands/config/index.ts +18 -0
- package/src/commands/config/kv.ts +44 -0
- package/src/commands/connect.ts +75 -0
- package/src/commands/delete.ts +56 -0
- package/src/commands/diff.ts +97 -0
- package/src/commands/down.ts +27 -0
- package/src/commands/download.ts +68 -0
- package/src/commands/draft.ts +128 -0
- package/src/commands/execution/approve.ts +76 -0
- package/src/commands/execution/control.ts +79 -0
- package/src/commands/execution/index.ts +24 -0
- package/src/commands/execution/logs.ts +47 -0
- package/src/commands/execution/trace.ts +32 -0
- package/src/commands/get.ts +99 -0
- package/src/commands/internal-daemon.ts +25 -0
- package/src/commands/list.ts +138 -0
- package/src/commands/logs.ts +73 -0
- package/src/commands/mcp-server.test.ts +65 -0
- package/src/commands/mcp-server.ts +124 -0
- package/src/commands/push.ts +205 -0
- package/src/commands/reset.ts +57 -0
- package/src/commands/resume.ts +121 -0
- package/src/commands/run.ts +276 -0
- package/src/commands/search.ts +90 -0
- package/src/commands/seedpack.ts +94 -0
- package/src/commands/setup.ts +71 -0
- package/src/commands/shared.ts +41 -0
- package/src/commands/status.ts +20 -0
- package/src/commands/tag.ts +31 -0
- package/src/commands/up.ts +51 -0
- package/src/commands/usage.ts +74 -0
- package/src/commands/validate.test.ts +79 -0
- package/src/commands/validate.ts +73 -0
- package/src/commands/version.ts +13 -0
- package/src/config/config.test.ts +76 -0
- package/src/config/config.ts +127 -0
- package/src/config/index.ts +22 -0
- package/src/config/keys.test.ts +38 -0
- package/src/config/keys.ts +64 -0
- package/src/config/paths.ts +25 -0
- package/src/config/resolve.test.ts +103 -0
- package/src/config/resolve.ts +80 -0
- package/src/errors/classify.ts +199 -0
- package/src/errors/cli-exit-error.ts +16 -0
- package/src/errors/clierr.test.ts +172 -0
- package/src/errors/exit-codes.ts +14 -0
- package/src/errors/handle.ts +53 -0
- package/src/errors/index.ts +7 -0
- package/src/errors/usage-error.ts +14 -0
- package/src/index.ts +8 -0
- package/src/local/artifact.test.ts +28 -0
- package/src/local/artifact.ts +166 -0
- package/src/local/constants.ts +52 -0
- package/src/local/daemon/components.test.ts +80 -0
- package/src/local/daemon/components.ts +113 -0
- package/src/local/daemon/daemon.integration.test.ts +183 -0
- package/src/local/daemon/env.test.ts +51 -0
- package/src/local/daemon/env.ts +118 -0
- package/src/local/daemon/host.ts +79 -0
- package/src/local/daemon/index.ts +18 -0
- package/src/local/daemon/launch.ts +260 -0
- package/src/local/daemon/process.ts +183 -0
- package/src/local/daemon/supervisor.test.ts +260 -0
- package/src/local/daemon/supervisor.ts +249 -0
- package/src/local/daemon/types.ts +76 -0
- package/src/local/llm-config.test.ts +80 -0
- package/src/local/llm-config.ts +107 -0
- package/src/local/logs/tail.test.ts +70 -0
- package/src/local/logs/tail.ts +100 -0
- package/src/local/logs/view.test.ts +46 -0
- package/src/local/logs/view.ts +65 -0
- package/src/local/net/tcp.ts +65 -0
- package/src/local/paths.ts +67 -0
- package/src/local/reset.test.ts +53 -0
- package/src/local/reset.ts +90 -0
- package/src/local/runtime/index.ts +18 -0
- package/src/local/runtime/node.ts +67 -0
- package/src/local/runtime/runner.ts +186 -0
- package/src/local/runtime/runtime.test.ts +155 -0
- package/src/local/runtime/server.test.ts +152 -0
- package/src/local/runtime/server.ts +172 -0
- package/src/local/runtime/which.ts +30 -0
- package/src/local/seedpack/apply.test.ts +166 -0
- package/src/local/seedpack/apply.ts +139 -0
- package/src/local/seedpack/content.test.ts +148 -0
- package/src/local/seedpack/content.ts +223 -0
- package/src/local/setup/prompt.ts +70 -0
- package/src/local/setup/wizard.test.ts +42 -0
- package/src/local/setup/wizard.ts +78 -0
- package/src/local/state/health-state.ts +55 -0
- package/src/local/state/index.ts +8 -0
- package/src/local/state/lock.ts +77 -0
- package/src/local/state/log-rotation.ts +112 -0
- package/src/local/state/pidfile.ts +37 -0
- package/src/local/state/proc.ts +66 -0
- package/src/local/state/startup-config.ts +51 -0
- package/src/local/state/state.test.ts +166 -0
- package/src/local/status.test.ts +88 -0
- package/src/local/status.ts +186 -0
- package/src/local/temporal/download.test.ts +64 -0
- package/src/local/temporal/download.ts +54 -0
- package/src/local/temporal/index.ts +6 -0
- package/src/local/temporal/inspect.ts +32 -0
- package/src/local/temporal/manager.test.ts +31 -0
- package/src/local/temporal/manager.ts +247 -0
- package/src/local/temporal/supervisor.test.ts +77 -0
- package/src/local/temporal/supervisor.ts +97 -0
- package/src/local/webconsole/index.ts +13 -0
- package/src/logger.ts +39 -0
- package/src/output/command-result.test.ts +64 -0
- package/src/output/command-result.ts +185 -0
- package/src/output/confirm.test.ts +43 -0
- package/src/output/confirm.ts +53 -0
- package/src/output/format.test.ts +65 -0
- package/src/output/format.ts +101 -0
- package/src/output/index.ts +30 -0
- package/src/output/ndjson.ts +55 -0
- package/src/output/proto.test.ts +72 -0
- package/src/output/proto.ts +55 -0
- package/src/output/style.ts +57 -0
- package/src/output/table.test.ts +37 -0
- package/src/output/table.ts +52 -0
- package/src/program.test.ts +64 -0
- package/src/program.ts +100 -0
- package/src/registry/aliases.test.ts +99 -0
- package/src/registry/aliases.ts +93 -0
- package/src/registry/index.ts +7 -0
- package/src/registry/metadata.ts +60 -0
- package/src/registry/registry.test.ts +80 -0
- package/src/registry/registry.ts +101 -0
- package/src/registry/verb-support.ts +50 -0
- package/src/registry/verbs.ts +43 -0
- package/src/resources/apply/apply.integration.test.ts +207 -0
- package/src/resources/apply/apply.ts +202 -0
- package/src/resources/apply/declarative.integration.test.ts +126 -0
- package/src/resources/apply/declarative.test.ts +132 -0
- package/src/resources/apply/declarative.ts +474 -0
- package/src/resources/apply/discovery.ts +60 -0
- package/src/resources/apply/handlers.ts +145 -0
- package/src/resources/apply/synth/capstone.integration.test.ts +134 -0
- package/src/resources/apply/synth/project-track.integration.test.ts +194 -0
- package/src/resources/apply/synth/project-track.ts +126 -0
- package/src/resources/apply/synth/reader.test.ts +90 -0
- package/src/resources/apply/synth/reader.ts +68 -0
- package/src/resources/apply/synth/runtime.test.ts +29 -0
- package/src/resources/apply/synth/runtime.ts +39 -0
- package/src/resources/apply/synth/synthesize.test.ts +109 -0
- package/src/resources/apply/synth/synthesize.ts +161 -0
- package/src/resources/connect/__fixtures__/stdio-crash.mjs +6 -0
- package/src/resources/connect/__fixtures__/stdio-server.mjs +43 -0
- package/src/resources/connect/connect.integration.test.ts +185 -0
- package/src/resources/connect/connect.ts +107 -0
- package/src/resources/connect/discover.test.ts +45 -0
- package/src/resources/connect/discover.ts +125 -0
- package/src/resources/connect/display.ts +68 -0
- package/src/resources/connect/oauth.test.ts +155 -0
- package/src/resources/connect/oauth.ts +191 -0
- package/src/resources/delete.ts +239 -0
- package/src/resources/diff.integration.test.ts +103 -0
- package/src/resources/diff.test.ts +34 -0
- package/src/resources/diff.ts +187 -0
- package/src/resources/documents.test.ts +67 -0
- package/src/resources/documents.ts +102 -0
- package/src/resources/download.ts +151 -0
- package/src/resources/execution-approve.test.ts +50 -0
- package/src/resources/execution-approve.ts +94 -0
- package/src/resources/execution-control.ts +78 -0
- package/src/resources/execution-format.test.ts +48 -0
- package/src/resources/execution-format.ts +54 -0
- package/src/resources/execution-logs.ts +176 -0
- package/src/resources/execution-trace.ts +159 -0
- package/src/resources/execution.integration.test.ts +285 -0
- package/src/resources/execution.test.ts +138 -0
- package/src/resources/execution.ts +229 -0
- package/src/resources/get-bindings.ts +61 -0
- package/src/resources/get.ts +41 -0
- package/src/resources/git.ts +71 -0
- package/src/resources/ignore/defaults.ts +155 -0
- package/src/resources/ignore/ignore.test.ts +139 -0
- package/src/resources/ignore/index.ts +17 -0
- package/src/resources/ignore/match.ts +158 -0
- package/src/resources/ignore/matcher.ts +158 -0
- package/src/resources/ignore/pattern.ts +131 -0
- package/src/resources/list.ts +97 -0
- package/src/resources/mcp/runtime-env.test.ts +68 -0
- package/src/resources/mcp/runtime-env.ts +79 -0
- package/src/resources/mutate-verbs.integration.test.ts +233 -0
- package/src/resources/picker/ink.tsx +114 -0
- package/src/resources/picker/tty.test.ts +37 -0
- package/src/resources/picker/tty.ts +30 -0
- package/src/resources/push-download.integration.test.ts +175 -0
- package/src/resources/read-completion.integration.test.ts +156 -0
- package/src/resources/read-verbs.integration.test.ts +164 -0
- package/src/resources/reference.test.ts +107 -0
- package/src/resources/reference.ts +140 -0
- package/src/resources/render.ts +118 -0
- package/src/resources/run/agent-exec.ts +107 -0
- package/src/resources/run/attachments.test.ts +113 -0
- package/src/resources/run/attachments.ts +261 -0
- package/src/resources/run/create.test.ts +119 -0
- package/src/resources/run/create.ts +165 -0
- package/src/resources/run/env.test.ts +131 -0
- package/src/resources/run/env.ts +167 -0
- package/src/resources/run/epilogue.ts +166 -0
- package/src/resources/run/header.test.ts +61 -0
- package/src/resources/run/header.ts +62 -0
- package/src/resources/run/prepare.test.ts +92 -0
- package/src/resources/run/prepare.ts +139 -0
- package/src/resources/run/resolve.ts +32 -0
- package/src/resources/run/resume.ts +119 -0
- package/src/resources/run/stream.ts +108 -0
- package/src/resources/run/workflow-stream.integration.test.ts +157 -0
- package/src/resources/run/workflow-stream.ts +203 -0
- package/src/resources/run/workspace.test.ts +93 -0
- package/src/resources/run/workspace.ts +171 -0
- package/src/resources/search.ts +53 -0
- package/src/resources/session.test.ts +48 -0
- package/src/resources/session.ts +66 -0
- package/src/resources/skill.test.ts +227 -0
- package/src/resources/skill.ts +451 -0
- package/src/resources/stream/approval-detect.ts +118 -0
- package/src/resources/stream/convert.ts +210 -0
- package/src/resources/stream/diff.test.ts +316 -0
- package/src/resources/stream/diff.ts +254 -0
- package/src/resources/stream/events.ts +193 -0
- package/src/resources/stream/headless.test.ts +119 -0
- package/src/resources/stream/headless.ts +112 -0
- package/src/resources/stream/ink.tsx +56 -0
- package/src/resources/stream/lazy-import.test.ts +63 -0
- package/src/resources/stream/render-ndjson.test.ts +116 -0
- package/src/resources/stream/render-ndjson.ts +176 -0
- package/src/resources/stream/render-plaintext.test.ts +68 -0
- package/src/resources/stream/render-plaintext.ts +86 -0
- package/src/resources/stream/snapshot.test.ts +97 -0
- package/src/resources/stream/snapshot.ts +191 -0
- package/src/resources/stream/subagent.ts +104 -0
- package/src/resources/stream/submit.test.ts +77 -0
- package/src/resources/stream/submit.ts +137 -0
- package/src/resources/stream/todo.ts +53 -0
- package/src/resources/stream/tool-state.ts +142 -0
- package/src/resources/stream/tty.ts +14 -0
- package/src/resources/stream/workflow-event-view.test.ts +116 -0
- package/src/resources/stream/workflow-event-view.ts +111 -0
- package/src/resources/stream/workflow-render-ndjson.ts +61 -0
- package/src/resources/stream/workflow-render-plaintext.ts +43 -0
- package/src/resources/stream/workflow-render.test.ts +81 -0
- package/src/resources/tag.ts +50 -0
- package/src/resources/usage.test.ts +94 -0
- package/src/resources/usage.ts +301 -0
- package/src/resources/validate.test.ts +54 -0
- package/src/resources/validate.ts +31 -0
- package/src/resources/version.ts +105 -0
- package/src/runtime.ts +23 -0
- package/src/types/marked-terminal.d.ts +31 -0
- package/src/version.ts +46 -0
- package/version.d.ts +2 -0
- package/version.d.ts.map +1 -0
- package/version.js +45 -0
- package/version.js.map +1 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
2
|
+
import { CliExitError } from "../errors/index.js";
|
|
3
|
+
import type { Config } from "./config.js";
|
|
4
|
+
import {
|
|
5
|
+
ensureAuthenticated,
|
|
6
|
+
resolveContextOrganization,
|
|
7
|
+
resolveEndpoint,
|
|
8
|
+
resolveOrganization,
|
|
9
|
+
resolveToken,
|
|
10
|
+
} from "./resolve.js";
|
|
11
|
+
|
|
12
|
+
const ENV_KEYS = ["STIGMER_SERVER_ADDRESS", "STIGMER_API_KEY", "STIGMER_ORG_ID"] as const;
|
|
13
|
+
|
|
14
|
+
afterEach(() => {
|
|
15
|
+
for (const key of ENV_KEYS) delete process.env[key];
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
function cloudConfig(overrides: Partial<Config["backend"]["cloud"]> = {}): Config {
|
|
19
|
+
return { backend: { type: "cloud", cloud: { endpoint: "cloud.example:443", ...overrides } } };
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
describe("resolveEndpoint", () => {
|
|
23
|
+
it("defaults to the local daemon address in local mode", () => {
|
|
24
|
+
expect(resolveEndpoint({ backend: { type: "local" } })).toBe("localhost:7234");
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it("uses the cloud default when no endpoint is configured", () => {
|
|
28
|
+
expect(resolveEndpoint({ backend: { type: "cloud" } })).toBe("api.stigmer.ai:443");
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it("prefers the configured cloud endpoint", () => {
|
|
32
|
+
expect(resolveEndpoint(cloudConfig())).toBe("cloud.example:443");
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it("lets STIGMER_SERVER_ADDRESS override everything", () => {
|
|
36
|
+
process.env.STIGMER_SERVER_ADDRESS = "override:7234";
|
|
37
|
+
expect(resolveEndpoint(cloudConfig())).toBe("override:7234");
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
describe("resolveToken", () => {
|
|
42
|
+
it("prefers STIGMER_API_KEY over the config token", () => {
|
|
43
|
+
process.env.STIGMER_API_KEY = "env-key";
|
|
44
|
+
expect(resolveToken(cloudConfig({ token: "config-token" }))).toBe("env-key");
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
it("falls back to the config token", () => {
|
|
48
|
+
expect(resolveToken(cloudConfig({ token: "config-token" }))).toBe("config-token");
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it("returns empty string when unauthenticated", () => {
|
|
52
|
+
expect(resolveToken({ backend: { type: "cloud" } })).toBe("");
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
describe("resolveOrganization", () => {
|
|
57
|
+
it("prefers the --org flag override", () => {
|
|
58
|
+
process.env.STIGMER_ORG_ID = "env-org";
|
|
59
|
+
const config = cloudConfig({ org_id: "config-org" });
|
|
60
|
+
expect(resolveOrganization(config, "flag-org")).toBe("flag-org");
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it("falls back to STIGMER_ORG_ID, then context, then cloud org_id", () => {
|
|
64
|
+
process.env.STIGMER_ORG_ID = "env-org";
|
|
65
|
+
expect(resolveOrganization(cloudConfig({ org_id: "config-org" }))).toBe("env-org");
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it("uses context organization when no flag/env is set", () => {
|
|
69
|
+
const config: Config = {
|
|
70
|
+
backend: { type: "cloud", cloud: { org_id: "legacy" } },
|
|
71
|
+
context: { organization: "ctx-org" },
|
|
72
|
+
};
|
|
73
|
+
expect(resolveOrganization(config)).toBe("ctx-org");
|
|
74
|
+
expect(resolveContextOrganization(config)).toBe("ctx-org");
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it("falls back to legacy cloud org_id", () => {
|
|
78
|
+
expect(resolveContextOrganization(cloudConfig({ org_id: "legacy" }))).toBe("legacy");
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
describe("ensureAuthenticated", () => {
|
|
83
|
+
it("never requires auth in local mode", () => {
|
|
84
|
+
expect(() => ensureAuthenticated({ backend: { type: "local" } })).not.toThrow();
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
it("throws in cloud mode with no credentials", () => {
|
|
88
|
+
expect(() => ensureAuthenticated(cloudConfig())).toThrow(CliExitError);
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
it("passes with a stored access token", () => {
|
|
92
|
+
expect(() => ensureAuthenticated(cloudConfig({ token: "t" }))).not.toThrow();
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it("passes with only a refresh token", () => {
|
|
96
|
+
expect(() => ensureAuthenticated(cloudConfig({ refresh_token: "r" }))).not.toThrow();
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
it("passes with STIGMER_API_KEY set", () => {
|
|
100
|
+
process.env.STIGMER_API_KEY = "env-key";
|
|
101
|
+
expect(() => ensureAuthenticated(cloudConfig())).not.toThrow();
|
|
102
|
+
});
|
|
103
|
+
});
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// Effective-value resolution with env > config > default precedence. These are
|
|
2
|
+
// the settings the backend client and read verbs depend on; centralizing the
|
|
3
|
+
// precedence keeps every call site consistent (mirrors the Go CLI's Resolve*).
|
|
4
|
+
|
|
5
|
+
import { CliExitError, ExitCode } from "../errors/index.js";
|
|
6
|
+
import { type Config, isCloudMode } from "./config.js";
|
|
7
|
+
|
|
8
|
+
const DEFAULT_CLOUD_ENDPOINT = "api.stigmer.ai:443";
|
|
9
|
+
const DEFAULT_LOCAL_ENDPOINT = "localhost:7234";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Resolve the server endpoint.
|
|
13
|
+
* STIGMER_SERVER_ADDRESS (explicit override, either backend)
|
|
14
|
+
* > cloud.endpoint (cloud mode)
|
|
15
|
+
* > api.stigmer.ai:443 (cloud default) / localhost:7234 (local default)
|
|
16
|
+
*/
|
|
17
|
+
export function resolveEndpoint(config: Config): string {
|
|
18
|
+
const override = process.env.STIGMER_SERVER_ADDRESS;
|
|
19
|
+
if (override !== undefined && override !== "") {
|
|
20
|
+
return override;
|
|
21
|
+
}
|
|
22
|
+
if (isCloudMode(config)) {
|
|
23
|
+
return config.backend.cloud?.endpoint || DEFAULT_CLOUD_ENDPOINT;
|
|
24
|
+
}
|
|
25
|
+
return DEFAULT_LOCAL_ENDPOINT;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Resolve the auth token.
|
|
30
|
+
* STIGMER_API_KEY (env, also where the --api-key global is bridged)
|
|
31
|
+
* > cloud.token (persisted login token)
|
|
32
|
+
* > "" (unauthenticated)
|
|
33
|
+
*/
|
|
34
|
+
export function resolveToken(config: Config): string {
|
|
35
|
+
const env = process.env.STIGMER_API_KEY;
|
|
36
|
+
if (env !== undefined && env !== "") {
|
|
37
|
+
return env;
|
|
38
|
+
}
|
|
39
|
+
return config.backend.cloud?.token ?? "";
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Resolve the active organization.
|
|
44
|
+
* --org flag override > STIGMER_ORG_ID env > context.organization
|
|
45
|
+
* > cloud.org_id (legacy fallback)
|
|
46
|
+
*/
|
|
47
|
+
export function resolveOrganization(config: Config, flagOrg?: string): string {
|
|
48
|
+
if (flagOrg !== undefined && flagOrg !== "") {
|
|
49
|
+
return flagOrg;
|
|
50
|
+
}
|
|
51
|
+
const env = process.env.STIGMER_ORG_ID;
|
|
52
|
+
if (env !== undefined && env !== "") {
|
|
53
|
+
return env;
|
|
54
|
+
}
|
|
55
|
+
return resolveContextOrganization(config);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/** The configured organization, with the legacy cloud.org_id fallback. */
|
|
59
|
+
export function resolveContextOrganization(config: Config): string {
|
|
60
|
+
if (config.context?.organization !== undefined && config.context.organization !== "") {
|
|
61
|
+
return config.context.organization;
|
|
62
|
+
}
|
|
63
|
+
return config.backend.cloud?.org_id ?? "";
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Fail fast with a clear "please log in" error when a cloud command has no
|
|
68
|
+
* usable credential. Local mode never requires auth. A credential is any of:
|
|
69
|
+
* the STIGMER_API_KEY env (or bridged --api-key), a persisted access token, or
|
|
70
|
+
* a refresh token (which the token provider can exchange for a fresh access
|
|
71
|
+
* token). This lives in the config layer — not the client façade — because it
|
|
72
|
+
* is purely a question of which credentials are configured.
|
|
73
|
+
*/
|
|
74
|
+
export function ensureAuthenticated(config: Config): void {
|
|
75
|
+
if (!isCloudMode(config)) return;
|
|
76
|
+
if (process.env.STIGMER_API_KEY) return;
|
|
77
|
+
const cloud = config.backend.cloud;
|
|
78
|
+
if (cloud?.token || cloud?.refresh_token) return;
|
|
79
|
+
throw new CliExitError("Not authenticated", ExitCode.Auth, ["Please sign in:", " stigmer auth login"]);
|
|
80
|
+
}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
// Classifies any thrown value into a CliError: an exit code, a user-facing
|
|
2
|
+
// message, and optional remediation hints. Mirrors the Go CLI's
|
|
3
|
+
// clierr.Classify, including walking the error chain so wrapped RPC errors
|
|
4
|
+
// still map to the right exit code.
|
|
5
|
+
|
|
6
|
+
import { Code, ConnectError } from "@connectrpc/connect";
|
|
7
|
+
import { StigmerError } from "@stigmer/sdk";
|
|
8
|
+
import { CliExitError } from "./cli-exit-error.js";
|
|
9
|
+
import { ExitCode } from "./exit-codes.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Structured result of classifying a raw error. `classify` produces these and
|
|
13
|
+
* `handle` consumes them. `message === ""` signals a clean, silent outcome
|
|
14
|
+
* (local cancellation) for which nothing should be printed.
|
|
15
|
+
*/
|
|
16
|
+
export interface CliError {
|
|
17
|
+
readonly exitCode: number;
|
|
18
|
+
readonly message: string;
|
|
19
|
+
readonly hints?: readonly string[];
|
|
20
|
+
readonly cause?: Error;
|
|
21
|
+
/** Numeric Connect/gRPC code, present when the error originated from an RPC. */
|
|
22
|
+
readonly code?: number;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Guards against pathological/circular `cause` chains.
|
|
26
|
+
const MAX_CHAIN_DEPTH = 20;
|
|
27
|
+
|
|
28
|
+
export function classify(err: unknown): CliError | null {
|
|
29
|
+
if (err === null || err === undefined) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Local cancellation (Ctrl-C / AbortController) is a clean outcome, not a
|
|
34
|
+
// failure — exit 0 silently. A *remote* Canceled status is a genuine failure
|
|
35
|
+
// and falls through to classifyConnectCode (exit 1). This is the one place
|
|
36
|
+
// the TS CLI deliberately improves on the Go CLI, which exits 1 for both.
|
|
37
|
+
if (isLocalAbort(err)) {
|
|
38
|
+
return { exitCode: ExitCode.Success, message: "", cause: toError(err) };
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Local errors that carry their own exit code (UsageError, auth-required,
|
|
42
|
+
// etc.) are passed through verbatim, including any remediation hints.
|
|
43
|
+
if (err instanceof CliExitError) {
|
|
44
|
+
return { exitCode: err.exitCode, message: err.message, hints: err.hints, cause: err };
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const coded = extractCoded(err);
|
|
48
|
+
if (coded !== undefined) {
|
|
49
|
+
return classifyConnectCode(coded.code, coded.message, toError(err));
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return { exitCode: ExitCode.General, message: messageOf(err), cause: toError(err) };
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
interface CodedError {
|
|
56
|
+
readonly code: number;
|
|
57
|
+
readonly message: string;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Walks the cause chain for the first SDK StigmerError or raw ConnectError.
|
|
61
|
+
// status.FromError in Go only checks the outermost error; this mirrors the Go
|
|
62
|
+
// CLI's extractGRPCStatus which walks Unwrap to handle wrapped RPC errors.
|
|
63
|
+
function extractCoded(err: unknown): CodedError | undefined {
|
|
64
|
+
let depth = 0;
|
|
65
|
+
for (let current: unknown = err; current != null && depth < MAX_CHAIN_DEPTH; current = causeOf(current), depth++) {
|
|
66
|
+
if (current instanceof StigmerError) {
|
|
67
|
+
return { code: current.connectCode, message: current.message };
|
|
68
|
+
}
|
|
69
|
+
if (current instanceof ConnectError) {
|
|
70
|
+
return { code: current.code, message: current.rawMessage };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function isLocalAbort(err: unknown): boolean {
|
|
77
|
+
let depth = 0;
|
|
78
|
+
for (let current: unknown = err; current != null && depth < MAX_CHAIN_DEPTH; current = causeOf(current), depth++) {
|
|
79
|
+
if (current instanceof Error && current.name === "AbortError") {
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function classifyConnectCode(code: number, message: string, cause: Error): CliError {
|
|
87
|
+
switch (code) {
|
|
88
|
+
case Code.Unavailable:
|
|
89
|
+
return {
|
|
90
|
+
exitCode: ExitCode.Connection,
|
|
91
|
+
code,
|
|
92
|
+
cause,
|
|
93
|
+
message: "Cannot connect to the Stigmer server",
|
|
94
|
+
hints: ["Make sure the Stigmer server is running and reachable."],
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
case Code.DeadlineExceeded:
|
|
98
|
+
return {
|
|
99
|
+
exitCode: ExitCode.Connection,
|
|
100
|
+
code,
|
|
101
|
+
cause,
|
|
102
|
+
message: "Operation timed out",
|
|
103
|
+
hints: ["The server took too long to respond. Try again in a moment."],
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
case Code.ResourceExhausted:
|
|
107
|
+
return {
|
|
108
|
+
exitCode: ExitCode.Connection,
|
|
109
|
+
code,
|
|
110
|
+
cause,
|
|
111
|
+
message: "Rate limit exceeded",
|
|
112
|
+
hints: ["Too many requests. Wait a moment and try again."],
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
case Code.NotFound:
|
|
116
|
+
return { exitCode: ExitCode.NotFound, code, cause, message };
|
|
117
|
+
|
|
118
|
+
case Code.InvalidArgument:
|
|
119
|
+
return { exitCode: ExitCode.Usage, code, cause, message };
|
|
120
|
+
|
|
121
|
+
case Code.FailedPrecondition:
|
|
122
|
+
return { exitCode: ExitCode.Usage, code, cause, message: `Precondition failed: ${message}` };
|
|
123
|
+
|
|
124
|
+
case Code.AlreadyExists:
|
|
125
|
+
return { exitCode: ExitCode.Usage, code, cause, message: `Already exists: ${message}` };
|
|
126
|
+
|
|
127
|
+
case Code.Unauthenticated:
|
|
128
|
+
return {
|
|
129
|
+
exitCode: ExitCode.Auth,
|
|
130
|
+
code,
|
|
131
|
+
cause,
|
|
132
|
+
message: "Not authenticated",
|
|
133
|
+
hints: ["Please sign in:", " stigmer auth login"],
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
case Code.PermissionDenied:
|
|
137
|
+
return {
|
|
138
|
+
exitCode: ExitCode.Auth,
|
|
139
|
+
code,
|
|
140
|
+
cause,
|
|
141
|
+
message: `Permission denied: ${message}`,
|
|
142
|
+
hints: ["Check your permissions, or re-authenticate:", " stigmer auth login"],
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
case Code.Internal:
|
|
146
|
+
return {
|
|
147
|
+
exitCode: ExitCode.General,
|
|
148
|
+
code,
|
|
149
|
+
cause,
|
|
150
|
+
message: "Internal server error",
|
|
151
|
+
hints: [
|
|
152
|
+
"This is unexpected. If the problem persists, check the server logs.",
|
|
153
|
+
"Run with --debug for more details.",
|
|
154
|
+
],
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
case Code.Aborted:
|
|
158
|
+
return {
|
|
159
|
+
exitCode: ExitCode.General,
|
|
160
|
+
code,
|
|
161
|
+
cause,
|
|
162
|
+
message: `Operation aborted: ${message}`,
|
|
163
|
+
hints: ["The operation was interrupted. You can safely retry."],
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
case Code.Canceled:
|
|
167
|
+
return { exitCode: ExitCode.General, code, cause, message: "Operation cancelled" };
|
|
168
|
+
|
|
169
|
+
default:
|
|
170
|
+
return {
|
|
171
|
+
exitCode: ExitCode.General,
|
|
172
|
+
code,
|
|
173
|
+
cause,
|
|
174
|
+
message: `${codeName(code)}: ${message}`,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
function causeOf(value: unknown): unknown {
|
|
180
|
+
return value !== null && typeof value === "object"
|
|
181
|
+
? (value as { cause?: unknown }).cause
|
|
182
|
+
: undefined;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
function toError(value: unknown): Error {
|
|
186
|
+
if (value instanceof Error) return value;
|
|
187
|
+
return new Error(messageOf(value));
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
function messageOf(value: unknown): string {
|
|
191
|
+
if (value instanceof Error) return value.message;
|
|
192
|
+
if (typeof value === "string") return value;
|
|
193
|
+
return String(value);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/** Human-readable Connect/gRPC code name, e.g. 12 -> "Unimplemented". */
|
|
197
|
+
export function codeName(code: number): string {
|
|
198
|
+
return Code[code] ?? "Unknown";
|
|
199
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// A local error that carries its own exit code and optional remediation hints.
|
|
2
|
+
// classify() passes these through verbatim, so command code can fail fast with
|
|
3
|
+
// a precise exit code (e.g. "auth required" -> 4) without round-tripping to the
|
|
4
|
+
// server. UsageError is the common specialization (exit 2).
|
|
5
|
+
|
|
6
|
+
export class CliExitError extends Error {
|
|
7
|
+
readonly exitCode: number;
|
|
8
|
+
readonly hints?: readonly string[];
|
|
9
|
+
|
|
10
|
+
constructor(message: string, exitCode: number, hints?: readonly string[]) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.name = "CliExitError";
|
|
13
|
+
this.exitCode = exitCode;
|
|
14
|
+
this.hints = hints;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { Code, ConnectError } from "@connectrpc/connect";
|
|
2
|
+
import { StigmerError } from "@stigmer/sdk";
|
|
3
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
4
|
+
import { setDebug } from "../runtime.js";
|
|
5
|
+
import { classify } from "./classify.js";
|
|
6
|
+
import { ExitCode } from "./exit-codes.js";
|
|
7
|
+
import { formatError, handle } from "./handle.js";
|
|
8
|
+
import { UsageError } from "./usage-error.js";
|
|
9
|
+
|
|
10
|
+
afterEach(() => {
|
|
11
|
+
setDebug(false);
|
|
12
|
+
vi.restoreAllMocks();
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
describe("classify — gRPC code to exit code", () => {
|
|
16
|
+
// Drives both error sources: a raw ConnectError (direct transport usage) and
|
|
17
|
+
// an SDK StigmerError (typed client usage). Both must classify identically.
|
|
18
|
+
const cases: ReadonlyArray<{ code: number; exit: number; messageContains?: string }> = [
|
|
19
|
+
{ code: Code.Unavailable, exit: ExitCode.Connection },
|
|
20
|
+
{ code: Code.DeadlineExceeded, exit: ExitCode.Connection },
|
|
21
|
+
{ code: Code.ResourceExhausted, exit: ExitCode.Connection },
|
|
22
|
+
{ code: Code.NotFound, exit: ExitCode.NotFound },
|
|
23
|
+
{ code: Code.InvalidArgument, exit: ExitCode.Usage },
|
|
24
|
+
{ code: Code.FailedPrecondition, exit: ExitCode.Usage, messageContains: "Precondition failed" },
|
|
25
|
+
{ code: Code.AlreadyExists, exit: ExitCode.Usage, messageContains: "Already exists" },
|
|
26
|
+
{ code: Code.Unauthenticated, exit: ExitCode.Auth },
|
|
27
|
+
{ code: Code.PermissionDenied, exit: ExitCode.Auth, messageContains: "Permission denied" },
|
|
28
|
+
{ code: Code.Internal, exit: ExitCode.General },
|
|
29
|
+
{ code: Code.Aborted, exit: ExitCode.General, messageContains: "Operation aborted" },
|
|
30
|
+
{ code: Code.Canceled, exit: ExitCode.General },
|
|
31
|
+
{ code: Code.Unimplemented, exit: ExitCode.General, messageContains: "Unimplemented" },
|
|
32
|
+
{ code: Code.OutOfRange, exit: ExitCode.General, messageContains: "OutOfRange" },
|
|
33
|
+
{ code: Code.DataLoss, exit: ExitCode.General, messageContains: "DataLoss" },
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
for (const { code, exit, messageContains } of cases) {
|
|
37
|
+
it(`maps ConnectError ${Code[code]} -> exit ${exit}`, () => {
|
|
38
|
+
const result = classify(new ConnectError("boom", code));
|
|
39
|
+
expect(result?.exitCode).toBe(exit);
|
|
40
|
+
expect(result?.code).toBe(code);
|
|
41
|
+
if (messageContains) expect(result?.message).toContain(messageContains);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it(`maps StigmerError ${Code[code]} -> exit ${exit}`, () => {
|
|
45
|
+
const result = classify(new StigmerError("unknown", "boom", code));
|
|
46
|
+
expect(result?.exitCode).toBe(exit);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
it("preserves the server message verbatim for NotFound", () => {
|
|
51
|
+
const result = classify(new ConnectError("agent 'foo' not found", Code.NotFound));
|
|
52
|
+
expect(result?.message).toBe("agent 'foo' not found");
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it("attaches remediation hints for auth failures", () => {
|
|
56
|
+
const result = classify(new ConnectError("nope", Code.Unauthenticated));
|
|
57
|
+
expect(result?.hints).toEqual(["Please sign in:", " stigmer auth login"]);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
describe("classify — non-RPC and edge cases", () => {
|
|
62
|
+
it("returns null for null/undefined", () => {
|
|
63
|
+
expect(classify(null)).toBeNull();
|
|
64
|
+
expect(classify(undefined)).toBeNull();
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it("classifies a plain Error as a general failure", () => {
|
|
68
|
+
const result = classify(new Error("disk full"));
|
|
69
|
+
expect(result?.exitCode).toBe(ExitCode.General);
|
|
70
|
+
expect(result?.message).toBe("disk full");
|
|
71
|
+
expect(result?.code).toBeUndefined();
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it("unwraps a wrapped RPC error via the cause chain", () => {
|
|
75
|
+
const inner = new ConnectError("not found", Code.NotFound);
|
|
76
|
+
const wrapped = new Error("while fetching agent", { cause: inner });
|
|
77
|
+
const result = classify(wrapped);
|
|
78
|
+
expect(result?.exitCode).toBe(ExitCode.NotFound);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it("maps a local UsageError to the usage exit code", () => {
|
|
82
|
+
const result = classify(new UsageError("invalid --output value"));
|
|
83
|
+
expect(result?.exitCode).toBe(ExitCode.Usage);
|
|
84
|
+
expect(result?.message).toBe("invalid --output value");
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
describe("classify — local abort vs remote cancel", () => {
|
|
89
|
+
it("treats a local AbortError as a clean exit 0 with no message", () => {
|
|
90
|
+
const abort = new Error("aborted");
|
|
91
|
+
abort.name = "AbortError";
|
|
92
|
+
const result = classify(abort);
|
|
93
|
+
expect(result?.exitCode).toBe(ExitCode.Success);
|
|
94
|
+
expect(result?.message).toBe("");
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it("treats an aborted RPC (Canceled wrapping AbortError) as exit 0", () => {
|
|
98
|
+
const abort = new Error("aborted");
|
|
99
|
+
abort.name = "AbortError";
|
|
100
|
+
const cancelled = new ConnectError("canceled", Code.Canceled, undefined, undefined, abort);
|
|
101
|
+
const result = classify(cancelled);
|
|
102
|
+
expect(result?.exitCode).toBe(ExitCode.Success);
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it("treats a remote Canceled (no local abort) as exit 1", () => {
|
|
106
|
+
const result = classify(new ConnectError("server canceled", Code.Canceled));
|
|
107
|
+
expect(result?.exitCode).toBe(ExitCode.General);
|
|
108
|
+
expect(result?.message).toBe("Operation cancelled");
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
|
|
112
|
+
describe("formatError", () => {
|
|
113
|
+
it("renders message and hints", () => {
|
|
114
|
+
const out = formatError(
|
|
115
|
+
{ exitCode: ExitCode.Auth, message: "Not authenticated", hints: ["Please sign in:", " stigmer auth login"] },
|
|
116
|
+
false,
|
|
117
|
+
);
|
|
118
|
+
expect(out).toBe("Error: Not authenticated\n\nPlease sign in:\n stigmer auth login\n");
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
it("returns empty string for a silent (empty message) error", () => {
|
|
122
|
+
expect(formatError({ exitCode: ExitCode.Success, message: "" }, false)).toBe("");
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
it("appends the raw chain and numeric code in debug mode", () => {
|
|
126
|
+
const cause = new ConnectError("boom", Code.NotFound);
|
|
127
|
+
const out = formatError(
|
|
128
|
+
{ exitCode: ExitCode.NotFound, message: "missing", cause, code: Code.NotFound },
|
|
129
|
+
true,
|
|
130
|
+
);
|
|
131
|
+
expect(out).toContain("--- debug ---");
|
|
132
|
+
expect(out).toContain(`gRPC code: NotFound (${Code.NotFound})`);
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
it("omits the debug block when debug mode is off", () => {
|
|
136
|
+
const cause = new Error("boom");
|
|
137
|
+
const out = formatError({ exitCode: ExitCode.General, message: "x", cause }, false);
|
|
138
|
+
expect(out).not.toContain("--- debug ---");
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
describe("handle", () => {
|
|
143
|
+
it("exits with the mapped code and writes to stderr", () => {
|
|
144
|
+
const exitSpy = vi.spyOn(process, "exit").mockImplementation(((code?: number) => {
|
|
145
|
+
throw new Error(`__exit__:${code}`);
|
|
146
|
+
}) as never);
|
|
147
|
+
const stderrSpy = vi.spyOn(process.stderr, "write").mockReturnValue(true);
|
|
148
|
+
|
|
149
|
+
expect(() => handle(new ConnectError("agent missing", Code.NotFound))).toThrow("__exit__:5");
|
|
150
|
+
expect(stderrSpy).toHaveBeenCalledWith(expect.stringContaining("Error: agent missing"));
|
|
151
|
+
expect(exitSpy).toHaveBeenCalledWith(ExitCode.NotFound);
|
|
152
|
+
});
|
|
153
|
+
|
|
154
|
+
it("exits 0 silently for a local abort", () => {
|
|
155
|
+
const exitSpy = vi.spyOn(process, "exit").mockImplementation(((code?: number) => {
|
|
156
|
+
throw new Error(`__exit__:${code}`);
|
|
157
|
+
}) as never);
|
|
158
|
+
const stderrSpy = vi.spyOn(process.stderr, "write").mockReturnValue(true);
|
|
159
|
+
|
|
160
|
+
const abort = new Error("aborted");
|
|
161
|
+
abort.name = "AbortError";
|
|
162
|
+
expect(() => handle(abort)).toThrow("__exit__:0");
|
|
163
|
+
expect(stderrSpy).not.toHaveBeenCalled();
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
it("exits 0 when there is no error", () => {
|
|
167
|
+
vi.spyOn(process, "exit").mockImplementation(((code?: number) => {
|
|
168
|
+
throw new Error(`__exit__:${code}`);
|
|
169
|
+
}) as never);
|
|
170
|
+
expect(() => handle(null)).toThrow("__exit__:0");
|
|
171
|
+
});
|
|
172
|
+
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Exit codes returned by the CLI. The convention mirrors the Go CLI
|
|
2
|
+
// (internal/cli/clierr/exit_codes.go) so scripts and CI can branch on `$?`
|
|
3
|
+
// without parsing stderr. classify() maps gRPC/Connect status codes onto these.
|
|
4
|
+
|
|
5
|
+
export const ExitCode = {
|
|
6
|
+
Success: 0,
|
|
7
|
+
General: 1, // Internal, Aborted, remote Canceled, Unknown, non-gRPC errors
|
|
8
|
+
Usage: 2, // InvalidArgument, FailedPrecondition, AlreadyExists
|
|
9
|
+
Connection: 3, // Unavailable, DeadlineExceeded, ResourceExhausted
|
|
10
|
+
Auth: 4, // Unauthenticated, PermissionDenied
|
|
11
|
+
NotFound: 5, // NotFound
|
|
12
|
+
} as const;
|
|
13
|
+
|
|
14
|
+
export type ExitCode = (typeof ExitCode)[keyof typeof ExitCode];
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// The single exit point for command-level errors: classify, print to stderr,
|
|
2
|
+
// and exit with the mapped code. Mirrors the Go CLI's clierr.Handle.
|
|
3
|
+
|
|
4
|
+
import { isDebug } from "../runtime.js";
|
|
5
|
+
import { type CliError, classify, codeName } from "./classify.js";
|
|
6
|
+
import { ExitCode } from "./exit-codes.js";
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Render a CliError for stderr. In debug mode it appends the raw error chain
|
|
10
|
+
* and numeric gRPC code. Returns "" when there is nothing to print (a clean
|
|
11
|
+
* local cancellation), so the caller writes nothing.
|
|
12
|
+
*/
|
|
13
|
+
export function formatError(error: CliError, debugMode: boolean): string {
|
|
14
|
+
const lines: string[] = [];
|
|
15
|
+
|
|
16
|
+
if (error.message !== "") {
|
|
17
|
+
lines.push(`Error: ${error.message}`);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
if (error.hints !== undefined && error.hints.length > 0) {
|
|
21
|
+
lines.push("");
|
|
22
|
+
lines.push(...error.hints);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (debugMode && error.cause !== undefined) {
|
|
26
|
+
lines.push("");
|
|
27
|
+
lines.push("--- debug ---");
|
|
28
|
+
if (error.code !== undefined) {
|
|
29
|
+
lines.push(`gRPC code: ${codeName(error.code)} (${error.code})`);
|
|
30
|
+
}
|
|
31
|
+
lines.push(`Raw error: ${error.cause.stack ?? error.cause.message}`);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
return lines.length > 0 ? lines.join("\n") + "\n" : "";
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Classify the error, print a user-facing message to stderr, and exit with the
|
|
39
|
+
* appropriate code. The debug flag is read from process-global runtime state
|
|
40
|
+
* (set from `--debug`), so callers never thread it through.
|
|
41
|
+
*/
|
|
42
|
+
export function handle(error: unknown): never {
|
|
43
|
+
const classified = classify(error);
|
|
44
|
+
if (classified === null) {
|
|
45
|
+
process.exit(ExitCode.Success);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const rendered = formatError(classified, isDebug());
|
|
49
|
+
if (rendered !== "") {
|
|
50
|
+
process.stderr.write(rendered);
|
|
51
|
+
}
|
|
52
|
+
process.exit(classified.exitCode);
|
|
53
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// Public surface of the CLI error-handling module.
|
|
2
|
+
|
|
3
|
+
export { ExitCode } from "./exit-codes.js";
|
|
4
|
+
export { type CliError, classify, codeName } from "./classify.js";
|
|
5
|
+
export { CliExitError } from "./cli-exit-error.js";
|
|
6
|
+
export { formatError, handle } from "./handle.js";
|
|
7
|
+
export { UsageError } from "./usage-error.js";
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// A local (client-side) validation failure — bad flags, an unknown output
|
|
2
|
+
// format, a malformed resource reference, etc. Maps to ExitCode.Usage (2), the
|
|
3
|
+
// same code the server's InvalidArgument produces, so scripts see a consistent
|
|
4
|
+
// "usage" exit regardless of where validation happened.
|
|
5
|
+
|
|
6
|
+
import { CliExitError } from "./cli-exit-error.js";
|
|
7
|
+
import { ExitCode } from "./exit-codes.js";
|
|
8
|
+
|
|
9
|
+
export class UsageError extends CliExitError {
|
|
10
|
+
constructor(message: string) {
|
|
11
|
+
super(message, ExitCode.Usage);
|
|
12
|
+
this.name = "UsageError";
|
|
13
|
+
}
|
|
14
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Public surface of @stigmer/cli.
|
|
2
|
+
//
|
|
3
|
+
// The CLI is primarily consumed as the `stigmer` bin, but exposing the program
|
|
4
|
+
// builder lets tests drive the full command tree in-process and lets embedders
|
|
5
|
+
// compose it.
|
|
6
|
+
|
|
7
|
+
export { buildProgram } from "./program.js";
|
|
8
|
+
export { VERSION } from "./version.js";
|