@wjarka/cezarion 0.10.0-pr30.54
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 +21 -0
- package/README.md +838 -0
- package/dist/agent-config/account-identity.d.ts +44 -0
- package/dist/agent-config/account-identity.js +128 -0
- package/dist/agent-config/account-identity.js.map +1 -0
- package/dist/agent-config/catalog.d.ts +72 -0
- package/dist/agent-config/catalog.js +223 -0
- package/dist/agent-config/catalog.js.map +1 -0
- package/dist/agent-config/files.d.ts +46 -0
- package/dist/agent-config/files.js +119 -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 +12 -0
- package/dist/agent-config/model-settings/pi.js +18 -0
- package/dist/agent-config/model-settings/pi.js.map +1 -0
- package/dist/agent-config/model-settings/shared.d.ts +9 -0
- package/dist/agent-config/model-settings/shared.js +93 -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 +32 -0
- package/dist/agent-config/models.js.map +1 -0
- package/dist/agent-config/seed.d.ts +7 -0
- package/dist/agent-config/seed.js +90 -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 +71 -0
- package/dist/agent-config/service.js.map +1 -0
- package/dist/agent-config/validate.d.ts +21 -0
- package/dist/agent-config/validate.js +76 -0
- package/dist/agent-config/validate.js.map +1 -0
- package/dist/automations/coordinator.d.ts +26 -0
- package/dist/automations/coordinator.js +66 -0
- package/dist/automations/coordinator.js.map +1 -0
- package/dist/automations/github-poller.d.ts +74 -0
- package/dist/automations/github-poller.js +234 -0
- package/dist/automations/github-poller.js.map +1 -0
- package/dist/automations/scheduler.d.ts +42 -0
- package/dist/automations/scheduler.js +192 -0
- package/dist/automations/scheduler.js.map +1 -0
- package/dist/automations/store.d.ts +65 -0
- package/dist/automations/store.js +298 -0
- package/dist/automations/store.js.map +1 -0
- package/dist/automations/task-template.d.ts +18 -0
- package/dist/automations/task-template.js +95 -0
- package/dist/automations/task-template.js.map +1 -0
- package/dist/automations/types.d.ts +255 -0
- package/dist/automations/types.js +159 -0
- package/dist/automations/types.js.map +1 -0
- package/dist/config.d.ts +77 -0
- package/dist/config.js +242 -0
- package/dist/config.js.map +1 -0
- package/dist/contract/agent-config.d.ts +153 -0
- package/dist/contract/agent-profiles.d.ts +347 -0
- package/dist/contract/automations.d.ts +935 -0
- package/dist/contract/events.d.ts +104 -0
- package/dist/contract/github.d.ts +556 -0
- package/dist/contract/health.d.ts +102 -0
- package/dist/contract/index.d.ts +16 -0
- package/dist/contract/index.js +1895 -0
- package/dist/contract/projects.d.ts +210 -0
- package/dist/contract/repo.d.ts +234 -0
- package/dist/contract/runs.d.ts +1473 -0
- package/dist/contract/skills.d.ts +232 -0
- package/dist/contract/workflows.d.ts +218 -0
- package/dist/contract/workspace.d.ts +579 -0
- package/dist/core/agent-env.d.ts +31 -0
- package/dist/core/agent-env.js +371 -0
- package/dist/core/agent-env.js.map +1 -0
- package/dist/core/agent-model-policy.d.ts +10 -0
- package/dist/core/agent-model-policy.js +36 -0
- package/dist/core/agent-model-policy.js.map +1 -0
- package/dist/core/agent-profiles.d.ts +62 -0
- package/dist/core/agent-profiles.js +90 -0
- package/dist/core/agent-profiles.js.map +1 -0
- package/dist/core/agent-runner.d.ts +211 -0
- package/dist/core/agent-runner.js +68 -0
- package/dist/core/agent-runner.js.map +1 -0
- package/dist/core/ask.d.ts +105 -0
- package/dist/core/ask.js +187 -0
- package/dist/core/ask.js.map +1 -0
- package/dist/core/backend-detect.d.ts +16 -0
- package/dist/core/backend-detect.js +155 -0
- package/dist/core/backend-detect.js.map +1 -0
- package/dist/core/claude-cli-runner.d.ts +59 -0
- package/dist/core/claude-cli-runner.js +483 -0
- package/dist/core/claude-cli-runner.js.map +1 -0
- package/dist/core/claude-ui-mapper.d.ts +80 -0
- package/dist/core/claude-ui-mapper.js +598 -0
- package/dist/core/claude-ui-mapper.js.map +1 -0
- package/dist/core/codex-app-server-runner.d.ts +41 -0
- package/dist/core/codex-app-server-runner.js +584 -0
- package/dist/core/codex-app-server-runner.js.map +1 -0
- package/dist/core/codex-app-server-transport.d.ts +35 -0
- package/dist/core/codex-app-server-transport.js +150 -0
- package/dist/core/codex-app-server-transport.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-ui-mapper.d.ts +112 -0
- package/dist/core/codex-ui-mapper.js +766 -0
- package/dist/core/codex-ui-mapper.js.map +1 -0
- package/dist/core/model-identity.d.ts +125 -0
- package/dist/core/model-identity.js +132 -0
- package/dist/core/model-identity.js.map +1 -0
- package/dist/core/model-presets.d.ts +21 -0
- package/dist/core/model-presets.js +81 -0
- package/dist/core/model-presets.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/opencode-model-catalog.d.ts +32 -0
- package/dist/core/opencode-model-catalog.js +153 -0
- package/dist/core/opencode-model-catalog.js.map +1 -0
- package/dist/core/opencode-server-runner.d.ts +32 -0
- package/dist/core/opencode-server-runner.js +882 -0
- package/dist/core/opencode-server-runner.js.map +1 -0
- package/dist/core/opencode-ui-mapper.d.ts +137 -0
- package/dist/core/opencode-ui-mapper.js +800 -0
- package/dist/core/opencode-ui-mapper.js.map +1 -0
- package/dist/core/pi-model-catalog.d.ts +31 -0
- package/dist/core/pi-model-catalog.js +152 -0
- package/dist/core/pi-model-catalog.js.map +1 -0
- package/dist/core/pi-runner.d.ts +24 -0
- package/dist/core/pi-runner.js +403 -0
- package/dist/core/pi-runner.js.map +1 -0
- package/dist/core/pi-ui-mapper.d.ts +36 -0
- package/dist/core/pi-ui-mapper.js +304 -0
- package/dist/core/pi-ui-mapper.js.map +1 -0
- package/dist/core/process-usage.d.ts +66 -0
- package/dist/core/process-usage.js +193 -0
- package/dist/core/process-usage.js.map +1 -0
- package/dist/core/provider-auth.d.ts +154 -0
- package/dist/core/provider-auth.js +509 -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 +8 -0
- package/dist/core/runner-factory.js +25 -0
- package/dist/core/runner-factory.js.map +1 -0
- package/dist/core/runner-model-catalog.d.ts +29 -0
- package/dist/core/runner-model-catalog.js +78 -0
- package/dist/core/runner-model-catalog.js.map +1 -0
- package/dist/core/secret-redaction.d.ts +37 -0
- package/dist/core/secret-redaction.js +115 -0
- package/dist/core/secret-redaction.js.map +1 -0
- package/dist/core/shell-env.d.ts +28 -0
- package/dist/core/shell-env.js +56 -0
- package/dist/core/shell-env.js.map +1 -0
- package/dist/core/tool-display.d.ts +31 -0
- package/dist/core/tool-display.js +179 -0
- package/dist/core/tool-display.js.map +1 -0
- package/dist/core/ui-events.d.ts +335 -0
- package/dist/core/ui-events.js +25 -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 +209 -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/git-diff-base.d.ts +85 -0
- package/dist/git-diff-base.js +180 -0
- package/dist/git-diff-base.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.d.ts +161 -0
- package/dist/git-worktree.js +508 -0
- package/dist/git-worktree.js.map +1 -0
- package/dist/handoff.d.ts +62 -0
- package/dist/handoff.js +154 -0
- package/dist/handoff.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +680 -0
- package/dist/index.js.map +1 -0
- package/dist/install-as-command.d.ts +40 -0
- package/dist/install-as-command.js +52 -0
- package/dist/install-as-command.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 +140 -0
- package/dist/paths.js +192 -0
- package/dist/paths.js.map +1 -0
- package/dist/planner.d.ts +27 -0
- package/dist/planner.js +268 -0
- package/dist/planner.js.map +1 -0
- package/dist/release/manifests.d.ts +81 -0
- package/dist/release/manifests.js +74 -0
- package/dist/release/manifests.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/runs/agent-tmpdir.d.ts +41 -0
- package/dist/runs/agent-tmpdir.js +183 -0
- package/dist/runs/agent-tmpdir.js.map +1 -0
- package/dist/runs/auto-name.d.ts +75 -0
- package/dist/runs/auto-name.js +179 -0
- package/dist/runs/auto-name.js.map +1 -0
- package/dist/runs/event-history.d.ts +50 -0
- package/dist/runs/event-history.js +613 -0
- package/dist/runs/event-history.js.map +1 -0
- package/dist/runs/retention.d.ts +60 -0
- package/dist/runs/retention.js +86 -0
- package/dist/runs/retention.js.map +1 -0
- package/dist/runs/review-gate.d.ts +18 -0
- package/dist/runs/review-gate.js +21 -0
- package/dist/runs/review-gate.js.map +1 -0
- package/dist/runs/run-index.d.ts +19 -0
- package/dist/runs/run-index.js +43 -0
- package/dist/runs/run-index.js.map +1 -0
- package/dist/runs/store.d.ts +446 -0
- package/dist/runs/store.js +1118 -0
- package/dist/runs/store.js.map +1 -0
- package/dist/runs/task-markers.d.ts +28 -0
- package/dist/runs/task-markers.js +74 -0
- package/dist/runs/task-markers.js.map +1 -0
- package/dist/runs/task-refs.d.ts +25 -0
- package/dist/runs/task-refs.js +74 -0
- package/dist/runs/task-refs.js.map +1 -0
- package/dist/runs/ui-event-sink.d.ts +81 -0
- package/dist/runs/ui-event-sink.js +210 -0
- package/dist/runs/ui-event-sink.js.map +1 -0
- package/dist/server/app-type.d.ts +21 -0
- package/dist/server/app-type.js +2 -0
- package/dist/server/app-type.js.map +1 -0
- package/dist/server/capabilities.d.ts +70 -0
- package/dist/server/capabilities.js +152 -0
- package/dist/server/capabilities.js.map +1 -0
- package/dist/server/checkout.d.ts +128 -0
- package/dist/server/checkout.js +296 -0
- package/dist/server/checkout.js.map +1 -0
- package/dist/server/forge/github.d.ts +513 -0
- package/dist/server/forge/github.js +2364 -0
- package/dist/server/forge/github.js.map +1 -0
- package/dist/server/forge/index.d.ts +40 -0
- package/dist/server/forge/index.js +72 -0
- package/dist/server/forge/index.js.map +1 -0
- package/dist/server/forge/types.d.ts +242 -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 +105 -0
- package/dist/server/fs-browse.js +182 -0
- package/dist/server/fs-browse.js.map +1 -0
- package/dist/server/git-changes.d.ts +213 -0
- package/dist/server/git-changes.js +555 -0
- package/dist/server/git-changes.js.map +1 -0
- package/dist/server/git.d.ts +28 -0
- package/dist/server/git.js +112 -0
- package/dist/server/git.js.map +1 -0
- package/dist/server/github.d.ts +9 -0
- package/dist/server/github.js +8 -0
- package/dist/server/github.js.map +1 -0
- package/dist/server/launch-key.d.ts +7 -0
- package/dist/server/launch-key.js +33 -0
- package/dist/server/launch-key.js.map +1 -0
- package/dist/server/open-in-app.d.ts +66 -0
- package/dist/server/open-in-app.js +211 -0
- package/dist/server/open-in-app.js.map +1 -0
- package/dist/server/open-in-terminal.d.ts +70 -0
- package/dist/server/open-in-terminal.js +179 -0
- package/dist/server/open-in-terminal.js.map +1 -0
- package/dist/server/pr.d.ts +7 -0
- package/dist/server/pr.js +7 -0
- package/dist/server/pr.js.map +1 -0
- package/dist/server/project-context.d.ts +120 -0
- package/dist/server/project-context.js +182 -0
- package/dist/server/project-context.js.map +1 -0
- package/dist/server/provider-action-gate.d.ts +8 -0
- package/dist/server/provider-action-gate.js +56 -0
- package/dist/server/provider-action-gate.js.map +1 -0
- package/dist/server/provider-auth-runtime.d.ts +21 -0
- package/dist/server/provider-auth-runtime.js +66 -0
- package/dist/server/provider-auth-runtime.js.map +1 -0
- package/dist/server/server.d.ts +13138 -0
- package/dist/server/server.js +5263 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/static-ui.d.ts +49 -0
- package/dist/server/static-ui.js +92 -0
- package/dist/server/static-ui.js.map +1 -0
- package/dist/server/validators.d.ts +97 -0
- package/dist/server/validators.js +86 -0
- package/dist/server/validators.js.map +1 -0
- package/dist/server/ws.d.ts +85 -0
- package/dist/server/ws.js +218 -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-install/engine.d.ts +50 -0
- package/dist/server-install/engine.js +324 -0
- package/dist/server-install/engine.js.map +1 -0
- package/dist/server-install/platforms/macosx-ngrok.d.ts +6 -0
- package/dist/server-install/platforms/macosx-ngrok.js +345 -0
- package/dist/server-install/platforms/macosx-ngrok.js.map +1 -0
- package/dist/server-install/platforms/ubuntu-vps.d.ts +78 -0
- package/dist/server-install/platforms/ubuntu-vps.js +1016 -0
- package/dist/server-install/platforms/ubuntu-vps.js.map +1 -0
- package/dist/server-install/state.d.ts +52 -0
- package/dist/server-install/state.js +182 -0
- package/dist/server-install/state.js.map +1 -0
- package/dist/server-install/steps.d.ts +109 -0
- package/dist/server-install/steps.js +334 -0
- package/dist/server-install/steps.js.map +1 -0
- package/dist/server-install/strategies.d.ts +4 -0
- package/dist/server-install/strategies.js +20 -0
- package/dist/server-install/strategies.js.map +1 -0
- package/dist/server-install/types.d.ts +287 -0
- package/dist/server-install/types.js +121 -0
- package/dist/server-install/types.js.map +1 -0
- package/dist/server-install/ui.d.ts +42 -0
- package/dist/server-install/ui.js +130 -0
- package/dist/server-install/ui.js.map +1 -0
- package/dist/skills-banner.d.ts +22 -0
- package/dist/skills-banner.js +41 -0
- package/dist/skills-banner.js.map +1 -0
- package/dist/skills-remote.d.ts +84 -0
- package/dist/skills-remote.js +468 -0
- package/dist/skills-remote.js.map +1 -0
- package/dist/skills-update.d.ts +88 -0
- package/dist/skills-update.js +392 -0
- package/dist/skills-update.js.map +1 -0
- package/dist/skills.d.ts +82 -0
- package/dist/skills.js +251 -0
- package/dist/skills.js.map +1 -0
- package/dist/todos.d.ts +48 -0
- package/dist/todos.js +201 -0
- package/dist/todos.js.map +1 -0
- package/dist/ui-state.d.ts +26 -0
- package/dist/ui-state.js +38 -0
- package/dist/ui-state.js.map +1 -0
- package/dist/update-check.d.ts +12 -0
- package/dist/update-check.js +41 -0
- package/dist/update-check.js.map +1 -0
- package/dist/workflows/load.d.ts +15 -0
- package/dist/workflows/load.js +56 -0
- package/dist/workflows/load.js.map +1 -0
- package/dist/workflows/run.d.ts +758 -0
- package/dist/workflows/run.js +3389 -0
- package/dist/workflows/run.js.map +1 -0
- package/dist/workflows/types.d.ts +153 -0
- package/dist/workflows/types.js +212 -0
- package/dist/workflows/types.js.map +1 -0
- package/dist/workspace/agent-accounts.d.ts +153 -0
- package/dist/workspace/agent-accounts.js +304 -0
- package/dist/workspace/agent-accounts.js.map +1 -0
- package/dist/workspace/agent-profiles.d.ts +78 -0
- package/dist/workspace/agent-profiles.js +115 -0
- package/dist/workspace/agent-profiles.js.map +1 -0
- package/dist/workspace/config.d.ts +169 -0
- package/dist/workspace/config.js +379 -0
- package/dist/workspace/config.js.map +1 -0
- package/dist/workspace/migrations.d.ts +45 -0
- package/dist/workspace/migrations.js +147 -0
- package/dist/workspace/migrations.js.map +1 -0
- package/dist/workspace/projects-cli.d.ts +25 -0
- package/dist/workspace/projects-cli.js +172 -0
- package/dist/workspace/projects-cli.js.map +1 -0
- package/dist/workspace/projects.d.ts +109 -0
- package/dist/workspace/projects.js +250 -0
- package/dist/workspace/projects.js.map +1 -0
- package/dist/workspace/semaphore.d.ts +179 -0
- package/dist/workspace/semaphore.js +195 -0
- package/dist/workspace/semaphore.js.map +1 -0
- package/dist/workspace/ui-state.d.ts +34 -0
- package/dist/workspace/ui-state.js +53 -0
- package/dist/workspace/ui-state.js.map +1 -0
- package/package.json +70 -0
- package/scripts/check-pack.mjs +46 -0
- package/scripts/inline-contract.mjs +112 -0
- package/scripts/install-as-command.mjs +120 -0
- package/scripts/mock-claude.mjs +520 -0
- package/scripts/mock-pi-rpc.mjs +83 -0
- package/scripts/sync-readme.mjs +20 -0
- package/scripts/test-process-usage.mjs +47 -0
- package/web/dist/assets/alert-dialog-B4Ofsgv7.js +1 -0
- package/web/dist/assets/arrow-down-Dy8dup7j.js +1 -0
- package/web/dist/assets/arrow-left-BJaucbhn.js +1 -0
- package/web/dist/assets/bundle-mjs-BT31bpU6.js +1 -0
- package/web/dist/assets/centered-state-duPW0phQ.js +43 -0
- package/web/dist/assets/chevron-right-Be4A5TCS.js +1 -0
- package/web/dist/assets/chunk-BO2N2NFS-DE6qKn3r.js +131 -0
- package/web/dist/assets/collapsible-DdcNBdSk.js +1 -0
- package/web/dist/assets/commit-list-CgvN9vec.js +1 -0
- package/web/dist/assets/compare-variants-CQA2nd65.js +1 -0
- package/web/dist/assets/core-BCsw8oQw.js +12 -0
- package/web/dist/assets/css-BsVw1vtW.js +1 -0
- package/web/dist/assets/diff-B6Agp5Hl.js +3 -0
- package/web/dist/assets/diff-stat-BoXuGkgq.js +1 -0
- package/web/dist/assets/diff-view-CD8XI-fj.js +6 -0
- package/web/dist/assets/diff-woXpYk--.js +1 -0
- package/web/dist/assets/dropdown-menu-B3SYw-k5.js +1 -0
- package/web/dist/assets/editable-title-B-hjp5wl.js +1 -0
- package/web/dist/assets/ellipsis-vertical-BYwzw0xl.js +1 -0
- package/web/dist/assets/engine-javascript-FQvzRocB.js +141 -0
- package/web/dist/assets/file-BRj5eISx.js +1 -0
- package/web/dist/assets/folder-z4oT5981.js +1 -0
- package/web/dist/assets/git-toolbar-owSEkYld.js +1 -0
- package/web/dist/assets/github-Bz2VgRX3.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/highlighter-CdHqIwFr.js +3 -0
- package/web/dist/assets/html-BY76lXLH.js +1 -0
- package/web/dist/assets/image-preview-h3WFluuy.js +1 -0
- package/web/dist/assets/index-BbcQNT92.css +2 -0
- package/web/dist/assets/index-EtQQQ6Kj.js +7 -0
- package/web/dist/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2 +0 -0
- package/web/dist/assets/inter-latin-wght-normal-Dx4kXJAl.woff2 +0 -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-BQXq3kEf.js +1 -0
- package/web/dist/assets/lib-BxQXEXDF.js +1 -0
- package/web/dist/assets/markdown-BYOwaDjH.js +1 -0
- package/web/dist/assets/markdown-DqBKYPiB.js +2 -0
- package/web/dist/assets/mermaid-GHXKKRXX-C4jxqUUb.js +1 -0
- package/web/dist/assets/new-task-form-BdJKRBJX.js +1 -0
- package/web/dist/assets/pill-BQfmfpYp.js +1 -0
- package/web/dist/assets/project-router-DxgFZY1l.js +1 -0
- package/web/dist/assets/prompt-templates-B6m16gq-.js +15 -0
- package/web/dist/assets/python-gzcpVVnB.js +1 -0
- package/web/dist/assets/react-runtime-CCIEwYL0.js +9 -0
- package/web/dist/assets/refresh-cw-mhSpxf2a.js +1 -0
- package/web/dist/assets/repo-git-CUNRxR3_.js +1 -0
- package/web/dist/assets/rolldown-runtime-QTnfLwEv.js +1 -0
- package/web/dist/assets/run-diff-DsmmDVfx.js +3 -0
- package/web/dist/assets/run-header-BkhrseLJ.js +1 -0
- package/web/dist/assets/rust-Cfkwpbl8.js +1 -0
- package/web/dist/assets/search-x-BqDMB2g8.js +1 -0
- package/web/dist/assets/shellscript-CLZ0U2zV.js +1 -0
- package/web/dist/assets/skill-empty-hint-BWEvTggc.js +1 -0
- package/web/dist/assets/skills-9oR_oHse.js +1 -0
- package/web/dist/assets/skills-DwIxnnWO.js +1 -0
- package/web/dist/assets/sparkles-DIoTQpyx.js +1 -0
- package/web/dist/assets/sql-BsFa4tDR.js +1 -0
- package/web/dist/assets/square-terminal-Cc7CuQxc.js +1 -0
- package/web/dist/assets/tab-link-D1fQgpmO.js +1 -0
- package/web/dist/assets/task-changes-BKeLlDpK.js +1 -0
- package/web/dist/assets/task-commits-gcEFZIa5.js +1 -0
- package/web/dist/assets/task-files-BGAqoXTW.js +2 -0
- package/web/dist/assets/task-thread-DT8aUYTS.js +9 -0
- package/web/dist/assets/textarea-BOVbfy5C.js +1 -0
- package/web/dist/assets/thread-loading-CypW73KD.js +1 -0
- package/web/dist/assets/toml-CcmNWLt0.js +1 -0
- package/web/dist/assets/trash-2-CJq6LHWn.js +1 -0
- package/web/dist/assets/triangle-alert-CjDFvU27.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/upload-CPDZlJeK.js +1 -0
- package/web/dist/assets/use-desktop-5JsLmi0a.js +1 -0
- package/web/dist/assets/use-submit-shortcut-CHVFevty.js +1 -0
- package/web/dist/assets/utils-DiO6zyJd.js +64 -0
- package/web/dist/assets/workflows-rQDFzWRt.js +11 -0
- package/web/dist/assets/yaml-rwi0_p6S.js +1 -0
- package/web/dist/assets/zoomable-image-COWqb11v.js +1 -0
- package/web/dist/index.html +80 -0
- package/web/dist/open-mercato.svg +11 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type ChildProcessWithoutNullStreams } from 'node:child_process';
|
|
2
|
+
export interface CodexAppServerMessage {
|
|
3
|
+
id?: number | string;
|
|
4
|
+
method?: string;
|
|
5
|
+
params?: Record<string, unknown>;
|
|
6
|
+
result?: unknown;
|
|
7
|
+
error?: unknown;
|
|
8
|
+
}
|
|
9
|
+
export declare function resolveCodexExecutable(override?: string): string;
|
|
10
|
+
export declare function buildCodexAppServerEnv(extraEnv?: Record<string, string>): NodeJS.ProcessEnv;
|
|
11
|
+
/** Spawn the authenticated host's app-server with the same least-privilege env used by runs. */
|
|
12
|
+
export declare function spawnCodexAppServer(bin: string, cwd: string, extraEnv?: Record<string, string>): ChildProcessWithoutNullStreams;
|
|
13
|
+
/** Minimal newline-JSON request correlator shared by runs and short-lived discovery. */
|
|
14
|
+
export declare class CodexAppServerRpc {
|
|
15
|
+
readonly child: ChildProcessWithoutNullStreams;
|
|
16
|
+
private nextId;
|
|
17
|
+
private readonly pending;
|
|
18
|
+
constructor(child: ChildProcessWithoutNullStreams);
|
|
19
|
+
allocateId(): number;
|
|
20
|
+
request(method: string, params: unknown): Promise<Record<string, unknown>>;
|
|
21
|
+
notify(method: string, params: unknown): void;
|
|
22
|
+
respond(message: unknown): void;
|
|
23
|
+
dispatchResponse(message: CodexAppServerMessage): boolean;
|
|
24
|
+
initialize(): Promise<void>;
|
|
25
|
+
rejectPending(message?: string): void;
|
|
26
|
+
private write;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Close stdin, then escalate SIGTERM→SIGKILL for a server that ignores EOF.
|
|
30
|
+
* `onSignal` fires when the watchdog actually signals: the caller needs to
|
|
31
|
+
* know a non-zero exit was its own doing, not a codex failure (#703).
|
|
32
|
+
*/
|
|
33
|
+
export declare function endCodexAppServer(child: ChildProcessWithoutNullStreams, onTimers?: (term: NodeJS.Timeout, kill: NodeJS.Timeout | undefined) => void, onSignal?: () => void): void;
|
|
34
|
+
export declare function waitForCodexAppServerExit(child: ChildProcessWithoutNullStreams): Promise<number | null>;
|
|
35
|
+
export declare function codexSpawnError(error: unknown, bin: string): Error;
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { spawn as nodeSpawn } from 'node:child_process';
|
|
2
|
+
import { trackChildExit } from './agent-runner.js';
|
|
3
|
+
import { buildChildEnv } from './agent-env.js';
|
|
4
|
+
import { EOF_KILL_GRACE_MS, EOF_TERM_GRACE_MS, KILL_GRACE_MS } from './claude-cli-runner.js';
|
|
5
|
+
export function resolveCodexExecutable(override) {
|
|
6
|
+
return override ?? process.env.CEZ_CODEX_BIN ?? 'codex';
|
|
7
|
+
}
|
|
8
|
+
export function buildCodexAppServerEnv(extraEnv) {
|
|
9
|
+
return buildChildEnv({ backend: 'codex', extraEnv });
|
|
10
|
+
}
|
|
11
|
+
/** Spawn the authenticated host's app-server with the same least-privilege env used by runs. */
|
|
12
|
+
export function spawnCodexAppServer(bin, cwd, extraEnv) {
|
|
13
|
+
try {
|
|
14
|
+
return nodeSpawn(bin, ['app-server'], {
|
|
15
|
+
cwd,
|
|
16
|
+
env: buildCodexAppServerEnv(extraEnv),
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
throw codexSpawnError(error, bin);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/** Minimal newline-JSON request correlator shared by runs and short-lived discovery. */
|
|
24
|
+
export class CodexAppServerRpc {
|
|
25
|
+
child;
|
|
26
|
+
nextId = 1;
|
|
27
|
+
pending = new Map();
|
|
28
|
+
constructor(child) {
|
|
29
|
+
this.child = child;
|
|
30
|
+
}
|
|
31
|
+
allocateId() {
|
|
32
|
+
return this.nextId++;
|
|
33
|
+
}
|
|
34
|
+
request(method, params) {
|
|
35
|
+
const id = this.allocateId();
|
|
36
|
+
const promise = new Promise((resolve, reject) => {
|
|
37
|
+
this.pending.set(id, { resolve, reject });
|
|
38
|
+
});
|
|
39
|
+
this.write({ id, method, params });
|
|
40
|
+
return promise;
|
|
41
|
+
}
|
|
42
|
+
notify(method, params) {
|
|
43
|
+
this.write({ method, params });
|
|
44
|
+
}
|
|
45
|
+
respond(message) {
|
|
46
|
+
this.write(message);
|
|
47
|
+
}
|
|
48
|
+
dispatchResponse(message) {
|
|
49
|
+
if (typeof message.id !== 'number' || (message.result === undefined && message.error === undefined))
|
|
50
|
+
return false;
|
|
51
|
+
const pending = this.pending.get(message.id);
|
|
52
|
+
if (!pending)
|
|
53
|
+
return false;
|
|
54
|
+
this.pending.delete(message.id);
|
|
55
|
+
if (message.error)
|
|
56
|
+
pending.reject(new Error(codexErrorText(message.error)));
|
|
57
|
+
else
|
|
58
|
+
pending.resolve(message.result ?? {});
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
async initialize() {
|
|
62
|
+
await this.request('initialize', {
|
|
63
|
+
clientInfo: { name: 'cezar', title: 'cezar', version: '0.1.0' },
|
|
64
|
+
capabilities: { experimentalApi: true },
|
|
65
|
+
});
|
|
66
|
+
this.notify('initialized', {});
|
|
67
|
+
}
|
|
68
|
+
rejectPending(message = 'codex app-server exited') {
|
|
69
|
+
for (const request of this.pending.values())
|
|
70
|
+
request.reject(new Error(message));
|
|
71
|
+
this.pending.clear();
|
|
72
|
+
}
|
|
73
|
+
write(message) {
|
|
74
|
+
if (this.child.stdin.destroyed)
|
|
75
|
+
return;
|
|
76
|
+
try {
|
|
77
|
+
this.child.stdin.write(`${JSON.stringify(message)}\n`);
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// The read/exit path owns settlement when stdin disappears.
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Close stdin, then escalate SIGTERM→SIGKILL for a server that ignores EOF.
|
|
86
|
+
* `onSignal` fires when the watchdog actually signals: the caller needs to
|
|
87
|
+
* know a non-zero exit was its own doing, not a codex failure (#703).
|
|
88
|
+
*/
|
|
89
|
+
export function endCodexAppServer(child, onTimers, onSignal) {
|
|
90
|
+
try {
|
|
91
|
+
child.stdin.end();
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// already gone
|
|
95
|
+
}
|
|
96
|
+
// Real termination, not `child.killed` — the latter is set by the SIGTERM
|
|
97
|
+
// this very watchdog sends, which would then suppress its own SIGKILL for an
|
|
98
|
+
// app-server that handles the signal instead of dying from it (#844).
|
|
99
|
+
const hasExited = trackChildExit(child);
|
|
100
|
+
let killTimer;
|
|
101
|
+
const termTimer = setTimeout(() => {
|
|
102
|
+
if (!hasExited()) {
|
|
103
|
+
onSignal?.();
|
|
104
|
+
child.kill('SIGTERM');
|
|
105
|
+
}
|
|
106
|
+
killTimer = setTimeout(() => {
|
|
107
|
+
if (!hasExited()) {
|
|
108
|
+
onSignal?.();
|
|
109
|
+
child.kill('SIGKILL');
|
|
110
|
+
}
|
|
111
|
+
}, EOF_KILL_GRACE_MS);
|
|
112
|
+
killTimer.unref?.();
|
|
113
|
+
onTimers?.(termTimer, killTimer);
|
|
114
|
+
}, EOF_TERM_GRACE_MS);
|
|
115
|
+
termTimer.unref?.();
|
|
116
|
+
onTimers?.(termTimer, killTimer);
|
|
117
|
+
}
|
|
118
|
+
export function waitForCodexAppServerExit(child) {
|
|
119
|
+
if (child.exitCode != null)
|
|
120
|
+
return Promise.resolve(child.exitCode);
|
|
121
|
+
return new Promise((resolve) => {
|
|
122
|
+
let done = false;
|
|
123
|
+
const finish = (code) => {
|
|
124
|
+
if (done)
|
|
125
|
+
return;
|
|
126
|
+
done = true;
|
|
127
|
+
clearTimeout(safety);
|
|
128
|
+
resolve(code);
|
|
129
|
+
};
|
|
130
|
+
child.once('close', (code) => finish(code));
|
|
131
|
+
child.once('exit', (code) => finish(code));
|
|
132
|
+
child.once('error', () => finish(child.exitCode ?? null));
|
|
133
|
+
const safety = setTimeout(() => finish(child.exitCode ?? null), EOF_TERM_GRACE_MS + EOF_KILL_GRACE_MS + KILL_GRACE_MS + 5_000);
|
|
134
|
+
safety.unref?.();
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
export function codexSpawnError(error, bin) {
|
|
138
|
+
const code = error?.code;
|
|
139
|
+
if (code === 'ENOENT') {
|
|
140
|
+
return new Error(`\`${bin}\` not found on PATH — install the Codex CLI (npm i -g @openai/codex) and run \`codex\` once to log in`);
|
|
141
|
+
}
|
|
142
|
+
return error instanceof Error ? error : new Error(String(error));
|
|
143
|
+
}
|
|
144
|
+
function codexErrorText(error) {
|
|
145
|
+
if (error && typeof error === 'object' && 'message' in error) {
|
|
146
|
+
return String(error.message);
|
|
147
|
+
}
|
|
148
|
+
return typeof error === 'string' ? error : JSON.stringify(error);
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=codex-app-server-transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-app-server-transport.js","sourceRoot":"","sources":["../../src/core/codex-app-server-transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ChildProcessWithoutNullStreams } from 'node:child_process';
|
|
2
|
+
import type { ModelOption } from './runner-model-catalog.ts';
|
|
3
|
+
export interface CodexModelDiscoveryOptions {
|
|
4
|
+
cwd: string;
|
|
5
|
+
bin?: string;
|
|
6
|
+
timeoutMs?: number;
|
|
7
|
+
spawn?: (bin: string, cwd: string) => ChildProcessWithoutNullStreams;
|
|
8
|
+
}
|
|
9
|
+
/** Discover the visible catalog exposed by the authenticated host Codex CLI. */
|
|
10
|
+
export declare function discoverCodexModels(options: CodexModelDiscoveryOptions): Promise<ModelOption[]>;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { readNdjson } from './ndjson.js';
|
|
3
|
+
import { CodexAppServerRpc, endCodexAppServer, resolveCodexExecutable, spawnCodexAppServer, } from './codex-app-server-transport.js';
|
|
4
|
+
const modelSchema = z.object({
|
|
5
|
+
model: z.string(),
|
|
6
|
+
displayName: z.string().optional(),
|
|
7
|
+
description: z.string().optional(),
|
|
8
|
+
hidden: z.boolean().optional(),
|
|
9
|
+
}).passthrough();
|
|
10
|
+
const pageSchema = z.object({
|
|
11
|
+
data: z.array(modelSchema),
|
|
12
|
+
nextCursor: z.string().nullable().optional(),
|
|
13
|
+
}).passthrough();
|
|
14
|
+
const DEFAULT_DISCOVERY_TIMEOUT_MS = 5_000;
|
|
15
|
+
const MAX_MODEL_PAGES = 25;
|
|
16
|
+
const MAX_MODELS = 500;
|
|
17
|
+
/** Discover the visible catalog exposed by the authenticated host Codex CLI. */
|
|
18
|
+
export async function discoverCodexModels(options) {
|
|
19
|
+
const child = (options.spawn ?? spawnCodexAppServer)(resolveCodexExecutable(options.bin), options.cwd);
|
|
20
|
+
const rpc = new CodexAppServerRpc(child);
|
|
21
|
+
let readerError;
|
|
22
|
+
const reader = (async () => {
|
|
23
|
+
try {
|
|
24
|
+
for await (const line of readNdjson(child.stdout)) {
|
|
25
|
+
let message;
|
|
26
|
+
try {
|
|
27
|
+
message = JSON.parse(line);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
throw new Error('Codex model discovery returned malformed NDJSON');
|
|
31
|
+
}
|
|
32
|
+
rpc.dispatchResponse(message);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
readerError = error instanceof Error ? error : new Error(String(error));
|
|
37
|
+
rpc.rejectPending(readerError.message);
|
|
38
|
+
}
|
|
39
|
+
})();
|
|
40
|
+
const exited = new Promise((_, reject) => {
|
|
41
|
+
const fail = (detail) => {
|
|
42
|
+
const error = new Error(detail);
|
|
43
|
+
rpc.rejectPending(error.message);
|
|
44
|
+
reject(error);
|
|
45
|
+
};
|
|
46
|
+
child.once('error', () => fail('Codex model discovery child failed'));
|
|
47
|
+
child.once('exit', (code) => fail(`Codex model discovery child exited (${code ?? 'unknown'})`));
|
|
48
|
+
});
|
|
49
|
+
const timeoutMs = options.timeoutMs ?? DEFAULT_DISCOVERY_TIMEOUT_MS;
|
|
50
|
+
let timeout;
|
|
51
|
+
const deadline = new Promise((_, reject) => {
|
|
52
|
+
timeout = setTimeout(() => {
|
|
53
|
+
const error = new Error('Codex model discovery timed out');
|
|
54
|
+
rpc.rejectPending(error.message);
|
|
55
|
+
reject(error);
|
|
56
|
+
}, timeoutMs);
|
|
57
|
+
timeout.unref?.();
|
|
58
|
+
});
|
|
59
|
+
try {
|
|
60
|
+
return await Promise.race([
|
|
61
|
+
discoverPages(rpc),
|
|
62
|
+
exited,
|
|
63
|
+
deadline,
|
|
64
|
+
]);
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
if (timeout)
|
|
68
|
+
clearTimeout(timeout);
|
|
69
|
+
endCodexAppServer(child);
|
|
70
|
+
void reader.catch(() => undefined);
|
|
71
|
+
if (readerError)
|
|
72
|
+
rpc.rejectPending(readerError.message);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async function discoverPages(rpc) {
|
|
76
|
+
await rpc.initialize();
|
|
77
|
+
const models = [];
|
|
78
|
+
const ids = new Set();
|
|
79
|
+
const cursors = new Set();
|
|
80
|
+
let cursor = null;
|
|
81
|
+
for (let pageNumber = 0; pageNumber < MAX_MODEL_PAGES; pageNumber += 1) {
|
|
82
|
+
const raw = await rpc.request('model/list', { cursor, includeHidden: false });
|
|
83
|
+
const parsed = pageSchema.safeParse(raw);
|
|
84
|
+
if (!parsed.success)
|
|
85
|
+
throw new Error('Codex model discovery returned malformed model data');
|
|
86
|
+
for (const model of parsed.data.data) {
|
|
87
|
+
const id = model.model.trim();
|
|
88
|
+
if (!id || model.hidden || ids.has(id))
|
|
89
|
+
continue;
|
|
90
|
+
if (models.length >= MAX_MODELS)
|
|
91
|
+
throw new Error('Codex model discovery exceeded the size limit');
|
|
92
|
+
ids.add(id);
|
|
93
|
+
models.push({
|
|
94
|
+
id,
|
|
95
|
+
label: model.displayName?.trim() || id,
|
|
96
|
+
description: model.description ?? '',
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
const nextCursor = parsed.data.nextCursor ?? null;
|
|
100
|
+
if (nextCursor === null)
|
|
101
|
+
return models;
|
|
102
|
+
if (!nextCursor || cursors.has(nextCursor)) {
|
|
103
|
+
throw new Error('Codex model discovery returned a cursor loop');
|
|
104
|
+
}
|
|
105
|
+
cursors.add(nextCursor);
|
|
106
|
+
cursor = nextCursor;
|
|
107
|
+
}
|
|
108
|
+
throw new Error('Codex model discovery exceeded the page limit');
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=codex-model-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-model-catalog.js","sourceRoot":"","sources":["../../src/core/codex-model-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure codex app-server JSON-RPC → protocol-v2 mapper. `mapCodexNotification`
|
|
3
|
+
* folds one parsed JSONL frame into `UiEvent`s plus the next mapper state;
|
|
4
|
+
* the runner calls it ALONGSIDE the v1 path (v1 events keep flowing
|
|
5
|
+
* unchanged).
|
|
6
|
+
*
|
|
7
|
+
* Contract: `.ai/analysis/cockpit-ui-redesign/agent-event-protocols.md` §3
|
|
8
|
+
* (wire format) and §7.1 "Codex (app-server)" (the mapping). Golden fixtures
|
|
9
|
+
* replaying wire-faithful frame sequences live in `__fixtures__/codex/`.
|
|
10
|
+
*
|
|
11
|
+
* Robustness rule: input is untrusted wire data — the mapper never throws;
|
|
12
|
+
* responses, server→client requests (handled by the session transport) and
|
|
13
|
+
* unknown methods map to zero events.
|
|
14
|
+
*
|
|
15
|
+
* State is explicit and treated as immutable: callers thread the returned
|
|
16
|
+
* `state` into the next call. Ids are deterministic — codex items and turns
|
|
17
|
+
* carry stable wire ids which are reused verbatim (`turn_<n>` is minted only
|
|
18
|
+
* when a turn frame arrives without one) — so replaying a stored transcript
|
|
19
|
+
* reproduces the exact event sequence.
|
|
20
|
+
*
|
|
21
|
+
* Status map (§7.1, kills v1's regex-on-status hack): `inProgress→running`,
|
|
22
|
+
* `completed→completed`, `failed→failed`, `declined→declined`.
|
|
23
|
+
*/
|
|
24
|
+
import type { TokenUsage, UiEvent } from './ui-events.ts';
|
|
25
|
+
/** The two reasoning delta channels, accumulated separately — see
|
|
26
|
+
* `CodexUiMapperState.reasonings`. */
|
|
27
|
+
export interface ReasoningAccumulator {
|
|
28
|
+
/** `item/reasoning/textDelta` — the raw chain of thought. */
|
|
29
|
+
readonly text: string;
|
|
30
|
+
/** `item/reasoning/summaryDelta` + `summaryTextDelta` — the condensed summary. */
|
|
31
|
+
readonly summary: string;
|
|
32
|
+
}
|
|
33
|
+
interface CodexCollabTask {
|
|
34
|
+
readonly itemId: string;
|
|
35
|
+
readonly prompt?: string;
|
|
36
|
+
readonly model?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface CodexUiMapperState {
|
|
39
|
+
/** True once `session.started` was emitted (thread/started notification or
|
|
40
|
+
* the runner's `codexSessionStarted` after the thread/start result —
|
|
41
|
+
* whichever lands first wins; the other is deduplicated). */
|
|
42
|
+
readonly sessionStarted: boolean;
|
|
43
|
+
/** Fallback counter for turn frames that arrive without a wire turn id. */
|
|
44
|
+
readonly turnSeq: number;
|
|
45
|
+
readonly currentTurnId: string | null;
|
|
46
|
+
/** Fresh `tokenUsage.last` received while the current turn is active.
|
|
47
|
+
* Consumed exactly once by its matching turn end; cumulative `total` is
|
|
48
|
+
* never used as a persisted per-turn delta. */
|
|
49
|
+
readonly pendingTurnUsage: TokenUsage | null;
|
|
50
|
+
/** Item ids already introduced — a delta for an unknown id synthesizes an
|
|
51
|
+
* `item.started` first so consumers always have something to upsert. */
|
|
52
|
+
readonly knownItems: ReadonlySet<string>;
|
|
53
|
+
/** Accumulated `outputDelta` text per commandExecution item, attached to
|
|
54
|
+
* the final snapshot when the wire `item/completed` carries no output. */
|
|
55
|
+
readonly outputs: ReadonlyMap<string, string>;
|
|
56
|
+
/** Accumulated reasoning deltas per reasoning item, attached to the final
|
|
57
|
+
* snapshot when the wire `item/completed` carries no `content`. Deltas are
|
|
58
|
+
* live-only (never persisted), so without this the reasoning text is
|
|
59
|
+
* unrecoverable on replay and the row reads back empty (#528).
|
|
60
|
+
*
|
|
61
|
+
* Kept PER CHANNEL: `item/reasoning/textDelta` streams the raw chain of
|
|
62
|
+
* thought while `summaryDelta`/`summaryTextDelta` stream the condensed
|
|
63
|
+
* summary, and codex emits both when raw reasoning is enabled. One shared
|
|
64
|
+
* bucket would concatenate the two into `"<raw CoT><summary>"` and persist
|
|
65
|
+
* that garble over the clean wire `summary`.
|
|
66
|
+
*
|
|
67
|
+
* Turn-scoped, and reset by `turn/started`: an interrupted item is never
|
|
68
|
+
* completed, so without the reset its text would both leak into a later
|
|
69
|
+
* turn that reuses the id and pin whole chains of thought in memory. */
|
|
70
|
+
readonly reasonings: ReadonlyMap<string, ReasoningAccumulator>;
|
|
71
|
+
/** True once `turn/plan/updated` has spoken IN THE CURRENT TURN. Both that
|
|
72
|
+
* notification and the `plan`/`todoList` item arm write `plan.updated`, so
|
|
73
|
+
* without a precedence rule the last frame wins and a prose plan item would
|
|
74
|
+
* flatten the real checklist into one entry. The authoritative channel
|
|
75
|
+
* latches this and the item arm stands down (see `mapItemLifecycle`).
|
|
76
|
+
*
|
|
77
|
+
* Turn-scoped, and reset by `turn/started`: a plan belongs to a turn (hence
|
|
78
|
+
* `turn/plan/updated`), so a latch that outlived its turn would gag the item
|
|
79
|
+
* arm for the rest of the session and strand the dock on a stale checklist. */
|
|
80
|
+
readonly planFromNotification: boolean;
|
|
81
|
+
/** The open review-mode item's id, or `null` when review mode is not active.
|
|
82
|
+
*
|
|
83
|
+
* Codex announces review mode as two disjoint frames (`enteredReviewMode`,
|
|
84
|
+
* `exitedReviewMode`) with different ids. Mapped literally that is two
|
|
85
|
+
* childless `task` items — which the Agents dock would read as two separate
|
|
86
|
+
* sub-agents that each did nothing (spec
|
|
87
|
+
* `.ai/specs/2026-07-20-grouped-subagent-display.md` §"Codex-mapper fix",
|
|
88
|
+
* #474). This latch folds the pair into ONE item with a running→completed
|
|
89
|
+
* lifecycle: the entered frame opens it, the exited frame completes that
|
|
90
|
+
* same id. An unpaired exit falls back to its own item, so a stream that
|
|
91
|
+
* starts mid-review still renders. */
|
|
92
|
+
readonly reviewItemId: string | null;
|
|
93
|
+
/** Child thread → stable task item created by a Codex collaboration spawn.
|
|
94
|
+
* Installed 0.144.6 uses `collabAgentToolCall`; newer protocol revisions use
|
|
95
|
+
* `collabToolCall`. Both carry the receiver ids used for child attribution. */
|
|
96
|
+
readonly collabTasks: ReadonlyMap<string, CodexCollabTask>;
|
|
97
|
+
}
|
|
98
|
+
export interface CodexUiMapping {
|
|
99
|
+
events: UiEvent[];
|
|
100
|
+
state: CodexUiMapperState;
|
|
101
|
+
}
|
|
102
|
+
export declare function createCodexUiState(): CodexUiMapperState;
|
|
103
|
+
/**
|
|
104
|
+
* Codex confirms the thread via the `thread/start`/`thread/resume` RESULT
|
|
105
|
+
* (a response frame the mapper cannot attribute), so the runner calls this
|
|
106
|
+
* once the thread id is known. Deduplicated against the `thread/started`
|
|
107
|
+
* notification — whichever arrives first emits `session.started`.
|
|
108
|
+
*/
|
|
109
|
+
export declare function codexSessionStarted(threadId: string, state: CodexUiMapperState): CodexUiMapping;
|
|
110
|
+
/** Fold one parsed JSON-RPC frame into v2 events. Never throws. */
|
|
111
|
+
export declare function mapCodexNotification(frame: unknown, state: CodexUiMapperState): CodexUiMapping;
|
|
112
|
+
export {};
|