@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,41 @@
|
|
|
1
|
+
import type { AgentEvent, AgentRunResult, AgentRunSpec, AgentRunner, AgentSession, SessionOptions } from './agent-runner.ts';
|
|
2
|
+
export interface CodexRunnerOptions {
|
|
3
|
+
/** Override the binary name/path; defaults to `codex` on PATH. */
|
|
4
|
+
bin?: string;
|
|
5
|
+
/** Wall-clock timeout for a run (ms); per-spec `timeoutMs` still wins. */
|
|
6
|
+
timeoutMs?: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* `AgentRunner` over `codex app-server` — the same JSONL transport the VS Code
|
|
10
|
+
* extension and desktop app use (JSON-RPC 2.0, newline-delimited, over
|
|
11
|
+
* stdin/stdout). One long-lived process per session gives Codex the same
|
|
12
|
+
* multi-turn shape as the Claude runner: `turn/start` for a new turn,
|
|
13
|
+
* `turn/steer` for a mid-turn follow-up, `turn/interrupt` to cancel, and
|
|
14
|
+
* `thread/resume` to reopen a stored thread for "Continue".
|
|
15
|
+
*
|
|
16
|
+
* Auth = the host's logged-in ChatGPT/Codex session (or CODEX_API_KEY). The
|
|
17
|
+
* agent runs autonomously via `sandbox: danger-full-access` +
|
|
18
|
+
* `approvalPolicy: never`, matching cezar's default auto permission mode
|
|
19
|
+
* (spec 2026-07-17-permission-modes). Codex has no per-tool allowlist, so
|
|
20
|
+
* `spec.allowedTools` is ignored. `CEZ_CODEX_NETWORK=0` retains the previous
|
|
21
|
+
* network-blocked `workspace-write` sandbox as an explicit restriction.
|
|
22
|
+
*/
|
|
23
|
+
export declare class CodexAppServerRunner implements AgentRunner {
|
|
24
|
+
readonly backend: 'codex';
|
|
25
|
+
private readonly bin;
|
|
26
|
+
private readonly timeoutMs;
|
|
27
|
+
private lastSession;
|
|
28
|
+
constructor(opts?: CodexRunnerOptions);
|
|
29
|
+
run(spec: AgentRunSpec, onEvent?: (event: AgentEvent) => void): Promise<AgentRunResult>;
|
|
30
|
+
interrupt(): Promise<void>;
|
|
31
|
+
startSession(spec: AgentRunSpec, onEvent?: (event: AgentEvent) => void, opts?: SessionOptions): AgentSession;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* The reasoning-summary override sent on `turn/start` (TurnStartParams.summary).
|
|
35
|
+
* Defaults to `auto` so reasoning is visible out of the box — without it the
|
|
36
|
+
* app-server runs with its own default (no summary) and the reasoning thread
|
|
37
|
+
* stays empty even when the model reasons. `CEZ_CODEX_REASONING` overrides the
|
|
38
|
+
* default (`auto`/`concise`/`detailed`, or `none` to opt out); an unrecognized
|
|
39
|
+
* value falls back to `auto`.
|
|
40
|
+
*/
|
|
41
|
+
export declare function reasoningSummary(env?: NodeJS.ProcessEnv): string;
|
|
@@ -0,0 +1,584 @@
|
|
|
1
|
+
import { isSignalTerminationExit, prependSystemPrompt, trackChildExit } from './agent-runner.js';
|
|
2
|
+
import { AUTO_END_DELAY_MS, DEFAULT_RUN_TIMEOUT_MS, KILL_GRACE_MS, } from './claude-cli-runner.js';
|
|
3
|
+
import { parseAskRequest } from './ask.js';
|
|
4
|
+
import { readNdjson } from './ndjson.js';
|
|
5
|
+
import { V1TextCoalescer } from './v1-text-coalescer.js';
|
|
6
|
+
import { CodexAppServerRpc, codexSpawnError, endCodexAppServer, resolveCodexExecutable, spawnCodexAppServer, waitForCodexAppServerExit, } from './codex-app-server-transport.js';
|
|
7
|
+
import { codexSessionStarted, createCodexUiState, mapCodexNotification, } from './codex-ui-mapper.js';
|
|
8
|
+
/**
|
|
9
|
+
* `AgentRunner` over `codex app-server` — the same JSONL transport the VS Code
|
|
10
|
+
* extension and desktop app use (JSON-RPC 2.0, newline-delimited, over
|
|
11
|
+
* stdin/stdout). One long-lived process per session gives Codex the same
|
|
12
|
+
* multi-turn shape as the Claude runner: `turn/start` for a new turn,
|
|
13
|
+
* `turn/steer` for a mid-turn follow-up, `turn/interrupt` to cancel, and
|
|
14
|
+
* `thread/resume` to reopen a stored thread for "Continue".
|
|
15
|
+
*
|
|
16
|
+
* Auth = the host's logged-in ChatGPT/Codex session (or CODEX_API_KEY). The
|
|
17
|
+
* agent runs autonomously via `sandbox: danger-full-access` +
|
|
18
|
+
* `approvalPolicy: never`, matching cezar's default auto permission mode
|
|
19
|
+
* (spec 2026-07-17-permission-modes). Codex has no per-tool allowlist, so
|
|
20
|
+
* `spec.allowedTools` is ignored. `CEZ_CODEX_NETWORK=0` retains the previous
|
|
21
|
+
* network-blocked `workspace-write` sandbox as an explicit restriction.
|
|
22
|
+
*/
|
|
23
|
+
export class CodexAppServerRunner {
|
|
24
|
+
backend = 'codex';
|
|
25
|
+
bin;
|
|
26
|
+
timeoutMs;
|
|
27
|
+
lastSession = null;
|
|
28
|
+
constructor(opts = {}) {
|
|
29
|
+
this.bin = resolveCodexExecutable(opts.bin);
|
|
30
|
+
this.timeoutMs = opts.timeoutMs ?? DEFAULT_RUN_TIMEOUT_MS;
|
|
31
|
+
}
|
|
32
|
+
run(spec, onEvent) {
|
|
33
|
+
return this.startSession(spec, onEvent, { autoEndAfterFirstTurn: true }).result;
|
|
34
|
+
}
|
|
35
|
+
async interrupt() {
|
|
36
|
+
this.lastSession?.interrupt();
|
|
37
|
+
}
|
|
38
|
+
startSession(spec, onEvent, opts = {}) {
|
|
39
|
+
const session = new CodexSession(this.bin, this.timeoutMs, spec, onEvent, opts);
|
|
40
|
+
this.lastSession = session;
|
|
41
|
+
return session;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/** One live `codex app-server` process driving a single thread. */
|
|
45
|
+
class CodexSession {
|
|
46
|
+
bin;
|
|
47
|
+
spec;
|
|
48
|
+
onEvent;
|
|
49
|
+
opts;
|
|
50
|
+
result;
|
|
51
|
+
child;
|
|
52
|
+
rpc;
|
|
53
|
+
stdinOpen = true;
|
|
54
|
+
threadId;
|
|
55
|
+
activeTurnId;
|
|
56
|
+
pendingUserInput;
|
|
57
|
+
toolCalls = [];
|
|
58
|
+
textChunks = [];
|
|
59
|
+
/** Streamed agentMessage deltas buffered per item — v1 `text` is emitted
|
|
60
|
+
* once per completed item (claude parity: one event per complete block),
|
|
61
|
+
* never per delta, so the persisted transcript and the headless CLI get
|
|
62
|
+
* whole paragraphs. Streaming display rides protocol v2's `item.delta`. */
|
|
63
|
+
textCoalescer = new V1TextCoalescer((text) => {
|
|
64
|
+
this.textChunks.push(text);
|
|
65
|
+
this.emit({ type: 'text', text });
|
|
66
|
+
});
|
|
67
|
+
tokensUsed = 0;
|
|
68
|
+
ready;
|
|
69
|
+
autoEndTimer;
|
|
70
|
+
eofTermTimer;
|
|
71
|
+
eofKillTimer;
|
|
72
|
+
spawnFailed = null;
|
|
73
|
+
timedOut = false;
|
|
74
|
+
/** Set the moment WE signal the child (EOF watchdog, cancel, kill switch).
|
|
75
|
+
* codex handles the signal and exits 143, so without this the runner reads
|
|
76
|
+
* its own teardown as a codex failure (#703). */
|
|
77
|
+
terminatedByCezar = false;
|
|
78
|
+
/** "Has the app-server really terminated?" — the question `child.killed`
|
|
79
|
+
* does not answer: it flips on signal delivery, so the SIGTERM this runner
|
|
80
|
+
* sends would otherwise veto its own SIGKILL escalation (#844). */
|
|
81
|
+
hasExited;
|
|
82
|
+
/** Protocol v2 emission — additive alongside v1 (`onEvent` keeps flowing
|
|
83
|
+
* byte-identical); the channel is `opts.onUiEvent` (RunManager wiring
|
|
84
|
+
* lands in R2 step 2.1). */
|
|
85
|
+
uiState = createCodexUiState();
|
|
86
|
+
constructor(bin, timeoutMs, spec, onEvent, opts) {
|
|
87
|
+
this.bin = bin;
|
|
88
|
+
this.spec = spec;
|
|
89
|
+
this.onEvent = onEvent;
|
|
90
|
+
this.opts = opts;
|
|
91
|
+
try {
|
|
92
|
+
this.child = spawnCodexAppServer(bin, spec.cwd, spec.env);
|
|
93
|
+
this.rpc = new CodexAppServerRpc(this.child);
|
|
94
|
+
}
|
|
95
|
+
catch (err) {
|
|
96
|
+
throw codexSpawnError(err, bin);
|
|
97
|
+
}
|
|
98
|
+
this.hasExited = trackChildExit(this.child);
|
|
99
|
+
this.child.on('error', (err) => {
|
|
100
|
+
this.spawnFailed = codexSpawnError(err, bin);
|
|
101
|
+
});
|
|
102
|
+
const stderrChunks = [];
|
|
103
|
+
this.child.stderr.setEncoding('utf8');
|
|
104
|
+
this.child.stderr.on('data', (chunk) => stderrChunks.push(chunk));
|
|
105
|
+
// Optional wall-clock kill switch (disabled for interactive sessions).
|
|
106
|
+
const limitMs = spec.timeoutMs ?? timeoutMs;
|
|
107
|
+
let killTimer;
|
|
108
|
+
let deadline;
|
|
109
|
+
if (limitMs > 0) {
|
|
110
|
+
deadline = setTimeout(() => {
|
|
111
|
+
this.timedOut = true;
|
|
112
|
+
this.interrupt();
|
|
113
|
+
this.child.stdout.destroy();
|
|
114
|
+
killTimer = setTimeout(() => {
|
|
115
|
+
if (!this.hasExited()) {
|
|
116
|
+
this.terminatedByCezar = true;
|
|
117
|
+
this.child.kill('SIGKILL');
|
|
118
|
+
}
|
|
119
|
+
}, KILL_GRACE_MS);
|
|
120
|
+
killTimer.unref?.();
|
|
121
|
+
}, limitMs);
|
|
122
|
+
deadline.unref?.();
|
|
123
|
+
}
|
|
124
|
+
// Handshake → thread → first turn. Kicked off concurrently with the read
|
|
125
|
+
// loop below (which resolves the request() promises this awaits).
|
|
126
|
+
this.ready = this.bootstrap();
|
|
127
|
+
this.result = (async () => {
|
|
128
|
+
let sessionError;
|
|
129
|
+
try {
|
|
130
|
+
const readLoop = async () => {
|
|
131
|
+
for await (const line of readNdjson(this.child.stdout)) {
|
|
132
|
+
if (this.timedOut)
|
|
133
|
+
break;
|
|
134
|
+
let msg;
|
|
135
|
+
try {
|
|
136
|
+
msg = JSON.parse(line);
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
continue; // not JSON-RPC — skip
|
|
140
|
+
}
|
|
141
|
+
// A sub-agent child thread's turn lifecycle must reach neither channel (#600):
|
|
142
|
+
// v1 would emit a bogus `turn-end`, and the v2 mapper — which carries no thread
|
|
143
|
+
// identity — would record the child turn as the parent's, clearing its turn-scoped
|
|
144
|
+
// plan/reasoning state and resetting the current turn id. Child ITEM events still
|
|
145
|
+
// flow, so nested sub-agent activity keeps rendering.
|
|
146
|
+
if (this.isForeignTurnLifecycle(msg))
|
|
147
|
+
continue;
|
|
148
|
+
this.emitUi((state) => mapCodexNotification(msg, state));
|
|
149
|
+
this.dispatch(msg);
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
// Start consuming stdout before awaiting bootstrap: JSON-RPC responses
|
|
153
|
+
// read here settle the initialize/thread/turn requests. Owning both
|
|
154
|
+
// promises makes every bootstrap rejection part of session.result.
|
|
155
|
+
await Promise.all([this.ready, readLoop()]);
|
|
156
|
+
}
|
|
157
|
+
catch (err) {
|
|
158
|
+
if (!this.timedOut) {
|
|
159
|
+
sessionError = err;
|
|
160
|
+
// Bootstrap failed before a usable turn exists. Closing stdin lets
|
|
161
|
+
// app-server exit normally; end() also owns the TERM/KILL watchdog
|
|
162
|
+
// if a broken child ignores EOF.
|
|
163
|
+
this.end();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
if (deadline)
|
|
168
|
+
clearTimeout(deadline);
|
|
169
|
+
if (killTimer)
|
|
170
|
+
clearTimeout(killTimer);
|
|
171
|
+
if (this.autoEndTimer)
|
|
172
|
+
clearTimeout(this.autoEndTimer);
|
|
173
|
+
this.stdinOpen = false;
|
|
174
|
+
}
|
|
175
|
+
const exitCode = await waitForCodexAppServerExit(this.child);
|
|
176
|
+
if (this.eofTermTimer)
|
|
177
|
+
clearTimeout(this.eofTermTimer);
|
|
178
|
+
if (this.eofKillTimer)
|
|
179
|
+
clearTimeout(this.eofKillTimer);
|
|
180
|
+
this.rpc.rejectPending();
|
|
181
|
+
if (this.spawnFailed)
|
|
182
|
+
throw this.spawnFailed;
|
|
183
|
+
if (sessionError)
|
|
184
|
+
throw sessionError;
|
|
185
|
+
// Timeout/interrupt can end the read loop mid-item — recover buffered prose.
|
|
186
|
+
this.textCoalescer.flush();
|
|
187
|
+
const text = this.textChunks.join('\n').trim();
|
|
188
|
+
const base = {
|
|
189
|
+
text,
|
|
190
|
+
toolCalls: this.toolCalls,
|
|
191
|
+
tokensUsed: this.tokensUsed,
|
|
192
|
+
sessionId: this.threadId ?? spec.sessionId,
|
|
193
|
+
};
|
|
194
|
+
if (this.timedOut) {
|
|
195
|
+
const mins = Math.round((limitMs / 60_000) * 10) / 10;
|
|
196
|
+
this.emit({ type: 'error', message: `codex app-server timed out after ${mins}m and was killed` });
|
|
197
|
+
this.emit({ type: 'done' });
|
|
198
|
+
return base;
|
|
199
|
+
}
|
|
200
|
+
// Our own EOF watchdog / cancel signal coming back as 143/137 — the
|
|
201
|
+
// teardown cezar asked for, not a codex failure (#703).
|
|
202
|
+
if (this.terminatedByCezar && isSignalTerminationExit(exitCode)) {
|
|
203
|
+
this.emit({
|
|
204
|
+
type: 'note',
|
|
205
|
+
message: `codex app-server did not exit on its own after close; terminated by cezar (code ${exitCode})`,
|
|
206
|
+
});
|
|
207
|
+
this.emit({ type: 'done' });
|
|
208
|
+
return base;
|
|
209
|
+
}
|
|
210
|
+
if (exitCode !== 0 && exitCode !== null) {
|
|
211
|
+
const stderr = stderrChunks.join('').trim();
|
|
212
|
+
const detail = stderr ? ` — ${stderr.split('\n').slice(-3).join(' | ')}` : '';
|
|
213
|
+
const message = `codex app-server exited with code ${exitCode}${detail}`;
|
|
214
|
+
this.emit({ type: 'error', message });
|
|
215
|
+
throw new Error(message);
|
|
216
|
+
}
|
|
217
|
+
this.emit({ type: 'done' });
|
|
218
|
+
return base;
|
|
219
|
+
})();
|
|
220
|
+
}
|
|
221
|
+
get open() {
|
|
222
|
+
return this.stdinOpen;
|
|
223
|
+
}
|
|
224
|
+
get pid() {
|
|
225
|
+
return this.child.pid;
|
|
226
|
+
}
|
|
227
|
+
sendMessage(content) {
|
|
228
|
+
if (!this.stdinOpen)
|
|
229
|
+
return false;
|
|
230
|
+
if (this.autoEndTimer) {
|
|
231
|
+
clearTimeout(this.autoEndTimer);
|
|
232
|
+
this.autoEndTimer = undefined;
|
|
233
|
+
}
|
|
234
|
+
const text = textOf(content);
|
|
235
|
+
if (!text)
|
|
236
|
+
return true;
|
|
237
|
+
if (this.pendingUserInput) {
|
|
238
|
+
const pending = this.pendingUserInput;
|
|
239
|
+
this.pendingUserInput = undefined;
|
|
240
|
+
this.rpc.respond({ id: pending.rpcId, result: { answers: userInputAnswers(pending.questions, text) } });
|
|
241
|
+
return true;
|
|
242
|
+
}
|
|
243
|
+
// Wait for the thread to exist, then steer the live turn or start a new one.
|
|
244
|
+
void this.ready
|
|
245
|
+
.then(() => this.startOrSteerTurn(text))
|
|
246
|
+
.catch((err) => {
|
|
247
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
248
|
+
this.emit({ type: 'note', message: `codex: turn failed: ${message}` });
|
|
249
|
+
});
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
end() {
|
|
253
|
+
if (!this.stdinOpen)
|
|
254
|
+
return;
|
|
255
|
+
this.rejectPendingUserInput('session ended');
|
|
256
|
+
this.stdinOpen = false;
|
|
257
|
+
try {
|
|
258
|
+
endCodexAppServer(this.child, (term, kill) => {
|
|
259
|
+
this.eofTermTimer = term;
|
|
260
|
+
this.eofKillTimer = kill;
|
|
261
|
+
}, () => {
|
|
262
|
+
this.terminatedByCezar = true;
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
// already gone
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
interrupt() {
|
|
270
|
+
this.stdinOpen = false;
|
|
271
|
+
this.rejectPendingUserInput('turn interrupted');
|
|
272
|
+
// Best-effort graceful cancel of the in-flight turn, then hard stop.
|
|
273
|
+
if (this.threadId && this.activeTurnId) {
|
|
274
|
+
void this.rpc.request('turn/interrupt', { threadId: this.threadId, turnId: this.activeTurnId }).catch(() => undefined);
|
|
275
|
+
}
|
|
276
|
+
if (!this.hasExited()) {
|
|
277
|
+
this.terminatedByCezar = true;
|
|
278
|
+
this.child.kill('SIGTERM');
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
// ---- protocol -----------------------------------------------------------
|
|
282
|
+
async bootstrap() {
|
|
283
|
+
await this.rpc.initialize();
|
|
284
|
+
const overrides = {
|
|
285
|
+
model: this.spec.model,
|
|
286
|
+
cwd: this.spec.cwd,
|
|
287
|
+
// Full access is the `auto` preset shared by all backends. Besides avoiding prompts, this
|
|
288
|
+
// keeps container installs working when bubblewrap cannot create a UID map (#563).
|
|
289
|
+
// CEZ_CODEX_NETWORK=0 remains the backwards-compatible explicit sandbox opt-out.
|
|
290
|
+
sandbox: process.env.CEZ_CODEX_NETWORK === '0' ? 'workspace-write' : 'danger-full-access',
|
|
291
|
+
approvalPolicy: 'never',
|
|
292
|
+
};
|
|
293
|
+
if (this.spec.resume && this.spec.sessionId) {
|
|
294
|
+
await this.rpc.request('thread/resume', { threadId: this.spec.sessionId, ...clean(overrides) });
|
|
295
|
+
this.threadId = this.spec.sessionId;
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
const res = await this.rpc.request('thread/start', clean(overrides));
|
|
299
|
+
this.threadId = threadIdOf(res) ?? this.spec.sessionId;
|
|
300
|
+
}
|
|
301
|
+
if (this.threadId) {
|
|
302
|
+
this.emit({ type: 'session', sessionId: this.threadId });
|
|
303
|
+
// The result path (thread/start response, or thread/resume which sends
|
|
304
|
+
// no thread/started notification) — deduplicated inside the mapper.
|
|
305
|
+
const threadId = this.threadId;
|
|
306
|
+
this.emitUi((state) => codexSessionStarted(threadId, state));
|
|
307
|
+
}
|
|
308
|
+
// Seed the first turn. The system prompt (skill body + handoff contract)
|
|
309
|
+
// has no dedicated app-server field, so it rides along as a leading block
|
|
310
|
+
// of the opening message.
|
|
311
|
+
const first = prependSystemPrompt(this.spec.systemPrompt, this.spec.userPrompt);
|
|
312
|
+
await this.startOrSteerTurn(first);
|
|
313
|
+
}
|
|
314
|
+
async startOrSteerTurn(text) {
|
|
315
|
+
if (!this.threadId)
|
|
316
|
+
return;
|
|
317
|
+
const input = [{ type: 'text', text, text_elements: [] }];
|
|
318
|
+
if (this.activeTurnId) {
|
|
319
|
+
await this.rpc.request('turn/steer', {
|
|
320
|
+
threadId: this.threadId,
|
|
321
|
+
input,
|
|
322
|
+
expectedTurnId: this.activeTurnId,
|
|
323
|
+
});
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
// Ask the app-server for reasoning summaries; without this the model runs
|
|
327
|
+
// with its default (no summary), so the reasoning thread stays empty even
|
|
328
|
+
// though the mapper and UI can render it. The override persists for this
|
|
329
|
+
// turn and every subsequent turn, so seeding it on turn/start is enough.
|
|
330
|
+
const res = await this.rpc.request('turn/start', {
|
|
331
|
+
threadId: this.threadId,
|
|
332
|
+
input,
|
|
333
|
+
summary: reasoningSummary(),
|
|
334
|
+
});
|
|
335
|
+
this.activeTurnId = turnIdOf(res) ?? this.activeTurnId;
|
|
336
|
+
}
|
|
337
|
+
dispatch(msg) {
|
|
338
|
+
if (this.rpc.dispatchResponse(msg))
|
|
339
|
+
return;
|
|
340
|
+
if (msg.method === 'item/tool/requestUserInput' && (typeof msg.id === 'number' || typeof msg.id === 'string')) {
|
|
341
|
+
this.handleUserInputRequest(msg.id, msg.params ?? {});
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
if (typeof msg.method === 'string')
|
|
345
|
+
this.handleNotification(msg.method, msg.params ?? {});
|
|
346
|
+
}
|
|
347
|
+
handleUserInputRequest(rpcId, params) {
|
|
348
|
+
const questions = codexAskQuestions(params.questions);
|
|
349
|
+
if (!questions) {
|
|
350
|
+
this.rpc.respond({ id: rpcId, error: { code: -32602, message: 'unsupported or malformed requestUserInput payload' } });
|
|
351
|
+
return;
|
|
352
|
+
}
|
|
353
|
+
if (this.pendingUserInput)
|
|
354
|
+
this.rejectPendingUserInput('superseded by a newer requestUserInput');
|
|
355
|
+
this.pendingUserInput = { rpcId, questions };
|
|
356
|
+
this.opts.onUiEvent?.({ type: 'ask.requested', requestId: `codex-${String(rpcId)}`, questions });
|
|
357
|
+
}
|
|
358
|
+
rejectPendingUserInput(message) {
|
|
359
|
+
const pending = this.pendingUserInput;
|
|
360
|
+
if (!pending)
|
|
361
|
+
return;
|
|
362
|
+
this.pendingUserInput = undefined;
|
|
363
|
+
this.rpc.respond({ id: pending.rpcId, error: { code: -32000, message } });
|
|
364
|
+
}
|
|
365
|
+
/** True when a turn notification belongs to a sub-agent CHILD thread rather than this run's
|
|
366
|
+
* own main thread — its lifecycle must not start or end the parent turn (#600). The app-server
|
|
367
|
+
* multiplexes every thread over one connection, so a spawned skill's child `turn/completed`
|
|
368
|
+
* would otherwise emit a `turn-end` and park the actively-working run under "Needs you".
|
|
369
|
+
* Fail-open: an absent `threadId` (the single-thread wire shape) or our own id counts as ours. */
|
|
370
|
+
isForeignThreadTurn(params) {
|
|
371
|
+
const eventThreadId = stringField(params, 'threadId');
|
|
372
|
+
return !!eventThreadId && !!this.threadId && eventThreadId !== this.threadId;
|
|
373
|
+
}
|
|
374
|
+
/** A `turn/started|completed|failed` notification for a sub-agent child thread — dropped
|
|
375
|
+
* before either channel processes it (#600). Only turn lifecycle is filtered; child item
|
|
376
|
+
* events still map, so nested sub-agent activity keeps rendering. */
|
|
377
|
+
isForeignTurnLifecycle(msg) {
|
|
378
|
+
const method = typeof msg.method === 'string' ? msg.method : undefined;
|
|
379
|
+
if (!method || !TURN_LIFECYCLE_METHODS.has(method))
|
|
380
|
+
return false;
|
|
381
|
+
return this.isForeignThreadTurn((msg.params ?? {}));
|
|
382
|
+
}
|
|
383
|
+
handleNotification(method, params) {
|
|
384
|
+
switch (method) {
|
|
385
|
+
case 'turn/started': {
|
|
386
|
+
if (this.isForeignThreadTurn(params))
|
|
387
|
+
break; // sub-agent child thread — not our turn (#600)
|
|
388
|
+
this.activeTurnId = turnIdOf(params) ?? this.activeTurnId;
|
|
389
|
+
break;
|
|
390
|
+
}
|
|
391
|
+
case 'item/agentMessage/delta': {
|
|
392
|
+
const delta = typeof params.delta === 'string' ? params.delta : '';
|
|
393
|
+
if (delta)
|
|
394
|
+
this.textCoalescer.append(stringField(params, 'itemId'), delta);
|
|
395
|
+
break;
|
|
396
|
+
}
|
|
397
|
+
case 'item/started': {
|
|
398
|
+
const item = params.item ?? {};
|
|
399
|
+
const type = stringField(item, 'type');
|
|
400
|
+
// Only tool-like items become tool events; message/reasoning stream as text.
|
|
401
|
+
if (type && !NON_TOOL_ITEMS.has(type)) {
|
|
402
|
+
const id = stringField(item, 'id') ?? `item-${this.rpc.allocateId()}`;
|
|
403
|
+
this.toolCalls.push({ id, name: type, input: item });
|
|
404
|
+
this.emit({ type: 'tool-call', id, tool: type, input: item });
|
|
405
|
+
}
|
|
406
|
+
break;
|
|
407
|
+
}
|
|
408
|
+
case 'item/completed': {
|
|
409
|
+
const item = params.item ?? {};
|
|
410
|
+
const type = stringField(item, 'type');
|
|
411
|
+
const id = stringField(item, 'id') ?? '';
|
|
412
|
+
if (type === 'agentMessage') {
|
|
413
|
+
// One v1 `text` per finished message — the snapshot's full text when
|
|
414
|
+
// present (also covers turns that send no deltas), else the deltas.
|
|
415
|
+
this.textCoalescer.complete(id || undefined, typeof item.text === 'string' ? item.text : undefined);
|
|
416
|
+
}
|
|
417
|
+
else if (type && !NON_TOOL_ITEMS.has(type) && id) {
|
|
418
|
+
this.emit({
|
|
419
|
+
type: 'tool-result',
|
|
420
|
+
toolCallId: id,
|
|
421
|
+
result: safeStringify(item),
|
|
422
|
+
isError: /error|failed/i.test(stringField(item, 'status') ?? ''),
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
break;
|
|
426
|
+
}
|
|
427
|
+
case 'thread/tokenUsage/updated': {
|
|
428
|
+
const total = tokenTotal(params);
|
|
429
|
+
if (total > 0) {
|
|
430
|
+
this.tokensUsed = total;
|
|
431
|
+
this.emit({ type: 'token-usage', tokensUsed: this.tokensUsed });
|
|
432
|
+
}
|
|
433
|
+
break;
|
|
434
|
+
}
|
|
435
|
+
case 'turn/completed':
|
|
436
|
+
case 'turn/failed': {
|
|
437
|
+
if (this.isForeignThreadTurn(params))
|
|
438
|
+
break; // don't end the parent turn on a child turn (#600)
|
|
439
|
+
this.pendingUserInput = undefined;
|
|
440
|
+
this.activeTurnId = undefined;
|
|
441
|
+
// An interrupted/failed item never sees item/completed — surface its
|
|
442
|
+
// partial prose before the turn boundary (run.ts reads markers there).
|
|
443
|
+
this.textCoalescer.flush();
|
|
444
|
+
if (method === 'turn/failed' && !this.terminatedByCezar) {
|
|
445
|
+
const error = params.error;
|
|
446
|
+
const message = stringField(error ?? {}, 'message') ?? 'codex turn failed';
|
|
447
|
+
this.emit({ type: 'error', message });
|
|
448
|
+
}
|
|
449
|
+
this.emit({ type: 'turn-end' });
|
|
450
|
+
if (this.opts.autoEndAfterFirstTurn && this.stdinOpen && !this.autoEndTimer) {
|
|
451
|
+
this.autoEndTimer = setTimeout(() => this.end(), AUTO_END_DELAY_MS);
|
|
452
|
+
this.autoEndTimer.unref?.();
|
|
453
|
+
}
|
|
454
|
+
break;
|
|
455
|
+
}
|
|
456
|
+
default:
|
|
457
|
+
break;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
emit(event) {
|
|
461
|
+
this.onEvent?.(event);
|
|
462
|
+
}
|
|
463
|
+
/** The mapper never throws, but a defect in it must still never disturb
|
|
464
|
+
* the v1 stream — hence the belt-and-braces try. */
|
|
465
|
+
emitUi(map) {
|
|
466
|
+
try {
|
|
467
|
+
const mapped = map(this.uiState);
|
|
468
|
+
this.uiState = mapped.state;
|
|
469
|
+
if (this.opts.onUiEvent) {
|
|
470
|
+
for (const event of mapped.events)
|
|
471
|
+
this.opts.onUiEvent(event);
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
catch {
|
|
475
|
+
// v2 mapping is best-effort; v1 consumers stay unaffected.
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
// ---- helpers --------------------------------------------------------------
|
|
480
|
+
function codexAskQuestions(value) {
|
|
481
|
+
if (!Array.isArray(value) || value.length < 1 || value.length > 4)
|
|
482
|
+
return null;
|
|
483
|
+
const questions = [];
|
|
484
|
+
for (const raw of value) {
|
|
485
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw))
|
|
486
|
+
return null;
|
|
487
|
+
const question = raw;
|
|
488
|
+
if (question.isSecret === true)
|
|
489
|
+
return null;
|
|
490
|
+
const id = stringField(question, 'id');
|
|
491
|
+
const header = stringField(question, 'header');
|
|
492
|
+
const prompt = stringField(question, 'question');
|
|
493
|
+
if (!id || !header || !prompt || !Array.isArray(question.options))
|
|
494
|
+
return null;
|
|
495
|
+
const options = question.options.map((option) => {
|
|
496
|
+
if (!option || typeof option !== 'object' || Array.isArray(option))
|
|
497
|
+
return null;
|
|
498
|
+
const record = option;
|
|
499
|
+
const label = stringField(record, 'label');
|
|
500
|
+
const description = stringField(record, 'description');
|
|
501
|
+
return label ? { label, ...(description ? { description } : {}) } : null;
|
|
502
|
+
}).filter((option) => option !== null);
|
|
503
|
+
questions.push({ id, header, question: prompt, options, multiSelect: false });
|
|
504
|
+
}
|
|
505
|
+
return parseAskRequest({ questions })?.questions ?? null;
|
|
506
|
+
}
|
|
507
|
+
function userInputAnswers(questions, text) {
|
|
508
|
+
const lines = text.split(/\r?\n/);
|
|
509
|
+
const hasStructuredAnswer = questions.some((question) => lines.some((line) => line.startsWith(`${question.header}:`)));
|
|
510
|
+
const answers = {};
|
|
511
|
+
for (const [index, question] of questions.entries()) {
|
|
512
|
+
const prefix = `${question.header}:`;
|
|
513
|
+
const matching = lines.find((line) => line.startsWith(prefix));
|
|
514
|
+
const raw = matching?.slice(prefix.length).trim() ?? (!hasStructuredAnswer && index === 0 ? text.trim() : '');
|
|
515
|
+
answers[question.id ?? String(index)] = {
|
|
516
|
+
answers: raw === '' ? [] : raw.split(',').map((answer) => answer.trim()).filter(Boolean),
|
|
517
|
+
};
|
|
518
|
+
}
|
|
519
|
+
return answers;
|
|
520
|
+
}
|
|
521
|
+
/** ThreadItem `type`s that are conversation text, not tool activity. */
|
|
522
|
+
const NON_TOOL_ITEMS = new Set(['agentMessage', 'userMessage', 'reasoning', 'plan']);
|
|
523
|
+
/** Turn-lifecycle notification methods — the only frames whose child-thread copies must be
|
|
524
|
+
* dropped so a sub-agent turn can't be mistaken for the parent's (#600). */
|
|
525
|
+
const TURN_LIFECYCLE_METHODS = new Set(['turn/started', 'turn/completed', 'turn/failed']);
|
|
526
|
+
const REASONING_SUMMARIES = new Set(['auto', 'concise', 'detailed', 'none']);
|
|
527
|
+
/**
|
|
528
|
+
* The reasoning-summary override sent on `turn/start` (TurnStartParams.summary).
|
|
529
|
+
* Defaults to `auto` so reasoning is visible out of the box — without it the
|
|
530
|
+
* app-server runs with its own default (no summary) and the reasoning thread
|
|
531
|
+
* stays empty even when the model reasons. `CEZ_CODEX_REASONING` overrides the
|
|
532
|
+
* default (`auto`/`concise`/`detailed`, or `none` to opt out); an unrecognized
|
|
533
|
+
* value falls back to `auto`.
|
|
534
|
+
*/
|
|
535
|
+
export function reasoningSummary(env = process.env) {
|
|
536
|
+
const raw = env.CEZ_CODEX_REASONING?.trim().toLowerCase();
|
|
537
|
+
if (!raw)
|
|
538
|
+
return 'auto';
|
|
539
|
+
return REASONING_SUMMARIES.has(raw) ? raw : 'auto';
|
|
540
|
+
}
|
|
541
|
+
function textOf(content) {
|
|
542
|
+
return content
|
|
543
|
+
.filter((b) => b.type === 'text')
|
|
544
|
+
.map((b) => b.text)
|
|
545
|
+
.join('\n')
|
|
546
|
+
.trim();
|
|
547
|
+
}
|
|
548
|
+
/** Drop undefined values so we never send `"model": null` to the server. */
|
|
549
|
+
function clean(obj) {
|
|
550
|
+
const out = {};
|
|
551
|
+
for (const [k, v] of Object.entries(obj)) {
|
|
552
|
+
if (v !== undefined && v !== null)
|
|
553
|
+
out[k] = v;
|
|
554
|
+
}
|
|
555
|
+
return out;
|
|
556
|
+
}
|
|
557
|
+
function stringField(obj, key) {
|
|
558
|
+
const v = obj[key];
|
|
559
|
+
return typeof v === 'string' ? v : undefined;
|
|
560
|
+
}
|
|
561
|
+
function threadIdOf(res) {
|
|
562
|
+
const thread = res.thread;
|
|
563
|
+
return typeof thread?.id === 'string' ? thread.id : stringField(res, 'threadId');
|
|
564
|
+
}
|
|
565
|
+
function turnIdOf(obj) {
|
|
566
|
+
const turn = obj.turn;
|
|
567
|
+
return typeof turn?.id === 'string' ? turn.id : stringField(obj, 'turnId');
|
|
568
|
+
}
|
|
569
|
+
/** Cumulative tokens from a `thread/tokenUsage/updated` notification:
|
|
570
|
+
* `params.tokenUsage.total.totalTokens`. */
|
|
571
|
+
function tokenTotal(params) {
|
|
572
|
+
const usage = params.tokenUsage;
|
|
573
|
+
const total = usage?.total?.totalTokens;
|
|
574
|
+
return typeof total === 'number' ? total : 0;
|
|
575
|
+
}
|
|
576
|
+
function safeStringify(value) {
|
|
577
|
+
try {
|
|
578
|
+
return JSON.stringify(value);
|
|
579
|
+
}
|
|
580
|
+
catch {
|
|
581
|
+
return String(value);
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
//# sourceMappingURL=codex-app-server-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-app-server-runner.js","sourceRoot":"","sources":["../../src/core/codex-app-server-runner.ts"],"names":[],"mappings":"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"}
|