@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,172 @@
|
|
|
1
|
+
// Resolution and on-demand acquisition of the `stigmer-server` control plane.
|
|
2
|
+
//
|
|
3
|
+
// DD-003: a TypeScript CLI cannot `go:embed` a Go binary, so it resolves an
|
|
4
|
+
// existing `stigmer-server` (dev build / Homebrew / a prior download) and, when
|
|
5
|
+
// none is present, downloads the standalone release asset into ~/.stigmer/bin and
|
|
6
|
+
// verifies its sha256 before first use. The fetch/extract mechanics are shared
|
|
7
|
+
// with the Temporal downloader (`../artifact.ts`); the one deliberate difference
|
|
8
|
+
// is the checksum step — this is our own executable, and DD-003 makes integrity
|
|
9
|
+
// non-negotiable.
|
|
10
|
+
//
|
|
11
|
+
// Resolution order (first existing hit wins; download is the last resort):
|
|
12
|
+
// 1. STIGMER_SERVER_BIN — explicit override (tests, custom installs)
|
|
13
|
+
// 2. repo `bin/stigmer-server` — the dev build (`make build`)
|
|
14
|
+
// 3. ~/bin/stigmer-server — a common local install location
|
|
15
|
+
// 4. ~/.stigmer/bin/stigmer-server — a previously-downloaded release asset
|
|
16
|
+
// 5. PATH — `stigmer-server`
|
|
17
|
+
// 6. download the pinned release asset into ~/.stigmer/bin (checksum-verified)
|
|
18
|
+
|
|
19
|
+
import { existsSync } from "node:fs";
|
|
20
|
+
import { homedir } from "node:os";
|
|
21
|
+
import { dirname, join } from "node:path";
|
|
22
|
+
import { fileURLToPath } from "node:url";
|
|
23
|
+
import { CliExitError } from "../../errors/cli-exit-error.js";
|
|
24
|
+
import { ExitCode } from "../../errors/exit-codes.js";
|
|
25
|
+
import { VERSION } from "../../version.js";
|
|
26
|
+
import { fetchTarballBinary, mapReleaseArch, mapReleaseOs } from "../artifact.js";
|
|
27
|
+
import { binDir } from "../paths.js";
|
|
28
|
+
import { which } from "./which.js";
|
|
29
|
+
|
|
30
|
+
const SERVER_BINARY = "stigmer-server";
|
|
31
|
+
const GITHUB_REPO = "stigmer/stigmer";
|
|
32
|
+
|
|
33
|
+
// Platform/arch combos for which `release.cli.yaml` publishes a stigmer-server
|
|
34
|
+
// asset. The npm CLI installs on more platforms than this (e.g. linux-arm64,
|
|
35
|
+
// Windows), so an unsupported `stigmer up` must fail with clear guidance rather
|
|
36
|
+
// than a confusing 404.
|
|
37
|
+
const SUPPORTED_PLATFORMS = new Set(["darwin-arm64", "darwin-amd64", "linux-amd64"]);
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Find an already-present `stigmer-server` binary, or null. Pure: never
|
|
41
|
+
* downloads. `home` is injectable for tests.
|
|
42
|
+
*/
|
|
43
|
+
export function resolveServerBinary(home: string = homedir()): string | null {
|
|
44
|
+
for (const candidate of serverCandidates(home)) {
|
|
45
|
+
if (existsSync(candidate)) return candidate;
|
|
46
|
+
}
|
|
47
|
+
return which(SERVER_BINARY);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface EnsureServerOptions {
|
|
51
|
+
home?: string;
|
|
52
|
+
/** Release version to download if needed (defaults to the CLI's own version). */
|
|
53
|
+
version?: string;
|
|
54
|
+
/** Override the fetch implementation (tests). */
|
|
55
|
+
fetchImpl?: typeof fetch;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* Ensure a `stigmer-server` binary is available, returning its path. Reuses an
|
|
60
|
+
* existing binary if found; otherwise downloads the pinned release asset into
|
|
61
|
+
* ~/.stigmer/bin (checksum-verified). Throws actionable guidance when no binary
|
|
62
|
+
* exists and a download is not possible (a source/dev build, or an unsupported
|
|
63
|
+
* platform).
|
|
64
|
+
*/
|
|
65
|
+
export async function ensureServerBinary(opts: EnsureServerOptions = {}): Promise<string> {
|
|
66
|
+
const home = opts.home ?? homedir();
|
|
67
|
+
const existing = resolveServerBinary(home);
|
|
68
|
+
if (existing !== null) return existing;
|
|
69
|
+
|
|
70
|
+
const version = opts.version ?? VERSION;
|
|
71
|
+
if (!isDownloadableRelease(version)) {
|
|
72
|
+
throw notFoundError();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const binPath = join(binDir(home), SERVER_BINARY);
|
|
76
|
+
await downloadServerBinary({ version, binPath, fetchImpl: opts.fetchImpl });
|
|
77
|
+
return binPath;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export interface ServerDownloadTarget {
|
|
81
|
+
/** Release version, e.g. "0.5.0" or "0.5.0-rc.1" (with or without a leading "v"). */
|
|
82
|
+
version: string;
|
|
83
|
+
/** Absolute path to write the extracted `stigmer-server` binary to. */
|
|
84
|
+
binPath: string;
|
|
85
|
+
/** Node platform (defaults to process.platform). */
|
|
86
|
+
platform?: NodeJS.Platform;
|
|
87
|
+
/** Node arch (defaults to process.arch). */
|
|
88
|
+
arch?: string;
|
|
89
|
+
/** Override the fetch implementation (tests). */
|
|
90
|
+
fetchImpl?: typeof fetch;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Download, checksum-verify, and install the standalone `stigmer-server` release
|
|
95
|
+
* asset. Throws a {@link CliExitError} on an unsupported platform or any
|
|
96
|
+
* network/checksum/extraction failure.
|
|
97
|
+
*/
|
|
98
|
+
export async function downloadServerBinary(target: ServerDownloadTarget): Promise<void> {
|
|
99
|
+
const os = mapReleaseOs(target.platform ?? process.platform);
|
|
100
|
+
const arch = mapReleaseArch(target.arch ?? process.arch);
|
|
101
|
+
const platformKey = `${os}-${arch}`;
|
|
102
|
+
if (!SUPPORTED_PLATFORMS.has(platformKey)) {
|
|
103
|
+
throw unsupportedPlatformError(platformKey);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const tag = releaseTag(target.version);
|
|
107
|
+
const archive = `${SERVER_BINARY}-${tag}-${platformKey}.tar.gz`;
|
|
108
|
+
const url = `https://github.com/${GITHUB_REPO}/releases/download/${tag}/${archive}`;
|
|
109
|
+
|
|
110
|
+
await fetchTarballBinary({
|
|
111
|
+
url,
|
|
112
|
+
checksumUrl: `${url}.sha256`,
|
|
113
|
+
entryName: SERVER_BINARY,
|
|
114
|
+
binPath: target.binPath,
|
|
115
|
+
label: SERVER_BINARY,
|
|
116
|
+
fetchImpl: target.fetchImpl,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
function serverCandidates(home: string): string[] {
|
|
121
|
+
const candidates: string[] = [];
|
|
122
|
+
const override = process.env.STIGMER_SERVER_BIN;
|
|
123
|
+
if (override !== undefined && override !== "") candidates.push(override);
|
|
124
|
+
|
|
125
|
+
const root = repoRoot();
|
|
126
|
+
if (root !== null) candidates.push(join(root, "bin", SERVER_BINARY));
|
|
127
|
+
candidates.push(join(home, "bin", SERVER_BINARY));
|
|
128
|
+
candidates.push(join(binDir(home), SERVER_BINARY)); // a previously-downloaded asset
|
|
129
|
+
return candidates;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// Only tagged releases publish a downloadable asset. A source build reports the
|
|
133
|
+
// "0.0.0-dev" sentinel and the dev npm channel stamps "<v>-dev.<stamp>" versions
|
|
134
|
+
// (release.dev.yaml) that never cut a GitHub release — neither is downloadable.
|
|
135
|
+
function isDownloadableRelease(version: string): boolean {
|
|
136
|
+
return !version.includes("-dev");
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// The npm package version maps to the GitHub release tag by prefixing "v"
|
|
140
|
+
// (npm 0.5.0 -> tag v0.5.0; npm 0.5.0-rc.1 -> tag v0.5.0-rc.1).
|
|
141
|
+
function releaseTag(version: string): string {
|
|
142
|
+
return version.startsWith("v") ? version : `v${version}`;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function notFoundError(): CliExitError {
|
|
146
|
+
return new CliExitError(`${SERVER_BINARY} binary not found`, ExitCode.General, [
|
|
147
|
+
"Build it from the repo with `make build` (produces ./bin/stigmer-server),",
|
|
148
|
+
"or set STIGMER_SERVER_BIN to an existing binary.",
|
|
149
|
+
"Automatic download is only available for tagged releases.",
|
|
150
|
+
]);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
function unsupportedPlatformError(platformKey: string): CliExitError {
|
|
154
|
+
return new CliExitError(`the local stack does not support this platform (${platformKey})`, ExitCode.General, [
|
|
155
|
+
"`stigmer up` needs a stigmer-server release asset, which is published for",
|
|
156
|
+
"macOS (arm64/amd64) and Linux (amd64) only.",
|
|
157
|
+
"Point STIGMER_SERVER_BIN at a server binary you built yourself to proceed.",
|
|
158
|
+
]);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// Walk up from this module to the repo root (the directory containing
|
|
162
|
+
// `bin/stigmer-server` in a dev checkout). Returns null outside a checkout.
|
|
163
|
+
function repoRoot(): string | null {
|
|
164
|
+
let dir = dirname(fileURLToPath(import.meta.url));
|
|
165
|
+
for (let i = 0; i < 8; i += 1) {
|
|
166
|
+
if (existsSync(join(dir, "bin", SERVER_BINARY))) return dir;
|
|
167
|
+
const parent = dirname(dir);
|
|
168
|
+
if (parent === dir) break;
|
|
169
|
+
dir = parent;
|
|
170
|
+
}
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Minimal PATH lookup, the Node analogue of Go's exec.LookPath.
|
|
2
|
+
//
|
|
3
|
+
// Scans the PATH entries for an executable file. POSIX-focused (the local stack
|
|
4
|
+
// targets macOS and Linux); on those platforms a name with no separator is
|
|
5
|
+
// resolved against PATH, and an absolute/relative path is checked directly.
|
|
6
|
+
|
|
7
|
+
import { accessSync, constants } from "node:fs";
|
|
8
|
+
import { delimiter, isAbsolute, join, sep } from "node:path";
|
|
9
|
+
|
|
10
|
+
/** Resolve an executable by name via PATH, or null if not found. */
|
|
11
|
+
export function which(name: string): string | null {
|
|
12
|
+
if (name.includes(sep) || isAbsolute(name)) {
|
|
13
|
+
return isExecutable(name) ? name : null;
|
|
14
|
+
}
|
|
15
|
+
const entries = (process.env.PATH ?? "").split(delimiter).filter((e) => e !== "");
|
|
16
|
+
for (const dir of entries) {
|
|
17
|
+
const candidate = join(dir, name);
|
|
18
|
+
if (isExecutable(candidate)) return candidate;
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function isExecutable(path: string): boolean {
|
|
24
|
+
try {
|
|
25
|
+
accessSync(path, constants.X_OK);
|
|
26
|
+
return true;
|
|
27
|
+
} catch {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import type { Message } from "@bufbuild/protobuf";
|
|
5
|
+
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
6
|
+
import { buildDeclarativeItems, scanResourceFiles } from "../../resources/apply/declarative.js";
|
|
7
|
+
import type { ControllerFn } from "../../resources/apply/handlers.js";
|
|
8
|
+
import { applySeedpack, resolveSeedpackOrg, seedpackContentHash } from "./apply.js";
|
|
9
|
+
import type { SeedpackContent } from "./content.js";
|
|
10
|
+
import { extractSeedpack, readMarker, resolveSeedpackContent } from "./content.js";
|
|
11
|
+
|
|
12
|
+
const ORG_YAML = [
|
|
13
|
+
"apiVersion: tenancy.stigmer.ai/v1",
|
|
14
|
+
"kind: Organization",
|
|
15
|
+
"metadata:",
|
|
16
|
+
" name: Stigmer",
|
|
17
|
+
" slug: stigmer",
|
|
18
|
+
"spec:",
|
|
19
|
+
' description: "System org"',
|
|
20
|
+
" management_mode: self_managed",
|
|
21
|
+
"",
|
|
22
|
+
].join("\n");
|
|
23
|
+
|
|
24
|
+
const PROJECT_YAML = [
|
|
25
|
+
"apiVersion: tenancy.stigmer.ai/v1",
|
|
26
|
+
"kind: Project",
|
|
27
|
+
"metadata:",
|
|
28
|
+
" name: stigmer-seedpack",
|
|
29
|
+
" org: stigmer",
|
|
30
|
+
"spec:",
|
|
31
|
+
" description: System seedpack",
|
|
32
|
+
"",
|
|
33
|
+
].join("\n");
|
|
34
|
+
|
|
35
|
+
// A seedpack fixture with just an org + the project manifest — enough to exercise
|
|
36
|
+
// both apply phases (organizations via file mode, the project via the declarative
|
|
37
|
+
// reconciler) without pulling in skill-push or MCP discovery.
|
|
38
|
+
function makeContent(): SeedpackContent {
|
|
39
|
+
const dir = mkdtempSync(join(tmpdir(), "seedpack-apply-"));
|
|
40
|
+
writeFileSync(join(dir, "stigmer.yaml"), PROJECT_YAML);
|
|
41
|
+
mkdirSync(join(dir, "organizations"), { recursive: true });
|
|
42
|
+
writeFileSync(join(dir, "organizations", "stigmer.yaml"), ORG_YAML);
|
|
43
|
+
return { dir, source: "repo" };
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// Records each applied message's proto type name; every controller resolves to
|
|
47
|
+
// the same stub apply (the handlers only call `.apply`).
|
|
48
|
+
function recordingDeps() {
|
|
49
|
+
const applied: string[] = [];
|
|
50
|
+
const controller = (() => ({
|
|
51
|
+
apply: async (m: Message) => {
|
|
52
|
+
applied.push((m as { $typeName: string }).$typeName);
|
|
53
|
+
return m;
|
|
54
|
+
},
|
|
55
|
+
})) as unknown as ControllerFn;
|
|
56
|
+
return {
|
|
57
|
+
applied,
|
|
58
|
+
deps: {
|
|
59
|
+
controller,
|
|
60
|
+
stigmer: {} as never,
|
|
61
|
+
info: () => {},
|
|
62
|
+
warn: () => {},
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
let content: SeedpackContent;
|
|
68
|
+
let markerDir: string;
|
|
69
|
+
beforeEach(() => {
|
|
70
|
+
content = makeContent();
|
|
71
|
+
markerDir = mkdtempSync(join(tmpdir(), "seedpack-marker-"));
|
|
72
|
+
});
|
|
73
|
+
afterEach(() => {
|
|
74
|
+
rmSync(content.dir, { recursive: true, force: true });
|
|
75
|
+
rmSync(markerDir, { recursive: true, force: true });
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
describe("resolveSeedpackOrg", () => {
|
|
79
|
+
const saved = process.env.STIGMER_SEEDPACK_ORG;
|
|
80
|
+
afterEach(() => {
|
|
81
|
+
if (saved === undefined) delete process.env.STIGMER_SEEDPACK_ORG;
|
|
82
|
+
else process.env.STIGMER_SEEDPACK_ORG = saved;
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it("prefers explicit, then env var, then the default", () => {
|
|
86
|
+
delete process.env.STIGMER_SEEDPACK_ORG;
|
|
87
|
+
expect(resolveSeedpackOrg("acme")).toBe("acme");
|
|
88
|
+
expect(resolveSeedpackOrg()).toBe("stigmer");
|
|
89
|
+
process.env.STIGMER_SEEDPACK_ORG = "from-env";
|
|
90
|
+
expect(resolveSeedpackOrg()).toBe("from-env");
|
|
91
|
+
expect(resolveSeedpackOrg("explicit")).toBe("explicit");
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
describe("applySeedpack", () => {
|
|
96
|
+
it("applies the org and project, then writes the marker", async () => {
|
|
97
|
+
const { applied, deps } = recordingDeps();
|
|
98
|
+
const result = await applySeedpack(deps, { markerDir, content });
|
|
99
|
+
|
|
100
|
+
expect(result.applied).toBe(true);
|
|
101
|
+
expect(result.org).toBe("stigmer");
|
|
102
|
+
expect(applied.some((t) => t.endsWith("Organization"))).toBe(true);
|
|
103
|
+
expect(applied.some((t) => t.endsWith("Project"))).toBe(true);
|
|
104
|
+
expect(readMarker(markerDir)).toBe(result.hash);
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
it("is idempotent: a matching marker skips the backend entirely", async () => {
|
|
108
|
+
const { applied, deps } = recordingDeps();
|
|
109
|
+
await applySeedpack(deps, { markerDir, content });
|
|
110
|
+
|
|
111
|
+
const second = recordingDeps();
|
|
112
|
+
const result = await applySeedpack(second.deps, { markerDir, content });
|
|
113
|
+
expect(result.applied).toBe(false);
|
|
114
|
+
expect(second.applied).toHaveLength(0);
|
|
115
|
+
// The first run did touch the backend.
|
|
116
|
+
expect(applied.length).toBeGreaterThan(0);
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
it("re-applies when forced even if the marker matches", async () => {
|
|
120
|
+
const first = recordingDeps();
|
|
121
|
+
await applySeedpack(first.deps, { markerDir, content });
|
|
122
|
+
|
|
123
|
+
const forced = recordingDeps();
|
|
124
|
+
const result = await applySeedpack(forced.deps, { markerDir, content, force: true });
|
|
125
|
+
expect(result.applied).toBe(true);
|
|
126
|
+
expect(forced.applied.length).toBeGreaterThan(0);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
describe("seedpackContentHash", () => {
|
|
131
|
+
it("hashes the provided content", () => {
|
|
132
|
+
expect(seedpackContentHash({ content })).toMatch(/^sha256:[0-9a-f]{16}$/);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
// Regression guard for the credential-manifest bootstrap blocker: the *real*
|
|
137
|
+
// seedpack content must pass cleanly through the declarative scanner. Every
|
|
138
|
+
// staged file is a resource (carries a `kind`); any non-resource file (e.g. the
|
|
139
|
+
// CI canary manifest) must live outside the content set, never beside the
|
|
140
|
+
// McpServer YAMLs where `loadDocuments(strict)` would reject it for missing a
|
|
141
|
+
// `kind`. The synthetic fixtures above can't catch this — only real content can.
|
|
142
|
+
describe("real seedpack content loads through the declarative scanner", () => {
|
|
143
|
+
it("scans + builds apply items without a missing-kind error", () => {
|
|
144
|
+
const real = resolveSeedpackContent();
|
|
145
|
+
const stage = mkdtempSync(join(tmpdir(), "seedpack-real-"));
|
|
146
|
+
try {
|
|
147
|
+
extractSeedpack(real.dir, stage);
|
|
148
|
+
|
|
149
|
+
const files = scanResourceFiles(stage);
|
|
150
|
+
// The scan must reach mcp-servers/ — the directory that historically held
|
|
151
|
+
// the kind-less credential-manifest.yaml.
|
|
152
|
+
expect(files.some((f) => f.includes("mcp-servers"))).toBe(true);
|
|
153
|
+
|
|
154
|
+
// The throw site. Before the fix this raises "missing 'kind' field".
|
|
155
|
+
const items = buildDeclarativeItems(files, () => {});
|
|
156
|
+
expect(items.length).toBeGreaterThan(0);
|
|
157
|
+
|
|
158
|
+
const kinds = new Set(items.map((i) => (i.document as { kind?: string }).kind));
|
|
159
|
+
expect(kinds).toContain("McpServer");
|
|
160
|
+
expect(kinds).toContain("Agent");
|
|
161
|
+
expect(kinds).toContain("Workflow");
|
|
162
|
+
} finally {
|
|
163
|
+
rmSync(stage, { recursive: true, force: true });
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
});
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
// In-process seedpack apply.
|
|
2
|
+
//
|
|
3
|
+
// The TS equivalent of Go's seedpackbootstrap.Apply, with one deliberate
|
|
4
|
+
// improvement: instead of shelling out to `stigmer apply` as a subprocess, this
|
|
5
|
+
// drives the same in-process declarative-apply path that `stigmer apply` uses —
|
|
6
|
+
// one code path, no recursion guard, no second process.
|
|
7
|
+
//
|
|
8
|
+
// Two phases respect the resource hierarchy (mirrors the Go bootstrap):
|
|
9
|
+
// 1. organizations/ via file mode — the org must exist before its members.
|
|
10
|
+
// 2. the project (stigmer.yaml + agents/skills/mcp-servers/workflows) via the
|
|
11
|
+
// declarative reconciler, under the target org.
|
|
12
|
+
//
|
|
13
|
+
// Idempotent: a content-hash marker skips the apply when nothing changed.
|
|
14
|
+
|
|
15
|
+
import { mkdtempSync, rmSync } from "node:fs";
|
|
16
|
+
import { tmpdir } from "node:os";
|
|
17
|
+
import { join } from "node:path";
|
|
18
|
+
import type { Stigmer } from "@stigmer/sdk";
|
|
19
|
+
import { applyItem, resolveApplyItems } from "../../resources/apply/apply.js";
|
|
20
|
+
import { applyDeclarative, detectTrack } from "../../resources/apply/declarative.js";
|
|
21
|
+
import type { ControllerFn } from "../../resources/apply/handlers.js";
|
|
22
|
+
import {
|
|
23
|
+
extractSeedpack,
|
|
24
|
+
hashSeedpackContent,
|
|
25
|
+
readMarker,
|
|
26
|
+
resolveSeedpackContent,
|
|
27
|
+
type SeedpackContent,
|
|
28
|
+
writeMarker,
|
|
29
|
+
} from "./content.js";
|
|
30
|
+
|
|
31
|
+
const DEFAULT_ORG = "stigmer";
|
|
32
|
+
const ORG_ENV_VAR = "STIGMER_SEEDPACK_ORG";
|
|
33
|
+
|
|
34
|
+
export interface SeedpackApplyDeps {
|
|
35
|
+
/** Raw command-controller accessor (full-proto apply, preserves metadata.id). */
|
|
36
|
+
readonly controller: ControllerFn;
|
|
37
|
+
/** High-level client for skill push + post-apply MCP discovery. */
|
|
38
|
+
readonly stigmer: Stigmer;
|
|
39
|
+
/** Human progress lines (stderr). */
|
|
40
|
+
readonly info: (line: string) => void;
|
|
41
|
+
/** Warnings (stderr). */
|
|
42
|
+
readonly warn: (line: string) => void;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface SeedpackApplyOptions {
|
|
46
|
+
/** Directory holding the idempotency marker (data dir for local, config dir for cloud). */
|
|
47
|
+
readonly markerDir: string;
|
|
48
|
+
/** Target org slug. Defaults to STIGMER_SEEDPACK_ORG, then "stigmer". */
|
|
49
|
+
readonly org?: string;
|
|
50
|
+
/** Re-apply even when the content hash is unchanged. */
|
|
51
|
+
readonly force?: boolean;
|
|
52
|
+
/** Pre-resolved content (injectable for tests); resolved on demand otherwise. */
|
|
53
|
+
readonly content?: SeedpackContent;
|
|
54
|
+
readonly home?: string;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export interface SeedpackApplyResult {
|
|
58
|
+
/** True when the seedpack was applied; false when skipped as up to date. */
|
|
59
|
+
readonly applied: boolean;
|
|
60
|
+
/** The current content hash (stored in the marker on a successful apply). */
|
|
61
|
+
readonly hash: string;
|
|
62
|
+
/** The resolved target org. */
|
|
63
|
+
readonly org: string;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** Resolve the target org: explicit option > env var > "stigmer". */
|
|
67
|
+
export function resolveSeedpackOrg(explicit?: string): string {
|
|
68
|
+
if (explicit !== undefined && explicit !== "") return explicit;
|
|
69
|
+
const env = process.env[ORG_ENV_VAR];
|
|
70
|
+
if (env !== undefined && env !== "") return env;
|
|
71
|
+
return DEFAULT_ORG;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** Compute the current seedpack content hash without applying (drives `status`). */
|
|
75
|
+
export function seedpackContentHash(opts: Pick<SeedpackApplyOptions, "content" | "home"> = {}): string {
|
|
76
|
+
const content = opts.content ?? resolveSeedpackContent({ home: opts.home });
|
|
77
|
+
return hashSeedpackContent(content.dir);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Apply the seedpack to the backend the deps connect to. Returns `applied:false`
|
|
82
|
+
* (without touching the backend) when the marker already matches the content
|
|
83
|
+
* hash and `force` is not set.
|
|
84
|
+
*/
|
|
85
|
+
export async function applySeedpack(deps: SeedpackApplyDeps, opts: SeedpackApplyOptions): Promise<SeedpackApplyResult> {
|
|
86
|
+
const org = resolveSeedpackOrg(opts.org);
|
|
87
|
+
const content = opts.content ?? resolveSeedpackContent({ home: opts.home });
|
|
88
|
+
const hash = hashSeedpackContent(content.dir);
|
|
89
|
+
|
|
90
|
+
if (opts.force !== true && readMarker(opts.markerDir) === hash) {
|
|
91
|
+
return { applied: false, hash, org };
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
deps.info("Applying system resources (seedpack)…");
|
|
95
|
+
const stage = mkdtempSync(join(tmpdir(), "stigmer-seedpack-"));
|
|
96
|
+
try {
|
|
97
|
+
extractSeedpack(content.dir, stage);
|
|
98
|
+
await applyOrganizations(deps, stage);
|
|
99
|
+
await applyProject(deps, stage, org);
|
|
100
|
+
writeMarker(opts.markerDir, hash);
|
|
101
|
+
} finally {
|
|
102
|
+
rmSync(stage, { recursive: true, force: true });
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
deps.info("System resources applied successfully");
|
|
106
|
+
return { applied: true, hash, org };
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// Phase 1: organizations via file mode. Organizations sit above the project and
|
|
110
|
+
// carry no org context themselves, so they apply with an empty org.
|
|
111
|
+
async function applyOrganizations(deps: SeedpackApplyDeps, stageDir: string): Promise<void> {
|
|
112
|
+
const orgDir = join(stageDir, "organizations");
|
|
113
|
+
let items: ReturnType<typeof resolveApplyItems>;
|
|
114
|
+
try {
|
|
115
|
+
items = resolveApplyItems(orgDir);
|
|
116
|
+
} catch {
|
|
117
|
+
return; // No organizations to apply.
|
|
118
|
+
}
|
|
119
|
+
for (const item of items) {
|
|
120
|
+
const outcome = await applyItem(deps.controller, item, "", false);
|
|
121
|
+
if (outcome.warning !== undefined) deps.warn(outcome.warning);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// Phase 2: the project (agents, skills, MCP servers, workflows) via the shared
|
|
126
|
+
// declarative reconciler — the same path `stigmer apply` runs for a user project.
|
|
127
|
+
async function applyProject(deps: SeedpackApplyDeps, stageDir: string, org: string): Promise<void> {
|
|
128
|
+
const detect = detectTrack(stageDir);
|
|
129
|
+
if (detect.track !== "declarative") {
|
|
130
|
+
throw new Error(`seedpack is not a declarative project (detected '${detect.track}')`);
|
|
131
|
+
}
|
|
132
|
+
await applyDeclarative(detect, {
|
|
133
|
+
controller: deps.controller,
|
|
134
|
+
stigmer: deps.stigmer,
|
|
135
|
+
org,
|
|
136
|
+
info: deps.info,
|
|
137
|
+
warn: deps.warn,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, mkdtempSync, readdirSync, rmSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { tmpdir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
5
|
+
import { classify, ExitCode } from "../../errors/index.js";
|
|
6
|
+
import {
|
|
7
|
+
acquireSeedpack,
|
|
8
|
+
extractSeedpack,
|
|
9
|
+
hashSeedpackContent,
|
|
10
|
+
listContentFiles,
|
|
11
|
+
readMarker,
|
|
12
|
+
resolveSeedpackContent,
|
|
13
|
+
SEEDPACK_ENTRIES,
|
|
14
|
+
writeMarker,
|
|
15
|
+
} from "./content.js";
|
|
16
|
+
|
|
17
|
+
// Build a minimal seedpack content tree with one non-canonical sibling (tools/)
|
|
18
|
+
// to prove the canonical-entry filtering.
|
|
19
|
+
function makeFixture(): string {
|
|
20
|
+
const dir = mkdtempSync(join(tmpdir(), "seedpack-content-"));
|
|
21
|
+
writeFileSync(join(dir, "stigmer.yaml"), "kind: Project\n");
|
|
22
|
+
mkdirSync(join(dir, "organizations"), { recursive: true });
|
|
23
|
+
writeFileSync(join(dir, "organizations", "stigmer.yaml"), "kind: Organization\n");
|
|
24
|
+
mkdirSync(join(dir, "skills", "demo"), { recursive: true });
|
|
25
|
+
writeFileSync(join(dir, "skills", "demo", "SKILL.md"), "---\nname: demo\n---\n");
|
|
26
|
+
mkdirSync(join(dir, "agents"), { recursive: true });
|
|
27
|
+
writeFileSync(join(dir, "agents", "a.yaml"), "kind: Agent\n");
|
|
28
|
+
// Non-canonical siblings that must never be hashed/extracted.
|
|
29
|
+
mkdirSync(join(dir, "tools"), { recursive: true });
|
|
30
|
+
writeFileSync(join(dir, "tools", "gen.sh"), "echo hi\n");
|
|
31
|
+
mkdirSync(join(dir, "icons"), { recursive: true });
|
|
32
|
+
writeFileSync(join(dir, "icons", "logo.svg"), "<svg/>\n");
|
|
33
|
+
return dir;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
let fixture: string;
|
|
37
|
+
beforeEach(() => {
|
|
38
|
+
fixture = makeFixture();
|
|
39
|
+
});
|
|
40
|
+
afterEach(() => {
|
|
41
|
+
rmSync(fixture, { recursive: true, force: true });
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
describe("listContentFiles", () => {
|
|
45
|
+
it("lists only canonical entries, lexically sorted", () => {
|
|
46
|
+
const files = listContentFiles(fixture);
|
|
47
|
+
expect(files).toEqual([
|
|
48
|
+
"agents/a.yaml",
|
|
49
|
+
"organizations/stigmer.yaml",
|
|
50
|
+
"skills/demo/SKILL.md",
|
|
51
|
+
"stigmer.yaml",
|
|
52
|
+
]);
|
|
53
|
+
expect(files.some((f) => f.startsWith("tools/") || f.startsWith("icons/"))).toBe(false);
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
describe("hashSeedpackContent", () => {
|
|
58
|
+
it("is deterministic and sha256-prefixed", () => {
|
|
59
|
+
expect(hashSeedpackContent(fixture)).toBe(hashSeedpackContent(fixture));
|
|
60
|
+
expect(hashSeedpackContent(fixture)).toMatch(/^sha256:[0-9a-f]{16}$/);
|
|
61
|
+
});
|
|
62
|
+
|
|
63
|
+
it("changes when content changes but ignores non-canonical files", () => {
|
|
64
|
+
const before = hashSeedpackContent(fixture);
|
|
65
|
+
writeFileSync(join(fixture, "tools", "extra.sh"), "noise\n");
|
|
66
|
+
expect(hashSeedpackContent(fixture)).toBe(before);
|
|
67
|
+
writeFileSync(join(fixture, "agents", "b.yaml"), "kind: Agent\n");
|
|
68
|
+
expect(hashSeedpackContent(fixture)).not.toBe(before);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
describe("extractSeedpack", () => {
|
|
73
|
+
it("copies only canonical entries and hashes identically to the source", () => {
|
|
74
|
+
const dest = mkdtempSync(join(tmpdir(), "seedpack-extract-"));
|
|
75
|
+
try {
|
|
76
|
+
extractSeedpack(fixture, dest);
|
|
77
|
+
for (const entry of readdirSync(dest)) {
|
|
78
|
+
expect(SEEDPACK_ENTRIES).toContain(entry as (typeof SEEDPACK_ENTRIES)[number]);
|
|
79
|
+
}
|
|
80
|
+
expect(existsSync(join(dest, "tools"))).toBe(false);
|
|
81
|
+
expect(hashSeedpackContent(dest)).toBe(hashSeedpackContent(fixture));
|
|
82
|
+
} finally {
|
|
83
|
+
rmSync(dest, { recursive: true, force: true });
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
describe("marker", () => {
|
|
89
|
+
it("round-trips and returns null when absent", () => {
|
|
90
|
+
const dir = mkdtempSync(join(tmpdir(), "seedpack-marker-"));
|
|
91
|
+
try {
|
|
92
|
+
expect(readMarker(dir)).toBeNull();
|
|
93
|
+
writeMarker(dir, "sha256:abc123");
|
|
94
|
+
expect(readMarker(dir)).toBe("sha256:abc123");
|
|
95
|
+
} finally {
|
|
96
|
+
rmSync(dir, { recursive: true, force: true });
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
describe("resolveSeedpackContent", () => {
|
|
102
|
+
it("uses the repo seedpack tree in dev", () => {
|
|
103
|
+
const content = resolveSeedpackContent();
|
|
104
|
+
expect(content.source).toBe("repo");
|
|
105
|
+
expect(existsSync(join(content.dir, "stigmer.yaml"))).toBe(true);
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
it("excludes the non-resource canary manifest from the content set", () => {
|
|
109
|
+
// The CI canary manifest has no `kind`; if it were staged it would break the
|
|
110
|
+
// declarative-apply bootstrap. It lives in canary/ (outside SEEDPACK_ENTRIES).
|
|
111
|
+
const files = listContentFiles(resolveSeedpackContent().dir);
|
|
112
|
+
expect(files.some((f) => f.startsWith("canary/"))).toBe(false);
|
|
113
|
+
expect(files.some((f) => f.endsWith("credential-manifest.yaml"))).toBe(false);
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
describe("acquireSeedpack", () => {
|
|
118
|
+
it("refuses a non-release (dev) build", () => {
|
|
119
|
+
const err = (() => {
|
|
120
|
+
try {
|
|
121
|
+
acquireSeedpack({ home: fixture, version: "0.0.0-dev" });
|
|
122
|
+
} catch (e) {
|
|
123
|
+
return e;
|
|
124
|
+
}
|
|
125
|
+
})();
|
|
126
|
+
expect(classify(err)?.exitCode).toBe(ExitCode.General);
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
it("installs on demand and is idempotent on the second call", () => {
|
|
130
|
+
const home = mkdtempSync(join(tmpdir(), "seedpack-home-"));
|
|
131
|
+
let installs = 0;
|
|
132
|
+
const install = (installDir: string) => {
|
|
133
|
+
installs += 1;
|
|
134
|
+
const pkgDir = join(installDir, "node_modules", "@stigmer", "seedpack");
|
|
135
|
+
mkdirSync(pkgDir, { recursive: true });
|
|
136
|
+
writeFileSync(join(pkgDir, "stigmer.yaml"), "kind: Project\n");
|
|
137
|
+
};
|
|
138
|
+
try {
|
|
139
|
+
const dir1 = acquireSeedpack({ home, version: "1.2.3", install });
|
|
140
|
+
const dir2 = acquireSeedpack({ home, version: "1.2.3", install });
|
|
141
|
+
expect(dir1).toBe(dir2);
|
|
142
|
+
expect(existsSync(join(dir1, "stigmer.yaml"))).toBe(true);
|
|
143
|
+
expect(installs).toBe(1);
|
|
144
|
+
} finally {
|
|
145
|
+
rmSync(home, { recursive: true, force: true });
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
});
|