@bastani/atomic 0.7.17 → 0.8.0
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 +4200 -0
- package/README.md +655 -0
- package/dist/builtin/intercom/CHANGELOG.md +195 -0
- package/dist/builtin/intercom/LICENSE +21 -0
- package/dist/builtin/intercom/README.md +484 -0
- package/dist/builtin/intercom/broker/broker.ts +346 -0
- package/dist/builtin/intercom/broker/client.ts +535 -0
- package/dist/builtin/intercom/broker/framing.ts +57 -0
- package/dist/builtin/intercom/broker/paths.ts +21 -0
- package/dist/builtin/intercom/broker/spawn.ts +308 -0
- package/dist/builtin/intercom/config.ts +109 -0
- package/dist/builtin/intercom/index.ts +1780 -0
- package/dist/builtin/intercom/package.json +59 -0
- package/dist/builtin/intercom/reply-tracker.ts +102 -0
- package/dist/builtin/intercom/skills/intercom/SKILL.md +513 -0
- package/dist/builtin/intercom/types.ts +46 -0
- package/dist/builtin/intercom/ui/compose.ts +139 -0
- package/dist/builtin/intercom/ui/inline-message.ts +76 -0
- package/dist/builtin/intercom/ui/session-list.ts +162 -0
- package/dist/builtin/mcp/CHANGELOG.md +346 -0
- package/dist/builtin/mcp/LICENSE +21 -0
- package/dist/builtin/mcp/OAUTH.md +324 -0
- package/dist/builtin/mcp/README.md +373 -0
- package/dist/builtin/mcp/agent-dir.ts +21 -0
- package/dist/builtin/mcp/app-bridge.bundle.js +67 -0
- package/dist/builtin/mcp/cli.js +186 -0
- package/dist/builtin/mcp/commands.ts +420 -0
- package/dist/builtin/mcp/config.ts +667 -0
- package/dist/builtin/mcp/consent-manager.ts +64 -0
- package/dist/builtin/mcp/direct-tools.ts +427 -0
- package/dist/builtin/mcp/errors.ts +219 -0
- package/dist/builtin/mcp/glimpse-ui.ts +80 -0
- package/dist/builtin/mcp/host-html-template.ts +427 -0
- package/dist/builtin/mcp/index.ts +334 -0
- package/dist/builtin/mcp/init.ts +336 -0
- package/dist/builtin/mcp/lifecycle.ts +93 -0
- package/dist/builtin/mcp/logger.ts +169 -0
- package/dist/builtin/mcp/mcp-auth-flow.ts +362 -0
- package/dist/builtin/mcp/mcp-auth.ts +297 -0
- package/dist/builtin/mcp/mcp-callback-server.ts +284 -0
- package/dist/builtin/mcp/mcp-oauth-provider.ts +302 -0
- package/dist/builtin/mcp/mcp-panel.ts +826 -0
- package/dist/builtin/mcp/mcp-setup-panel.ts +577 -0
- package/dist/builtin/mcp/metadata-cache.ts +201 -0
- package/dist/builtin/mcp/npx-resolver.ts +424 -0
- package/dist/builtin/mcp/oauth-handler.ts +60 -0
- package/dist/builtin/mcp/onboarding-state.ts +68 -0
- package/dist/builtin/mcp/package.json +61 -0
- package/dist/builtin/mcp/proxy-modes.ts +803 -0
- package/dist/builtin/mcp/resource-tools.ts +17 -0
- package/dist/builtin/mcp/sampling-handler.ts +268 -0
- package/dist/builtin/mcp/server-manager.ts +375 -0
- package/dist/builtin/mcp/state.ts +41 -0
- package/dist/builtin/mcp/tool-metadata.ts +152 -0
- package/dist/builtin/mcp/tool-registrar.ts +46 -0
- package/dist/builtin/mcp/tool-result-renderer.ts +65 -0
- package/dist/builtin/mcp/types.ts +441 -0
- package/dist/builtin/mcp/ui-resource-handler.ts +145 -0
- package/dist/builtin/mcp/ui-server.ts +623 -0
- package/dist/builtin/mcp/ui-session.ts +384 -0
- package/dist/builtin/mcp/ui-stream-types.ts +89 -0
- package/dist/builtin/mcp/utils.ts +129 -0
- package/dist/builtin/subagents/CHANGELOG.md +1019 -0
- package/dist/builtin/subagents/README.md +991 -0
- package/dist/builtin/subagents/agents/code-simplifier.md +84 -0
- package/dist/builtin/subagents/agents/codebase-analyzer.md +158 -0
- package/dist/builtin/subagents/agents/codebase-locator.md +113 -0
- package/dist/builtin/subagents/agents/codebase-online-researcher.md +317 -0
- package/dist/builtin/subagents/agents/codebase-pattern-finder.md +236 -0
- package/dist/builtin/subagents/agents/codebase-research-analyzer.md +181 -0
- package/dist/builtin/subagents/agents/codebase-research-locator.md +146 -0
- package/dist/builtin/subagents/agents/debugger.md +92 -0
- package/dist/builtin/subagents/package.json +67 -0
- package/dist/builtin/subagents/prompts/gather-context-and-clarify.md +20 -0
- package/dist/builtin/subagents/prompts/parallel-cleanup.md +60 -0
- package/dist/builtin/subagents/prompts/parallel-context-build.md +55 -0
- package/dist/builtin/subagents/prompts/parallel-handoff-plan.md +77 -0
- package/dist/builtin/subagents/prompts/parallel-research.md +58 -0
- package/dist/builtin/subagents/prompts/parallel-review.md +52 -0
- package/dist/builtin/subagents/prompts/review-loop.md +48 -0
- package/dist/builtin/subagents/skills/subagent/SKILL.md +734 -0
- package/dist/builtin/subagents/src/agents/agent-management.ts +644 -0
- package/dist/builtin/subagents/src/agents/agent-scope.ts +6 -0
- package/dist/builtin/subagents/src/agents/agent-selection.ts +23 -0
- package/dist/builtin/subagents/src/agents/agent-serializer.ts +84 -0
- package/dist/builtin/subagents/src/agents/agents.ts +809 -0
- package/dist/builtin/subagents/src/agents/chain-serializer.ts +137 -0
- package/dist/builtin/subagents/src/agents/frontmatter.ts +29 -0
- package/dist/builtin/subagents/src/agents/identity.ts +30 -0
- package/dist/builtin/subagents/src/agents/skills.ts +630 -0
- package/dist/builtin/subagents/src/extension/control-notices.ts +92 -0
- package/dist/builtin/subagents/src/extension/doctor.ts +199 -0
- package/dist/builtin/subagents/src/extension/index.ts +586 -0
- package/dist/builtin/subagents/src/extension/schemas.ts +168 -0
- package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +378 -0
- package/dist/builtin/subagents/src/intercom/result-intercom.ts +269 -0
- package/dist/builtin/subagents/src/runs/background/async-execution.ts +612 -0
- package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +267 -0
- package/dist/builtin/subagents/src/runs/background/async-resume.ts +332 -0
- package/dist/builtin/subagents/src/runs/background/async-status.ts +295 -0
- package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +63 -0
- package/dist/builtin/subagents/src/runs/background/notify.ts +108 -0
- package/dist/builtin/subagents/src/runs/background/parallel-groups.ts +45 -0
- package/dist/builtin/subagents/src/runs/background/result-watcher.ts +250 -0
- package/dist/builtin/subagents/src/runs/background/run-status.ts +193 -0
- package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +291 -0
- package/dist/builtin/subagents/src/runs/background/subagent-runner.ts +1760 -0
- package/dist/builtin/subagents/src/runs/background/top-level-async.ts +13 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-clarify.ts +1333 -0
- package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +932 -0
- package/dist/builtin/subagents/src/runs/foreground/execution.ts +902 -0
- package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +2231 -0
- package/dist/builtin/subagents/src/runs/shared/completion-guard.ts +125 -0
- package/dist/builtin/subagents/src/runs/shared/long-running-guard.ts +175 -0
- package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +103 -0
- package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +108 -0
- package/dist/builtin/subagents/src/runs/shared/pi-args.ts +163 -0
- package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +115 -0
- package/dist/builtin/subagents/src/runs/shared/run-history.ts +56 -0
- package/dist/builtin/subagents/src/runs/shared/single-output.ts +154 -0
- package/dist/builtin/subagents/src/runs/shared/subagent-control.ts +226 -0
- package/dist/builtin/subagents/src/runs/shared/subagent-prompt-runtime.ts +152 -0
- package/dist/builtin/subagents/src/runs/shared/worktree.ts +577 -0
- package/dist/builtin/subagents/src/shared/artifacts.ts +99 -0
- package/dist/builtin/subagents/src/shared/atomic-json.ts +16 -0
- package/dist/builtin/subagents/src/shared/file-coalescer.ts +40 -0
- package/dist/builtin/subagents/src/shared/fork-context.ts +76 -0
- package/dist/builtin/subagents/src/shared/formatters.ts +133 -0
- package/dist/builtin/subagents/src/shared/jsonl-writer.ts +81 -0
- package/dist/builtin/subagents/src/shared/model-info.ts +78 -0
- package/dist/builtin/subagents/src/shared/post-exit-stdio-guard.ts +85 -0
- package/dist/builtin/subagents/src/shared/session-identity.ts +10 -0
- package/dist/builtin/subagents/src/shared/session-tokens.ts +44 -0
- package/dist/builtin/subagents/src/shared/settings.ts +397 -0
- package/dist/builtin/subagents/src/shared/status-format.ts +49 -0
- package/dist/builtin/subagents/src/shared/types.ts +732 -0
- package/dist/builtin/subagents/src/shared/utils.ts +440 -0
- package/dist/builtin/subagents/src/slash/prompt-template-bridge.ts +397 -0
- package/dist/builtin/subagents/src/slash/slash-bridge.ts +174 -0
- package/dist/builtin/subagents/src/slash/slash-commands.ts +528 -0
- package/dist/builtin/subagents/src/slash/slash-live-state.ts +292 -0
- package/dist/builtin/subagents/src/tui/render-helpers.ts +80 -0
- package/dist/builtin/subagents/src/tui/render.ts +1257 -0
- package/dist/builtin/web-access/CHANGELOG.md +387 -0
- package/dist/builtin/web-access/LICENSE +21 -0
- package/dist/builtin/web-access/README.md +346 -0
- package/dist/builtin/web-access/activity.ts +101 -0
- package/dist/builtin/web-access/chrome-cookies.ts +322 -0
- package/dist/builtin/web-access/code-search.ts +107 -0
- package/dist/builtin/web-access/curator-page.ts +3359 -0
- package/dist/builtin/web-access/curator-server.ts +605 -0
- package/dist/builtin/web-access/exa.ts +521 -0
- package/dist/builtin/web-access/extract.ts +701 -0
- package/dist/builtin/web-access/gemini-api.ts +113 -0
- package/dist/builtin/web-access/gemini-search.ts +362 -0
- package/dist/builtin/web-access/gemini-url-context.ts +126 -0
- package/dist/builtin/web-access/gemini-web-config.ts +54 -0
- package/dist/builtin/web-access/gemini-web.ts +396 -0
- package/dist/builtin/web-access/github-api.ts +196 -0
- package/dist/builtin/web-access/github-extract.ts +635 -0
- package/dist/builtin/web-access/index.ts +2347 -0
- package/dist/builtin/web-access/package.json +54 -0
- package/dist/builtin/web-access/pdf-extract.ts +192 -0
- package/dist/builtin/web-access/perplexity.ts +196 -0
- package/dist/builtin/web-access/rsc-extract.ts +338 -0
- package/dist/builtin/web-access/storage.ts +72 -0
- package/dist/builtin/web-access/summary-review.ts +276 -0
- package/dist/builtin/web-access/utils.ts +44 -0
- package/dist/builtin/web-access/video-extract.ts +379 -0
- package/dist/builtin/web-access/youtube-extract.ts +311 -0
- package/dist/builtin/workflows/CHANGELOG.md +20 -0
- package/dist/builtin/workflows/README.md +323 -0
- package/dist/builtin/workflows/builtin/deep-research-codebase.ts +567 -0
- package/dist/builtin/workflows/builtin/index.ts +10 -0
- package/dist/builtin/workflows/builtin/open-claude-design.ts +985 -0
- package/dist/builtin/workflows/builtin/ralph.ts +613 -0
- package/dist/builtin/workflows/package.json +89 -0
- package/dist/builtin/workflows/skills/create-spec/SKILL.md +247 -0
- package/dist/builtin/workflows/skills/impeccable/SKILL.md +173 -0
- package/dist/builtin/workflows/skills/impeccable/reference/adapt.md +190 -0
- package/dist/builtin/workflows/skills/impeccable/reference/animate.md +175 -0
- package/dist/builtin/workflows/skills/impeccable/reference/audit.md +133 -0
- package/dist/builtin/workflows/skills/impeccable/reference/bolder.md +113 -0
- package/dist/builtin/workflows/skills/impeccable/reference/brand.md +118 -0
- package/dist/builtin/workflows/skills/impeccable/reference/clarify.md +174 -0
- package/dist/builtin/workflows/skills/impeccable/reference/codex.md +105 -0
- package/dist/builtin/workflows/skills/impeccable/reference/cognitive-load.md +106 -0
- package/dist/builtin/workflows/skills/impeccable/reference/color-and-contrast.md +105 -0
- package/dist/builtin/workflows/skills/impeccable/reference/colorize.md +154 -0
- package/dist/builtin/workflows/skills/impeccable/reference/craft.md +123 -0
- package/dist/builtin/workflows/skills/impeccable/reference/critique.md +261 -0
- package/dist/builtin/workflows/skills/impeccable/reference/delight.md +302 -0
- package/dist/builtin/workflows/skills/impeccable/reference/distill.md +111 -0
- package/dist/builtin/workflows/skills/impeccable/reference/document.md +427 -0
- package/dist/builtin/workflows/skills/impeccable/reference/extract.md +69 -0
- package/dist/builtin/workflows/skills/impeccable/reference/harden.md +347 -0
- package/dist/builtin/workflows/skills/impeccable/reference/heuristics-scoring.md +234 -0
- package/dist/builtin/workflows/skills/impeccable/reference/interaction-design.md +195 -0
- package/dist/builtin/workflows/skills/impeccable/reference/layout.md +141 -0
- package/dist/builtin/workflows/skills/impeccable/reference/live.md +622 -0
- package/dist/builtin/workflows/skills/impeccable/reference/motion-design.md +109 -0
- package/dist/builtin/workflows/skills/impeccable/reference/onboard.md +234 -0
- package/dist/builtin/workflows/skills/impeccable/reference/optimize.md +258 -0
- package/dist/builtin/workflows/skills/impeccable/reference/overdrive.md +130 -0
- package/dist/builtin/workflows/skills/impeccable/reference/personas.md +179 -0
- package/dist/builtin/workflows/skills/impeccable/reference/polish.md +242 -0
- package/dist/builtin/workflows/skills/impeccable/reference/product.md +62 -0
- package/dist/builtin/workflows/skills/impeccable/reference/quieter.md +99 -0
- package/dist/builtin/workflows/skills/impeccable/reference/responsive-design.md +114 -0
- package/dist/builtin/workflows/skills/impeccable/reference/shape.md +165 -0
- package/dist/builtin/workflows/skills/impeccable/reference/spatial-design.md +100 -0
- package/dist/builtin/workflows/skills/impeccable/reference/teach.md +156 -0
- package/dist/builtin/workflows/skills/impeccable/reference/typeset.md +124 -0
- package/dist/builtin/workflows/skills/impeccable/reference/typography.md +159 -0
- package/dist/builtin/workflows/skills/impeccable/reference/ux-writing.md +107 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/cleanup-deprecated.mjs +284 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/command-metadata.json +94 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/critique-storage.mjs +226 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/design-parser.mjs +820 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/impeccable-paths.mjs +110 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/is-generated.mjs +69 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +646 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-browser-session.js +123 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +4865 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-complete.mjs +75 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-completion.mjs +18 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-inject.mjs +446 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-poll.mjs +200 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-resume.mjs +48 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +847 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-session-store.mjs +254 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-status.mjs +47 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live-wrap.mjs +632 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/live.mjs +247 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/load-context.mjs +141 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/dist/builtin/workflows/skills/impeccable/scripts/pin.mjs +214 -0
- package/dist/builtin/workflows/skills/playwright-cli/SKILL.md +392 -0
- package/dist/builtin/workflows/skills/playwright-cli/references/element-attributes.md +23 -0
- package/dist/builtin/workflows/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/dist/builtin/workflows/skills/playwright-cli/references/request-mocking.md +87 -0
- package/dist/builtin/workflows/skills/playwright-cli/references/running-code.md +241 -0
- package/dist/builtin/workflows/skills/playwright-cli/references/session-management.md +225 -0
- package/dist/builtin/workflows/skills/playwright-cli/references/spec-driven-testing.md +305 -0
- package/dist/builtin/workflows/skills/playwright-cli/references/storage-state.md +275 -0
- package/dist/builtin/workflows/skills/playwright-cli/references/test-generation.md +134 -0
- package/dist/builtin/workflows/skills/playwright-cli/references/tracing.md +139 -0
- package/dist/builtin/workflows/skills/playwright-cli/references/video-recording.md +143 -0
- package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +263 -0
- package/dist/builtin/workflows/skills/prompt-engineer/references/advanced_patterns.md +271 -0
- package/dist/builtin/workflows/skills/prompt-engineer/references/core_prompting.md +137 -0
- package/dist/builtin/workflows/skills/prompt-engineer/references/quality_improvement.md +193 -0
- package/dist/builtin/workflows/skills/research-codebase/SKILL.md +226 -0
- package/dist/builtin/workflows/skills/tdd/SKILL.md +109 -0
- package/dist/builtin/workflows/skills/tdd/deep-modules.md +33 -0
- package/dist/builtin/workflows/skills/tdd/interface-design.md +31 -0
- package/dist/builtin/workflows/skills/tdd/mocking.md +59 -0
- package/dist/builtin/workflows/skills/tdd/refactoring.md +10 -0
- package/dist/builtin/workflows/skills/tdd/tests.md +61 -0
- package/dist/builtin/workflows/skills/workflow/SKILL.md +255 -0
- package/dist/builtin/workflows/skills/workflow/references/context-engineering/advanced-evaluation.md +404 -0
- package/dist/builtin/workflows/skills/workflow/references/context-engineering/bdi-mental-states.md +313 -0
- package/dist/builtin/workflows/skills/workflow/references/context-engineering/context-compression.md +274 -0
- package/dist/builtin/workflows/skills/workflow/references/context-engineering/context-degradation.md +208 -0
- package/dist/builtin/workflows/skills/workflow/references/context-engineering/context-fundamentals.md +203 -0
- package/dist/builtin/workflows/skills/workflow/references/context-engineering/context-optimization.md +197 -0
- package/dist/builtin/workflows/skills/workflow/references/context-engineering/evaluation.md +253 -0
- package/dist/builtin/workflows/skills/workflow/references/context-engineering/filesystem-context.md +289 -0
- package/dist/builtin/workflows/skills/workflow/references/context-engineering/hosted-agents.md +262 -0
- package/dist/builtin/workflows/skills/workflow/references/context-engineering/memory-systems.md +221 -0
- package/dist/builtin/workflows/skills/workflow/references/context-engineering/multi-agent-patterns.md +259 -0
- package/dist/builtin/workflows/skills/workflow/references/context-engineering/project-development.md +293 -0
- package/dist/builtin/workflows/skills/workflow/references/context-engineering/tool-design.md +273 -0
- package/dist/builtin/workflows/skills/workflow/references/context-engineering.md +23 -0
- package/dist/builtin/workflows/skills/workflow/references/design-checklist.md +79 -0
- package/dist/builtin/workflows/skills/workflow/references/running-workflows.md +107 -0
- package/dist/builtin/workflows/skills/workflow/references/sdk-authoring.md +140 -0
- package/dist/builtin/workflows/src/extension/background-ui-adapter.ts +168 -0
- package/dist/builtin/workflows/src/extension/companions.ts +210 -0
- package/dist/builtin/workflows/src/extension/config-loader.ts +493 -0
- package/dist/builtin/workflows/src/extension/discovery.ts +501 -0
- package/dist/builtin/workflows/src/extension/dispatcher.ts +173 -0
- package/dist/builtin/workflows/src/extension/index.ts +2143 -0
- package/dist/builtin/workflows/src/extension/mcp.ts +110 -0
- package/dist/builtin/workflows/src/extension/render-call.ts +39 -0
- package/dist/builtin/workflows/src/extension/render-result.ts +214 -0
- package/dist/builtin/workflows/src/extension/renderers.ts +87 -0
- package/dist/builtin/workflows/src/extension/runtime.ts +360 -0
- package/dist/builtin/workflows/src/extension/status-writer.ts +167 -0
- package/dist/builtin/workflows/src/extension/wiring.ts +555 -0
- package/dist/builtin/workflows/src/extension/workflow-schema.ts +102 -0
- package/dist/builtin/workflows/src/index.ts +25 -0
- package/dist/builtin/workflows/src/intercom/intercom-bridge.ts +93 -0
- package/dist/builtin/workflows/src/intercom/intercom-routing.ts +125 -0
- package/dist/builtin/workflows/src/intercom/result-intercom.ts +240 -0
- package/dist/builtin/workflows/src/runs/background/cancellation-registry.ts +113 -0
- package/dist/builtin/workflows/src/runs/background/job-tracker.ts +81 -0
- package/dist/builtin/workflows/src/runs/background/runner.ts +152 -0
- package/dist/builtin/workflows/src/runs/background/status.ts +354 -0
- package/dist/builtin/workflows/src/runs/foreground/executor.ts +1522 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +233 -0
- package/dist/builtin/workflows/src/runs/foreground/stage-runner.ts +712 -0
- package/dist/builtin/workflows/src/runs/shared/concurrency.ts +76 -0
- package/dist/builtin/workflows/src/runs/shared/graph-inference.ts +69 -0
- package/dist/builtin/workflows/src/runs/shared/model-fallback.ts +293 -0
- package/dist/builtin/workflows/src/runs/shared/validate-inputs.ts +83 -0
- package/dist/builtin/workflows/src/runs/shared/workflow-runner.ts +170 -0
- package/dist/builtin/workflows/src/runs/shared/worktree.ts +577 -0
- package/dist/builtin/workflows/src/shared/persistence-compaction-policy.ts +72 -0
- package/dist/builtin/workflows/src/shared/persistence-restore.ts +257 -0
- package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +145 -0
- package/dist/builtin/workflows/src/shared/render-inputs-schema.ts +196 -0
- package/dist/builtin/workflows/src/shared/store-types.ts +160 -0
- package/dist/builtin/workflows/src/shared/store.ts +579 -0
- package/dist/builtin/workflows/src/shared/types.ts +566 -0
- package/dist/builtin/workflows/src/tui/chat-surface-message.ts +224 -0
- package/dist/builtin/workflows/src/tui/chat-surface.ts +511 -0
- package/dist/builtin/workflows/src/tui/color-utils.ts +64 -0
- package/dist/builtin/workflows/src/tui/connectors.ts +88 -0
- package/dist/builtin/workflows/src/tui/dispatch-confirm.ts +307 -0
- package/dist/builtin/workflows/src/tui/edge.ts +24 -0
- package/dist/builtin/workflows/src/tui/graph-canvas.ts +108 -0
- package/dist/builtin/workflows/src/tui/graph-theme.ts +283 -0
- package/dist/builtin/workflows/src/tui/graph-view.ts +1217 -0
- package/dist/builtin/workflows/src/tui/header.ts +172 -0
- package/dist/builtin/workflows/src/tui/inline-form-card.ts +421 -0
- package/dist/builtin/workflows/src/tui/inline-form-editor.ts +638 -0
- package/dist/builtin/workflows/src/tui/inline-form-overlay.ts +326 -0
- package/dist/builtin/workflows/src/tui/inline-form-store.ts +78 -0
- package/dist/builtin/workflows/src/tui/inputs-overlay.ts +163 -0
- package/dist/builtin/workflows/src/tui/inputs-picker.ts +888 -0
- package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +154 -0
- package/dist/builtin/workflows/src/tui/layout.ts +153 -0
- package/dist/builtin/workflows/src/tui/node-card.ts +274 -0
- package/dist/builtin/workflows/src/tui/overlay-adapter.ts +277 -0
- package/dist/builtin/workflows/src/tui/prompt-card.ts +501 -0
- package/dist/builtin/workflows/src/tui/renderers.ts +15 -0
- package/dist/builtin/workflows/src/tui/run-detail.ts +339 -0
- package/dist/builtin/workflows/src/tui/session-confirm.ts +202 -0
- package/dist/builtin/workflows/src/tui/session-list.ts +32 -0
- package/dist/builtin/workflows/src/tui/session-overlays.ts +239 -0
- package/dist/builtin/workflows/src/tui/session-picker.ts +399 -0
- package/dist/builtin/workflows/src/tui/stage-chat-view.ts +1873 -0
- package/dist/builtin/workflows/src/tui/status-helpers.ts +73 -0
- package/dist/builtin/workflows/src/tui/status-list.ts +361 -0
- package/dist/builtin/workflows/src/tui/store-widget-installer.ts +206 -0
- package/dist/builtin/workflows/src/tui/switcher.ts +121 -0
- package/dist/builtin/workflows/src/tui/text-helpers.ts +31 -0
- package/dist/builtin/workflows/src/tui/toast.ts +106 -0
- package/dist/builtin/workflows/src/tui/widget.ts +348 -0
- package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +285 -0
- package/dist/builtin/workflows/src/tui/workflow-list.ts +224 -0
- package/dist/builtin/workflows/src/workflows/define-workflow.ts +150 -0
- package/dist/builtin/workflows/src/workflows/identity.ts +39 -0
- package/dist/builtin/workflows/src/workflows/registry.ts +113 -0
- package/dist/bun/cli.d.ts +3 -0
- package/dist/bun/cli.d.ts.map +1 -0
- package/dist/bun/cli.js +9 -0
- package/dist/bun/cli.js.map +1 -0
- package/dist/bun/register-bedrock.d.ts +2 -0
- package/dist/bun/register-bedrock.d.ts.map +1 -0
- package/dist/bun/register-bedrock.js +4 -0
- package/dist/bun/register-bedrock.js.map +1 -0
- package/dist/bun/restore-sandbox-env.d.ts +13 -0
- package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
- package/dist/bun/restore-sandbox-env.js +32 -0
- package/dist/bun/restore-sandbox-env.js.map +1 -0
- package/dist/cli/args.d.ts +53 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +341 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/config-selector.d.ts +14 -0
- package/dist/cli/config-selector.d.ts.map +1 -0
- package/dist/cli/config-selector.js +31 -0
- package/dist/cli/config-selector.js.map +1 -0
- package/dist/cli/file-processor.d.ts +15 -0
- package/dist/cli/file-processor.d.ts.map +1 -0
- package/dist/cli/file-processor.js +83 -0
- package/dist/cli/file-processor.js.map +1 -0
- package/dist/cli/initial-message.d.ts +18 -0
- package/dist/cli/initial-message.d.ts.map +1 -0
- package/dist/cli/initial-message.js +22 -0
- package/dist/cli/initial-message.js.map +1 -0
- package/dist/cli/list-models.d.ts +9 -0
- package/dist/cli/list-models.d.ts.map +1 -0
- package/dist/cli/list-models.js +98 -0
- package/dist/cli/list-models.js.map +1 -0
- package/dist/cli/session-picker.d.ts +9 -0
- package/dist/cli/session-picker.d.ts.map +1 -0
- package/dist/cli/session-picker.js +35 -0
- package/dist/cli/session-picker.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +20 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +102 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +411 -0
- package/dist/config.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts +117 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -0
- package/dist/core/agent-session-runtime.js +292 -0
- package/dist/core/agent-session-runtime.js.map +1 -0
- package/dist/core/agent-session-services.d.ts +86 -0
- package/dist/core/agent-session-services.d.ts.map +1 -0
- package/dist/core/agent-session-services.js +117 -0
- package/dist/core/agent-session-services.js.map +1 -0
- package/dist/core/agent-session.d.ts +595 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +2518 -0
- package/dist/core/agent-session.js.map +1 -0
- package/dist/core/auth-guidance.d.ts +5 -0
- package/dist/core/auth-guidance.d.ts.map +1 -0
- package/dist/core/auth-guidance.js +21 -0
- package/dist/core/auth-guidance.js.map +1 -0
- package/dist/core/auth-storage.d.ts +141 -0
- package/dist/core/auth-storage.d.ts.map +1 -0
- package/dist/core/auth-storage.js +437 -0
- package/dist/core/auth-storage.js.map +1 -0
- package/dist/core/bash-executor.d.ts +32 -0
- package/dist/core/bash-executor.d.ts.map +1 -0
- package/dist/core/bash-executor.js +111 -0
- package/dist/core/bash-executor.js.map +1 -0
- package/dist/core/builtin-packages.d.ts +14 -0
- package/dist/core/builtin-packages.d.ts.map +1 -0
- package/dist/core/builtin-packages.js +113 -0
- package/dist/core/builtin-packages.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +88 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/core/compaction/branch-summarization.js +243 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -0
- package/dist/core/compaction/compaction.d.ts +121 -0
- package/dist/core/compaction/compaction.d.ts.map +1 -0
- package/dist/core/compaction/compaction.js +615 -0
- package/dist/core/compaction/compaction.js.map +1 -0
- package/dist/core/compaction/index.d.ts +7 -0
- package/dist/core/compaction/index.d.ts.map +1 -0
- package/dist/core/compaction/index.js +7 -0
- package/dist/core/compaction/index.js.map +1 -0
- package/dist/core/compaction/utils.d.ts +38 -0
- package/dist/core/compaction/utils.d.ts.map +1 -0
- package/dist/core/compaction/utils.js +153 -0
- package/dist/core/compaction/utils.js.map +1 -0
- package/dist/core/defaults.d.ts +3 -0
- package/dist/core/defaults.d.ts.map +1 -0
- package/dist/core/defaults.js +2 -0
- package/dist/core/defaults.js.map +1 -0
- package/dist/core/diagnostics.d.ts +15 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +2 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/event-bus.d.ts +9 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +25 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/exec.d.ts +29 -0
- package/dist/core/exec.d.ts.map +1 -0
- package/dist/core/exec.js +75 -0
- package/dist/core/exec.js.map +1 -0
- package/dist/core/export-html/ansi-to-html.d.ts +22 -0
- package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
- package/dist/core/export-html/ansi-to-html.js +249 -0
- package/dist/core/export-html/ansi-to-html.js.map +1 -0
- package/dist/core/export-html/index.d.ts +37 -0
- package/dist/core/export-html/index.d.ts.map +1 -0
- package/dist/core/export-html/index.js +224 -0
- package/dist/core/export-html/index.js.map +1 -0
- package/dist/core/export-html/template.css +1066 -0
- package/dist/core/export-html/template.html +55 -0
- package/dist/core/export-html/template.js +1834 -0
- package/dist/core/export-html/tool-renderer.d.ts +34 -0
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
- package/dist/core/export-html/tool-renderer.js +108 -0
- package/dist/core/export-html/tool-renderer.js.map +1 -0
- package/dist/core/export-html/vendor/highlight.min.js +1213 -0
- package/dist/core/export-html/vendor/marked.min.js +6 -0
- package/dist/core/extensions/index.d.ts +12 -0
- package/dist/core/extensions/index.d.ts.map +1 -0
- package/dist/core/extensions/index.js +9 -0
- package/dist/core/extensions/index.js.map +1 -0
- package/dist/core/extensions/loader.d.ts +24 -0
- package/dist/core/extensions/loader.d.ts.map +1 -0
- package/dist/core/extensions/loader.js +501 -0
- package/dist/core/extensions/loader.js.map +1 -0
- package/dist/core/extensions/runner.d.ts +159 -0
- package/dist/core/extensions/runner.d.ts.map +1 -0
- package/dist/core/extensions/runner.js +817 -0
- package/dist/core/extensions/runner.js.map +1 -0
- package/dist/core/extensions/types.d.ts +1173 -0
- package/dist/core/extensions/types.d.ts.map +1 -0
- package/dist/core/extensions/types.js +45 -0
- package/dist/core/extensions/types.js.map +1 -0
- package/dist/core/extensions/wrapper.d.ts +20 -0
- package/dist/core/extensions/wrapper.d.ts.map +1 -0
- package/dist/core/extensions/wrapper.js +22 -0
- package/dist/core/extensions/wrapper.js.map +1 -0
- package/dist/core/footer-data-provider.d.ts +52 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -0
- package/dist/core/footer-data-provider.js +309 -0
- package/dist/core/footer-data-provider.js.map +1 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +12 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/keybindings.d.ts +353 -0
- package/dist/core/keybindings.d.ts.map +1 -0
- package/dist/core/keybindings.js +294 -0
- package/dist/core/keybindings.js.map +1 -0
- package/dist/core/messages.d.ts +77 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +123 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/model-registry.d.ts +150 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/model-registry.js +726 -0
- package/dist/core/model-registry.js.map +1 -0
- package/dist/core/model-resolver.d.ts +110 -0
- package/dist/core/model-resolver.d.ts.map +1 -0
- package/dist/core/model-resolver.js +493 -0
- package/dist/core/model-resolver.js.map +1 -0
- package/dist/core/output-guard.d.ts +6 -0
- package/dist/core/output-guard.d.ts.map +1 -0
- package/dist/core/output-guard.js +59 -0
- package/dist/core/output-guard.js.map +1 -0
- package/dist/core/package-manager.d.ts +198 -0
- package/dist/core/package-manager.d.ts.map +1 -0
- package/dist/core/package-manager.js +1970 -0
- package/dist/core/package-manager.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +52 -0
- package/dist/core/prompt-templates.d.ts.map +1 -0
- package/dist/core/prompt-templates.js +250 -0
- package/dist/core/prompt-templates.js.map +1 -0
- package/dist/core/provider-display-names.d.ts +2 -0
- package/dist/core/provider-display-names.d.ts.map +1 -0
- package/dist/core/provider-display-names.js +33 -0
- package/dist/core/provider-display-names.js.map +1 -0
- package/dist/core/resolve-config-value.d.ts +23 -0
- package/dist/core/resolve-config-value.d.ts.map +1 -0
- package/dist/core/resolve-config-value.js +126 -0
- package/dist/core/resolve-config-value.js.map +1 -0
- package/dist/core/resource-loader.d.ts +196 -0
- package/dist/core/resource-loader.d.ts.map +1 -0
- package/dist/core/resource-loader.js +698 -0
- package/dist/core/resource-loader.js.map +1 -0
- package/dist/core/sdk.d.ts +107 -0
- package/dist/core/sdk.d.ts.map +1 -0
- package/dist/core/sdk.js +291 -0
- package/dist/core/sdk.js.map +1 -0
- package/dist/core/session-cwd.d.ts +19 -0
- package/dist/core/session-cwd.d.ts.map +1 -0
- package/dist/core/session-cwd.js +37 -0
- package/dist/core/session-cwd.js.map +1 -0
- package/dist/core/session-manager.d.ts +333 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +1118 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/settings-manager.d.ts +261 -0
- package/dist/core/settings-manager.d.ts.map +1 -0
- package/dist/core/settings-manager.js +773 -0
- package/dist/core/settings-manager.js.map +1 -0
- package/dist/core/skills.d.ts +60 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +404 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/slash-commands.d.ts +14 -0
- package/dist/core/slash-commands.d.ts.map +1 -0
- package/dist/core/slash-commands.js +25 -0
- package/dist/core/slash-commands.js.map +1 -0
- package/dist/core/source-info.d.ts +18 -0
- package/dist/core/source-info.d.ts.map +1 -0
- package/dist/core/source-info.js +19 -0
- package/dist/core/source-info.js.map +1 -0
- package/dist/core/system-prompt.d.ts +28 -0
- package/dist/core/system-prompt.d.ts.map +1 -0
- package/dist/core/system-prompt.js +120 -0
- package/dist/core/system-prompt.js.map +1 -0
- package/dist/core/telemetry.d.ts +3 -0
- package/dist/core/telemetry.d.ts.map +1 -0
- package/dist/core/telemetry.js +10 -0
- package/dist/core/telemetry.js.map +1 -0
- package/dist/core/timings.d.ts +8 -0
- package/dist/core/timings.d.ts.map +1 -0
- package/dist/core/timings.js +32 -0
- package/dist/core/timings.js.map +1 -0
- package/dist/core/tools/ask-user-question/ask-user-question.d.ts +10 -0
- package/dist/core/tools/ask-user-question/ask-user-question.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/ask-user-question.js +82 -0
- package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -0
- package/dist/core/tools/ask-user-question/config.d.ts +11 -0
- package/dist/core/tools/ask-user-question/config.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/config.js +34 -0
- package/dist/core/tools/ask-user-question/config.js.map +1 -0
- package/dist/core/tools/ask-user-question/index.d.ts +19 -0
- package/dist/core/tools/ask-user-question/index.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/index.js +19 -0
- package/dist/core/tools/ask-user-question/index.js.map +1 -0
- package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts +36 -0
- package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/state/build-questionnaire.js +213 -0
- package/dist/core/tools/ask-user-question/state/build-questionnaire.js.map +1 -0
- package/dist/core/tools/ask-user-question/state/key-router.d.ts +53 -0
- package/dist/core/tools/ask-user-question/state/key-router.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/state/key-router.js +240 -0
- package/dist/core/tools/ask-user-question/state/key-router.js.map +1 -0
- package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts +61 -0
- package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/state/questionnaire-session.js +147 -0
- package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -0
- package/dist/core/tools/ask-user-question/state/row-intent.d.ts +91 -0
- package/dist/core/tools/ask-user-question/state/row-intent.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/state/row-intent.js +91 -0
- package/dist/core/tools/ask-user-question/state/row-intent.js.map +1 -0
- package/dist/core/tools/ask-user-question/state/selectors/contract.d.ts +21 -0
- package/dist/core/tools/ask-user-question/state/selectors/contract.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/state/selectors/contract.js +2 -0
- package/dist/core/tools/ask-user-question/state/selectors/contract.js.map +1 -0
- package/dist/core/tools/ask-user-question/state/selectors/derivations.d.ts +44 -0
- package/dist/core/tools/ask-user-question/state/selectors/derivations.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/state/selectors/derivations.js +76 -0
- package/dist/core/tools/ask-user-question/state/selectors/derivations.js.map +1 -0
- package/dist/core/tools/ask-user-question/state/selectors/focus.d.ts +15 -0
- package/dist/core/tools/ask-user-question/state/selectors/focus.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/state/selectors/focus.js +18 -0
- package/dist/core/tools/ask-user-question/state/selectors/focus.js.map +1 -0
- package/dist/core/tools/ask-user-question/state/selectors/projections.d.ts +16 -0
- package/dist/core/tools/ask-user-question/state/selectors/projections.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/state/selectors/projections.js +71 -0
- package/dist/core/tools/ask-user-question/state/selectors/projections.js.map +1 -0
- package/dist/core/tools/ask-user-question/state/state-reducer.d.ts +44 -0
- package/dist/core/tools/ask-user-question/state/state-reducer.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/state/state-reducer.js +239 -0
- package/dist/core/tools/ask-user-question/state/state-reducer.js.map +1 -0
- package/dist/core/tools/ask-user-question/state/state.d.ts +42 -0
- package/dist/core/tools/ask-user-question/state/state.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/state/state.js +2 -0
- package/dist/core/tools/ask-user-question/state/state.js.map +1 -0
- package/dist/core/tools/ask-user-question/tool/format-answer.d.ts +30 -0
- package/dist/core/tools/ask-user-question/tool/format-answer.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/tool/format-answer.js +39 -0
- package/dist/core/tools/ask-user-question/tool/format-answer.js.map +1 -0
- package/dist/core/tools/ask-user-question/tool/response-envelope.d.ts +29 -0
- package/dist/core/tools/ask-user-question/tool/response-envelope.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/tool/response-envelope.js +46 -0
- package/dist/core/tools/ask-user-question/tool/response-envelope.js.map +1 -0
- package/dist/core/tools/ask-user-question/tool/types.d.ts +113 -0
- package/dist/core/tools/ask-user-question/tool/types.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/tool/types.js +81 -0
- package/dist/core/tools/ask-user-question/tool/types.js.map +1 -0
- package/dist/core/tools/ask-user-question/tool/validate-questionnaire.d.ts +21 -0
- package/dist/core/tools/ask-user-question/tool/validate-questionnaire.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/tool/validate-questionnaire.js +49 -0
- package/dist/core/tools/ask-user-question/tool/validate-questionnaire.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/body-residual-spacer.d.ts +18 -0
- package/dist/core/tools/ask-user-question/view/body-residual-spacer.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/body-residual-spacer.js +21 -0
- package/dist/core/tools/ask-user-question/view/body-residual-spacer.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/component-binding.d.ts +23 -0
- package/dist/core/tools/ask-user-question/view/component-binding.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/component-binding.js +16 -0
- package/dist/core/tools/ask-user-question/view/component-binding.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/chat-row-view.d.ts +40 -0
- package/dist/core/tools/ask-user-question/view/components/chat-row-view.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/chat-row-view.js +31 -0
- package/dist/core/tools/ask-user-question/view/components/chat-row-view.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/multi-select-view.d.ts +35 -0
- package/dist/core/tools/ask-user-question/view/components/multi-select-view.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/multi-select-view.js +91 -0
- package/dist/core/tools/ask-user-question/view/components/multi-select-view.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/option-list-view.d.ts +43 -0
- package/dist/core/tools/ask-user-question/view/components/option-list-view.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/option-list-view.js +37 -0
- package/dist/core/tools/ask-user-question/view/components/option-list-view.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts +36 -0
- package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.js +66 -0
- package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts +46 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js +69 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-box-renderer.d.ts +39 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-box-renderer.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-box-renderer.js +76 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-box-renderer.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-layout-decider.d.ts +116 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-layout-decider.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-layout-decider.js +173 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-layout-decider.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-pane.d.ts +66 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-pane.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-pane.js +124 -0
- package/dist/core/tools/ask-user-question/view/components/preview/preview-pane.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/submit-picker.d.ts +37 -0
- package/dist/core/tools/ask-user-question/view/components/submit-picker.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/submit-picker.js +44 -0
- package/dist/core/tools/ask-user-question/view/components/submit-picker.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/tab-bar.d.ts +32 -0
- package/dist/core/tools/ask-user-question/view/components/tab-bar.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/tab-bar.js +33 -0
- package/dist/core/tools/ask-user-question/view/components/tab-bar.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/wrapping-select.d.ts +122 -0
- package/dist/core/tools/ask-user-question/view/components/wrapping-select.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/components/wrapping-select.js +161 -0
- package/dist/core/tools/ask-user-question/view/components/wrapping-select.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts +66 -0
- package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/dialog-builder.js +85 -0
- package/dist/core/tools/ask-user-question/view/dialog-builder.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/props-adapter.d.ts +58 -0
- package/dist/core/tools/ask-user-question/view/props-adapter.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/props-adapter.js +67 -0
- package/dist/core/tools/ask-user-question/view/props-adapter.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/stateful-view.d.ts +24 -0
- package/dist/core/tools/ask-user-question/view/stateful-view.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/stateful-view.js +2 -0
- package/dist/core/tools/ask-user-question/view/stateful-view.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/tab-components.d.ts +15 -0
- package/dist/core/tools/ask-user-question/view/tab-components.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/tab-components.js +2 -0
- package/dist/core/tools/ask-user-question/view/tab-components.js.map +1 -0
- package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts +71 -0
- package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts.map +1 -0
- package/dist/core/tools/ask-user-question/view/tab-content-strategy.js +129 -0
- package/dist/core/tools/ask-user-question/view/tab-content-strategy.js.map +1 -0
- package/dist/core/tools/bash.d.ts +68 -0
- package/dist/core/tools/bash.d.ts.map +1 -0
- package/dist/core/tools/bash.js +338 -0
- package/dist/core/tools/bash.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +85 -0
- package/dist/core/tools/edit-diff.d.ts.map +1 -0
- package/dist/core/tools/edit-diff.js +338 -0
- package/dist/core/tools/edit-diff.js.map +1 -0
- package/dist/core/tools/edit.d.ts +49 -0
- package/dist/core/tools/edit.d.ts.map +1 -0
- package/dist/core/tools/edit.js +324 -0
- package/dist/core/tools/edit.js.map +1 -0
- package/dist/core/tools/file-mutation-queue.d.ts +6 -0
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
- package/dist/core/tools/file-mutation-queue.js +37 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -0
- package/dist/core/tools/find.d.ts +35 -0
- package/dist/core/tools/find.d.ts.map +1 -0
- package/dist/core/tools/find.js +298 -0
- package/dist/core/tools/find.js.map +1 -0
- package/dist/core/tools/grep.d.ts +37 -0
- package/dist/core/tools/grep.d.ts.map +1 -0
- package/dist/core/tools/grep.js +304 -0
- package/dist/core/tools/grep.js.map +1 -0
- package/dist/core/tools/index.d.ts +42 -0
- package/dist/core/tools/index.d.ts.map +1 -0
- package/dist/core/tools/index.js +139 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/ls.d.ts +37 -0
- package/dist/core/tools/ls.d.ts.map +1 -0
- package/dist/core/tools/ls.js +169 -0
- package/dist/core/tools/ls.js.map +1 -0
- package/dist/core/tools/output-accumulator.d.ts +50 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -0
- package/dist/core/tools/output-accumulator.js +172 -0
- package/dist/core/tools/output-accumulator.js.map +1 -0
- package/dist/core/tools/path-utils.d.ts +8 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -0
- package/dist/core/tools/path-utils.js +81 -0
- package/dist/core/tools/path-utils.js.map +1 -0
- package/dist/core/tools/read.d.ts +35 -0
- package/dist/core/tools/read.d.ts.map +1 -0
- package/dist/core/tools/read.js +289 -0
- package/dist/core/tools/read.js.map +1 -0
- package/dist/core/tools/render-utils.d.ts +21 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -0
- package/dist/core/tools/render-utils.js +49 -0
- package/dist/core/tools/render-utils.js.map +1 -0
- package/dist/core/tools/todos.d.ts +35 -0
- package/dist/core/tools/todos.d.ts.map +1 -0
- package/dist/core/tools/todos.js +906 -0
- package/dist/core/tools/todos.js.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.js +34 -0
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
- package/dist/core/tools/truncate.d.ts +70 -0
- package/dist/core/tools/truncate.d.ts.map +1 -0
- package/dist/core/tools/truncate.js +205 -0
- package/dist/core/tools/truncate.js.map +1 -0
- package/dist/core/tools/write.d.ts +26 -0
- package/dist/core/tools/write.d.ts.map +1 -0
- package/dist/core/tools/write.js +212 -0
- package/dist/core/tools/write.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +13 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +586 -0
- package/dist/main.js.map +1 -0
- package/dist/migrations.d.ts +33 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +281 -0
- package/dist/migrations.js.map +1 -0
- package/dist/modes/index.d.ts +9 -0
- package/dist/modes/index.d.ts.map +1 -0
- package/dist/modes/index.js +8 -0
- package/dist/modes/index.js.map +1 -0
- package/dist/modes/interactive/assets/clankolas.png +3 -0
- package/dist/modes/interactive/components/armin.d.ts +34 -0
- package/dist/modes/interactive/components/armin.d.ts.map +1 -0
- package/dist/modes/interactive/components/armin.js +329 -0
- package/dist/modes/interactive/components/armin.js.map +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +20 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/assistant-message.js +116 -0
- package/dist/modes/interactive/components/assistant-message.js.map +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/bash-execution.js +170 -0
- package/dist/modes/interactive/components/bash-execution.js.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.js +51 -0
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.js +42 -0
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.js +43 -0
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/config-selector.d.ts +71 -0
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/config-selector.js +496 -0
- package/dist/modes/interactive/components/config-selector.js.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.js +28 -0
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
- package/dist/modes/interactive/components/custom-editor.d.ts +29 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-editor.js +113 -0
- package/dist/modes/interactive/components/custom-editor.js.map +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +20 -0
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-message.js +74 -0
- package/dist/modes/interactive/components/custom-message.js.map +1 -0
- package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
- package/dist/modes/interactive/components/daxnuts.js +138 -0
- package/dist/modes/interactive/components/daxnuts.js.map +1 -0
- package/dist/modes/interactive/components/diff.d.ts +12 -0
- package/dist/modes/interactive/components/diff.d.ts.map +1 -0
- package/dist/modes/interactive/components/diff.js +151 -0
- package/dist/modes/interactive/components/diff.js.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.js +20 -0
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
- package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
- package/dist/modes/interactive/components/earendil-announcement.js +40 -0
- package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +20 -0
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-editor.js +106 -0
- package/dist/modes/interactive/components/extension-editor.js.map +1 -0
- package/dist/modes/interactive/components/extension-input.d.ts +23 -0
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-input.js +55 -0
- package/dist/modes/interactive/components/extension-input.js.map +1 -0
- package/dist/modes/interactive/components/extension-selector.d.ts +26 -0
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-selector.js +75 -0
- package/dist/modes/interactive/components/extension-selector.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +27 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -0
- package/dist/modes/interactive/components/footer.js +199 -0
- package/dist/modes/interactive/components/footer.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +32 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -0
- package/dist/modes/interactive/components/index.js +33 -0
- package/dist/modes/interactive/components/index.js.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.js +36 -0
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +46 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
- package/dist/modes/interactive/components/login-dialog.js +158 -0
- package/dist/modes/interactive/components/login-dialog.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +47 -0
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/model-selector.js +266 -0
- package/dist/modes/interactive/components/model-selector.js.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +31 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.js +156 -0
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +42 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.js +286 -0
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.js +155 -0
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +96 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector.js +836 -0
- package/dist/modes/interactive/components/session-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +67 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector.js +371 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.js +38 -0
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.js +45 -0
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
- package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/theme-selector.js +48 -0
- package/dist/modes/interactive/components/theme-selector.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.js +50 -0
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +63 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-execution.js +280 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +89 -0
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector.js +1079 -0
- package/dist/modes/interactive/components/tree-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.js +111 -0
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +10 -0
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message.js +28 -0
- package/dist/modes/interactive/components/user-message.js.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.js +33 -0
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +369 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode.js +4709 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -0
- package/dist/modes/interactive/theme/catppuccin-frappe.json +90 -0
- package/dist/modes/interactive/theme/catppuccin-latte.json +90 -0
- package/dist/modes/interactive/theme/catppuccin-macchiato.json +90 -0
- package/dist/modes/interactive/theme/catppuccin-mocha.json +90 -0
- package/dist/modes/interactive/theme/dark.json +85 -0
- package/dist/modes/interactive/theme/light.json +84 -0
- package/dist/modes/interactive/theme/theme-schema.json +335 -0
- package/dist/modes/interactive/theme/theme.d.ts +81 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme.js +970 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -0
- package/dist/modes/interactive/whimsical-messages.d.ts +5 -0
- package/dist/modes/interactive/whimsical-messages.d.ts.map +1 -0
- package/dist/modes/interactive/whimsical-messages.js +464 -0
- package/dist/modes/interactive/whimsical-messages.js.map +1 -0
- package/dist/modes/print-mode.d.ts +28 -0
- package/dist/modes/print-mode.d.ts.map +1 -0
- package/dist/modes/print-mode.js +131 -0
- package/dist/modes/print-mode.js.map +1 -0
- package/dist/modes/rpc/jsonl.d.ts +17 -0
- package/dist/modes/rpc/jsonl.d.ts.map +1 -0
- package/dist/modes/rpc/jsonl.js +49 -0
- package/dist/modes/rpc/jsonl.js.map +1 -0
- package/dist/modes/rpc/rpc-client.d.ts +224 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client.js +409 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -0
- package/dist/modes/rpc/rpc-mode.d.ts +20 -0
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-mode.js +601 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +419 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-types.js +8 -0
- package/dist/modes/rpc/rpc-types.js.map +1 -0
- package/dist/package-manager-cli.d.ts +4 -0
- package/dist/package-manager-cli.d.ts.map +1 -0
- package/dist/package-manager-cli.js +460 -0
- package/dist/package-manager-cli.js.map +1 -0
- package/dist/utils/ansi.d.ts +2 -0
- package/dist/utils/ansi.d.ts.map +1 -0
- package/dist/utils/ansi.js +52 -0
- package/dist/utils/ansi.js.map +1 -0
- package/dist/utils/changelog.d.ts +21 -0
- package/dist/utils/changelog.d.ts.map +1 -0
- package/dist/utils/changelog.js +87 -0
- package/dist/utils/changelog.js.map +1 -0
- package/dist/utils/child-process.d.ts +12 -0
- package/dist/utils/child-process.d.ts.map +1 -0
- package/dist/utils/child-process.js +86 -0
- package/dist/utils/child-process.js.map +1 -0
- package/dist/utils/clipboard-image.d.ts +11 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -0
- package/dist/utils/clipboard-image.js +245 -0
- package/dist/utils/clipboard-image.js.map +1 -0
- package/dist/utils/clipboard-native.d.ts +8 -0
- package/dist/utils/clipboard-native.d.ts.map +1 -0
- package/dist/utils/clipboard-native.js +14 -0
- package/dist/utils/clipboard-native.js.map +1 -0
- package/dist/utils/clipboard.d.ts +2 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +117 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/exif-orientation.d.ts +5 -0
- package/dist/utils/exif-orientation.d.ts.map +1 -0
- package/dist/utils/exif-orientation.js +158 -0
- package/dist/utils/exif-orientation.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +8 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +26 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/fs-watch.d.ts +5 -0
- package/dist/utils/fs-watch.d.ts.map +1 -0
- package/dist/utils/fs-watch.js +25 -0
- package/dist/utils/fs-watch.js.map +1 -0
- package/dist/utils/git.d.ts +26 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +163 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/html.d.ts +7 -0
- package/dist/utils/html.d.ts.map +1 -0
- package/dist/utils/html.js +40 -0
- package/dist/utils/html.js.map +1 -0
- package/dist/utils/image-convert.d.ts +9 -0
- package/dist/utils/image-convert.d.ts.map +1 -0
- package/dist/utils/image-convert.js +39 -0
- package/dist/utils/image-convert.js.map +1 -0
- package/dist/utils/image-resize.d.ts +36 -0
- package/dist/utils/image-resize.d.ts.map +1 -0
- package/dist/utils/image-resize.js +137 -0
- package/dist/utils/image-resize.js.map +1 -0
- package/dist/utils/mime.d.ts +3 -0
- package/dist/utils/mime.d.ts.map +1 -0
- package/dist/utils/mime.js +69 -0
- package/dist/utils/mime.js.map +1 -0
- package/dist/utils/paths.d.ts +16 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +50 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/photon.d.ts +21 -0
- package/dist/utils/photon.d.ts.map +1 -0
- package/dist/utils/photon.js +121 -0
- package/dist/utils/photon.js.map +1 -0
- package/dist/utils/pi-user-agent.d.ts +2 -0
- package/dist/utils/pi-user-agent.d.ts.map +1 -0
- package/dist/utils/pi-user-agent.js +5 -0
- package/dist/utils/pi-user-agent.js.map +1 -0
- package/dist/utils/shell.d.ts +30 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +190 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/sleep.d.ts +5 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +17 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/syntax-highlight.d.ts +12 -0
- package/dist/utils/syntax-highlight.d.ts.map +1 -0
- package/dist/utils/syntax-highlight.js +118 -0
- package/dist/utils/syntax-highlight.js.map +1 -0
- package/dist/utils/tools-manager.d.ts +3 -0
- package/dist/utils/tools-manager.d.ts.map +1 -0
- package/dist/utils/tools-manager.js +325 -0
- package/dist/utils/tools-manager.js.map +1 -0
- package/dist/utils/version-check.d.ts +14 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +76 -0
- package/dist/utils/version-check.js.map +1 -0
- package/docs/compaction.md +394 -0
- package/docs/custom-provider.md +646 -0
- package/docs/development.md +71 -0
- package/docs/docs.json +148 -0
- package/docs/extensions.md +2596 -0
- package/docs/images/doom-extension.png +0 -0
- package/docs/images/exy.png +3 -0
- package/docs/images/interactive-mode.png +0 -0
- package/docs/images/tree-view.png +0 -0
- package/docs/index.md +70 -0
- package/docs/json.md +82 -0
- package/docs/keybindings.md +197 -0
- package/docs/models.md +474 -0
- package/docs/packages.md +223 -0
- package/docs/prompt-templates.md +88 -0
- package/docs/providers.md +243 -0
- package/docs/quickstart.md +142 -0
- package/docs/rpc.md +1407 -0
- package/docs/sdk.md +1129 -0
- package/docs/session-format.md +412 -0
- package/docs/sessions.md +137 -0
- package/docs/settings.md +279 -0
- package/docs/shell-aliases.md +13 -0
- package/docs/skills.md +232 -0
- package/docs/terminal-setup.md +106 -0
- package/docs/termux.md +127 -0
- package/docs/themes.md +299 -0
- package/docs/tmux.md +61 -0
- package/docs/tui.md +918 -0
- package/docs/usage.md +277 -0
- package/docs/windows.md +17 -0
- package/examples/README.md +25 -0
- package/examples/extensions/README.md +208 -0
- package/examples/extensions/auto-commit-on-exit.ts +49 -0
- package/examples/extensions/bash-spawn-hook.ts +30 -0
- package/examples/extensions/bookmark.ts +50 -0
- package/examples/extensions/border-status-editor.ts +150 -0
- package/examples/extensions/built-in-tool-renderer.ts +249 -0
- package/examples/extensions/claude-rules.ts +86 -0
- package/examples/extensions/commands.ts +72 -0
- package/examples/extensions/confirm-destructive.ts +59 -0
- package/examples/extensions/custom-compaction.ts +127 -0
- package/examples/extensions/custom-footer.ts +64 -0
- package/examples/extensions/custom-header.ts +73 -0
- package/examples/extensions/custom-provider-anthropic/index.ts +604 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
- package/examples/extensions/custom-provider-anthropic/package.json +19 -0
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +349 -0
- package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
- package/examples/extensions/dirty-repo-guard.ts +56 -0
- package/examples/extensions/doom-overlay/README.md +46 -0
- package/examples/extensions/doom-overlay/doom/build.sh +152 -0
- package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
- package/examples/extensions/doom-overlay/doom-component.ts +132 -0
- package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
- package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
- package/examples/extensions/doom-overlay/index.ts +74 -0
- package/examples/extensions/doom-overlay/wad-finder.ts +51 -0
- package/examples/extensions/dynamic-resources/SKILL.md +8 -0
- package/examples/extensions/dynamic-resources/dynamic.json +79 -0
- package/examples/extensions/dynamic-resources/dynamic.md +5 -0
- package/examples/extensions/dynamic-resources/index.ts +15 -0
- package/examples/extensions/dynamic-tools.ts +74 -0
- package/examples/extensions/event-bus.ts +43 -0
- package/examples/extensions/file-trigger.ts +41 -0
- package/examples/extensions/git-checkpoint.ts +53 -0
- package/examples/extensions/github-issue-autocomplete.ts +185 -0
- package/examples/extensions/handoff.ts +191 -0
- package/examples/extensions/hello.ts +26 -0
- package/examples/extensions/hidden-thinking-label.ts +53 -0
- package/examples/extensions/inline-bash.ts +94 -0
- package/examples/extensions/input-transform.ts +43 -0
- package/examples/extensions/interactive-shell.ts +196 -0
- package/examples/extensions/mac-system-theme.ts +47 -0
- package/examples/extensions/message-renderer.ts +59 -0
- package/examples/extensions/minimal-mode.ts +426 -0
- package/examples/extensions/modal-editor.ts +85 -0
- package/examples/extensions/model-status.ts +31 -0
- package/examples/extensions/notify.ts +55 -0
- package/examples/extensions/overlay-qa-tests.ts +1348 -0
- package/examples/extensions/overlay-test.ts +150 -0
- package/examples/extensions/permission-gate.ts +34 -0
- package/examples/extensions/pirate.ts +47 -0
- package/examples/extensions/plan-mode/README.md +65 -0
- package/examples/extensions/plan-mode/index.ts +340 -0
- package/examples/extensions/plan-mode/utils.ts +168 -0
- package/examples/extensions/preset.ts +430 -0
- package/examples/extensions/prompt-customizer.ts +97 -0
- package/examples/extensions/protected-paths.ts +30 -0
- package/examples/extensions/provider-payload.ts +18 -0
- package/examples/extensions/qna.ts +122 -0
- package/examples/extensions/question.ts +264 -0
- package/examples/extensions/questionnaire.ts +427 -0
- package/examples/extensions/rainbow-editor.ts +88 -0
- package/examples/extensions/reload-runtime.ts +37 -0
- package/examples/extensions/rpc-demo.ts +118 -0
- package/examples/extensions/sandbox/index.ts +321 -0
- package/examples/extensions/sandbox/package-lock.json +92 -0
- package/examples/extensions/sandbox/package.json +19 -0
- package/examples/extensions/send-user-message.ts +97 -0
- package/examples/extensions/session-name.ts +27 -0
- package/examples/extensions/shutdown-command.ts +63 -0
- package/examples/extensions/snake.ts +343 -0
- package/examples/extensions/space-invaders.ts +560 -0
- package/examples/extensions/ssh.ts +220 -0
- package/examples/extensions/status-line.ts +32 -0
- package/examples/extensions/structured-output.ts +65 -0
- package/examples/extensions/subagent/README.md +172 -0
- package/examples/extensions/subagent/agents/planner.md +37 -0
- package/examples/extensions/subagent/agents/reviewer.md +35 -0
- package/examples/extensions/subagent/agents/scout.md +50 -0
- package/examples/extensions/subagent/agents/worker.md +24 -0
- package/examples/extensions/subagent/agents.ts +126 -0
- package/examples/extensions/subagent/index.ts +987 -0
- package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
- package/examples/extensions/subagent/prompts/implement.md +10 -0
- package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
- package/examples/extensions/summarize.ts +206 -0
- package/examples/extensions/system-prompt-header.ts +17 -0
- package/examples/extensions/tic-tac-toe.ts +1008 -0
- package/examples/extensions/timed-confirm.ts +70 -0
- package/examples/extensions/titlebar-spinner.ts +58 -0
- package/examples/extensions/todo.ts +297 -0
- package/examples/extensions/tool-override.ts +144 -0
- package/examples/extensions/tools.ts +141 -0
- package/examples/extensions/trigger-compact.ts +50 -0
- package/examples/extensions/truncated-tool.ts +195 -0
- package/examples/extensions/widget-placement.ts +9 -0
- package/examples/extensions/with-deps/index.ts +32 -0
- package/examples/extensions/with-deps/package-lock.json +31 -0
- package/examples/extensions/with-deps/package.json +22 -0
- package/examples/extensions/working-indicator.ts +123 -0
- package/examples/extensions/working-message-test.ts +25 -0
- package/examples/rpc-extension-ui.ts +632 -0
- package/examples/sdk/01-minimal.ts +26 -0
- package/examples/sdk/02-custom-model.ts +53 -0
- package/examples/sdk/03-custom-prompt.ts +75 -0
- package/examples/sdk/04-skills.ts +55 -0
- package/examples/sdk/05-tools.ts +48 -0
- package/examples/sdk/06-extensions.ts +99 -0
- package/examples/sdk/07-context-files.ts +47 -0
- package/examples/sdk/08-prompt-templates.ts +51 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +52 -0
- package/examples/sdk/10-settings.ts +53 -0
- package/examples/sdk/11-sessions.ts +52 -0
- package/examples/sdk/12-full-control.ts +77 -0
- package/examples/sdk/13-session-runtime.ts +67 -0
- package/examples/sdk/README.md +144 -0
- package/package.json +94 -19
- package/bin/atomic +0 -82
- /package/{LICENSE → dist/builtin/workflows/LICENSE} +0 -0
|
@@ -0,0 +1,985 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builtin workflow: open-claude-design
|
|
3
|
+
*
|
|
4
|
+
* Adapts Atomic SDK's Claude Design workflow to the local workflow SDK:
|
|
5
|
+
* design-system onboarding, reference import, generation, bounded refinement,
|
|
6
|
+
* enforcement, and export/handoff all run through ctx.task()/ctx.parallel().
|
|
7
|
+
*
|
|
8
|
+
* Every stage prompt invokes the specific impeccable sub-skill that maps to
|
|
9
|
+
* its role (see https://github.com/pbakaus/impeccable/tree/main/site/content/skills):
|
|
10
|
+
*
|
|
11
|
+
* onboarding → impeccable `document` / `extract` / `audit`
|
|
12
|
+
* import → impeccable `extract`
|
|
13
|
+
* generator → impeccable `craft` (HTML preview)
|
|
14
|
+
* user-feedback → impeccable `critique` (against the live HTML preview)
|
|
15
|
+
* critique-N → impeccable `critique`
|
|
16
|
+
* screenshot-N → impeccable `audit` + `live`
|
|
17
|
+
* apply-changes → impeccable `polish`
|
|
18
|
+
* pre-export → impeccable `audit`
|
|
19
|
+
* forced-fix → impeccable `harden`
|
|
20
|
+
* exporter → impeccable `document` (rich HTML spec)
|
|
21
|
+
*
|
|
22
|
+
* The refinement loop has been re-shaped so that the artifact under review is
|
|
23
|
+
* a real HTML page on disk (`preview.html`). The workflow attempts to open it
|
|
24
|
+
* through `playwright-cli` so the user can interactively review and annotate;
|
|
25
|
+
* when playwright-cli is unavailable, the file path is surfaced so the user
|
|
26
|
+
* can open it manually. The final exporter produces a rich `spec.html` that
|
|
27
|
+
* embeds the agreed-upon design alongside the implementation handoff.
|
|
28
|
+
*/
|
|
29
|
+
|
|
30
|
+
import { defineWorkflow } from "../src/index.js";
|
|
31
|
+
import type {
|
|
32
|
+
WorkflowTaskResult,
|
|
33
|
+
WorkflowTaskStep,
|
|
34
|
+
} from "../src/shared/types.js";
|
|
35
|
+
import { mkdirSync } from "node:fs";
|
|
36
|
+
import { tmpdir } from "node:os";
|
|
37
|
+
import { join } from "node:path";
|
|
38
|
+
|
|
39
|
+
const OUTPUT_TYPES = [
|
|
40
|
+
"prototype",
|
|
41
|
+
"wireframe",
|
|
42
|
+
"page",
|
|
43
|
+
"component",
|
|
44
|
+
"theme",
|
|
45
|
+
"tokens",
|
|
46
|
+
] as const;
|
|
47
|
+
type OutputType = (typeof OUTPUT_TYPES)[number];
|
|
48
|
+
const DEFAULT_OUTPUT_TYPE: OutputType = "prototype";
|
|
49
|
+
const DEFAULT_MAX_REFINEMENTS = 3;
|
|
50
|
+
|
|
51
|
+
type PromptSection = readonly [tag: string, content: string];
|
|
52
|
+
|
|
53
|
+
function taggedPrompt(sections: readonly PromptSection[]): string {
|
|
54
|
+
return sections
|
|
55
|
+
.map(([tag, content]) => `<${tag}>\n${content.trim()}\n</${tag}>`)
|
|
56
|
+
.join("\n\n");
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function positiveInteger(value: number | undefined, fallback: number): number {
|
|
60
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0
|
|
61
|
+
? Math.floor(value)
|
|
62
|
+
: fallback;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function normalizeOutputType(value: string | undefined): OutputType {
|
|
66
|
+
return value !== undefined &&
|
|
67
|
+
(OUTPUT_TYPES as readonly string[]).includes(value)
|
|
68
|
+
? (value as OutputType)
|
|
69
|
+
: DEFAULT_OUTPUT_TYPE;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function isUrl(value: string): boolean {
|
|
73
|
+
return /^https?:\/\//i.test(value.trim());
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function isFileLike(value: string): boolean {
|
|
77
|
+
const trimmed = value.trim();
|
|
78
|
+
return trimmed.length > 0 && !isUrl(trimmed);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function refinementComplete(text: string): boolean {
|
|
82
|
+
const normalized = text.toLowerCase();
|
|
83
|
+
return (
|
|
84
|
+
normalized.includes("refinement complete") ||
|
|
85
|
+
normalized.includes("approved for export") ||
|
|
86
|
+
normalized.trim() === "done"
|
|
87
|
+
);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function hasBlockingFindings(text: string): boolean {
|
|
91
|
+
const normalized = text.toLowerCase();
|
|
92
|
+
if (
|
|
93
|
+
normalized.includes("no blocking findings") ||
|
|
94
|
+
normalized.includes("no banned anti-patterns")
|
|
95
|
+
) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
return (
|
|
99
|
+
normalized.includes("blocking") ||
|
|
100
|
+
normalized.includes("banned anti-pattern") ||
|
|
101
|
+
normalized.includes("must fix")
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function joinResults(results: readonly WorkflowTaskResult[]): string {
|
|
106
|
+
return results
|
|
107
|
+
.map((result) => `### ${result.name}\n\n${result.text}`)
|
|
108
|
+
.join("\n\n---\n\n");
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Compute (and best-effort create) a per-run artifact directory.
|
|
113
|
+
* Prefers `<cwd>/.atomic/workflows/open-claude-design/<runId>` so the artifacts
|
|
114
|
+
* stay next to the project and are discoverable by pi. Falls back to the OS
|
|
115
|
+
* tmpdir when the project tree is not writable (CI sandboxes, mocks, etc.).
|
|
116
|
+
*/
|
|
117
|
+
function prepareArtifactDir(): {
|
|
118
|
+
readonly runId: string;
|
|
119
|
+
readonly artifactDir: string;
|
|
120
|
+
readonly previewPath: string;
|
|
121
|
+
readonly specPath: string;
|
|
122
|
+
} {
|
|
123
|
+
const runId = `${new Date().toISOString().replace(/[:.]/g, "-")}-${Math.random().toString(36).slice(2, 8)}`;
|
|
124
|
+
const candidates = [
|
|
125
|
+
join(process.cwd(), ".atomic", "workflows", "open-claude-design", runId),
|
|
126
|
+
join(tmpdir(), "pi-open-claude-design", runId),
|
|
127
|
+
];
|
|
128
|
+
for (const candidate of candidates) {
|
|
129
|
+
try {
|
|
130
|
+
mkdirSync(candidate, { recursive: true });
|
|
131
|
+
return {
|
|
132
|
+
runId,
|
|
133
|
+
artifactDir: candidate,
|
|
134
|
+
previewPath: join(candidate, "preview.html"),
|
|
135
|
+
specPath: join(candidate, "spec.html"),
|
|
136
|
+
};
|
|
137
|
+
} catch {
|
|
138
|
+
// try next fallback
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Last-resort: synthesize paths even if mkdir failed; downstream agents will
|
|
142
|
+
// recreate parents using their Write tool.
|
|
143
|
+
const fallback = join(tmpdir(), "pi-open-claude-design", runId);
|
|
144
|
+
return {
|
|
145
|
+
runId,
|
|
146
|
+
artifactDir: fallback,
|
|
147
|
+
previewPath: join(fallback, "preview.html"),
|
|
148
|
+
specPath: join(fallback, "spec.html"),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
const HTML_PREVIEW_RULES = [
|
|
153
|
+
"Produce a single self-contained HTML5 document. Inline all CSS in a <style> block and inline any JS in a <script> block; no external network requests except Google Fonts when explicitly required.",
|
|
154
|
+
"Embed realistic content that respects the design brief — no Lorem ipsum, no obvious placeholders.",
|
|
155
|
+
"Implement responsive behavior with sensible breakpoints (use container queries or media queries) so the file renders well from 360px up to 1440px.",
|
|
156
|
+
"Cover at minimum: default state, hover/focus state for every interactive element, empty state if relevant, loading state if relevant, error state if relevant.",
|
|
157
|
+
"Use accessible markup: semantic landmarks, labeled form controls, sufficient contrast (WCAG AA), visible focus styles, prefers-reduced-motion respected.",
|
|
158
|
+
"Annotate the file with HTML comments that mark sections, states, and design-system token references so engineers can read the intent quickly.",
|
|
159
|
+
].join("\n");
|
|
160
|
+
|
|
161
|
+
const ANTI_SLOP_RULES = [
|
|
162
|
+
"Do not produce generic AI-slop palettes (purple/indigo gradients, blue-to-pink, neon glassmorphism stacks, nested card grids).",
|
|
163
|
+
"Avoid the AI design clichés impeccable's anti-pattern catalog calls out: gradient text for emphasis, side-tab borders, three-font headers, decorative shadows on flat-by-default systems.",
|
|
164
|
+
"Commit to a specific aesthetic direction; do not hedge with generic SaaS defaults.",
|
|
165
|
+
].join("\n");
|
|
166
|
+
|
|
167
|
+
export default defineWorkflow("open-claude-design")
|
|
168
|
+
.description(
|
|
169
|
+
"AI-powered design workflow: design-system onboarding → reference import → HTML generation → impeccable-driven refinement → quality gate → rich HTML handoff. Each stage delegates to a specific impeccable sub-skill; the user can iteratively review and annotate the generated HTML through playwright-cli.",
|
|
170
|
+
)
|
|
171
|
+
.input("prompt", {
|
|
172
|
+
type: "text",
|
|
173
|
+
required: true,
|
|
174
|
+
description:
|
|
175
|
+
"What to design (for example, a dashboard, page, component, or prototype).",
|
|
176
|
+
})
|
|
177
|
+
.input("reference", {
|
|
178
|
+
type: "text",
|
|
179
|
+
required: false,
|
|
180
|
+
description:
|
|
181
|
+
"URL, file path, screenshot path, or design doc to import as a reference.",
|
|
182
|
+
})
|
|
183
|
+
.input("output_type", {
|
|
184
|
+
type: "select",
|
|
185
|
+
choices: OUTPUT_TYPES,
|
|
186
|
+
default: DEFAULT_OUTPUT_TYPE,
|
|
187
|
+
description: "Kind of design artifact to produce.",
|
|
188
|
+
})
|
|
189
|
+
.input("design_system", {
|
|
190
|
+
type: "text",
|
|
191
|
+
required: false,
|
|
192
|
+
description:
|
|
193
|
+
"Path(s) or description of an existing design system (DESIGN.md, PRODUCT.md, etc.); skips onboarding when provided.",
|
|
194
|
+
})
|
|
195
|
+
.input("max_refinements", {
|
|
196
|
+
type: "number",
|
|
197
|
+
default: DEFAULT_MAX_REFINEMENTS,
|
|
198
|
+
description: `Maximum critique/apply refinement iterations (default ${DEFAULT_MAX_REFINEMENTS}).`,
|
|
199
|
+
})
|
|
200
|
+
.run(async (ctx) => {
|
|
201
|
+
const inputs = ctx.inputs as {
|
|
202
|
+
prompt?: string;
|
|
203
|
+
reference?: string;
|
|
204
|
+
output_type?: string;
|
|
205
|
+
design_system?: string;
|
|
206
|
+
max_refinements?: number;
|
|
207
|
+
};
|
|
208
|
+
|
|
209
|
+
const prompt = inputs.prompt ?? "";
|
|
210
|
+
const reference = inputs.reference?.trim() ?? "";
|
|
211
|
+
const outputType = normalizeOutputType(inputs.output_type);
|
|
212
|
+
const designSystemInput = (inputs.design_system ?? "").trim();
|
|
213
|
+
const maxRefinements = positiveInteger(
|
|
214
|
+
inputs.max_refinements,
|
|
215
|
+
DEFAULT_MAX_REFINEMENTS,
|
|
216
|
+
);
|
|
217
|
+
|
|
218
|
+
const { runId, artifactDir, previewPath, specPath } = prepareArtifactDir();
|
|
219
|
+
const previewFileUrl = `file://${previewPath}`;
|
|
220
|
+
const specFileUrl = `file://${specPath}`;
|
|
221
|
+
|
|
222
|
+
const designModelConfig = {
|
|
223
|
+
model: "anthropic/claude-opus-4-7",
|
|
224
|
+
fallbackModels: [
|
|
225
|
+
"github-copilot/claude-opus-4.7",
|
|
226
|
+
"anthropic/claude-sonnet-4-6",
|
|
227
|
+
"github-copilot/claude-sonnet-4.6",
|
|
228
|
+
],
|
|
229
|
+
thinkingLevel: "high" as const,
|
|
230
|
+
};
|
|
231
|
+
|
|
232
|
+
let designSystem: string;
|
|
233
|
+
let onboarding: readonly WorkflowTaskResult[] = [];
|
|
234
|
+
|
|
235
|
+
if (designSystemInput.length > 0) {
|
|
236
|
+
const loaded = await ctx.task("load-design-system", {
|
|
237
|
+
prompt: taggedPrompt([
|
|
238
|
+
[
|
|
239
|
+
"role",
|
|
240
|
+
"You are an impeccable design-system analyst. Apply the impeccable `document` sub-skill (https://github.com/pbakaus/impeccable/blob/main/site/content/skills/document.md) to read an existing DESIGN.md / PRODUCT.md (or equivalent) and re-emit it in the six-section Google Stitch DESIGN.md format so the rest of this workflow can rely on it.",
|
|
241
|
+
],
|
|
242
|
+
[
|
|
243
|
+
"objective",
|
|
244
|
+
`Prepare a six-section DESIGN.md-shaped brief that will steer generation of: ${prompt}`,
|
|
245
|
+
],
|
|
246
|
+
["design_system_reference", designSystemInput],
|
|
247
|
+
[
|
|
248
|
+
"impeccable_skill",
|
|
249
|
+
"document — generate a spec-compliant DESIGN.md (Overview, Colors, Typography, Elevation, Components, Do's and Don'ts) in fixed order with fixed names. Headers must be parseable by downstream tools.",
|
|
250
|
+
],
|
|
251
|
+
[
|
|
252
|
+
"instructions",
|
|
253
|
+
[
|
|
254
|
+
"1. Read every reference path/URL supplied.",
|
|
255
|
+
"2. Extract: register (brand vs product), Creative North Star, color tokens with descriptive names, type stack, elevation philosophy, components/variants, accessibility constraints, and the named DO/DON'T rules.",
|
|
256
|
+
"3. Distinguish explicit rules in the source from inferred conventions; never invent rules.",
|
|
257
|
+
"4. State what could not be verified instead of guessing.",
|
|
258
|
+
].join("\n"),
|
|
259
|
+
],
|
|
260
|
+
[
|
|
261
|
+
"output_format",
|
|
262
|
+
[
|
|
263
|
+
"Markdown with the six required headings, in this exact order and case:",
|
|
264
|
+
"## Overview",
|
|
265
|
+
"## Colors",
|
|
266
|
+
"## Typography",
|
|
267
|
+
"## Elevation",
|
|
268
|
+
"## Components",
|
|
269
|
+
"## Do's and Don'ts",
|
|
270
|
+
"Then a final `## Gaps / Assumptions` section listing anything unverified.",
|
|
271
|
+
].join("\n"),
|
|
272
|
+
],
|
|
273
|
+
]),
|
|
274
|
+
...designModelConfig,
|
|
275
|
+
});
|
|
276
|
+
designSystem = loaded.text;
|
|
277
|
+
onboarding = [loaded];
|
|
278
|
+
} else {
|
|
279
|
+
onboarding = await ctx.parallel(
|
|
280
|
+
[
|
|
281
|
+
{
|
|
282
|
+
name: "ds-locator",
|
|
283
|
+
task: taggedPrompt([
|
|
284
|
+
[
|
|
285
|
+
"role",
|
|
286
|
+
"You are an impeccable design-system locator. Apply the impeccable `extract` sub-skill (https://github.com/pbakaus/impeccable/blob/main/site/content/skills/extract.md) to find design-system evidence already living in this codebase.",
|
|
287
|
+
],
|
|
288
|
+
[
|
|
289
|
+
"objective",
|
|
290
|
+
`Find UI/design-system sources for this request: ${prompt}`,
|
|
291
|
+
],
|
|
292
|
+
[
|
|
293
|
+
"impeccable_skill",
|
|
294
|
+
"extract — only flag patterns used three or more times with the same intent. Two usages are not a pattern. Identify tokens, components, composition patterns, type styles, and motion patterns.",
|
|
295
|
+
],
|
|
296
|
+
[
|
|
297
|
+
"instructions",
|
|
298
|
+
[
|
|
299
|
+
"1. Locate UI components, stylesheets, tokens (CSS custom properties, Tailwind config, CSS-in-JS themes, design-token files), Storybook/examples, screenshots, tests, and design docs.",
|
|
300
|
+
"2. Return concrete file paths plus why each path informs design generation.",
|
|
301
|
+
"3. Separate primary sources from supporting examples.",
|
|
302
|
+
"4. If no explicit design system exists, identify the strongest implicit evidence (most-repeated literals, dominant component patterns).",
|
|
303
|
+
].join("\n"),
|
|
304
|
+
],
|
|
305
|
+
[
|
|
306
|
+
"output_format",
|
|
307
|
+
"Markdown table: Path | Evidence type | What it reveals | Repetitions seen | Confidence (low/med/high).",
|
|
308
|
+
],
|
|
309
|
+
]),
|
|
310
|
+
...designModelConfig,
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
name: "ds-analyzer",
|
|
314
|
+
task: taggedPrompt([
|
|
315
|
+
[
|
|
316
|
+
"role",
|
|
317
|
+
"You are an impeccable UI architecture auditor. Apply the impeccable `audit` sub-skill (https://github.com/pbakaus/impeccable/blob/main/site/content/skills/audit.md) to score the project's UI implementation across five dimensions.",
|
|
318
|
+
],
|
|
319
|
+
[
|
|
320
|
+
"objective",
|
|
321
|
+
`Audit the project UI constraints that must shape: ${prompt}`,
|
|
322
|
+
],
|
|
323
|
+
[
|
|
324
|
+
"impeccable_skill",
|
|
325
|
+
"audit — score 0–4 across Accessibility, Performance, Theming, Responsive, Anti-patterns. Tag every finding P0 (blocks release) → P3 (polish). Document, do not fix.",
|
|
326
|
+
],
|
|
327
|
+
[
|
|
328
|
+
"instructions",
|
|
329
|
+
[
|
|
330
|
+
"1. Inspect: UI stack, styling approach, token usage, responsive behavior, accessibility conventions, component APIs.",
|
|
331
|
+
"2. Ground every claim in exact paths, symbols, or code examples.",
|
|
332
|
+
"3. Call out constraints that generated designs MUST follow to integrate cleanly.",
|
|
333
|
+
"4. State uncertainty rather than guessing when evidence is incomplete.",
|
|
334
|
+
].join("\n"),
|
|
335
|
+
],
|
|
336
|
+
[
|
|
337
|
+
"output_format",
|
|
338
|
+
[
|
|
339
|
+
"Markdown sections in this order:",
|
|
340
|
+
"1. Stack",
|
|
341
|
+
"2. Tokens",
|
|
342
|
+
"3. Components",
|
|
343
|
+
"4. Layout / responsiveness",
|
|
344
|
+
"5. Accessibility",
|
|
345
|
+
"6. Audit scores (per dimension, 0–4)",
|
|
346
|
+
"7. Hard constraints for generation",
|
|
347
|
+
].join("\n"),
|
|
348
|
+
],
|
|
349
|
+
]),
|
|
350
|
+
...designModelConfig,
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
name: "ds-patterns",
|
|
354
|
+
task: taggedPrompt([
|
|
355
|
+
[
|
|
356
|
+
"role",
|
|
357
|
+
"You are an impeccable pattern miner. Apply the impeccable `extract` sub-skill (https://github.com/pbakaus/impeccable/blob/main/site/content/skills/extract.md) to harvest reusable design and component patterns, plus the anti-patterns to avoid.",
|
|
358
|
+
],
|
|
359
|
+
[
|
|
360
|
+
"objective",
|
|
361
|
+
`Extract reusable patterns and anti-patterns for: ${prompt}`,
|
|
362
|
+
],
|
|
363
|
+
[
|
|
364
|
+
"impeccable_skill",
|
|
365
|
+
"extract — only extract things used 3+ times with the same intent. Never extract speculatively. Always note migration implications.",
|
|
366
|
+
],
|
|
367
|
+
[
|
|
368
|
+
"instructions",
|
|
369
|
+
[
|
|
370
|
+
"1. Find naming, variant, composition, state, animation, and layout patterns that should be reused.",
|
|
371
|
+
"2. Include examples with concrete paths and component/symbol names.",
|
|
372
|
+
"3. Identify anti-patterns the generated design must avoid — cross-reference impeccable's 25 deterministic anti-patterns (gradient text, AI palettes, nested cards, side-tab borders, line-length problems, etc.).",
|
|
373
|
+
"4. Do not generalize beyond the evidence found in the repository.",
|
|
374
|
+
].join("\n"),
|
|
375
|
+
],
|
|
376
|
+
[
|
|
377
|
+
"output_format",
|
|
378
|
+
"Markdown with sections: Reusable patterns | Examples | Anti-patterns | Generation implications.",
|
|
379
|
+
],
|
|
380
|
+
]),
|
|
381
|
+
...designModelConfig,
|
|
382
|
+
},
|
|
383
|
+
],
|
|
384
|
+
{ task: prompt },
|
|
385
|
+
);
|
|
386
|
+
|
|
387
|
+
const builder = await ctx.task("design-system-builder", {
|
|
388
|
+
prompt: taggedPrompt([
|
|
389
|
+
[
|
|
390
|
+
"role",
|
|
391
|
+
"You are an impeccable design-system author. Apply the impeccable `document` sub-skill (https://github.com/pbakaus/impeccable/blob/main/site/content/skills/document.md) to synthesize a project-specific DESIGN.md in the six-section Google Stitch format from the three onboarding analyses.",
|
|
392
|
+
],
|
|
393
|
+
[
|
|
394
|
+
"objective",
|
|
395
|
+
`Build the project DESIGN.md that will steer generation for: ${prompt}`,
|
|
396
|
+
],
|
|
397
|
+
[
|
|
398
|
+
"impeccable_skill",
|
|
399
|
+
"document — output the six fixed sections in fixed order: Overview, Colors, Typography, Elevation, Components, Do's and Don'ts. Pick a single named Creative North Star metaphor; use descriptive color names; commit to non-default fonts when justified.",
|
|
400
|
+
],
|
|
401
|
+
["onboarding_analysis", "{previous}"],
|
|
402
|
+
[
|
|
403
|
+
"instructions",
|
|
404
|
+
[
|
|
405
|
+
"1. Synthesize locator + auditor + pattern-miner evidence into one coherent source of truth.",
|
|
406
|
+
"2. Keep every claim traceable to a path or symbol from the analysis.",
|
|
407
|
+
"3. Prefer concrete tokens, component conventions, and accessibility rules over vague style adjectives.",
|
|
408
|
+
"4. List assumptions in a separate trailing section; never mix them with verified rules.",
|
|
409
|
+
].join("\n"),
|
|
410
|
+
],
|
|
411
|
+
[
|
|
412
|
+
"output_format",
|
|
413
|
+
[
|
|
414
|
+
"Markdown with exactly these headings, in this order:",
|
|
415
|
+
"## Overview (include the Creative North Star)",
|
|
416
|
+
"## Colors",
|
|
417
|
+
"## Typography",
|
|
418
|
+
"## Elevation",
|
|
419
|
+
"## Components",
|
|
420
|
+
"## Do's and Don'ts (use the impeccable named-rule style)",
|
|
421
|
+
"## Verified vs Assumed",
|
|
422
|
+
].join("\n"),
|
|
423
|
+
],
|
|
424
|
+
]),
|
|
425
|
+
previous: onboarding,
|
|
426
|
+
...designModelConfig,
|
|
427
|
+
});
|
|
428
|
+
designSystem = builder.text;
|
|
429
|
+
onboarding = [...onboarding, builder];
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
const importSteps: WorkflowTaskStep[] = [];
|
|
433
|
+
if (isUrl(reference)) {
|
|
434
|
+
importSteps.push({
|
|
435
|
+
name: "web-capture",
|
|
436
|
+
task: taggedPrompt([
|
|
437
|
+
[
|
|
438
|
+
"role",
|
|
439
|
+
"You are an impeccable reference extractor for live web pages. Apply the impeccable `extract` sub-skill (https://github.com/pbakaus/impeccable/blob/main/site/content/skills/extract.md) to pull only the design traits that should transfer into the project — never just clone the source.",
|
|
440
|
+
],
|
|
441
|
+
[
|
|
442
|
+
"objective",
|
|
443
|
+
`Capture transferable design intent from this reference for: ${prompt}`,
|
|
444
|
+
],
|
|
445
|
+
["reference_url", reference],
|
|
446
|
+
[
|
|
447
|
+
"impeccable_skill",
|
|
448
|
+
"extract — separate one-off styling from repeated, intentional patterns. Only carry forward what is used 3+ times or what is structurally load-bearing.",
|
|
449
|
+
],
|
|
450
|
+
[
|
|
451
|
+
"instructions",
|
|
452
|
+
[
|
|
453
|
+
"1. Use browser/screenshot tooling (e.g. playwright-cli) if available; cite observable evidence rather than guessing.",
|
|
454
|
+
"2. Analyze: layout, visual hierarchy, navigation, color, typography, spacing, states, interactions, responsive behavior.",
|
|
455
|
+
"3. Separate reference-specific styling from requirements that should transfer to this project's design system.",
|
|
456
|
+
"4. If the URL is inaccessible, state that and provide a best-effort fallback based only on available information — never fabricate observations.",
|
|
457
|
+
].join("\n"),
|
|
458
|
+
],
|
|
459
|
+
[
|
|
460
|
+
"output_format",
|
|
461
|
+
"Markdown sections: Observable design traits | Transferable requirements | Assets/content | Uncertainty.",
|
|
462
|
+
],
|
|
463
|
+
]),
|
|
464
|
+
...designModelConfig,
|
|
465
|
+
});
|
|
466
|
+
}
|
|
467
|
+
if (isFileLike(reference)) {
|
|
468
|
+
importSteps.push({
|
|
469
|
+
name: "file-parser",
|
|
470
|
+
task: taggedPrompt([
|
|
471
|
+
[
|
|
472
|
+
"role",
|
|
473
|
+
"You are an impeccable reference parser for local design files. Apply the impeccable `extract` sub-skill (https://github.com/pbakaus/impeccable/blob/main/site/content/skills/extract.md) to lift concrete, citable requirements out of supplied references.",
|
|
474
|
+
],
|
|
475
|
+
[
|
|
476
|
+
"objective",
|
|
477
|
+
`Extract actionable design requirements for: ${prompt}`,
|
|
478
|
+
],
|
|
479
|
+
["reference", reference],
|
|
480
|
+
[
|
|
481
|
+
"impeccable_skill",
|
|
482
|
+
"extract — quote or cite concrete sections/paths; never hallucinate content that is not in the source.",
|
|
483
|
+
],
|
|
484
|
+
[
|
|
485
|
+
"instructions",
|
|
486
|
+
[
|
|
487
|
+
"1. Extract: requirements, tokens, layout details, interaction notes, assets, copy, constraints, acceptance criteria.",
|
|
488
|
+
"2. Quote or cite concrete sections/paths wherever possible.",
|
|
489
|
+
"3. Separate explicit requirements from inferred design direction.",
|
|
490
|
+
"4. If the reference cannot be read, say exactly what failed and what remains unknown.",
|
|
491
|
+
].join("\n"),
|
|
492
|
+
],
|
|
493
|
+
[
|
|
494
|
+
"output_format",
|
|
495
|
+
"Markdown sections: Explicit requirements | Inferred direction | Assets/copy | Constraints | Unknowns.",
|
|
496
|
+
],
|
|
497
|
+
]),
|
|
498
|
+
...designModelConfig,
|
|
499
|
+
});
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
const imports =
|
|
503
|
+
importSteps.length > 0
|
|
504
|
+
? await ctx.parallel(importSteps, { task: prompt })
|
|
505
|
+
: [];
|
|
506
|
+
const importContext =
|
|
507
|
+
imports.length > 0
|
|
508
|
+
? joinResults(imports)
|
|
509
|
+
: "No external reference was provided; infer the design direction from the prompt and project design system.";
|
|
510
|
+
|
|
511
|
+
const generated = await ctx.task("generator", {
|
|
512
|
+
prompt: taggedPrompt([
|
|
513
|
+
[
|
|
514
|
+
"role",
|
|
515
|
+
"You are an impeccable design-and-build engineer. Apply the impeccable `craft` sub-skill (https://github.com/pbakaus/impeccable/blob/main/site/content/skills/craft.md) to ship a production-quality HTML artifact that traces back to the synthesized DESIGN.md.",
|
|
516
|
+
],
|
|
517
|
+
[
|
|
518
|
+
"objective",
|
|
519
|
+
`Generate the first revision of a production-ready ${outputType} for: ${prompt}. Write it to disk as an interactive HTML preview the user can open in a browser.`,
|
|
520
|
+
],
|
|
521
|
+
[
|
|
522
|
+
"impeccable_skill",
|
|
523
|
+
"craft — four phases: (1) read the brief, (2) load relevant references, (3) build with deliberate ordering (structure → spacing/hierarchy → type/color → states → motion → responsive), (4) iterate visually. Every decision must trace back to the brief.",
|
|
524
|
+
],
|
|
525
|
+
["design_system", designSystem],
|
|
526
|
+
["reference_context", importContext],
|
|
527
|
+
["preview_artifact_path", previewPath],
|
|
528
|
+
["html_rules", HTML_PREVIEW_RULES],
|
|
529
|
+
["anti_slop_rules", ANTI_SLOP_RULES],
|
|
530
|
+
[
|
|
531
|
+
"instructions",
|
|
532
|
+
[
|
|
533
|
+
`1. Use the Write tool to create the HTML artifact at exactly this path: ${previewPath}.`,
|
|
534
|
+
"2. Treat the verified DESIGN.md rules as hard constraints unless a conflict is explicitly flagged.",
|
|
535
|
+
`3. Build the artifact as the requested output_type (${outputType}). For prototypes/pages, render full layouts with realistic content. For components, render the component in 3+ representative contexts (default, with content variations, with state variations).`,
|
|
536
|
+
"4. Include structure, states, accessibility behavior, responsive behavior, and integration notes — but keep them in HTML comments inside the file so the rendered preview stays clean.",
|
|
537
|
+
"5. Do not use generic placeholder language when project conventions are available.",
|
|
538
|
+
"6. After writing the file, return a short markdown summary (NOT the HTML body) describing what you built, the decisions you made, and assumptions you are leaving for the user to confirm.",
|
|
539
|
+
].join("\n"),
|
|
540
|
+
],
|
|
541
|
+
[
|
|
542
|
+
"output_format",
|
|
543
|
+
[
|
|
544
|
+
"Return markdown with the headings below. DO NOT paste the HTML; the file at preview_artifact_path is the artifact.",
|
|
545
|
+
"1. Artifact overview",
|
|
546
|
+
"2. Files written (must include the absolute path to preview.html)",
|
|
547
|
+
"3. UI structure and states (referenced by HTML section IDs)",
|
|
548
|
+
"4. Accessibility and responsive behavior",
|
|
549
|
+
"5. Implementation notes",
|
|
550
|
+
"6. Assumptions / open questions",
|
|
551
|
+
].join("\n"),
|
|
552
|
+
],
|
|
553
|
+
]),
|
|
554
|
+
previous: [...onboarding, ...imports],
|
|
555
|
+
...designModelConfig,
|
|
556
|
+
});
|
|
557
|
+
|
|
558
|
+
let latestDesign = generated.text;
|
|
559
|
+
let approvedForExport = false;
|
|
560
|
+
let refinementCount = 0;
|
|
561
|
+
|
|
562
|
+
// Try to display the freshly generated preview to the user via playwright-cli.
|
|
563
|
+
await ctx
|
|
564
|
+
.task("preview-display-initial", {
|
|
565
|
+
prompt: taggedPrompt([
|
|
566
|
+
[
|
|
567
|
+
"role",
|
|
568
|
+
"You are a preview presenter. Your job is to make the just-generated HTML artifact visible to the user so they can give feedback.",
|
|
569
|
+
],
|
|
570
|
+
[
|
|
571
|
+
"objective",
|
|
572
|
+
"Open the HTML preview file in a browser using playwright-cli and prompt the user for annotated feedback. Gracefully degrade if playwright-cli is unavailable.",
|
|
573
|
+
],
|
|
574
|
+
["preview_path", previewPath],
|
|
575
|
+
["preview_file_url", previewFileUrl],
|
|
576
|
+
[
|
|
577
|
+
"instructions",
|
|
578
|
+
[
|
|
579
|
+
"1. Probe for playwright-cli availability by running `playwright-cli --version` (or `npx --no-install playwright-cli --version`). Do not install anything.",
|
|
580
|
+
`2. If available, run: \`playwright-cli open ${previewFileUrl}\` then \`playwright-cli show --annotate\` so the user can draw boxes and leave notes directly on the live page.`,
|
|
581
|
+
"3. Once the user finishes annotating, capture the returned annotated snapshot path / notes and surface them in your output.",
|
|
582
|
+
`4. If playwright-cli is NOT available, do not attempt installation. Instead, print a clear instruction block telling the user to open the file manually at: ${previewPath} (or via the URL ${previewFileUrl}).`,
|
|
583
|
+
"5. Never block the workflow on unavailable tooling; always exit with a non-empty status string.",
|
|
584
|
+
].join("\n"),
|
|
585
|
+
],
|
|
586
|
+
[
|
|
587
|
+
"output_format",
|
|
588
|
+
"Markdown with: `display_method`, `preview_path`, `annotated_snapshot` (if available), `user_notes` (if available), `next_action_hint`.",
|
|
589
|
+
],
|
|
590
|
+
]),
|
|
591
|
+
...designModelConfig,
|
|
592
|
+
})
|
|
593
|
+
.catch(() => undefined);
|
|
594
|
+
|
|
595
|
+
for (let iteration = 1; iteration <= maxRefinements; iteration += 1) {
|
|
596
|
+
refinementCount = iteration;
|
|
597
|
+
|
|
598
|
+
const feedback = await ctx.task(`user-feedback-${iteration}`, {
|
|
599
|
+
prompt: taggedPrompt([
|
|
600
|
+
[
|
|
601
|
+
"role",
|
|
602
|
+
"You are an impeccable design reviewer collecting actionable refinement feedback from the user about the rendered HTML preview. Apply the impeccable `critique` sub-skill (https://github.com/pbakaus/impeccable/blob/main/site/content/skills/critique.md) to decide whether the artifact is ready.",
|
|
603
|
+
],
|
|
604
|
+
[
|
|
605
|
+
"objective",
|
|
606
|
+
`Decide whether refinement is needed for iteration ${iteration}/${maxRefinements} of: ${prompt}.`,
|
|
607
|
+
],
|
|
608
|
+
[
|
|
609
|
+
"impeccable_skill",
|
|
610
|
+
"critique — score Nielsen's 10 heuristics 0–4, cognitive-load count 0–8, persona-based passes, cross-check the 25 anti-pattern detector. Produce a prioritized list, not free-form prose.",
|
|
611
|
+
],
|
|
612
|
+
["preview_path", previewPath],
|
|
613
|
+
["preview_file_url", previewFileUrl],
|
|
614
|
+
["current_design_summary", "{previous}"],
|
|
615
|
+
[
|
|
616
|
+
"instructions",
|
|
617
|
+
[
|
|
618
|
+
"1. If a previous `preview-display-*` step captured annotated user feedback or notes, honor them as the primary signal.",
|
|
619
|
+
"2. Otherwise, you may inspect the HTML file at preview_path directly (read it from disk) and run an impeccable `critique` against it.",
|
|
620
|
+
"3. If the current design is ready for export, reply with the exact phrase `refinement complete — <reason>`.",
|
|
621
|
+
"4. Otherwise, list specific changes needed, ordered by user value and implementation risk. Prefer concrete fixes over subjective taste notes.",
|
|
622
|
+
"5. Never request changes that contradict DESIGN.md unless you explicitly identify and explain the conflict.",
|
|
623
|
+
].join("\n"),
|
|
624
|
+
],
|
|
625
|
+
[
|
|
626
|
+
"output_format",
|
|
627
|
+
"Either the literal phrase `refinement complete — <reason>`, OR markdown bullets grouped under `Priority 1`, `Priority 2`, `Priority 3` headings.",
|
|
628
|
+
],
|
|
629
|
+
]),
|
|
630
|
+
previous: { name: "current-design", text: latestDesign },
|
|
631
|
+
...designModelConfig,
|
|
632
|
+
});
|
|
633
|
+
|
|
634
|
+
if (refinementComplete(feedback.text)) {
|
|
635
|
+
approvedForExport = true;
|
|
636
|
+
break;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
const validation = await ctx.parallel(
|
|
640
|
+
[
|
|
641
|
+
{
|
|
642
|
+
name: `critique-${iteration}`,
|
|
643
|
+
task: taggedPrompt([
|
|
644
|
+
[
|
|
645
|
+
"role",
|
|
646
|
+
"You are an impeccable design critic. Apply the impeccable `critique` sub-skill (https://github.com/pbakaus/impeccable/blob/main/site/content/skills/critique.md) to run the formal two-pass review against the live HTML preview.",
|
|
647
|
+
],
|
|
648
|
+
[
|
|
649
|
+
"objective",
|
|
650
|
+
`Critique the current ${outputType} for: ${prompt}. Produce the formal impeccable critique report.`,
|
|
651
|
+
],
|
|
652
|
+
[
|
|
653
|
+
"impeccable_skill",
|
|
654
|
+
"critique — two parallel passes: (a) LLM design review with Nielsen heuristic scores (0–4), cognitive-load failure count (0–8), persona scoring, and AI-slop verdict; (b) deterministic detector for the 25 anti-patterns (gradient text, purple palettes, side-tab borders, nested cards, line-length issues, etc.).",
|
|
655
|
+
],
|
|
656
|
+
["preview_path", previewPath],
|
|
657
|
+
["current_design_and_feedback", "{previous}"],
|
|
658
|
+
[
|
|
659
|
+
"instructions",
|
|
660
|
+
[
|
|
661
|
+
"1. Read the HTML at preview_path and ground every finding in concrete element/selector references.",
|
|
662
|
+
"2. Return concrete fixes only; avoid generic praise or non-actionable subjective notes.",
|
|
663
|
+
"3. Call out every DESIGN.md conflict and every missing state explicitly.",
|
|
664
|
+
].join("\n"),
|
|
665
|
+
],
|
|
666
|
+
[
|
|
667
|
+
"output_format",
|
|
668
|
+
[
|
|
669
|
+
"Markdown with sections in this order:",
|
|
670
|
+
"1. AI-slop verdict (PASS or FAIL with the specific tells)",
|
|
671
|
+
"2. Heuristic scores (table: heuristic | 0–4)",
|
|
672
|
+
"3. Cognitive load failure count (0–8) with named failures",
|
|
673
|
+
"4. Issues table: Issue | Evidence (selector/line) | Impact | Recommended fix | Severity P0–P3",
|
|
674
|
+
"5. Questions worth answering before shipping",
|
|
675
|
+
].join("\n"),
|
|
676
|
+
],
|
|
677
|
+
]),
|
|
678
|
+
previous: [
|
|
679
|
+
{ name: "current-design", text: latestDesign },
|
|
680
|
+
feedback,
|
|
681
|
+
],
|
|
682
|
+
...designModelConfig,
|
|
683
|
+
},
|
|
684
|
+
{
|
|
685
|
+
name: `screenshot-${iteration}`,
|
|
686
|
+
task: taggedPrompt([
|
|
687
|
+
[
|
|
688
|
+
"role",
|
|
689
|
+
"You are an impeccable visual QA specialist for the rendered HTML preview. Apply the impeccable `audit` (https://github.com/pbakaus/impeccable/blob/main/site/content/skills/audit.md) plus `live` (https://github.com/pbakaus/impeccable/blob/main/site/content/skills/live.md) sub-skills to validate the rendered output against breakpoints, states, and accessibility.",
|
|
690
|
+
],
|
|
691
|
+
[
|
|
692
|
+
"objective",
|
|
693
|
+
`Validate visual implementation risks for: ${prompt}.`,
|
|
694
|
+
],
|
|
695
|
+
[
|
|
696
|
+
"impeccable_skill",
|
|
697
|
+
"audit + live — `audit` covers contrast, performance, theming, responsive, anti-patterns with P0–P3 severities; `live` validates against the actual rendered page in a real browser, not the source.",
|
|
698
|
+
],
|
|
699
|
+
["preview_path", previewPath],
|
|
700
|
+
["preview_file_url", previewFileUrl],
|
|
701
|
+
["current_design_and_feedback", "{previous}"],
|
|
702
|
+
[
|
|
703
|
+
"instructions",
|
|
704
|
+
[
|
|
705
|
+
`1. Attempt rendering verification via playwright-cli: \`playwright-cli open ${previewFileUrl}\`, then \`playwright-cli resize 360 800\`, \`playwright-cli screenshot --filename=${join(artifactDir, `mobile-${iteration}.png`)}\`, \`playwright-cli resize 1440 900\`, \`playwright-cli screenshot --filename=${join(artifactDir, `desktop-${iteration}.png`)}\`.`,
|
|
706
|
+
"2. Check: contrast (WCAG AA), overflow, spacing rhythm, alignment, breakpoint behavior, empty/loading/error states, keyboard/pointer affordances, focus rings, prefers-reduced-motion.",
|
|
707
|
+
"3. If playwright-cli is unavailable, perform a static design review of the HTML source and mark every finding as `needs-rendering-verification`.",
|
|
708
|
+
"4. Distinguish confirmed visual issues from risks that need rendering verification. Never fabricate rendered evidence.",
|
|
709
|
+
].join("\n"),
|
|
710
|
+
],
|
|
711
|
+
[
|
|
712
|
+
"output_format",
|
|
713
|
+
"Markdown sections: Tooling used | Confirmed issues (with screenshot refs) | Needs rendering verification | Suggested fixes | Audit scores (0–4 per impeccable audit dimension).",
|
|
714
|
+
],
|
|
715
|
+
]),
|
|
716
|
+
previous: [
|
|
717
|
+
{ name: "current-design", text: latestDesign },
|
|
718
|
+
feedback,
|
|
719
|
+
],
|
|
720
|
+
...designModelConfig,
|
|
721
|
+
},
|
|
722
|
+
],
|
|
723
|
+
{ task: prompt },
|
|
724
|
+
);
|
|
725
|
+
|
|
726
|
+
const applied = await ctx.task(`apply-changes-${iteration}`, {
|
|
727
|
+
prompt: taggedPrompt([
|
|
728
|
+
[
|
|
729
|
+
"role",
|
|
730
|
+
"You are an impeccable design polisher. Apply the impeccable `polish` sub-skill (https://github.com/pbakaus/impeccable/blob/main/site/content/skills/polish.md) — the meticulous final pass between good and great — to revise the HTML preview in place.",
|
|
731
|
+
],
|
|
732
|
+
[
|
|
733
|
+
"objective",
|
|
734
|
+
`Produce the next ${outputType} revision for: ${prompt}. Update the HTML file in place; do not branch the artifact.`,
|
|
735
|
+
],
|
|
736
|
+
[
|
|
737
|
+
"impeccable_skill",
|
|
738
|
+
"polish — work methodically across six dimensions: (1) visual alignment/spacing, (2) typography, (3) color/contrast, (4) interaction states, (5) transitions/motion, (6) copy. Refine; do not redesign.",
|
|
739
|
+
],
|
|
740
|
+
["design_system", designSystem],
|
|
741
|
+
["preview_artifact_path", previewPath],
|
|
742
|
+
["revision_context", "{previous}"],
|
|
743
|
+
[
|
|
744
|
+
"instructions",
|
|
745
|
+
[
|
|
746
|
+
"1. Read the current HTML at preview_artifact_path with your file-read tool.",
|
|
747
|
+
`2. Apply user feedback, critique findings, screenshot/visual QA findings, and DESIGN.md constraints together. Overwrite ${previewPath} with the revised HTML (full file rewrite, not patches — the artifact must always be self-contained).`,
|
|
748
|
+
"3. Preserve strong existing design decisions unless a finding requires change.",
|
|
749
|
+
"4. Resolve conflicting feedback explicitly; choose the safest DESIGN.md-aligned option and note the trade-off.",
|
|
750
|
+
"5. Update states, accessibility, responsiveness, and HTML implementation comments when changes affect them.",
|
|
751
|
+
"6. After writing, return a short markdown summary listing the changes, trade-offs, and remaining questions — do NOT paste the HTML body.",
|
|
752
|
+
].join("\n"),
|
|
753
|
+
],
|
|
754
|
+
[
|
|
755
|
+
"output_format",
|
|
756
|
+
[
|
|
757
|
+
"Markdown with headings:",
|
|
758
|
+
"1. Revised artifact (path only)",
|
|
759
|
+
"2. Changes applied (bullet list, each tied to a critique or screenshot finding)",
|
|
760
|
+
"3. Trade-offs / conflicts resolved",
|
|
761
|
+
"4. Remaining questions",
|
|
762
|
+
].join("\n"),
|
|
763
|
+
],
|
|
764
|
+
]),
|
|
765
|
+
previous: [
|
|
766
|
+
{ name: "current-design", text: latestDesign },
|
|
767
|
+
feedback,
|
|
768
|
+
...validation,
|
|
769
|
+
],
|
|
770
|
+
...designModelConfig,
|
|
771
|
+
});
|
|
772
|
+
latestDesign = applied.text;
|
|
773
|
+
|
|
774
|
+
// Re-display the freshly revised preview so the user can keep iterating.
|
|
775
|
+
await ctx
|
|
776
|
+
.task(`preview-display-${iteration}`, {
|
|
777
|
+
prompt: taggedPrompt([
|
|
778
|
+
[
|
|
779
|
+
"role",
|
|
780
|
+
"You are a preview presenter. Re-open the revised HTML preview so the user can review the latest iteration.",
|
|
781
|
+
],
|
|
782
|
+
[
|
|
783
|
+
"objective",
|
|
784
|
+
`Show the user the revised preview after iteration ${iteration}/${maxRefinements} and capture any new annotated feedback for the next loop.`,
|
|
785
|
+
],
|
|
786
|
+
["preview_path", previewPath],
|
|
787
|
+
["preview_file_url", previewFileUrl],
|
|
788
|
+
[
|
|
789
|
+
"instructions",
|
|
790
|
+
[
|
|
791
|
+
`1. If playwright-cli is available, run \`playwright-cli goto ${previewFileUrl}\` (or open if no session is active), then \`playwright-cli show --annotate\` to invite annotated feedback.`,
|
|
792
|
+
`2. If playwright-cli is unavailable, surface the path clearly: ${previewPath} (URL: ${previewFileUrl}).`,
|
|
793
|
+
"3. Return any captured annotations as structured notes the next user-feedback step can read.",
|
|
794
|
+
"4. Do not block on unavailable tooling.",
|
|
795
|
+
].join("\n"),
|
|
796
|
+
],
|
|
797
|
+
[
|
|
798
|
+
"output_format",
|
|
799
|
+
"Markdown with: `display_method`, `preview_path`, `annotated_snapshot` (if any), `user_notes` (if any), `next_action_hint`.",
|
|
800
|
+
],
|
|
801
|
+
]),
|
|
802
|
+
...designModelConfig,
|
|
803
|
+
})
|
|
804
|
+
.catch(() => undefined);
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
const preExport = await ctx.task("pre-export-scan", {
|
|
808
|
+
prompt: taggedPrompt([
|
|
809
|
+
[
|
|
810
|
+
"role",
|
|
811
|
+
"You are an impeccable pre-release gate. Apply the impeccable `audit` sub-skill (https://github.com/pbakaus/impeccable/blob/main/site/content/skills/audit.md) one final time to block export only for concrete, evidence-backed issues.",
|
|
812
|
+
],
|
|
813
|
+
[
|
|
814
|
+
"objective",
|
|
815
|
+
`Final quality gate for this ${outputType}: ${prompt}. Decide whether the HTML preview at preview_path is safe to export.`,
|
|
816
|
+
],
|
|
817
|
+
[
|
|
818
|
+
"impeccable_skill",
|
|
819
|
+
"audit — score Accessibility, Performance, Theming, Responsive, Anti-patterns 0–4. Only P0 (blocks release) findings should be marked blocking here.",
|
|
820
|
+
],
|
|
821
|
+
["preview_path", previewPath],
|
|
822
|
+
["final_design_summary", "{previous}"],
|
|
823
|
+
[
|
|
824
|
+
"instructions",
|
|
825
|
+
[
|
|
826
|
+
"1. Read the HTML at preview_path and score it across all five audit dimensions.",
|
|
827
|
+
"2. Scan for banned anti-patterns, accessibility blockers, severe visual regressions, missing critical states, and handoff gaps.",
|
|
828
|
+
"3. Only mark findings as blocking when they would materially harm implementation or user experience (impeccable P0 severity).",
|
|
829
|
+
"4. If safe to export, use the exact phrase `no blocking findings`.",
|
|
830
|
+
"5. Every blocking finding must include selector-level evidence and a must-fix action.",
|
|
831
|
+
].join("\n"),
|
|
832
|
+
],
|
|
833
|
+
[
|
|
834
|
+
"output_format",
|
|
835
|
+
"Either the literal phrase `no blocking findings`, OR a markdown table: Finding | Evidence (selector/line) | Why blocking | Must-fix action | Severity (P0).",
|
|
836
|
+
],
|
|
837
|
+
]),
|
|
838
|
+
previous: { name: "final-design", text: latestDesign },
|
|
839
|
+
...designModelConfig,
|
|
840
|
+
});
|
|
841
|
+
|
|
842
|
+
if (hasBlockingFindings(preExport.text)) {
|
|
843
|
+
const forcedFix = await ctx.task("forced-fix", {
|
|
844
|
+
prompt: taggedPrompt([
|
|
845
|
+
[
|
|
846
|
+
"role",
|
|
847
|
+
"You are an impeccable production-readiness hardener. Apply the impeccable `harden` sub-skill (https://github.com/pbakaus/impeccable/blob/main/site/content/skills/harden.md) to remove blocking findings without redesigning.",
|
|
848
|
+
],
|
|
849
|
+
[
|
|
850
|
+
"objective",
|
|
851
|
+
`Remove the blocking findings from the HTML preview without broad redesign. Output: ${prompt}.`,
|
|
852
|
+
],
|
|
853
|
+
[
|
|
854
|
+
"impeccable_skill",
|
|
855
|
+
"harden — make the artifact production-ready against real-world data extremes, error scenarios, internationalization, and device/context variability. Fix only what is broken; do not redesign.",
|
|
856
|
+
],
|
|
857
|
+
["blocking_findings", preExport.text],
|
|
858
|
+
["design_system", designSystem],
|
|
859
|
+
["preview_artifact_path", previewPath],
|
|
860
|
+
["current_final_design_summary", "{previous}"],
|
|
861
|
+
[
|
|
862
|
+
"instructions",
|
|
863
|
+
[
|
|
864
|
+
"1. Read the HTML at preview_artifact_path and apply only the fixes needed to clear the blocking findings.",
|
|
865
|
+
`2. Overwrite ${previewPath} with the corrected HTML (full file rewrite, still self-contained).`,
|
|
866
|
+
"3. Preserve DESIGN.md alignment and previously approved decisions.",
|
|
867
|
+
"4. Explain each forced change and how it resolves a specific blocking finding.",
|
|
868
|
+
"5. If a blocker cannot be resolved with available context, state the remaining risk plainly and propose a follow-up.",
|
|
869
|
+
].join("\n"),
|
|
870
|
+
],
|
|
871
|
+
[
|
|
872
|
+
"output_format",
|
|
873
|
+
"Markdown with sections: Corrected final design (path) | Forced fixes applied (table: finding → fix) | Remaining risk.",
|
|
874
|
+
],
|
|
875
|
+
]),
|
|
876
|
+
previous: { name: "final-design", text: latestDesign },
|
|
877
|
+
...designModelConfig,
|
|
878
|
+
});
|
|
879
|
+
latestDesign = forcedFix.text;
|
|
880
|
+
}
|
|
881
|
+
|
|
882
|
+
const handoff = await ctx.task("exporter", {
|
|
883
|
+
prompt: taggedPrompt([
|
|
884
|
+
[
|
|
885
|
+
"role",
|
|
886
|
+
"You are an impeccable design documenter. Apply the impeccable `document` sub-skill (https://github.com/pbakaus/impeccable/blob/main/site/content/skills/document.md) to produce a RICH HTML SPEC that bundles the approved preview together with implementation guidance for Claude Code / frontend engineers.",
|
|
887
|
+
],
|
|
888
|
+
[
|
|
889
|
+
"objective",
|
|
890
|
+
`Export the final ${outputType} for "${prompt}" as a rich HTML spec the engineering team can read directly in a browser. The spec must embed or link the approved preview so reviewers see exactly what is being implemented.`,
|
|
891
|
+
],
|
|
892
|
+
[
|
|
893
|
+
"impeccable_skill",
|
|
894
|
+
"document — the spec must mirror the six-section DESIGN.md structure (Overview, Colors, Typography, Elevation, Components, Do's and Don'ts), plus implementation-handoff sections specific to this artifact.",
|
|
895
|
+
],
|
|
896
|
+
["design_system", designSystem],
|
|
897
|
+
["preview_artifact_path", previewPath],
|
|
898
|
+
["spec_artifact_path", specPath],
|
|
899
|
+
["final_design_summary", "{previous}"],
|
|
900
|
+
[
|
|
901
|
+
"instructions",
|
|
902
|
+
[
|
|
903
|
+
`1. Read the approved HTML at preview_artifact_path. Use it as the canonical source of truth for the agreed design.`,
|
|
904
|
+
`2. Use the Write tool to create a rich HTML document at exactly: ${specPath}. The spec must be a single self-contained HTML5 file.`,
|
|
905
|
+
"3. The spec MUST contain, in order: (a) a sticky header with the design title + status + run id, (b) an Executive Summary section, (c) a 'Live Preview' section that EMBEDS the approved design via either an `<iframe srcdoc=\"...\">` containing the full preview HTML or a side-by-side rendered copy of the preview inside an `<article class=\"preview-frame\">` container, (d) the six DESIGN.md sections (Overview, Colors, Typography, Elevation, Components, Do's and Don'ts) rendered with swatches/tables/code blocks, (e) Implementation handoff (Recommended files + components | Implementation steps | Usage example | Accessibility & responsive checklist | Validation commands | Known limitations), (f) Appendix linking to the raw preview file path.",
|
|
906
|
+
"4. Style the spec itself with care: high-density legible typography, generous whitespace, code blocks with monospaced font, swatches that render with the actual hex/oklch values, copy-to-clipboard hints in HTML comments.",
|
|
907
|
+
`5. Embed the absolute preview path (${previewPath}) and file URL (${previewFileUrl}) prominently so the user can open the live preview separately.`,
|
|
908
|
+
"6. Preserve assumptions and known limitations so implementers do not treat uncertain items as facts.",
|
|
909
|
+
"7. Do not introduce design requirements that were absent from the final design or DESIGN.md.",
|
|
910
|
+
"8. After writing, return a concise markdown summary of what is in the spec (NOT the HTML).",
|
|
911
|
+
].join("\n"),
|
|
912
|
+
],
|
|
913
|
+
["html_rules", HTML_PREVIEW_RULES],
|
|
914
|
+
["anti_slop_rules", ANTI_SLOP_RULES],
|
|
915
|
+
[
|
|
916
|
+
"output_format",
|
|
917
|
+
[
|
|
918
|
+
"Return markdown with headings (NOT the HTML):",
|
|
919
|
+
"1. Spec written to (absolute path)",
|
|
920
|
+
"2. Sections included",
|
|
921
|
+
"3. How to open the spec (playwright-cli command + manual fallback path)",
|
|
922
|
+
"4. Recommended files and components",
|
|
923
|
+
"5. Implementation steps",
|
|
924
|
+
"6. Usage example",
|
|
925
|
+
"7. Accessibility / responsive checklist",
|
|
926
|
+
"8. Validation commands",
|
|
927
|
+
"9. Known limitations",
|
|
928
|
+
].join("\n"),
|
|
929
|
+
],
|
|
930
|
+
]),
|
|
931
|
+
previous: { name: "final-design", text: latestDesign },
|
|
932
|
+
...designModelConfig,
|
|
933
|
+
});
|
|
934
|
+
|
|
935
|
+
// Final display attempt: open the spec.html for the user (or surface its path).
|
|
936
|
+
await ctx
|
|
937
|
+
.task("final-display", {
|
|
938
|
+
prompt: taggedPrompt([
|
|
939
|
+
[
|
|
940
|
+
"role",
|
|
941
|
+
"You are a final-spec presenter. Make the rich HTML spec visible to the user.",
|
|
942
|
+
],
|
|
943
|
+
[
|
|
944
|
+
"objective",
|
|
945
|
+
"Open the final spec.html in a browser via playwright-cli so the user can review the agreed design and implementation handoff. Degrade gracefully if playwright-cli is unavailable.",
|
|
946
|
+
],
|
|
947
|
+
["spec_path", specPath],
|
|
948
|
+
["spec_file_url", specFileUrl],
|
|
949
|
+
["preview_path", previewPath],
|
|
950
|
+
["preview_file_url", previewFileUrl],
|
|
951
|
+
[
|
|
952
|
+
"instructions",
|
|
953
|
+
[
|
|
954
|
+
"1. Probe for playwright-cli (`playwright-cli --version` or `npx --no-install playwright-cli --version`). Never attempt installation.",
|
|
955
|
+
`2. If available, run \`playwright-cli open ${specFileUrl}\` then \`playwright-cli show --annotate\` so the user can capture any final notes.`,
|
|
956
|
+
`3. Always print, prominently, the absolute paths so the user can open them manually:\n - Final spec: ${specPath}\n - Approved preview: ${previewPath}`,
|
|
957
|
+
"4. Do not block the workflow; return a structured summary even if no tooling worked.",
|
|
958
|
+
].join("\n"),
|
|
959
|
+
],
|
|
960
|
+
[
|
|
961
|
+
"output_format",
|
|
962
|
+
"Markdown with: `display_method` | `spec_path` | `preview_path` | `annotated_snapshot` (if any) | `user_notes` (if any) | `manual_open_instructions`.",
|
|
963
|
+
],
|
|
964
|
+
]),
|
|
965
|
+
...designModelConfig,
|
|
966
|
+
})
|
|
967
|
+
.catch(() => undefined);
|
|
968
|
+
|
|
969
|
+
return {
|
|
970
|
+
output_type: outputType,
|
|
971
|
+
design_system: designSystemInput || "project-derived design system",
|
|
972
|
+
artifact: latestDesign,
|
|
973
|
+
handoff: handoff.text,
|
|
974
|
+
approved_for_export: approvedForExport,
|
|
975
|
+
refinements_completed: refinementCount,
|
|
976
|
+
import_context: importContext,
|
|
977
|
+
run_id: runId,
|
|
978
|
+
artifact_dir: artifactDir,
|
|
979
|
+
preview_path: previewPath,
|
|
980
|
+
preview_file_url: previewFileUrl,
|
|
981
|
+
spec_path: specPath,
|
|
982
|
+
spec_file_url: specFileUrl,
|
|
983
|
+
};
|
|
984
|
+
})
|
|
985
|
+
.compile();
|