@hearsay-tools/squawk 0.0.0-stage → 0.17.0-pr3058.5683
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 +22 -0
- package/README.md +1846 -2
- package/dist/activity/demand.d.ts +21 -0
- package/dist/activity/demand.js +49 -0
- package/dist/activity/demand.js.map +1 -0
- package/dist/activity/publisher.d.ts +48 -0
- package/dist/activity/publisher.js +175 -0
- package/dist/activity/publisher.js.map +1 -0
- package/dist/activity/read-model.d.ts +50 -0
- package/dist/activity/read-model.js +143 -0
- package/dist/activity/read-model.js.map +1 -0
- package/dist/activity/requests.d.ts +27 -0
- package/dist/activity/requests.js +81 -0
- package/dist/activity/requests.js.map +1 -0
- package/dist/activity/text.d.ts +4 -0
- package/dist/activity/text.js +13 -0
- package/dist/activity/text.js.map +1 -0
- package/dist/activity/tool-activity.d.ts +87 -0
- package/dist/activity/tool-activity.js +250 -0
- package/dist/activity/tool-activity.js.map +1 -0
- package/dist/activity/wait.d.ts +19 -0
- package/dist/activity/wait.js +91 -0
- package/dist/activity/wait.js.map +1 -0
- package/dist/agent-config/account-identity.d.ts +28 -0
- package/dist/agent-config/account-identity.js +132 -0
- package/dist/agent-config/account-identity.js.map +1 -0
- package/dist/agent-config/catalog.d.ts +70 -0
- package/dist/agent-config/catalog.js +384 -0
- package/dist/agent-config/catalog.js.map +1 -0
- package/dist/agent-config/files.d.ts +42 -0
- package/dist/agent-config/files.js +115 -0
- package/dist/agent-config/files.js.map +1 -0
- package/dist/agent-config/model-settings/claude.d.ts +2 -0
- package/dist/agent-config/model-settings/claude.js +11 -0
- package/dist/agent-config/model-settings/claude.js.map +1 -0
- package/dist/agent-config/model-settings/codex.d.ts +2 -0
- package/dist/agent-config/model-settings/codex.js +16 -0
- package/dist/agent-config/model-settings/codex.js.map +1 -0
- package/dist/agent-config/model-settings/opencode.d.ts +2 -0
- package/dist/agent-config/model-settings/opencode.js +8 -0
- package/dist/agent-config/model-settings/opencode.js.map +1 -0
- package/dist/agent-config/model-settings/pi.d.ts +2 -0
- package/dist/agent-config/model-settings/pi.js +38 -0
- package/dist/agent-config/model-settings/pi.js.map +1 -0
- package/dist/agent-config/model-settings/shared.d.ts +12 -0
- package/dist/agent-config/model-settings/shared.js +100 -0
- package/dist/agent-config/model-settings/shared.js.map +1 -0
- package/dist/agent-config/model-settings/types.d.ts +9 -0
- package/dist/agent-config/model-settings/types.js +2 -0
- package/dist/agent-config/model-settings/types.js.map +1 -0
- package/dist/agent-config/models.d.ts +9 -0
- package/dist/agent-config/models.js +40 -0
- package/dist/agent-config/models.js.map +1 -0
- package/dist/agent-config/seed.d.ts +15 -0
- package/dist/agent-config/seed.js +94 -0
- package/dist/agent-config/seed.js.map +1 -0
- package/dist/agent-config/service.d.ts +44 -0
- package/dist/agent-config/service.js +73 -0
- package/dist/agent-config/service.js.map +1 -0
- package/dist/agent-config/validate.d.ts +18 -0
- package/dist/agent-config/validate.js +82 -0
- package/dist/agent-config/validate.js.map +1 -0
- package/dist/application-update/bin-recovery.d.ts +5 -0
- package/dist/application-update/bin-recovery.js +96 -0
- package/dist/application-update/bin-recovery.js.map +1 -0
- package/dist/application-update/discovery.d.ts +23 -0
- package/dist/application-update/discovery.js +131 -0
- package/dist/application-update/discovery.js.map +1 -0
- package/dist/application-update/helper.d.ts +58 -0
- package/dist/application-update/helper.js +363 -0
- package/dist/application-update/helper.js.map +1 -0
- package/dist/application-update/launcher.d.ts +12 -0
- package/dist/application-update/launcher.js +61 -0
- package/dist/application-update/launcher.js.map +1 -0
- package/dist/application-update/lock.d.ts +4 -0
- package/dist/application-update/lock.js +70 -0
- package/dist/application-update/lock.js.map +1 -0
- package/dist/application-update/npm-process.d.ts +17 -0
- package/dist/application-update/npm-process.js +156 -0
- package/dist/application-update/npm-process.js.map +1 -0
- package/dist/application-update/runtime-layout.d.ts +20 -0
- package/dist/application-update/runtime-layout.js +91 -0
- package/dist/application-update/runtime-layout.js.map +1 -0
- package/dist/application-update/scoped-recovery.d.ts +32 -0
- package/dist/application-update/scoped-recovery.js +210 -0
- package/dist/application-update/scoped-recovery.js.map +1 -0
- package/dist/application-update/service.d.ts +86 -0
- package/dist/application-update/service.js +523 -0
- package/dist/application-update/service.js.map +1 -0
- package/dist/archive-on-merge-setting.d.ts +15 -0
- package/dist/archive-on-merge-setting.js +15 -0
- package/dist/archive-on-merge-setting.js.map +1 -0
- package/dist/artifacts/cli.d.ts +1 -0
- package/dist/artifacts/cli.js +54 -0
- package/dist/artifacts/cli.js.map +1 -0
- package/dist/artifacts/lifecycle.d.ts +4 -0
- package/dist/artifacts/lifecycle.js +42 -0
- package/dist/artifacts/lifecycle.js.map +1 -0
- package/dist/artifacts/reports-index.d.ts +46 -0
- package/dist/artifacts/reports-index.js +279 -0
- package/dist/artifacts/reports-index.js.map +1 -0
- package/dist/artifacts/reports-watch.d.ts +43 -0
- package/dist/artifacts/reports-watch.js +129 -0
- package/dist/artifacts/reports-watch.js.map +1 -0
- package/dist/artifacts/resolve.d.ts +18 -0
- package/dist/artifacts/resolve.js +129 -0
- package/dist/artifacts/resolve.js.map +1 -0
- package/dist/artifacts/store.d.ts +40 -0
- package/dist/artifacts/store.js +513 -0
- package/dist/artifacts/store.js.map +1 -0
- package/dist/automations/automation-cli.d.ts +61 -0
- package/dist/automations/automation-cli.js +519 -0
- package/dist/automations/automation-cli.js.map +1 -0
- package/dist/automations/builtin-skill.d.ts +7 -0
- package/dist/automations/builtin-skill.js +14 -0
- package/dist/automations/builtin-skill.js.map +1 -0
- package/dist/automations/coordinator.d.ts +53 -0
- package/dist/automations/coordinator.js +136 -0
- package/dist/automations/coordinator.js.map +1 -0
- package/dist/automations/github-baseline.d.ts +3 -0
- package/dist/automations/github-baseline.js +17 -0
- package/dist/automations/github-baseline.js.map +1 -0
- package/dist/automations/github-poller.d.ts +93 -0
- package/dist/automations/github-poller.js +303 -0
- package/dist/automations/github-poller.js.map +1 -0
- package/dist/automations/project-files.d.ts +6 -0
- package/dist/automations/project-files.js +43 -0
- package/dist/automations/project-files.js.map +1 -0
- package/dist/automations/prompts.d.ts +12 -0
- package/dist/automations/prompts.js +162 -0
- package/dist/automations/prompts.js.map +1 -0
- package/dist/automations/schedule-runner.d.ts +153 -0
- package/dist/automations/schedule-runner.js +529 -0
- package/dist/automations/schedule-runner.js.map +1 -0
- package/dist/automations/scheduler.d.ts +95 -0
- package/dist/automations/scheduler.js +462 -0
- package/dist/automations/scheduler.js.map +1 -0
- package/dist/automations/service.d.ts +793 -0
- package/dist/automations/service.js +444 -0
- package/dist/automations/service.js.map +1 -0
- package/dist/automations/store.d.ts +168 -0
- package/dist/automations/store.js +805 -0
- package/dist/automations/store.js.map +1 -0
- package/dist/automations/task-template.d.ts +59 -0
- package/dist/automations/task-template.js +285 -0
- package/dist/automations/task-template.js.map +1 -0
- package/dist/automations/tool-adapter.d.ts +6 -0
- package/dist/automations/tool-adapter.js +115 -0
- package/dist/automations/tool-adapter.js.map +1 -0
- package/dist/automations/types.d.ts +1 -0
- package/dist/automations/types.js +2 -0
- package/dist/automations/types.js.map +1 -0
- package/dist/autosave-cleanup.d.ts +26 -0
- package/dist/autosave-cleanup.js +87 -0
- package/dist/autosave-cleanup.js.map +1 -0
- package/dist/autosave-git.d.ts +23 -0
- package/dist/autosave-git.js +211 -0
- package/dist/autosave-git.js.map +1 -0
- package/dist/autosave-group.d.ts +8 -0
- package/dist/autosave-group.js +61 -0
- package/dist/autosave-group.js.map +1 -0
- package/dist/autosave-holders.d.ts +34 -0
- package/dist/autosave-holders.js +228 -0
- package/dist/autosave-holders.js.map +1 -0
- package/dist/autosave-windows.d.ts +25 -0
- package/dist/autosave-windows.js +170 -0
- package/dist/autosave-windows.js.map +1 -0
- package/dist/cez.d.ts +2 -0
- package/dist/cez.js +3 -0
- package/dist/cez.js.map +1 -0
- package/dist/cezarion.d.ts +2 -0
- package/dist/cezarion.js +3 -0
- package/dist/cezarion.js.map +1 -0
- package/dist/ci-wait/client.d.ts +28 -0
- package/dist/ci-wait/client.js +123 -0
- package/dist/ci-wait/client.js.map +1 -0
- package/dist/ci-wait/controller.d.ts +824 -0
- package/dist/ci-wait/controller.js +305 -0
- package/dist/ci-wait/controller.js.map +1 -0
- package/dist/ci-wait/errors.d.ts +35 -0
- package/dist/ci-wait/errors.js +273 -0
- package/dist/ci-wait/errors.js.map +1 -0
- package/dist/ci-wait/github.d.ts +105 -0
- package/dist/ci-wait/github.js +324 -0
- package/dist/ci-wait/github.js.map +1 -0
- package/dist/ci-wait/injection.d.ts +3 -0
- package/dist/ci-wait/injection.js +13 -0
- package/dist/ci-wait/injection.js.map +1 -0
- package/dist/ci-wait/mcp.d.ts +3 -0
- package/dist/ci-wait/mcp.js +30 -0
- package/dist/ci-wait/mcp.js.map +1 -0
- package/dist/ci-wait/merge-progress.d.ts +84 -0
- package/dist/ci-wait/merge-progress.js +50 -0
- package/dist/ci-wait/merge-progress.js.map +1 -0
- package/dist/ci-wait/progress.d.ts +56 -0
- package/dist/ci-wait/progress.js +100 -0
- package/dist/ci-wait/progress.js.map +1 -0
- package/dist/ci-wait/resources.d.ts +9 -0
- package/dist/ci-wait/resources.js +46 -0
- package/dist/ci-wait/resources.js.map +1 -0
- package/dist/ci-wait/supervisor.d.ts +47 -0
- package/dist/ci-wait/supervisor.js +334 -0
- package/dist/ci-wait/supervisor.js.map +1 -0
- package/dist/ci-wait/text.d.ts +2 -0
- package/dist/ci-wait/text.js +5 -0
- package/dist/ci-wait/text.js.map +1 -0
- package/dist/ci-wait/tools.d.ts +845 -0
- package/dist/ci-wait/tools.js +232 -0
- package/dist/ci-wait/tools.js.map +1 -0
- package/dist/cli-dispatch.d.ts +33 -0
- package/dist/cli-dispatch.js +239 -0
- package/dist/cli-dispatch.js.map +1 -0
- package/dist/config.d.ts +117 -0
- package/dist/config.js +343 -0
- package/dist/config.js.map +1 -0
- package/dist/contract/active-provider.d.ts +12 -0
- package/dist/contract/activity.d.ts +1478 -0
- package/dist/contract/agent-config.d.ts +160 -0
- package/dist/contract/agent-profiles.d.ts +369 -0
- package/dist/contract/application-update.d.ts +32 -0
- package/dist/contract/artifacts.d.ts +100 -0
- package/dist/contract/ask-schema.d.ts +50 -0
- package/dist/contract/ask.d.ts +11 -0
- package/dist/contract/attachments.d.ts +35 -0
- package/dist/contract/attention.d.ts +99 -0
- package/dist/contract/automation-requests.d.ts +314 -0
- package/dist/contract/automation-schedule.d.ts +89 -0
- package/dist/contract/automation-storage.d.ts +518 -0
- package/dist/contract/automations.d.ts +1560 -0
- package/dist/contract/ci-wait.d.ts +281 -0
- package/dist/contract/config-requests.d.ts +36 -0
- package/dist/contract/control-locations.d.ts +10 -0
- package/dist/contract/conversations.d.ts +415 -0
- package/dist/contract/defined.d.ts +8 -0
- package/dist/contract/delegation.d.ts +2168 -0
- package/dist/contract/discovery.d.ts +228 -0
- package/dist/contract/effort.d.ts +18 -0
- package/dist/contract/events.d.ts +324 -0
- package/dist/contract/github-requests.d.ts +26 -0
- package/dist/contract/github.d.ts +732 -0
- package/dist/contract/handoff.d.ts +43 -0
- package/dist/contract/health.d.ts +128 -0
- package/dist/contract/home-recovery.d.ts +71 -0
- package/dist/contract/image-path.d.ts +6 -0
- package/dist/contract/index.d.ts +68 -0
- package/dist/contract/index.js +6709 -0
- package/dist/contract/live-coordination.d.ts +164 -0
- package/dist/contract/live-limits.d.ts +8 -0
- package/dist/contract/live.d.ts +123 -0
- package/dist/contract/pending-ask.d.ts +58 -0
- package/dist/contract/per-runner-optional-strings.d.ts +10 -0
- package/dist/contract/permissions.d.ts +54 -0
- package/dist/contract/preview.d.ts +568 -0
- package/dist/contract/project-limits.d.ts +35 -0
- package/dist/contract/projects.d.ts +716 -0
- package/dist/contract/provider-requests.d.ts +77 -0
- package/dist/contract/query-requests.d.ts +52 -0
- package/dist/contract/repo-requests.d.ts +12 -0
- package/dist/contract/repo.d.ts +515 -0
- package/dist/contract/report-title.d.ts +3 -0
- package/dist/contract/reports.d.ts +101 -0
- package/dist/contract/run-labels.d.ts +8 -0
- package/dist/contract/run-limits.d.ts +8 -0
- package/dist/contract/run-predicates.d.ts +87 -0
- package/dist/contract/run-requests.d.ts +33 -0
- package/dist/contract/run-search.d.ts +193 -0
- package/dist/contract/runs.d.ts +7108 -0
- package/dist/contract/scheduled-tasks.d.ts +188 -0
- package/dist/contract/self-update.d.ts +255 -0
- package/dist/contract/skill-sources.d.ts +125 -0
- package/dist/contract/skills.d.ts +56 -0
- package/dist/contract/task-options.d.ts +18 -0
- package/dist/contract/team-skill-ref.d.ts +10 -0
- package/dist/contract/tool-display.d.ts +25 -0
- package/dist/contract/ui-state-requests.d.ts +60 -0
- package/dist/contract/version.d.ts +3 -0
- package/dist/contract/voice.d.ts +213 -0
- package/dist/contract/waits.d.ts +1996 -0
- package/dist/contract/workflow-file.d.ts +37 -0
- package/dist/contract/workflow-requests.d.ts +7 -0
- package/dist/contract/workflows.d.ts +250 -0
- package/dist/contract/workspace-events.d.ts +410 -0
- package/dist/contract/workspace.d.ts +631 -0
- package/dist/contract/zoned-time.d.ts +26 -0
- package/dist/core/agent-env.d.ts +34 -0
- package/dist/core/agent-env.js +411 -0
- package/dist/core/agent-env.js.map +1 -0
- package/dist/core/agent-model-policy.d.ts +11 -0
- package/dist/core/agent-model-policy.js +38 -0
- package/dist/core/agent-model-policy.js.map +1 -0
- package/dist/core/agent-profiles.d.ts +50 -0
- package/dist/core/agent-profiles.js +105 -0
- package/dist/core/agent-profiles.js.map +1 -0
- package/dist/core/agent-runner.d.ts +425 -0
- package/dist/core/agent-runner.js +98 -0
- package/dist/core/agent-runner.js.map +1 -0
- package/dist/core/ask.d.ts +26 -0
- package/dist/core/ask.js +35 -0
- package/dist/core/ask.js.map +1 -0
- package/dist/core/backend-detect.d.ts +18 -0
- package/dist/core/backend-detect.js +216 -0
- package/dist/core/backend-detect.js.map +1 -0
- package/dist/core/claude-cli-runner.d.ts +85 -0
- package/dist/core/claude-cli-runner.js +899 -0
- package/dist/core/claude-cli-runner.js.map +1 -0
- package/dist/core/claude-executable.d.ts +2 -0
- package/dist/core/claude-executable.js +15 -0
- package/dist/core/claude-executable.js.map +1 -0
- package/dist/core/claude-model-catalog.d.ts +16 -0
- package/dist/core/claude-model-catalog.js +198 -0
- package/dist/core/claude-model-catalog.js.map +1 -0
- package/dist/core/claude-stream.d.ts +38 -0
- package/dist/core/claude-stream.js +77 -0
- package/dist/core/claude-stream.js.map +1 -0
- package/dist/core/claude-ui-mapper.d.ts +88 -0
- package/dist/core/claude-ui-mapper.js +851 -0
- package/dist/core/claude-ui-mapper.js.map +1 -0
- package/dist/core/codex-app-server-runner.d.ts +76 -0
- package/dist/core/codex-app-server-runner.js +1271 -0
- package/dist/core/codex-app-server-runner.js.map +1 -0
- package/dist/core/codex-app-server-transport.d.ts +52 -0
- package/dist/core/codex-app-server-transport.js +200 -0
- package/dist/core/codex-app-server-transport.js.map +1 -0
- package/dist/core/codex-approvals.d.ts +12 -0
- package/dist/core/codex-approvals.js +180 -0
- package/dist/core/codex-approvals.js.map +1 -0
- package/dist/core/codex-hook-mapper.d.ts +15 -0
- package/dist/core/codex-hook-mapper.js +73 -0
- package/dist/core/codex-hook-mapper.js.map +1 -0
- package/dist/core/codex-model-catalog.d.ts +10 -0
- package/dist/core/codex-model-catalog.js +110 -0
- package/dist/core/codex-model-catalog.js.map +1 -0
- package/dist/core/codex-native-frames.d.ts +35 -0
- package/dist/core/codex-native-frames.js +80 -0
- package/dist/core/codex-native-frames.js.map +1 -0
- package/dist/core/codex-permissions.d.ts +6 -0
- package/dist/core/codex-permissions.js +27 -0
- package/dist/core/codex-permissions.js.map +1 -0
- package/dist/core/codex-stream-error.d.ts +2 -0
- package/dist/core/codex-stream-error.js +12 -0
- package/dist/core/codex-stream-error.js.map +1 -0
- package/dist/core/codex-turn-outcome.d.ts +10 -0
- package/dist/core/codex-turn-outcome.js +35 -0
- package/dist/core/codex-turn-outcome.js.map +1 -0
- package/dist/core/codex-ui-mapper-state.d.ts +84 -0
- package/dist/core/codex-ui-mapper-state.js +8 -0
- package/dist/core/codex-ui-mapper-state.js.map +1 -0
- package/dist/core/codex-ui-mapper.d.ts +44 -0
- package/dist/core/codex-ui-mapper.js +799 -0
- package/dist/core/codex-ui-mapper.js.map +1 -0
- package/dist/core/cursor-cli-flags.d.ts +19 -0
- package/dist/core/cursor-cli-flags.js +47 -0
- package/dist/core/cursor-cli-flags.js.map +1 -0
- package/dist/core/cursor-config-options.d.ts +18 -0
- package/dist/core/cursor-config-options.js +31 -0
- package/dist/core/cursor-config-options.js.map +1 -0
- package/dist/core/cursor-model-catalog.d.ts +50 -0
- package/dist/core/cursor-model-catalog.js +306 -0
- package/dist/core/cursor-model-catalog.js.map +1 -0
- package/dist/core/cursor-print-capabilities.d.ts +14 -0
- package/dist/core/cursor-print-capabilities.js +169 -0
- package/dist/core/cursor-print-capabilities.js.map +1 -0
- package/dist/core/cursor-print-process.d.ts +31 -0
- package/dist/core/cursor-print-process.js +117 -0
- package/dist/core/cursor-print-process.js.map +1 -0
- package/dist/core/cursor-print-runner.d.ts +43 -0
- package/dist/core/cursor-print-runner.js +574 -0
- package/dist/core/cursor-print-runner.js.map +1 -0
- package/dist/core/cursor-print-tool-catalog.d.ts +3 -0
- package/dist/core/cursor-print-tool-catalog.js +13 -0
- package/dist/core/cursor-print-tool-catalog.js.map +1 -0
- package/dist/core/cursor-print-ui-mapper.d.ts +47 -0
- package/dist/core/cursor-print-ui-mapper.js +574 -0
- package/dist/core/cursor-print-ui-mapper.js.map +1 -0
- package/dist/core/cursor-provider-error.d.ts +9 -0
- package/dist/core/cursor-provider-error.js +15 -0
- package/dist/core/cursor-provider-error.js.map +1 -0
- package/dist/core/cursor-runner.d.ts +46 -0
- package/dist/core/cursor-runner.js +144 -0
- package/dist/core/cursor-runner.js.map +1 -0
- package/dist/core/defined.d.ts +1 -0
- package/dist/core/defined.js +2 -0
- package/dist/core/defined.js.map +1 -0
- package/dist/core/disclaim-spawn.d.ts +11 -0
- package/dist/core/disclaim-spawn.js +60 -0
- package/dist/core/disclaim-spawn.js.map +1 -0
- package/dist/core/edit-write-key.d.ts +2 -0
- package/dist/core/edit-write-key.js +6 -0
- package/dist/core/edit-write-key.js.map +1 -0
- package/dist/core/hook-items.d.ts +14 -0
- package/dist/core/hook-items.js +13 -0
- package/dist/core/hook-items.js.map +1 -0
- package/dist/core/host-model-catalog.d.ts +7 -0
- package/dist/core/host-model-catalog.js +21 -0
- package/dist/core/host-model-catalog.js.map +1 -0
- package/dist/core/input-submissions.d.ts +14 -0
- package/dist/core/input-submissions.js +26 -0
- package/dist/core/input-submissions.js.map +1 -0
- package/dist/core/managed-session.d.ts +6 -0
- package/dist/core/managed-session.js +116 -0
- package/dist/core/managed-session.js.map +1 -0
- package/dist/core/model-discovery-options.d.ts +8 -0
- package/dist/core/model-discovery-options.js +2 -0
- package/dist/core/model-discovery-options.js.map +1 -0
- package/dist/core/model-identity.d.ts +108 -0
- package/dist/core/model-identity.js +137 -0
- package/dist/core/model-identity.js.map +1 -0
- package/dist/core/model-presets.d.ts +10 -0
- package/dist/core/model-presets.js +77 -0
- package/dist/core/model-presets.js.map +1 -0
- package/dist/core/model-probe-teardown.d.ts +4 -0
- package/dist/core/model-probe-teardown.js +20 -0
- package/dist/core/model-probe-teardown.js.map +1 -0
- package/dist/core/ndjson.d.ts +6 -0
- package/dist/core/ndjson.js +23 -0
- package/dist/core/ndjson.js.map +1 -0
- package/dist/core/omp-model-catalog.d.ts +39 -0
- package/dist/core/omp-model-catalog.js +183 -0
- package/dist/core/omp-model-catalog.js.map +1 -0
- package/dist/core/omp-runner.d.ts +86 -0
- package/dist/core/omp-runner.js +818 -0
- package/dist/core/omp-runner.js.map +1 -0
- package/dist/core/omp-subagent-rows.d.ts +21 -0
- package/dist/core/omp-subagent-rows.js +99 -0
- package/dist/core/omp-subagent-rows.js.map +1 -0
- package/dist/core/omp-ui-mapper.d.ts +112 -0
- package/dist/core/omp-ui-mapper.js +807 -0
- package/dist/core/omp-ui-mapper.js.map +1 -0
- package/dist/core/opencode-model-catalog.d.ts +27 -0
- package/dist/core/opencode-model-catalog.js +189 -0
- package/dist/core/opencode-model-catalog.js.map +1 -0
- package/dist/core/opencode-permissions.d.ts +52 -0
- package/dist/core/opencode-permissions.js +101 -0
- package/dist/core/opencode-permissions.js.map +1 -0
- package/dist/core/opencode-runtime-config.d.ts +9 -0
- package/dist/core/opencode-runtime-config.js +26 -0
- package/dist/core/opencode-runtime-config.js.map +1 -0
- package/dist/core/opencode-server-runner.d.ts +75 -0
- package/dist/core/opencode-server-runner.js +1690 -0
- package/dist/core/opencode-server-runner.js.map +1 -0
- package/dist/core/opencode-session-error.d.ts +19 -0
- package/dist/core/opencode-session-error.js +42 -0
- package/dist/core/opencode-session-error.js.map +1 -0
- package/dist/core/opencode-task-scope.d.ts +9 -0
- package/dist/core/opencode-task-scope.js +19 -0
- package/dist/core/opencode-task-scope.js.map +1 -0
- package/dist/core/opencode-ui-mapper-state.d.ts +82 -0
- package/dist/core/opencode-ui-mapper-state.js +7 -0
- package/dist/core/opencode-ui-mapper-state.js.map +1 -0
- package/dist/core/opencode-ui-mapper.d.ts +59 -0
- package/dist/core/opencode-ui-mapper.js +724 -0
- package/dist/core/opencode-ui-mapper.js.map +1 -0
- package/dist/core/opencode-usage.d.ts +32 -0
- package/dist/core/opencode-usage.js +105 -0
- package/dist/core/opencode-usage.js.map +1 -0
- package/dist/core/pi-model-catalog.d.ts +34 -0
- package/dist/core/pi-model-catalog.js +247 -0
- package/dist/core/pi-model-catalog.js.map +1 -0
- package/dist/core/pi-rpc-turn.d.ts +179 -0
- package/dist/core/pi-rpc-turn.js +370 -0
- package/dist/core/pi-rpc-turn.js.map +1 -0
- package/dist/core/pi-rpc-wire.d.ts +31 -0
- package/dist/core/pi-rpc-wire.js +88 -0
- package/dist/core/pi-rpc-wire.js.map +1 -0
- package/dist/core/pi-runner.d.ts +58 -0
- package/dist/core/pi-runner.js +587 -0
- package/dist/core/pi-runner.js.map +1 -0
- package/dist/core/pi-ui-mapper.d.ts +52 -0
- package/dist/core/pi-ui-mapper.js +408 -0
- package/dist/core/pi-ui-mapper.js.map +1 -0
- package/dist/core/process-usage.d.ts +74 -0
- package/dist/core/process-usage.js +219 -0
- package/dist/core/process-usage.js.map +1 -0
- package/dist/core/product-env.d.ts +21 -0
- package/dist/core/product-env.js +38 -0
- package/dist/core/product-env.js.map +1 -0
- package/dist/core/provider-auth.d.ts +168 -0
- package/dist/core/provider-auth.js +661 -0
- package/dist/core/provider-auth.js.map +1 -0
- package/dist/core/provider-availability.d.ts +3 -0
- package/dist/core/provider-availability.js +14 -0
- package/dist/core/provider-availability.js.map +1 -0
- package/dist/core/runner-factory.d.ts +11 -0
- package/dist/core/runner-factory.js +36 -0
- package/dist/core/runner-factory.js.map +1 -0
- package/dist/core/runner-facts.d.ts +135 -0
- package/dist/core/runner-facts.js +59 -0
- package/dist/core/runner-facts.js.map +1 -0
- package/dist/core/runner-model-catalog.d.ts +34 -0
- package/dist/core/runner-model-catalog.js +109 -0
- package/dist/core/runner-model-catalog.js.map +1 -0
- package/dist/core/runner-runtime.d.ts +40 -0
- package/dist/core/runner-runtime.js +88 -0
- package/dist/core/runner-runtime.js.map +1 -0
- package/dist/core/runner-stderr.d.ts +2 -0
- package/dist/core/runner-stderr.js +20 -0
- package/dist/core/runner-stderr.js.map +1 -0
- package/dist/core/runner-tool-grants.d.ts +19 -0
- package/dist/core/runner-tool-grants.js +54 -0
- package/dist/core/runner-tool-grants.js.map +1 -0
- package/dist/core/secret-redaction.d.ts +20 -0
- package/dist/core/secret-redaction.js +95 -0
- package/dist/core/secret-redaction.js.map +1 -0
- package/dist/core/session-process.d.ts +43 -0
- package/dist/core/session-process.js +363 -0
- package/dist/core/session-process.js.map +1 -0
- package/dist/core/shell-env.d.ts +17 -0
- package/dist/core/shell-env.js +51 -0
- package/dist/core/shell-env.js.map +1 -0
- package/dist/core/ui-events.d.ts +356 -0
- package/dist/core/ui-events.js +13 -0
- package/dist/core/ui-events.js.map +1 -0
- package/dist/core/usage-limit.d.ts +42 -0
- package/dist/core/usage-limit.js +152 -0
- package/dist/core/usage-limit.js.map +1 -0
- package/dist/core/usage.d.ts +11 -0
- package/dist/core/usage.js +15 -0
- package/dist/core/usage.js.map +1 -0
- package/dist/core/v1-text-coalescer.d.ts +36 -0
- package/dist/core/v1-text-coalescer.js +72 -0
- package/dist/core/v1-text-coalescer.js.map +1 -0
- package/dist/data-gitignore.d.ts +6 -0
- package/dist/data-gitignore.js +80 -0
- package/dist/data-gitignore.js.map +1 -0
- package/dist/delegation/capacity.d.ts +15 -0
- package/dist/delegation/capacity.js +30 -0
- package/dist/delegation/capacity.js.map +1 -0
- package/dist/delegation/cli.d.ts +5 -0
- package/dist/delegation/cli.js +572 -0
- package/dist/delegation/cli.js.map +1 -0
- package/dist/delegation/context.d.ts +40 -0
- package/dist/delegation/context.js +398 -0
- package/dist/delegation/context.js.map +1 -0
- package/dist/delegation/conversation-send.d.ts +64 -0
- package/dist/delegation/conversation-send.js +74 -0
- package/dist/delegation/conversation-send.js.map +1 -0
- package/dist/delegation/conversations.d.ts +2186 -0
- package/dist/delegation/conversations.js +285 -0
- package/dist/delegation/conversations.js.map +1 -0
- package/dist/delegation/credentials.d.ts +21 -0
- package/dist/delegation/credentials.js +66 -0
- package/dist/delegation/credentials.js.map +1 -0
- package/dist/delegation/destroy-observation.d.ts +42 -0
- package/dist/delegation/destroy-observation.js +115 -0
- package/dist/delegation/destroy-observation.js.map +1 -0
- package/dist/delegation/effort.d.ts +1 -0
- package/dist/delegation/effort.js +11 -0
- package/dist/delegation/effort.js.map +1 -0
- package/dist/delegation/execution-identity.d.ts +257 -0
- package/dist/delegation/execution-identity.js +253 -0
- package/dist/delegation/execution-identity.js.map +1 -0
- package/dist/delegation/execution-settings.d.ts +11 -0
- package/dist/delegation/execution-settings.js +65 -0
- package/dist/delegation/execution-settings.js.map +1 -0
- package/dist/delegation/idle-test-app.d.ts +4 -0
- package/dist/delegation/idle-test-app.js +186 -0
- package/dist/delegation/idle-test-app.js.map +1 -0
- package/dist/delegation/input.d.ts +12 -0
- package/dist/delegation/input.js +50 -0
- package/dist/delegation/input.js.map +1 -0
- package/dist/delegation/park-notice.d.ts +45 -0
- package/dist/delegation/park-notice.js +81 -0
- package/dist/delegation/park-notice.js.map +1 -0
- package/dist/delegation/policy.d.ts +27 -0
- package/dist/delegation/policy.js +110 -0
- package/dist/delegation/policy.js.map +1 -0
- package/dist/delegation/process-liveness.d.ts +98 -0
- package/dist/delegation/process-liveness.js +213 -0
- package/dist/delegation/process-liveness.js.map +1 -0
- package/dist/delegation/provision.d.ts +36 -0
- package/dist/delegation/provision.js +218 -0
- package/dist/delegation/provision.js.map +1 -0
- package/dist/delegation/questions.d.ts +24 -0
- package/dist/delegation/questions.js +56 -0
- package/dist/delegation/questions.js.map +1 -0
- package/dist/delegation/readiness.d.ts +13 -0
- package/dist/delegation/readiness.js +19 -0
- package/dist/delegation/readiness.js.map +1 -0
- package/dist/delegation/results.d.ts +13 -0
- package/dist/delegation/results.js +153 -0
- package/dist/delegation/results.js.map +1 -0
- package/dist/delegation/retry-backoff.d.ts +31 -0
- package/dist/delegation/retry-backoff.js +26 -0
- package/dist/delegation/retry-backoff.js.map +1 -0
- package/dist/delegation/routes.d.ts +1017 -0
- package/dist/delegation/routes.js +85 -0
- package/dist/delegation/routes.js.map +1 -0
- package/dist/delegation/scratch-cleanup.d.ts +33 -0
- package/dist/delegation/scratch-cleanup.js +155 -0
- package/dist/delegation/scratch-cleanup.js.map +1 -0
- package/dist/delegation/service.d.ts +264 -0
- package/dist/delegation/service.js +807 -0
- package/dist/delegation/service.js.map +1 -0
- package/dist/delegation/task-discovery.d.ts +6 -0
- package/dist/delegation/task-discovery.js +27 -0
- package/dist/delegation/task-discovery.js.map +1 -0
- package/dist/delegation/transport.d.ts +995 -0
- package/dist/delegation/transport.js +22 -0
- package/dist/delegation/transport.js.map +1 -0
- package/dist/delegation/wait.d.ts +7 -0
- package/dist/delegation/wait.js +44 -0
- package/dist/delegation/wait.js.map +1 -0
- package/dist/delegation/windows-test-app.d.ts +5 -0
- package/dist/delegation/windows-test-app.js +64 -0
- package/dist/delegation/windows-test-app.js.map +1 -0
- package/dist/delegation/windows-workspace-identity.d.ts +3 -0
- package/dist/delegation/windows-workspace-identity.js +23 -0
- package/dist/delegation/windows-workspace-identity.js.map +1 -0
- package/dist/delegation/worker-cleanup.d.ts +53 -0
- package/dist/delegation/worker-cleanup.js +330 -0
- package/dist/delegation/worker-cleanup.js.map +1 -0
- package/dist/delegation/workspace.d.ts +40 -0
- package/dist/delegation/workspace.js +592 -0
- package/dist/delegation/workspace.js.map +1 -0
- package/dist/detached-process.d.ts +134 -0
- package/dist/detached-process.js +460 -0
- package/dist/detached-process.js.map +1 -0
- package/dist/discovery/catalog.d.ts +16 -0
- package/dist/discovery/catalog.js +31 -0
- package/dist/discovery/catalog.js.map +1 -0
- package/dist/discovery/cli.d.ts +8 -0
- package/dist/discovery/cli.js +122 -0
- package/dist/discovery/cli.js.map +1 -0
- package/dist/git-command.d.ts +7 -0
- package/dist/git-command.js +8 -0
- package/dist/git-command.js.map +1 -0
- package/dist/git-diff-base.d.ts +41 -0
- package/dist/git-diff-base.js +116 -0
- package/dist/git-diff-base.js.map +1 -0
- package/dist/git-index-copy.d.ts +4 -0
- package/dist/git-index-copy.js +10 -0
- package/dist/git-index-copy.js.map +1 -0
- package/dist/git-private-index.d.ts +11 -0
- package/dist/git-private-index.js +51 -0
- package/dist/git-private-index.js.map +1 -0
- package/dist/git-refs.d.ts +11 -0
- package/dist/git-refs.js +14 -0
- package/dist/git-refs.js.map +1 -0
- package/dist/git-worktree-lock-helper.d.ts +7 -0
- package/dist/git-worktree-lock-helper.js +178 -0
- package/dist/git-worktree-lock-helper.js.map +1 -0
- package/dist/git-worktree-lock.d.ts +17 -0
- package/dist/git-worktree-lock.js +90 -0
- package/dist/git-worktree-lock.js.map +1 -0
- package/dist/git-worktree-release.d.ts +20 -0
- package/dist/git-worktree-release.js +27 -0
- package/dist/git-worktree-release.js.map +1 -0
- package/dist/git-worktree.d.ts +148 -0
- package/dist/git-worktree.js +858 -0
- package/dist/git-worktree.js.map +1 -0
- package/dist/handoff.d.ts +72 -0
- package/dist/handoff.js +213 -0
- package/dist/handoff.js.map +1 -0
- package/dist/headless-run.d.ts +48 -0
- package/dist/headless-run.js +158 -0
- package/dist/headless-run.js.map +1 -0
- package/dist/home/boundary.d.ts +5 -0
- package/dist/home/boundary.js +76 -0
- package/dist/home/boundary.js.map +1 -0
- package/dist/home/changes.d.ts +3 -0
- package/dist/home/changes.js +11 -0
- package/dist/home/changes.js.map +1 -0
- package/dist/home/command.d.ts +9 -0
- package/dist/home/command.js +37 -0
- package/dist/home/command.js.map +1 -0
- package/dist/home/deprecation.d.ts +9 -0
- package/dist/home/deprecation.js +17 -0
- package/dist/home/deprecation.js.map +1 -0
- package/dist/home/display.d.ts +4 -0
- package/dist/home/display.js +11 -0
- package/dist/home/display.js.map +1 -0
- package/dist/home/entry-authorization.d.ts +17 -0
- package/dist/home/entry-authorization.js +39 -0
- package/dist/home/entry-authorization.js.map +1 -0
- package/dist/home/entry.d.ts +16 -0
- package/dist/home/entry.js +96 -0
- package/dist/home/entry.js.map +1 -0
- package/dist/home/file-location.d.ts +14 -0
- package/dist/home/file-location.js +24 -0
- package/dist/home/file-location.js.map +1 -0
- package/dist/home/home.d.ts +42 -0
- package/dist/home/home.js +70 -0
- package/dist/home/home.js.map +1 -0
- package/dist/home/identity.d.ts +22 -0
- package/dist/home/identity.js +25 -0
- package/dist/home/identity.js.map +1 -0
- package/dist/home/install-marker.d.ts +27 -0
- package/dist/home/install-marker.js +78 -0
- package/dist/home/install-marker.js.map +1 -0
- package/dist/home/kind-roots.d.ts +10 -0
- package/dist/home/kind-roots.js +36 -0
- package/dist/home/kind-roots.js.map +1 -0
- package/dist/home/leases.d.ts +14 -0
- package/dist/home/leases.js +55 -0
- package/dist/home/leases.js.map +1 -0
- package/dist/home/legacy-account-paths.d.ts +4 -0
- package/dist/home/legacy-account-paths.js +41 -0
- package/dist/home/legacy-account-paths.js.map +1 -0
- package/dist/home/legacy-merge.d.ts +3 -0
- package/dist/home/legacy-merge.js +45 -0
- package/dist/home/legacy-merge.js.map +1 -0
- package/dist/home/legacy-recovery.d.ts +5 -0
- package/dist/home/legacy-recovery.js +154 -0
- package/dist/home/legacy-recovery.js.map +1 -0
- package/dist/home/legacy-source.d.ts +15 -0
- package/dist/home/legacy-source.js +57 -0
- package/dist/home/legacy-source.js.map +1 -0
- package/dist/home/migrate.d.ts +19 -0
- package/dist/home/migrate.js +322 -0
- package/dist/home/migrate.js.map +1 -0
- package/dist/home/migration-account-source.d.ts +2 -0
- package/dist/home/migration-account-source.js +17 -0
- package/dist/home/migration-account-source.js.map +1 -0
- package/dist/home/migration-accounts.d.ts +23 -0
- package/dist/home/migration-accounts.js +174 -0
- package/dist/home/migration-accounts.js.map +1 -0
- package/dist/home/migration-boot.d.ts +23 -0
- package/dist/home/migration-boot.js +84 -0
- package/dist/home/migration-boot.js.map +1 -0
- package/dist/home/migration-claim.d.ts +4 -0
- package/dist/home/migration-claim.js +69 -0
- package/dist/home/migration-claim.js.map +1 -0
- package/dist/home/migration-cli.d.ts +3 -0
- package/dist/home/migration-cli.js +64 -0
- package/dist/home/migration-cli.js.map +1 -0
- package/dist/home/migration-files.d.ts +14 -0
- package/dist/home/migration-files.js +192 -0
- package/dist/home/migration-files.js.map +1 -0
- package/dist/home/migration-guard.d.ts +2 -0
- package/dist/home/migration-guard.js +20 -0
- package/dist/home/migration-guard.js.map +1 -0
- package/dist/home/migration-plan.d.ts +20 -0
- package/dist/home/migration-plan.js +71 -0
- package/dist/home/migration-plan.js.map +1 -0
- package/dist/home/migration-record.d.ts +79 -0
- package/dist/home/migration-record.js +39 -0
- package/dist/home/migration-record.js.map +1 -0
- package/dist/home/private-files.d.ts +13 -0
- package/dist/home/private-files.js +113 -0
- package/dist/home/private-files.js.map +1 -0
- package/dist/home/process-identity.d.ts +2 -0
- package/dist/home/process-identity.js +8 -0
- package/dist/home/process-identity.js.map +1 -0
- package/dist/home/protected-roots.d.ts +25 -0
- package/dist/home/protected-roots.js +91 -0
- package/dist/home/protected-roots.js.map +1 -0
- package/dist/home/recovery-watch.d.ts +3 -0
- package/dist/home/recovery-watch.js +75 -0
- package/dist/home/recovery-watch.js.map +1 -0
- package/dist/home/recovery.d.ts +10 -0
- package/dist/home/recovery.js +94 -0
- package/dist/home/recovery.js.map +1 -0
- package/dist/home/registry-content.d.ts +2 -0
- package/dist/home/registry-content.js +17 -0
- package/dist/home/registry-content.js.map +1 -0
- package/dist/home/reset-detection.d.ts +5 -0
- package/dist/home/reset-detection.js +22 -0
- package/dist/home/reset-detection.js.map +1 -0
- package/dist/home/resolve.d.ts +10 -0
- package/dist/home/resolve.js +28 -0
- package/dist/home/resolve.js.map +1 -0
- package/dist/home/store.d.ts +48 -0
- package/dist/home/store.js +324 -0
- package/dist/home/store.js.map +1 -0
- package/dist/home/switch.d.ts +2 -0
- package/dist/home/switch.js +3 -0
- package/dist/home/switch.js.map +1 -0
- package/dist/home/version-log.d.ts +48 -0
- package/dist/home/version-log.js +216 -0
- package/dist/home/version-log.js.map +1 -0
- package/dist/home/write-lock.d.ts +6 -0
- package/dist/home/write-lock.js +96 -0
- package/dist/home/write-lock.js.map +1 -0
- package/dist/hsq.d.ts +2 -0
- package/dist/hsq.js +3 -0
- package/dist/hsq.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +123 -0
- package/dist/index.js.map +1 -0
- package/dist/install-as-command.d.ts +32 -0
- package/dist/install-as-command.js +55 -0
- package/dist/install-as-command.js.map +1 -0
- package/dist/jobs/cli.d.ts +2 -0
- package/dist/jobs/cli.js +53 -0
- package/dist/jobs/cli.js.map +1 -0
- package/dist/jobs/command.d.ts +9 -0
- package/dist/jobs/command.js +19 -0
- package/dist/jobs/command.js.map +1 -0
- package/dist/jobs/job.d.ts +77 -0
- package/dist/jobs/job.js +252 -0
- package/dist/jobs/job.js.map +1 -0
- package/dist/merge-observations.d.ts +13 -0
- package/dist/merge-observations.js +55 -0
- package/dist/merge-observations.js.map +1 -0
- package/dist/merged-streams.d.ts +13 -0
- package/dist/merged-streams.js +33 -0
- package/dist/merged-streams.js.map +1 -0
- package/dist/open-url.d.ts +2 -0
- package/dist/open-url.js +10 -0
- package/dist/open-url.js.map +1 -0
- package/dist/pack-check.d.ts +17 -0
- package/dist/pack-check.js +27 -0
- package/dist/pack-check.js.map +1 -0
- package/dist/paths.d.ts +118 -0
- package/dist/paths.js +192 -0
- package/dist/paths.js.map +1 -0
- package/dist/planner.d.ts +30 -0
- package/dist/planner.js +270 -0
- package/dist/planner.js.map +1 -0
- package/dist/preview/agent-address.d.ts +34 -0
- package/dist/preview/agent-address.js +52 -0
- package/dist/preview/agent-address.js.map +1 -0
- package/dist/preview/agent-marker.d.ts +17 -0
- package/dist/preview/agent-marker.js +71 -0
- package/dist/preview/agent-marker.js.map +1 -0
- package/dist/preview/browser-launch.d.ts +28 -0
- package/dist/preview/browser-launch.js +64 -0
- package/dist/preview/browser-launch.js.map +1 -0
- package/dist/preview/cdp-proxy.d.ts +54 -0
- package/dist/preview/cdp-proxy.js +152 -0
- package/dist/preview/cdp-proxy.js.map +1 -0
- package/dist/preview/cdp.d.ts +49 -0
- package/dist/preview/cdp.js +167 -0
- package/dist/preview/cdp.js.map +1 -0
- package/dist/preview/chromium-launch-progress.d.ts +10 -0
- package/dist/preview/chromium-launch-progress.js +48 -0
- package/dist/preview/chromium-launch-progress.js.map +1 -0
- package/dist/preview/chromium.d.ts +91 -0
- package/dist/preview/chromium.js +500 -0
- package/dist/preview/chromium.js.map +1 -0
- package/dist/preview/density.d.ts +17 -0
- package/dist/preview/density.js +62 -0
- package/dist/preview/density.js.map +1 -0
- package/dist/preview/dev-server.d.ts +68 -0
- package/dist/preview/dev-server.js +318 -0
- package/dist/preview/dev-server.js.map +1 -0
- package/dist/preview/host.d.ts +215 -0
- package/dist/preview/host.js +954 -0
- package/dist/preview/host.js.map +1 -0
- package/dist/preview/registration.d.ts +68 -0
- package/dist/preview/registration.js +111 -0
- package/dist/preview/registration.js.map +1 -0
- package/dist/preview/run-tools.d.ts +9 -0
- package/dist/preview/run-tools.js +72 -0
- package/dist/preview/run-tools.js.map +1 -0
- package/dist/preview/session.d.ts +139 -0
- package/dist/preview/session.js +479 -0
- package/dist/preview/session.js.map +1 -0
- package/dist/preview/url.d.ts +6 -0
- package/dist/preview/url.js +17 -0
- package/dist/preview/url.js.map +1 -0
- package/dist/process-wait/exit-file.d.ts +29 -0
- package/dist/process-wait/exit-file.js +67 -0
- package/dist/process-wait/exit-file.js.map +1 -0
- package/dist/process-wait/supervisor.d.ts +30 -0
- package/dist/process-wait/supervisor.js +71 -0
- package/dist/process-wait/supervisor.js.map +1 -0
- package/dist/project-commands.d.ts +14 -0
- package/dist/project-commands.js +91 -0
- package/dist/project-commands.js.map +1 -0
- package/dist/project-migration/answer.d.ts +23 -0
- package/dist/project-migration/answer.js +37 -0
- package/dist/project-migration/answer.js.map +1 -0
- package/dist/project-migration/auto.d.ts +73 -0
- package/dist/project-migration/auto.js +161 -0
- package/dist/project-migration/auto.js.map +1 -0
- package/dist/project-migration/cli.d.ts +18 -0
- package/dist/project-migration/cli.js +57 -0
- package/dist/project-migration/cli.js.map +1 -0
- package/dist/project-migration/containment.d.ts +52 -0
- package/dist/project-migration/containment.js +200 -0
- package/dist/project-migration/containment.js.map +1 -0
- package/dist/project-migration/durable.d.ts +25 -0
- package/dist/project-migration/durable.js +69 -0
- package/dist/project-migration/durable.js.map +1 -0
- package/dist/project-migration/engine.d.ts +47 -0
- package/dist/project-migration/engine.js +103 -0
- package/dist/project-migration/engine.js.map +1 -0
- package/dist/project-migration/fresh.d.ts +4 -0
- package/dist/project-migration/fresh.js +25 -0
- package/dist/project-migration/fresh.js.map +1 -0
- package/dist/project-migration/journal.d.ts +139 -0
- package/dist/project-migration/journal.js +69 -0
- package/dist/project-migration/journal.js.map +1 -0
- package/dist/project-migration/live.d.ts +48 -0
- package/dist/project-migration/live.js +148 -0
- package/dist/project-migration/live.js.map +1 -0
- package/dist/project-migration/offline.d.ts +25 -0
- package/dist/project-migration/offline.js +54 -0
- package/dist/project-migration/offline.js.map +1 -0
- package/dist/project-migration/plan.d.ts +91 -0
- package/dist/project-migration/plan.js +466 -0
- package/dist/project-migration/plan.js.map +1 -0
- package/dist/project-migration/recovery.d.ts +28 -0
- package/dist/project-migration/recovery.js +78 -0
- package/dist/project-migration/recovery.js.map +1 -0
- package/dist/project-migration/steps.d.ts +18 -0
- package/dist/project-migration/steps.js +312 -0
- package/dist/project-migration/steps.js.map +1 -0
- package/dist/project-paths.d.ts +61 -0
- package/dist/project-paths.js +185 -0
- package/dist/project-paths.js.map +1 -0
- package/dist/release/compatibility.d.ts +12 -0
- package/dist/release/compatibility.js +62 -0
- package/dist/release/compatibility.js.map +1 -0
- package/dist/release/manifests.d.ts +112 -0
- package/dist/release/manifests.js +104 -0
- package/dist/release/manifests.js.map +1 -0
- package/dist/release/publication.d.ts +3 -0
- package/dist/release/publication.js +34 -0
- package/dist/release/publication.js.map +1 -0
- package/dist/release/snapshot.d.ts +67 -0
- package/dist/release/snapshot.js +97 -0
- package/dist/release/snapshot.js.map +1 -0
- package/dist/release/stable.d.ts +38 -0
- package/dist/release/stable.js +55 -0
- package/dist/release/stable.js.map +1 -0
- package/dist/remote-settings-cli.d.ts +24 -0
- package/dist/remote-settings-cli.js +156 -0
- package/dist/remote-settings-cli.js.map +1 -0
- package/dist/remote-settings.d.ts +41 -0
- package/dist/remote-settings.js +110 -0
- package/dist/remote-settings.js.map +1 -0
- package/dist/runs/agent-tmpdir-removal.d.ts +15 -0
- package/dist/runs/agent-tmpdir-removal.js +60 -0
- package/dist/runs/agent-tmpdir-removal.js.map +1 -0
- package/dist/runs/agent-tmpdir.d.ts +119 -0
- package/dist/runs/agent-tmpdir.js +855 -0
- package/dist/runs/agent-tmpdir.js.map +1 -0
- package/dist/runs/archive-family.d.ts +33 -0
- package/dist/runs/archive-family.js +90 -0
- package/dist/runs/archive-family.js.map +1 -0
- package/dist/runs/arm-repo-handle.d.ts +10 -0
- package/dist/runs/arm-repo-handle.js +45 -0
- package/dist/runs/arm-repo-handle.js.map +1 -0
- package/dist/runs/auto-name.d.ts +77 -0
- package/dist/runs/auto-name.js +179 -0
- package/dist/runs/auto-name.js.map +1 -0
- package/dist/runs/claim-families.d.ts +37 -0
- package/dist/runs/claim-families.js +101 -0
- package/dist/runs/claim-families.js.map +1 -0
- package/dist/runs/client-request.d.ts +11 -0
- package/dist/runs/client-request.js +26 -0
- package/dist/runs/client-request.js.map +1 -0
- package/dist/runs/cold-reads.d.ts +40 -0
- package/dist/runs/cold-reads.js +56 -0
- package/dist/runs/cold-reads.js.map +1 -0
- package/dist/runs/conversation-identity.d.ts +19 -0
- package/dist/runs/conversation-identity.js +31 -0
- package/dist/runs/conversation-identity.js.map +1 -0
- package/dist/runs/delegation-state.d.ts +409 -0
- package/dist/runs/delegation-state.js +22 -0
- package/dist/runs/delegation-state.js.map +1 -0
- package/dist/runs/event-history-agent-context.d.ts +15 -0
- package/dist/runs/event-history-agent-context.js +119 -0
- package/dist/runs/event-history-agent-context.js.map +1 -0
- package/dist/runs/event-history-context.d.ts +15 -0
- package/dist/runs/event-history-context.js +109 -0
- package/dist/runs/event-history-context.js.map +1 -0
- package/dist/runs/event-history.d.ts +53 -0
- package/dist/runs/event-history.js +563 -0
- package/dist/runs/event-history.js.map +1 -0
- package/dist/runs/exit-events.d.ts +27 -0
- package/dist/runs/exit-events.js +46 -0
- package/dist/runs/exit-events.js.map +1 -0
- package/dist/runs/history-compressor.d.ts +29 -0
- package/dist/runs/history-compressor.js +116 -0
- package/dist/runs/history-compressor.js.map +1 -0
- package/dist/runs/history-file.d.ts +36 -0
- package/dist/runs/history-file.js +464 -0
- package/dist/runs/history-file.js.map +1 -0
- package/dist/runs/history-stream.d.ts +2 -0
- package/dist/runs/history-stream.js +62 -0
- package/dist/runs/history-stream.js.map +1 -0
- package/dist/runs/legacy-index.d.ts +49 -0
- package/dist/runs/legacy-index.js +156 -0
- package/dist/runs/legacy-index.js.map +1 -0
- package/dist/runs/legacy-run-rows.d.ts +12 -0
- package/dist/runs/legacy-run-rows.js +33 -0
- package/dist/runs/legacy-run-rows.js.map +1 -0
- package/dist/runs/legacy-waits.d.ts +64 -0
- package/dist/runs/legacy-waits.js +335 -0
- package/dist/runs/legacy-waits.js.map +1 -0
- package/dist/runs/live-item-snapshots.d.ts +15 -0
- package/dist/runs/live-item-snapshots.js +95 -0
- package/dist/runs/live-item-snapshots.js.map +1 -0
- package/dist/runs/loaded-run-exits.d.ts +6 -0
- package/dist/runs/loaded-run-exits.js +32 -0
- package/dist/runs/loaded-run-exits.js.map +1 -0
- package/dist/runs/loaded-run-healing.d.ts +3 -0
- package/dist/runs/loaded-run-healing.js +17 -0
- package/dist/runs/loaded-run-healing.js.map +1 -0
- package/dist/runs/outcome-commit.d.ts +119 -0
- package/dist/runs/outcome-commit.js +155 -0
- package/dist/runs/outcome-commit.js.map +1 -0
- package/dist/runs/owned-run-create.d.ts +33 -0
- package/dist/runs/owned-run-create.js +98 -0
- package/dist/runs/owned-run-create.js.map +1 -0
- package/dist/runs/project-run-connection.d.ts +76 -0
- package/dist/runs/project-run-connection.js +287 -0
- package/dist/runs/project-run-connection.js.map +1 -0
- package/dist/runs/project-run-sources.d.ts +21 -0
- package/dist/runs/project-run-sources.js +86 -0
- package/dist/runs/project-run-sources.js.map +1 -0
- package/dist/runs/pull-requests.d.ts +14 -0
- package/dist/runs/pull-requests.js +96 -0
- package/dist/runs/pull-requests.js.map +1 -0
- package/dist/runs/raw-record.d.ts +40 -0
- package/dist/runs/raw-record.js +133 -0
- package/dist/runs/raw-record.js.map +1 -0
- package/dist/runs/record-write-rules.d.ts +129 -0
- package/dist/runs/record-write-rules.js +326 -0
- package/dist/runs/record-write-rules.js.map +1 -0
- package/dist/runs/report-rows.d.ts +36 -0
- package/dist/runs/report-rows.js +102 -0
- package/dist/runs/report-rows.js.map +1 -0
- package/dist/runs/retention.d.ts +91 -0
- package/dist/runs/retention.js +193 -0
- package/dist/runs/retention.js.map +1 -0
- package/dist/runs/review-gate.d.ts +18 -0
- package/dist/runs/review-gate.js +22 -0
- package/dist/runs/review-gate.js.map +1 -0
- package/dist/runs/run-claims.d.ts +30 -0
- package/dist/runs/run-claims.js +52 -0
- package/dist/runs/run-claims.js.map +1 -0
- package/dist/runs/run-database-peer-page.d.ts +12 -0
- package/dist/runs/run-database-peer-page.js +25 -0
- package/dist/runs/run-database-peer-page.js.map +1 -0
- package/dist/runs/run-database-row.d.ts +39 -0
- package/dist/runs/run-database-row.js +83 -0
- package/dist/runs/run-database-row.js.map +1 -0
- package/dist/runs/run-database-version.d.ts +14 -0
- package/dist/runs/run-database-version.js +19 -0
- package/dist/runs/run-database-version.js.map +1 -0
- package/dist/runs/run-database.d.ts +389 -0
- package/dist/runs/run-database.js +957 -0
- package/dist/runs/run-database.js.map +1 -0
- package/dist/runs/run-exits.d.ts +4510 -0
- package/dist/runs/run-exits.js +191 -0
- package/dist/runs/run-exits.js.map +1 -0
- package/dist/runs/run-index.d.ts +36 -0
- package/dist/runs/run-index.js +262 -0
- package/dist/runs/run-index.js.map +1 -0
- package/dist/runs/run-references.d.ts +61 -0
- package/dist/runs/run-references.js +421 -0
- package/dist/runs/run-references.js.map +1 -0
- package/dist/runs/run-row.d.ts +14 -0
- package/dist/runs/run-row.js +56 -0
- package/dist/runs/run-row.js.map +1 -0
- package/dist/runs/run-summary-page.d.ts +36 -0
- package/dist/runs/run-summary-page.js +46 -0
- package/dist/runs/run-summary-page.js.map +1 -0
- package/dist/runs/run-title.d.ts +8 -0
- package/dist/runs/run-title.js +28 -0
- package/dist/runs/run-title.js.map +1 -0
- package/dist/runs/store-open-error.d.ts +24 -0
- package/dist/runs/store-open-error.js +62 -0
- package/dist/runs/store-open-error.js.map +1 -0
- package/dist/runs/store.d.ts +3974 -0
- package/dist/runs/store.js +3516 -0
- package/dist/runs/store.js.map +1 -0
- package/dist/runs/task-markers.d.ts +29 -0
- package/dist/runs/task-markers.js +78 -0
- package/dist/runs/task-markers.js.map +1 -0
- package/dist/runs/task-refs.d.ts +39 -0
- package/dist/runs/task-refs.js +107 -0
- package/dist/runs/task-refs.js.map +1 -0
- package/dist/runs/transcript-facts-fold.d.ts +64 -0
- package/dist/runs/transcript-facts-fold.js +109 -0
- package/dist/runs/transcript-facts-fold.js.map +1 -0
- package/dist/runs/transcript-facts-load.d.ts +11 -0
- package/dist/runs/transcript-facts-load.js +66 -0
- package/dist/runs/transcript-facts-load.js.map +1 -0
- package/dist/runs/transcript-facts-queue.d.ts +30 -0
- package/dist/runs/transcript-facts-queue.js +227 -0
- package/dist/runs/transcript-facts-queue.js.map +1 -0
- package/dist/runs/transcript-facts-worker.d.ts +15 -0
- package/dist/runs/transcript-facts-worker.js +26 -0
- package/dist/runs/transcript-facts-worker.js.map +1 -0
- package/dist/runs/transcript-facts.d.ts +40 -0
- package/dist/runs/transcript-facts.js +193 -0
- package/dist/runs/transcript-facts.js.map +1 -0
- package/dist/runs/ui-event-sink.d.ts +59 -0
- package/dist/runs/ui-event-sink.js +197 -0
- package/dist/runs/ui-event-sink.js.map +1 -0
- package/dist/runs/wait-capacity.d.ts +8 -0
- package/dist/runs/wait-capacity.js +28 -0
- package/dist/runs/wait-capacity.js.map +1 -0
- package/dist/runs/wait-phases.d.ts +4 -0
- package/dist/runs/wait-phases.js +11 -0
- package/dist/runs/wait-phases.js.map +1 -0
- package/dist/runs/wait-registration-write.d.ts +5 -0
- package/dist/runs/wait-registration-write.js +35 -0
- package/dist/runs/wait-registration-write.js.map +1 -0
- package/dist/runs/webhook.d.ts +193 -0
- package/dist/runs/webhook.js +362 -0
- package/dist/runs/webhook.js.map +1 -0
- package/dist/runs/worker-deletion-proof.d.ts +13 -0
- package/dist/runs/worker-deletion-proof.js +13 -0
- package/dist/runs/worker-deletion-proof.js.map +1 -0
- package/dist/runs/worker-execution.d.ts +22 -0
- package/dist/runs/worker-execution.js +30 -0
- package/dist/runs/worker-execution.js.map +1 -0
- package/dist/runs/worker-resource-holders.d.ts +17 -0
- package/dist/runs/worker-resource-holders.js +34 -0
- package/dist/runs/worker-resource-holders.js.map +1 -0
- package/dist/runs/worker-result-commit.d.ts +26 -0
- package/dist/runs/worker-result-commit.js +121 -0
- package/dist/runs/worker-result-commit.js.map +1 -0
- package/dist/self-update/checkouts.d.ts +46 -0
- package/dist/self-update/checkouts.js +284 -0
- package/dist/self-update/checkouts.js.map +1 -0
- package/dist/self-update/cli.d.ts +19 -0
- package/dist/self-update/cli.js +243 -0
- package/dist/self-update/cli.js.map +1 -0
- package/dist/self-update/installer.d.ts +24 -0
- package/dist/self-update/installer.js +139 -0
- package/dist/self-update/installer.js.map +1 -0
- package/dist/self-update/launcher.d.ts +30 -0
- package/dist/self-update/launcher.js +172 -0
- package/dist/self-update/launcher.js.map +1 -0
- package/dist/self-update/layout.d.ts +108 -0
- package/dist/self-update/layout.js +276 -0
- package/dist/self-update/layout.js.map +1 -0
- package/dist/self-update/pulls.d.ts +30 -0
- package/dist/self-update/pulls.js +128 -0
- package/dist/self-update/pulls.js.map +1 -0
- package/dist/self-update/registry.d.ts +37 -0
- package/dist/self-update/registry.js +86 -0
- package/dist/self-update/registry.js.map +1 -0
- package/dist/self-update/restart.d.ts +25 -0
- package/dist/self-update/restart.js +79 -0
- package/dist/self-update/restart.js.map +1 -0
- package/dist/self-update/semver.d.ts +19 -0
- package/dist/self-update/semver.js +79 -0
- package/dist/self-update/semver.js.map +1 -0
- package/dist/self-update/service.d.ts +115 -0
- package/dist/self-update/service.js +332 -0
- package/dist/self-update/service.js.map +1 -0
- package/dist/self-update/supervisor.d.ts +10 -0
- package/dist/self-update/supervisor.js +52 -0
- package/dist/self-update/supervisor.js.map +1 -0
- package/dist/serve-boot.d.ts +60 -0
- package/dist/serve-boot.js +142 -0
- package/dist/serve-boot.js.map +1 -0
- package/dist/serve-command.d.ts +71 -0
- package/dist/serve-command.js +168 -0
- package/dist/serve-command.js.map +1 -0
- package/dist/serve-listener.d.ts +12 -0
- package/dist/serve-listener.js +52 -0
- package/dist/serve-listener.js.map +1 -0
- package/dist/server/activity-project-topic.d.ts +44 -0
- package/dist/server/activity-project-topic.js +137 -0
- package/dist/server/activity-project-topic.js.map +1 -0
- package/dist/server/activity-routes.d.ts +317 -0
- package/dist/server/activity-routes.js +117 -0
- package/dist/server/activity-routes.js.map +1 -0
- package/dist/server/activity-sources.d.ts +26 -0
- package/dist/server/activity-sources.js +45 -0
- package/dist/server/activity-sources.js.map +1 -0
- package/dist/server/activity-topic.d.ts +33 -0
- package/dist/server/activity-topic.js +48 -0
- package/dist/server/activity-topic.js.map +1 -0
- package/dist/server/app-type.d.ts +6 -0
- package/dist/server/app-type.js +2 -0
- package/dist/server/app-type.js.map +1 -0
- package/dist/server/archive-on-merge.d.ts +45 -0
- package/dist/server/archive-on-merge.js +242 -0
- package/dist/server/archive-on-merge.js.map +1 -0
- package/dist/server/automation-log-retry.d.ts +27 -0
- package/dist/server/automation-log-retry.js +88 -0
- package/dist/server/automation-log-retry.js.map +1 -0
- package/dist/server/capabilities.d.ts +69 -0
- package/dist/server/capabilities.js +111 -0
- package/dist/server/capabilities.js.map +1 -0
- package/dist/server/checkout-progress.d.ts +10 -0
- package/dist/server/checkout-progress.js +27 -0
- package/dist/server/checkout-progress.js.map +1 -0
- package/dist/server/checkout.d.ts +153 -0
- package/dist/server/checkout.js +323 -0
- package/dist/server/checkout.js.map +1 -0
- package/dist/server/cockpit-ownership.d.ts +112 -0
- package/dist/server/cockpit-ownership.js +420 -0
- package/dist/server/cockpit-ownership.js.map +1 -0
- package/dist/server/cold-repo-handles.d.ts +17 -0
- package/dist/server/cold-repo-handles.js +82 -0
- package/dist/server/cold-repo-handles.js.map +1 -0
- package/dist/server/completion-actions.d.ts +37 -0
- package/dist/server/completion-actions.js +261 -0
- package/dist/server/completion-actions.js.map +1 -0
- package/dist/server/config-merge.d.ts +11 -0
- package/dist/server/config-merge.js +74 -0
- package/dist/server/config-merge.js.map +1 -0
- package/dist/server/create-project.d.ts +71 -0
- package/dist/server/create-project.js +467 -0
- package/dist/server/create-project.js.map +1 -0
- package/dist/server/forge/draft-pr.d.ts +8 -0
- package/dist/server/forge/draft-pr.js +123 -0
- package/dist/server/forge/draft-pr.js.map +1 -0
- package/dist/server/forge/github-filters.d.ts +22 -0
- package/dist/server/forge/github-filters.js +128 -0
- package/dist/server/forge/github-filters.js.map +1 -0
- package/dist/server/forge/github-merge-requirements.d.ts +18 -0
- package/dist/server/forge/github-merge-requirements.js +148 -0
- package/dist/server/forge/github-merge-requirements.js.map +1 -0
- package/dist/server/forge/github-merge-state.d.ts +27 -0
- package/dist/server/forge/github-merge-state.js +248 -0
- package/dist/server/forge/github-merge-state.js.map +1 -0
- package/dist/server/forge/github-timeline.d.ts +117 -0
- package/dist/server/forge/github-timeline.js +273 -0
- package/dist/server/forge/github-timeline.js.map +1 -0
- package/dist/server/forge/github.d.ts +393 -0
- package/dist/server/forge/github.js +2881 -0
- package/dist/server/forge/github.js.map +1 -0
- package/dist/server/forge/index.d.ts +47 -0
- package/dist/server/forge/index.js +81 -0
- package/dist/server/forge/index.js.map +1 -0
- package/dist/server/forge/repo-handle-discovery.d.ts +16 -0
- package/dist/server/forge/repo-handle-discovery.js +2 -0
- package/dist/server/forge/repo-handle-discovery.js.map +1 -0
- package/dist/server/forge/types.d.ts +278 -0
- package/dist/server/forge/types.js +2 -0
- package/dist/server/forge/types.js.map +1 -0
- package/dist/server/fs-browse.d.ts +82 -0
- package/dist/server/fs-browse.js +217 -0
- package/dist/server/fs-browse.js.map +1 -0
- package/dist/server/git-changes.d.ts +205 -0
- package/dist/server/git-changes.js +531 -0
- package/dist/server/git-changes.js.map +1 -0
- package/dist/server/git.d.ts +52 -0
- package/dist/server/git.js +174 -0
- package/dist/server/git.js.map +1 -0
- package/dist/server/home-recovery-routes.d.ts +171 -0
- package/dist/server/home-recovery-routes.js +56 -0
- package/dist/server/home-recovery-routes.js.map +1 -0
- package/dist/server/launch-key.d.ts +5 -0
- package/dist/server/launch-key.js +35 -0
- package/dist/server/launch-key.js.map +1 -0
- package/dist/server/live-routes.d.ts +73 -0
- package/dist/server/live-routes.js +161 -0
- package/dist/server/live-routes.js.map +1 -0
- package/dist/server/open-in-app.d.ts +57 -0
- package/dist/server/open-in-app.js +178 -0
- package/dist/server/open-in-app.js.map +1 -0
- package/dist/server/open-in-targets.d.ts +53 -0
- package/dist/server/open-in-targets.js +112 -0
- package/dist/server/open-in-targets.js.map +1 -0
- package/dist/server/open-in-terminal.d.ts +73 -0
- package/dist/server/open-in-terminal.js +160 -0
- package/dist/server/open-in-terminal.js.map +1 -0
- package/dist/server/preview-cdp-socket.d.ts +21 -0
- package/dist/server/preview-cdp-socket.js +112 -0
- package/dist/server/preview-cdp-socket.js.map +1 -0
- package/dist/server/preview-socket.d.ts +36 -0
- package/dist/server/preview-socket.js +142 -0
- package/dist/server/preview-socket.js.map +1 -0
- package/dist/server/preview-sockets.d.ts +14 -0
- package/dist/server/preview-sockets.js +18 -0
- package/dist/server/preview-sockets.js.map +1 -0
- package/dist/server/project-context.d.ts +218 -0
- package/dist/server/project-context.js +525 -0
- package/dist/server/project-context.js.map +1 -0
- package/dist/server/project-run-files.d.ts +13 -0
- package/dist/server/project-run-files.js +52 -0
- package/dist/server/project-run-files.js.map +1 -0
- package/dist/server/provider-action-gate.d.ts +5 -0
- package/dist/server/provider-action-gate.js +28 -0
- package/dist/server/provider-action-gate.js.map +1 -0
- package/dist/server/provider-auth-runtime.d.ts +34 -0
- package/dist/server/provider-auth-runtime.js +118 -0
- package/dist/server/provider-auth-runtime.js.map +1 -0
- package/dist/server/repo-branch-forge.d.ts +61 -0
- package/dist/server/repo-branch-forge.js +158 -0
- package/dist/server/repo-branch-forge.js.map +1 -0
- package/dist/server/repo-branch-sweep.d.ts +21 -0
- package/dist/server/repo-branch-sweep.js +64 -0
- package/dist/server/repo-branch-sweep.js.map +1 -0
- package/dist/server/repo-branches.d.ts +103 -0
- package/dist/server/repo-branches.js +804 -0
- package/dist/server/repo-branches.js.map +1 -0
- package/dist/server/repo-pull.d.ts +18 -0
- package/dist/server/repo-pull.js +97 -0
- package/dist/server/repo-pull.js.map +1 -0
- package/dist/server/reports-api.d.ts +90 -0
- package/dist/server/reports-api.js +21 -0
- package/dist/server/reports-api.js.map +1 -0
- package/dist/server/reports-topic.d.ts +5 -0
- package/dist/server/reports-topic.js +37 -0
- package/dist/server/reports-topic.js.map +1 -0
- package/dist/server/run-checkout.d.ts +56 -0
- package/dist/server/run-checkout.js +141 -0
- package/dist/server/run-checkout.js.map +1 -0
- package/dist/server/run-event-feed.d.ts +20 -0
- package/dist/server/run-event-feed.js +203 -0
- package/dist/server/run-event-feed.js.map +1 -0
- package/dist/server/self-update-routes.d.ts +308 -0
- package/dist/server/self-update-routes.js +80 -0
- package/dist/server/self-update-routes.js.map +1 -0
- package/dist/server/server-deps.d.ts +40 -0
- package/dist/server/server-deps.js +132 -0
- package/dist/server/server-deps.js.map +1 -0
- package/dist/server/server.d.ts +35332 -0
- package/dist/server/server.js +5046 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/skill-sources.d.ts +264 -0
- package/dist/server/skill-sources.js +130 -0
- package/dist/server/skill-sources.js.map +1 -0
- package/dist/server/start-run-options.d.ts +84 -0
- package/dist/server/start-run-options.js +114 -0
- package/dist/server/start-run-options.js.map +1 -0
- package/dist/server/static-ui.d.ts +49 -0
- package/dist/server/static-ui.js +99 -0
- package/dist/server/static-ui.js.map +1 -0
- package/dist/server/upgrade-router.d.ts +23 -0
- package/dist/server/upgrade-router.js +53 -0
- package/dist/server/upgrade-router.js.map +1 -0
- package/dist/server/validators.d.ts +80 -0
- package/dist/server/validators.js +85 -0
- package/dist/server/validators.js.map +1 -0
- package/dist/server/workflow-files.d.ts +9 -0
- package/dist/server/workflow-files.js +27 -0
- package/dist/server/workflow-files.js.map +1 -0
- package/dist/server/workspace-config-patch.d.ts +11 -0
- package/dist/server/workspace-config-patch.js +75 -0
- package/dist/server/workspace-config-patch.js.map +1 -0
- package/dist/server/workspace-live-routes.d.ts +222 -0
- package/dist/server/workspace-live-routes.js +8 -0
- package/dist/server/workspace-live-routes.js.map +1 -0
- package/dist/server/workspace-projects.d.ts +51 -0
- package/dist/server/workspace-projects.js +161 -0
- package/dist/server/workspace-projects.js.map +1 -0
- package/dist/server/workspace-run-feed.d.ts +66 -0
- package/dist/server/workspace-run-feed.js +171 -0
- package/dist/server/workspace-run-feed.js.map +1 -0
- package/dist/server/ws.d.ts +80 -0
- package/dist/server/ws.js +280 -0
- package/dist/server/ws.js.map +1 -0
- package/dist/server/wsl.d.ts +25 -0
- package/dist/server/wsl.js +92 -0
- package/dist/server/wsl.js.map +1 -0
- package/dist/server-command.d.ts +53 -0
- package/dist/server-command.js +180 -0
- package/dist/server-command.js.map +1 -0
- package/dist/server-install/engine.d.ts +51 -0
- package/dist/server-install/engine.js +358 -0
- package/dist/server-install/engine.js.map +1 -0
- package/dist/server-install/group-migrate.d.ts +26 -0
- package/dist/server-install/group-migrate.js +241 -0
- package/dist/server-install/group-migrate.js.map +1 -0
- package/dist/server-install/migrate-cli.d.ts +12 -0
- package/dist/server-install/migrate-cli.js +44 -0
- package/dist/server-install/migrate-cli.js.map +1 -0
- package/dist/server-install/migrate-journal.d.ts +15 -0
- package/dist/server-install/migrate-journal.js +48 -0
- package/dist/server-install/migrate-journal.js.map +1 -0
- package/dist/server-install/migration-report.d.ts +3 -0
- package/dist/server-install/migration-report.js +21 -0
- package/dist/server-install/migration-report.js.map +1 -0
- package/dist/server-install/npx-cache.d.ts +34 -0
- package/dist/server-install/npx-cache.js +142 -0
- package/dist/server-install/npx-cache.js.map +1 -0
- package/dist/server-install/platforms/macosx-launchd-files.d.ts +11 -0
- package/dist/server-install/platforms/macosx-launchd-files.js +60 -0
- package/dist/server-install/platforms/macosx-launchd-files.js.map +1 -0
- package/dist/server-install/platforms/macosx-migration.d.ts +17 -0
- package/dist/server-install/platforms/macosx-migration.js +239 -0
- package/dist/server-install/platforms/macosx-migration.js.map +1 -0
- package/dist/server-install/platforms/macosx-ngrok.d.ts +12 -0
- package/dist/server-install/platforms/macosx-ngrok.js +490 -0
- package/dist/server-install/platforms/macosx-ngrok.js.map +1 -0
- package/dist/server-install/platforms/service-env.d.ts +4 -0
- package/dist/server-install/platforms/service-env.js +17 -0
- package/dist/server-install/platforms/service-env.js.map +1 -0
- package/dist/server-install/platforms/ubuntu-vps-files.d.ts +18 -0
- package/dist/server-install/platforms/ubuntu-vps-files.js +43 -0
- package/dist/server-install/platforms/ubuntu-vps-files.js.map +1 -0
- package/dist/server-install/platforms/ubuntu-vps-migration.d.ts +26 -0
- package/dist/server-install/platforms/ubuntu-vps-migration.js +391 -0
- package/dist/server-install/platforms/ubuntu-vps-migration.js.map +1 -0
- package/dist/server-install/platforms/ubuntu-vps-names.d.ts +30 -0
- package/dist/server-install/platforms/ubuntu-vps-names.js +50 -0
- package/dist/server-install/platforms/ubuntu-vps-names.js.map +1 -0
- package/dist/server-install/platforms/ubuntu-vps-redeploy.d.ts +42 -0
- package/dist/server-install/platforms/ubuntu-vps-redeploy.js +127 -0
- package/dist/server-install/platforms/ubuntu-vps-redeploy.js.map +1 -0
- package/dist/server-install/platforms/ubuntu-vps.d.ts +57 -0
- package/dist/server-install/platforms/ubuntu-vps.js +945 -0
- package/dist/server-install/platforms/ubuntu-vps.js.map +1 -0
- package/dist/server-install/state.d.ts +51 -0
- package/dist/server-install/state.js +178 -0
- package/dist/server-install/state.js.map +1 -0
- package/dist/server-install/steps.d.ts +108 -0
- package/dist/server-install/steps.js +348 -0
- package/dist/server-install/steps.js.map +1 -0
- package/dist/server-install/strategies.d.ts +6 -0
- package/dist/server-install/strategies.js +24 -0
- package/dist/server-install/strategies.js.map +1 -0
- package/dist/server-install/types.d.ts +316 -0
- package/dist/server-install/types.js +118 -0
- package/dist/server-install/types.js.map +1 -0
- package/dist/server-install/ui.d.ts +36 -0
- package/dist/server-install/ui.js +131 -0
- package/dist/server-install/ui.js.map +1 -0
- package/dist/session-context.d.ts +66 -0
- package/dist/session-context.js +266 -0
- package/dist/session-context.js.map +1 -0
- package/dist/skills-provision.d.ts +64 -0
- package/dist/skills-provision.js +325 -0
- package/dist/skills-provision.js.map +1 -0
- package/dist/skills-remote.d.ts +144 -0
- package/dist/skills-remote.js +847 -0
- package/dist/skills-remote.js.map +1 -0
- package/dist/skills.d.ts +81 -0
- package/dist/skills.js +288 -0
- package/dist/skills.js.map +1 -0
- package/dist/subcommands.d.ts +12 -0
- package/dist/subcommands.js +59 -0
- package/dist/subcommands.js.map +1 -0
- package/dist/task-cli/cli.d.ts +39 -0
- package/dist/task-cli/cli.js +773 -0
- package/dist/task-cli/cli.js.map +1 -0
- package/dist/task-cli/discovery.d.ts +32 -0
- package/dist/task-cli/discovery.js +133 -0
- package/dist/task-cli/discovery.js.map +1 -0
- package/dist/task-cli/hint.d.ts +20 -0
- package/dist/task-cli/hint.js +15 -0
- package/dist/task-cli/hint.js.map +1 -0
- package/dist/task-cli/http.d.ts +42 -0
- package/dist/task-cli/http.js +110 -0
- package/dist/task-cli/http.js.map +1 -0
- package/dist/task-cli/projections.d.ts +68 -0
- package/dist/task-cli/projections.js +76 -0
- package/dist/task-cli/projections.js.map +1 -0
- package/dist/task-cli/watch.d.ts +119 -0
- package/dist/task-cli/watch.js +494 -0
- package/dist/task-cli/watch.js.map +1 -0
- package/dist/ui-state.d.ts +41 -0
- package/dist/ui-state.js +93 -0
- package/dist/ui-state.js.map +1 -0
- package/dist/update-check.d.ts +2 -0
- package/dist/update-check.js +28 -0
- package/dist/update-check.js.map +1 -0
- package/dist/use-command-notice.d.ts +1 -0
- package/dist/use-command-notice.js +6 -0
- package/dist/use-command-notice.js.map +1 -0
- package/dist/voice/decide.d.ts +35 -0
- package/dist/voice/decide.js +329 -0
- package/dist/voice/decide.js.map +1 -0
- package/dist/voice/decision-log.d.ts +48 -0
- package/dist/voice/decision-log.js +117 -0
- package/dist/voice/decision-log.js.map +1 -0
- package/dist/voice/engine.d.ts +119 -0
- package/dist/voice/engine.js +61 -0
- package/dist/voice/engine.js.map +1 -0
- package/dist/voice/fake-engine.d.ts +10 -0
- package/dist/voice/fake-engine.js +192 -0
- package/dist/voice/fake-engine.js.map +1 -0
- package/dist/voice/jev-engine.d.ts +17 -0
- package/dist/voice/jev-engine.js +110 -0
- package/dist/voice/jev-engine.js.map +1 -0
- package/dist/voice/pending-ask.d.ts +17 -0
- package/dist/voice/pending-ask.js +51 -0
- package/dist/voice/pending-ask.js.map +1 -0
- package/dist/voice/routes.d.ts +115 -0
- package/dist/voice/routes.js +92 -0
- package/dist/voice/routes.js.map +1 -0
- package/dist/voice/sentence.d.ts +21 -0
- package/dist/voice/sentence.js +61 -0
- package/dist/voice/sentence.js.map +1 -0
- package/dist/voice/thresholds.d.ts +28 -0
- package/dist/voice/thresholds.js +29 -0
- package/dist/voice/thresholds.js.map +1 -0
- package/dist/webhooks/cli.d.ts +18 -0
- package/dist/webhooks/cli.js +127 -0
- package/dist/webhooks/cli.js.map +1 -0
- package/dist/webhooks/prompt.d.ts +5 -0
- package/dist/webhooks/prompt.js +26 -0
- package/dist/webhooks/prompt.js.map +1 -0
- package/dist/workflows/active-run.d.ts +46 -0
- package/dist/workflows/active-run.js +46 -0
- package/dist/workflows/active-run.js.map +1 -0
- package/dist/workflows/attachment-path.d.ts +6 -0
- package/dist/workflows/attachment-path.js +40 -0
- package/dist/workflows/attachment-path.js.map +1 -0
- package/dist/workflows/completion-policy.d.ts +98 -0
- package/dist/workflows/completion-policy.js +77 -0
- package/dist/workflows/completion-policy.js.map +1 -0
- package/dist/workflows/continuation-admission.d.ts +1229 -0
- package/dist/workflows/continuation-admission.js +277 -0
- package/dist/workflows/continuation-admission.js.map +1 -0
- package/dist/workflows/execution-account.d.ts +13 -0
- package/dist/workflows/execution-account.js +18 -0
- package/dist/workflows/execution-account.js.map +1 -0
- package/dist/workflows/grouped-command.d.ts +31 -0
- package/dist/workflows/grouped-command.js +147 -0
- package/dist/workflows/grouped-command.js.map +1 -0
- package/dist/workflows/input-acknowledgement.d.ts +233 -0
- package/dist/workflows/input-acknowledgement.js +41 -0
- package/dist/workflows/input-acknowledgement.js.map +1 -0
- package/dist/workflows/line-order.d.ts +5 -0
- package/dist/workflows/line-order.js +25 -0
- package/dist/workflows/line-order.js.map +1 -0
- package/dist/workflows/load.d.ts +19 -0
- package/dist/workflows/load.js +74 -0
- package/dist/workflows/load.js.map +1 -0
- package/dist/workflows/outcome-batches.d.ts +32 -0
- package/dist/workflows/outcome-batches.js +55 -0
- package/dist/workflows/outcome-batches.js.map +1 -0
- package/dist/workflows/pasted-content.d.ts +60 -0
- package/dist/workflows/pasted-content.js +69 -0
- package/dist/workflows/pasted-content.js.map +1 -0
- package/dist/workflows/question-routing.d.ts +16 -0
- package/dist/workflows/question-routing.js +28 -0
- package/dist/workflows/question-routing.js.map +1 -0
- package/dist/workflows/run/attachment-writer.d.ts +34 -0
- package/dist/workflows/run/attachment-writer.js +98 -0
- package/dist/workflows/run/attachment-writer.js.map +1 -0
- package/dist/workflows/run/auto-resume.d.ts +91 -0
- package/dist/workflows/run/auto-resume.js +247 -0
- package/dist/workflows/run/auto-resume.js.map +1 -0
- package/dist/workflows/run/cezar-tools.d.ts +45 -0
- package/dist/workflows/run/cezar-tools.js +117 -0
- package/dist/workflows/run/cezar-tools.js.map +1 -0
- package/dist/workflows/run/completion-gate.d.ts +77 -0
- package/dist/workflows/run/completion-gate.js +93 -0
- package/dist/workflows/run/completion-gate.js.map +1 -0
- package/dist/workflows/run/compose.d.ts +181 -0
- package/dist/workflows/run/compose.js +413 -0
- package/dist/workflows/run/compose.js.map +1 -0
- package/dist/workflows/run/constants.d.ts +48 -0
- package/dist/workflows/run/constants.js +49 -0
- package/dist/workflows/run/constants.js.map +1 -0
- package/dist/workflows/run/continuation-acceptance.d.ts +70 -0
- package/dist/workflows/run/continuation-acceptance.js +188 -0
- package/dist/workflows/run/continuation-acceptance.js.map +1 -0
- package/dist/workflows/run/continuation-session.d.ts +130 -0
- package/dist/workflows/run/continuation-session.js +597 -0
- package/dist/workflows/run/continuation-session.js.map +1 -0
- package/dist/workflows/run/drop-active.d.ts +4 -0
- package/dist/workflows/run/drop-active.js +11 -0
- package/dist/workflows/run/drop-active.js.map +1 -0
- package/dist/workflows/run/family-reconciler.d.ts +78 -0
- package/dist/workflows/run/family-reconciler.js +308 -0
- package/dist/workflows/run/family-reconciler.js.map +1 -0
- package/dist/workflows/run/human-waits.d.ts +85 -0
- package/dist/workflows/run/human-waits.js +163 -0
- package/dist/workflows/run/human-waits.js.map +1 -0
- package/dist/workflows/run/inbox-claims.d.ts +38 -0
- package/dist/workflows/run/inbox-claims.js +108 -0
- package/dist/workflows/run/inbox-claims.js.map +1 -0
- package/dist/workflows/run/input-batch.d.ts +15 -0
- package/dist/workflows/run/input-batch.js +32 -0
- package/dist/workflows/run/input-batch.js.map +1 -0
- package/dist/workflows/run/input-delivery.d.ts +202 -0
- package/dist/workflows/run/input-delivery.js +818 -0
- package/dist/workflows/run/input-delivery.js.map +1 -0
- package/dist/workflows/run/input-receipts.d.ts +65 -0
- package/dist/workflows/run/input-receipts.js +221 -0
- package/dist/workflows/run/input-receipts.js.map +1 -0
- package/dist/workflows/run/input-timers.d.ts +10 -0
- package/dist/workflows/run/input-timers.js +32 -0
- package/dist/workflows/run/input-timers.js.map +1 -0
- package/dist/workflows/run/launch-context.d.ts +62 -0
- package/dist/workflows/run/launch-context.js +119 -0
- package/dist/workflows/run/launch-context.js.map +1 -0
- package/dist/workflows/run/launch-read-resolver.d.ts +510 -0
- package/dist/workflows/run/launch-read-resolver.js +658 -0
- package/dist/workflows/run/launch-read-resolver.js.map +1 -0
- package/dist/workflows/run/launch-settings.d.ts +10 -0
- package/dist/workflows/run/launch-settings.js +11 -0
- package/dist/workflows/run/launch-settings.js.map +1 -0
- package/dist/workflows/run/live-session-state.d.ts +49 -0
- package/dist/workflows/run/live-session-state.js +83 -0
- package/dist/workflows/run/live-session-state.js.map +1 -0
- package/dist/workflows/run/maintenance-claims.d.ts +47 -0
- package/dist/workflows/run/maintenance-claims.js +83 -0
- package/dist/workflows/run/maintenance-claims.js.map +1 -0
- package/dist/workflows/run/memory-guard.d.ts +25 -0
- package/dist/workflows/run/memory-guard.js +64 -0
- package/dist/workflows/run/memory-guard.js.map +1 -0
- package/dist/workflows/run/opening.d.ts +30 -0
- package/dist/workflows/run/opening.js +6 -0
- package/dist/workflows/run/opening.js.map +1 -0
- package/dist/workflows/run/pending-ask-facts.d.ts +10 -0
- package/dist/workflows/run/pending-ask-facts.js +19 -0
- package/dist/workflows/run/pending-ask-facts.js.map +1 -0
- package/dist/workflows/run/prompts.d.ts +74 -0
- package/dist/workflows/run/prompts.js +140 -0
- package/dist/workflows/run/prompts.js.map +1 -0
- package/dist/workflows/run/queued-input.d.ts +108 -0
- package/dist/workflows/run/queued-input.js +249 -0
- package/dist/workflows/run/queued-input.js.map +1 -0
- package/dist/workflows/run/queued-revival.d.ts +44 -0
- package/dist/workflows/run/queued-revival.js +124 -0
- package/dist/workflows/run/queued-revival.js.map +1 -0
- package/dist/workflows/run/readonly-collections.d.ts +24 -0
- package/dist/workflows/run/readonly-collections.js +33 -0
- package/dist/workflows/run/readonly-collections.js.map +1 -0
- package/dist/workflows/run/repo-root-lease.d.ts +34 -0
- package/dist/workflows/run/repo-root-lease.js +71 -0
- package/dist/workflows/run/repo-root-lease.js.map +1 -0
- package/dist/workflows/run/resolved-wait-input-batch.d.ts +7 -0
- package/dist/workflows/run/resolved-wait-input-batch.js +23 -0
- package/dist/workflows/run/resolved-wait-input-batch.js.map +1 -0
- package/dist/workflows/run/run-cancel.d.ts +36 -0
- package/dist/workflows/run/run-cancel.js +130 -0
- package/dist/workflows/run/run-cancel.js.map +1 -0
- package/dist/workflows/run/run-finish.d.ts +72 -0
- package/dist/workflows/run/run-finish.js +256 -0
- package/dist/workflows/run/run-finish.js.map +1 -0
- package/dist/workflows/run/run-guards.d.ts +15 -0
- package/dist/workflows/run/run-guards.js +39 -0
- package/dist/workflows/run/run-guards.js.map +1 -0
- package/dist/workflows/run/run-line.d.ts +187 -0
- package/dist/workflows/run/run-line.js +438 -0
- package/dist/workflows/run/run-line.js.map +1 -0
- package/dist/workflows/run/run-recovery.d.ts +116 -0
- package/dist/workflows/run/run-recovery.js +422 -0
- package/dist/workflows/run/run-recovery.js.map +1 -0
- package/dist/workflows/run/run-settlement.d.ts +177 -0
- package/dist/workflows/run/run-settlement.js +504 -0
- package/dist/workflows/run/run-settlement.js.map +1 -0
- package/dist/workflows/run/run-skills.d.ts +114 -0
- package/dist/workflows/run/run-skills.js +233 -0
- package/dist/workflows/run/run-skills.js.map +1 -0
- package/dist/workflows/run/run-start.d.ts +64 -0
- package/dist/workflows/run/run-start.js +126 -0
- package/dist/workflows/run/run-start.js.map +1 -0
- package/dist/workflows/run/run-workspace.d.ts +25 -0
- package/dist/workflows/run/run-workspace.js +66 -0
- package/dist/workflows/run/run-workspace.js.map +1 -0
- package/dist/workflows/run/session-events.d.ts +155 -0
- package/dist/workflows/run/session-events.js +282 -0
- package/dist/workflows/run/session-events.js.map +1 -0
- package/dist/workflows/run/step-decisions.d.ts +37 -0
- package/dist/workflows/run/step-decisions.js +43 -0
- package/dist/workflows/run/step-decisions.js.map +1 -0
- package/dist/workflows/run/step-loop.d.ts +143 -0
- package/dist/workflows/run/step-loop.js +488 -0
- package/dist/workflows/run/step-loop.js.map +1 -0
- package/dist/workflows/run/step-session.d.ts +65 -0
- package/dist/workflows/run/step-session.js +280 -0
- package/dist/workflows/run/step-session.js.map +1 -0
- package/dist/workflows/run/steps.d.ts +13 -0
- package/dist/workflows/run/steps.js +14 -0
- package/dist/workflows/run/steps.js.map +1 -0
- package/dist/workflows/run/subagent-waits.d.ts +138 -0
- package/dist/workflows/run/subagent-waits.js +305 -0
- package/dist/workflows/run/subagent-waits.js.map +1 -0
- package/dist/workflows/run/tracked-work.d.ts +12 -0
- package/dist/workflows/run/tracked-work.js +29 -0
- package/dist/workflows/run/tracked-work.js.map +1 -0
- package/dist/workflows/run/turn-bookkeeping.d.ts +67 -0
- package/dist/workflows/run/turn-bookkeeping.js +173 -0
- package/dist/workflows/run/turn-bookkeeping.js.map +1 -0
- package/dist/workflows/run/turn-boundary.d.ts +215 -0
- package/dist/workflows/run/turn-boundary.js +329 -0
- package/dist/workflows/run/turn-boundary.js.map +1 -0
- package/dist/workflows/run/turn-markers.d.ts +62 -0
- package/dist/workflows/run/turn-markers.js +86 -0
- package/dist/workflows/run/turn-markers.js.map +1 -0
- package/dist/workflows/run/turn-nudges.d.ts +104 -0
- package/dist/workflows/run/turn-nudges.js +244 -0
- package/dist/workflows/run/turn-nudges.js.map +1 -0
- package/dist/workflows/run/turn-settler.d.ts +161 -0
- package/dist/workflows/run/turn-settler.js +469 -0
- package/dist/workflows/run/turn-settler.js.map +1 -0
- package/dist/workflows/run/types.d.ts +293 -0
- package/dist/workflows/run/types.js +2 -0
- package/dist/workflows/run/types.js.map +1 -0
- package/dist/workflows/run/usage-accounting.d.ts +49 -0
- package/dist/workflows/run/usage-accounting.js +213 -0
- package/dist/workflows/run/usage-accounting.js.map +1 -0
- package/dist/workflows/run/wait-engine.d.ts +1210 -0
- package/dist/workflows/run/wait-engine.js +456 -0
- package/dist/workflows/run/wait-engine.js.map +1 -0
- package/dist/workflows/run/wait-kinds.d.ts +336 -0
- package/dist/workflows/run/wait-kinds.js +471 -0
- package/dist/workflows/run/wait-kinds.js.map +1 -0
- package/dist/workflows/run/wait-registration-tool.d.ts +3 -0
- package/dist/workflows/run/wait-registration-tool.js +68 -0
- package/dist/workflows/run/wait-registration-tool.js.map +1 -0
- package/dist/workflows/run/wait-registration.d.ts +7 -0
- package/dist/workflows/run/wait-registration.js +39 -0
- package/dist/workflows/run/wait-registration.js.map +1 -0
- package/dist/workflows/run/wait-registry.d.ts +120 -0
- package/dist/workflows/run/wait-registry.js +365 -0
- package/dist/workflows/run/wait-registry.js.map +1 -0
- package/dist/workflows/run/wait-watches.d.ts +13 -0
- package/dist/workflows/run/wait-watches.js +12 -0
- package/dist/workflows/run/wait-watches.js.map +1 -0
- package/dist/workflows/run/wake-admission.d.ts +150 -0
- package/dist/workflows/run/wake-admission.js +397 -0
- package/dist/workflows/run/wake-admission.js.map +1 -0
- package/dist/workflows/run/wake-ledger.d.ts +61 -0
- package/dist/workflows/run/wake-ledger.js +78 -0
- package/dist/workflows/run/wake-ledger.js.map +1 -0
- package/dist/workflows/run/wake-retries.d.ts +31 -0
- package/dist/workflows/run/wake-retries.js +93 -0
- package/dist/workflows/run/wake-retries.js.map +1 -0
- package/dist/workflows/run/worker-executions.d.ts +54 -0
- package/dist/workflows/run/worker-executions.js +149 -0
- package/dist/workflows/run/worker-executions.js.map +1 -0
- package/dist/workflows/run/worker-orphans.d.ts +91 -0
- package/dist/workflows/run/worker-orphans.js +275 -0
- package/dist/workflows/run/worker-orphans.js.map +1 -0
- package/dist/workflows/run/worker-questions.d.ts +169 -0
- package/dist/workflows/run/worker-questions.js +464 -0
- package/dist/workflows/run/worker-questions.js.map +1 -0
- package/dist/workflows/run/workflow-position.d.ts +7 -0
- package/dist/workflows/run/workflow-position.js +9 -0
- package/dist/workflows/run/workflow-position.js.map +1 -0
- package/dist/workflows/run/worktree-autosave.d.ts +48 -0
- package/dist/workflows/run/worktree-autosave.js +175 -0
- package/dist/workflows/run/worktree-autosave.js.map +1 -0
- package/dist/workflows/run-scheduling.d.ts +38 -0
- package/dist/workflows/run-scheduling.js +76 -0
- package/dist/workflows/run-scheduling.js.map +1 -0
- package/dist/workflows/run-states.d.ts +73 -0
- package/dist/workflows/run-states.js +233 -0
- package/dist/workflows/run-states.js.map +1 -0
- package/dist/workflows/run.d.ts +275 -0
- package/dist/workflows/run.js +626 -0
- package/dist/workflows/run.js.map +1 -0
- package/dist/workflows/turn-end.d.ts +119 -0
- package/dist/workflows/turn-end.js +74 -0
- package/dist/workflows/turn-end.js.map +1 -0
- package/dist/workflows/types.d.ts +83 -0
- package/dist/workflows/types.js +192 -0
- package/dist/workflows/types.js.map +1 -0
- package/dist/workflows/wait-scope.d.ts +75 -0
- package/dist/workflows/wait-scope.js +115 -0
- package/dist/workflows/wait-scope.js.map +1 -0
- package/dist/workflows/waits.d.ts +58 -0
- package/dist/workflows/waits.js +89 -0
- package/dist/workflows/waits.js.map +1 -0
- package/dist/workspace/agent-accounts.d.ts +135 -0
- package/dist/workspace/agent-accounts.js +353 -0
- package/dist/workspace/agent-accounts.js.map +1 -0
- package/dist/workspace/agent-profiles.d.ts +125 -0
- package/dist/workspace/agent-profiles.js +190 -0
- package/dist/workspace/agent-profiles.js.map +1 -0
- package/dist/workspace/backup-cli.d.ts +9 -0
- package/dist/workspace/backup-cli.js +147 -0
- package/dist/workspace/backup-cli.js.map +1 -0
- package/dist/workspace/backups.d.ts +36 -0
- package/dist/workspace/backups.js +249 -0
- package/dist/workspace/backups.js.map +1 -0
- package/dist/workspace/config.d.ts +179 -0
- package/dist/workspace/config.js +396 -0
- package/dist/workspace/config.js.map +1 -0
- package/dist/workspace/migrations.d.ts +37 -0
- package/dist/workspace/migrations.js +149 -0
- package/dist/workspace/migrations.js.map +1 -0
- package/dist/workspace/projects-cli.d.ts +27 -0
- package/dist/workspace/projects-cli.js +175 -0
- package/dist/workspace/projects-cli.js.map +1 -0
- package/dist/workspace/projects.d.ts +131 -0
- package/dist/workspace/projects.js +274 -0
- package/dist/workspace/projects.js.map +1 -0
- package/dist/workspace/root-probe-cache.d.ts +10 -0
- package/dist/workspace/root-probe-cache.js +43 -0
- package/dist/workspace/root-probe-cache.js.map +1 -0
- package/dist/workspace/semaphore.d.ts +147 -0
- package/dist/workspace/semaphore.js +196 -0
- package/dist/workspace/semaphore.js.map +1 -0
- package/dist/workspace/ui-state.d.ts +17 -0
- package/dist/workspace/ui-state.js +59 -0
- package/dist/workspace/ui-state.js.map +1 -0
- package/dist/workspace/webhooks.d.ts +40 -0
- package/dist/workspace/webhooks.js +146 -0
- package/dist/workspace/webhooks.js.map +1 -0
- package/dist/worktree-manifest.d.ts +165 -0
- package/dist/worktree-manifest.js +535 -0
- package/dist/worktree-manifest.js.map +1 -0
- package/dist/worktree-setup.d.ts +88 -0
- package/dist/worktree-setup.js +170 -0
- package/dist/worktree-setup.js.map +1 -0
- package/package.json +80 -4
- package/scripts/benchmark-family-reconcile.ts +119 -0
- package/scripts/benchmark-home.ts +32 -0
- package/scripts/benchmark-project-probes.mjs +158 -0
- package/scripts/benchmark-run-store-fixture.ts +432 -0
- package/scripts/benchmark-run-store.ts +767 -0
- package/scripts/benchmark-stuck-destroys.ts +144 -0
- package/scripts/benchmark-workspace-events.ts +339 -0
- package/scripts/check-pack.mjs +48 -0
- package/scripts/inline-contract.mjs +165 -0
- package/scripts/install-as-command.mjs +125 -0
- package/scripts/measure-transcript-facts-health.mjs +103 -0
- package/scripts/measure-transcript-facts-lag.mjs +69 -0
- package/scripts/mock-autonomous.mjs +13 -0
- package/scripts/mock-ci-tool.mjs +159 -0
- package/scripts/mock-claude-model-refusal.mjs +76 -0
- package/scripts/mock-claude-subagents.mjs +54 -0
- package/scripts/mock-claude.mjs +800 -0
- package/scripts/mock-codex-app-server.mjs +767 -0
- package/scripts/mock-codex-coalesce-steer.mjs +59 -0
- package/scripts/mock-codex-reverse-steer.mjs +143 -0
- package/scripts/mock-codex-subagents.mjs +52 -0
- package/scripts/mock-controls.d.mts +11 -0
- package/scripts/mock-controls.mjs +13 -0
- package/scripts/mock-cursor-hang-stdin-late.mjs +35 -0
- package/scripts/mock-cursor-hang-stdin.mjs +30 -0
- package/scripts/mock-cursor-print.mjs +237 -0
- package/scripts/mock-deferred-turn-start.mjs +16 -0
- package/scripts/mock-delivery-control.d.mts +23 -0
- package/scripts/mock-delivery-control.mjs +80 -0
- package/scripts/mock-env-record.mjs +11 -0
- package/scripts/mock-failure-control.d.mts +13 -0
- package/scripts/mock-failure-control.mjs +68 -0
- package/scripts/mock-lifecycle.mjs +51 -0
- package/scripts/mock-multi-pr.mjs +10 -0
- package/scripts/mock-nudge.mjs +43 -0
- package/scripts/mock-omp-rpc.mjs +536 -0
- package/scripts/mock-opencode-serve.mjs +1000 -0
- package/scripts/mock-pi-rpc.mjs +421 -0
- package/scripts/mock-publish.mjs +13 -0
- package/scripts/mock-runner-crash.mjs +64 -0
- package/scripts/mock-scenario.d.mts +71 -0
- package/scripts/mock-scenario.mjs +295 -0
- package/scripts/mock-session-context.d.mts +5 -0
- package/scripts/mock-session-context.mjs +56 -0
- package/scripts/mock-silent-tail.mjs +93 -0
- package/scripts/mock-turn-messages.mjs +5 -0
- package/scripts/mock-wire-evidence.config.mjs +12 -0
- package/scripts/mock-wire-recorder.mjs +66 -0
- package/scripts/mock-wire-tools.mjs +7 -0
- package/scripts/omp-ci-wait.mjs +29 -0
- package/scripts/opencode-task-scope.d.mts +18 -0
- package/scripts/opencode-task-scope.mjs +59 -0
- package/scripts/parity-rows.ts +160 -0
- package/scripts/pi-ci-wait.mjs +17 -0
- package/scripts/pi-default-tools.mjs +22 -0
- package/scripts/pi-project-skills.mjs +59 -0
- package/scripts/pi-retry-degraded-service.mjs +16 -0
- package/scripts/probe-cursor-print.mjs +699 -0
- package/scripts/probe-session-env.ts +8 -0
- package/scripts/product-env.mjs +6 -0
- package/scripts/product-identity.mjs +12 -0
- package/scripts/record-mock-wires.mjs +16 -0
- package/scripts/seed-archive-profile.ts +53 -0
- package/scripts/sync-readme.mjs +20 -0
- package/scripts/test-process-usage.mjs +47 -0
- package/scripts/transcript-facts-fixture.mjs +53 -0
- package/scripts/transcript-facts-timing.mjs +42 -0
- package/scripts/voice-replay.ts +50 -0
- package/scripts/windows-workspace-identity.cs +208 -0
- package/scripts/windows-workspace-identity.ps1 +10 -0
- package/web/dist/assets/activity-motion-0wHCeUs7.css +1 -0
- package/web/dist/assets/activity-motion-SGth5vR4.js +2 -0
- package/web/dist/assets/activity-route-D8otXwOA.js +1 -0
- package/web/dist/assets/agent-accounts-6EuZhy-N.js +18 -0
- package/web/dist/assets/alert-dialog-vFjLgfK4.js +1 -0
- package/web/dist/assets/app-window-CSHwDX9N.js +1 -0
- package/web/dist/assets/arrow-right-Dh_Lx3um.js +1 -0
- package/web/dist/assets/bundle-mjs-BT31bpU6.js +1 -0
- package/web/dist/assets/button-BEK7XKhS.js +3 -0
- package/web/dist/assets/centered-state-CPgI8cCO.js +1 -0
- package/web/dist/assets/cez-idle-BT0U4GN_.js +1 -0
- package/web/dist/assets/chunk-BO2N2NFS-DE6qKn3r.js +131 -0
- package/web/dist/assets/commit-diff-panel-DzyWgn1Z.js +1 -0
- package/web/dist/assets/control-locations-CexZsd3M.js +1 -0
- package/web/dist/assets/core-BCsw8oQw.js +12 -0
- package/web/dist/assets/createLucideIcon-BHp8sXmF.js +1 -0
- package/web/dist/assets/css-BsVw1vtW.js +1 -0
- package/web/dist/assets/design-icons-DmYTv2r1.js +1 -0
- package/web/dist/assets/diff-DBDiZl58.js +3 -0
- package/web/dist/assets/diff-controls-DXyB0aDl.js +1 -0
- package/web/dist/assets/diff-view-DiKAwVMH.js +11 -0
- package/web/dist/assets/diff-woXpYk--.js +1 -0
- package/web/dist/assets/dropdown-menu-DYflHa4m.js +1 -0
- package/web/dist/assets/engine-javascript-FQvzRocB.js +141 -0
- package/web/dist/assets/es2015-BO600Xfi.js +41 -0
- package/web/dist/assets/eye-B8okNWXU.js +1 -0
- package/web/dist/assets/file-preview-DTSRkmMo.js +2 -0
- package/web/dist/assets/git-toolbar-U4s46kUd.js +1 -0
- package/web/dist/assets/github-UaBp2yRF.js +1 -0
- package/web/dist/assets/github-sidebar-model-czjLsgVJ.js +1 -0
- package/web/dist/assets/global-activity-route-B2N2Nz0H.js +1 -0
- package/web/dist/assets/go-rLFTqkRN.js +1 -0
- package/web/dist/assets/highlighted-body-OFNGDK62-BL-MfFgl.js +1 -0
- package/web/dist/assets/hourglass-B0lPAJvT.js +1 -0
- package/web/dist/assets/html-BY76lXLH.js +1 -0
- package/web/dist/assets/image-preview-XPCPclpG.js +1 -0
- package/web/dist/assets/index-B18AqW0Z.css +1 -0
- package/web/dist/assets/index-xj-3O89_.js +14 -0
- package/web/dist/assets/index.global-D3Ga_D3Y.js +1 -0
- package/web/dist/assets/info-DA1x_4bz.js +1 -0
- package/web/dist/assets/javascript-BgS3c2Ky.js +1 -0
- package/web/dist/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2 +0 -0
- package/web/dist/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2 +0 -0
- package/web/dist/assets/json-qhed-kSA.js +1 -0
- package/web/dist/assets/jsonc-CYpm1nAK.js +1 -0
- package/web/dist/assets/jsx-Bz0zcwM4.js +1 -0
- package/web/dist/assets/lib-BxQXEXDF.js +1 -0
- package/web/dist/assets/live-protocol-BDY7JJpT.js +64 -0
- package/web/dist/assets/live-refetch-C-Ony2Yr.js +1 -0
- package/web/dist/assets/live-worker-BWdeGzQX.ts +34 -0
- package/web/dist/assets/loader-circle-CZkGEdoI.js +1 -0
- package/web/dist/assets/markdown-BBDDg-4t.js +1 -0
- package/web/dist/assets/markdown-BYOwaDjH.js +1 -0
- package/web/dist/assets/markdown-UdZ_toya.js +6 -0
- package/web/dist/assets/mermaid-GHXKKRXX-C4jxqUUb.js +1 -0
- package/web/dist/assets/mermaid.min-3O9YjB2l.js +1 -0
- package/web/dist/assets/message-square-B-MD-8rD.js +1 -0
- package/web/dist/assets/nav-row-styles-BE99gD3_.js +1 -0
- package/web/dist/assets/popover-CpULuQSm.js +1 -0
- package/web/dist/assets/poppins-devanagari-400-normal-CJDn6rn8.woff2 +0 -0
- package/web/dist/assets/poppins-devanagari-400-normal-CqVvlrh5.woff +0 -0
- package/web/dist/assets/poppins-devanagari-500-normal-BIdkeU1p.woff2 +0 -0
- package/web/dist/assets/poppins-devanagari-500-normal-DMPDjHtT.woff +0 -0
- package/web/dist/assets/poppins-devanagari-600-normal-ClASKHrr.woff +0 -0
- package/web/dist/assets/poppins-devanagari-600-normal-STEjXBNN.woff2 +0 -0
- package/web/dist/assets/poppins-latin-400-normal-BOb3E3N0.woff +0 -0
- package/web/dist/assets/poppins-latin-400-normal-cpxAROuN.woff2 +0 -0
- package/web/dist/assets/poppins-latin-500-normal-C8OXljZJ.woff2 +0 -0
- package/web/dist/assets/poppins-latin-500-normal-DGXqpDMm.woff +0 -0
- package/web/dist/assets/poppins-latin-600-normal-BJdTmd5m.woff +0 -0
- package/web/dist/assets/poppins-latin-600-normal-zEkxB9Mr.woff2 +0 -0
- package/web/dist/assets/poppins-latin-ext-400-normal-DaBSavcJ.woff +0 -0
- package/web/dist/assets/poppins-latin-ext-400-normal-by3JarPu.woff2 +0 -0
- package/web/dist/assets/poppins-latin-ext-500-normal-CK-6C4Hw.woff2 +0 -0
- package/web/dist/assets/poppins-latin-ext-500-normal-CgAe2rWW.woff +0 -0
- package/web/dist/assets/poppins-latin-ext-600-normal-CAhIAdZj.woff2 +0 -0
- package/web/dist/assets/poppins-latin-ext-600-normal-Df5ffKXP.woff +0 -0
- package/web/dist/assets/preview-pane-connected-CgRK7GzB.js +3 -0
- package/web/dist/assets/project-router-CimAoN1H.js +1 -0
- package/web/dist/assets/project-scope-context-DMpvJqIm.js +4 -0
- package/web/dist/assets/python-gzcpVVnB.js +1 -0
- package/web/dist/assets/queries-BIOp8jLx.js +1 -0
- package/web/dist/assets/react-runtime-CCIEwYL0.js +9 -0
- package/web/dist/assets/repo-git-DVXNOJDT.css +1 -0
- package/web/dist/assets/repo-git-XkyTfP9G.js +1 -0
- package/web/dist/assets/report-reader-CZjYS5Aw.js +1 -0
- package/web/dist/assets/report-title-D4Mbu2Er.js +1 -0
- package/web/dist/assets/reports-B7QAzibP.css +1 -0
- package/web/dist/assets/reports-D_2sFE1y.js +1 -0
- package/web/dist/assets/rolldown-runtime-QTnfLwEv.js +1 -0
- package/web/dist/assets/run-header-BwPDVPpg.js +2 -0
- package/web/dist/assets/run-header-CC7VUTg9.css +1 -0
- package/web/dist/assets/rust-Cfkwpbl8.js +1 -0
- package/web/dist/assets/shellscript-CLZ0U2zV.js +1 -0
- package/web/dist/assets/skill-empty-hint-YDmkqgo-.js +1 -0
- package/web/dist/assets/skills-BkXe4p4q.js +1 -0
- package/web/dist/assets/skills-DFBiAuJG.js +1 -0
- package/web/dist/assets/skills-workflows-C21NystW.css +1 -0
- package/web/dist/assets/sortable.esm-zp_qkYGV.js +5 -0
- package/web/dist/assets/sql-BsFa4tDR.js +1 -0
- package/web/dist/assets/tab-link-BIweqlIZ.js +1 -0
- package/web/dist/assets/task-changes-USNHNm_T.js +1 -0
- package/web/dist/assets/task-commits-kHqlOJe_.js +1 -0
- package/web/dist/assets/task-files-wTWwLR39.js +1 -0
- package/web/dist/assets/task-github-item-GzaQjkF1.js +1 -0
- package/web/dist/assets/task-thread-BZX863UN.js +9 -0
- package/web/dist/assets/task-thread-DtQ6uGfQ.css +1 -0
- package/web/dist/assets/textarea-FAUkHz1K.js +1 -0
- package/web/dist/assets/thread-state-CBzx2hmX.js +4 -0
- package/web/dist/assets/toaster-pthKGWiE.js +1 -0
- package/web/dist/assets/toml-CcmNWLt0.js +1 -0
- package/web/dist/assets/tsx-udAQXfEw.js +1 -0
- package/web/dist/assets/typescript-bsJCZSQ-.js +1 -0
- package/web/dist/assets/use-hand-to-agent-state-Bav9eT3b.js +1 -0
- package/web/dist/assets/use-hand-to-agent-state-C7esPJ-N.css +1 -0
- package/web/dist/assets/useInfiniteQuery-CQI4BO4C.js +1 -0
- package/web/dist/assets/useQuery-Bkq-x4Id.js +1 -0
- package/web/dist/assets/workflows-D871Gx--.js +7 -0
- package/web/dist/assets/ws-DspW9wBH.js +1 -0
- package/web/dist/assets/yaml-rwi0_p6S.js +1 -0
- package/web/dist/assets/zoomable-image-DNc6ORaF.js +1 -0
- package/web/dist/cezarion-lockup-dark.svg +9 -0
- package/web/dist/cezarion-lockup-light.svg +9 -0
- package/web/dist/cezarion-mark-dark.svg +4 -0
- package/web/dist/cezarion-mark-light.svg +4 -0
- package/web/dist/index.html +90 -0
- package/web/dist/live-worker.js +4 -0
|
@@ -0,0 +1,945 @@
|
|
|
1
|
+
import { productName } from '../../home/display.js';
|
|
2
|
+
import { productIdentity } from '../../home/identity.js';
|
|
3
|
+
import { commandText } from '../../home/command.js';
|
|
4
|
+
import { repairUnitEnv, writeFileStep } from './ubuntu-vps-files.js';
|
|
5
|
+
import { productEnvEntries } from '../../core/product-env.js';
|
|
6
|
+
import { existsSync, mkdirSync, rmSync, writeFileSync } from 'node:fs';
|
|
7
|
+
import { randomUUID } from 'node:crypto';
|
|
8
|
+
import { homedir, userInfo } from 'node:os';
|
|
9
|
+
import { dirname, join, resolve } from 'node:path';
|
|
10
|
+
import { fileURLToPath } from 'node:url';
|
|
11
|
+
import { CANCEL, PreflightError } from '../types.js';
|
|
12
|
+
import { depCheckStep, generatePassword, owned, shared, shquote, StepAborted, StepCancelled, StepSkipped, sudoStep, verifyCommand } from '../steps.js';
|
|
13
|
+
import { isForeignNpxExecStart, isNpxExecStart, refreshNpxCacheForRedeploy } from '../npx-cache.js';
|
|
14
|
+
import { failedRestart, freshRestartOrFail, readExecStart, resolveRedeployScope, restartSystemService, restartUserService, serviceDiagnostics, serviceSnapshot } from './ubuntu-vps-redeploy.js';
|
|
15
|
+
import { recordedSite, recordedUnit, sitePathsToRemove, unitHint } from './ubuntu-vps-names.js';
|
|
16
|
+
import { migrateUbuntu, rollbackUbuntuMigration, startUbuntuService, stopUbuntuService } from './ubuntu-vps-migration.js';
|
|
17
|
+
import { REBRAND_SWITCH } from '../../home/switch.js';
|
|
18
|
+
export { isForeignNpxExecStart, isNpxExecStart, refreshNpxCacheForRedeploy };
|
|
19
|
+
/**
|
|
20
|
+
* The `ubuntu-vps` strategy: stand up an authenticated, proxied cezar on a bare
|
|
21
|
+
* Ubuntu/Debian VPS. cezar itself stays loopback-bound; nginx is the single
|
|
22
|
+
* public surface (TLS + htpasswd identity) forwarding to 127.0.0.1:<port>.
|
|
23
|
+
*
|
|
24
|
+
* Phase 1 ships deps → nginx+htpasswd → identity-verify (and their `undo`s).
|
|
25
|
+
* Phase 2 appends the optional SSL and autostart steps to `steps()`.
|
|
26
|
+
*/
|
|
27
|
+
/** Best-effort current OS username, suggested as the default cockpit login. */
|
|
28
|
+
function currentUsername() {
|
|
29
|
+
try {
|
|
30
|
+
return userInfo().username || 'ops';
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return 'ops';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* True when ufw is installed and enabled. `ufw status` needs root and the
|
|
38
|
+
* installer is mandatorily non-root, so it always failed — instead read
|
|
39
|
+
* `/etc/ufw/ufw.conf` (world-readable), whose `ENABLED=yes` is the same truth
|
|
40
|
+
* `ufw enable` maintains.
|
|
41
|
+
*/
|
|
42
|
+
async function ufwIsActive(ctx) {
|
|
43
|
+
const r = await ctx.runner.capture('sh', [
|
|
44
|
+
'-c',
|
|
45
|
+
'grep -qi "^ENABLED=yes" /etc/ufw/ufw.conf 2>/dev/null && echo ufw-enabled || true',
|
|
46
|
+
]);
|
|
47
|
+
return r.stdout.includes('ufw-enabled');
|
|
48
|
+
}
|
|
49
|
+
/** The HTTP status curl saw for a request ("000" = could not connect / no response). */
|
|
50
|
+
async function curlCode(ctx, args, opts) {
|
|
51
|
+
const r = await ctx.runner.capture('curl', ['-s', '-o', '/dev/null', '-w', '%{http_code}', ...args], opts);
|
|
52
|
+
return r.stdout.trim() || '000';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Name of the process listening on `port`, or null when nothing is. Best effort
|
|
56
|
+
* (`ss` output varies, and without root the process name may be hidden) — used
|
|
57
|
+
* only to make a port collision explainable, never to gate the install.
|
|
58
|
+
*/
|
|
59
|
+
export async function portListener(ctx, port) {
|
|
60
|
+
if (ctx.dryRun)
|
|
61
|
+
return null;
|
|
62
|
+
const r = await ctx.runner.capture('ss', ['-ltnp', `( sport = :${port} )`]);
|
|
63
|
+
if (r.code !== 0)
|
|
64
|
+
return null;
|
|
65
|
+
const line = r.stdout.split('\n').find((l) => /LISTEN/.test(l));
|
|
66
|
+
if (!line)
|
|
67
|
+
return null;
|
|
68
|
+
// `users:(("docker-proxy",pid=123,fd=4))` → docker-proxy; unnamed → "another process".
|
|
69
|
+
return /users:\(\("([^"]+)"/.exec(line)?.[1] ?? 'another process';
|
|
70
|
+
}
|
|
71
|
+
/** The interface the cockpit listens on — loopback unless an external-proxy
|
|
72
|
+
* install bound it somewhere the proxy can reach (e.g. the docker bridge). */
|
|
73
|
+
export function upstreamHost(ctx) {
|
|
74
|
+
return ctx.state.bindHost?.trim() || '127.0.0.1';
|
|
75
|
+
}
|
|
76
|
+
/** True once cezar answers on <host>:<port> (any HTTP status = the process is up). */
|
|
77
|
+
async function isCezarUp(ctx, port) {
|
|
78
|
+
const code = await curlCode(ctx, [`http://${upstreamHost(ctx)}:${port}/`]);
|
|
79
|
+
return code !== '000';
|
|
80
|
+
}
|
|
81
|
+
/** Poll the upstream until cezar responds or the attempts run out. */
|
|
82
|
+
async function waitForCezar(ctx, port, attempts = 15) {
|
|
83
|
+
for (let i = 0; i < attempts; i++) {
|
|
84
|
+
if (await isCezarUp(ctx, port))
|
|
85
|
+
return true;
|
|
86
|
+
// `sleep 1` via the runner keeps this testable (no real timers in unit tests).
|
|
87
|
+
if (i < attempts - 1)
|
|
88
|
+
await ctx.runner.capture('sh', ['-c', 'sleep 1']);
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* After a service is enabled, wait for cezar to actually answer on the loopback
|
|
94
|
+
* port. A running unit that crash-loops (bad WorkingDirectory, missing build)
|
|
95
|
+
* would otherwise leave nginx proxying to nothing (502) while the installer
|
|
96
|
+
* claims success. On failure, point the operator at the service logs.
|
|
97
|
+
*/
|
|
98
|
+
async function confirmCezarRunning(ctx, statusCmd, logsCmd) {
|
|
99
|
+
if (ctx.dryRun) {
|
|
100
|
+
ctx.ui.info(`DRY RUN — would wait for ${productName('cezar')} on ${upstreamHost(ctx)}:${ctx.state.primaryPort}.`);
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const sp = ctx.ui.spinner();
|
|
104
|
+
sp.start(`Waiting for ${productName('cezar')} to start on 127.0.0.1:${ctx.state.primaryPort}…`);
|
|
105
|
+
const up = await waitForCezar(ctx, ctx.state.primaryPort);
|
|
106
|
+
sp.stop(up ? `${productName('cezar')} is running.` : `${productName('cezar')} did not come up.`);
|
|
107
|
+
if (!up) {
|
|
108
|
+
ctx.ui.warn(`${productName('cezar')} is not answering on 127.0.0.1:${ctx.state.primaryPort} yet — nginx will return 502 until it is.\n` +
|
|
109
|
+
`Check the service:\n • ${statusCmd}\n • ${logsCmd}\n` +
|
|
110
|
+
`Common causes: the WorkingDirectory has no built ${productName('cezar')}, or the port is wrong.`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/** nginx -v prints its version banner on stderr. Unknown versions use the compatible syntax. */
|
|
114
|
+
function supportsStandaloneHttp2(version) {
|
|
115
|
+
const match = version && /^(\d+)\.(\d+)\.(\d+)$/.exec(version);
|
|
116
|
+
if (!match)
|
|
117
|
+
return false;
|
|
118
|
+
const [major, minor, patch] = match.slice(1).map(Number);
|
|
119
|
+
return major > 1 || (major === 1 && (minor > 25 || (minor === 25 && patch >= 1)));
|
|
120
|
+
}
|
|
121
|
+
async function installedNginxVersion(ctx) {
|
|
122
|
+
const result = await ctx.runner.capture('nginx', ['-v']);
|
|
123
|
+
if (result.code !== 0)
|
|
124
|
+
return null;
|
|
125
|
+
return /nginx\/(\d+\.\d+\.\d+)/.exec(`${result.stderr}\n${result.stdout}`)?.[1] ?? null;
|
|
126
|
+
}
|
|
127
|
+
/** Add HTTP/2 only to Certbot's TLS listeners, preserving its trailing comments. */
|
|
128
|
+
export function enableHttp2OnTlsListenerSed(vhostPath) {
|
|
129
|
+
const program = `/^[[:space:]]*listen[[:space:]].*443.*[[:space:]]ssl([[:space:]]|;)/{/http2/!s/;/ http2;/;}`;
|
|
130
|
+
return `sed -i -E ${shquote(program)} ${shquote(vhostPath)}`;
|
|
131
|
+
}
|
|
132
|
+
/** Roll back the file if validation or reload fails; mark only a completed edit. */
|
|
133
|
+
export function enableHttp2OnTlsCommand(vhostPath, marker) {
|
|
134
|
+
const backup = `${vhostPath}.cezar-http2-${randomUUID()}`;
|
|
135
|
+
return `cp -p ${shquote(vhostPath)} ${shquote(backup)} && ` +
|
|
136
|
+
`if ${enableHttp2OnTlsListenerSed(vhostPath)} && nginx -t && systemctl reload nginx && ` +
|
|
137
|
+
`printf '\n%s\n' ${shquote(marker)} >> ${shquote(vhostPath)}; then ` +
|
|
138
|
+
`rm -f ${shquote(backup)} || true; ` +
|
|
139
|
+
`else cp -p ${shquote(backup)} ${shquote(vhostPath)} && rm -f ${shquote(backup)} && ` +
|
|
140
|
+
`nginx -t && systemctl reload nginx; false; fi`;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* The nginx server block: auth_basic identity + SSE-safe proxy to loopback.
|
|
144
|
+
* `serverName` defaults to the catch-all `_`; the SSL step rewrites it to the
|
|
145
|
+
* real domain so the `certbot --nginx` plugin can find this vhost to edit.
|
|
146
|
+
*/
|
|
147
|
+
export function nginxVhost(port, serverName = '_', htpasswd = '/etc/cezar/htpasswd', nginxVersion = null) {
|
|
148
|
+
// Older nginx rejects `http2 on;` outright. Its SSL step adds `http2` to
|
|
149
|
+
// Certbot's TLS listener instead, retaining multiplexing for SSE streams.
|
|
150
|
+
const http2 = supportsStandaloneHttp2(nginxVersion)
|
|
151
|
+
? `\n # Multiplex long-lived SSE streams over one TLS connection.\n http2 on;\n`
|
|
152
|
+
: '';
|
|
153
|
+
return `# Managed by cezar server-install — do not edit by hand.
|
|
154
|
+
server {
|
|
155
|
+
listen 80;
|
|
156
|
+
listen [::]:80;
|
|
157
|
+
server_name ${serverName};
|
|
158
|
+
|
|
159
|
+
${http2}
|
|
160
|
+
auth_basic "cezar";
|
|
161
|
+
auth_basic_user_file ${htpasswd};
|
|
162
|
+
|
|
163
|
+
location / {
|
|
164
|
+
proxy_pass http://127.0.0.1:${port};
|
|
165
|
+
proxy_http_version 1.1;
|
|
166
|
+
proxy_set_header Host $host;
|
|
167
|
+
proxy_set_header X-Real-IP $remote_addr;
|
|
168
|
+
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
169
|
+
proxy_set_header X-Forwarded-Proto $scheme;
|
|
170
|
+
|
|
171
|
+
# ${productName('cezar')} streams SSE (run events). Never buffer it, or the cockpit goes mute.
|
|
172
|
+
proxy_buffering off;
|
|
173
|
+
proxy_read_timeout 3600s;
|
|
174
|
+
proxy_set_header Connection '';
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
`;
|
|
178
|
+
}
|
|
179
|
+
const nginxProxyStep = (rebrand) => ({
|
|
180
|
+
id: 'nginx-proxy',
|
|
181
|
+
title: 'Reverse proxy (nginx + htpasswd)',
|
|
182
|
+
async check(ctx) {
|
|
183
|
+
if (ctx.dryRun)
|
|
184
|
+
return false;
|
|
185
|
+
const nginxOk = await verifyCommand(ctx, 'nginx', ['-v']);
|
|
186
|
+
const vhostOk = await verifyCommand(ctx, 'test', ['-f', recordedSite(ctx, rebrand).vhostEnabled]);
|
|
187
|
+
return nginxOk && vhostOk;
|
|
188
|
+
},
|
|
189
|
+
async run(ctx) {
|
|
190
|
+
// 1) nginx. Record the package as a `shared` artifact only when this run
|
|
191
|
+
// installed it, so uninstall can list it for manual removal without
|
|
192
|
+
// claiming a pre-existing nginx.
|
|
193
|
+
const nginxWasPresent = await verifyCommand(ctx, 'nginx', ['-v']);
|
|
194
|
+
await sudoStep(ctx, {
|
|
195
|
+
description: `Install nginx (the public TLS + auth front for ${productName('cezar', rebrand)}).`,
|
|
196
|
+
command: 'apt-get update && apt-get install -y nginx',
|
|
197
|
+
verify: (c) => verifyCommand(c, 'nginx', ['-v']),
|
|
198
|
+
});
|
|
199
|
+
// 2) identity credentials. This is the HTTP Basic-Auth login nginx will
|
|
200
|
+
// challenge for over HTTPS — i.e. what you type in the browser to reach
|
|
201
|
+
// the cockpit. Suggest the current OS user as a sensible default.
|
|
202
|
+
const suggestedUser = currentUsername();
|
|
203
|
+
const userAnswer = await ctx.ui.text({
|
|
204
|
+
message: 'Cockpit login username (HTTPS Basic-Auth — you type this in the browser to reach the cockpit)',
|
|
205
|
+
placeholder: suggestedUser,
|
|
206
|
+
initialValue: suggestedUser,
|
|
207
|
+
// htpasswd's line format is `user:hash` — a ":" in the username would
|
|
208
|
+
// silently corrupt it into a login that can never succeed.
|
|
209
|
+
validate: (v) => {
|
|
210
|
+
if (!v.trim())
|
|
211
|
+
return 'username is required';
|
|
212
|
+
if (/[:\s]/.test(v.trim()))
|
|
213
|
+
return 'no ":" or whitespace — htpasswd uses ":" as its separator';
|
|
214
|
+
return undefined;
|
|
215
|
+
},
|
|
216
|
+
});
|
|
217
|
+
if (userAnswer === CANCEL)
|
|
218
|
+
throw new StepCancelled();
|
|
219
|
+
const user = String(userAnswer).trim();
|
|
220
|
+
// Set the cockpit password. Interactive operators may auto-generate a strong
|
|
221
|
+
// one (shown once) or type their own. Under `--yes` (no human) there is no
|
|
222
|
+
// menu — the password comes straight from the UI, and the length backstop
|
|
223
|
+
// below refuses an empty one rather than standing up an open cockpit (H1).
|
|
224
|
+
let password;
|
|
225
|
+
if (ctx.assumeYes) {
|
|
226
|
+
const typed = await ctx.ui.password({
|
|
227
|
+
message: `Set the HTTPS cockpit password for "${user}"`,
|
|
228
|
+
validate: (v) => (v.length >= 6 ? undefined : 'use at least 6 characters'),
|
|
229
|
+
});
|
|
230
|
+
if (typed === CANCEL)
|
|
231
|
+
throw new StepCancelled();
|
|
232
|
+
password = String(typed);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
const how = await ctx.ui.select({
|
|
236
|
+
message: `Cockpit password for "${user}" (used with the username to log in over HTTPS)`,
|
|
237
|
+
options: [
|
|
238
|
+
{ value: 'generate', label: 'Generate a strong password for me', hint: 'shown once — save it now' },
|
|
239
|
+
{ value: 'manual', label: 'Type my own password' },
|
|
240
|
+
],
|
|
241
|
+
initialValue: 'generate',
|
|
242
|
+
});
|
|
243
|
+
if (how === CANCEL)
|
|
244
|
+
throw new StepCancelled();
|
|
245
|
+
if (how === 'generate') {
|
|
246
|
+
password = generatePassword();
|
|
247
|
+
ctx.ui.note(`Username: ${user}\nPassword: ${password}\n\nSave these now — this is your cockpit login. ${productName('cezar', rebrand)} stores only a hash; the plaintext is not written anywhere and cannot be recovered.`, 'Generated cockpit credentials');
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
const typed = await ctx.ui.password({
|
|
251
|
+
message: `Set the HTTPS cockpit password for "${user}"`,
|
|
252
|
+
validate: (v) => (v.length >= 6 ? undefined : 'use at least 6 characters'),
|
|
253
|
+
});
|
|
254
|
+
if (typed === CANCEL)
|
|
255
|
+
throw new StepCancelled();
|
|
256
|
+
password = String(typed);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
// The non-interactive UI (`--yes`) cannot invent a password and does not run
|
|
260
|
+
// validators — refuse rather than write an empty-password htpasswd (a public
|
|
261
|
+
// cockpit anyone can open). A real install must set a password interactively.
|
|
262
|
+
if (!ctx.dryRun && String(password).length < 6) {
|
|
263
|
+
throw new StepAborted('a cockpit password (≥6 chars) is required — run server-install without --yes to set one');
|
|
264
|
+
}
|
|
265
|
+
// Keep the credentials in memory (never persisted) so the final verify step
|
|
266
|
+
// can prove an authenticated request actually reaches cezar over the proxy.
|
|
267
|
+
ctx.prefs.cockpit = { user, password };
|
|
268
|
+
// 3) htpasswd file. The hash (not the plaintext) is embedded in the write
|
|
269
|
+
// command; the plaintext is fed to openssl via stdin so it never appears
|
|
270
|
+
// in the process argv (visible to other users via `ps`). apr1 is what
|
|
271
|
+
// nginx's auth_basic expects.
|
|
272
|
+
let hash = '<dry-run-hash>';
|
|
273
|
+
if (!ctx.dryRun) {
|
|
274
|
+
const out = await ctx.runner.capture('openssl', ['passwd', '-apr1', '-stdin'], { input: `${String(password)}\n` });
|
|
275
|
+
hash = out.stdout.trim();
|
|
276
|
+
if (out.code !== 0 || !hash)
|
|
277
|
+
throw new StepAborted('failed to hash the password (openssl) — cannot write htpasswd');
|
|
278
|
+
}
|
|
279
|
+
// nginx workers run as www-data and read auth_basic_user_file per request,
|
|
280
|
+
// so the file must be group-readable by www-data — 0640 root:root would make
|
|
281
|
+
// every request 500. 0640 root:www-data: readable by nginx, not by others.
|
|
282
|
+
// The credential line travels on STDIN (`cat > file`), never in argv — the
|
|
283
|
+
// apr1 hash is offline-crackable, and argv is world-readable via `ps`.
|
|
284
|
+
const { htpasswd, vhostAvailable: vhostAvail, vhostEnabled: vhostEnbl } = recordedSite(ctx, rebrand);
|
|
285
|
+
await sudoStep(ctx, {
|
|
286
|
+
description: 'Write the htpasswd identity file that nginx checks on every request.',
|
|
287
|
+
note: `${htpasswd}\n\n${user}:<apr1 hash of your password>`,
|
|
288
|
+
command: `install -d -m 0755 ${htpasswd.slice(0, htpasswd.lastIndexOf('/'))} && cat > ${htpasswd} && chown root:www-data ${htpasswd} && chmod 0640 ${htpasswd}`,
|
|
289
|
+
input: `${user}:${hash}\n`,
|
|
290
|
+
inputLabel: 'credential line (username:hash)',
|
|
291
|
+
verify: (c) => verifyCommand(c, 'test', ['-f', htpasswd]),
|
|
292
|
+
});
|
|
293
|
+
// Record whether the distro's default site was enabled *before* we disable
|
|
294
|
+
// it, so undo only re-enables it if we were the one who removed it.
|
|
295
|
+
const defaultWasEnabled = await verifyCommand(ctx, 'test', ['-L', '/etc/nginx/sites-enabled/default']);
|
|
296
|
+
// 4) vhost + enable + reload. A named instance already knows its domain, so
|
|
297
|
+
// stamp it into server_name from the start (Host-based routing works
|
|
298
|
+
// immediately and certbot --nginx can find the vhost later). The default
|
|
299
|
+
// instance keeps the catch-all `_` until the SSL step sets a domain.
|
|
300
|
+
const nginxVersion = await installedNginxVersion(ctx);
|
|
301
|
+
const vhost = nginxVhost(ctx.state.primaryPort, ctx.state.domain ?? '_', htpasswd, nginxVersion);
|
|
302
|
+
await writeFileStep(ctx, {
|
|
303
|
+
description: `Write the ${productName('cezar', rebrand)} nginx site, enable it, and reload nginx.`,
|
|
304
|
+
path: vhostAvail,
|
|
305
|
+
content: vhost,
|
|
306
|
+
extra: `ln -sf ${vhostAvail} ${vhostEnbl} && rm -f /etc/nginx/sites-enabled/default && nginx -t && systemctl reload nginx`,
|
|
307
|
+
verify: (c) => verifyCommand(c, 'test', ['-f', vhostEnbl]),
|
|
308
|
+
});
|
|
309
|
+
// 5) firewall: if ufw is active, the cockpit is unreachable until 80/443 are
|
|
310
|
+
// allowed — a common "installed fine but nothing loads" cause. This is a
|
|
311
|
+
// best-effort sub-step of the (required) proxy step: skipping it must not
|
|
312
|
+
// fail the whole install, so a StepSkipped is swallowed here.
|
|
313
|
+
if (!ctx.dryRun && (await ufwIsActive(ctx))) {
|
|
314
|
+
try {
|
|
315
|
+
await sudoStep(ctx, {
|
|
316
|
+
description: 'ufw is active — allow HTTP/HTTPS so the cockpit is reachable.',
|
|
317
|
+
// Self-verifying: the trailing grep makes the (root) command itself
|
|
318
|
+
// fail when the rule did not land — needed because rule listing also
|
|
319
|
+
// requires root, so the unprivileged verify below can't always check.
|
|
320
|
+
command: `ufw allow 'Nginx Full' && ufw status | grep -qi 'Nginx Full'`,
|
|
321
|
+
skippable: true,
|
|
322
|
+
skipHint: 'open ports 80 and 443 yourself, or via a cloud firewall',
|
|
323
|
+
verify: async (c) => {
|
|
324
|
+
if ((await c.runner.capture('sudo', ['-n', 'true'])).code === 0) {
|
|
325
|
+
return ((await c.runner.capture('sudo', ['-n', 'bash', '-lc', "ufw status | grep -qi 'Nginx Full'"])).code === 0);
|
|
326
|
+
}
|
|
327
|
+
// No root and no human in the loop (`--yes`): nobody ran the
|
|
328
|
+
// command, so it cannot have "verified itself" — fail, which the
|
|
329
|
+
// skippable path converts into the loud firewall warning below.
|
|
330
|
+
if (c.assumeYes)
|
|
331
|
+
return false;
|
|
332
|
+
// Interactive delegate: the operator confirmed running the
|
|
333
|
+
// self-verifying command (the trailing grep fails their paste if
|
|
334
|
+
// the rule is missing); we cannot re-check without root.
|
|
335
|
+
c.ui.warn('Cannot list ufw rules without root — trusting the self-verifying command you just ran. ' +
|
|
336
|
+
'Double-check ports 80/443 are reachable.');
|
|
337
|
+
return true;
|
|
338
|
+
},
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
catch (err) {
|
|
342
|
+
if (!(err instanceof StepSkipped))
|
|
343
|
+
throw err;
|
|
344
|
+
ctx.ui.warn('Firewall left unchanged — make sure ports 80 and 443 are reachable, or the cockpit will not load.');
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
const artifacts = [
|
|
348
|
+
owned('file', { path: vhostAvail }),
|
|
349
|
+
owned('symlink', { path: vhostEnbl }),
|
|
350
|
+
owned('htpasswd', { path: htpasswd, name: user }),
|
|
351
|
+
];
|
|
352
|
+
if (defaultWasEnabled)
|
|
353
|
+
artifacts.push(owned('nginx-default', { path: '/etc/nginx/sites-enabled/default' }));
|
|
354
|
+
if (!nginxWasPresent) {
|
|
355
|
+
artifacts.push(shared('package', { name: 'nginx', removeHint: 'sudo apt-get remove -y nginx' }));
|
|
356
|
+
}
|
|
357
|
+
return { artifacts };
|
|
358
|
+
},
|
|
359
|
+
async undo(ctx, created) {
|
|
360
|
+
// Remove the *known* cezar-owned paths (constants), so uninstall works even
|
|
361
|
+
// if server.json was lost and the step was re-recorded with created=null.
|
|
362
|
+
// Only re-enable the default site if the run recorded that it disabled it.
|
|
363
|
+
const restoreDefault = (created?.artifacts ?? []).some((a) => a.type === 'nginx-default');
|
|
364
|
+
const restoreClause = restoreDefault
|
|
365
|
+
? ` && { [ -e /etc/nginx/sites-available/default ] && ln -sf /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default || true; }`
|
|
366
|
+
: '';
|
|
367
|
+
// `shared` packages (nginx, when this install added it) are listed, never
|
|
368
|
+
// auto-removed — the operator may have started depending on them.
|
|
369
|
+
const sharedPkgs = (created?.artifacts ?? []).filter((a) => a.kind === 'shared');
|
|
370
|
+
if (sharedPkgs.length > 0) {
|
|
371
|
+
ctx.ui.note(sharedPkgs.map((a) => a.removeHint ?? a.name ?? '').filter(Boolean).join('\n'), `Installed for ${productName('cezar', rebrand)} but possibly used elsewhere — remove manually if unwanted`);
|
|
372
|
+
}
|
|
373
|
+
// rmdir only succeeds when empty, so removing one instance's
|
|
374
|
+
// htpasswd never nukes another instance's credentials in the same dir.
|
|
375
|
+
const { files, dirs } = sitePathsToRemove(ctx, rebrand);
|
|
376
|
+
const vhostEnbl = files[0];
|
|
377
|
+
await sudoStep(ctx, {
|
|
378
|
+
description: `Remove the ${productName('cezar', rebrand)} nginx site + htpasswd, reload nginx.`,
|
|
379
|
+
command: `rm -f ${files.join(' ')}` +
|
|
380
|
+
restoreClause +
|
|
381
|
+
` && { rmdir ${dirs.join(' ')} 2>/dev/null || true; }` +
|
|
382
|
+
` && { nginx -t && systemctl reload nginx || true; }`,
|
|
383
|
+
verify: (c) => verifyCommand(c, 'sh', ['-c', `! test -f ${vhostEnbl}`]),
|
|
384
|
+
});
|
|
385
|
+
},
|
|
386
|
+
});
|
|
387
|
+
const HOSTNAME_RE = /^(?=.{1,253}$)([a-z0-9](-?[a-z0-9])*\.)+[a-z]{2,}$/i;
|
|
388
|
+
const EMAIL_RE = /^[^@\s]+@[^@\s]+\.[^@\s]+$/;
|
|
389
|
+
const sslStep = (rebrand) => ({
|
|
390
|
+
id: 'ssl',
|
|
391
|
+
title: 'Domain + SSL (Let’s Encrypt)',
|
|
392
|
+
optional: true,
|
|
393
|
+
async check() {
|
|
394
|
+
return false; // optional — the engine gates it with a confirm; certbot is idempotent
|
|
395
|
+
},
|
|
396
|
+
async run(ctx) {
|
|
397
|
+
// A named instance already captured its domain up front (it is the instance
|
|
398
|
+
// key) — reuse it instead of asking again. The default instance still
|
|
399
|
+
// prompts here, since it may be HTTP-only until this step runs.
|
|
400
|
+
const domain = ctx.state.domain
|
|
401
|
+
? ctx.state.domain
|
|
402
|
+
: await ctx.ui.text({
|
|
403
|
+
message: 'Domain pointing at this server (an A/AAAA record must resolve here)',
|
|
404
|
+
placeholder: `cezar.example.com`,
|
|
405
|
+
validate: (v) => (HOSTNAME_RE.test(v.trim()) ? undefined : 'enter a valid domain'),
|
|
406
|
+
});
|
|
407
|
+
if (domain === CANCEL)
|
|
408
|
+
throw new StepCancelled();
|
|
409
|
+
const email = await ctx.ui.text({
|
|
410
|
+
message: 'Email for Let’s Encrypt renewal notices',
|
|
411
|
+
placeholder: 'you@example.com',
|
|
412
|
+
validate: (v) => (EMAIL_RE.test(v.trim()) ? undefined : 'enter a valid email'),
|
|
413
|
+
});
|
|
414
|
+
if (email === CANCEL)
|
|
415
|
+
throw new StepCancelled();
|
|
416
|
+
const certbotWasPresent = await verifyCommand(ctx, 'certbot', ['--version']);
|
|
417
|
+
await sudoStep(ctx, {
|
|
418
|
+
description: 'Install certbot + its nginx plugin.',
|
|
419
|
+
command: 'apt-get install -y certbot python3-certbot-nginx',
|
|
420
|
+
verify: (c) => verifyCommand(c, 'certbot', ['--version']),
|
|
421
|
+
});
|
|
422
|
+
// Point the nginx site's server_name at the domain BEFORE running certbot.
|
|
423
|
+
// The `certbot --nginx` plugin locates the vhost by matching `server_name`
|
|
424
|
+
// against `-d <domain>`; with the catch-all `server_name _;` it fails with
|
|
425
|
+
// "Unable to find a VirtualHost". Doing this first also means that if the
|
|
426
|
+
// operator skips certbot now, a later manual `certbot --nginx -d <domain>`
|
|
427
|
+
// just works — no "could not find a matching server" (issue #8).
|
|
428
|
+
//
|
|
429
|
+
// On a RE-RUN (--reconfigure ssl / --reinstall / resume) the vhost may
|
|
430
|
+
// already carry certbot's TLS edits (`listen 443 ssl`, `ssl_certificate`).
|
|
431
|
+
// Rewriting it with the plain-HTTP template would take working HTTPS down
|
|
432
|
+
// BEFORE certbot runs again — and leave it down if certbot then fails. So
|
|
433
|
+
// when TLS config is present, only the `server_name` lines are updated
|
|
434
|
+
// in place; the hostname regex bars every sed/shell metacharacter.
|
|
435
|
+
const trimmedDomain = String(domain).trim();
|
|
436
|
+
// Record the domain on the instance record so a resume / redeploy / verify
|
|
437
|
+
// (and the nginx server_name) all agree on it, even for the default instance
|
|
438
|
+
// that entered its domain here rather than up front.
|
|
439
|
+
ctx.state.domain = trimmedDomain;
|
|
440
|
+
const { vhostAvailable: vhostAvail, vhostEnabled: vhostEnbl, htpasswd } = recordedSite(ctx, rebrand);
|
|
441
|
+
const vhostHasTls = await verifyCommand(ctx, 'sh', ['-c', `grep -qs ssl_certificate ${vhostAvail}`]);
|
|
442
|
+
const nginxVersion = await installedNginxVersion(ctx);
|
|
443
|
+
if (vhostHasTls) {
|
|
444
|
+
await sudoStep(ctx, {
|
|
445
|
+
description: `Update server_name to ${trimmedDomain} in the existing TLS-enabled nginx site (certbot config preserved).`,
|
|
446
|
+
command: `sed -i 's/^\\([[:space:]]*\\)server_name .*;/\\1server_name ${trimmedDomain};/' ${vhostAvail} && nginx -t && systemctl reload nginx`,
|
|
447
|
+
verify: (c) => verifyCommand(c, 'sh', ['-c', `grep -qF ${shquote(`server_name ${trimmedDomain}`)} ${vhostAvail}`]),
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
else {
|
|
451
|
+
const domainVhost = nginxVhost(ctx.state.primaryPort, trimmedDomain, htpasswd, nginxVersion);
|
|
452
|
+
await writeFileStep(ctx, {
|
|
453
|
+
description: `Point the nginx site at ${trimmedDomain} so certbot can configure TLS for it.`,
|
|
454
|
+
path: vhostAvail,
|
|
455
|
+
content: domainVhost,
|
|
456
|
+
extra: `ln -sf ${vhostAvail} ${vhostEnbl} && nginx -t && systemctl reload nginx`,
|
|
457
|
+
verify: (c) => verifyCommand(c, 'sh', ['-c', `grep -qF ${shquote(`server_name ${trimmedDomain}`)} ${vhostAvail}`]),
|
|
458
|
+
});
|
|
459
|
+
}
|
|
460
|
+
// certbot can legitimately fail on external state (DNS not pointed yet, LE
|
|
461
|
+
// rate limit). Route it through sudoStep so it honors the sudo/delegate
|
|
462
|
+
// choice (issue #7) and offers Skip on repeated failure (issue #8) — on
|
|
463
|
+
// skip, nginx is already configured for a later manual certbot run.
|
|
464
|
+
await sudoStep(ctx, {
|
|
465
|
+
description: `Obtain and install a Let’s Encrypt certificate for ${String(domain).trim()} (adds HTTPS + redirect).`,
|
|
466
|
+
command: `certbot --nginx -d ${shquote(String(domain).trim())} --non-interactive --agree-tos -m ${shquote(String(email).trim())} --redirect`,
|
|
467
|
+
skippable: true,
|
|
468
|
+
skipHint: `run later: sudo certbot --nginx -d ${String(domain).trim()}`,
|
|
469
|
+
// Verify via the nginx vhost, NOT /etc/letsencrypt/live — that dir is 0700
|
|
470
|
+
// root, so a non-root `test -d` (the operator ran certbot themselves) fails
|
|
471
|
+
// with permission-denied and reports a false failure even when the cert was
|
|
472
|
+
// issued. certbot --nginx writes `ssl_certificate …` into the vhost, which
|
|
473
|
+
// is world-readable, so grepping it works without root.
|
|
474
|
+
verify: (c) => verifyCommand(c, 'sh', ['-c', `grep -qs ssl_certificate ${vhostAvail} ${vhostEnbl}`]),
|
|
475
|
+
});
|
|
476
|
+
if (!supportsStandaloneHttp2(nginxVersion)) {
|
|
477
|
+
// Certbot has now installed the TLS listeners. Keep the existing TLS site
|
|
478
|
+
// intact on reconfiguration; the edit is idempotent and touches only :443.
|
|
479
|
+
try {
|
|
480
|
+
const marker = `# cezar-http2-validated ${randomUUID()}`;
|
|
481
|
+
await sudoStep(ctx, {
|
|
482
|
+
description: 'Enable HTTP/2 on the nginx TLS listeners.',
|
|
483
|
+
command: enableHttp2OnTlsCommand(vhostAvail, marker),
|
|
484
|
+
skippable: true,
|
|
485
|
+
skipHint: `add http2 to the TLS listen lines in ${vhostAvail}, then reload nginx`,
|
|
486
|
+
// A matching listener alone cannot prove `nginx -t` and reload ran:
|
|
487
|
+
// sudoStep deliberately ignores a command's exit when verification
|
|
488
|
+
// succeeds, and delegate mode has no exit status to inspect at all.
|
|
489
|
+
verify: (c) => verifyCommand(c, 'sh', ['-c',
|
|
490
|
+
`grep -qF ${shquote(marker)} ${shquote(vhostAvail)} && grep -Eqs '^[[:space:]]*listen.*443.*http2' ${shquote(vhostAvail)}`,
|
|
491
|
+
]),
|
|
492
|
+
});
|
|
493
|
+
}
|
|
494
|
+
catch (error) {
|
|
495
|
+
if (!(error instanceof StepSkipped))
|
|
496
|
+
throw error;
|
|
497
|
+
ctx.ui.warn('HTTPS is configured, but HTTP/2 is unavailable; long-lived SSE streams may exhaust the browser connection pool.');
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
ctx.state.publicUrl = `https://${trimmedDomain}`;
|
|
501
|
+
// The cert + its auto-renewal timer are `shared`: uninstall lists them, it
|
|
502
|
+
// does not delete them (removing a cert can break other vhosts). Same for
|
|
503
|
+
// the certbot packages when this run installed them.
|
|
504
|
+
const artifacts = [
|
|
505
|
+
shared('cert', { name: trimmedDomain, removeHint: `sudo certbot delete --cert-name ${trimmedDomain}` }),
|
|
506
|
+
];
|
|
507
|
+
if (!certbotWasPresent) {
|
|
508
|
+
artifacts.push(shared('package', {
|
|
509
|
+
name: 'certbot + python3-certbot-nginx',
|
|
510
|
+
removeHint: 'sudo apt-get remove -y certbot python3-certbot-nginx',
|
|
511
|
+
}));
|
|
512
|
+
}
|
|
513
|
+
return { artifacts };
|
|
514
|
+
},
|
|
515
|
+
async undo(ctx, created) {
|
|
516
|
+
const cert = (created?.artifacts ?? []).find((a) => a.type === 'cert');
|
|
517
|
+
if (cert) {
|
|
518
|
+
ctx.ui.note(`The TLS certificate for ${cert.name ?? 'your domain'} and its auto-renewal timer were left in place.\nRemove them yourself if you want them gone:\n${cert.removeHint ?? ''}`, 'SSL');
|
|
519
|
+
}
|
|
520
|
+
const pkgs = (created?.artifacts ?? []).filter((a) => a.type === 'package');
|
|
521
|
+
if (pkgs.length > 0) {
|
|
522
|
+
ctx.ui.note(pkgs.map((a) => a.removeHint ?? a.name ?? '').filter(Boolean).join('\n'), `Installed for ${productName('cezar', rebrand)} but possibly used elsewhere — remove manually if unwanted`);
|
|
523
|
+
}
|
|
524
|
+
// The vhost (with certbot’s edits) is removed by the nginx-proxy step’s undo.
|
|
525
|
+
},
|
|
526
|
+
});
|
|
527
|
+
/**
|
|
528
|
+
* systemd unit that runs cezar loopback-bound with CEZ_REMOTE=1.
|
|
529
|
+
*
|
|
530
|
+
* `execStart` must be an ABSOLUTE command — systemd resolves the ExecStart
|
|
531
|
+
* executable against its OWN compiled-in PATH (/usr/local/bin:/usr/bin:…), NOT
|
|
532
|
+
* the unit's `Environment=PATH`, so a bare `cezar` gives status=203/EXEC
|
|
533
|
+
* ("Unable to locate executable"). `resolveExecStart` therefore returns an
|
|
534
|
+
* absolute `"<node> <entry.js>"`. We still set `Environment=PATH` (with the
|
|
535
|
+
* installer's node dir) for any child process the app spawns.
|
|
536
|
+
*/
|
|
537
|
+
export function systemdUnit(repoRoot, port, scope, execStart, bindHost, _rebrand = REBRAND_SWITCH) {
|
|
538
|
+
const userLine = scope === 'system' ? `User=${userInfo().username}\n` : '';
|
|
539
|
+
const installTarget = scope === 'system' ? 'multi-user.target' : 'default.target';
|
|
540
|
+
// Give the service the operator's own PATH (node dir + the login PATH the CLI
|
|
541
|
+
// merged in, e.g. ~/.local/bin and nvm) so cezar can spawn claude / gh / codex
|
|
542
|
+
// at runtime — systemd's default PATH has none of those.
|
|
543
|
+
const pathDirs = [dirname(process.execPath), ...(process.env.PATH ?? '').split(':'), '/usr/local/bin', '/usr/bin', '/bin']
|
|
544
|
+
.filter((d, i, a) => d && d !== '.' && a.indexOf(d) === i);
|
|
545
|
+
// systemd expands `%` specifiers in Environment/ExecStart values — a literal
|
|
546
|
+
// `%` (possible in an nvm dir name) must be doubled or the unit fails to load.
|
|
547
|
+
const sysd = (s) => s.replace(/%/g, '%%');
|
|
548
|
+
// Loopback stays the default (and stays flag-less, so existing units are
|
|
549
|
+
// byte-identical); an external-proxy install binds an interface its proxy can
|
|
550
|
+
// actually reach — a container-based proxy cannot dial the host's loopback.
|
|
551
|
+
const bind = bindHost?.trim() && bindHost.trim() !== '127.0.0.1' ? ` --bind-host ${bindHost.trim()}` : '';
|
|
552
|
+
return `# Managed by cezar server-install — do not edit by hand.
|
|
553
|
+
[Unit]
|
|
554
|
+
Description=cezar cockpit
|
|
555
|
+
After=network-online.target
|
|
556
|
+
Wants=network-online.target
|
|
557
|
+
|
|
558
|
+
[Service]
|
|
559
|
+
Type=simple
|
|
560
|
+
${userLine}WorkingDirectory=${repoRoot}
|
|
561
|
+
${Object.entries(productEnvEntries('REMOTE', '1', true)).reverse().map(([key, value]) => `Environment=${key}=${value}`).join('\n')}
|
|
562
|
+
Environment=PATH=${sysd(pathDirs.join(':'))}
|
|
563
|
+
ExecStart=${sysd(execStart)} serve --no-open --port ${port}${sysd(bind)}
|
|
564
|
+
Restart=on-failure
|
|
565
|
+
RestartSec=5
|
|
566
|
+
|
|
567
|
+
[Install]
|
|
568
|
+
WantedBy=${installTarget}
|
|
569
|
+
`;
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
572
|
+
* Decide the absolute ExecStart command for the service, mirroring how the
|
|
573
|
+
* installer itself was launched so the box keeps running the same cezar:
|
|
574
|
+
*
|
|
575
|
+
* - Launched via `npx <alias>` (the CLI package lives in npm's ephemeral
|
|
576
|
+
* `_npx` cache, which gets cleaned): the service can't point there, so it
|
|
577
|
+
* reinstalls-and-runs the same way — `<abs npx> --yes cezarion` (bare `npx`
|
|
578
|
+
* would 203/EXEC, so npx is made absolute).
|
|
579
|
+
* - A stable install (a checkout, or a global `cezarion`/`cez`): run the
|
|
580
|
+
* CLI's own built entry `<node> <pkg>/dist/index.js`, or a resolved global
|
|
581
|
+
* bin. Absolute node + absolute script → systemd never resolves off PATH.
|
|
582
|
+
*/
|
|
583
|
+
export function serviceExecStart(opts, rebrand = REBRAND_SWITCH) {
|
|
584
|
+
const cliPackage = productIdentity(rebrand).npmAlias;
|
|
585
|
+
const entry = rebrand ? join(dirname(opts.entry), `${productIdentity(rebrand).command}.js`) : opts.entry;
|
|
586
|
+
if (/[/\\]_npx[/\\]/.test(opts.pkgRoot))
|
|
587
|
+
return `${opts.npxPath} --yes ${cliPackage}`;
|
|
588
|
+
if (opts.entryExists)
|
|
589
|
+
return `${opts.node} ${entry}`;
|
|
590
|
+
if (opts.globalBin)
|
|
591
|
+
return `${opts.node} ${opts.globalBin}`;
|
|
592
|
+
return `${opts.node} ${entry}`;
|
|
593
|
+
}
|
|
594
|
+
async function resolveExecStart(ctx, rebrand) {
|
|
595
|
+
const cliPackage = productIdentity(rebrand).npmAlias;
|
|
596
|
+
const node = process.execPath; // absolute node running this installer
|
|
597
|
+
// The CLI's OWN package root (…/dist/server-install/platforms/ → up 3), NOT the
|
|
598
|
+
// repo being operated on — `--repo` / cwd can differ from where cezar lives.
|
|
599
|
+
const pkgRoot = resolve(fileURLToPath(new URL('../../..', import.meta.url)));
|
|
600
|
+
const entry = join(pkgRoot, 'dist', 'index.js');
|
|
601
|
+
let npxPath = join(dirname(node), 'npx');
|
|
602
|
+
if (ctx.dryRun)
|
|
603
|
+
return serviceExecStart({ node, pkgRoot, entry, entryExists: true, npxPath }, rebrand);
|
|
604
|
+
// A standalone node binary has no adjacent npx — fall back to the login
|
|
605
|
+
// shell's, or ExecStart would 203/EXEC (the exact bug 9fea263 fixed).
|
|
606
|
+
if (!existsSync(npxPath)) {
|
|
607
|
+
const found = (await ctx.runner.capture('bash', ['-lc', 'command -v npx'])).stdout.trim().split('\n').pop()?.trim();
|
|
608
|
+
if (found)
|
|
609
|
+
npxPath = found;
|
|
610
|
+
}
|
|
611
|
+
let globalBin;
|
|
612
|
+
if (!existsSync(entry) && !/[/\\]_npx[/\\]/.test(pkgRoot)) {
|
|
613
|
+
const out = (await ctx.runner.capture('bash', ['-lc', rebrand ? `command -v ${productIdentity(rebrand).command}` : `command -v ${cliPackage} || command -v cez`])).stdout.trim();
|
|
614
|
+
globalBin = out.split('\n').map((s) => s.trim()).filter(Boolean).pop();
|
|
615
|
+
if (!globalBin) {
|
|
616
|
+
ctx.ui.warn(`Could not locate a built ${productName('cezar', rebrand)} to run (${entry} missing, no global ${cliPackage}).\n` +
|
|
617
|
+
`Install it (npm i -g ${cliPackage}) or build the checkout, then re-run with --reconfigure autostart.`);
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
return serviceExecStart({ node, pkgRoot, entry, entryExists: existsSync(entry), npxPath, globalBin }, rebrand);
|
|
621
|
+
}
|
|
622
|
+
const autostartStep = (rebrand) => ({
|
|
623
|
+
id: 'autostart',
|
|
624
|
+
// Required: after install the cockpit must actually be serving, so cezar runs
|
|
625
|
+
// as a systemd service — started now AND enabled on boot. (id kept as
|
|
626
|
+
// `autostart` for state compatibility.)
|
|
627
|
+
title: `Run ${productName('cezar', rebrand)} as a service (systemd — starts now + on boot)`,
|
|
628
|
+
async check() {
|
|
629
|
+
return false; // always (re)assert the service is installed and running
|
|
630
|
+
},
|
|
631
|
+
async run(ctx) {
|
|
632
|
+
const UNIT_NAME = recordedUnit(ctx, rebrand).name, hint = unitHint(ctx, rebrand);
|
|
633
|
+
const execStart = await resolveExecStart(ctx, rebrand);
|
|
634
|
+
// Prefer a rootless `systemd --user` service + linger; fall back to a system
|
|
635
|
+
// unit (via sudoStep) when the user bus is not reachable. `show-environment`
|
|
636
|
+
// exits 0 iff the user manager is up — on a headless SSH box with no session
|
|
637
|
+
// it fails (exit 1, not 127), which the old `!== 127` test misread as "up".
|
|
638
|
+
const userBus = ctx.dryRun ? true : (await ctx.runner.capture('systemctl', ['--user', 'show-environment'])).code === 0;
|
|
639
|
+
if (userBus) {
|
|
640
|
+
const unitPath = join(homedir(), '.config', 'systemd', 'user', UNIT_NAME);
|
|
641
|
+
if (ctx.dryRun) {
|
|
642
|
+
ctx.ui.info(`DRY RUN — would write ${unitPath} and enable it (systemctl --user enable --now ${hint}).`);
|
|
643
|
+
}
|
|
644
|
+
else {
|
|
645
|
+
mkdirSync(join(homedir(), '.config', 'systemd', 'user'), { recursive: true });
|
|
646
|
+
writeFileSync(unitPath, systemdUnit(ctx.repoRoot, ctx.state.primaryPort, 'user', execStart, ctx.state.bindHost, rebrand), 'utf8');
|
|
647
|
+
await ctx.runner.interactive('systemctl', ['--user', 'daemon-reload']);
|
|
648
|
+
await ctx.runner.interactive('systemctl', ['--user', 'enable', '--now', UNIT_NAME]);
|
|
649
|
+
if ((await ctx.runner.capture('systemctl', ['--user', 'is-enabled', UNIT_NAME])).code !== 0) {
|
|
650
|
+
ctx.ui.warn(`The user service did not enable cleanly — check \`systemctl --user status ${hint}\`.`);
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
// Linger lets the user service survive logout / start at boot — usually
|
|
654
|
+
// needs root. Record it as owned only when THIS run turned it on, so
|
|
655
|
+
// uninstall reverses exactly what install changed (a pre-existing linger
|
|
656
|
+
// may serve other user services).
|
|
657
|
+
const osUser = userInfo().username;
|
|
658
|
+
const lingerWasOn = await verifyCommand(ctx, 'loginctl', ['show-user', osUser, '-p', 'Linger'], (r) => r.stdout.includes('Linger=yes'));
|
|
659
|
+
await sudoStep(ctx, {
|
|
660
|
+
description: 'Enable linger so the cockpit starts at boot without a login session.',
|
|
661
|
+
command: `loginctl enable-linger ${shquote(osUser)}`,
|
|
662
|
+
verify: (c) => verifyCommand(c, 'loginctl', ['show-user', osUser, '-p', 'Linger'], (r) => r.stdout.includes('Linger=yes')),
|
|
663
|
+
});
|
|
664
|
+
await confirmCezarRunning(ctx, `systemctl --user status ${hint}`, `journalctl --user -u ${hint} -n 50 --no-pager`);
|
|
665
|
+
const artifacts = [owned('service', { name: UNIT_NAME, scope: 'user', path: unitPath })];
|
|
666
|
+
if (!lingerWasOn)
|
|
667
|
+
artifacts.push(owned('linger', { name: osUser }));
|
|
668
|
+
return { artifacts };
|
|
669
|
+
}
|
|
670
|
+
// System unit fallback.
|
|
671
|
+
await writeFileStep(ctx, {
|
|
672
|
+
description: `Install the ${productName('cezar', rebrand)} systemd unit, start it now, and enable it at boot.`,
|
|
673
|
+
path: `/etc/systemd/system/${UNIT_NAME}`,
|
|
674
|
+
content: systemdUnit(ctx.repoRoot, ctx.state.primaryPort, 'system', execStart, ctx.state.bindHost, rebrand),
|
|
675
|
+
extra: `systemctl daemon-reload && systemctl enable --now ${UNIT_NAME}`,
|
|
676
|
+
verify: (c) => verifyCommand(c, 'systemctl', ['is-enabled', UNIT_NAME]),
|
|
677
|
+
});
|
|
678
|
+
await confirmCezarRunning(ctx, `sudo systemctl status ${hint}`, `sudo journalctl -u ${hint} -n 50 --no-pager`);
|
|
679
|
+
return { artifacts: [owned('service', { name: UNIT_NAME, scope: 'system', path: `/etc/systemd/system/${UNIT_NAME}` })] };
|
|
680
|
+
},
|
|
681
|
+
async undo(ctx, created) {
|
|
682
|
+
const svc = (created?.artifacts ?? []).find((a) => a.type === 'service');
|
|
683
|
+
const UNIT_NAME = recordedUnit(ctx, rebrand).name;
|
|
684
|
+
// Reverse linger only when install recorded that it enabled it.
|
|
685
|
+
const linger = (created?.artifacts ?? []).find((a) => a.type === 'linger');
|
|
686
|
+
if (svc?.scope === 'user') {
|
|
687
|
+
if (!ctx.dryRun) {
|
|
688
|
+
await ctx.runner.interactive('systemctl', ['--user', 'disable', '--now', UNIT_NAME]);
|
|
689
|
+
if (svc.path)
|
|
690
|
+
rmSync(svc.path, { force: true });
|
|
691
|
+
await ctx.runner.interactive('systemctl', ['--user', 'daemon-reload']);
|
|
692
|
+
}
|
|
693
|
+
else {
|
|
694
|
+
ctx.ui.info('DRY RUN — would disable and remove the user service.');
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
else if (svc) {
|
|
698
|
+
await sudoStep(ctx, {
|
|
699
|
+
description: `Disable and remove the ${productName('cezar', rebrand)} systemd unit.`,
|
|
700
|
+
command: `systemctl disable --now ${UNIT_NAME}; rm -f /etc/systemd/system/${UNIT_NAME} && systemctl daemon-reload`,
|
|
701
|
+
verify: (c) => verifyCommand(c, 'sh', ['-c', `! systemctl is-enabled ${UNIT_NAME}`]),
|
|
702
|
+
});
|
|
703
|
+
}
|
|
704
|
+
if (linger?.name) {
|
|
705
|
+
await sudoStep(ctx, {
|
|
706
|
+
description: 'Disable linger (this install enabled it; nothing else needs it).',
|
|
707
|
+
command: `loginctl disable-linger ${shquote(linger.name)}`,
|
|
708
|
+
verify: (c) => verifyCommand(c, 'loginctl', ['show-user', linger.name ?? '', '-p', 'Linger'], (r) => r.stdout.includes('Linger=no')),
|
|
709
|
+
});
|
|
710
|
+
}
|
|
711
|
+
},
|
|
712
|
+
});
|
|
713
|
+
/**
|
|
714
|
+
* `--external-proxy` verification: confirm the cockpit is listening on the
|
|
715
|
+
* interface the operator's proxy will dial, then hand them the routing snippet.
|
|
716
|
+
* cezar ships no auth of its own, so this is also where we say — unmissably —
|
|
717
|
+
* that the front they own has to enforce it.
|
|
718
|
+
*/
|
|
719
|
+
async function verifyBehindExternalProxy(ctx, unit) {
|
|
720
|
+
const port = ctx.state.primaryPort;
|
|
721
|
+
const host = upstreamHost(ctx);
|
|
722
|
+
const target = `http://${host}:${port}`;
|
|
723
|
+
const domain = ctx.state.domain ?? '<your-domain>';
|
|
724
|
+
if (ctx.dryRun) {
|
|
725
|
+
ctx.ui.info(`DRY RUN — would verify ${productName('cezar')} answers on ${target} and print the proxy routing snippet.`);
|
|
726
|
+
return { artifacts: [] };
|
|
727
|
+
}
|
|
728
|
+
if (!(await waitForCezar(ctx, port))) {
|
|
729
|
+
ctx.ui.error(`${productName('cezar')} is not answering on ${target}.\n\n` +
|
|
730
|
+
`Diagnostics on the server:\n` +
|
|
731
|
+
` • systemctl --user status ${unit} (or: sudo systemctl status ${unit})\n` +
|
|
732
|
+
` • sudo ss -ltnp | grep :${port}\n` +
|
|
733
|
+
(host === '127.0.0.1'
|
|
734
|
+
? ''
|
|
735
|
+
: ` • is ${host} a real local interface? (ip -brief addr) — a container-based proxy\n` +
|
|
736
|
+
` usually reaches the host on the docker bridge, commonly 172.17.0.1\n`));
|
|
737
|
+
throw new StepAborted('cockpit verification failed — see the diagnostics above');
|
|
738
|
+
}
|
|
739
|
+
ctx.ui.success(`Cockpit is up and listening on ${target}.`);
|
|
740
|
+
ctx.ui.warn(`${productName('cezar')} has NO built-in authentication in this mode — your reverse proxy MUST enforce it. ` +
|
|
741
|
+
'Anyone who can reach ' + target + ' can run agents on this box.');
|
|
742
|
+
ctx.ui.message([
|
|
743
|
+
`Point your existing proxy at ${target} for ${domain}. For Dokploy / Traefik,`,
|
|
744
|
+
`add a file-provider config (Traefik runs in a container, so it cannot use 127.0.0.1):`,
|
|
745
|
+
``,
|
|
746
|
+
` http:`,
|
|
747
|
+
` routers:`,
|
|
748
|
+
` cezar:`,
|
|
749
|
+
` rule: "Host(\`${domain}\`)"`,
|
|
750
|
+
` entryPoints: [websecure]`,
|
|
751
|
+
` middlewares: [cezar-auth]`,
|
|
752
|
+
` service: cezar`,
|
|
753
|
+
` tls: { certResolver: letsencrypt }`,
|
|
754
|
+
` services:`,
|
|
755
|
+
` cezar:`,
|
|
756
|
+
` loadBalancer:`,
|
|
757
|
+
` servers: [{ url: "${target}" }]`,
|
|
758
|
+
` middlewares:`,
|
|
759
|
+
` cezar-auth:`,
|
|
760
|
+
` basicAuth:`,
|
|
761
|
+
` users: ["USER:$$apr1$$...."] # htpasswd -nb user pass (double every $)`,
|
|
762
|
+
``,
|
|
763
|
+
`Keep ${host}:${port} off the public internet (ufw / cloud firewall) — the proxy`,
|
|
764
|
+
`should be the only thing that can reach it.`,
|
|
765
|
+
].join('\n'));
|
|
766
|
+
return { artifacts: [] };
|
|
767
|
+
}
|
|
768
|
+
const identityStep = (rebrand) => ({
|
|
769
|
+
id: 'identity',
|
|
770
|
+
title: `Verify the cockpit end-to-end (auth + HTTPS reach ${productName('cezar', rebrand)})`,
|
|
771
|
+
async check() {
|
|
772
|
+
return false; // always re-verify; it creates nothing
|
|
773
|
+
},
|
|
774
|
+
async run(ctx) {
|
|
775
|
+
// External proxy: cezar installed no nginx, so there is no auth challenge of
|
|
776
|
+
// ours to probe. All we can (and should) verify is that the cockpit is
|
|
777
|
+
// actually listening where the operator's proxy will look for it.
|
|
778
|
+
if (ctx.state.externalProxy)
|
|
779
|
+
return verifyBehindExternalProxy(ctx, recordedUnit(ctx, rebrand).name);
|
|
780
|
+
if (ctx.dryRun) {
|
|
781
|
+
ctx.ui.info(`DRY RUN — would verify auth (401 for anon) AND that an authenticated request reaches ${productName('cezar', rebrand)}.`);
|
|
782
|
+
return { artifacts: [] };
|
|
783
|
+
}
|
|
784
|
+
const port = ctx.state.primaryPort;
|
|
785
|
+
const https = ctx.state.publicUrl?.startsWith('https://') ?? false;
|
|
786
|
+
const base = https ? 'https://127.0.0.1/' : 'http://127.0.0.1/';
|
|
787
|
+
const tls = https ? ['-k'] : [];
|
|
788
|
+
// When several instances share nginx, a bare 127.0.0.1 request hits whatever
|
|
789
|
+
// vhost nginx treats as default. Send this instance's own Host header so the
|
|
790
|
+
// probe verifies THIS cockpit's vhost, not a sibling's.
|
|
791
|
+
const host = ctx.state.domain ? ['-H', `Host: ${ctx.state.domain}`] : [];
|
|
792
|
+
// 1) Is cezar actually listening on the loopback upstream? nginx challenges
|
|
793
|
+
// auth *before* proxying, so an anonymous 401 alone does NOT prove the
|
|
794
|
+
// backend is up — check the upstream directly.
|
|
795
|
+
const upstreamUp = await isCezarUp(ctx, port);
|
|
796
|
+
// 2) An anonymous request through nginx must be challenged (auth is active).
|
|
797
|
+
const anonCode = await curlCode(ctx, [...tls, ...host, base]);
|
|
798
|
+
const authEnforced = anonCode === '401';
|
|
799
|
+
// 3) The real proof: an AUTHENTICATED request reaches cezar (2xx/3xx — not
|
|
800
|
+
// 401/403 = bad creds, not 502/504 = upstream down). Credentials are read
|
|
801
|
+
// from stdin (curl -K -) so they never land in argv. `null` = not testable
|
|
802
|
+
// (a resume where the plaintext password is no longer in memory).
|
|
803
|
+
let authedOk = null;
|
|
804
|
+
const cred = ctx.prefs.cockpit;
|
|
805
|
+
if (cred) {
|
|
806
|
+
// curl's config format requires `\` and `"` escaped inside the quoted
|
|
807
|
+
// value — both are legal password characters; unescaped they break the
|
|
808
|
+
// config parse and fail a WORKING install with "bad credentials".
|
|
809
|
+
const curlCfgQuote = (s) => s.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
810
|
+
const code = await curlCode(ctx, [...tls, ...host, '-K', '-', base], {
|
|
811
|
+
input: `user = "${curlCfgQuote(cred.user)}:${curlCfgQuote(cred.password)}"\n`,
|
|
812
|
+
});
|
|
813
|
+
authedOk = /^[23]\d\d$/.test(code);
|
|
814
|
+
}
|
|
815
|
+
const url = ctx.state.publicUrl ?? `http://<this-server>`;
|
|
816
|
+
const coreOk = upstreamUp && authEnforced && authedOk !== false;
|
|
817
|
+
if (coreOk) {
|
|
818
|
+
ctx.ui.success(`Cockpit is live at ${url} — ${authedOk ? `an authenticated request reached ${productName('cezar', rebrand)}` : `auth is enforced and ${productName('cezar', rebrand)} is up`}. ` +
|
|
819
|
+
'Log in with the username and password you set.');
|
|
820
|
+
if (!https) {
|
|
821
|
+
ctx.ui.warn('This cockpit is HTTP-only (no domain/SSL configured). To serve it over HTTPS with this same auth, ' +
|
|
822
|
+
commandText('re-run: cez server-install --platform ubuntu-vps --reconfigure ssl', undefined, rebrand));
|
|
823
|
+
}
|
|
824
|
+
return { artifacts: [] };
|
|
825
|
+
}
|
|
826
|
+
const problems = [];
|
|
827
|
+
if (!upstreamUp)
|
|
828
|
+
problems.push(`${productName('cezar', rebrand)} is not listening on 127.0.0.1:${port} — the service is down, so nginx returns 502`);
|
|
829
|
+
if (!authEnforced)
|
|
830
|
+
problems.push(`nginx did not challenge an anonymous request (got "${anonCode}") — basic auth may not be active`);
|
|
831
|
+
if (authedOk === false)
|
|
832
|
+
problems.push(`an authenticated request did not reach ${productName('cezar', rebrand)} (bad credentials, or the upstream is down)`);
|
|
833
|
+
ctx.ui.error(`The cockpit is NOT fully working yet:\n` +
|
|
834
|
+
problems.map((p) => ` • ${p}`).join('\n') +
|
|
835
|
+
`\n\nDiagnostics on the server:\n` +
|
|
836
|
+
` • systemctl --user status ${unitHint(ctx, rebrand)} (or: sudo systemctl status ${unitHint(ctx, rebrand)})\n` +
|
|
837
|
+
` • sudo systemctl status nginx && sudo nginx -t\n` +
|
|
838
|
+
` • sudo ss -ltnp | grep -E ':80|:443|:${port}'\n` +
|
|
839
|
+
` • ports 80/443 open in ufw AND any cloud firewall (Hetzner/AWS)`);
|
|
840
|
+
// Fail the run so `installed` stays false and the exit code is non-zero —
|
|
841
|
+
// "complete" must mean the cockpit actually works. Re-run to resume (the
|
|
842
|
+
// service/proxy steps are idempotent).
|
|
843
|
+
throw new StepAborted('cockpit verification failed — see the diagnostics above');
|
|
844
|
+
},
|
|
845
|
+
async undo() {
|
|
846
|
+
// nothing created
|
|
847
|
+
},
|
|
848
|
+
});
|
|
849
|
+
export function createUbuntuVps({ rebrand = REBRAND_SWITCH } = {}) {
|
|
850
|
+
const steps = { proxy: nginxProxyStep(rebrand), ssl: sslStep(rebrand), autostart: autostartStep(rebrand), identity: identityStep(rebrand) };
|
|
851
|
+
const health = { identity: steps.identity, waitForCezar };
|
|
852
|
+
return {
|
|
853
|
+
id: 'ubuntu-vps',
|
|
854
|
+
label: 'Ubuntu/Debian VPS',
|
|
855
|
+
async preflight(ctx) {
|
|
856
|
+
if (ctx.dryRun) {
|
|
857
|
+
ctx.ui.info('DRY RUN — skipping OS/privilege preflight.');
|
|
858
|
+
return;
|
|
859
|
+
}
|
|
860
|
+
const uname = await ctx.runner.capture('uname', ['-s']);
|
|
861
|
+
if (!uname.stdout.includes('Linux')) {
|
|
862
|
+
throw new PreflightError('ubuntu-vps requires Linux. On macOS use --platform macosx-ngrok.');
|
|
863
|
+
}
|
|
864
|
+
if ((await ctx.runner.capture('apt-get', ['--version'])).code !== 0) {
|
|
865
|
+
throw new PreflightError('ubuntu-vps requires apt (Debian/Ubuntu).');
|
|
866
|
+
}
|
|
867
|
+
if ((await ctx.runner.capture('id', ['-u'])).stdout.trim() === '0') {
|
|
868
|
+
throw new PreflightError('run server-install as a normal sudo-capable user, not root.');
|
|
869
|
+
}
|
|
870
|
+
// Someone else already owns the HTTP front (Dokploy/Traefik, Coolify, Caddy,
|
|
871
|
+
// a hand-rolled nginx)? Installing ours would fight it for :80/:443 and the
|
|
872
|
+
// proxy step would fail with a confusing bind error — point at the mode that
|
|
873
|
+
// actually fits instead.
|
|
874
|
+
if (!ctx.state.externalProxy) {
|
|
875
|
+
const holder = await portListener(ctx, 80);
|
|
876
|
+
if (holder && !/nginx/i.test(holder)) {
|
|
877
|
+
ctx.ui.warn(`Port 80 is already served by "${holder}" on this host.\n` +
|
|
878
|
+
`${productName('cezar', rebrand)}'s ubuntu-vps install wants :80/:443 for its own nginx, so these will collide.\n\n` +
|
|
879
|
+
`If that is a reverse proxy you rely on (Dokploy/Traefik, Coolify, Caddy), re-run with:\n` +
|
|
880
|
+
commandText(` cez server-install --platform ubuntu-vps --external-proxy${ctx.state.domain ? ` --domain ${ctx.state.domain}` : ''} [--bind-host 172.17.0.1]\n`, undefined, rebrand) +
|
|
881
|
+
`That installs the ${productName('cezar', rebrand)} service only and lets your proxy front it.`);
|
|
882
|
+
}
|
|
883
|
+
}
|
|
884
|
+
},
|
|
885
|
+
steps(ctx) {
|
|
886
|
+
// `--external-proxy`: the box already has a front owning :80/:443 (Dokploy/
|
|
887
|
+
// Traefik, Coolify, Caddy, an existing nginx). Installing our own nginx
|
|
888
|
+
// there would fight it for the ports, so we ship the service only and let
|
|
889
|
+
// that proxy terminate TLS + auth.
|
|
890
|
+
if (ctx.state.externalProxy)
|
|
891
|
+
return [depCheckStep(), steps.autostart, steps.identity];
|
|
892
|
+
// deps → proxy → (optional) ssl → autostart → identity.
|
|
893
|
+
return [depCheckStep(), steps.proxy, steps.ssl, steps.autostart, steps.identity];
|
|
894
|
+
},
|
|
895
|
+
async redeploy(ctx) {
|
|
896
|
+
const UNIT_NAME = recordedUnit(ctx, rebrand).name;
|
|
897
|
+
// Restart the systemd service so it picks up the new cezar (a fresh local
|
|
898
|
+
// build the unit runs from, or a newly published cezarion via npx), then
|
|
899
|
+
// re-run the same end-to-end verify install uses.
|
|
900
|
+
const userUnitPath = join(homedir(), '.config', 'systemd', 'user', UNIT_NAME);
|
|
901
|
+
const scope = resolveRedeployScope(ctx,
|
|
902
|
+
// No recorded artifact (older record, or the step was check()-satisfied):
|
|
903
|
+
// prefer the scope whose unit file actually exists — the user unit is the
|
|
904
|
+
// install default, so defaulting to `system` would sudo-restart a unit
|
|
905
|
+
// that was never installed.
|
|
906
|
+
existsSync(userUnitPath));
|
|
907
|
+
// #696: an npx-launched unit re-execs its cached build on restart, so a
|
|
908
|
+
// deploy that doesn't invalidate the npx cache never actually updates.
|
|
909
|
+
// Clear the cezarion cache first (read the live ExecStart to know the
|
|
910
|
+
// launch form); a checkout / global unit is left alone.
|
|
911
|
+
refreshNpxCacheForRedeploy(ctx, await readExecStart(ctx, scope, UNIT_NAME));
|
|
912
|
+
if (ctx.dryRun) {
|
|
913
|
+
ctx.ui.info(`DRY RUN — would reload+restart the ${productName('cezar', rebrand)} ${scope} service and re-verify the cockpit.`);
|
|
914
|
+
return;
|
|
915
|
+
}
|
|
916
|
+
await repairUnitEnv(ctx, scope, recordedUnit(ctx, rebrand).path ?? (scope === 'user' ? userUnitPath : `/etc/systemd/system/${UNIT_NAME}`));
|
|
917
|
+
const before = await serviceSnapshot(ctx, scope, UNIT_NAME);
|
|
918
|
+
const sudo = { used: false };
|
|
919
|
+
const fail = (reason) => failedRestart(ctx, scope, UNIT_NAME, reason, sudo.used);
|
|
920
|
+
ctx.ui.info(`Redeploying — restarting the ${productName('cezar', rebrand)} ${scope} service to pick up the new version.`);
|
|
921
|
+
const after = scope === 'user'
|
|
922
|
+
? await restartUserService(ctx, UNIT_NAME, fail)
|
|
923
|
+
: await restartSystemService(ctx, UNIT_NAME, before, sudo, fail);
|
|
924
|
+
await freshRestartOrFail(before, after, fail);
|
|
925
|
+
const { statusCmd, logsCmd } = serviceDiagnostics(scope, UNIT_NAME);
|
|
926
|
+
await confirmCezarRunning(ctx, statusCmd, logsCmd);
|
|
927
|
+
try {
|
|
928
|
+
await steps.identity.run(ctx);
|
|
929
|
+
}
|
|
930
|
+
catch (err) {
|
|
931
|
+
if (!(err instanceof StepAborted))
|
|
932
|
+
throw err;
|
|
933
|
+
const current = await serviceSnapshot(ctx, scope, UNIT_NAME);
|
|
934
|
+
await fail(`cockpit verification failed: ${err.message}; service is ${current.active ?? 'unreadable'}`);
|
|
935
|
+
}
|
|
936
|
+
await freshRestartOrFail(before, await serviceSnapshot(ctx, scope, UNIT_NAME), fail);
|
|
937
|
+
},
|
|
938
|
+
migrate: (ctx) => migrateUbuntu(ctx, rebrand),
|
|
939
|
+
rollbackMigration: (ctx, report) => rollbackUbuntuMigration(ctx, report, rebrand),
|
|
940
|
+
stopService: (ctx) => stopUbuntuService(ctx, rebrand),
|
|
941
|
+
startService: (ctx, opts) => startUbuntuService(ctx, health, rebrand, opts),
|
|
942
|
+
};
|
|
943
|
+
}
|
|
944
|
+
export const ubuntuVps = createUbuntuVps();
|
|
945
|
+
//# sourceMappingURL=ubuntu-vps.js.map
|