@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
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crash-safe injection journal.
|
|
3
|
+
*
|
|
4
|
+
* Injection writes into the user's source tree: generated components, a Nuxt
|
|
5
|
+
* client plugin, marker blocks inside a layout, a patched CSP meta tag. The
|
|
6
|
+
* clean path removes all of it on stop. The unclean paths do not:
|
|
7
|
+
*
|
|
8
|
+
* - the dev server is SIGKILLed, so `--remove` never runs;
|
|
9
|
+
* - the project changes shape between start and stop (a nuxt.config appears,
|
|
10
|
+
* a package.json is edited), so detection resolves a different framework
|
|
11
|
+
* and the old framework's artifacts are nobody's business;
|
|
12
|
+
* - stop runs from a different directory than start did.
|
|
13
|
+
*
|
|
14
|
+
* So every inject records what it wrote to `.impeccable/live/inject-journal.json`
|
|
15
|
+
* before the next one runs, and both inject and `--remove` reconcile that
|
|
16
|
+
* record against the tree.
|
|
17
|
+
*
|
|
18
|
+
* **The journal is a claim of ownership, not a to-do list.** Healing an
|
|
19
|
+
* artifact only ever removes what still carries our marker; a generated file
|
|
20
|
+
* the user has since replaced, or a layout they have since un-patched by hand,
|
|
21
|
+
* is dropped from the journal untouched.
|
|
22
|
+
*
|
|
23
|
+
* **Path resolution is appRoot-relative.** Live entry scripts chdir onto the
|
|
24
|
+
* roots manifest (`enterLiveRoot`) before doing anything, so a journal written
|
|
25
|
+
* by a session started in the app root is found by a stop issued from any
|
|
26
|
+
* directory inside the repo.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
import fs from 'node:fs';
|
|
30
|
+
import path from 'node:path';
|
|
31
|
+
import { PATCH_UNDOERS } from './index.mjs';
|
|
32
|
+
import { resolveProjectPath, writeProjectFileAtomic } from './detect-utils.mjs';
|
|
33
|
+
|
|
34
|
+
export const INJECT_JOURNAL_VERSION = 1;
|
|
35
|
+
export const INJECT_JOURNAL_RELPATH = '.impeccable/live/inject-journal.json';
|
|
36
|
+
|
|
37
|
+
export function injectJournalPath(cwd = process.cwd()) {
|
|
38
|
+
// Validate the path against the canonical root, but retain the caller's
|
|
39
|
+
// lexical root in output so /tmp aliases do not leak into user-facing paths.
|
|
40
|
+
resolveProjectPath(cwd, INJECT_JOURNAL_RELPATH);
|
|
41
|
+
return path.join(cwd, ...INJECT_JOURNAL_RELPATH.split('/'));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export function readInjectJournal(cwd = process.cwd()) {
|
|
45
|
+
const file = injectJournalPath(cwd);
|
|
46
|
+
let raw;
|
|
47
|
+
try {
|
|
48
|
+
raw = JSON.parse(fs.readFileSync(file, 'utf-8'));
|
|
49
|
+
} catch {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
if (!raw || typeof raw !== 'object' || !Array.isArray(raw.artifacts)) return null;
|
|
53
|
+
return raw;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function clearInjectJournal(cwd = process.cwd()) {
|
|
57
|
+
try { fs.unlinkSync(injectJournalPath(cwd)); } catch { /* already gone */ }
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function writeInjectJournal(cwd, journal) {
|
|
61
|
+
return writeProjectFileAtomic(cwd, INJECT_JOURNAL_RELPATH, JSON.stringify(journal, null, 2) + '\n');
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Record the artifacts an injection just wrote. Replaces any previous record:
|
|
66
|
+
* callers heal first (see healInjectJournal), so nothing survivable is lost.
|
|
67
|
+
*/
|
|
68
|
+
export function recordInjection(cwd = process.cwd(), { framework, port, artifacts = [] } = {}) {
|
|
69
|
+
if (!artifacts.length) {
|
|
70
|
+
clearInjectJournal(cwd);
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
return writeInjectJournal(cwd, {
|
|
74
|
+
version: INJECT_JOURNAL_VERSION,
|
|
75
|
+
appRoot: path.resolve(cwd),
|
|
76
|
+
framework: framework || null,
|
|
77
|
+
port: Number.isFinite(Number(port)) ? Number(port) : null,
|
|
78
|
+
pid: process.pid,
|
|
79
|
+
recordedAt: new Date().toISOString(),
|
|
80
|
+
artifacts,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
function normalizeRel(cwd, rel) {
|
|
85
|
+
return resolveProjectPath(cwd, String(rel || '')).split(path.sep).join('/');
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
function readIfPresent(abs) {
|
|
89
|
+
try {
|
|
90
|
+
return fs.readFileSync(abs, 'utf-8');
|
|
91
|
+
} catch {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function pruneEmptyDirs(dir, stopDir) {
|
|
97
|
+
let current = path.resolve(dir);
|
|
98
|
+
const stop = path.resolve(stopDir);
|
|
99
|
+
while (current !== stop && current.startsWith(stop + path.sep)) {
|
|
100
|
+
try {
|
|
101
|
+
if (fs.readdirSync(current).length > 0) return;
|
|
102
|
+
fs.rmdirSync(current);
|
|
103
|
+
} catch {
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
current = path.dirname(current);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
function healArtifact(cwd, artifact, undoers) {
|
|
112
|
+
let abs;
|
|
113
|
+
try {
|
|
114
|
+
abs = resolveProjectPath(cwd, artifact.path, { kind: 'file' });
|
|
115
|
+
} catch {
|
|
116
|
+
return { path: artifact.path, action: 'refused_outside_project' };
|
|
117
|
+
}
|
|
118
|
+
const content = readIfPresent(abs);
|
|
119
|
+
if (content === null) return { path: artifact.path, action: 'absent' };
|
|
120
|
+
|
|
121
|
+
if (artifact.kind === 'created') {
|
|
122
|
+
// Only reclaim a generated file that still carries our marker; a created
|
|
123
|
+
// artifact with no marker at all is unverifiable and stays untouched.
|
|
124
|
+
if (!artifact.marker || !content.includes(artifact.marker)) {
|
|
125
|
+
return { path: artifact.path, action: 'disowned' };
|
|
126
|
+
}
|
|
127
|
+
try { fs.rmSync(abs, { force: true }); } catch { return null; }
|
|
128
|
+
if (artifact.pruneTo !== undefined) {
|
|
129
|
+
let pruneRoot;
|
|
130
|
+
try {
|
|
131
|
+
pruneRoot = artifact.pruneTo
|
|
132
|
+
? resolveProjectPath(cwd, artifact.pruneTo, { kind: 'directory' })
|
|
133
|
+
: fs.realpathSync(cwd);
|
|
134
|
+
} catch {
|
|
135
|
+
pruneRoot = null;
|
|
136
|
+
}
|
|
137
|
+
if (pruneRoot) pruneEmptyDirs(path.dirname(abs), pruneRoot);
|
|
138
|
+
}
|
|
139
|
+
return { path: artifact.path, action: 'removed' };
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (artifact.kind === 'patched') {
|
|
143
|
+
const markers = Array.isArray(artifact.markers) ? artifact.markers : [];
|
|
144
|
+
// No marker left means the patch is already gone; never run an undo over
|
|
145
|
+
// a file we no longer recognize (the undoers normalize whitespace).
|
|
146
|
+
if (markers.length && !markers.some((marker) => content.includes(marker))) {
|
|
147
|
+
return { path: artifact.path, action: 'disowned' };
|
|
148
|
+
}
|
|
149
|
+
const undo = undoers[artifact.patch];
|
|
150
|
+
if (typeof undo !== 'function') return null;
|
|
151
|
+
const next = undo(content);
|
|
152
|
+
if (next === content) return { path: artifact.path, action: 'disowned' };
|
|
153
|
+
try { writeProjectFileAtomic(cwd, artifact.path, next); } catch { return null; }
|
|
154
|
+
return { path: artifact.path, action: 'unpatched' };
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
return null;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Reconcile the journal against the tree.
|
|
162
|
+
*
|
|
163
|
+
* `keep` is the set of paths the current operation legitimately owns — the
|
|
164
|
+
* artifacts an inject is about to (re)write. Everything else in the journal is
|
|
165
|
+
* an orphan of a session that is gone, and gets healed. This keeps a repeat
|
|
166
|
+
* inject byte-idempotent: the artifacts it is about to rewrite are kept, not
|
|
167
|
+
* torn down and rebuilt.
|
|
168
|
+
*
|
|
169
|
+
* Returns `{ healed, kept }`. `healed` lists only artifacts whose file was
|
|
170
|
+
* actually changed or removed, so callers can stay silent when nothing was
|
|
171
|
+
* orphaned. Idempotent: a second call finds an empty journal.
|
|
172
|
+
*/
|
|
173
|
+
export function healInjectJournal(cwd = process.cwd(), { keep = [], undoers = PATCH_UNDOERS } = {}) {
|
|
174
|
+
const journal = readInjectJournal(cwd);
|
|
175
|
+
if (!journal) return { healed: [], kept: [] };
|
|
176
|
+
|
|
177
|
+
const keepSet = new Set();
|
|
178
|
+
for (const rel of keep) {
|
|
179
|
+
try { keepSet.add(normalizeRel(cwd, rel)); } catch { /* unsafe paths are never kept */ }
|
|
180
|
+
}
|
|
181
|
+
const healed = [];
|
|
182
|
+
const kept = [];
|
|
183
|
+
|
|
184
|
+
for (const artifact of journal.artifacts) {
|
|
185
|
+
if (!artifact || typeof artifact.path !== 'string') continue;
|
|
186
|
+
let normalizedArtifact;
|
|
187
|
+
try { normalizedArtifact = normalizeRel(cwd, artifact.path); } catch { continue; }
|
|
188
|
+
if (keepSet.has(normalizedArtifact)) {
|
|
189
|
+
kept.push(artifact);
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
const outcome = healArtifact(cwd, artifact, undoers);
|
|
193
|
+
if (outcome && (outcome.action === 'removed' || outcome.action === 'unpatched')) {
|
|
194
|
+
healed.push(outcome);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
if (kept.length) {
|
|
199
|
+
writeInjectJournal(cwd, { ...journal, artifacts: kept });
|
|
200
|
+
} else {
|
|
201
|
+
clearInjectJournal(cwd);
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
return { healed, kept };
|
|
205
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Next.js registry entry.
|
|
3
|
+
*
|
|
4
|
+
* Next takes the generic tag strategy: the App Router's root layout renders
|
|
5
|
+
* `<html>…<body>` in JSX, so the marker-wrapped script block goes in there
|
|
6
|
+
* verbatim. Nothing about injection differs from a plain Vite app, which is
|
|
7
|
+
* why live-inject.mjs never had a Next branch. The entry exists so the
|
|
8
|
+
* registry can name what it is looking at.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { fileExists, findConfigFile, hasAnyDependency } from './detect-utils.mjs';
|
|
12
|
+
|
|
13
|
+
const NEXT_CONFIG_RE = /^next\.config\.(?:js|mjs|cjs|ts|mts|cts)$/;
|
|
14
|
+
|
|
15
|
+
const ROUTER_ENTRY_CANDIDATES = [
|
|
16
|
+
'app/layout.tsx', 'app/layout.jsx', 'app/layout.ts', 'app/layout.js',
|
|
17
|
+
'src/app/layout.tsx', 'src/app/layout.jsx', 'src/app/layout.ts', 'src/app/layout.js',
|
|
18
|
+
'pages/_app.tsx', 'pages/_app.jsx', 'pages/_app.ts', 'pages/_app.js',
|
|
19
|
+
'pages/_document.tsx', 'pages/_document.jsx',
|
|
20
|
+
'src/pages/_app.tsx', 'src/pages/_app.jsx',
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
export function detectNextProject(cwd = process.cwd()) {
|
|
24
|
+
const configFile = findConfigFile(cwd, NEXT_CONFIG_RE);
|
|
25
|
+
if (configFile) return { configFile, via: 'config' };
|
|
26
|
+
if (hasAnyDependency(cwd, ['next'])) return { configFile: null, via: 'package' };
|
|
27
|
+
// Next's file conventions are distinctive enough to stand alone: a root
|
|
28
|
+
// `app/layout.*` or `pages/_app.*` is not a shape other bundlers produce.
|
|
29
|
+
const entry = ROUTER_ENTRY_CANDIDATES.find((rel) => fileExists(cwd, rel));
|
|
30
|
+
if (entry) return { configFile: null, via: 'router-entry', entry };
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export const nextjs = {
|
|
35
|
+
name: 'nextjs',
|
|
36
|
+
|
|
37
|
+
detect(cwd) {
|
|
38
|
+
return detectNextProject(cwd);
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
inject: { kind: 'tag' },
|
|
42
|
+
|
|
43
|
+
source: {
|
|
44
|
+
extensions: ['.tsx', '.jsx'],
|
|
45
|
+
preview: 'source',
|
|
46
|
+
styleMode: 'scoped',
|
|
47
|
+
commentSyntax: 'jsx',
|
|
48
|
+
},
|
|
49
|
+
};
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nuxt registry entry, and the Nuxt adapter itself.
|
|
3
|
+
*
|
|
4
|
+
* A script element placed in app.vue is compiled as Vue-rendered DOM and is
|
|
5
|
+
* not executed. Nuxt instead auto-discovers client plugins. Keep the adapter
|
|
6
|
+
* generated, dev-only, and outside user-authored source: Live creates one
|
|
7
|
+
* marked .client.ts plugin on start and removes it on stop.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import fs from 'node:fs';
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
import { buildLiveScriptSrc } from './script-src.mjs';
|
|
13
|
+
import { findConfigFile, resolveProjectPath, writeProjectFileAtomic } from './detect-utils.mjs';
|
|
14
|
+
|
|
15
|
+
export const NUXT_PLUGIN_MARKER = 'impeccable-live-nuxt-plugin';
|
|
16
|
+
export const NUXT_PLUGIN_NAME = 'impeccable-live.client.ts';
|
|
17
|
+
|
|
18
|
+
const NUXT_CONFIG_RE = /^nuxt\.config\.(?:js|mjs|cjs|ts|mts|cts)$/;
|
|
19
|
+
|
|
20
|
+
export function detectNuxtProject(cwd = process.cwd()) {
|
|
21
|
+
const configFile = findConfigFile(cwd, NUXT_CONFIG_RE);
|
|
22
|
+
if (!configFile) return null;
|
|
23
|
+
|
|
24
|
+
const config = fs.readFileSync(path.join(cwd, configFile), 'utf-8');
|
|
25
|
+
const literalSrcDir = config.match(/\bsrcDir\s*:\s*(['"])([^'"]+)\1/);
|
|
26
|
+
let appDir = '';
|
|
27
|
+
if (literalSrcDir) {
|
|
28
|
+
const candidate = literalSrcDir[2]
|
|
29
|
+
.replace(/\\/g, '/')
|
|
30
|
+
.replace(/^\.\//, '')
|
|
31
|
+
.replace(/\/+$/, '');
|
|
32
|
+
const normalized = path.posix.normalize(candidate);
|
|
33
|
+
if (normalized !== '..' && !normalized.startsWith('../') && !path.isAbsolute(normalized)) {
|
|
34
|
+
appDir = normalized === '.' ? '' : normalized;
|
|
35
|
+
}
|
|
36
|
+
} else if (
|
|
37
|
+
fs.existsSync(path.join(cwd, 'app', 'app.vue'))
|
|
38
|
+
|| fs.existsSync(path.join(cwd, 'app', 'pages'))
|
|
39
|
+
) {
|
|
40
|
+
appDir = 'app';
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const pluginFile = [appDir, 'plugins', NUXT_PLUGIN_NAME].filter(Boolean).join('/');
|
|
44
|
+
return { configFile, appDir, pluginFile };
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export function buildNuxtPlugin(port, token) {
|
|
48
|
+
return `/* ${NUXT_PLUGIN_MARKER} */
|
|
49
|
+
const liveSrc = '${buildLiveScriptSrc(port, token)}';
|
|
50
|
+
const liveSelector = 'script[data-impeccable-live-nuxt]';
|
|
51
|
+
|
|
52
|
+
export default defineNuxtPlugin(() => {
|
|
53
|
+
if (!import.meta.dev || typeof document === 'undefined') return;
|
|
54
|
+
|
|
55
|
+
const expectedSrc = new URL(liveSrc, window.location.href).href;
|
|
56
|
+
let script = document.querySelector(liveSelector);
|
|
57
|
+
if (script?.src === expectedSrc) return;
|
|
58
|
+
script?.remove();
|
|
59
|
+
|
|
60
|
+
script = document.createElement('script');
|
|
61
|
+
script.src = liveSrc;
|
|
62
|
+
script.async = true;
|
|
63
|
+
script.dataset.impeccableLiveNuxt = '';
|
|
64
|
+
document.head.appendChild(script);
|
|
65
|
+
|
|
66
|
+
import.meta.hot?.dispose(() => {
|
|
67
|
+
if (script?.isConnected) script.remove();
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
/* /${NUXT_PLUGIN_MARKER} */
|
|
71
|
+
`;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export function applyNuxtLiveAdapter({ cwd = process.cwd(), port, token, project = detectNuxtProject(cwd) }) {
|
|
75
|
+
if (!project) return { error: 'nuxt_not_detected' };
|
|
76
|
+
let absFile;
|
|
77
|
+
try {
|
|
78
|
+
absFile = resolveProjectPath(cwd, project.pluginFile);
|
|
79
|
+
} catch (error) {
|
|
80
|
+
return { file: project.pluginFile, error: 'unsafe_nuxt_plugin_path', hint: error.message };
|
|
81
|
+
}
|
|
82
|
+
const existing = fs.existsSync(absFile) ? fs.readFileSync(absFile, 'utf-8') : null;
|
|
83
|
+
if (existing !== null && !existing.includes(NUXT_PLUGIN_MARKER)) {
|
|
84
|
+
return {
|
|
85
|
+
file: project.pluginFile,
|
|
86
|
+
error: 'nuxt_plugin_conflict',
|
|
87
|
+
hint: `${project.pluginFile} already exists and is not managed by Impeccable Live`,
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const content = buildNuxtPlugin(port, token);
|
|
92
|
+
if (content !== existing) writeProjectFileAtomic(cwd, project.pluginFile, content);
|
|
93
|
+
return {
|
|
94
|
+
file: project.pluginFile,
|
|
95
|
+
inserted: true,
|
|
96
|
+
changed: content !== existing,
|
|
97
|
+
devOnly: true,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export function removeNuxtLiveAdapter({ cwd = process.cwd(), project = detectNuxtProject(cwd) }) {
|
|
102
|
+
if (!project) return { error: 'nuxt_not_detected' };
|
|
103
|
+
let absFile;
|
|
104
|
+
try {
|
|
105
|
+
absFile = resolveProjectPath(cwd, project.pluginFile);
|
|
106
|
+
} catch (error) {
|
|
107
|
+
return { file: project.pluginFile, removed: false, error: 'unsafe_nuxt_plugin_path', hint: error.message };
|
|
108
|
+
}
|
|
109
|
+
if (!fs.existsSync(absFile)) {
|
|
110
|
+
return { file: project.pluginFile, removed: false, note: 'no adapter present' };
|
|
111
|
+
}
|
|
112
|
+
const content = fs.readFileSync(absFile, 'utf-8');
|
|
113
|
+
if (!content.includes(NUXT_PLUGIN_MARKER)) {
|
|
114
|
+
return {
|
|
115
|
+
file: project.pluginFile,
|
|
116
|
+
removed: false,
|
|
117
|
+
error: 'nuxt_plugin_conflict',
|
|
118
|
+
hint: `${project.pluginFile} is not managed by Impeccable Live`,
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
fs.unlinkSync(absFile);
|
|
122
|
+
const pluginDir = path.dirname(absFile);
|
|
123
|
+
if (fs.readdirSync(pluginDir).length === 0) fs.rmdirSync(pluginDir);
|
|
124
|
+
return { file: project.pluginFile, removed: true };
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export const nuxt = {
|
|
128
|
+
name: 'nuxt',
|
|
129
|
+
|
|
130
|
+
detect(cwd) {
|
|
131
|
+
return detectNuxtProject(cwd);
|
|
132
|
+
},
|
|
133
|
+
|
|
134
|
+
inject: {
|
|
135
|
+
kind: 'adapter',
|
|
136
|
+
|
|
137
|
+
apply({ cwd, port, token, project }) {
|
|
138
|
+
return applyNuxtLiveAdapter({ cwd, port, token, project });
|
|
139
|
+
},
|
|
140
|
+
|
|
141
|
+
remove({ cwd, project }) {
|
|
142
|
+
return removeNuxtLiveAdapter({ cwd, project });
|
|
143
|
+
},
|
|
144
|
+
|
|
145
|
+
// The plugin path depends on the resolved srcDir, so it cannot live in the
|
|
146
|
+
// static ignore list the way the SvelteKit paths do.
|
|
147
|
+
ignorePatterns(project) {
|
|
148
|
+
return project?.pluginFile ? [project.pluginFile] : [];
|
|
149
|
+
},
|
|
150
|
+
|
|
151
|
+
artifacts({ project }) {
|
|
152
|
+
if (!project?.pluginFile) return [];
|
|
153
|
+
return [{
|
|
154
|
+
kind: 'created',
|
|
155
|
+
path: project.pluginFile,
|
|
156
|
+
marker: NUXT_PLUGIN_MARKER,
|
|
157
|
+
// Mirrors removeNuxtLiveAdapter: the generated `plugins/` directory
|
|
158
|
+
// goes when it empties, its parent stays.
|
|
159
|
+
pruneTo: path.posix.dirname(path.posix.dirname(project.pluginFile)),
|
|
160
|
+
}];
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
|
|
164
|
+
source: {
|
|
165
|
+
extensions: ['.vue'],
|
|
166
|
+
preview: 'source',
|
|
167
|
+
styleMode: 'scoped',
|
|
168
|
+
commentSyntax: 'html',
|
|
169
|
+
},
|
|
170
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one place that builds the `/live.js` URL the browser loads.
|
|
3
|
+
*
|
|
4
|
+
* Every injection path needs it (the generic script tag, the Nuxt client
|
|
5
|
+
* plugin, the SvelteKit root component, the TanStack mount component), and a
|
|
6
|
+
* separate module keeps that shared leaf free of import cycles: the framework
|
|
7
|
+
* entries import it, and nothing here imports a framework entry.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* When a token is supplied it rides as a `?token=...` query param so the
|
|
12
|
+
* server's token-gated /live.js handler authorizes the fetch.
|
|
13
|
+
*/
|
|
14
|
+
export function buildLiveScriptSrc(port, token) {
|
|
15
|
+
const parsedPort = Number(port);
|
|
16
|
+
if (!Number.isInteger(parsedPort) || parsedPort < 1 || parsedPort > 65_535) {
|
|
17
|
+
throw new Error('live script port must be an integer from 1 to 65535');
|
|
18
|
+
}
|
|
19
|
+
if (token !== undefined && token !== null) {
|
|
20
|
+
if (typeof token !== 'string' || token.length === 0 || token.length > 512 || /[\u0000-\u001f\u007f-\u009f]/u.test(token)) {
|
|
21
|
+
throw new Error('live script token must be a non-empty bounded string without control characters');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const base = `http://localhost:${parsedPort}/live.js`;
|
|
25
|
+
return token ? `${base}?token=${encodeURIComponent(token).replaceAll("'", '%27')}` : base;
|
|
26
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static HTML registry entry: the terminal fallback.
|
|
3
|
+
*
|
|
4
|
+
* Hand-written pages, a multi-page site emitted by a generator, anything with
|
|
5
|
+
* no bundler config at the app root. `detect` always matches, so this entry
|
|
6
|
+
* must stay last in FRAMEWORKS. Its behavior is the plain tag strategy, which
|
|
7
|
+
* is what live-inject.mjs did for every unrecognized project before the
|
|
8
|
+
* registry existed.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export const staticHtml = {
|
|
12
|
+
name: 'static-html',
|
|
13
|
+
|
|
14
|
+
detect() {
|
|
15
|
+
return { via: 'fallback' };
|
|
16
|
+
},
|
|
17
|
+
|
|
18
|
+
inject: { kind: 'tag' },
|
|
19
|
+
|
|
20
|
+
source: {
|
|
21
|
+
extensions: ['.html', '.htm'],
|
|
22
|
+
preview: 'source',
|
|
23
|
+
styleMode: 'scoped',
|
|
24
|
+
commentSyntax: 'html',
|
|
25
|
+
},
|
|
26
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SvelteKit registry entry.
|
|
3
|
+
*
|
|
4
|
+
* Detection and the apply/remove pair are the existing adapter's
|
|
5
|
+
* (`../sveltekit-adapter.mjs`); this file only declares them to the registry
|
|
6
|
+
* and names the artifacts the journal has to be able to heal.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import {
|
|
10
|
+
SVELTE_LAYOUT_MARKER_OPEN,
|
|
11
|
+
SVELTE_LIVE_ROOT_COMPONENT,
|
|
12
|
+
applySvelteKitLiveAdapter,
|
|
13
|
+
detectSvelteKitProject,
|
|
14
|
+
removeSvelteKitLiveAdapter,
|
|
15
|
+
unpatchSvelteLayout,
|
|
16
|
+
} from '../sveltekit-adapter.mjs';
|
|
17
|
+
|
|
18
|
+
export const sveltekit = {
|
|
19
|
+
name: 'sveltekit',
|
|
20
|
+
|
|
21
|
+
detect(cwd, config) {
|
|
22
|
+
return detectSvelteKitProject(cwd, config);
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
inject: {
|
|
26
|
+
kind: 'adapter',
|
|
27
|
+
|
|
28
|
+
apply({ cwd, port, token, config }) {
|
|
29
|
+
return applySvelteKitLiveAdapter({ cwd, port, token, config });
|
|
30
|
+
},
|
|
31
|
+
|
|
32
|
+
remove({ cwd, config }) {
|
|
33
|
+
return removeSvelteKitLiveAdapter({ cwd, config });
|
|
34
|
+
},
|
|
35
|
+
|
|
36
|
+
// The generated root component and the `src/lib/impeccable/` runtime paths
|
|
37
|
+
// are already in the static LIVE_IGNORE_PATTERNS list, so nothing extra.
|
|
38
|
+
ignorePatterns() {
|
|
39
|
+
return [];
|
|
40
|
+
},
|
|
41
|
+
|
|
42
|
+
artifacts({ project }) {
|
|
43
|
+
return [
|
|
44
|
+
{
|
|
45
|
+
kind: 'created',
|
|
46
|
+
path: SVELTE_LIVE_ROOT_COMPONENT,
|
|
47
|
+
marker: 'impeccable-live-root',
|
|
48
|
+
pruneTo: 'src',
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
kind: 'patched',
|
|
52
|
+
path: project?.layoutFile || 'src/routes/+layout.svelte',
|
|
53
|
+
patch: 'sveltekit-layout',
|
|
54
|
+
markers: [SVELTE_LAYOUT_MARKER_OPEN],
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
unpatch: {
|
|
60
|
+
'sveltekit-layout': unpatchSvelteLayout,
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
source: {
|
|
65
|
+
extensions: ['.svelte'],
|
|
66
|
+
// Svelte resets component-local state on markup HMR updates, so variants
|
|
67
|
+
// are mounted from generated components rather than written into the route.
|
|
68
|
+
preview: 'component',
|
|
69
|
+
commentSyntax: 'html',
|
|
70
|
+
},
|
|
71
|
+
};
|