@bastani/atomic 0.9.13 → 0.9.14-alpha.2
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/CHANGELOG.md +58 -0
- package/README.md +3 -3
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/mcp/package.json +3 -3
- package/dist/builtin/subagents/CHANGELOG.md +14 -0
- package/dist/builtin/subagents/README.md +6 -4
- package/dist/builtin/subagents/agents/code-simplifier.md +1 -1
- package/dist/builtin/subagents/agents/codebase-analyzer.md +1 -1
- package/dist/builtin/subagents/agents/codebase-locator.md +1 -1
- package/dist/builtin/subagents/agents/codebase-online-researcher.md +1 -1
- package/dist/builtin/subagents/agents/codebase-pattern-finder.md +1 -1
- package/dist/builtin/subagents/agents/codebase-research-analyzer.md +1 -1
- package/dist/builtin/subagents/agents/codebase-research-locator.md +1 -1
- package/dist/builtin/subagents/agents/debugger.md +1 -1
- package/dist/builtin/subagents/agents/worker.md +1 -1
- package/dist/builtin/subagents/package.json +6 -5
- package/dist/builtin/subagents/src/agents/agent-discovery.ts +17 -11
- package/dist/builtin/subagents/src/agents/agent-loaders.ts +115 -43
- package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +10 -8
- package/dist/builtin/subagents/src/agents/agent-management.ts +8 -7
- package/dist/builtin/subagents/src/agents/agent-overrides.ts +2 -2
- package/dist/builtin/subagents/src/agents/agent-scope.ts +1 -1
- package/dist/builtin/subagents/src/agents/agent-selection.ts +1 -1
- package/dist/builtin/subagents/src/agents/agent-serializer.ts +24 -3
- package/dist/builtin/subagents/src/agents/agent-types.ts +3 -1
- package/dist/builtin/subagents/src/agents/agents.ts +7 -5
- package/dist/builtin/subagents/src/agents/frontmatter.ts +67 -22
- package/dist/builtin/subagents/src/agents/identity.ts +1 -1
- package/dist/builtin/subagents/src/agents/skills-paths.ts +1 -1
- package/dist/builtin/subagents/src/agents/skills.ts +64 -6
- package/dist/builtin/subagents/src/extension/config.ts +1 -1
- package/dist/builtin/subagents/src/extension/control-notices.ts +2 -2
- package/dist/builtin/subagents/src/extension/doctor.ts +15 -5
- package/dist/builtin/subagents/src/extension/fanout-child.ts +12 -12
- package/dist/builtin/subagents/src/extension/index.ts +23 -23
- package/dist/builtin/subagents/src/extension/notification-content.ts +1 -1
- package/dist/builtin/subagents/src/extension/schemas.ts +1 -1
- package/dist/builtin/subagents/src/extension/startup-maintenance.ts +3 -3
- package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +3 -3
- package/dist/builtin/subagents/src/intercom/result-intercom.ts +1 -1
- package/dist/builtin/subagents/src/intercom/supervisor-authorization.ts +1 -1
- package/dist/builtin/subagents/src/runs/foreground/completion-notification.ts +2 -2
- package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +1 -1
- package/dist/builtin/subagents/src/runs/foreground/execution-intercom-detach.ts +3 -3
- package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +1 -1
- package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +2 -2
- package/dist/builtin/subagents/src/runs/foreground/execution-utils.ts +1 -1
- package/dist/builtin/subagents/src/runs/foreground/execution.ts +2 -2
- package/dist/builtin/subagents/src/runs/foreground/inprocess-run-sync.ts +27 -11
- package/dist/builtin/subagents/src/runs/foreground/notify.ts +3 -3
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +11 -11
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +3 -3
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +15 -14
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +19 -19
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +2 -2
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +14 -13
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +9 -9
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +7 -7
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +6 -6
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +24 -23
- package/dist/builtin/subagents/src/runs/inprocess/control-registry.ts +1 -1
- package/dist/builtin/subagents/src/runs/inprocess/control-status.ts +3 -3
- package/dist/builtin/subagents/src/runs/inprocess/index.ts +3 -3
- package/dist/builtin/subagents/src/runs/inprocess/prompt-behavior.ts +17 -8
- package/dist/builtin/subagents/src/runs/inprocess/runner.ts +60 -12
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-api.ts +8 -8
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-control.ts +3 -3
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-core.ts +4 -4
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-projection.ts +4 -4
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-registry.ts +5 -5
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-rendering.ts +3 -3
- package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-sanitize.ts +3 -3
- package/dist/builtin/subagents/src/runs/inprocess.ts +1 -1
- package/dist/builtin/subagents/src/runs/shared/long-running-guard.ts +1 -1
- package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +1 -1
- package/dist/builtin/subagents/src/runs/shared/model-candidate-filter.ts +3 -3
- package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +2 -2
- package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +1 -1
- package/dist/builtin/subagents/src/runs/shared/single-output.ts +1 -1
- package/dist/builtin/subagents/src/runs/shared/subagent-control.ts +1 -1
- package/dist/builtin/subagents/src/shared/artifacts.ts +2 -2
- package/dist/builtin/subagents/src/shared/event-jsonl-writer.ts +1 -1
- package/dist/builtin/subagents/src/shared/fast-mode.ts +1 -1
- package/dist/builtin/subagents/src/shared/formatters.ts +2 -2
- package/dist/builtin/subagents/src/shared/jsonl-writer.ts +1 -1
- package/dist/builtin/subagents/src/shared/model-resolution.ts +1 -1
- package/dist/builtin/subagents/src/shared/session-tokens.ts +1 -1
- package/dist/builtin/subagents/src/shared/settings.ts +4 -4
- package/dist/builtin/subagents/src/shared/status-format.ts +1 -1
- package/dist/builtin/subagents/src/shared/types-config.ts +16 -4
- package/dist/builtin/subagents/src/shared/types-depth.ts +1 -1
- package/dist/builtin/subagents/src/shared/types-nested.ts +1 -1
- package/dist/builtin/subagents/src/shared/types-output.ts +1 -1
- package/dist/builtin/subagents/src/shared/types-results.ts +1 -1
- package/dist/builtin/subagents/src/shared/types-runtime.ts +1 -1
- package/dist/builtin/subagents/src/shared/types.ts +6 -6
- package/dist/builtin/subagents/src/shared/utils.ts +3 -3
- package/dist/builtin/subagents/src/slash/prompt-template-bridge.ts +1 -1
- package/dist/builtin/subagents/src/slash/slash-bridge.ts +3 -3
- package/dist/builtin/subagents/src/slash/slash-commands.ts +6 -6
- package/dist/builtin/subagents/src/slash/slash-live-state.ts +3 -3
- package/dist/builtin/subagents/src/tui/render-event-formatting.ts +2 -2
- package/dist/builtin/subagents/src/tui/render-layout.ts +1 -1
- package/dist/builtin/subagents/src/tui/render-progress.ts +2 -2
- package/dist/builtin/subagents/src/tui/render-result-compact.ts +7 -7
- package/dist/builtin/subagents/src/tui/render-result.ts +10 -10
- package/dist/builtin/subagents/src/tui/render-stable-output.ts +1 -1
- package/dist/builtin/subagents/src/tui/render-status-progress.ts +5 -5
- package/dist/builtin/subagents/src/tui/render.ts +4 -4
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/workflows/CHANGELOG.md +57 -0
- package/dist/builtin/workflows/README.md +39 -8
- package/dist/builtin/workflows/builtin/adversarial-verification-runner.ts +16 -5
- package/dist/builtin/workflows/builtin/adversarial-verification.ts +4 -0
- package/dist/builtin/workflows/builtin/classify-and-act.ts +4 -0
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize.ts +4 -0
- package/dist/builtin/workflows/builtin/generate-and-filter-runner.ts +12 -4
- package/dist/builtin/workflows/builtin/generate-and-filter.ts +4 -0
- package/dist/builtin/workflows/builtin/goal-models.ts +8 -10
- package/dist/builtin/workflows/builtin/goal.ts +4 -0
- package/dist/builtin/workflows/builtin/index.d.ts +0 -4
- package/dist/builtin/workflows/builtin/loop-until-done-runner.ts +4 -2
- package/dist/builtin/workflows/builtin/loop-until-done.ts +4 -0
- package/dist/builtin/workflows/builtin/open-claude-design-live-protocol.ts +305 -0
- package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +115 -171
- package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +9 -25
- package/dist/builtin/workflows/builtin/open-claude-design-setup.ts +19 -86
- package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +0 -6
- package/dist/builtin/workflows/builtin/open-claude-design.d.ts +0 -5
- package/dist/builtin/workflows/builtin/open-claude-design.ts +11 -15
- package/dist/builtin/workflows/builtin/ralph-models.ts +24 -29
- package/dist/builtin/workflows/builtin/ralph.ts +4 -0
- package/dist/builtin/workflows/builtin/tournament-runner.ts +6 -3
- package/dist/builtin/workflows/builtin/tournament.ts +4 -0
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/skills/impeccable/SKILL.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/agents/impeccable_asset_producer.toml +25 -31
- package/dist/builtin/workflows/skills/impeccable/agents/impeccable_documenter.toml +1 -0
- package/dist/builtin/workflows/skills/impeccable/agents/impeccable_finish_reviewer.toml +16 -10
- package/dist/builtin/workflows/skills/impeccable/agents/impeccable_manual_edit_applier.toml +2 -2
- package/dist/builtin/workflows/skills/impeccable/reference/android.md +6 -0
- package/dist/builtin/workflows/skills/impeccable/reference/animate.md +3 -0
- package/dist/builtin/workflows/skills/impeccable/reference/bolder.md +3 -1
- package/dist/builtin/workflows/skills/impeccable/reference/craft-floor.md +6 -1
- package/dist/builtin/workflows/skills/impeccable/reference/critique.md +18 -2
- package/dist/builtin/workflows/skills/impeccable/reference/degraded/asset-producer.md +24 -30
- package/dist/builtin/workflows/skills/impeccable/reference/degraded/documenter.md +1 -0
- package/dist/builtin/workflows/skills/impeccable/reference/degraded/finish-reviewer.md +16 -10
- package/dist/builtin/workflows/skills/impeccable/reference/degraded/manual-edit-applier.md +2 -2
- package/dist/builtin/workflows/skills/impeccable/reference/distill.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/doctor.md +1 -0
- package/dist/builtin/workflows/skills/impeccable/reference/document.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/extract.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +12 -6
- package/dist/builtin/workflows/skills/impeccable/reference/init.md +12 -3
- package/dist/builtin/workflows/skills/impeccable/reference/ios.md +6 -0
- package/dist/builtin/workflows/skills/impeccable/reference/live-setup.md +102 -0
- package/dist/builtin/workflows/skills/impeccable/reference/live.md +113 -521
- package/dist/builtin/workflows/skills/impeccable/reference/new-work.md +39 -26
- package/dist/builtin/workflows/skills/impeccable/reference/overdrive.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/polish.md +3 -3
- package/dist/builtin/workflows/skills/impeccable/reference/quieter.md +1 -1
- package/dist/builtin/workflows/skills/impeccable/reference/visualize.md +25 -11
- package/dist/builtin/workflows/skills/impeccable/scripts/concept-seed.mjs +332 -221
- package/dist/builtin/workflows/skills/impeccable/scripts/context-signals.mjs +10 -19
- package/dist/builtin/workflows/skills/impeccable/scripts/context.mjs +91 -38
- package/dist/builtin/workflows/skills/impeccable/scripts/critique-storage.mjs +19 -10
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/browser/injected/index.mjs +56 -6
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/cli/main.mjs +10 -16
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/design-system.mjs +140 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +1174 -694
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns.mjs +1 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +5 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +431 -45
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +10 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +47 -6
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/node/file-system.mjs +23 -22
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/registry/antipatterns.mjs +0 -10
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +384 -384
- package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/color.mjs +466 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/doctor.mjs +2 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/embed-prompt.mjs +270 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/generate-image.mjs +51 -6
- package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +70 -10
- package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +336 -90
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/composition-catalog.mjs +38 -3
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/concept-catalog.mjs +77 -11
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/design-parser.mjs +102 -19
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-config.mjs +44 -59
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/is-generated.mjs +3 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/open-system-browser.mjs +57 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/roll-selection.mjs +369 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness-deep.mjs +31 -3
- package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness.mjs +73 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/live/accept-css.mjs +617 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/accept-verify.mjs +71 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/browser-script-parts.mjs +29 -2
- package/dist/builtin/workflows/skills/impeccable/scripts/live/event-validation.mjs +54 -7
- package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/astro.mjs +47 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/detect-utils.mjs +157 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/index.mjs +143 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/journal.mjs +205 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/nextjs.mjs +49 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/nuxt.mjs +170 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/script-src.mjs +26 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/static-html.mjs +26 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/sveltekit.mjs +71 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/tag-strategy.mjs +247 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/tanstack-start.mjs +70 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/vite-generic.mjs +42 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/instructions.mjs +169 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/roots.mjs +670 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/session-store.mjs +232 -35
- package/dist/builtin/workflows/skills/impeccable/scripts/live/svelte-ast.mjs +969 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/svelte-component.mjs +621 -74
- package/dist/builtin/workflows/skills/impeccable/scripts/live/sveltekit-adapter.mjs +66 -28
- package/dist/builtin/workflows/skills/impeccable/scripts/live/tanstack-adapter.mjs +12 -12
- package/dist/builtin/workflows/skills/impeccable/scripts/live/ui-surfaces.mjs +75 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live/vocabulary.mjs +135 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +23 -37
- package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +945 -115
- package/dist/builtin/workflows/skills/impeccable/scripts/live-complete.mjs +33 -1
- package/dist/builtin/workflows/skills/impeccable/scripts/live-copy-edit-agent.mjs +132 -15
- package/dist/builtin/workflows/skills/impeccable/scripts/live-inject.mjs +173 -425
- package/dist/builtin/workflows/skills/impeccable/scripts/live-insert.mjs +2 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-poll.mjs +16 -3
- package/dist/builtin/workflows/skills/impeccable/scripts/live-resume.mjs +39 -10
- package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +194 -27
- package/dist/builtin/workflows/skills/impeccable/scripts/live-status.mjs +10 -4
- package/dist/builtin/workflows/skills/impeccable/scripts/live-wrap.mjs +50 -31
- package/dist/builtin/workflows/skills/impeccable/scripts/live.mjs +91 -28
- package/dist/builtin/workflows/skills/impeccable/scripts/pin.mjs +8 -5
- package/dist/builtin/workflows/skills/impeccable/scripts/serve-question.mjs +759 -109
- package/dist/builtin/workflows/src/authoring/workflow.ts +9 -0
- package/dist/builtin/workflows/src/authoring.d.ts +3 -0
- package/dist/builtin/workflows/src/durable/completed-catalog.ts +23 -2
- package/dist/builtin/workflows/src/durable/dbos-backend.ts +30 -17
- package/dist/builtin/workflows/src/durable/dbos-envelope.ts +14 -0
- package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +60 -57
- package/dist/builtin/workflows/src/durable/dbos-process-owner.ts +87 -0
- package/dist/builtin/workflows/src/durable/dbos-registration-diagnostics.ts +113 -0
- package/dist/builtin/workflows/src/durable/factory.ts +11 -8
- package/dist/builtin/workflows/src/durable/tool-failure-checkpoint.ts +5 -0
- package/dist/builtin/workflows/src/durable/tool-primitive.ts +186 -20
- package/dist/builtin/workflows/src/durable/types.ts +4 -0
- package/dist/builtin/workflows/src/durable/workflow-heartbeat-anchor.ts +153 -0
- package/dist/builtin/workflows/src/engine/run-durable-stage-session.ts +28 -0
- package/dist/builtin/workflows/src/engine/run-tool-control-registry.ts +9 -1
- package/dist/builtin/workflows/src/engine/run.ts +1 -0
- package/dist/builtin/workflows/src/extension/adopt-session-run-state.ts +20 -0
- package/dist/builtin/workflows/src/extension/background-ui-adapter.ts +9 -30
- package/dist/builtin/workflows/src/extension/extension-factory.ts +3 -0
- package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +28 -10
- package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +138 -0
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +3365 -1341
- package/dist/builtin/workflows/src/extension/workflow-heartbeat-delivery.ts +197 -0
- package/dist/builtin/workflows/src/extension/workflow-heartbeat-notice.ts +115 -0
- package/dist/builtin/workflows/src/extension/workflow-heartbeat-scheduler.ts +962 -0
- package/dist/builtin/workflows/src/extension/workflow-prompts.ts +4 -1
- package/dist/builtin/workflows/src/extension/workflow-schema.ts +29 -5
- package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +32 -1
- package/dist/builtin/workflows/src/runs/background/cancellation-registry.ts +10 -1
- package/dist/builtin/workflows/src/runs/background/job-tracker.ts +10 -1
- package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +16 -11
- package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +31 -1
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +41 -10
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-messages.ts +48 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +4 -1
- package/dist/builtin/workflows/src/runs/foreground/stage-runner-structured-output.ts +45 -12
- package/dist/builtin/workflows/src/sdk-surface.ts +9 -0
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +10 -0
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +10 -0
- package/dist/builtin/workflows/src/shared/graph-store-snapshot.ts +14 -2
- package/dist/builtin/workflows/src/shared/persistence-restore.ts +12 -0
- package/dist/builtin/workflows/src/shared/prompt-answer.ts +130 -0
- package/dist/builtin/workflows/src/shared/session-scoped-singleton.ts +98 -0
- package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +9 -1
- package/dist/builtin/workflows/src/shared/store-factory.ts +9 -1
- package/dist/builtin/workflows/src/shared/store-public-types.ts +2 -1
- package/dist/builtin/workflows/src/shared/store-tool-node-methods.ts +7 -0
- package/dist/builtin/workflows/src/shared/store-types.ts +18 -1
- package/dist/builtin/workflows/src/shared/tool-payload-bounds.ts +576 -0
- package/dist/builtin/workflows/src/shared/workflow-authoring-types.d.ts +1 -0
- package/dist/builtin/workflows/src/shared/workflow-authoring-types.ts +1 -0
- package/dist/builtin/workflows/src/shared/workflow-heartbeat-contract.d.ts +21 -0
- package/dist/builtin/workflows/src/shared/workflow-heartbeat-contract.ts +25 -0
- package/dist/builtin/workflows/src/tui/graph-theme.ts +8 -1
- package/dist/builtin/workflows/src/tui/graph-view-constants.ts +11 -0
- package/dist/builtin/workflows/src/tui/graph-view-input.ts +100 -5
- package/dist/builtin/workflows/src/tui/graph-view-layout.ts +42 -11
- package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +55 -6
- package/dist/builtin/workflows/src/tui/graph-view-render.ts +71 -6
- package/dist/builtin/workflows/src/tui/graph-view-state.ts +43 -0
- package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +2 -0
- package/dist/builtin/workflows/src/tui/node-card.ts +5 -1
- package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +11 -2
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +36 -10
- package/dist/builtin/workflows/src/tui/switcher.ts +11 -4
- package/dist/builtin/workflows/src/tui/tool-detail.ts +348 -0
- package/dist/builtin/workflows/src/tui/workflow-status.ts +5 -2
- package/dist/cli/args.d.ts +1 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +11 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/auth-check.d.ts +1 -1
- package/dist/cli/auth-check.js.map +1 -1
- package/dist/cli/credential-print.d.ts +1 -1
- package/dist/cli/credential-print.js.map +1 -1
- package/dist/cli/list-models.d.ts +1 -1
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli/startup-ui.d.ts +9 -0
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +7 -1
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/core/agent-session-custom-message-commit.js +2 -2
- package/dist/core/agent-session-custom-message-commit.js.map +1 -1
- package/dist/core/agent-session-export.d.ts +6 -1
- package/dist/core/agent-session-export.d.ts.map +1 -1
- package/dist/core/agent-session-export.js +6 -3
- package/dist/core/agent-session-export.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +6 -4
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +5 -2
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-prompt.d.ts +12 -1
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +31 -10
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-runtime-auth.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +1 -1
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session-skill-block.d.ts +1 -0
- package/dist/core/agent-session-skill-block.d.ts.map +1 -1
- package/dist/core/agent-session-skill-block.js +18 -2
- package/dist/core/agent-session-skill-block.js.map +1 -1
- package/dist/core/agent-session-state.d.ts.map +1 -1
- package/dist/core/agent-session-state.js +2 -1
- package/dist/core/agent-session-state.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +2 -1
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/agent-session.d.ts +1 -1
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/atomic-guide-command.js +2 -2
- package/dist/core/atomic-guide-command.js.map +1 -1
- package/dist/core/builtin-packages.d.ts.map +1 -1
- package/dist/core/builtin-packages.js +0 -6
- package/dist/core/builtin-packages.js.map +1 -1
- package/dist/core/cloudflare-gateway-binding.d.ts +11 -0
- package/dist/core/cloudflare-gateway-binding.d.ts.map +1 -0
- package/dist/core/cloudflare-gateway-binding.js +11 -0
- package/dist/core/cloudflare-gateway-binding.js.map +1 -0
- package/dist/core/codex-fast-mode-transport.d.ts +12 -0
- package/dist/core/codex-fast-mode-transport.d.ts.map +1 -0
- package/dist/core/codex-fast-mode-transport.js +130 -0
- package/dist/core/codex-fast-mode-transport.js.map +1 -0
- package/dist/core/codex-fast-mode.d.ts +20 -6
- package/dist/core/codex-fast-mode.d.ts.map +1 -1
- package/dist/core/codex-fast-mode.js +111 -3
- package/dist/core/codex-fast-mode.js.map +1 -1
- package/dist/core/diagnostics.d.ts +4 -0
- package/dist/core/diagnostics.d.ts.map +1 -1
- package/dist/core/diagnostics.js.map +1 -1
- package/dist/core/event-bus.d.ts +12 -0
- package/dist/core/event-bus.d.ts.map +1 -1
- package/dist/core/event-bus.js +22 -0
- package/dist/core/event-bus.js.map +1 -1
- package/dist/core/experimental.d.ts +25 -0
- package/dist/core/experimental.d.ts.map +1 -1
- package/dist/core/experimental.js +24 -0
- package/dist/core/experimental.js.map +1 -1
- package/dist/core/export-html/template-js/tree-filter-render.js +4 -3
- package/dist/core/export-html/template.js +4 -3
- package/dist/core/extension-session-state.d.ts +28 -0
- package/dist/core/extension-session-state.d.ts.map +1 -0
- package/dist/core/extension-session-state.js +55 -0
- package/dist/core/extension-session-state.js.map +1 -0
- package/dist/core/extensions/api-types.d.ts +6 -0
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +4 -0
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -0
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js +1 -0
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-api.d.ts +1 -1
- package/dist/core/extensions/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +16 -10
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +12 -1
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/runner-context.d.ts +2 -0
- package/dist/core/extensions/runner-context.d.ts.map +1 -1
- package/dist/core/extensions/runner-context.js +8 -0
- package/dist/core/extensions/runner-context.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +1 -0
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +3 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/runtime-types.d.ts +3 -0
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/ui-types.d.ts +26 -0
- package/dist/core/extensions/ui-types.d.ts.map +1 -1
- package/dist/core/extensions/ui-types.js +17 -1
- package/dist/core/extensions/ui-types.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js +5 -0
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/keybindings.d.ts +24 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +6 -0
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/model-config.d.ts +5 -0
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +1 -0
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-registry.d.ts +1 -1
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver-cli.d.ts +1 -1
- package/dist/core/model-resolver-cli.js.map +1 -1
- package/dist/core/model-resolver-defaults.js +3 -3
- package/dist/core/model-resolver-defaults.js.map +1 -1
- package/dist/core/model-resolver-initial.d.ts +1 -1
- package/dist/core/model-resolver-initial.js.map +1 -1
- package/dist/core/model-resolver-scope.d.ts +1 -1
- package/dist/core/model-resolver-scope.js.map +1 -1
- package/dist/core/model-runtime.d.ts +54 -0
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +96 -13
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/oauth-login.js.map +1 -1
- package/dist/core/project-trust.d.ts +10 -0
- package/dist/core/project-trust.d.ts.map +1 -1
- package/dist/core/project-trust.js +12 -0
- package/dist/core/project-trust.js.map +1 -1
- package/dist/core/resource-loader-assets.d.ts.map +1 -1
- package/dist/core/resource-loader-assets.js +14 -5
- package/dist/core/resource-loader-assets.js.map +1 -1
- package/dist/core/resource-loader-core.d.ts +3 -0
- package/dist/core/resource-loader-core.d.ts.map +1 -1
- package/dist/core/resource-loader-core.js +5 -0
- package/dist/core/resource-loader-core.js.map +1 -1
- package/dist/core/resource-loader-internals.d.ts +2 -0
- package/dist/core/resource-loader-internals.d.ts.map +1 -1
- package/dist/core/resource-loader-internals.js.map +1 -1
- package/dist/core/resource-loader-reload.d.ts.map +1 -1
- package/dist/core/resource-loader-reload.js +2 -0
- package/dist/core/resource-loader-reload.js.map +1 -1
- package/dist/core/resource-loader-types.d.ts +2 -0
- package/dist/core/resource-loader-types.d.ts.map +1 -1
- package/dist/core/resource-loader-types.js.map +1 -1
- package/dist/core/resource-loader.d.ts +2 -0
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +1 -0
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/sdk-types.d.ts +7 -6
- package/dist/core/sdk-types.d.ts.map +1 -1
- package/dist/core/sdk-types.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +17 -6
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager-core.d.ts +7 -1
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-core.js +11 -2
- package/dist/core/session-manager-core.js.map +1 -1
- package/dist/core/session-manager-entries.d.ts +2 -2
- package/dist/core/session-manager-entries.d.ts.map +1 -1
- package/dist/core/session-manager-entries.js +6 -4
- package/dist/core/session-manager-entries.js.map +1 -1
- package/dist/core/session-manager-list.d.ts.map +1 -1
- package/dist/core/session-manager-list.js +5 -1
- package/dist/core/session-manager-list.js.map +1 -1
- package/dist/core/session-manager-types.d.ts +25 -2
- package/dist/core/session-manager-types.d.ts.map +1 -1
- package/dist/core/session-manager-types.js.map +1 -1
- package/dist/core/session-manager.d.ts +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +1 -0
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +8 -0
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-manager-ui-accessors.d.ts +3 -1
- package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-ui-accessors.js +9 -0
- package/dist/core/settings-manager-ui-accessors.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/settings-types.d.ts +4 -0
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/skill-catalog.d.ts +35 -0
- package/dist/core/skill-catalog.d.ts.map +1 -0
- package/dist/core/skill-catalog.js +264 -0
- package/dist/core/skill-catalog.js.map +1 -0
- package/dist/core/skills-async.d.ts.map +1 -1
- package/dist/core/skills-async.js +12 -6
- package/dist/core/skills-async.js.map +1 -1
- package/dist/core/skills.d.ts +2 -0
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +8 -5
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -5
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.js +2 -2
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/ask-user-question/ask-user-question.d.ts +25 -2
- package/dist/core/tools/ask-user-question/ask-user-question.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/ask-user-question.js +47 -18
- package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/multi-select-view.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/multi-select-view.js +5 -2
- package/dist/core/tools/ask-user-question/view/components/multi-select-view.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/submit-picker.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/submit-picker.js +3 -1
- package/dist/core/tools/ask-user-question/view/components/submit-picker.js.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/wrapping-select.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/view/components/wrapping-select.js +8 -1
- package/dist/core/tools/ask-user-question/view/components/wrapping-select.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +2 -0
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +2 -0
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +3 -1
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.js +1 -1
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/hashline-engine/format.d.ts +2 -0
- package/dist/core/tools/hashline-engine/format.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/format.js +4 -2
- package/dist/core/tools/hashline-engine/format.js.map +1 -1
- package/dist/core/tools/hashline-engine/messages.d.ts +2 -0
- package/dist/core/tools/hashline-engine/messages.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/messages.js +4 -2
- package/dist/core/tools/hashline-engine/messages.js.map +1 -1
- package/dist/core/tools/hashline-engine/parser.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/parser.js +16 -4
- package/dist/core/tools/hashline-engine/parser.js.map +1 -1
- package/dist/core/tools/hashline-engine/tokenizer.d.ts.map +1 -1
- package/dist/core/tools/hashline-engine/tokenizer.js +37 -27
- package/dist/core/tools/hashline-engine/tokenizer.js.map +1 -1
- package/dist/core/tools/hashline.d.ts.map +1 -1
- package/dist/core/tools/hashline.js +8 -2
- package/dist/core/tools/hashline.js.map +1 -1
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +2 -0
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +8 -1
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/search.d.ts.map +1 -1
- package/dist/core/tools/search.js +2 -0
- package/dist/core/tools/search.js.map +1 -1
- package/dist/core/tools/todos.d.ts +3 -12
- package/dist/core/tools/todos.d.ts.map +1 -1
- package/dist/core/tools/todos.js +19 -4
- package/dist/core/tools/todos.js.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +2 -0
- package/dist/core/tools/write.js.map +1 -1
- package/dist/index-extensions.d.ts +1 -1
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index-extensions.js +1 -1
- package/dist/index-extensions.js.map +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/main-runtime-api-key.d.ts +1 -1
- package/dist/main-runtime-api-key.js.map +1 -1
- package/dist/main-session-options.d.ts +1 -1
- package/dist/main-session-options.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +10 -2
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.js +1 -1
- package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.d.ts +8 -0
- package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-state.js +8 -0
- package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.d.ts +26 -0
- package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-session-host.js +38 -0
- package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
- package/dist/modes/interactive/components/chat-transcript.d.ts +37 -0
- package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-transcript.js +54 -1
- package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
- package/dist/modes/interactive/components/fast-mode-selector.js +1 -1
- package/dist/modes/interactive/components/fast-mode-selector.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +2 -1
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/reserved-bottom-overlay.d.ts +95 -0
- package/dist/modes/interactive/components/reserved-bottom-overlay.d.ts.map +1 -0
- package/dist/modes/interactive/components/reserved-bottom-overlay.js +234 -0
- package/dist/modes/interactive/components/reserved-bottom-overlay.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +4 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.js +4 -0
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.js +3 -0
- package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.js +7 -0
- package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts +3 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +12 -1
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
- package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js +5 -4
- package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
- package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-bash-compact.js +2 -2
- package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-custom-ui.js +94 -6
- package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts +41 -3
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.js +80 -11
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +9 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-types.d.ts +2 -0
- package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
- package/dist/modes/interactive/interactive-model-catalog-startup.d.ts +8 -1
- package/dist/modes/interactive/interactive-model-catalog-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-model-catalog-startup.js +13 -3
- package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-model-routing.js +3 -4
- package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +6 -0
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-resource-disclosure.js +2 -2
- package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -1
- package/dist/modes/interactive/interactive-selectors.js +7 -3
- package/dist/modes/interactive/interactive-selectors.js.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js +7 -1
- package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.js +2 -2
- package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +34 -9
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-tui.d.ts +21 -1
- package/dist/modes/interactive/interactive-tui.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-tui.js +140 -38
- package/dist/modes/interactive/interactive-tui.js.map +1 -1
- package/dist/modes/interactive/model-catalog-refresh.d.ts +17 -0
- package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
- package/dist/modes/interactive/model-catalog-refresh.js +84 -0
- package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
- package/dist/modes/interactive/theme/dark.json +2 -0
- package/dist/modes/interactive/theme/light.json +2 -0
- package/dist/modes/interactive/theme/theme-class.d.ts +12 -3
- package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-class.js +6 -1
- package/dist/modes/interactive/theme/theme-class.js.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.d.ts +10 -2
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.js +23 -10
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-loading.js +1 -0
- package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.d.ts +8 -0
- package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.js +3 -1
- package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.json +9 -1
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts +2 -0
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-custom-ui.js +1 -0
- package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
- package/dist/modes/interactive-engine/protocol.d.ts +1 -0
- package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
- package/dist/modes/interactive-engine/protocol.js +1 -0
- package/dist/modes/interactive-engine/protocol.js.map +1 -1
- package/dist/modes/interactive-engine/remote-component.d.ts +3 -1
- package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -1
- package/dist/modes/interactive-engine/remote-component.js +3 -2
- package/dist/modes/interactive-engine/remote-component.js.map +1 -1
- package/dist/modes/json-event.d.ts +6 -1
- package/dist/modes/json-event.d.ts.map +1 -1
- package/dist/modes/json-event.js +17 -2
- package/dist/modes/json-event.js.map +1 -1
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-command-handler.js +5 -4
- package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
- package/dist/modes/rpc/rpc-responses.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/server/create-harness.d.ts.map +1 -1
- package/dist/server/create-harness.js +11 -0
- package/dist/server/create-harness.js.map +1 -1
- package/dist/utils/abort.d.ts +9 -0
- package/dist/utils/abort.d.ts.map +1 -0
- package/dist/utils/abort.js +19 -0
- package/dist/utils/abort.js.map +1 -0
- package/dist/utils/tools-manager.d.ts +16 -1
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +19 -19
- package/dist/utils/tools-manager.js.map +1 -1
- package/docs/custom-provider.md +9 -8
- package/docs/development.md +0 -1
- package/docs/docs.json +0 -1
- package/docs/environment-variables.md +3 -0
- package/docs/extensions.md +100 -2
- package/docs/json.md +3 -1
- package/docs/keybindings.md +8 -3
- package/docs/models/artificial-analysis-index.md +2 -2
- package/docs/models/model-selection.md +32 -23
- package/docs/models/pareto-efficiency.md +25 -24
- package/docs/providers.md +95 -2
- package/docs/quickstart.md +4 -2
- package/docs/rpc.md +21 -7
- package/docs/sdk.md +26 -1
- package/docs/session-format.md +5 -2
- package/docs/settings.md +34 -3
- package/docs/skills.md +16 -1
- package/docs/terminal-setup.md +15 -2
- package/docs/themes.md +22 -4
- package/docs/tools.md +3 -1
- package/docs/tui.md +2 -0
- package/docs/usage.md +5 -4
- package/docs/workflows.md +96 -19
- package/npm-shrinkwrap.json +211 -232
- package/package.json +8 -8
- package/dist/builtin/i-have-adhd/CHANGELOG.md +0 -30
- package/dist/builtin/i-have-adhd/LICENSE +0 -21
- package/dist/builtin/i-have-adhd/README.md +0 -18
- package/dist/builtin/i-have-adhd/index.ts +0 -238
- package/dist/builtin/i-have-adhd/package.json +0 -56
- package/dist/builtin/i-have-adhd/skills/i-have-adhd/SKILL.md +0 -140
- package/dist/builtin/workflows/builtin/open-claude-design-feedback.ts +0 -359
- package/dist/builtin/workflows/skills/impeccable/scripts/live/ui-core.mjs +0 -180
- package/docs/i-have-adhd.md +0 -36
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { closeOpenAICodexWebSocketSessions } from "@earendil-works/pi-ai/api/openai-codex-responses";
|
|
2
|
+
import { type Api, type AssistantMessageEventStream, type Context, type Model, type OpenAICodexResponsesOptions, type OpenAIResponsesOptions, type ProviderHeaders, type SimpleStreamOptions, type StreamOptions, type ThinkingLevel } from "@earendil-works/pi-ai/compat";
|
|
2
3
|
import type { OrchestrationContext } from "./extensions/index.ts";
|
|
3
4
|
export declare const CODEX_FAST_MODE_SERVICE_TIER: "priority";
|
|
4
5
|
export interface CodexFastModeResolvedSettings {
|
|
@@ -14,23 +15,36 @@ export interface CodexFastModeStreamers {
|
|
|
14
15
|
streamOpenAIResponses: (model: Model<"openai-responses">, context: Context, options?: OpenAIResponsesOptions) => AssistantMessageEventStream;
|
|
15
16
|
streamOpenAICodexResponses: (model: Model<"openai-codex-responses">, context: Context, options?: OpenAICodexResponsesOptions) => AssistantMessageEventStream;
|
|
16
17
|
}
|
|
18
|
+
type CodexFastModeModelIdentity = Pick<Model<Api>, "provider"> & Partial<Pick<Model<Api>, "api">>;
|
|
17
19
|
export declare function isCodexFastModeSupportedProvider(provider: string): boolean;
|
|
18
20
|
export declare function isCodexFastModeCandidateModelId(modelId: string | undefined): boolean;
|
|
19
|
-
export declare function isCodexFastModeSupportedModel(model:
|
|
20
|
-
export declare function hasSupportedCodexFastModeModel(models: readonly
|
|
21
|
+
export declare function isCodexFastModeSupportedModel(model: CodexFastModeModelIdentity): boolean;
|
|
22
|
+
export declare function hasSupportedCodexFastModeModel(models: readonly CodexFastModeModelIdentity[]): boolean;
|
|
21
23
|
export declare function isWorkflowStageOrchestrationContext(context: OrchestrationContext | undefined): boolean;
|
|
22
24
|
export declare function getCodexFastModeScope(context: OrchestrationContext | undefined): CodexFastModeScope;
|
|
23
25
|
export declare function isCodexFastModeEnabledForScope(settings: CodexFastModeResolvedSettings, scope: CodexFastModeScope): boolean;
|
|
24
26
|
export declare function isCodexFastModeEnabledForSession(settings: CodexFastModeResolvedSettings, context: OrchestrationContext | undefined): boolean;
|
|
25
|
-
export declare function shouldApplyCodexFastModeForScope(model:
|
|
26
|
-
export declare function shouldApplyCodexFastMode(model:
|
|
27
|
-
|
|
27
|
+
export declare function shouldApplyCodexFastModeForScope(model: CodexFastModeModelIdentity, settings: CodexFastModeResolvedSettings, scope: CodexFastModeScope): boolean;
|
|
28
|
+
export declare function shouldApplyCodexFastMode(model: CodexFastModeModelIdentity, settings: CodexFastModeResolvedSettings, context: OrchestrationContext | undefined): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Preserve the eager first-party header helper for callers that only know a
|
|
31
|
+
* provider and base URL. The shared transport wrapper below recomputes the
|
|
32
|
+
* identity from the final payload and also covers aliases and proxies.
|
|
33
|
+
*/
|
|
34
|
+
export declare function usesFirstPartyCodexRouting(model: Pick<Model<Api>, "baseUrl" | "provider">): boolean;
|
|
35
|
+
/** A provider alias or proxy still uses the shared ChatGPT Codex protocol when its API does. */
|
|
36
|
+
export declare function usesChatGptCodexTransport(model: Pick<Model<Api>, "api">): boolean;
|
|
37
|
+
export declare function withCodexFastModeHeaders(model: Pick<Model<Api>, "baseUrl" | "id" | "provider">, headers: ProviderHeaders | undefined, enabled: boolean): ProviderHeaders | undefined;
|
|
38
|
+
export declare function withCodexFastModeStreamOptions(_model: Pick<Model<Api>, "baseUrl" | "id" | "provider">, options: SimpleStreamOptions | undefined, enabled: boolean): CodexFastModeStreamOptions | undefined;
|
|
28
39
|
export declare function isCodexFastModeNativeApi(api: Api): api is "openai-responses" | "openai-codex-responses";
|
|
29
40
|
export declare function shouldUseNativeCodexFastMode(model: Pick<Model<Api>, "api" | "provider">, options: CodexFastModeStreamOptions | undefined): boolean;
|
|
41
|
+
type CloseCodexWebSocketSessions = typeof closeOpenAICodexWebSocketSessions;
|
|
42
|
+
export declare function withChatGptCodexTransportRouting<TOptions extends StreamOptions>(model: Model<Api>, options: TOptions, enabled?: boolean, closeWebSocketSessions?: CloseCodexWebSocketSessions): TOptions;
|
|
30
43
|
export declare function mapCodexFastModeReasoningEffort(model: Model<Api>, reasoning: ThinkingLevel | undefined): ThinkingLevel | undefined;
|
|
31
44
|
export declare function buildOpenAIResponsesCodexFastModeOptions(model: Model<Api>, options: CodexFastModeStreamOptions | undefined): OpenAIResponsesOptions;
|
|
32
45
|
export declare function buildOpenAICodexResponsesCodexFastModeOptions(model: Model<Api>, options: CodexFastModeStreamOptions | undefined): OpenAICodexResponsesOptions;
|
|
33
46
|
export declare function streamWithCodexFastMode(model: Model<Api>, context: Context, options: CodexFastModeStreamOptions | undefined, streamers?: CodexFastModeStreamers): AssistantMessageEventStream;
|
|
34
47
|
export declare function withCodexFastModePayload(payload: unknown, enabled: boolean): unknown;
|
|
35
48
|
export declare function formatCodexFastModeModelLabel(modelName: string, enabled: boolean): string;
|
|
49
|
+
export {};
|
|
36
50
|
//# sourceMappingURL=codex-fast-mode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-fast-mode.d.ts","sourceRoot":"","sources":["../../src/core/codex-fast-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,GAAG,EACR,KAAK,2BAA2B,EAChC,KAAK,OAAO,EAEZ,KAAK,KAAK,EACV,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,
|
|
1
|
+
{"version":3,"file":"codex-fast-mode.d.ts","sourceRoot":"","sources":["../../src/core/codex-fast-mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
+
import { closeOpenAICodexWebSocketSessions } from "@earendil-works/pi-ai/api/openai-codex-responses";
|
|
1
2
|
import { clampThinkingLevel, streamOpenAICodexResponses, streamOpenAIResponses, streamSimple, } from "@earendil-works/pi-ai/compat";
|
|
3
|
+
import { CODEX_FAST_MODE_ORIGINATOR, CODEX_FAST_MODE_ROUTING_HEADER, clearCodexFastModeRequestMarker, installCodexFastModeWebSocketIdentity, isFirstPartyCodexBaseUrl, markCodexFastModeRequest, wrapCodexFastModeFetch, } from "./codex-fast-mode-transport.js";
|
|
2
4
|
export const CODEX_FAST_MODE_SERVICE_TIER = "priority";
|
|
3
5
|
const DEFAULT_CODEX_FAST_MODE_STREAMERS = {
|
|
4
6
|
streamSimple,
|
|
5
7
|
streamOpenAIResponses,
|
|
6
8
|
streamOpenAICodexResponses,
|
|
7
9
|
};
|
|
10
|
+
const CODEX_WEBSOCKET_ROUTING_STATE_IDLE_MS = 6 * 60 * 1000;
|
|
11
|
+
const codexWebSocketRoutingState = new Map();
|
|
8
12
|
export function isCodexFastModeSupportedProvider(provider) {
|
|
9
13
|
return provider === "openai" || provider === "openai-codex";
|
|
10
14
|
}
|
|
@@ -13,7 +17,7 @@ export function isCodexFastModeCandidateModelId(modelId) {
|
|
|
13
17
|
return provider !== undefined && isCodexFastModeSupportedProvider(provider);
|
|
14
18
|
}
|
|
15
19
|
export function isCodexFastModeSupportedModel(model) {
|
|
16
|
-
return isCodexFastModeSupportedProvider(model.provider);
|
|
20
|
+
return isCodexFastModeSupportedProvider(model.provider) || model.api === "openai-codex-responses";
|
|
17
21
|
}
|
|
18
22
|
export function hasSupportedCodexFastModeModel(models) {
|
|
19
23
|
return models.some(isCodexFastModeSupportedModel);
|
|
@@ -36,12 +40,43 @@ export function shouldApplyCodexFastModeForScope(model, settings, scope) {
|
|
|
36
40
|
export function shouldApplyCodexFastMode(model, settings, context) {
|
|
37
41
|
return shouldApplyCodexFastModeForScope(model, settings, getCodexFastModeScope(context));
|
|
38
42
|
}
|
|
39
|
-
|
|
43
|
+
/**
|
|
44
|
+
* Preserve the eager first-party header helper for callers that only know a
|
|
45
|
+
* provider and base URL. The shared transport wrapper below recomputes the
|
|
46
|
+
* identity from the final payload and also covers aliases and proxies.
|
|
47
|
+
*/
|
|
48
|
+
export function usesFirstPartyCodexRouting(model) {
|
|
49
|
+
return model.provider === "openai-codex" && isFirstPartyCodexBaseUrl(model.baseUrl);
|
|
50
|
+
}
|
|
51
|
+
/** A provider alias or proxy still uses the shared ChatGPT Codex protocol when its API does. */
|
|
52
|
+
export function usesChatGptCodexTransport(model) {
|
|
53
|
+
return model.api === "openai-codex-responses";
|
|
54
|
+
}
|
|
55
|
+
function deleteHeader(headers, name) {
|
|
56
|
+
for (const existingName of Object.keys(headers)) {
|
|
57
|
+
if (existingName.toLowerCase() === name.toLowerCase())
|
|
58
|
+
delete headers[existingName];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function setHeader(headers, name, value) {
|
|
62
|
+
deleteHeader(headers, name);
|
|
63
|
+
headers[name] = value;
|
|
64
|
+
}
|
|
65
|
+
export function withCodexFastModeHeaders(model, headers, enabled) {
|
|
66
|
+
if (!enabled || !usesFirstPartyCodexRouting(model))
|
|
67
|
+
return headers;
|
|
68
|
+
const fastHeaders = { ...(headers ?? {}) };
|
|
69
|
+
setHeader(fastHeaders, "originator", CODEX_FAST_MODE_ORIGINATOR);
|
|
70
|
+
setHeader(fastHeaders, CODEX_FAST_MODE_ROUTING_HEADER, `model=${model.id};tier=${CODEX_FAST_MODE_SERVICE_TIER}`);
|
|
71
|
+
return fastHeaders;
|
|
72
|
+
}
|
|
73
|
+
export function withCodexFastModeStreamOptions(_model, options, enabled) {
|
|
40
74
|
if (!enabled) {
|
|
41
75
|
return options;
|
|
42
76
|
}
|
|
43
77
|
return {
|
|
44
78
|
...(options ?? {}),
|
|
79
|
+
headers: options?.headers,
|
|
45
80
|
serviceTier: CODEX_FAST_MODE_SERVICE_TIER,
|
|
46
81
|
};
|
|
47
82
|
}
|
|
@@ -53,17 +88,83 @@ export function shouldUseNativeCodexFastMode(model, options) {
|
|
|
53
88
|
isCodexFastModeNativeApi(model.api) &&
|
|
54
89
|
options?.serviceTier === CODEX_FAST_MODE_SERVICE_TIER);
|
|
55
90
|
}
|
|
91
|
+
function payloadRecord(payload) {
|
|
92
|
+
return typeof payload === "object" && payload !== null && !Array.isArray(payload)
|
|
93
|
+
? payload
|
|
94
|
+
: undefined;
|
|
95
|
+
}
|
|
96
|
+
function codexEnvironmentScope(env) {
|
|
97
|
+
if (!env)
|
|
98
|
+
return "none";
|
|
99
|
+
const serialized = JSON.stringify(Object.entries(env).sort(([left], [right]) => left.localeCompare(right)));
|
|
100
|
+
let hash = 2166136261;
|
|
101
|
+
for (let index = 0; index < serialized.length; index += 1) {
|
|
102
|
+
hash = Math.imul(hash ^ serialized.charCodeAt(index), 16777619);
|
|
103
|
+
}
|
|
104
|
+
return (hash >>> 0).toString(16);
|
|
105
|
+
}
|
|
106
|
+
function updateCodexWebSocketRoutingState(model, routedModel, options, priority, closeWebSocketSessions) {
|
|
107
|
+
if (options.transport === "sse" || !options.sessionId)
|
|
108
|
+
return;
|
|
109
|
+
const signature = `${model.provider}\0${model.baseUrl}\0${codexEnvironmentScope(options.env)}\0${priority ? `priority:${routedModel}` : "normal"}`;
|
|
110
|
+
const previous = codexWebSocketRoutingState.get(options.sessionId);
|
|
111
|
+
if (previous?.signature !== undefined && previous.signature !== signature) {
|
|
112
|
+
closeWebSocketSessions(options.sessionId);
|
|
113
|
+
}
|
|
114
|
+
if (previous)
|
|
115
|
+
clearTimeout(previous.expiry);
|
|
116
|
+
const expiry = setTimeout(() => {
|
|
117
|
+
if (codexWebSocketRoutingState.get(options.sessionId)?.signature === signature) {
|
|
118
|
+
codexWebSocketRoutingState.delete(options.sessionId);
|
|
119
|
+
}
|
|
120
|
+
}, CODEX_WEBSOCKET_ROUTING_STATE_IDLE_MS);
|
|
121
|
+
expiry.unref?.();
|
|
122
|
+
codexWebSocketRoutingState.set(options.sessionId, { signature, expiry });
|
|
123
|
+
}
|
|
124
|
+
export function withChatGptCodexTransportRouting(model, options, enabled = true, closeWebSocketSessions = closeOpenAICodexWebSocketSessions) {
|
|
125
|
+
const headers = { ...(options.headers ?? {}) };
|
|
126
|
+
const onPayload = options.onPayload;
|
|
127
|
+
return {
|
|
128
|
+
...options,
|
|
129
|
+
headers,
|
|
130
|
+
fetch: wrapCodexFastModeFetch(options.fetch ?? globalThis.fetch),
|
|
131
|
+
onPayload: async (payload, requestModel) => {
|
|
132
|
+
const replacement = await onPayload?.(payload, requestModel);
|
|
133
|
+
const finalPayload = replacement === undefined ? payload : replacement;
|
|
134
|
+
const record = payloadRecord(finalPayload);
|
|
135
|
+
const priority = enabled && record?.service_tier === CODEX_FAST_MODE_SERVICE_TIER;
|
|
136
|
+
const routedModel = typeof record?.model === "string" ? record.model : model.id;
|
|
137
|
+
deleteHeader(headers, CODEX_FAST_MODE_ROUTING_HEADER);
|
|
138
|
+
clearCodexFastModeRequestMarker(headers);
|
|
139
|
+
if (priority) {
|
|
140
|
+
setHeader(headers, CODEX_FAST_MODE_ROUTING_HEADER, `model=${routedModel};tier=${CODEX_FAST_MODE_SERVICE_TIER}`);
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
for (const [name, value] of Object.entries(headers)) {
|
|
144
|
+
if (name.toLowerCase() === "originator" && value === CODEX_FAST_MODE_ORIGINATOR)
|
|
145
|
+
delete headers[name];
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
markCodexFastModeRequest(headers, priority);
|
|
149
|
+
updateCodexWebSocketRoutingState(model, routedModel, options, priority, closeWebSocketSessions);
|
|
150
|
+
return finalPayload;
|
|
151
|
+
},
|
|
152
|
+
};
|
|
153
|
+
}
|
|
56
154
|
function buildCodexFastModeBaseProviderOptions(model, options) {
|
|
57
155
|
// Native fast-mode streams bypass pi-ai's streamSimple base-options merge.
|
|
58
156
|
const samplingParams = model.samplingParams || options?.samplingParams
|
|
59
157
|
? { ...model.samplingParams, ...options?.samplingParams }
|
|
60
158
|
: undefined;
|
|
61
|
-
|
|
159
|
+
const providerOptions = {
|
|
62
160
|
samplingParams,
|
|
63
161
|
temperature: options?.temperature,
|
|
64
162
|
maxTokens: options?.maxTokens,
|
|
65
163
|
signal: options?.signal,
|
|
66
164
|
apiKey: options?.apiKey,
|
|
165
|
+
fetch: options?.fetch,
|
|
166
|
+
env: options?.env,
|
|
167
|
+
telemetryContext: options?.telemetryContext,
|
|
67
168
|
transport: options?.transport,
|
|
68
169
|
cacheRetention: options?.cacheRetention,
|
|
69
170
|
sessionId: options?.sessionId,
|
|
@@ -76,6 +177,7 @@ function buildCodexFastModeBaseProviderOptions(model, options) {
|
|
|
76
177
|
maxRetryDelayMs: options?.maxRetryDelayMs,
|
|
77
178
|
metadata: options?.metadata,
|
|
78
179
|
};
|
|
180
|
+
return usesChatGptCodexTransport(model) ? withChatGptCodexTransportRouting(model, providerOptions) : providerOptions;
|
|
79
181
|
}
|
|
80
182
|
export function mapCodexFastModeReasoningEffort(model, reasoning) {
|
|
81
183
|
const clampedReasoning = reasoning ? clampThinkingLevel(model, reasoning) : undefined;
|
|
@@ -100,6 +202,12 @@ export function streamWithCodexFastMode(model, context, options, streamers = DEF
|
|
|
100
202
|
if (model.api === "openai-responses") {
|
|
101
203
|
return streamers.streamOpenAIResponses(model, context, buildOpenAIResponsesCodexFastModeOptions(model, options));
|
|
102
204
|
}
|
|
205
|
+
// The WebSocket handshake builds its headers inside pi-ai, and the runtime
|
|
206
|
+
// constructor can be cached before the first turn, so repair the identity
|
|
207
|
+
// through the global constructor rather than per-request options.
|
|
208
|
+
if (options?.transport !== "sse" && usesChatGptCodexTransport(model)) {
|
|
209
|
+
installCodexFastModeWebSocketIdentity();
|
|
210
|
+
}
|
|
103
211
|
return streamers.streamOpenAICodexResponses(model, context, buildOpenAICodexResponsesCodexFastModeOptions(model, options));
|
|
104
212
|
}
|
|
105
213
|
return streamers.streamSimple(model, context, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex-fast-mode.js","sourceRoot":"","sources":["../../src/core/codex-fast-mode.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype Api,\n\ttype AssistantMessageEventStream,\n\ttype Context,\n\tclampThinkingLevel,\n\ttype Model,\n\ttype OpenAICodexResponsesOptions,\n\ttype OpenAIResponsesOptions,\n\ttype SimpleStreamOptions,\n\ttype StreamOptions,\n\tstreamOpenAICodexResponses,\n\tstreamOpenAIResponses,\n\tstreamSimple,\n\ttype ThinkingLevel,\n} from \"@earendil-works/pi-ai/compat\";\nimport type { OrchestrationContext } from \"./extensions/index.ts\";\n\nexport const CODEX_FAST_MODE_SERVICE_TIER = \"priority\" as const;\n\nexport interface CodexFastModeResolvedSettings {\n\tchat: boolean;\n\tworkflow: boolean;\n}\n\nexport type CodexFastModeScope = \"chat\" | \"workflow\";\n\nexport interface CodexFastModeStreamOptions extends SimpleStreamOptions {\n\tserviceTier?: typeof CODEX_FAST_MODE_SERVICE_TIER;\n}\n\nexport interface CodexFastModeStreamers {\n\tstreamSimple: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\tstreamOpenAIResponses: (\n\t\tmodel: Model<\"openai-responses\">,\n\t\tcontext: Context,\n\t\toptions?: OpenAIResponsesOptions,\n\t) => AssistantMessageEventStream;\n\tstreamOpenAICodexResponses: (\n\t\tmodel: Model<\"openai-codex-responses\">,\n\t\tcontext: Context,\n\t\toptions?: OpenAICodexResponsesOptions,\n\t) => AssistantMessageEventStream;\n}\n\nconst DEFAULT_CODEX_FAST_MODE_STREAMERS: CodexFastModeStreamers = {\n\tstreamSimple,\n\tstreamOpenAIResponses,\n\tstreamOpenAICodexResponses,\n};\n\nexport function isCodexFastModeSupportedProvider(provider: string): boolean {\n\treturn provider === \"openai\" || provider === \"openai-codex\";\n}\n\nexport function isCodexFastModeCandidateModelId(modelId: string | undefined): boolean {\n\tconst provider = modelId?.split(\"/\", 1)[0];\n\treturn provider !== undefined && isCodexFastModeSupportedProvider(provider);\n}\n\nexport function isCodexFastModeSupportedModel(model: Pick<Model<Api>, \"provider\">): boolean {\n\treturn isCodexFastModeSupportedProvider(model.provider);\n}\n\nexport function hasSupportedCodexFastModeModel(models: readonly Pick<Model<Api>, \"provider\">[]): boolean {\n\treturn models.some(isCodexFastModeSupportedModel);\n}\n\nexport function isWorkflowStageOrchestrationContext(context: OrchestrationContext | undefined): boolean {\n\treturn context?.kind === \"workflow-stage\";\n}\n\nexport function getCodexFastModeScope(context: OrchestrationContext | undefined): CodexFastModeScope {\n\treturn isWorkflowStageOrchestrationContext(context) ? \"workflow\" : \"chat\";\n}\n\nexport function isCodexFastModeEnabledForScope(\n\tsettings: CodexFastModeResolvedSettings,\n\tscope: CodexFastModeScope,\n): boolean {\n\treturn settings[scope];\n}\n\nexport function isCodexFastModeEnabledForSession(\n\tsettings: CodexFastModeResolvedSettings,\n\tcontext: OrchestrationContext | undefined,\n): boolean {\n\treturn isCodexFastModeEnabledForScope(settings, getCodexFastModeScope(context));\n}\n\nexport function shouldApplyCodexFastModeForScope(\n\tmodel: Pick<Model<Api>, \"provider\">,\n\tsettings: CodexFastModeResolvedSettings,\n\tscope: CodexFastModeScope,\n): boolean {\n\treturn isCodexFastModeSupportedModel(model) && isCodexFastModeEnabledForScope(settings, scope);\n}\n\nexport function shouldApplyCodexFastMode(\n\tmodel: Pick<Model<Api>, \"provider\">,\n\tsettings: CodexFastModeResolvedSettings,\n\tcontext: OrchestrationContext | undefined,\n): boolean {\n\treturn shouldApplyCodexFastModeForScope(model, settings, getCodexFastModeScope(context));\n}\n\nexport function withCodexFastModeStreamOptions(\n\toptions: SimpleStreamOptions | undefined,\n\tenabled: boolean,\n): CodexFastModeStreamOptions | undefined {\n\tif (!enabled) {\n\t\treturn options;\n\t}\n\n\treturn {\n\t\t...(options ?? {}),\n\t\tserviceTier: CODEX_FAST_MODE_SERVICE_TIER,\n\t};\n}\n\nexport function isCodexFastModeNativeApi(api: Api): api is \"openai-responses\" | \"openai-codex-responses\" {\n\treturn api === \"openai-responses\" || api === \"openai-codex-responses\";\n}\n\nexport function shouldUseNativeCodexFastMode(\n\tmodel: Pick<Model<Api>, \"api\" | \"provider\">,\n\toptions: CodexFastModeStreamOptions | undefined,\n): boolean {\n\treturn (\n\t\tisCodexFastModeSupportedModel(model) &&\n\t\tisCodexFastModeNativeApi(model.api) &&\n\t\toptions?.serviceTier === CODEX_FAST_MODE_SERVICE_TIER\n\t);\n}\n\nfunction buildCodexFastModeBaseProviderOptions(\n\tmodel: Model<Api>,\n\toptions: CodexFastModeStreamOptions | undefined,\n): StreamOptions {\n\t// Native fast-mode streams bypass pi-ai's streamSimple base-options merge.\n\tconst samplingParams =\n\t\tmodel.samplingParams || options?.samplingParams\n\t\t\t? { ...model.samplingParams, ...options?.samplingParams }\n\t\t\t: undefined;\n\treturn {\n\t\tsamplingParams,\n\t\ttemperature: options?.temperature,\n\t\tmaxTokens: options?.maxTokens,\n\t\tsignal: options?.signal,\n\t\tapiKey: options?.apiKey,\n\t\ttransport: options?.transport,\n\t\tcacheRetention: options?.cacheRetention,\n\t\tsessionId: options?.sessionId,\n\t\tonPayload: options?.onPayload,\n\t\tonResponse: options?.onResponse,\n\t\theaders: options?.headers,\n\t\ttimeoutMs: options?.timeoutMs,\n\t\twebsocketConnectTimeoutMs: options?.websocketConnectTimeoutMs,\n\t\tmaxRetries: options?.maxRetries,\n\t\tmaxRetryDelayMs: options?.maxRetryDelayMs,\n\t\tmetadata: options?.metadata,\n\t};\n}\n\nexport function mapCodexFastModeReasoningEffort(\n\tmodel: Model<Api>,\n\treasoning: ThinkingLevel | undefined,\n): ThinkingLevel | undefined {\n\tconst clampedReasoning = reasoning ? clampThinkingLevel(model, reasoning) : undefined;\n\treturn clampedReasoning === \"off\" ? undefined : clampedReasoning;\n}\n\nexport function buildOpenAIResponsesCodexFastModeOptions(\n\tmodel: Model<Api>,\n\toptions: CodexFastModeStreamOptions | undefined,\n): OpenAIResponsesOptions {\n\treturn {\n\t\t...buildCodexFastModeBaseProviderOptions(model, options),\n\t\treasoningEffort: mapCodexFastModeReasoningEffort(model, options?.reasoning),\n\t\tserviceTier: options?.serviceTier,\n\t};\n}\n\nexport function buildOpenAICodexResponsesCodexFastModeOptions(\n\tmodel: Model<Api>,\n\toptions: CodexFastModeStreamOptions | undefined,\n): OpenAICodexResponsesOptions {\n\treturn {\n\t\t...buildCodexFastModeBaseProviderOptions(model, options),\n\t\treasoningEffort: mapCodexFastModeReasoningEffort(model, options?.reasoning),\n\t\tserviceTier: options?.serviceTier,\n\t};\n}\n\nexport function streamWithCodexFastMode(\n\tmodel: Model<Api>,\n\tcontext: Context,\n\toptions: CodexFastModeStreamOptions | undefined,\n\tstreamers: CodexFastModeStreamers = DEFAULT_CODEX_FAST_MODE_STREAMERS,\n): AssistantMessageEventStream {\n\tif (shouldUseNativeCodexFastMode(model, options)) {\n\t\tif (model.api === \"openai-responses\") {\n\t\t\treturn streamers.streamOpenAIResponses(\n\t\t\t\tmodel as Model<\"openai-responses\">,\n\t\t\t\tcontext,\n\t\t\t\tbuildOpenAIResponsesCodexFastModeOptions(model, options),\n\t\t\t);\n\t\t}\n\n\t\treturn streamers.streamOpenAICodexResponses(\n\t\t\tmodel as Model<\"openai-codex-responses\">,\n\t\t\tcontext,\n\t\t\tbuildOpenAICodexResponsesCodexFastModeOptions(model, options),\n\t\t);\n\t}\n\n\treturn streamers.streamSimple(model, context, options);\n}\n\nfunction isObjectPayload(payload: unknown): payload is Record<string, unknown> {\n\treturn typeof payload === \"object\" && payload !== null && !Array.isArray(payload);\n}\n\nexport function withCodexFastModePayload(payload: unknown, enabled: boolean): unknown {\n\tif (!enabled || !isObjectPayload(payload) || payload.service_tier !== undefined) {\n\t\treturn payload;\n\t}\n\n\treturn {\n\t\t...payload,\n\t\tservice_tier: CODEX_FAST_MODE_SERVICE_TIER,\n\t};\n}\n\nexport function formatCodexFastModeModelLabel(modelName: string, enabled: boolean): string {\n\treturn enabled ? `${modelName} fast` : modelName;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"codex-fast-mode.js","sourceRoot":"","sources":["../../src/core/codex-fast-mode.ts"],"names":[],"mappings":"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","sourcesContent":["import { closeOpenAICodexWebSocketSessions } from \"@earendil-works/pi-ai/api/openai-codex-responses\";\nimport {\n\ttype Api,\n\ttype AssistantMessageEventStream,\n\ttype Context,\n\tclampThinkingLevel,\n\ttype Model,\n\ttype OpenAICodexResponsesOptions,\n\ttype OpenAIResponsesOptions,\n\ttype ProviderHeaders,\n\ttype SimpleStreamOptions,\n\ttype StreamOptions,\n\tstreamOpenAICodexResponses,\n\tstreamOpenAIResponses,\n\tstreamSimple,\n\ttype ThinkingLevel,\n} from \"@earendil-works/pi-ai/compat\";\nimport {\n\tCODEX_FAST_MODE_ORIGINATOR,\n\tCODEX_FAST_MODE_ROUTING_HEADER,\n\tclearCodexFastModeRequestMarker,\n\tinstallCodexFastModeWebSocketIdentity,\n\tisFirstPartyCodexBaseUrl,\n\tmarkCodexFastModeRequest,\n\twrapCodexFastModeFetch,\n} from \"./codex-fast-mode-transport.ts\";\nimport type { OrchestrationContext } from \"./extensions/index.ts\";\n\nexport const CODEX_FAST_MODE_SERVICE_TIER = \"priority\" as const;\n\nexport interface CodexFastModeResolvedSettings {\n\tchat: boolean;\n\tworkflow: boolean;\n}\n\nexport type CodexFastModeScope = \"chat\" | \"workflow\";\n\nexport interface CodexFastModeStreamOptions extends SimpleStreamOptions {\n\tserviceTier?: typeof CODEX_FAST_MODE_SERVICE_TIER;\n}\n\nexport interface CodexFastModeStreamers {\n\tstreamSimple: (model: Model<Api>, context: Context, options?: SimpleStreamOptions) => AssistantMessageEventStream;\n\tstreamOpenAIResponses: (\n\t\tmodel: Model<\"openai-responses\">,\n\t\tcontext: Context,\n\t\toptions?: OpenAIResponsesOptions,\n\t) => AssistantMessageEventStream;\n\tstreamOpenAICodexResponses: (\n\t\tmodel: Model<\"openai-codex-responses\">,\n\t\tcontext: Context,\n\t\toptions?: OpenAICodexResponsesOptions,\n\t) => AssistantMessageEventStream;\n}\n\nconst DEFAULT_CODEX_FAST_MODE_STREAMERS: CodexFastModeStreamers = {\n\tstreamSimple,\n\tstreamOpenAIResponses,\n\tstreamOpenAICodexResponses,\n};\n\ntype CodexFastModeModelIdentity = Pick<Model<Api>, \"provider\"> & Partial<Pick<Model<Api>, \"api\">>;\n\nconst CODEX_WEBSOCKET_ROUTING_STATE_IDLE_MS = 6 * 60 * 1000;\nconst codexWebSocketRoutingState = new Map<string, { signature: string; expiry: ReturnType<typeof setTimeout> }>();\n\nexport function isCodexFastModeSupportedProvider(provider: string): boolean {\n\treturn provider === \"openai\" || provider === \"openai-codex\";\n}\n\nexport function isCodexFastModeCandidateModelId(modelId: string | undefined): boolean {\n\tconst provider = modelId?.split(\"/\", 1)[0];\n\treturn provider !== undefined && isCodexFastModeSupportedProvider(provider);\n}\n\nexport function isCodexFastModeSupportedModel(model: CodexFastModeModelIdentity): boolean {\n\treturn isCodexFastModeSupportedProvider(model.provider) || model.api === \"openai-codex-responses\";\n}\n\nexport function hasSupportedCodexFastModeModel(models: readonly CodexFastModeModelIdentity[]): boolean {\n\treturn models.some(isCodexFastModeSupportedModel);\n}\n\nexport function isWorkflowStageOrchestrationContext(context: OrchestrationContext | undefined): boolean {\n\treturn context?.kind === \"workflow-stage\";\n}\n\nexport function getCodexFastModeScope(context: OrchestrationContext | undefined): CodexFastModeScope {\n\treturn isWorkflowStageOrchestrationContext(context) ? \"workflow\" : \"chat\";\n}\n\nexport function isCodexFastModeEnabledForScope(\n\tsettings: CodexFastModeResolvedSettings,\n\tscope: CodexFastModeScope,\n): boolean {\n\treturn settings[scope];\n}\n\nexport function isCodexFastModeEnabledForSession(\n\tsettings: CodexFastModeResolvedSettings,\n\tcontext: OrchestrationContext | undefined,\n): boolean {\n\treturn isCodexFastModeEnabledForScope(settings, getCodexFastModeScope(context));\n}\n\nexport function shouldApplyCodexFastModeForScope(\n\tmodel: CodexFastModeModelIdentity,\n\tsettings: CodexFastModeResolvedSettings,\n\tscope: CodexFastModeScope,\n): boolean {\n\treturn isCodexFastModeSupportedModel(model) && isCodexFastModeEnabledForScope(settings, scope);\n}\n\nexport function shouldApplyCodexFastMode(\n\tmodel: CodexFastModeModelIdentity,\n\tsettings: CodexFastModeResolvedSettings,\n\tcontext: OrchestrationContext | undefined,\n): boolean {\n\treturn shouldApplyCodexFastModeForScope(model, settings, getCodexFastModeScope(context));\n}\n\n/**\n * Preserve the eager first-party header helper for callers that only know a\n * provider and base URL. The shared transport wrapper below recomputes the\n * identity from the final payload and also covers aliases and proxies.\n */\nexport function usesFirstPartyCodexRouting(model: Pick<Model<Api>, \"baseUrl\" | \"provider\">): boolean {\n\treturn model.provider === \"openai-codex\" && isFirstPartyCodexBaseUrl(model.baseUrl);\n}\n\n/** A provider alias or proxy still uses the shared ChatGPT Codex protocol when its API does. */\nexport function usesChatGptCodexTransport(model: Pick<Model<Api>, \"api\">): boolean {\n\treturn model.api === \"openai-codex-responses\";\n}\n\nfunction deleteHeader(headers: ProviderHeaders, name: string): void {\n\tfor (const existingName of Object.keys(headers)) {\n\t\tif (existingName.toLowerCase() === name.toLowerCase()) delete headers[existingName];\n\t}\n}\n\nfunction setHeader(headers: ProviderHeaders, name: string, value: string): void {\n\tdeleteHeader(headers, name);\n\theaders[name] = value;\n}\n\nexport function withCodexFastModeHeaders(\n\tmodel: Pick<Model<Api>, \"baseUrl\" | \"id\" | \"provider\">,\n\theaders: ProviderHeaders | undefined,\n\tenabled: boolean,\n): ProviderHeaders | undefined {\n\tif (!enabled || !usesFirstPartyCodexRouting(model)) return headers;\n\tconst fastHeaders: ProviderHeaders = { ...(headers ?? {}) };\n\tsetHeader(fastHeaders, \"originator\", CODEX_FAST_MODE_ORIGINATOR);\n\tsetHeader(fastHeaders, CODEX_FAST_MODE_ROUTING_HEADER, `model=${model.id};tier=${CODEX_FAST_MODE_SERVICE_TIER}`);\n\treturn fastHeaders;\n}\n\nexport function withCodexFastModeStreamOptions(\n\t_model: Pick<Model<Api>, \"baseUrl\" | \"id\" | \"provider\">,\n\toptions: SimpleStreamOptions | undefined,\n\tenabled: boolean,\n): CodexFastModeStreamOptions | undefined {\n\tif (!enabled) {\n\t\treturn options;\n\t}\n\n\treturn {\n\t\t...(options ?? {}),\n\t\theaders: options?.headers,\n\t\tserviceTier: CODEX_FAST_MODE_SERVICE_TIER,\n\t};\n}\n\nexport function isCodexFastModeNativeApi(api: Api): api is \"openai-responses\" | \"openai-codex-responses\" {\n\treturn api === \"openai-responses\" || api === \"openai-codex-responses\";\n}\n\nexport function shouldUseNativeCodexFastMode(\n\tmodel: Pick<Model<Api>, \"api\" | \"provider\">,\n\toptions: CodexFastModeStreamOptions | undefined,\n): boolean {\n\treturn (\n\t\tisCodexFastModeSupportedModel(model) &&\n\t\tisCodexFastModeNativeApi(model.api) &&\n\t\toptions?.serviceTier === CODEX_FAST_MODE_SERVICE_TIER\n\t);\n}\n\nfunction payloadRecord(payload: unknown): Record<string, unknown> | undefined {\n\treturn typeof payload === \"object\" && payload !== null && !Array.isArray(payload)\n\t\t? (payload as Record<string, unknown>)\n\t\t: undefined;\n}\n\nfunction codexEnvironmentScope(env: StreamOptions[\"env\"]): string {\n\tif (!env) return \"none\";\n\tconst serialized = JSON.stringify(Object.entries(env).sort(([left], [right]) => left.localeCompare(right)));\n\tlet hash = 2166136261;\n\tfor (let index = 0; index < serialized.length; index += 1) {\n\t\thash = Math.imul(hash ^ serialized.charCodeAt(index), 16777619);\n\t}\n\treturn (hash >>> 0).toString(16);\n}\n\ntype CloseCodexWebSocketSessions = typeof closeOpenAICodexWebSocketSessions;\nfunction updateCodexWebSocketRoutingState(\n\tmodel: Pick<Model<Api>, \"baseUrl\" | \"provider\">,\n\troutedModel: string,\n\toptions: Pick<StreamOptions, \"env\" | \"sessionId\" | \"transport\">,\n\tpriority: boolean,\n\tcloseWebSocketSessions: CloseCodexWebSocketSessions,\n): void {\n\tif (options.transport === \"sse\" || !options.sessionId) return;\n\tconst signature = `${model.provider}\\0${model.baseUrl}\\0${codexEnvironmentScope(options.env)}\\0${priority ? `priority:${routedModel}` : \"normal\"}`;\n\tconst previous = codexWebSocketRoutingState.get(options.sessionId);\n\tif (previous?.signature !== undefined && previous.signature !== signature) {\n\t\tcloseWebSocketSessions(options.sessionId);\n\t}\n\tif (previous) clearTimeout(previous.expiry);\n\tconst expiry = setTimeout(() => {\n\t\tif (codexWebSocketRoutingState.get(options.sessionId!)?.signature === signature) {\n\t\t\tcodexWebSocketRoutingState.delete(options.sessionId!);\n\t\t}\n\t}, CODEX_WEBSOCKET_ROUTING_STATE_IDLE_MS);\n\texpiry.unref?.();\n\tcodexWebSocketRoutingState.set(options.sessionId, { signature, expiry });\n}\n\nexport function withChatGptCodexTransportRouting<TOptions extends StreamOptions>(\n\tmodel: Model<Api>,\n\toptions: TOptions,\n\tenabled = true,\n\tcloseWebSocketSessions: CloseCodexWebSocketSessions = closeOpenAICodexWebSocketSessions,\n): TOptions {\n\tconst headers: ProviderHeaders = { ...(options.headers ?? {}) };\n\tconst onPayload = options.onPayload;\n\treturn {\n\t\t...options,\n\t\theaders,\n\t\tfetch: wrapCodexFastModeFetch(options.fetch ?? globalThis.fetch),\n\t\tonPayload: async (payload, requestModel) => {\n\t\t\tconst replacement = await onPayload?.(payload, requestModel);\n\t\t\tconst finalPayload = replacement === undefined ? payload : replacement;\n\t\t\tconst record = payloadRecord(finalPayload);\n\t\t\tconst priority = enabled && record?.service_tier === CODEX_FAST_MODE_SERVICE_TIER;\n\t\t\tconst routedModel = typeof record?.model === \"string\" ? record.model : model.id;\n\t\t\tdeleteHeader(headers, CODEX_FAST_MODE_ROUTING_HEADER);\n\t\t\tclearCodexFastModeRequestMarker(headers);\n\t\t\tif (priority) {\n\t\t\t\tsetHeader(\n\t\t\t\t\theaders,\n\t\t\t\t\tCODEX_FAST_MODE_ROUTING_HEADER,\n\t\t\t\t\t`model=${routedModel};tier=${CODEX_FAST_MODE_SERVICE_TIER}`,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tfor (const [name, value] of Object.entries(headers)) {\n\t\t\t\t\tif (name.toLowerCase() === \"originator\" && value === CODEX_FAST_MODE_ORIGINATOR) delete headers[name];\n\t\t\t\t}\n\t\t\t}\n\t\t\tmarkCodexFastModeRequest(headers, priority);\n\t\t\tupdateCodexWebSocketRoutingState(model, routedModel, options, priority, closeWebSocketSessions);\n\t\t\treturn finalPayload;\n\t\t},\n\t} as TOptions;\n}\n\nfunction buildCodexFastModeBaseProviderOptions(\n\tmodel: Model<Api>,\n\toptions: CodexFastModeStreamOptions | undefined,\n): StreamOptions {\n\t// Native fast-mode streams bypass pi-ai's streamSimple base-options merge.\n\tconst samplingParams =\n\t\tmodel.samplingParams || options?.samplingParams\n\t\t\t? { ...model.samplingParams, ...options?.samplingParams }\n\t\t\t: undefined;\n\tconst providerOptions: StreamOptions = {\n\t\tsamplingParams,\n\t\ttemperature: options?.temperature,\n\t\tmaxTokens: options?.maxTokens,\n\t\tsignal: options?.signal,\n\t\tapiKey: options?.apiKey,\n\t\tfetch: options?.fetch,\n\t\tenv: options?.env,\n\t\ttelemetryContext: options?.telemetryContext,\n\t\ttransport: options?.transport,\n\t\tcacheRetention: options?.cacheRetention,\n\t\tsessionId: options?.sessionId,\n\t\tonPayload: options?.onPayload,\n\t\tonResponse: options?.onResponse,\n\t\theaders: options?.headers,\n\t\ttimeoutMs: options?.timeoutMs,\n\t\twebsocketConnectTimeoutMs: options?.websocketConnectTimeoutMs,\n\t\tmaxRetries: options?.maxRetries,\n\t\tmaxRetryDelayMs: options?.maxRetryDelayMs,\n\t\tmetadata: options?.metadata,\n\t};\n\treturn usesChatGptCodexTransport(model) ? withChatGptCodexTransportRouting(model, providerOptions) : providerOptions;\n}\n\nexport function mapCodexFastModeReasoningEffort(\n\tmodel: Model<Api>,\n\treasoning: ThinkingLevel | undefined,\n): ThinkingLevel | undefined {\n\tconst clampedReasoning = reasoning ? clampThinkingLevel(model, reasoning) : undefined;\n\treturn clampedReasoning === \"off\" ? undefined : clampedReasoning;\n}\n\nexport function buildOpenAIResponsesCodexFastModeOptions(\n\tmodel: Model<Api>,\n\toptions: CodexFastModeStreamOptions | undefined,\n): OpenAIResponsesOptions {\n\treturn {\n\t\t...buildCodexFastModeBaseProviderOptions(model, options),\n\t\treasoningEffort: mapCodexFastModeReasoningEffort(model, options?.reasoning),\n\t\tserviceTier: options?.serviceTier,\n\t};\n}\n\nexport function buildOpenAICodexResponsesCodexFastModeOptions(\n\tmodel: Model<Api>,\n\toptions: CodexFastModeStreamOptions | undefined,\n): OpenAICodexResponsesOptions {\n\treturn {\n\t\t...buildCodexFastModeBaseProviderOptions(model, options),\n\t\treasoningEffort: mapCodexFastModeReasoningEffort(model, options?.reasoning),\n\t\tserviceTier: options?.serviceTier,\n\t};\n}\n\nexport function streamWithCodexFastMode(\n\tmodel: Model<Api>,\n\tcontext: Context,\n\toptions: CodexFastModeStreamOptions | undefined,\n\tstreamers: CodexFastModeStreamers = DEFAULT_CODEX_FAST_MODE_STREAMERS,\n): AssistantMessageEventStream {\n\tif (shouldUseNativeCodexFastMode(model, options)) {\n\t\tif (model.api === \"openai-responses\") {\n\t\t\treturn streamers.streamOpenAIResponses(\n\t\t\t\tmodel as Model<\"openai-responses\">,\n\t\t\t\tcontext,\n\t\t\t\tbuildOpenAIResponsesCodexFastModeOptions(model, options),\n\t\t\t);\n\t\t}\n\n\t\t// The WebSocket handshake builds its headers inside pi-ai, and the runtime\n\t\t// constructor can be cached before the first turn, so repair the identity\n\t\t// through the global constructor rather than per-request options.\n\t\tif (options?.transport !== \"sse\" && usesChatGptCodexTransport(model)) {\n\t\t\tinstallCodexFastModeWebSocketIdentity();\n\t\t}\n\n\t\treturn streamers.streamOpenAICodexResponses(\n\t\t\tmodel as Model<\"openai-codex-responses\">,\n\t\t\tcontext,\n\t\t\tbuildOpenAICodexResponsesCodexFastModeOptions(model, options),\n\t\t);\n\t}\n\n\treturn streamers.streamSimple(model, context, options);\n}\n\nfunction isObjectPayload(payload: unknown): payload is Record<string, unknown> {\n\treturn typeof payload === \"object\" && payload !== null && !Array.isArray(payload);\n}\n\nexport function withCodexFastModePayload(payload: unknown, enabled: boolean): unknown {\n\tif (!enabled || !isObjectPayload(payload) || payload.service_tier !== undefined) {\n\t\treturn payload;\n\t}\n\n\treturn {\n\t\t...payload,\n\t\tservice_tier: CODEX_FAST_MODE_SERVICE_TIER,\n\t};\n}\n\nexport function formatCodexFastModeModelLabel(modelName: string, enabled: boolean): string {\n\treturn enabled ? `${modelName} fast` : modelName;\n}\n"]}
|
|
@@ -6,6 +6,10 @@ export interface ResourceCollision {
|
|
|
6
6
|
loserPath: string;
|
|
7
7
|
winnerSource?: string;
|
|
8
8
|
loserSource?: string;
|
|
9
|
+
winnerCandidateId?: string;
|
|
10
|
+
loserCandidateId?: string;
|
|
11
|
+
winnerSelector?: string;
|
|
12
|
+
loserSelector?: string;
|
|
9
13
|
}
|
|
10
14
|
export type OverlappingResourceType = "tool" | "command" | "prompt" | "flag" | "shortcut";
|
|
11
15
|
export interface ResourceOverlap {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/core/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IACjC,YAAY,EAAE,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../../src/core/diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,iBAAiB;IACjC,YAAY,EAAE,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE1F,MAAM,WAAW,eAAe;IAC/B,YAAY,EAAE,uBAAuB,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,UAAU,CAAC;IACpB,SAAS,EAAE,UAAU,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,WAAW,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,iBAAiB,CAAC;CAC9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/core/diagnostics.ts"],"names":[],"mappings":"","sourcesContent":["import type { SourceInfo } from \"./source-info.ts\";\n\nexport interface ResourceCollision {\n\tresourceType: \"extension\" | \"skill\" | \"prompt\" | \"theme\";\n\tname: string; // skill name, command/tool/flag name, prompt name, theme name\n\twinnerPath: string;\n\tloserPath: string;\n\twinnerSource?: string; // e.g., \"npm:foo\", \"git:...\", \"local\"\n\tloserSource?: string;\n}\n\nexport type OverlappingResourceType = \"tool\" | \"command\" | \"prompt\" | \"flag\" | \"shortcut\";\n\nexport interface ResourceOverlap {\n\tresourceType: OverlappingResourceType;\n\tname: string;\n\tbundled: SourceInfo;\n\tinherited: SourceInfo;\n}\n\nexport interface ResourceDiagnostic {\n\ttype: \"warning\" | \"error\" | \"collision\";\n\tmessage: string;\n\tpath?: string;\n\tcollision?: ResourceCollision;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/core/diagnostics.ts"],"names":[],"mappings":"","sourcesContent":["import type { SourceInfo } from \"./source-info.ts\";\n\nexport interface ResourceCollision {\n\tresourceType: \"extension\" | \"skill\" | \"prompt\" | \"theme\";\n\tname: string; // skill name, command/tool/flag name, prompt name, theme name\n\twinnerPath: string;\n\tloserPath: string;\n\twinnerSource?: string; // e.g., \"npm:foo\", \"git:...\", \"local\"\n\tloserSource?: string;\n\twinnerCandidateId?: string;\n\tloserCandidateId?: string;\n\twinnerSelector?: string;\n\tloserSelector?: string;\n}\n\nexport type OverlappingResourceType = \"tool\" | \"command\" | \"prompt\" | \"flag\" | \"shortcut\";\n\nexport interface ResourceOverlap {\n\tresourceType: OverlappingResourceType;\n\tname: string;\n\tbundled: SourceInfo;\n\tinherited: SourceInfo;\n}\n\nexport interface ResourceDiagnostic {\n\ttype: \"warning\" | \"error\" | \"collision\";\n\tmessage: string;\n\tpath?: string;\n\tcollision?: ResourceCollision;\n}\n"]}
|
package/dist/core/event-bus.d.ts
CHANGED
|
@@ -6,4 +6,16 @@ export interface EventBusController extends EventBus {
|
|
|
6
6
|
clear(): void;
|
|
7
7
|
}
|
|
8
8
|
export declare function createEventBus(): EventBusController;
|
|
9
|
+
/**
|
|
10
|
+
* Register `facade` as forwarding to `bus`, so `canonicalEventBusFor(facade)`
|
|
11
|
+
* resolves to `bus`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function registerCanonicalEventBus(facade: object, bus: object): void;
|
|
14
|
+
/**
|
|
15
|
+
* Resolve a scope object to the canonical EventBus it forwards to. A
|
|
16
|
+
* registered per-extension `events` facade yields the shared bus behind it;
|
|
17
|
+
* anything else — including a canonical bus itself — is returned unchanged,
|
|
18
|
+
* so canonical buses are fixed points.
|
|
19
|
+
*/
|
|
20
|
+
export declare function canonicalEventBusFor(scope: object): object;
|
|
9
21
|
//# sourceMappingURL=event-bus.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/core/event-bus.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,QAAQ;IACxB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3C,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAClE;AAED,MAAM,WAAW,kBAAmB,SAAQ,QAAQ;IACnD,KAAK,IAAI,IAAI,CAAC;CACd;AAED,wBAAgB,cAAc,IAAI,kBAAkB,CAqBnD"}
|
|
1
|
+
{"version":3,"file":"event-bus.d.ts","sourceRoot":"","sources":["../../src/core/event-bus.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,QAAQ;IACxB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3C,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAClE;AAED,MAAM,WAAW,kBAAmB,SAAQ,QAAQ;IACnD,KAAK,IAAI,IAAI,CAAC;CACd;AAED,wBAAgB,cAAc,IAAI,kBAAkB,CAqBnD;AASD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3E;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE1D"}
|
package/dist/core/event-bus.js
CHANGED
|
@@ -22,4 +22,26 @@ export function createEventBus() {
|
|
|
22
22
|
},
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Per-extension `events` facades mapped back to the canonical EventBus each
|
|
27
|
+
* forwards to. Weak so neither facades nor buses are retained: an entry lives
|
|
28
|
+
* exactly as long as the facade it keys on.
|
|
29
|
+
*/
|
|
30
|
+
const canonicalEventBuses = new WeakMap();
|
|
31
|
+
/**
|
|
32
|
+
* Register `facade` as forwarding to `bus`, so `canonicalEventBusFor(facade)`
|
|
33
|
+
* resolves to `bus`.
|
|
34
|
+
*/
|
|
35
|
+
export function registerCanonicalEventBus(facade, bus) {
|
|
36
|
+
canonicalEventBuses.set(facade, bus);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Resolve a scope object to the canonical EventBus it forwards to. A
|
|
40
|
+
* registered per-extension `events` facade yields the shared bus behind it;
|
|
41
|
+
* anything else — including a canonical bus itself — is returned unchanged,
|
|
42
|
+
* so canonical buses are fixed points.
|
|
43
|
+
*/
|
|
44
|
+
export function canonicalEventBusFor(scope) {
|
|
45
|
+
return canonicalEventBuses.get(scope) ?? scope;
|
|
46
|
+
}
|
|
25
47
|
//# sourceMappingURL=event-bus.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/core/event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAW3C,MAAM,UAAU,cAAc;IAC7B,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IACnC,OAAO;QACN,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;YACvB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YACxB,MAAM,WAAW,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE;gBAC3C,IAAI,CAAC;oBACJ,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,KAAK,CAAC,wBAAwB,OAAO,IAAI,EAAE,GAAG,CAAC,CAAC;gBACzD,CAAC;YACF,CAAC,CAAC;YACF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACjC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACX,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC;KACD,CAAC;AACH,CAAC","sourcesContent":["import { EventEmitter } from \"node:events\";\n\nexport interface EventBus {\n\temit(channel: string, data: unknown): void;\n\ton(channel: string, handler: (data: unknown) => void): () => void;\n}\n\nexport interface EventBusController extends EventBus {\n\tclear(): void;\n}\n\nexport function createEventBus(): EventBusController {\n\tconst emitter = new EventEmitter();\n\treturn {\n\t\temit: (channel, data) => {\n\t\t\temitter.emit(channel, data);\n\t\t},\n\t\ton: (channel, handler) => {\n\t\t\tconst safeHandler = async (data: unknown) => {\n\t\t\t\ttry {\n\t\t\t\t\tawait handler(data);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconsole.error(`Event handler error (${channel}):`, err);\n\t\t\t\t}\n\t\t\t};\n\t\t\temitter.on(channel, safeHandler);\n\t\t\treturn () => emitter.off(channel, safeHandler);\n\t\t},\n\t\tclear: () => {\n\t\t\temitter.removeAllListeners();\n\t\t},\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../src/core/event-bus.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAW3C,MAAM,UAAU,cAAc;IAC7B,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IACnC,OAAO;QACN,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE;YACvB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YACxB,MAAM,WAAW,GAAG,KAAK,EAAE,IAAa,EAAE,EAAE;gBAC3C,IAAI,CAAC;oBACJ,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,OAAO,CAAC,KAAK,CAAC,wBAAwB,OAAO,IAAI,EAAE,GAAG,CAAC,CAAC;gBACzD,CAAC;YACF,CAAC,CAAC;YACF,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACjC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACX,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC9B,CAAC;KACD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAAkB,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAc,EAAE,GAAW;IACpE,mBAAmB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IACjD,OAAO,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AAChD,CAAC","sourcesContent":["import { EventEmitter } from \"node:events\";\n\nexport interface EventBus {\n\temit(channel: string, data: unknown): void;\n\ton(channel: string, handler: (data: unknown) => void): () => void;\n}\n\nexport interface EventBusController extends EventBus {\n\tclear(): void;\n}\n\nexport function createEventBus(): EventBusController {\n\tconst emitter = new EventEmitter();\n\treturn {\n\t\temit: (channel, data) => {\n\t\t\temitter.emit(channel, data);\n\t\t},\n\t\ton: (channel, handler) => {\n\t\t\tconst safeHandler = async (data: unknown) => {\n\t\t\t\ttry {\n\t\t\t\t\tawait handler(data);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tconsole.error(`Event handler error (${channel}):`, err);\n\t\t\t\t}\n\t\t\t};\n\t\t\temitter.on(channel, safeHandler);\n\t\t\treturn () => emitter.off(channel, safeHandler);\n\t\t},\n\t\tclear: () => {\n\t\t\temitter.removeAllListeners();\n\t\t},\n\t};\n}\n\n/**\n * Per-extension `events` facades mapped back to the canonical EventBus each\n * forwards to. Weak so neither facades nor buses are retained: an entry lives\n * exactly as long as the facade it keys on.\n */\nconst canonicalEventBuses = new WeakMap<object, object>();\n\n/**\n * Register `facade` as forwarding to `bus`, so `canonicalEventBusFor(facade)`\n * resolves to `bus`.\n */\nexport function registerCanonicalEventBus(facade: object, bus: object): void {\n\tcanonicalEventBuses.set(facade, bus);\n}\n\n/**\n * Resolve a scope object to the canonical EventBus it forwards to. A\n * registered per-extension `events` facade yields the shared bus behind it;\n * anything else — including a canonical bus itself — is returned unchanged,\n * so canonical buses are fixed points.\n */\nexport function canonicalEventBusFor(scope: object): object {\n\treturn canonicalEventBuses.get(scope) ?? scope;\n}\n"]}
|
|
@@ -1,2 +1,27 @@
|
|
|
1
|
+
import type { ConstrainedSamplingConfig } from "@earendil-works/pi-ai/compat";
|
|
1
2
|
export declare function areExperimentalFeaturesEnabled(): boolean;
|
|
3
|
+
/**
|
|
4
|
+
* Experimental strict JSON-schema constrained sampling for built-in tool definitions.
|
|
5
|
+
*
|
|
6
|
+
* Returns a `prefer` (not `require`) constraint so providers without strict
|
|
7
|
+
* support keep working, and `undefined` unless experimental features are enabled
|
|
8
|
+
* (`ATOMIC_EXPERIMENTAL=1` or the legacy `PI_EXPERIMENTAL=1`), leaving tool
|
|
9
|
+
* definitions unconstrained by default.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getExperimentalToolSampling(): ConstrainedSamplingConfig | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Tool-definition spread fragment for the experimental strict sampling above.
|
|
14
|
+
*
|
|
15
|
+
* Sets `constrainedSampling` only when the experimental gate is on. Key presence
|
|
16
|
+
* is semantic through the tool plumbing (`Object.hasOwn` guards in
|
|
17
|
+
* tool-definition-wrapper, agent-session-state, and loader-runtime), so an
|
|
18
|
+
* unconstrained definition must keep the property absent rather than own it
|
|
19
|
+
* with `undefined`.
|
|
20
|
+
*/
|
|
21
|
+
export declare function experimentalToolSamplingProperty(): {
|
|
22
|
+
constrainedSampling: {
|
|
23
|
+
type: "json_schema";
|
|
24
|
+
strict: "prefer";
|
|
25
|
+
};
|
|
26
|
+
} | Record<string, never>;
|
|
2
27
|
//# sourceMappingURL=experimental.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"experimental.d.ts","sourceRoot":"","sources":["../../src/core/experimental.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"experimental.d.ts","sourceRoot":"","sources":["../../src/core/experimental.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAG9E,wBAAgB,8BAA8B,IAAI,OAAO,CAKxD;AAID;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,IAAI,yBAAyB,GAAG,SAAS,CAEnF;AAED;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,IAC7C;IAAE,mBAAmB,EAAE;QAAE,IAAI,EAAE,aAAa,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAA;KAAE,CAAA;CAAE,GAClE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAEvB"}
|
|
@@ -3,4 +3,28 @@ export function areExperimentalFeaturesEnabled() {
|
|
|
3
3
|
return (process.env[`${APP_NAME.toUpperCase()}_EXPERIMENTAL`] === "1" ||
|
|
4
4
|
process.env[`${LEGACY_ENV_PREFIX}_EXPERIMENTAL`] === "1");
|
|
5
5
|
}
|
|
6
|
+
const PREFER_STRICT_TOOL_SAMPLING = { type: "json_schema", strict: "prefer" };
|
|
7
|
+
/**
|
|
8
|
+
* Experimental strict JSON-schema constrained sampling for built-in tool definitions.
|
|
9
|
+
*
|
|
10
|
+
* Returns a `prefer` (not `require`) constraint so providers without strict
|
|
11
|
+
* support keep working, and `undefined` unless experimental features are enabled
|
|
12
|
+
* (`ATOMIC_EXPERIMENTAL=1` or the legacy `PI_EXPERIMENTAL=1`), leaving tool
|
|
13
|
+
* definitions unconstrained by default.
|
|
14
|
+
*/
|
|
15
|
+
export function getExperimentalToolSampling() {
|
|
16
|
+
return areExperimentalFeaturesEnabled() ? PREFER_STRICT_TOOL_SAMPLING : undefined;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Tool-definition spread fragment for the experimental strict sampling above.
|
|
20
|
+
*
|
|
21
|
+
* Sets `constrainedSampling` only when the experimental gate is on. Key presence
|
|
22
|
+
* is semantic through the tool plumbing (`Object.hasOwn` guards in
|
|
23
|
+
* tool-definition-wrapper, agent-session-state, and loader-runtime), so an
|
|
24
|
+
* unconstrained definition must keep the property absent rather than own it
|
|
25
|
+
* with `undefined`.
|
|
26
|
+
*/
|
|
27
|
+
export function experimentalToolSamplingProperty() {
|
|
28
|
+
return areExperimentalFeaturesEnabled() ? { constrainedSampling: PREFER_STRICT_TOOL_SAMPLING } : {};
|
|
29
|
+
}
|
|
6
30
|
//# sourceMappingURL=experimental.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"experimental.js","sourceRoot":"","sources":["../../src/core/experimental.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"experimental.js","sourceRoot":"","sources":["../../src/core/experimental.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAE3D,MAAM,UAAU,8BAA8B;IAC7C,OAAO,CACN,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC,KAAK,GAAG;QAC7D,OAAO,CAAC,GAAG,CAAC,GAAG,iBAAiB,eAAe,CAAC,KAAK,GAAG,CACxD,CAAC;AACH,CAAC;AAED,MAAM,2BAA2B,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAW,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,UAAU,2BAA2B;IAC1C,OAAO,8BAA8B,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,SAAS,CAAC;AACnF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gCAAgC;IAG/C,OAAO,8BAA8B,EAAE,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACrG,CAAC","sourcesContent":["import type { ConstrainedSamplingConfig } from \"@earendil-works/pi-ai/compat\";\nimport { APP_NAME, LEGACY_ENV_PREFIX } from \"../config.ts\";\n\nexport function areExperimentalFeaturesEnabled(): boolean {\n\treturn (\n\t\tprocess.env[`${APP_NAME.toUpperCase()}_EXPERIMENTAL`] === \"1\" ||\n\t\tprocess.env[`${LEGACY_ENV_PREFIX}_EXPERIMENTAL`] === \"1\"\n\t);\n}\n\nconst PREFER_STRICT_TOOL_SAMPLING = { type: \"json_schema\", strict: \"prefer\" } as const;\n\n/**\n * Experimental strict JSON-schema constrained sampling for built-in tool definitions.\n *\n * Returns a `prefer` (not `require`) constraint so providers without strict\n * support keep working, and `undefined` unless experimental features are enabled\n * (`ATOMIC_EXPERIMENTAL=1` or the legacy `PI_EXPERIMENTAL=1`), leaving tool\n * definitions unconstrained by default.\n */\nexport function getExperimentalToolSampling(): ConstrainedSamplingConfig | undefined {\n\treturn areExperimentalFeaturesEnabled() ? PREFER_STRICT_TOOL_SAMPLING : undefined;\n}\n\n/**\n * Tool-definition spread fragment for the experimental strict sampling above.\n *\n * Sets `constrainedSampling` only when the experimental gate is on. Key presence\n * is semantic through the tool plumbing (`Object.hasOwn` guards in\n * tool-definition-wrapper, agent-session-state, and loader-runtime), so an\n * unconstrained definition must keep the property absent rather than own it\n * with `undefined`.\n */\nexport function experimentalToolSamplingProperty():\n\t| { constrainedSampling: { type: \"json_schema\"; strict: \"prefer\" } }\n\t| Record<string, never> {\n\treturn areExperimentalFeaturesEnabled() ? { constrainedSampling: PREFER_STRICT_TOOL_SAMPLING } : {};\n}\n"]}
|
|
@@ -32,13 +32,14 @@
|
|
|
32
32
|
* Matches the format: <skill name="..." location="...">\n...\n</skill>\n\nuser message
|
|
33
33
|
*/
|
|
34
34
|
function parseSkillBlock(text) {
|
|
35
|
-
const match = text.match(/^<skill name="([^"]+)" location="([^"]+)"
|
|
35
|
+
const match = text.match(/^<skill name="([^"]+)" location="([^"]+)"(?: candidate="([^"]+)")?>\n([\s\S]*?)\n<\/skill>(?:\n\n([\s\S]+))?$/);
|
|
36
36
|
if (!match) return null;
|
|
37
37
|
return {
|
|
38
38
|
name: match[1],
|
|
39
39
|
location: match[2],
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
candidateId: match[3] || undefined,
|
|
41
|
+
content: match[4],
|
|
42
|
+
userMessage: match[5]?.trim() || undefined,
|
|
42
43
|
};
|
|
43
44
|
}
|
|
44
45
|
|
|
@@ -321,13 +321,14 @@
|
|
|
321
321
|
* Matches the format: <skill name="..." location="...">\n...\n</skill>\n\nuser message
|
|
322
322
|
*/
|
|
323
323
|
function parseSkillBlock(text) {
|
|
324
|
-
const match = text.match(/^<skill name="([^"]+)" location="([^"]+)"
|
|
324
|
+
const match = text.match(/^<skill name="([^"]+)" location="([^"]+)"(?: candidate="([^"]+)")?>\n([\s\S]*?)\n<\/skill>(?:\n\n([\s\S]+))?$/);
|
|
325
325
|
if (!match) return null;
|
|
326
326
|
return {
|
|
327
327
|
name: match[1],
|
|
328
328
|
location: match[2],
|
|
329
|
-
|
|
330
|
-
|
|
329
|
+
candidateId: match[3] || undefined,
|
|
330
|
+
content: match[4],
|
|
331
|
+
userMessage: match[5]?.trim() || undefined,
|
|
331
332
|
};
|
|
332
333
|
}
|
|
333
334
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process-global store for session state, shared by duplicate host-module
|
|
3
|
+
* instances. The `@1` suffix versions the stored WeakMap shape.
|
|
4
|
+
*/
|
|
5
|
+
export declare const EXTENSION_SESSION_STATE_KEY: unique symbol;
|
|
6
|
+
/**
|
|
7
|
+
* Return the session-scoped state registered for `(scope, key)`, creating it
|
|
8
|
+
* with `create` on first use.
|
|
9
|
+
*
|
|
10
|
+
* `scope` must be the extension's `pi.events` facade or the session EventBus
|
|
11
|
+
* itself. It is resolved to its canonical EventBus first (see
|
|
12
|
+
* {@link canonicalEventBusFor}), so every load generation of one session — each
|
|
13
|
+
* holding a distinct `events` facade over the same bus — re-binds to the same
|
|
14
|
+
* state, while two in-process sessions with distinct buses stay isolated.
|
|
15
|
+
* Passing the bus itself works too: buses are fixed points of the resolution.
|
|
16
|
+
*
|
|
17
|
+
* The key namespace is session-wide, not per-extension. Two extensions that
|
|
18
|
+
* pass the same key on the same session receive the same object; the later
|
|
19
|
+
* factory is not called. Callers must prefix keys with a stable extension
|
|
20
|
+
* identity and a version suffix (for example `"my-extension:state:v1"`).
|
|
21
|
+
* Bumping the suffix declines an incompatible predecessor instead of reusing
|
|
22
|
+
* it under a new shape.
|
|
23
|
+
*
|
|
24
|
+
* Entries live exactly as long as the bus they serve. They do not persist
|
|
25
|
+
* across process restart; use `appendEntry` for durable session data.
|
|
26
|
+
*/
|
|
27
|
+
export declare function sessionScopedExtensionState<T extends object>(scope: object, key: string, create: () => T): T;
|
|
28
|
+
//# sourceMappingURL=extension-session-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extension-session-state.d.ts","sourceRoot":"","sources":["../../src/core/extension-session-state.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,2BAA2B,eAA8D,CAAC;AAiBvG;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAa5G"}
|