@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,107 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import {
|
|
3
|
+
hasResourceIdPrefix,
|
|
4
|
+
isAgentId,
|
|
5
|
+
isSessionId,
|
|
6
|
+
isWorkflowId,
|
|
7
|
+
parseReference,
|
|
8
|
+
validateResourceId,
|
|
9
|
+
} from "./reference.js";
|
|
10
|
+
|
|
11
|
+
// A syntactically valid 26-char ULID body for building complete IDs in tests.
|
|
12
|
+
const ULID = "01arz3ndektsv4rrffq69g5fav";
|
|
13
|
+
|
|
14
|
+
describe("parseReference", () => {
|
|
15
|
+
it("parses an org/slug pair", () => {
|
|
16
|
+
expect(parseReference("acme/my-agent", "default-org", "agt")).toEqual({
|
|
17
|
+
kind: "ref",
|
|
18
|
+
org: "acme",
|
|
19
|
+
slug: "my-agent",
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
it("treats a bare id-prefixed token as an ID", () => {
|
|
24
|
+
expect(parseReference("agt_abc123", "acme", "agt")).toEqual({ kind: "id", id: "agt_abc123" });
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
it("treats a bare token without the id prefix as a slug in the default org", () => {
|
|
28
|
+
expect(parseReference("my-agent", "acme", "agt")).toEqual({
|
|
29
|
+
kind: "ref",
|
|
30
|
+
org: "acme",
|
|
31
|
+
slug: "my-agent",
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it("does not mistake a slug that merely contains the prefix for an ID", () => {
|
|
36
|
+
// "agent-foo" starts with "agt"? no — prefix match requires "agt_".
|
|
37
|
+
expect(parseReference("agent-foo", "acme", "agt")).toEqual({
|
|
38
|
+
kind: "ref",
|
|
39
|
+
org: "acme",
|
|
40
|
+
slug: "agent-foo",
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
it("trims surrounding whitespace", () => {
|
|
45
|
+
expect(parseReference(" acme/release ", "default", "wkf")).toEqual({
|
|
46
|
+
kind: "ref",
|
|
47
|
+
org: "acme",
|
|
48
|
+
slug: "release",
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it("falls back to a slug when no id prefix is configured", () => {
|
|
53
|
+
expect(parseReference("something", "acme", "")).toEqual({
|
|
54
|
+
kind: "ref",
|
|
55
|
+
org: "acme",
|
|
56
|
+
slug: "something",
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
describe("resource-ID classification", () => {
|
|
62
|
+
it("detects kind prefixes with either separator", () => {
|
|
63
|
+
expect(isAgentId(`agt_${ULID}`)).toBe(true);
|
|
64
|
+
expect(isAgentId(`agt-${ULID}`)).toBe(true);
|
|
65
|
+
expect(isSessionId(`ses_${ULID}`)).toBe(true);
|
|
66
|
+
expect(isWorkflowId(`wfl_${ULID}`)).toBe(true);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it("does not classify cross-kind prefixes", () => {
|
|
70
|
+
expect(isAgentId(`ses_${ULID}`)).toBe(false);
|
|
71
|
+
expect(isSessionId(`agt_${ULID}`)).toBe(false);
|
|
72
|
+
expect(isWorkflowId(`agt_${ULID}`)).toBe(false);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it("does not mistake a slug that merely starts with a prefix for an ID", () => {
|
|
76
|
+
// "agent-foo" begins with "agt"? No — the separator must immediately follow.
|
|
77
|
+
expect(isAgentId("agent-foo")).toBe(false);
|
|
78
|
+
expect(hasResourceIdPrefix("agent-foo")).toBe(false);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it("is case-sensitive (uppercase prefixes are not IDs)", () => {
|
|
82
|
+
expect(isAgentId(`AGT_${ULID}`)).toBe(false);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it("recognizes any known prefix via hasResourceIdPrefix (length-agnostic)", () => {
|
|
86
|
+
expect(hasResourceIdPrefix("agt_short")).toBe(true);
|
|
87
|
+
expect(hasResourceIdPrefix("wex_anything")).toBe(true);
|
|
88
|
+
expect(hasResourceIdPrefix("mcp-x")).toBe(true);
|
|
89
|
+
expect(hasResourceIdPrefix("plain-slug")).toBe(false);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it("validates a complete ID (prefix + 26-char ULID)", () => {
|
|
93
|
+
expect(validateResourceId(`agt_${ULID}`)).toBeNull();
|
|
94
|
+
expect(validateResourceId(`ses-${ULID}`)).toBeNull();
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
it("reports an incomplete ID when the prefix matches but the body is wrong", () => {
|
|
98
|
+
expect(validateResourceId("agt_tooshort")).toMatch(/incomplete/);
|
|
99
|
+
expect(validateResourceId(`agt_${ULID}extra`)).toMatch(/incomplete/);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it("accepts a legacy UUID and rejects unrelated tokens", () => {
|
|
103
|
+
expect(validateResourceId("123e4567-e89b-12d3-a456-426614174000")).toBeNull();
|
|
104
|
+
expect(hasResourceIdPrefix("123e4567-e89b-12d3-a456-426614174000")).toBe(true);
|
|
105
|
+
expect(validateResourceId("just-a-slug")).toMatch(/not a recognized/);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
// Parse a user-supplied resource reference into either an ID lookup or an
|
|
2
|
+
// org/slug lookup, mirroring the Go CLI's parseOrgSlug + ID detection.
|
|
3
|
+
//
|
|
4
|
+
// "agt_abc123" -> by ID
|
|
5
|
+
// "my-org/my-agent" -> by org/slug (explicit org)
|
|
6
|
+
// "my-agent" -> by org/slug (org from --org/context)
|
|
7
|
+
//
|
|
8
|
+
// The kind's id_prefix disambiguates a bare token: "org" resolves "org_x" as an
|
|
9
|
+
// ID but "acme" as a slug.
|
|
10
|
+
//
|
|
11
|
+
// The lower half of this module adds the *strict* classification the run/resume
|
|
12
|
+
// resolvers need (Go's pkg/reference): prefix-by-kind detection and full ID
|
|
13
|
+
// validation (prefix + 26-char ULID, or UUID). This is deliberately distinct
|
|
14
|
+
// from parseReference's lenient `${prefix}_` test — `run my-agent` must not
|
|
15
|
+
// treat a slug that merely starts with a known prefix as an ID.
|
|
16
|
+
|
|
17
|
+
import { ApiResourceKind } from "@stigmer/protos/ai/stigmer/commons/apiresource/apiresourcekind/api_resource_kind_pb";
|
|
18
|
+
import { KIND_META } from "../registry/index.js";
|
|
19
|
+
|
|
20
|
+
export type ParsedReference =
|
|
21
|
+
| { readonly kind: "id"; readonly id: string }
|
|
22
|
+
| { readonly kind: "ref"; readonly org: string; readonly slug: string };
|
|
23
|
+
|
|
24
|
+
export function parseReference(ref: string, defaultOrg: string, idPrefix: string): ParsedReference {
|
|
25
|
+
const trimmed = ref.trim();
|
|
26
|
+
|
|
27
|
+
const slash = trimmed.indexOf("/");
|
|
28
|
+
if (slash > 0) {
|
|
29
|
+
return { kind: "ref", org: trimmed.slice(0, slash), slug: trimmed.slice(slash + 1) };
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (idPrefix !== "" && trimmed.startsWith(`${idPrefix}_`)) {
|
|
33
|
+
return { kind: "id", id: trimmed };
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
return { kind: "ref", org: defaultOrg, slug: trimmed };
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// Crockford base-32 ULID body length. Mirrors Go's reference.ulidLength: the
|
|
40
|
+
// resolver only checks the length (not the alphabet), so a 26-char body after a
|
|
41
|
+
// known prefix is accepted as a complete ID.
|
|
42
|
+
const ULID_LENGTH = 26;
|
|
43
|
+
|
|
44
|
+
// Execution-runtime prefixes that are not in KIND_META (which only carries the
|
|
45
|
+
// addressable, registry-relevant kinds) but that the run resolver must still
|
|
46
|
+
// recognize so it can reject them with explicit-form guidance. "wex" is the
|
|
47
|
+
// workflow-execution prefix; "aex" is already in KIND_META.
|
|
48
|
+
const RUNTIME_ID_PREFIXES: readonly string[] = ["wex"];
|
|
49
|
+
|
|
50
|
+
/** The id_prefix for a kind (from the proto kind_meta mirror), or "". */
|
|
51
|
+
function idPrefixFor(kind: ApiResourceKind): string {
|
|
52
|
+
return KIND_META.get(kind)?.idPrefix ?? "";
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Every known resource-ID prefix, deduped. Built once from the kind_meta mirror
|
|
56
|
+
// plus the runtime prefixes so there is a single source of truth shared with
|
|
57
|
+
// the rest of the CLI (the registry) rather than a hand-rolled prefix list.
|
|
58
|
+
const ALL_ID_PREFIXES: readonly string[] = (() => {
|
|
59
|
+
const set = new Set<string>(RUNTIME_ID_PREFIXES);
|
|
60
|
+
for (const meta of KIND_META.values()) {
|
|
61
|
+
if (meta.idPrefix !== "") set.add(meta.idPrefix);
|
|
62
|
+
}
|
|
63
|
+
return [...set];
|
|
64
|
+
})();
|
|
65
|
+
|
|
66
|
+
// Mirrors Go's reference.isResourceIDWithKind: a kind prefix followed by either
|
|
67
|
+
// separator the backend accepts ("_" canonical, "-" legacy). Case-sensitive.
|
|
68
|
+
function hasKindPrefix(ref: string, prefix: string): boolean {
|
|
69
|
+
if (prefix === "") return false;
|
|
70
|
+
const trimmed = ref.trim();
|
|
71
|
+
return trimmed.startsWith(`${prefix}_`) || trimmed.startsWith(`${prefix}-`);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** True if `ref` carries the agent ID prefix (`agt_…`/`agt-…`). */
|
|
75
|
+
export function isAgentId(ref: string): boolean {
|
|
76
|
+
return hasKindPrefix(ref, idPrefixFor(ApiResourceKind.agent));
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** True if `ref` carries the workflow ID prefix (`wfl_…`/`wfl-…`). */
|
|
80
|
+
export function isWorkflowId(ref: string): boolean {
|
|
81
|
+
return hasKindPrefix(ref, idPrefixFor(ApiResourceKind.workflow));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** True if `ref` carries the session ID prefix (`ses_…`/`ses-…`). */
|
|
85
|
+
export function isSessionId(ref: string): boolean {
|
|
86
|
+
return hasKindPrefix(ref, idPrefixFor(ApiResourceKind.session));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* True if `ref` starts with ANY known resource-ID prefix (length-agnostic).
|
|
91
|
+
* Mirrors Go's reference.HasResourceIDPrefix: use it to detect *intent* (the
|
|
92
|
+
* user typed something ID-shaped), then {@link validateResourceId} to enforce
|
|
93
|
+
* completeness.
|
|
94
|
+
*/
|
|
95
|
+
export function hasResourceIdPrefix(ref: string): boolean {
|
|
96
|
+
if (ALL_ID_PREFIXES.some((prefix) => hasKindPrefix(ref, prefix))) return true;
|
|
97
|
+
return isUuid(ref.trim());
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Validate that `ref` is a syntactically complete resource ID. Returns null
|
|
102
|
+
* when valid, or a user-facing error message otherwise. Mirrors Go's
|
|
103
|
+
* reference.ValidateResourceID/ResourceIDKind: a known prefix followed by a
|
|
104
|
+
* 26-char ULID body, or a bare UUID (legacy). A matched prefix with the wrong
|
|
105
|
+
* body length is reported as "incomplete" so callers can guide the user to
|
|
106
|
+
* paste the full ID.
|
|
107
|
+
*/
|
|
108
|
+
export function validateResourceId(ref: string): string | null {
|
|
109
|
+
const trimmed = ref.trim();
|
|
110
|
+
for (const prefix of ALL_ID_PREFIXES) {
|
|
111
|
+
for (const sep of ["_", "-"]) {
|
|
112
|
+
const pfx = `${prefix}${sep}`;
|
|
113
|
+
if (!trimmed.startsWith(pfx)) continue;
|
|
114
|
+
const body = trimmed.slice(pfx.length);
|
|
115
|
+
if (body.length !== ULID_LENGTH) {
|
|
116
|
+
return "incomplete resource ID: expected 26-character ULID after prefix";
|
|
117
|
+
}
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (isUuid(trimmed)) return null;
|
|
122
|
+
return "not a recognized resource ID";
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Mirrors Go's reference.isUUID: 8-4-4-4-12 hex with hyphens at fixed offsets.
|
|
126
|
+
function isUuid(value: string): boolean {
|
|
127
|
+
if (value.length !== 36) return false;
|
|
128
|
+
if (value[8] !== "-" || value[13] !== "-" || value[18] !== "-" || value[23] !== "-") {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
for (let i = 0; i < value.length; i++) {
|
|
132
|
+
if (i === 8 || i === 13 || i === 18 || i === 23) continue;
|
|
133
|
+
if (!isHexDigit(value[i])) return false;
|
|
134
|
+
}
|
|
135
|
+
return true;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function isHexDigit(c: string): boolean {
|
|
139
|
+
return (c >= "0" && c <= "9") || (c >= "a" && c <= "f") || (c >= "A" && c <= "F");
|
|
140
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
// Uniform rendering for read verbs.
|
|
2
|
+
//
|
|
3
|
+
// All resource protos share the ApiResourceMetadata envelope, so the human
|
|
4
|
+
// (table) view of a single `get` is derived generically from the protojson
|
|
5
|
+
// projection — no per-kind formatter. json/yaml use the canonical protojson
|
|
6
|
+
// renderers for full fidelity and Go byte-parity. Collections render via the
|
|
7
|
+
// shared table renderer with a caller-supplied row extractor.
|
|
8
|
+
//
|
|
9
|
+
// The render boundary intentionally uses the base proto types (DescMessage /
|
|
10
|
+
// Message) so generic verb dispatch can pass a (schema, message) pair without
|
|
11
|
+
// threading a concrete type parameter through the registry.
|
|
12
|
+
|
|
13
|
+
import type { DescMessage, JsonValue, Message } from "@bufbuild/protobuf";
|
|
14
|
+
import type { OutputFormat } from "../output/index.js";
|
|
15
|
+
import {
|
|
16
|
+
protoToJsonValue,
|
|
17
|
+
renderEmpty,
|
|
18
|
+
renderProtoJson,
|
|
19
|
+
renderProtoListJson,
|
|
20
|
+
renderProtoListYaml,
|
|
21
|
+
renderProtoYaml,
|
|
22
|
+
renderTable,
|
|
23
|
+
} from "../output/index.js";
|
|
24
|
+
|
|
25
|
+
export type JsonObject = Record<string, JsonValue>;
|
|
26
|
+
|
|
27
|
+
/** A row extractor + headers describing a collection's table view. */
|
|
28
|
+
export interface TableShape {
|
|
29
|
+
readonly resourceName: string;
|
|
30
|
+
readonly headers: readonly string[];
|
|
31
|
+
readonly row: (json: JsonObject) => readonly string[];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** Render a single resource for a read verb (json/yaml = protojson; table = fields). */
|
|
35
|
+
export function renderResource(schema: DescMessage, message: Message, format: OutputFormat): string {
|
|
36
|
+
if (format === "json") return renderProtoJson(schema, message);
|
|
37
|
+
if (format === "yaml") return renderProtoYaml(schema, message);
|
|
38
|
+
return renderResourceFields(protoToJsonValue(schema, message));
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** Render a collection for a read verb (json/yaml = protojson array; table = grid). */
|
|
42
|
+
export function renderCollection(
|
|
43
|
+
schema: DescMessage,
|
|
44
|
+
messages: readonly Message[],
|
|
45
|
+
format: OutputFormat,
|
|
46
|
+
table: TableShape,
|
|
47
|
+
): string {
|
|
48
|
+
if (format === "json") return renderProtoListJson(schema, messages);
|
|
49
|
+
if (format === "yaml") return renderProtoListYaml(schema, messages);
|
|
50
|
+
if (messages.length === 0) return renderEmpty(table.resourceName);
|
|
51
|
+
const rows = messages.map((message) => table.row(asObject(protoToJsonValue(schema, message))));
|
|
52
|
+
return `\n${renderTable(table.headers, rows)}`;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Render a *list message* (e.g. AgentExecutionList, SessionList) for a read verb.
|
|
57
|
+
*
|
|
58
|
+
* Unlike `renderCollection`, which serializes a bare slice, this mirrors Go's
|
|
59
|
+
* `DisplayProto(list, ...)`: json/yaml emit the whole list envelope (including
|
|
60
|
+
* `total_pages`), while table projects the nested `entries` into a grid.
|
|
61
|
+
*/
|
|
62
|
+
export function renderListMessage(
|
|
63
|
+
schema: DescMessage,
|
|
64
|
+
message: Message,
|
|
65
|
+
format: OutputFormat,
|
|
66
|
+
table: TableShape,
|
|
67
|
+
): string {
|
|
68
|
+
if (format === "json") return renderProtoJson(schema, message);
|
|
69
|
+
if (format === "yaml") return renderProtoYaml(schema, message);
|
|
70
|
+
const entries = protoToJsonValue(schema, message);
|
|
71
|
+
const list = asObject(entries).entries;
|
|
72
|
+
const rows = (Array.isArray(list) ? list : []).map((entry) => table.row(asObject(entry)));
|
|
73
|
+
if (rows.length === 0) return renderEmpty(table.resourceName);
|
|
74
|
+
return `\n${renderTable(table.headers, rows)}`;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Human field view of a resource's metadata envelope (+ common spec fields).
|
|
78
|
+
function renderResourceFields(json: JsonValue): string {
|
|
79
|
+
const obj = asObject(json);
|
|
80
|
+
const metadata = asObject(obj.metadata);
|
|
81
|
+
const spec = asObject(obj.spec);
|
|
82
|
+
|
|
83
|
+
const fields: Array<[string, string]> = [];
|
|
84
|
+
pushField(fields, "ID", metadata.id);
|
|
85
|
+
pushField(fields, "Name", metadata.name);
|
|
86
|
+
pushField(fields, "Slug", metadata.slug);
|
|
87
|
+
pushField(fields, "Org", metadata.org);
|
|
88
|
+
pushField(fields, "Visibility", metadata.visibility);
|
|
89
|
+
pushField(fields, "Description", spec.description);
|
|
90
|
+
|
|
91
|
+
const width = Math.max(0, ...fields.map(([key]) => key.length));
|
|
92
|
+
const lines = fields.map(([key, value]) => ` ${key}:${" ".repeat(width - key.length + 2)}${value}`);
|
|
93
|
+
return `\n${lines.join("\n")}\n`;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function pushField(fields: Array<[string, string]>, key: string, value: JsonValue | undefined): void {
|
|
97
|
+
if (typeof value === "string" && value !== "") fields.push([key, value]);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function asObject(value: JsonValue | undefined): JsonObject {
|
|
101
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) ? (value as JsonObject) : {};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/** Read a string field from a protojson object, defaulting to "". */
|
|
105
|
+
export function str(json: JsonObject, key: string): string {
|
|
106
|
+
const value = json[key];
|
|
107
|
+
return typeof value === "string" ? value : "";
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** Read a nested object field from a protojson object, defaulting to {}. */
|
|
111
|
+
export function obj(json: JsonObject, key: string): JsonObject {
|
|
112
|
+
return asObject(json[key]);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/** Boolean field from a protojson object (defaults to false). */
|
|
116
|
+
export function bool(json: JsonObject, key: string): boolean {
|
|
117
|
+
return json[key] === true;
|
|
118
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// The "run a resolved agent" flow (Go's executeResolvedAgent in
|
|
2
|
+
// run_agent_exec.go): create the workspace session if needed, create the agent
|
|
3
|
+
// execution, then either detach (print header + re-attach hint) or stream and
|
|
4
|
+
// optionally download artifacts. Shared by `run` and `draft`.
|
|
5
|
+
|
|
6
|
+
import type { Agent } from "@stigmer/protos/ai/stigmer/agentic/agent/v1/api_pb";
|
|
7
|
+
import type { BackendClient } from "../../client/index.js";
|
|
8
|
+
import { CliExitError, ExitCode } from "../../errors/index.js";
|
|
9
|
+
import { downloadExecutionArtifacts } from "../download.js";
|
|
10
|
+
import { createAgentExecution, createSessionForAgent } from "./create.js";
|
|
11
|
+
import { renderSessionHeader, type SessionHeaderInfo, workspaceNames } from "./header.js";
|
|
12
|
+
import type { PreparedRun } from "./prepare.js";
|
|
13
|
+
import { streamAgentExecution, type RunOutputMode } from "./stream.js";
|
|
14
|
+
|
|
15
|
+
export interface ResolvedAgentExecInput {
|
|
16
|
+
readonly agent: Agent;
|
|
17
|
+
readonly prepared: PreparedRun;
|
|
18
|
+
readonly org: string;
|
|
19
|
+
/** Artifact download directory; "" skips download. */
|
|
20
|
+
readonly downloadDir: string;
|
|
21
|
+
readonly outputMode: RunOutputMode;
|
|
22
|
+
readonly client: BackendClient;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export async function executeResolvedAgent(input: ResolvedAgentExecInput): Promise<void> {
|
|
26
|
+
const { prepared, org, client } = input;
|
|
27
|
+
const controller = client.controller.bind(client);
|
|
28
|
+
const progress = stderrProgress();
|
|
29
|
+
|
|
30
|
+
// Workspaces require a CLI-created session: the backend's auto-create flow has
|
|
31
|
+
// no workspace passthrough (Go's createSessionForAgent).
|
|
32
|
+
let sessionId = "";
|
|
33
|
+
if (prepared.workspaceEntries.length > 0) {
|
|
34
|
+
const instanceId = input.agent.status?.defaultInstanceId ?? "";
|
|
35
|
+
if (instanceId === "") {
|
|
36
|
+
throw new CliExitError("agent has no default instance — cannot create workspace session", ExitCode.General);
|
|
37
|
+
}
|
|
38
|
+
progress("Creating workspace...");
|
|
39
|
+
const session = await createSessionForAgent(controller, {
|
|
40
|
+
agentInstanceId: instanceId,
|
|
41
|
+
orgId: org,
|
|
42
|
+
workspaceEntries: prepared.workspaceEntries,
|
|
43
|
+
});
|
|
44
|
+
sessionId = session.metadata?.id ?? "";
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
progress("Creating execution...");
|
|
48
|
+
const execution = await createAgentExecution(controller, {
|
|
49
|
+
agentId: input.agent.metadata?.id,
|
|
50
|
+
sessionId: sessionId === "" ? undefined : sessionId,
|
|
51
|
+
orgId: org,
|
|
52
|
+
message: prepared.message,
|
|
53
|
+
runtimeEnv: prepared.runtimeEnv,
|
|
54
|
+
attachments: prepared.attachments,
|
|
55
|
+
workspaceFileRefs: prepared.workspaceFileRefs,
|
|
56
|
+
model: prepared.model,
|
|
57
|
+
mode: prepared.mode,
|
|
58
|
+
autoApproveAll: prepared.autoApproveAll,
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
// The backend owns the canonical session id; prefer it over the CLI-created
|
|
62
|
+
// one (they agree, but the spec value is authoritative).
|
|
63
|
+
sessionId = execution.spec?.sessionId ?? sessionId;
|
|
64
|
+
|
|
65
|
+
const header: SessionHeaderInfo = {
|
|
66
|
+
agentName: input.agent.metadata?.name ?? "",
|
|
67
|
+
sessionId,
|
|
68
|
+
model: prepared.model,
|
|
69
|
+
mode: prepared.mode,
|
|
70
|
+
workspaces: workspaceNames(prepared.workspaceEntries),
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
if (prepared.detach) {
|
|
74
|
+
renderSessionHeader(process.stderr, header);
|
|
75
|
+
if (sessionId !== "") {
|
|
76
|
+
process.stderr.write(`Detached (still running) — stigmer resume ${sessionId} to re-attach\n`);
|
|
77
|
+
}
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const finalExec = await streamAgentExecution({
|
|
82
|
+
client: client.stigmer,
|
|
83
|
+
sessionId,
|
|
84
|
+
executionId: execution.metadata?.id ?? "",
|
|
85
|
+
org,
|
|
86
|
+
mode: prepared.mode,
|
|
87
|
+
defaultAction: prepared.defaultAction,
|
|
88
|
+
outputMode: input.outputMode,
|
|
89
|
+
header,
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
if (input.downloadDir !== "" && (finalExec.status?.artifacts.length ?? 0) > 0) {
|
|
93
|
+
await downloadExecutionArtifacts(
|
|
94
|
+
client.stigmer,
|
|
95
|
+
finalExec.metadata?.id ?? "",
|
|
96
|
+
{ artifactName: "", outputDir: input.downloadDir },
|
|
97
|
+
progress,
|
|
98
|
+
);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Progress lines go to stderr, but only when it is a TTY — matching Go's spinner,
|
|
103
|
+
// which is suppressed under pipes/CI so it never pollutes captured output.
|
|
104
|
+
function stderrProgress(): (line: string) => void {
|
|
105
|
+
if (process.stderr.isTTY !== true) return () => {};
|
|
106
|
+
return (line) => void process.stderr.write(`${line}\n`);
|
|
107
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// Unit tests for attachment processing: workspace-relative classification vs
|
|
2
|
+
// upload, directory zipping, MIME detection, and the size cap. The uploader is
|
|
3
|
+
// faked so no network is required.
|
|
4
|
+
|
|
5
|
+
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
6
|
+
import { tmpdir } from "node:os";
|
|
7
|
+
import { join } from "node:path";
|
|
8
|
+
import { create } from "@bufbuild/protobuf";
|
|
9
|
+
import { unzipSync } from "fflate";
|
|
10
|
+
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
11
|
+
import {
|
|
12
|
+
type UploadAttachmentRequest,
|
|
13
|
+
UploadAttachmentResponseSchema,
|
|
14
|
+
} from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/io_pb";
|
|
15
|
+
import { type AttachmentUploader, processAttachments } from "./attachments.js";
|
|
16
|
+
|
|
17
|
+
// Records each upload and returns a deterministic storage key.
|
|
18
|
+
class FakeUploader implements AttachmentUploader {
|
|
19
|
+
readonly uploads: UploadAttachmentRequest[] = [];
|
|
20
|
+
async uploadAttachment(req: UploadAttachmentRequest) {
|
|
21
|
+
this.uploads.push(req);
|
|
22
|
+
return create(UploadAttachmentResponseSchema, { storageKey: `attachments/key/${req.filename}` });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
let dir: string;
|
|
27
|
+
let uploader: FakeUploader;
|
|
28
|
+
beforeEach(() => {
|
|
29
|
+
dir = mkdtempSync(join(tmpdir(), "attach-test-"));
|
|
30
|
+
uploader = new FakeUploader();
|
|
31
|
+
});
|
|
32
|
+
afterEach(() => {
|
|
33
|
+
rmSync(dir, { recursive: true, force: true });
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
describe("workspace-relative classification", () => {
|
|
37
|
+
it("records a file inside a workspace root as a relative ref (no upload)", async () => {
|
|
38
|
+
const root = join(dir, "repo");
|
|
39
|
+
mkdirSync(join(root, "src"), { recursive: true });
|
|
40
|
+
const file = join(root, "src", "main.ts");
|
|
41
|
+
writeFileSync(file, "x");
|
|
42
|
+
|
|
43
|
+
const result = await processAttachments(uploader, [file], [root]);
|
|
44
|
+
expect(result.workspaceFileRefs).toEqual(["src/main.ts"]);
|
|
45
|
+
expect(result.attachments).toHaveLength(0);
|
|
46
|
+
expect(uploader.uploads).toHaveLength(0);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it("uploads a file outside every workspace root", async () => {
|
|
50
|
+
const root = join(dir, "repo");
|
|
51
|
+
mkdirSync(root, { recursive: true });
|
|
52
|
+
const outside = join(dir, "outside.txt");
|
|
53
|
+
writeFileSync(outside, "data");
|
|
54
|
+
|
|
55
|
+
const result = await processAttachments(uploader, [outside], [root]);
|
|
56
|
+
expect(result.workspaceFileRefs).toHaveLength(0);
|
|
57
|
+
expect(result.attachments).toHaveLength(1);
|
|
58
|
+
expect(result.attachments[0].filename).toBe("outside.txt");
|
|
59
|
+
expect(result.attachments[0].contentType).toBe("text/plain");
|
|
60
|
+
expect(result.attachments[0].storageKey).toBe("attachments/key/outside.txt");
|
|
61
|
+
expect(result.attachments[0].localPath).toBe(outside);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
describe("file upload", () => {
|
|
66
|
+
it("uploads with no workspace roots configured", async () => {
|
|
67
|
+
const file = join(dir, "config.yaml");
|
|
68
|
+
writeFileSync(file, "a: 1\n");
|
|
69
|
+
const result = await processAttachments(uploader, [file], []);
|
|
70
|
+
expect(result.attachments).toHaveLength(1);
|
|
71
|
+
expect(result.attachments[0].contentType).toBe("application/x-yaml");
|
|
72
|
+
expect(uploader.uploads[0].filename).toBe("config.yaml");
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it("falls back to octet-stream for unknown extensions", async () => {
|
|
76
|
+
const file = join(dir, "blob.unknownext");
|
|
77
|
+
writeFileSync(file, "x");
|
|
78
|
+
const result = await processAttachments(uploader, [file], []);
|
|
79
|
+
expect(result.attachments[0].contentType).toBe("application/octet-stream");
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it("errors on a missing file", async () => {
|
|
83
|
+
await expect(processAttachments(uploader, [join(dir, "nope.txt")], [])).rejects.toThrow(/file not found/);
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
describe("directory zipping", () => {
|
|
88
|
+
it("zips a directory, marks extract, and sets the mount path", async () => {
|
|
89
|
+
const subdir = join(dir, "bundle");
|
|
90
|
+
mkdirSync(join(subdir, "nested"), { recursive: true });
|
|
91
|
+
writeFileSync(join(subdir, "a.txt"), "aaa");
|
|
92
|
+
writeFileSync(join(subdir, "nested", "b.txt"), "bbb");
|
|
93
|
+
writeFileSync(join(subdir, ".hidden"), "secret"); // skipped
|
|
94
|
+
|
|
95
|
+
const result = await processAttachments(uploader, [subdir], []);
|
|
96
|
+
expect(result.attachments).toHaveLength(1);
|
|
97
|
+
const att = result.attachments[0];
|
|
98
|
+
expect(att.filename).toBe("bundle.zip");
|
|
99
|
+
expect(att.extract).toBe(true);
|
|
100
|
+
expect(att.mountPath).toBe("inputs/bundle/");
|
|
101
|
+
expect(att.contentType).toBe("application/zip");
|
|
102
|
+
|
|
103
|
+
const entries = Object.keys(unzipSync(uploader.uploads[0].content)).sort();
|
|
104
|
+
expect(entries).toEqual(["a.txt", "nested/b.txt"]);
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it("errors when a directory has no attachable files", async () => {
|
|
108
|
+
const empty = join(dir, "empty");
|
|
109
|
+
mkdirSync(empty);
|
|
110
|
+
writeFileSync(join(empty, ".hidden"), "x"); // only hidden -> nothing attachable
|
|
111
|
+
await expect(processAttachments(uploader, [empty], [])).rejects.toThrow(/no attachable files/);
|
|
112
|
+
});
|
|
113
|
+
});
|