@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,261 @@
|
|
|
1
|
+
// Attachment processing for agent execution.
|
|
2
|
+
//
|
|
3
|
+
// Ports the Go CLI's run_attachments.go + run_attachments_zip.go. Each `--attach`
|
|
4
|
+
// path is either recorded as a workspace-relative reference (when it lives inside
|
|
5
|
+
// a local workspace root — no upload, the agent reads it directly) or uploaded
|
|
6
|
+
// via the UploadAttachment RPC and returned as an Attachment proto. Directories
|
|
7
|
+
// are zipped (hidden entries and symlinks skipped) and capped at 10 MB to match
|
|
8
|
+
// the server's gRPC receive limit.
|
|
9
|
+
|
|
10
|
+
import { readdirSync, readFileSync, realpathSync, statSync } from "node:fs";
|
|
11
|
+
import { extname, join, relative, resolve, sep } from "node:path";
|
|
12
|
+
import { create } from "@bufbuild/protobuf";
|
|
13
|
+
import { zipSync } from "fflate";
|
|
14
|
+
import { type Attachment, AttachmentSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/spec_pb";
|
|
15
|
+
import {
|
|
16
|
+
type UploadAttachmentRequest,
|
|
17
|
+
UploadAttachmentRequestSchema,
|
|
18
|
+
type UploadAttachmentResponse,
|
|
19
|
+
} from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/io_pb";
|
|
20
|
+
import { UsageError } from "../../errors/index.js";
|
|
21
|
+
|
|
22
|
+
// Must match the server's grpc.MaxRecvMsgSize (Go: maxAttachmentSize).
|
|
23
|
+
const MAX_ATTACHMENT_SIZE = 10 * 1024 * 1024; // 10 MB
|
|
24
|
+
|
|
25
|
+
/** A sink for human progress/warning lines (attachments are not byte-parity output). */
|
|
26
|
+
export type ProgressSink = (line: string) => void;
|
|
27
|
+
|
|
28
|
+
/** The minimal UploadAttachment RPC surface, injectable for testing. */
|
|
29
|
+
export interface AttachmentUploader {
|
|
30
|
+
uploadAttachment(req: UploadAttachmentRequest): Promise<UploadAttachmentResponse>;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The split result of processing `--attach` paths. Mirrors Go's
|
|
35
|
+
* AttachmentResult: in-workspace files become relative references, everything
|
|
36
|
+
* else becomes an uploaded Attachment.
|
|
37
|
+
*/
|
|
38
|
+
export interface AttachmentResult {
|
|
39
|
+
readonly attachments: Attachment[];
|
|
40
|
+
readonly workspaceFileRefs: string[];
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Process `--attach` paths against the local workspace roots. The first root a
|
|
45
|
+
* path falls inside wins and yields a workspace-relative reference; otherwise
|
|
46
|
+
* the path is uploaded. Mirrors Go's AttachmentProcessor.ProcessFiles.
|
|
47
|
+
*/
|
|
48
|
+
export async function processAttachments(
|
|
49
|
+
uploader: AttachmentUploader,
|
|
50
|
+
paths: readonly string[],
|
|
51
|
+
workspaceRoots: readonly string[],
|
|
52
|
+
progress?: ProgressSink,
|
|
53
|
+
): Promise<AttachmentResult> {
|
|
54
|
+
const attachments: Attachment[] = [];
|
|
55
|
+
const workspaceFileRefs: string[] = [];
|
|
56
|
+
if (paths.length === 0) return { attachments, workspaceFileRefs };
|
|
57
|
+
|
|
58
|
+
for (const path of paths) {
|
|
59
|
+
const rel = matchWorkspaceRoot(path, workspaceRoots);
|
|
60
|
+
if (rel !== null) {
|
|
61
|
+
progress?.(`Referencing workspace file: ${rel}`);
|
|
62
|
+
workspaceFileRefs.push(rel);
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
attachments.push(await processFile(uploader, path, progress));
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return { attachments, workspaceFileRefs };
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Returns the workspace-relative path if `path` is inside any root (first match
|
|
72
|
+
// wins), else null. Mirrors Go's matchWorkspaceRoot + workspaceRelativePath:
|
|
73
|
+
// both sides are resolved through realpath to prevent symlink escapes.
|
|
74
|
+
function matchWorkspaceRoot(path: string, roots: readonly string[]): string | null {
|
|
75
|
+
for (const root of roots) {
|
|
76
|
+
let evalFile: string;
|
|
77
|
+
let evalRoot: string;
|
|
78
|
+
try {
|
|
79
|
+
evalFile = realpathSync(resolve(path));
|
|
80
|
+
evalRoot = realpathSync(root);
|
|
81
|
+
} catch {
|
|
82
|
+
continue; // unresolvable path is treated as outside this root
|
|
83
|
+
}
|
|
84
|
+
if (evalFile === evalRoot || evalFile.startsWith(evalRoot + sep)) {
|
|
85
|
+
return toSlash(relative(evalRoot, evalFile));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Stat the path, then upload a file or zip+upload a directory. Mirrors Go's
|
|
92
|
+
// processFile.
|
|
93
|
+
async function processFile(uploader: AttachmentUploader, path: string, progress?: ProgressSink): Promise<Attachment> {
|
|
94
|
+
let stat: ReturnType<typeof statSync>;
|
|
95
|
+
try {
|
|
96
|
+
stat = statSync(path);
|
|
97
|
+
} catch (err) {
|
|
98
|
+
const e = err as NodeJS.ErrnoException;
|
|
99
|
+
if (e.code === "ENOENT") throw new UsageError(`file not found: ${path}`);
|
|
100
|
+
throw new UsageError(`failed to stat attachment "${path}": ${e.message}`);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
if (stat.isDirectory()) return processDirectory(uploader, path, progress);
|
|
104
|
+
|
|
105
|
+
const absPath = resolve(path);
|
|
106
|
+
const filename = basenameOf(path);
|
|
107
|
+
const contentType = detectContentType(filename);
|
|
108
|
+
progress?.(`Uploading ${filename} (${formatFileSize(stat.size)})...`);
|
|
109
|
+
const attachment = await uploadBytes(uploader, readFileSync(path), filename, contentType, progress);
|
|
110
|
+
attachment.localPath = absPath;
|
|
111
|
+
return attachment;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// Zip a directory (extract=true so the runner unpacks it at mount_path) and
|
|
115
|
+
// upload it as one archive. Mirrors Go's processDirectory.
|
|
116
|
+
async function processDirectory(uploader: AttachmentUploader, path: string, progress?: ProgressSink): Promise<Attachment> {
|
|
117
|
+
const absPath = resolve(path);
|
|
118
|
+
const dirname = basenameOf(absPath);
|
|
119
|
+
|
|
120
|
+
const { bytes, fileCount, originalSize } = zipDirectory(absPath, progress);
|
|
121
|
+
const zipSize = bytes.byteLength;
|
|
122
|
+
progress?.(
|
|
123
|
+
`Zipping directory: ${dirname}/ (${fileCount} files, ` +
|
|
124
|
+
`${formatFileSize(originalSize)} -> ${formatFileSize(zipSize)} compressed)`,
|
|
125
|
+
);
|
|
126
|
+
if (zipSize > MAX_ATTACHMENT_SIZE) {
|
|
127
|
+
throw new UsageError(
|
|
128
|
+
`zipped directory too large (${formatFileSize(zipSize)}). ` +
|
|
129
|
+
`Maximum attachment size is ${formatFileSize(MAX_ATTACHMENT_SIZE)}`,
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const attachment = await uploadBytes(uploader, bytes, `${dirname}.zip`, "application/zip", progress);
|
|
134
|
+
attachment.extract = true;
|
|
135
|
+
attachment.mountPath = `inputs/${dirname}/`;
|
|
136
|
+
attachment.localPath = absPath;
|
|
137
|
+
return attachment;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// Upload raw bytes via the RPC and build an Attachment. Mirrors Go's uploadBytes.
|
|
141
|
+
async function uploadBytes(
|
|
142
|
+
uploader: AttachmentUploader,
|
|
143
|
+
content: Uint8Array,
|
|
144
|
+
filename: string,
|
|
145
|
+
contentType: string,
|
|
146
|
+
progress?: ProgressSink,
|
|
147
|
+
): Promise<Attachment> {
|
|
148
|
+
const req = create(UploadAttachmentRequestSchema, { filename, content, contentType });
|
|
149
|
+
let resp: UploadAttachmentResponse;
|
|
150
|
+
try {
|
|
151
|
+
resp = await uploader.uploadAttachment(req);
|
|
152
|
+
} catch (err) {
|
|
153
|
+
throw new UsageError(`failed to upload attachment "${filename}": ${(err as Error).message}`);
|
|
154
|
+
}
|
|
155
|
+
progress?.(`Uploaded ${filename}`);
|
|
156
|
+
return create(AttachmentSchema, { filename, storageKey: resp.storageKey, contentType });
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
interface ZipResult {
|
|
160
|
+
readonly bytes: Uint8Array;
|
|
161
|
+
readonly fileCount: number;
|
|
162
|
+
readonly originalSize: number;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// Build a zip of dirPath's contents, skipping hidden entries (and their
|
|
166
|
+
// subtrees) and symlinks. Mirrors Go's zipDirectory.
|
|
167
|
+
function zipDirectory(dirPath: string, progress?: ProgressSink): ZipResult {
|
|
168
|
+
const files: Record<string, Uint8Array> = {};
|
|
169
|
+
let fileCount = 0;
|
|
170
|
+
let originalSize = 0;
|
|
171
|
+
|
|
172
|
+
const walk = (current: string, prefix: string): void => {
|
|
173
|
+
const entries = readdirSync(current, { withFileTypes: true });
|
|
174
|
+
for (const entry of entries) {
|
|
175
|
+
if (entry.name.startsWith(".")) continue; // hidden entry (and subtree if dir)
|
|
176
|
+
const rel = prefix === "" ? entry.name : `${prefix}/${entry.name}`;
|
|
177
|
+
const full = join(current, entry.name);
|
|
178
|
+
if (entry.isSymbolicLink()) {
|
|
179
|
+
progress?.(`Skipping symlink: ${full}`);
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
if (entry.isDirectory()) {
|
|
183
|
+
walk(full, rel);
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
if (!entry.isFile()) continue;
|
|
187
|
+
const content = new Uint8Array(readFileSync(full));
|
|
188
|
+
files[rel] = content;
|
|
189
|
+
fileCount++;
|
|
190
|
+
originalSize += content.byteLength;
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
walk(dirPath, "");
|
|
194
|
+
|
|
195
|
+
if (fileCount === 0) {
|
|
196
|
+
throw new UsageError(`directory contains no attachable files: ${dirPath}`);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
return { bytes: zipSync(files, { level: 6 }), fileCount, originalSize };
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
// MIME by extension. Go consults the OS mime DB first (non-deterministic across
|
|
203
|
+
// hosts) and falls back to a fixed switch; we use a curated table so the result
|
|
204
|
+
// is deterministic. content_type is advisory — the server re-guesses from the
|
|
205
|
+
// filename when absent — so exact parity with Go's OS DB is not required.
|
|
206
|
+
const MIME_BY_EXT: Readonly<Record<string, string>> = {
|
|
207
|
+
".md": "text/markdown",
|
|
208
|
+
".markdown": "text/markdown",
|
|
209
|
+
".yaml": "application/x-yaml",
|
|
210
|
+
".yml": "application/x-yaml",
|
|
211
|
+
".toml": "application/toml",
|
|
212
|
+
".csv": "text/csv",
|
|
213
|
+
".tsv": "text/tab-separated-values",
|
|
214
|
+
".log": "text/plain",
|
|
215
|
+
".sql": "application/sql",
|
|
216
|
+
".parquet": "application/vnd.apache.parquet",
|
|
217
|
+
".avro": "application/avro",
|
|
218
|
+
".json": "application/json",
|
|
219
|
+
".txt": "text/plain",
|
|
220
|
+
".pdf": "application/pdf",
|
|
221
|
+
".html": "text/html",
|
|
222
|
+
".htm": "text/html",
|
|
223
|
+
".xml": "text/xml",
|
|
224
|
+
".zip": "application/zip",
|
|
225
|
+
".png": "image/png",
|
|
226
|
+
".jpg": "image/jpeg",
|
|
227
|
+
".jpeg": "image/jpeg",
|
|
228
|
+
".gif": "image/gif",
|
|
229
|
+
".svg": "image/svg+xml",
|
|
230
|
+
".js": "text/javascript",
|
|
231
|
+
".ts": "text/plain",
|
|
232
|
+
};
|
|
233
|
+
|
|
234
|
+
function detectContentType(filename: string): string {
|
|
235
|
+
const ext = extname(filename).toLowerCase();
|
|
236
|
+
if (ext === "") return "application/octet-stream";
|
|
237
|
+
return MIME_BY_EXT[ext] ?? "application/octet-stream";
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
// Human-readable byte size. Mirrors Go's formatFileSize (1024-based, one decimal).
|
|
241
|
+
function formatFileSize(bytes: number): string {
|
|
242
|
+
const KB = 1024;
|
|
243
|
+
const MB = KB * 1024;
|
|
244
|
+
const GB = MB * 1024;
|
|
245
|
+
if (bytes >= GB) return `${(bytes / GB).toFixed(1)} GB`;
|
|
246
|
+
if (bytes >= MB) return `${(bytes / MB).toFixed(1)} MB`;
|
|
247
|
+
if (bytes >= KB) return `${(bytes / KB).toFixed(1)} KB`;
|
|
248
|
+
return `${bytes} B`;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// path.basename, but resilient to trailing slashes (matches Go filepath.Base
|
|
252
|
+
// semantics closely enough for display/name derivation).
|
|
253
|
+
function basenameOf(p: string): string {
|
|
254
|
+
const cleaned = p.replace(/[/\\]+$/, "");
|
|
255
|
+
const idx = Math.max(cleaned.lastIndexOf("/"), cleaned.lastIndexOf("\\"));
|
|
256
|
+
return idx === -1 ? cleaned : cleaned.slice(idx + 1);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
function toSlash(p: string): string {
|
|
260
|
+
return p.split(sep).join("/");
|
|
261
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// Unit tests for run-path resource creation: full-proto field mapping, the
|
|
2
|
+
// message default, ExecutionConfig presence/contents, runtime-env conversion,
|
|
3
|
+
// and session/workflow shapes. The controller is faked to capture the exact
|
|
4
|
+
// proto sent to the RPC.
|
|
5
|
+
|
|
6
|
+
import { describe, expect, it } from "vitest";
|
|
7
|
+
import { InteractionMode } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
8
|
+
import {
|
|
9
|
+
type ControllerFn,
|
|
10
|
+
createAgentExecution,
|
|
11
|
+
createSessionForAgent,
|
|
12
|
+
createWorkflowExecution,
|
|
13
|
+
} from "./create.js";
|
|
14
|
+
|
|
15
|
+
// Returns a controller whose every RPC echoes the request back, and records the
|
|
16
|
+
// last message sent. `create` is the only RPC the run path calls.
|
|
17
|
+
function fakeController(): { fn: ControllerFn; last: () => unknown } {
|
|
18
|
+
let captured: unknown;
|
|
19
|
+
const fn = (() =>
|
|
20
|
+
({
|
|
21
|
+
create: async (msg: unknown) => {
|
|
22
|
+
captured = msg;
|
|
23
|
+
return msg;
|
|
24
|
+
},
|
|
25
|
+
})) as unknown as ControllerFn;
|
|
26
|
+
return { fn, last: () => captured };
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
describe("createAgentExecution", () => {
|
|
30
|
+
it("maps the full spec and defaults an empty message to 'execute'", async () => {
|
|
31
|
+
const { fn } = fakeController();
|
|
32
|
+
const exec = await createAgentExecution(fn, {
|
|
33
|
+
agentId: "agt_1",
|
|
34
|
+
orgId: "acme",
|
|
35
|
+
message: "",
|
|
36
|
+
runtimeEnv: { FOO: { value: "bar", isSecret: false }, TOKEN: { value: "s", isSecret: true } },
|
|
37
|
+
attachments: [],
|
|
38
|
+
workspaceFileRefs: ["src/a.ts"],
|
|
39
|
+
model: "claude",
|
|
40
|
+
mode: "plan",
|
|
41
|
+
autoApproveAll: true,
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
expect(exec.kind).toBe("AgentExecution");
|
|
45
|
+
expect(exec.metadata?.org).toBe("acme");
|
|
46
|
+
expect(exec.spec?.message).toBe("execute");
|
|
47
|
+
expect(exec.spec?.agentId).toBe("agt_1");
|
|
48
|
+
expect(exec.spec?.autoApproveAll).toBe(true);
|
|
49
|
+
expect(exec.spec?.workspaceFileRefs).toEqual(["src/a.ts"]);
|
|
50
|
+
expect(exec.spec?.runtimeEnv.FOO).toMatchObject({ value: "bar", isSecret: false });
|
|
51
|
+
expect(exec.spec?.runtimeEnv.TOKEN).toMatchObject({ value: "s", isSecret: true });
|
|
52
|
+
expect(exec.spec?.executionConfig?.modelName).toBe("claude");
|
|
53
|
+
expect(exec.spec?.executionConfig?.interactionMode).toBe(InteractionMode.PLAN);
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
it("omits ExecutionConfig when neither model nor mode is set", async () => {
|
|
57
|
+
const { fn } = fakeController();
|
|
58
|
+
const exec = await createAgentExecution(fn, {
|
|
59
|
+
agentId: "agt_1",
|
|
60
|
+
orgId: "acme",
|
|
61
|
+
message: "hi",
|
|
62
|
+
runtimeEnv: {},
|
|
63
|
+
attachments: [],
|
|
64
|
+
workspaceFileRefs: [],
|
|
65
|
+
model: "",
|
|
66
|
+
mode: "",
|
|
67
|
+
autoApproveAll: false,
|
|
68
|
+
});
|
|
69
|
+
expect(exec.spec?.message).toBe("hi");
|
|
70
|
+
expect(exec.spec?.executionConfig).toBeUndefined();
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it("leaves InteractionMode unspecified for agent mode", async () => {
|
|
74
|
+
const { fn } = fakeController();
|
|
75
|
+
const exec = await createAgentExecution(fn, {
|
|
76
|
+
sessionId: "ses_1",
|
|
77
|
+
orgId: "acme",
|
|
78
|
+
message: "x",
|
|
79
|
+
runtimeEnv: {},
|
|
80
|
+
attachments: [],
|
|
81
|
+
workspaceFileRefs: [],
|
|
82
|
+
model: "m",
|
|
83
|
+
mode: "agent",
|
|
84
|
+
autoApproveAll: false,
|
|
85
|
+
});
|
|
86
|
+
expect(exec.spec?.sessionId).toBe("ses_1");
|
|
87
|
+
expect(exec.spec?.executionConfig?.interactionMode).toBe(InteractionMode.UNSPECIFIED);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
describe("createSessionForAgent", () => {
|
|
92
|
+
it("builds a session with the auto-created subject and instance id", async () => {
|
|
93
|
+
const { fn } = fakeController();
|
|
94
|
+
const session = await createSessionForAgent(fn, {
|
|
95
|
+
agentInstanceId: "ain_1",
|
|
96
|
+
orgId: "acme",
|
|
97
|
+
workspaceEntries: [],
|
|
98
|
+
});
|
|
99
|
+
expect(session.kind).toBe("Session");
|
|
100
|
+
expect(session.spec?.agentInstanceId).toBe("ain_1");
|
|
101
|
+
expect(session.spec?.subject).toBe("Auto-created session");
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
describe("createWorkflowExecution", () => {
|
|
106
|
+
it("builds a workflow execution with the trigger message", async () => {
|
|
107
|
+
const { fn } = fakeController();
|
|
108
|
+
const exec = await createWorkflowExecution(fn, {
|
|
109
|
+
workflowId: "wfl_1",
|
|
110
|
+
orgId: "acme",
|
|
111
|
+
message: "",
|
|
112
|
+
runtimeEnv: { K: { value: "v", isSecret: false } },
|
|
113
|
+
});
|
|
114
|
+
expect(exec.kind).toBe("WorkflowExecution");
|
|
115
|
+
expect(exec.spec?.workflowId).toBe("wfl_1");
|
|
116
|
+
expect(exec.spec?.triggerMessage).toBe("execute");
|
|
117
|
+
expect(exec.spec?.runtimeEnv.K).toMatchObject({ value: "v", isSecret: false });
|
|
118
|
+
});
|
|
119
|
+
});
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
// Resource creation for the run path: AgentExecution, the workspace Session it
|
|
2
|
+
// may need, and WorkflowExecution.
|
|
3
|
+
//
|
|
4
|
+
// Ports the Go CLI's run_create.go. We build the full proto messages and drive
|
|
5
|
+
// the generated command controllers directly — the Wave-2 fidelity rule (see
|
|
6
|
+
// resources/apply/handlers.ts): the SDK's typed `create(input)` wrappers model a
|
|
7
|
+
// subset of fields, and our attachments/workspace entries are already proto
|
|
8
|
+
// messages, so a round-trip through the input types would be lossy and pointless.
|
|
9
|
+
|
|
10
|
+
import type { Client } from "@connectrpc/connect";
|
|
11
|
+
import { create, type DescService } from "@bufbuild/protobuf";
|
|
12
|
+
import { type AgentExecution, AgentExecutionSchema } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/api_pb";
|
|
13
|
+
import { AgentExecutionCommandController } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/command_pb";
|
|
14
|
+
import { InteractionMode } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/enum_pb";
|
|
15
|
+
import type { Attachment } from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/spec_pb";
|
|
16
|
+
import {
|
|
17
|
+
AgentExecutionSpecSchema,
|
|
18
|
+
type ExecutionConfig,
|
|
19
|
+
ExecutionConfigSchema,
|
|
20
|
+
} from "@stigmer/protos/ai/stigmer/agentic/agentexecution/v1/spec_pb";
|
|
21
|
+
import type { ExecutionValue } from "@stigmer/protos/ai/stigmer/agentic/executioncontext/v1/spec_pb";
|
|
22
|
+
import { type Session, SessionSchema } from "@stigmer/protos/ai/stigmer/agentic/session/v1/api_pb";
|
|
23
|
+
import { SessionCommandController } from "@stigmer/protos/ai/stigmer/agentic/session/v1/command_pb";
|
|
24
|
+
import { SessionSpecSchema } from "@stigmer/protos/ai/stigmer/agentic/session/v1/spec_pb";
|
|
25
|
+
import type { WorkspaceEntry } from "@stigmer/protos/ai/stigmer/agentic/session/v1/workspace_pb";
|
|
26
|
+
import {
|
|
27
|
+
type WorkflowExecution,
|
|
28
|
+
WorkflowExecutionSchema,
|
|
29
|
+
} from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/api_pb";
|
|
30
|
+
import { WorkflowExecutionCommandController } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/command_pb";
|
|
31
|
+
import { WorkflowExecutionSpecSchema } from "@stigmer/protos/ai/stigmer/agentic/workflowexecution/v1/spec_pb";
|
|
32
|
+
import { ExecutionValueSchema } from "@stigmer/protos/ai/stigmer/agentic/executioncontext/v1/spec_pb";
|
|
33
|
+
import { ApiResourceMetadataSchema } from "@stigmer/protos/ai/stigmer/commons/apiresource/metadata_pb";
|
|
34
|
+
import type { RuntimeEnv } from "./env.js";
|
|
35
|
+
import type { RunMode } from "./prepare.js";
|
|
36
|
+
|
|
37
|
+
const API_VERSION = "agentic.stigmer.ai/v1";
|
|
38
|
+
|
|
39
|
+
// Accessor for a raw Connect client over a generated controller — the same seam
|
|
40
|
+
// the BackendClient exposes (client.ts) and apply uses (handlers.ts).
|
|
41
|
+
export type ControllerFn = <Desc extends DescService>(service: Desc) => Client<Desc>;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Inputs for creating an agent execution. At least one of agentId/sessionId
|
|
45
|
+
* must be set: agentId-only starts a new backend-managed session, sessionId
|
|
46
|
+
* threads a follow-up, both pins the agent within an existing session.
|
|
47
|
+
*/
|
|
48
|
+
export interface CreateAgentExecutionInput {
|
|
49
|
+
readonly agentId?: string;
|
|
50
|
+
readonly sessionId?: string;
|
|
51
|
+
readonly orgId: string;
|
|
52
|
+
readonly message: string;
|
|
53
|
+
readonly runtimeEnv: RuntimeEnv;
|
|
54
|
+
readonly attachments: readonly Attachment[];
|
|
55
|
+
readonly workspaceFileRefs: readonly string[];
|
|
56
|
+
readonly model: string;
|
|
57
|
+
readonly mode: RunMode;
|
|
58
|
+
readonly autoApproveAll: boolean;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** Create an agent execution. Mirrors Go's createAgentExecution. */
|
|
62
|
+
export async function createAgentExecution(
|
|
63
|
+
controller: ControllerFn,
|
|
64
|
+
input: CreateAgentExecutionInput,
|
|
65
|
+
): Promise<AgentExecution> {
|
|
66
|
+
const execution = create(AgentExecutionSchema, {
|
|
67
|
+
apiVersion: API_VERSION,
|
|
68
|
+
kind: "AgentExecution",
|
|
69
|
+
metadata: create(ApiResourceMetadataSchema, { name: executionName(), org: input.orgId }),
|
|
70
|
+
spec: create(AgentExecutionSpecSchema, {
|
|
71
|
+
message: input.message === "" ? "execute" : input.message,
|
|
72
|
+
runtimeEnv: toExecutionValues(input.runtimeEnv),
|
|
73
|
+
attachments: [...input.attachments],
|
|
74
|
+
workspaceFileRefs: [...input.workspaceFileRefs],
|
|
75
|
+
autoApproveAll: input.autoApproveAll,
|
|
76
|
+
sessionId: input.sessionId ?? "",
|
|
77
|
+
agentId: input.agentId ?? "",
|
|
78
|
+
executionConfig: buildExecutionConfig(input.model, input.mode),
|
|
79
|
+
}),
|
|
80
|
+
});
|
|
81
|
+
return controller(AgentExecutionCommandController).create(execution);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** Inputs for creating a workspace-bearing session. */
|
|
85
|
+
export interface CreateSessionInput {
|
|
86
|
+
readonly agentInstanceId: string;
|
|
87
|
+
readonly orgId: string;
|
|
88
|
+
readonly workspaceEntries: readonly WorkspaceEntry[];
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Create a session with explicit workspace entries. Mirrors Go's
|
|
93
|
+
* createSessionForAgent: the backend's auto-create flow has no workspace
|
|
94
|
+
* passthrough, so the CLI creates the session itself. The "Auto-created session"
|
|
95
|
+
* subject matches the backend sentinel, so the async title activity replaces it.
|
|
96
|
+
*/
|
|
97
|
+
export async function createSessionForAgent(controller: ControllerFn, input: CreateSessionInput): Promise<Session> {
|
|
98
|
+
const session = create(SessionSchema, {
|
|
99
|
+
apiVersion: API_VERSION,
|
|
100
|
+
kind: "Session",
|
|
101
|
+
metadata: create(ApiResourceMetadataSchema, { name: `session-${Date.now()}`, org: input.orgId }),
|
|
102
|
+
spec: create(SessionSpecSchema, {
|
|
103
|
+
agentInstanceId: input.agentInstanceId,
|
|
104
|
+
subject: "Auto-created session",
|
|
105
|
+
workspaceEntries: [...input.workspaceEntries],
|
|
106
|
+
}),
|
|
107
|
+
});
|
|
108
|
+
return controller(SessionCommandController).create(session);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/** Inputs for creating a workflow execution. */
|
|
112
|
+
export interface CreateWorkflowExecutionInput {
|
|
113
|
+
readonly workflowId: string;
|
|
114
|
+
readonly orgId: string;
|
|
115
|
+
readonly message: string;
|
|
116
|
+
readonly runtimeEnv: RuntimeEnv;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Create a workflow execution. Mirrors Go's createWorkflowExecution. The caller
|
|
121
|
+
* either detaches (prints IDs) or streams the execution live over the canonical
|
|
122
|
+
* event stream (resources/run/workflow-stream.ts).
|
|
123
|
+
*/
|
|
124
|
+
export async function createWorkflowExecution(
|
|
125
|
+
controller: ControllerFn,
|
|
126
|
+
input: CreateWorkflowExecutionInput,
|
|
127
|
+
): Promise<WorkflowExecution> {
|
|
128
|
+
const execution = create(WorkflowExecutionSchema, {
|
|
129
|
+
apiVersion: API_VERSION,
|
|
130
|
+
kind: "WorkflowExecution",
|
|
131
|
+
metadata: create(ApiResourceMetadataSchema, { name: executionName(), org: input.orgId }),
|
|
132
|
+
spec: create(WorkflowExecutionSpecSchema, {
|
|
133
|
+
workflowId: input.workflowId,
|
|
134
|
+
triggerMessage: input.message === "" ? "execute" : input.message,
|
|
135
|
+
runtimeEnv: toExecutionValues(input.runtimeEnv),
|
|
136
|
+
}),
|
|
137
|
+
});
|
|
138
|
+
return controller(WorkflowExecutionCommandController).create(execution);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Build ExecutionConfig, or undefined when neither flag is set so the backend
|
|
142
|
+
// applies its defaults. Mirrors Go's buildExecutionConfig (only "plan" maps to a
|
|
143
|
+
// non-default InteractionMode; "agent"/"" leave it unspecified).
|
|
144
|
+
function buildExecutionConfig(model: string, mode: RunMode): ExecutionConfig | undefined {
|
|
145
|
+
if (model === "" && mode === "") return undefined;
|
|
146
|
+
const cfg = create(ExecutionConfigSchema);
|
|
147
|
+
if (model !== "") cfg.modelName = model;
|
|
148
|
+
if (mode === "plan") cfg.interactionMode = InteractionMode.PLAN;
|
|
149
|
+
return cfg;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
// Convert the merged runtime env to the proto map of ExecutionValue.
|
|
153
|
+
function toExecutionValues(env: RuntimeEnv): Record<string, ExecutionValue> {
|
|
154
|
+
const out: Record<string, ExecutionValue> = {};
|
|
155
|
+
for (const [key, value] of Object.entries(env)) {
|
|
156
|
+
out[key] = create(ExecutionValueSchema, { value: value.value, isSecret: value.isSecret ?? false });
|
|
157
|
+
}
|
|
158
|
+
return out;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Unique-enough placeholder name; the backend owns final identity. Mirrors Go's
|
|
162
|
+
// fmt.Sprintf("execution-%d", time.Now().UnixMicro()).
|
|
163
|
+
function executionName(): string {
|
|
164
|
+
return `execution-${Date.now() * 1000}`;
|
|
165
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
// Unit tests for runtime-env assembly: dotenv parsing, flag parsing, precedence,
|
|
2
|
+
// and quote/escape handling. The precedence ordering is a wire-parity contract
|
|
3
|
+
// with the Go CLI, so it gets dedicated coverage.
|
|
4
|
+
|
|
5
|
+
import { mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
6
|
+
import { tmpdir } from "node:os";
|
|
7
|
+
import { join } from "node:path";
|
|
8
|
+
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
9
|
+
import { loadAndMergeEnv } from "./env.js";
|
|
10
|
+
|
|
11
|
+
let dir: string;
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
dir = mkdtempSync(join(tmpdir(), "env-test-"));
|
|
14
|
+
});
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
rmSync(dir, { recursive: true, force: true });
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
function writeFile(name: string, contents: string): string {
|
|
20
|
+
const path = join(dir, name);
|
|
21
|
+
writeFileSync(path, contents);
|
|
22
|
+
return path;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const NONE = { envFlags: [], secretFlags: [], envFiles: [], secretFiles: [] };
|
|
26
|
+
|
|
27
|
+
describe("loadAndMergeEnv flags", () => {
|
|
28
|
+
it("parses plain KEY=VALUE env flags as non-secrets", () => {
|
|
29
|
+
expect(loadAndMergeEnv({ ...NONE, envFlags: ["FOO=bar", "BAZ=qux"] })).toEqual({
|
|
30
|
+
FOO: { value: "bar", isSecret: false },
|
|
31
|
+
BAZ: { value: "qux", isSecret: false },
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
it("parses secret flags as secrets", () => {
|
|
36
|
+
expect(loadAndMergeEnv({ ...NONE, secretFlags: ["TOKEN=abc"] })).toEqual({
|
|
37
|
+
TOKEN: { value: "abc", isSecret: true },
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it("rejects a flag without '='", () => {
|
|
42
|
+
expect(() => loadAndMergeEnv({ ...NONE, envFlags: ["NOEQUALS"] })).toThrow(/missing '=' separator/);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it("rejects an invalid key", () => {
|
|
46
|
+
expect(() => loadAndMergeEnv({ ...NONE, envFlags: ["1BAD=x"] })).toThrow(/invalid key/);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it("keeps everything after the first '=' as the value", () => {
|
|
50
|
+
expect(loadAndMergeEnv({ ...NONE, envFlags: ["URL=https://a.b/c?d=e"] })).toEqual({
|
|
51
|
+
URL: { value: "https://a.b/c?d=e", isSecret: false },
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
describe("loadAndMergeEnv files", () => {
|
|
57
|
+
it("parses comments, blanks, export prefix, and quoted values", () => {
|
|
58
|
+
const path = writeFile(
|
|
59
|
+
".env",
|
|
60
|
+
["# comment", "", "export FOO=bar", 'QUOTED="hello world"', "SINGLE='single'"].join("\n"),
|
|
61
|
+
);
|
|
62
|
+
expect(loadAndMergeEnv({ ...NONE, envFiles: [path] })).toEqual({
|
|
63
|
+
FOO: { value: "bar", isSecret: false },
|
|
64
|
+
QUOTED: { value: "hello world", isSecret: false },
|
|
65
|
+
SINGLE: { value: "single", isSecret: false },
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it("treats secret files as all-secret", () => {
|
|
70
|
+
const path = writeFile("secrets.env", "API_KEY=xyz\n");
|
|
71
|
+
expect(loadAndMergeEnv({ ...NONE, secretFiles: [path] })).toEqual({
|
|
72
|
+
API_KEY: { value: "xyz", isSecret: true },
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it("reports the file and line on a parse error", () => {
|
|
77
|
+
const path = writeFile(".env", "GOOD=1\nBADLINE\n");
|
|
78
|
+
expect(() => loadAndMergeEnv({ ...NONE, envFiles: [path] })).toThrow(/:2:/);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it("errors clearly when a file is missing", () => {
|
|
82
|
+
expect(() => loadAndMergeEnv({ ...NONE, envFiles: [join(dir, "nope.env")] })).toThrow(
|
|
83
|
+
/failed to open environment file/,
|
|
84
|
+
);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
describe("loadAndMergeEnv precedence (later wins)", () => {
|
|
89
|
+
it("layers env-files < secret-files < --env < --secret", () => {
|
|
90
|
+
const envFile = writeFile("a.env", "K=from-env-file\n");
|
|
91
|
+
const secretFile = writeFile("b.env", "K=from-secret-file\n");
|
|
92
|
+
// secret-file beats env-file:
|
|
93
|
+
expect(loadAndMergeEnv({ ...NONE, envFiles: [envFile], secretFiles: [secretFile] })).toEqual({
|
|
94
|
+
K: { value: "from-secret-file", isSecret: true },
|
|
95
|
+
});
|
|
96
|
+
// --env beats secret-file:
|
|
97
|
+
expect(
|
|
98
|
+
loadAndMergeEnv({ ...NONE, secretFiles: [secretFile], envFlags: ["K=from-env-flag"] }),
|
|
99
|
+
).toEqual({ K: { value: "from-env-flag", isSecret: false } });
|
|
100
|
+
// --secret beats --env:
|
|
101
|
+
expect(loadAndMergeEnv({ ...NONE, envFlags: ["K=from-env"], secretFlags: ["K=from-secret"] })).toEqual({
|
|
102
|
+
K: { value: "from-secret", isSecret: true },
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
it("applies later files within the same tier last", () => {
|
|
107
|
+
const first = writeFile("first.env", "K=first\n");
|
|
108
|
+
const second = writeFile("second.env", "K=second\n");
|
|
109
|
+
expect(loadAndMergeEnv({ ...NONE, envFiles: [first, second] })).toEqual({
|
|
110
|
+
K: { value: "second", isSecret: false },
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
describe("escape handling matches Go's single-pass replacer", () => {
|
|
116
|
+
it("does not double-process a literal backslash-n", () => {
|
|
117
|
+
// "\\n" in the file is backslash + backslash + n; Go yields backslash + n,
|
|
118
|
+
// NOT a newline. A naive chained replace would wrongly produce a newline.
|
|
119
|
+
const path = writeFile(".env", 'K="\\\\n"\n');
|
|
120
|
+
expect(loadAndMergeEnv({ ...NONE, envFiles: [path] })).toEqual({
|
|
121
|
+
K: { value: "\\n", isSecret: false },
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
it("unescapes real escape sequences", () => {
|
|
126
|
+
const path = writeFile(".env", 'K="a\\tb\\nc"\n');
|
|
127
|
+
expect(loadAndMergeEnv({ ...NONE, envFiles: [path] })).toEqual({
|
|
128
|
+
K: { value: "a\tb\nc", isSecret: false },
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
});
|