opencodekit 0.15.20 → 0.16.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/dist/index.js +7 -7
- package/dist/template/.opencode/AGENTS.md +21 -20
- package/dist/template/.opencode/agent/build.md +351 -0
- package/dist/template/.opencode/{agents → agent}/explore.md +1 -1
- package/dist/template/.opencode/{agents → agent}/general.md +54 -4
- package/dist/template/.opencode/{agents → agent}/looker.md +1 -1
- package/dist/template/.opencode/{agents → agent}/painter.md +1 -1
- package/dist/template/.opencode/{agents → agent}/plan.md +52 -0
- package/dist/template/.opencode/{agents → agent}/review.md +1 -1
- package/dist/template/.opencode/{agents → agent}/scout.md +3 -3
- package/dist/template/.opencode/{agents → agent}/vision.md +1 -1
- package/dist/template/.opencode/command/create.md +277 -0
- package/dist/template/.opencode/{commands → command}/design.md +5 -7
- package/dist/template/.opencode/{commands → command}/handoff.md +43 -1
- package/dist/template/.opencode/{commands → command}/init.md +25 -47
- package/dist/template/.opencode/{commands → command}/plan.md +35 -16
- package/dist/template/.opencode/{commands → command}/research.md +4 -10
- package/dist/template/.opencode/{commands → command}/resume.md +38 -22
- package/dist/template/.opencode/command/ship.md +156 -0
- package/dist/template/.opencode/command/start.md +613 -0
- package/dist/template/.opencode/{commands → command}/ui-review.md +5 -7
- package/dist/template/.opencode/command/verify.md +279 -0
- package/dist/template/.opencode/memory/_templates/README.md +57 -19
- package/dist/template/.opencode/memory/_templates/prd.md +29 -0
- package/dist/template/.opencode/memory/_templates/project/tech-stack.md +50 -0
- package/dist/template/.opencode/memory/_templates/proposal.md +38 -0
- package/dist/template/.opencode/memory/_templates/spec.md +66 -0
- package/dist/template/.opencode/memory/_templates/tasks.md +198 -0
- package/dist/template/.opencode/memory/observations/2026-01-31-decision-created-dedicated-worker-agent-for-swarm.md +20 -0
- package/dist/template/.opencode/memory/observations/2026-01-31-decision-rollback-to-v1-1-47-for-copilot-claude-r.md +21 -0
- package/dist/template/.opencode/memory/observations/2026-01-31-decision-simplified-swarm-to-task-tool-pattern.md +44 -0
- package/dist/template/.opencode/memory/observations/2026-01-31-decision-swarm-architecture-task-tool-over-tmux.md +33 -0
- package/dist/template/.opencode/memory/observations/2026-01-31-decision-worker-skills-defined-for-swarm-delegati.md +30 -0
- package/dist/template/.opencode/memory/observations/2026-01-31-learning-gpt-reasoning-config-for-github-copilot.md +51 -0
- package/dist/template/.opencode/memory/observations/2026-01-31-learning-opencode-custom-tools-api.md +48 -0
- package/dist/template/.opencode/memory/observations/2026-01-31-learning-opencode-v1-1-48-skills-as-slash-command.md +21 -0
- package/dist/template/.opencode/memory/observations/2026-01-31-learning-swarm-system-simplified-removed-mailbox-.md +30 -0
- package/dist/template/.opencode/memory/observations/2026-01-31-learning-v1-1-48-native-copilot-reasoning-via-pr-.md +45 -0
- package/dist/template/.opencode/memory/observations/2026-01-31-warning-cannot-add-custom-config-to-opencode-jso.md +18 -0
- package/dist/template/.opencode/memory/observations/2026-01-31-warning-opencode-v1-1-48-claude-thinking-block-s.md +51 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-add-skills-vs-commands-to-global-agents-.md +15 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-build-agent-auto-loads-skills-contextual.md +31 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-fixed-agent-configuration-for-opencodeki.md +25 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-focused-agents-md-upgrade-for-opencode-k.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-implement-tier-1-permission-upgrades.md +15 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-instructions-config-explicit-paths-not-w.md +40 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-merged-context-into-memory-project-singl.md +42 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-oracle-tool-should-use-review-agent-not-.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-plan-agent-auto-loads-skills-contextuall.md +31 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-plan-phased-oracle-command-merge-into-ne.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-prd-workflow-uses-prd-and-prd-task-skill.md +23 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-prefer-review-agent-via-opencode-cli-ove.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-remove-oracle-tool-add-ship-command-with.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-remove-oracle-tool-and-add-ship-command-.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-remove-oracle-tool-and-add-ship-command.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-remove-skills-vs-commands-section-from-a.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-replace-oracle-tool-with-ship-command-fl.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-replace-oracle-with-ship-command-workflo.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-replace-proxypal-oracle-with-cli-review-.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-simplified-dist-template-only-tech-stack.md +50 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-simplified-templates-only-tech-stack-md.md +26 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-subagents-load-minimal-skills-stay-lean.md +29 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-decision-user-approved-permission-upgrades-in-ope.md +15 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-discovery-verify-command-already-implemented.md +28 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-feature-openspec-phase-b-complete-template-upgra.md +43 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-learning-build-agent-should-use-dynamic-lsp-not-f.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-learning-kimi-k2-5-model-requires-temperature-1-0.md +22 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-learning-opencode-context-injection-already-imple.md +27 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-learning-opencode-context-injection-uses-instruct.md +35 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-learning-update-build-agent-prompt-to-use-context.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-learning-upgrade-agents-md-using-opencode-expert-.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-learning-upgrade-agents-md-with-opencode-expert-g.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-learning-upgrade-agents-md-with-opencode-expert-r.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-learning-user-prefers-copilot-gpt-5-2-codex-mediu.md +14 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-learning-user-wants-general-agent-prompt-contextu.md +15 -0
- package/dist/template/.opencode/memory/observations/2026-02-01-learning-user-wants-general-agent-prompt-reviewed.md +15 -0
- package/dist/template/.opencode/memory/project/command-rules.md +122 -0
- package/dist/template/.opencode/memory/project/tech-stack.md +50 -0
- package/dist/template/.opencode/memory/research/ccpm-analysis.md +334 -0
- package/dist/template/.opencode/memory/research/openspec-analysis.md +226 -0
- package/dist/template/.opencode/opencode.json +176 -65
- package/dist/template/.opencode/package.json +2 -2
- package/dist/template/.opencode/{plugins → plugin}/copilot-auth.ts +107 -177
- package/dist/template/.opencode/{plugins → plugin}/sdk/copilot/chat/openai-compatible-chat-language-model.ts +12 -2
- package/dist/template/.opencode/{plugins → plugin}/sdk/copilot/chat/openai-compatible-chat-options.ts +1 -1
- package/dist/template/.opencode/{plugins → plugin}/sdk/copilot/openai-compatible-error.ts +1 -1
- package/dist/template/.opencode/{plugins → plugin}/swarm-enforcer.ts +18 -23
- package/dist/template/.opencode/{skills → skill}/beads/SKILL.md +41 -0
- package/dist/template/.opencode/skill/beads-bridge/SKILL.md +294 -0
- package/dist/template/.opencode/skill/resend/SKILL.md +167 -0
- package/dist/template/.opencode/skill/resend/references/react-email.md +287 -0
- package/dist/template/.opencode/skill/resend/references/receive-email.md +248 -0
- package/dist/template/.opencode/skill/resend/references/send-email.md +318 -0
- package/dist/template/.opencode/skill/swarm-coordination/SKILL.md +690 -0
- package/dist/template/.opencode/skill/tool-priority/SKILL.md +259 -0
- package/dist/template/.opencode/tool/beads-sync.ts +657 -0
- package/dist/template/.opencode/{tools → tool}/swarm-delegate.ts +13 -8
- package/dist/template/.opencode/{tools → tool}/swarm-monitor.ts +14 -170
- package/dist/template/.opencode/{tools → tool}/swarm-plan.ts +232 -1
- package/package.json +3 -1
- package/dist/template/.opencode/agents/build.md +0 -584
- package/dist/template/.opencode/commands/accessibility-check.md +0 -331
- package/dist/template/.opencode/commands/agent-browser.md +0 -21
- package/dist/template/.opencode/commands/analyze-mockup.md +0 -423
- package/dist/template/.opencode/commands/analyze-project.md +0 -295
- package/dist/template/.opencode/commands/brainstorm.md +0 -373
- package/dist/template/.opencode/commands/cloudflare.md +0 -70
- package/dist/template/.opencode/commands/commit.md +0 -245
- package/dist/template/.opencode/commands/complete-next-task.md +0 -77
- package/dist/template/.opencode/commands/create.md +0 -171
- package/dist/template/.opencode/commands/design-audit.md +0 -480
- package/dist/template/.opencode/commands/edit-image.md +0 -242
- package/dist/template/.opencode/commands/finish.md +0 -237
- package/dist/template/.opencode/commands/fix-ci.md +0 -109
- package/dist/template/.opencode/commands/fix-types.md +0 -104
- package/dist/template/.opencode/commands/fix-ui.md +0 -117
- package/dist/template/.opencode/commands/fix.md +0 -168
- package/dist/template/.opencode/commands/frontend-design.md +0 -21
- package/dist/template/.opencode/commands/generate-diagram.md +0 -349
- package/dist/template/.opencode/commands/generate-icon.md +0 -283
- package/dist/template/.opencode/commands/generate-image.md +0 -246
- package/dist/template/.opencode/commands/generate-pattern.md +0 -247
- package/dist/template/.opencode/commands/generate-storyboard.md +0 -250
- package/dist/template/.opencode/commands/implement.md +0 -607
- package/dist/template/.opencode/commands/import-plan.md +0 -406
- package/dist/template/.opencode/commands/index-knowledge.md +0 -25
- package/dist/template/.opencode/commands/integration-test.md +0 -424
- package/dist/template/.opencode/commands/issue.md +0 -102
- package/dist/template/.opencode/commands/new-feature.md +0 -650
- package/dist/template/.opencode/commands/opensrc.md +0 -58
- package/dist/template/.opencode/commands/quick-build.md +0 -238
- package/dist/template/.opencode/commands/ralph.md +0 -41
- package/dist/template/.opencode/commands/research-and-implement.md +0 -148
- package/dist/template/.opencode/commands/research-ui.md +0 -466
- package/dist/template/.opencode/commands/restore-image.md +0 -424
- package/dist/template/.opencode/commands/revert-feature.md +0 -386
- package/dist/template/.opencode/commands/skill-create.md +0 -517
- package/dist/template/.opencode/commands/skill-optimize.md +0 -556
- package/dist/template/.opencode/commands/start.md +0 -314
- package/dist/template/.opencode/commands/summarize.md +0 -412
- package/dist/template/.opencode/commands/triage.md +0 -398
- package/dist/template/.opencode/memory/_templates/project/architecture.md +0 -60
- package/dist/template/.opencode/memory/_templates/project/commands.md +0 -72
- package/dist/template/.opencode/memory/_templates/project/conventions.md +0 -68
- package/dist/template/.opencode/memory/_templates/project/gotchas.md +0 -41
- package/dist/template/.opencode/skills/notebooklm/SKILL.md +0 -272
- package/dist/template/.opencode/skills/notebooklm/references/setup.md +0 -353
- package/dist/template/.opencode/skills/swarm-coordination/SKILL.md +0 -548
- package/dist/template/.opencode/skills/tool-priority/SKILL.md +0 -190
- package/dist/template/.opencode/tools/notebooklm.ts +0 -488
- package/dist/template/.opencode/tools/oracle.ts +0 -240
- /package/dist/template/.opencode/{commands → command}/pr.md +0 -0
- /package/dist/template/.opencode/{commands → command}/review-codebase.md +0 -0
- /package/dist/template/.opencode/{commands → command}/status.md +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/README.md +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/compaction.ts +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/env-ctx.ts +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/lib/notify.ts +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/lsp.ts +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/memory.ts +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/notification.ts.bak +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/package.json +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/sdk/copilot/chat/convert-to-openai-compatible-chat-messages.ts +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/sdk/copilot/chat/get-response-metadata.ts +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/sdk/copilot/chat/map-openai-compatible-finish-reason.ts +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/sdk/copilot/chat/openai-compatible-api-types.ts +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/sdk/copilot/chat/openai-compatible-metadata-extractor.ts +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/sdk/copilot/chat/openai-compatible-prepare-tools.ts +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/sdk/copilot/copilot-provider.ts +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/sdk/copilot/index.ts +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/sessions.ts +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/skill-mcp.ts +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/truncator.ts +0 -0
- /package/dist/template/.opencode/{plugins → plugin}/tsconfig.json +0 -0
- /package/dist/template/.opencode/{skills → skill}/accessibility-audit/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/agent-browser/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/beads/references/BOUNDARIES.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/beads/references/DEPENDENCIES.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/beads/references/RESUMABILITY.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/beads/references/WORKFLOWS.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/brainstorming/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/chrome-devtools/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/chrome-devtools/mcp.json +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/agents-sdk/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/agents-sdk/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/agents-sdk/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/agents-sdk/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/agents-sdk/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/ai-gateway/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/ai-search/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/ai-search/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/ai-search/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/ai-search/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/ai-search/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/analytics-engine/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/analytics-engine/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/analytics-engine/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/analytics-engine/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/analytics-engine/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/api/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/api/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/api/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/api/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/api/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/api-shield/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/api-shield/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/api-shield/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/api-shield/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/api-shield/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/argo-smart-routing/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/argo-smart-routing/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/argo-smart-routing/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/argo-smart-routing/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/argo-smart-routing/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/bindings/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/bindings/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/bindings/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/bindings/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/bindings/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/bot-management/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/bot-management/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/bot-management/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/bot-management/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/bot-management/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/browser-rendering/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/browser-rendering/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/browser-rendering/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/browser-rendering/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/browser-rendering/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/c3/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/cache-reserve/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/cache-reserve/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/cache-reserve/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/cache-reserve/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/cache-reserve/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/containers/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/containers/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/containers/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/containers/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/containers/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/cron-triggers/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/cron-triggers/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/cron-triggers/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/cron-triggers/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/cron-triggers/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/d1/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/d1/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/d1/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/d1/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/d1/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/ddos/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/ddos/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/ddos/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/ddos/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/ddos/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/do-storage/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/do-storage/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/do-storage/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/do-storage/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/do-storage/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/durable-objects/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/durable-objects/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/durable-objects/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/durable-objects/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/durable-objects/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/email-routing/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/email-routing/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/email-routing/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/email-routing/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/email-routing/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/email-workers/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/hyperdrive/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/hyperdrive/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/hyperdrive/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/hyperdrive/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/hyperdrive/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/images/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/images/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/images/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/images/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/images/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/kv/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/kv/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/kv/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/kv/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/kv/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/miniflare/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/miniflare/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/miniflare/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/miniflare/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/miniflare/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/network-interconnect/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/network-interconnect/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/network-interconnect/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/network-interconnect/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/network-interconnect/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/observability/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/observability/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/observability/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/observability/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/observability/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/pages/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/pages/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/pages/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/pages/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/pages/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/pages-functions/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/pages-functions/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/pages-functions/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/pages-functions/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/pages-functions/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/pipelines/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/pulumi/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/pulumi/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/pulumi/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/pulumi/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/pulumi/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/queues/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/queues/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/queues/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/queues/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/queues/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/r2/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/r2/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/r2/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/r2/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/r2/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/r2-data-catalog/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/r2-data-catalog/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/r2-data-catalog/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/r2-data-catalog/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/r2-data-catalog/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/r2-sql/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/realtime-sfu/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/realtime-sfu/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/realtime-sfu/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/realtime-sfu/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/realtime-sfu/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/realtimekit/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/realtimekit/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/realtimekit/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/realtimekit/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/realtimekit/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/sandbox/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/sandbox/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/sandbox/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/sandbox/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/sandbox/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/secrets-store/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/secrets-store/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/secrets-store/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/secrets-store/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/secrets-store/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/smart-placement/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/smart-placement/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/smart-placement/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/smart-placement/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/smart-placement/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/snippets/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/snippets/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/snippets/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/snippets/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/snippets/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/spectrum/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/spectrum/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/spectrum/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/spectrum/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/spectrum/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/static-assets/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/static-assets/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/static-assets/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/static-assets/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/static-assets/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/stream/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/stream/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/stream/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/stream/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/stream/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/tail-workers/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/terraform/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/terraform/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/terraform/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/terraform/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/terraform/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/tunnel/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/tunnel/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/tunnel/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/tunnel/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/tunnel/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/turn/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/turnstile/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/turnstile/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/turnstile/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/turnstile/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/turnstile/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/vectorize/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/waf/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/waf/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/waf/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/waf/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/waf/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/web-analytics/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/web-analytics/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/web-analytics/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/web-analytics/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/web-analytics/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workerd/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workerd/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workerd/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workerd/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workerd/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers-ai/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers-for-platforms/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers-for-platforms/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers-for-platforms/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers-for-platforms/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers-for-platforms/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers-playground/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers-playground/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers-playground/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers-playground/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers-playground/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workers-vpc/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workflows/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workflows/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workflows/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workflows/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/workflows/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/wrangler/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/wrangler/api.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/wrangler/configuration.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/wrangler/gotchas.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/wrangler/patterns.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/cloudflare/references/zaraz/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/condition-based-waiting/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/condition-based-waiting/example.ts +0 -0
- /package/dist/template/.opencode/{skills → skill}/context-engineering/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/deep-research/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/defense-in-depth/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/design-system-audit/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/dispatching-parallel-agents/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/executing-plans/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/figma/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/finishing-a-development-branch/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/frontend-design/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/frontend-design/references/animation/motion-advanced.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/frontend-design/references/animation/motion-core.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/frontend-design/references/canvas/execution.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/frontend-design/references/canvas/philosophy.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/frontend-design/references/shadcn/accessibility.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/frontend-design/references/shadcn/core-components.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/frontend-design/references/shadcn/form-components.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/frontend-design/references/shadcn/setup.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/frontend-design/references/shadcn/theming.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/frontend-design/references/tailwind/responsive.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/frontend-design/references/tailwind/utilities-layout.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/frontend-design/references/tailwind/utilities-styling.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/frontend-design/references/tailwind/v4-config.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/frontend-design/references/tailwind/v4-features.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/gemini-large-context/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/index-knowledge/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/memory-system/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/mockup-to-code/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/mqdh/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/opensrc/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/opensrc/references/architecture.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/opensrc/references/cli-usage.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/opensrc/references/registry-support.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/playwright/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/playwright/mcp.json +0 -0
- /package/dist/template/.opencode/{skills → skill}/playwriter/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/polar/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/prd/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/prd-task/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/prd-task/references/prd-schema.json +0 -0
- /package/dist/template/.opencode/{skills → skill}/ralph/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/AGENTS.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/README.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/metadata.json +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/_sections.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/_template.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/advanced-event-handler-refs.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/advanced-use-latest.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/async-api-routes.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/async-defer-await.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/async-dependencies.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/async-parallel.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/async-suspense-boundaries.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/bundle-barrel-imports.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/bundle-conditional.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/bundle-defer-third-party.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/bundle-dynamic-imports.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/bundle-preload.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/client-event-listeners.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/client-localstorage-schema.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/client-passive-event-listeners.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/client-swr-dedup.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/js-batch-dom-css.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/js-cache-function-results.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/js-cache-property-access.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/js-cache-storage.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/js-combine-iterations.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/js-early-exit.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/js-hoist-regexp.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/js-index-maps.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/js-length-check-first.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/js-min-max-loop.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/js-set-map-lookups.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/js-tosorted-immutable.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/rendering-activity.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/rendering-conditional-render.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/rendering-content-visibility.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/rendering-hoist-jsx.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/rendering-hydration-no-flicker.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/rendering-svg-precision.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/rerender-defer-reads.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/rerender-dependencies.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/rerender-derived-state.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/rerender-functional-setstate.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/rerender-lazy-state-init.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/rerender-memo.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/rerender-transitions.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/server-after-nonblocking.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/server-cache-lru.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/server-cache-react.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/server-parallel-fetching.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/react-best-practices/rules/server-serialization.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/receiving-code-review/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/requesting-code-review/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/requesting-code-review/review.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/root-cause-tracing/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/root-cause-tracing/find-polluter.sh +0 -0
- /package/dist/template/.opencode/{skills → skill}/session-management/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/sharing-skills/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/skill-creator/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/source-code-research/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/stitch/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/stitch/mcp.json +0 -0
- /package/dist/template/.opencode/{skills → skill}/subagent-driven-development/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase/mcp.json +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/AGENTS.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/advanced-full-text-search.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/advanced-jsonb-indexing.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/conn-idle-timeout.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/conn-limits.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/conn-pooling.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/conn-prepared-statements.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/data-batch-inserts.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/data-n-plus-one.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/data-pagination.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/data-upsert.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/lock-advisory.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/lock-deadlock-prevention.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/lock-short-transactions.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/lock-skip-locked.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/monitor-explain-analyze.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/monitor-pg-stat-statements.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/monitor-vacuum-analyze.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/query-composite-indexes.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/query-covering-indexes.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/query-index-types.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/query-missing-indexes.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/query-partial-indexes.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/schema-data-types.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/schema-foreign-key-indexes.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/schema-lowercase-identifiers.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/schema-partitioning.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/schema-primary-keys.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/security-privileges.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/security-rls-basics.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/supabase-postgres-best-practices/rules/security-rls-performance.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/systematic-debugging/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/test-driven-development/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/testing-anti-patterns/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/testing-skills-with-subagents/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/ui-ux-research/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/using-git-worktrees/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/using-skills/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/v0/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/vercel-deploy-claimable/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/vercel-deploy-claimable/scripts/deploy.sh +0 -0
- /package/dist/template/.opencode/{skills → skill}/verification-before-completion/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/visual-analysis/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/web-design-guidelines/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/writing-plans/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/writing-skills/SKILL.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/writing-skills/anthropic-best-practices.md +0 -0
- /package/dist/template/.opencode/{skills → skill}/writing-skills/graphviz-conventions.dot +0 -0
- /package/dist/template/.opencode/{skills → skill}/writing-skills/persuasion-principles.md +0 -0
- /package/dist/template/.opencode/{tools → tool}/context7-query-docs.ts +0 -0
- /package/dist/template/.opencode/{tools → tool}/context7-resolve-library-id.ts +0 -0
- /package/dist/template/.opencode/{tools → tool}/grepsearch.ts +0 -0
- /package/dist/template/.opencode/{tools → tool}/memory-read.ts +0 -0
- /package/dist/template/.opencode/{tools → tool}/memory-search.ts +0 -0
- /package/dist/template/.opencode/{tools → tool}/memory-update.ts +0 -0
- /package/dist/template/.opencode/{tools → tool}/observation.ts +0 -0
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
* The Copilot API accepts this parameter and returns reasoning in the response.
|
|
8
8
|
*
|
|
9
9
|
* NOTE: Response parsing for reasoning_text/reasoning_opaque is handled by
|
|
10
|
-
* the
|
|
11
|
-
*
|
|
10
|
+
* the custom SDK at .opencode/plugin/sdk/copilot/ which properly converts
|
|
11
|
+
* these fields to AI SDK's reasoning content parts.
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
14
|
import type { Plugin } from "@opencode-ai/plugin";
|
|
@@ -101,151 +101,6 @@ function calculateRetryDelay(attempt: number): number {
|
|
|
101
101
|
return Math.round(delay);
|
|
102
102
|
}
|
|
103
103
|
|
|
104
|
-
/**
|
|
105
|
-
* Transform a streaming SSE response to convert reasoning_text/reasoning_opaque
|
|
106
|
-
* to proper reasoning content parts that the AI SDK can understand.
|
|
107
|
-
*
|
|
108
|
-
* Copilot returns reasoning in these fields:
|
|
109
|
-
* - reasoning_text: The actual reasoning content (visible thinking)
|
|
110
|
-
* - reasoning_opaque: Encrypted/opaque reasoning data
|
|
111
|
-
*
|
|
112
|
-
* We convert these to OpenAI-style content parts with type "reasoning"
|
|
113
|
-
*/
|
|
114
|
-
function transformStreamingResponse(
|
|
115
|
-
body: ReadableStream<Uint8Array>,
|
|
116
|
-
): ReadableStream<Uint8Array> {
|
|
117
|
-
const reader = body.getReader();
|
|
118
|
-
const encoder = new TextEncoder();
|
|
119
|
-
const decoder = new TextDecoder();
|
|
120
|
-
|
|
121
|
-
let buffer = "";
|
|
122
|
-
|
|
123
|
-
return new ReadableStream({
|
|
124
|
-
async pull(controller) {
|
|
125
|
-
try {
|
|
126
|
-
const { done, value } = await reader.read();
|
|
127
|
-
|
|
128
|
-
if (done) {
|
|
129
|
-
// Process any remaining buffer
|
|
130
|
-
if (buffer.trim()) {
|
|
131
|
-
const transformed = transformSSEChunk(buffer);
|
|
132
|
-
if (transformed) {
|
|
133
|
-
controller.enqueue(encoder.encode(transformed));
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
controller.close();
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// Decode and add to buffer
|
|
141
|
-
buffer += decoder.decode(value, { stream: true });
|
|
142
|
-
|
|
143
|
-
// Process complete SSE events (separated by double newlines)
|
|
144
|
-
const events = buffer.split("\n\n");
|
|
145
|
-
buffer = events.pop() || ""; // Keep incomplete event in buffer
|
|
146
|
-
|
|
147
|
-
for (const event of events) {
|
|
148
|
-
if (event.trim()) {
|
|
149
|
-
const transformed = transformSSEChunk(event);
|
|
150
|
-
if (transformed) {
|
|
151
|
-
controller.enqueue(encoder.encode(transformed + "\n\n"));
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
} catch (error) {
|
|
156
|
-
controller.error(error);
|
|
157
|
-
}
|
|
158
|
-
},
|
|
159
|
-
cancel() {
|
|
160
|
-
reader.cancel();
|
|
161
|
-
},
|
|
162
|
-
});
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
/**
|
|
166
|
-
* Transform a single SSE chunk to include reasoning content
|
|
167
|
-
*/
|
|
168
|
-
function transformSSEChunk(chunk: string): string {
|
|
169
|
-
// Parse the SSE event
|
|
170
|
-
const lines = chunk.split("\n");
|
|
171
|
-
let eventType = "";
|
|
172
|
-
let data = "";
|
|
173
|
-
|
|
174
|
-
for (const line of lines) {
|
|
175
|
-
if (line.startsWith("event:")) {
|
|
176
|
-
eventType = line.slice(6).trim();
|
|
177
|
-
} else if (line.startsWith("data:")) {
|
|
178
|
-
data = line.slice(5).trim();
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
// Skip non-data events or [DONE] marker
|
|
183
|
-
if (!data || data === "[DONE]") {
|
|
184
|
-
return chunk;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
try {
|
|
188
|
-
const json = JSON.parse(data);
|
|
189
|
-
|
|
190
|
-
// Check if this chunk has reasoning data
|
|
191
|
-
if (json.choices && json.choices.length > 0) {
|
|
192
|
-
const choice = json.choices[0];
|
|
193
|
-
const delta = choice.delta || {};
|
|
194
|
-
|
|
195
|
-
// Extract reasoning fields from Copilot response
|
|
196
|
-
const reasoningText = delta.reasoning_text || json.reasoning_text;
|
|
197
|
-
|
|
198
|
-
if (reasoningText) {
|
|
199
|
-
log("debug", "Found reasoning_text in streaming response");
|
|
200
|
-
|
|
201
|
-
// The AI SDK expects "reasoning" to be a plain string, not an object
|
|
202
|
-
delta.reasoning = reasoningText;
|
|
203
|
-
|
|
204
|
-
// Remove the original reasoning_text field to avoid confusion
|
|
205
|
-
delete delta.reasoning_text;
|
|
206
|
-
delete json.reasoning_text;
|
|
207
|
-
|
|
208
|
-
// Rebuild the SSE event
|
|
209
|
-
const newData = JSON.stringify(json);
|
|
210
|
-
return eventType
|
|
211
|
-
? `event: ${eventType}\ndata: ${newData}`
|
|
212
|
-
: `data: ${newData}`;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
} catch {
|
|
216
|
-
// Not valid JSON, return as-is
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
return chunk;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
/**
|
|
223
|
-
* Transform a non-streaming JSON response to include reasoning content
|
|
224
|
-
*/
|
|
225
|
-
function transformNonStreamingResponse(json: any): any {
|
|
226
|
-
if (!json.choices || json.choices.length === 0) {
|
|
227
|
-
return json;
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
// Check for reasoning in the response
|
|
231
|
-
const reasoningText = json.reasoning_text;
|
|
232
|
-
|
|
233
|
-
if (reasoningText) {
|
|
234
|
-
log("debug", "Found reasoning_text in non-streaming response");
|
|
235
|
-
|
|
236
|
-
// Add reasoning as a plain string to the message
|
|
237
|
-
const choice = json.choices[0];
|
|
238
|
-
if (choice.message) {
|
|
239
|
-
choice.message.reasoning = reasoningText;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
// Remove original field
|
|
243
|
-
delete json.reasoning_text;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
return json;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
104
|
export const CopilotAuthPlugin: Plugin = async ({ client: sdk }) => {
|
|
250
105
|
// Initialize logger with the SDK client
|
|
251
106
|
setLogger(sdk);
|
|
@@ -264,7 +119,7 @@ export const CopilotAuthPlugin: Plugin = async ({ client: sdk }) => {
|
|
|
264
119
|
: undefined;
|
|
265
120
|
|
|
266
121
|
if (provider && provider.models) {
|
|
267
|
-
for (const [
|
|
122
|
+
for (const [_modelId, model] of Object.entries(provider.models)) {
|
|
268
123
|
model.cost = {
|
|
269
124
|
input: 0,
|
|
270
125
|
output: 0,
|
|
@@ -277,7 +132,7 @@ export const CopilotAuthPlugin: Plugin = async ({ client: sdk }) => {
|
|
|
277
132
|
// All models use the standard github-copilot SDK
|
|
278
133
|
// Reasoning support for Claude models is handled via:
|
|
279
134
|
// 1. The fetch wrapper adds thinking_budget to request body
|
|
280
|
-
// 2.
|
|
135
|
+
// 2. The fetch wrapper strips invalid thinking blocks from messages
|
|
281
136
|
model.api.npm = "@ai-sdk/github-copilot";
|
|
282
137
|
}
|
|
283
138
|
}
|
|
@@ -323,8 +178,74 @@ export const CopilotAuthPlugin: Plugin = async ({ client: sdk }) => {
|
|
|
323
178
|
if (isClaudeModel) {
|
|
324
179
|
// Use configured thinking_budget from model options, or default to 10000
|
|
325
180
|
const thinkingBudget = body.thinking_budget || 10000;
|
|
181
|
+
|
|
182
|
+
// Fix for "Invalid signature in thinking block" error:
|
|
183
|
+
// The Copilot API uses reasoning_text/reasoning_opaque format for thinking
|
|
184
|
+
// When these are passed back without proper signature, it causes errors
|
|
185
|
+
// Solution: Ensure reasoning_opaque is present when reasoning_text exists,
|
|
186
|
+
// or remove reasoning content entirely if signature is invalid/missing
|
|
187
|
+
const cleanedMessages = body.messages.map(
|
|
188
|
+
(msg: any, idx: number) => {
|
|
189
|
+
if (msg.role !== "assistant") return msg;
|
|
190
|
+
|
|
191
|
+
// Log message structure for debugging
|
|
192
|
+
log("debug", `Processing assistant message ${idx}`, {
|
|
193
|
+
has_reasoning_text: !!msg.reasoning_text,
|
|
194
|
+
has_reasoning_opaque: !!msg.reasoning_opaque,
|
|
195
|
+
content_type: typeof msg.content,
|
|
196
|
+
content_is_array: Array.isArray(msg.content),
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
// If message has reasoning_text but no/invalid reasoning_opaque, remove reasoning
|
|
200
|
+
if (msg.reasoning_text && !msg.reasoning_opaque) {
|
|
201
|
+
log(
|
|
202
|
+
"warn",
|
|
203
|
+
`Removing reasoning_text without reasoning_opaque from message ${idx}`,
|
|
204
|
+
);
|
|
205
|
+
const { reasoning_text: _unused, ...cleanedMsg } = msg;
|
|
206
|
+
return cleanedMsg;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
// If content is an array, check for thinking blocks
|
|
210
|
+
if (Array.isArray(msg.content)) {
|
|
211
|
+
const hasThinkingBlock = msg.content.some(
|
|
212
|
+
(part: any) => part.type === "thinking",
|
|
213
|
+
);
|
|
214
|
+
if (hasThinkingBlock) {
|
|
215
|
+
log(
|
|
216
|
+
"debug",
|
|
217
|
+
`Message ${idx} has thinking blocks in content array`,
|
|
218
|
+
);
|
|
219
|
+
// Filter out thinking blocks without signatures
|
|
220
|
+
const cleanedContent = msg.content.filter(
|
|
221
|
+
(part: any) => {
|
|
222
|
+
if (part.type === "thinking") {
|
|
223
|
+
if (!part.signature) {
|
|
224
|
+
log(
|
|
225
|
+
"warn",
|
|
226
|
+
`Removing thinking block without signature`,
|
|
227
|
+
);
|
|
228
|
+
return false;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return true;
|
|
232
|
+
},
|
|
233
|
+
);
|
|
234
|
+
return {
|
|
235
|
+
...msg,
|
|
236
|
+
content:
|
|
237
|
+
cleanedContent.length > 0 ? cleanedContent : null,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
return msg;
|
|
243
|
+
},
|
|
244
|
+
);
|
|
245
|
+
|
|
326
246
|
modifiedBody = {
|
|
327
247
|
...body,
|
|
248
|
+
messages: cleanedMessages,
|
|
328
249
|
thinking_budget: thinkingBudget,
|
|
329
250
|
};
|
|
330
251
|
log("info", `Adding thinking_budget for Claude model`, {
|
|
@@ -332,6 +253,40 @@ export const CopilotAuthPlugin: Plugin = async ({ client: sdk }) => {
|
|
|
332
253
|
thinking_budget: thinkingBudget,
|
|
333
254
|
});
|
|
334
255
|
}
|
|
256
|
+
|
|
257
|
+
// For GPT models (o1, gpt-5, etc.), add reasoning parameter
|
|
258
|
+
const isGptModel =
|
|
259
|
+
modelId.toLowerCase().includes("gpt") ||
|
|
260
|
+
modelId.toLowerCase().includes("o1") ||
|
|
261
|
+
modelId.toLowerCase().includes("o3") ||
|
|
262
|
+
modelId.toLowerCase().includes("o4");
|
|
263
|
+
|
|
264
|
+
if (isGptModel && !isClaudeModel) {
|
|
265
|
+
// Get reasoning effort from body options or default to "medium"
|
|
266
|
+
const reasoningEffort =
|
|
267
|
+
body.reasoning?.effort ||
|
|
268
|
+
body.reasoningEffort ||
|
|
269
|
+
body.reasoning_effort ||
|
|
270
|
+
"medium";
|
|
271
|
+
|
|
272
|
+
modifiedBody = {
|
|
273
|
+
...(modifiedBody || body),
|
|
274
|
+
reasoning: {
|
|
275
|
+
effort: reasoningEffort,
|
|
276
|
+
},
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
// Also pass through other reasoning options if present
|
|
280
|
+
if (body.reasoningSummary || body.reasoning?.summary) {
|
|
281
|
+
modifiedBody.reasoning.summary =
|
|
282
|
+
body.reasoningSummary || body.reasoning?.summary;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
log("info", `Adding reasoning for GPT model`, {
|
|
286
|
+
model: modelId,
|
|
287
|
+
reasoning_effort: reasoningEffort,
|
|
288
|
+
});
|
|
289
|
+
}
|
|
335
290
|
}
|
|
336
291
|
|
|
337
292
|
// Responses API
|
|
@@ -421,34 +376,9 @@ export const CopilotAuthPlugin: Plugin = async ({ client: sdk }) => {
|
|
|
421
376
|
continue;
|
|
422
377
|
}
|
|
423
378
|
|
|
424
|
-
//
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
response.headers.get("content-type") || "";
|
|
428
|
-
const isStreaming = contentType.includes("text/event-stream");
|
|
429
|
-
|
|
430
|
-
if (isStreaming) {
|
|
431
|
-
// Transform streaming response to convert reasoning_text to reasoning content
|
|
432
|
-
const transformedBody = transformStreamingResponse(
|
|
433
|
-
response.body,
|
|
434
|
-
);
|
|
435
|
-
return new Response(transformedBody, {
|
|
436
|
-
status: response.status,
|
|
437
|
-
statusText: response.statusText,
|
|
438
|
-
headers: response.headers,
|
|
439
|
-
});
|
|
440
|
-
} else {
|
|
441
|
-
// Non-streaming: transform JSON response
|
|
442
|
-
const json = await response.json();
|
|
443
|
-
const transformedJson = transformNonStreamingResponse(json);
|
|
444
|
-
return new Response(JSON.stringify(transformedJson), {
|
|
445
|
-
status: response.status,
|
|
446
|
-
statusText: response.statusText,
|
|
447
|
-
headers: response.headers,
|
|
448
|
-
});
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
|
|
379
|
+
// Response transformation is now handled by the custom SDK at
|
|
380
|
+
// .opencode/plugin/sdk/copilot/ which properly parses reasoning_text/reasoning_opaque
|
|
381
|
+
// and converts them to AI SDK's reasoning content parts
|
|
452
382
|
return response;
|
|
453
383
|
} catch (error) {
|
|
454
384
|
lastError = error as Error;
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
parseProviderOptions,
|
|
22
22
|
postJsonToApi,
|
|
23
23
|
} from "@ai-sdk/provider-utils";
|
|
24
|
-
import { z } from "zod";
|
|
24
|
+
import { z } from "zod/v4";
|
|
25
25
|
import {
|
|
26
26
|
type ProviderErrorStructure,
|
|
27
27
|
defaultOpenAICompatibleErrorStructure,
|
|
@@ -397,6 +397,7 @@ export class OpenAICompatibleChatLanguageModel implements LanguageModelV2 {
|
|
|
397
397
|
controller.enqueue({ type: "stream-start", warnings });
|
|
398
398
|
},
|
|
399
399
|
|
|
400
|
+
// TODO we lost type safety on Chunk, most likely due to the error schema. MUST FIX
|
|
400
401
|
transform(chunk, controller) {
|
|
401
402
|
// Emit raw chunk if requested (before anything else)
|
|
402
403
|
if (options.includeRawChunks) {
|
|
@@ -512,6 +513,7 @@ export class OpenAICompatibleChatLanguageModel implements LanguageModelV2 {
|
|
|
512
513
|
|
|
513
514
|
if (delta.content) {
|
|
514
515
|
// If reasoning was active and we're starting text, end reasoning first
|
|
516
|
+
// This handles the case where reasoning_opaque and content come in the same chunk
|
|
515
517
|
if (isActiveReasoning && !isActiveText) {
|
|
516
518
|
controller.enqueue({
|
|
517
519
|
type: "reasoning-end",
|
|
@@ -537,6 +539,7 @@ export class OpenAICompatibleChatLanguageModel implements LanguageModelV2 {
|
|
|
537
539
|
|
|
538
540
|
if (delta.tool_calls != null) {
|
|
539
541
|
// If reasoning was active and we're starting tool calls, end reasoning first
|
|
542
|
+
// This handles the case where reasoning goes directly to tool calls with no content
|
|
540
543
|
if (isActiveReasoning) {
|
|
541
544
|
controller.enqueue({
|
|
542
545
|
type: "reasoning-end",
|
|
@@ -597,6 +600,7 @@ export class OpenAICompatibleChatLanguageModel implements LanguageModelV2 {
|
|
|
597
600
|
}
|
|
598
601
|
|
|
599
602
|
// check if tool call is complete
|
|
603
|
+
// (some providers send the full tool call in one chunk):
|
|
600
604
|
if (isParsableJson(toolCall.function.arguments)) {
|
|
601
605
|
controller.enqueue({
|
|
602
606
|
type: "tool-input-end",
|
|
@@ -663,6 +667,7 @@ export class OpenAICompatibleChatLanguageModel implements LanguageModelV2 {
|
|
|
663
667
|
controller.enqueue({
|
|
664
668
|
type: "reasoning-end",
|
|
665
669
|
id: "reasoning-0",
|
|
670
|
+
// Include reasoning_opaque for Copilot multi-turn reasoning
|
|
666
671
|
providerMetadata: reasoningOpaque
|
|
667
672
|
? { copilot: { reasoningOpaque } }
|
|
668
673
|
: undefined,
|
|
@@ -692,6 +697,7 @@ export class OpenAICompatibleChatLanguageModel implements LanguageModelV2 {
|
|
|
692
697
|
|
|
693
698
|
const providerMetadata: SharedV2ProviderMetadata = {
|
|
694
699
|
[providerOptionsName]: {},
|
|
700
|
+
// Include reasoning_opaque for Copilot multi-turn reasoning
|
|
695
701
|
...(reasoningOpaque ? { copilot: { reasoningOpaque } } : {}),
|
|
696
702
|
...metadataExtractor?.buildMetadata(),
|
|
697
703
|
};
|
|
@@ -752,6 +758,7 @@ const openaiCompatibleTokenUsageSchema = z
|
|
|
752
758
|
.nullish();
|
|
753
759
|
|
|
754
760
|
// limited version of the schema, focussed on what is needed for the implementation
|
|
761
|
+
// this approach limits breakages when the API changes and increases efficiency
|
|
755
762
|
const OpenAICompatibleChatResponseSchema = z.object({
|
|
756
763
|
id: z.string().nullish(),
|
|
757
764
|
created: z.number().nullish(),
|
|
@@ -783,7 +790,10 @@ const OpenAICompatibleChatResponseSchema = z.object({
|
|
|
783
790
|
});
|
|
784
791
|
|
|
785
792
|
// limited version of the schema, focussed on what is needed for the implementation
|
|
786
|
-
|
|
793
|
+
// this approach limits breakages when the API changes and increases efficiency
|
|
794
|
+
const createOpenAICompatibleChatChunkSchema = <
|
|
795
|
+
ERROR_SCHEMA extends z.core.$ZodType,
|
|
796
|
+
>(
|
|
787
797
|
errorSchema: ERROR_SCHEMA,
|
|
788
798
|
) =>
|
|
789
799
|
z.union([
|
|
@@ -71,13 +71,6 @@ function isIgnoredPath(repoDir: string, filePath: string): boolean {
|
|
|
71
71
|
);
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
function summarizeIssues(issues: BeadsIssue[], limit = 5): string {
|
|
75
|
-
return issues
|
|
76
|
-
.slice(0, limit)
|
|
77
|
-
.map((i) => `${i.id}${i.title ? `: ${i.title}` : ""}`)
|
|
78
|
-
.join("\n");
|
|
79
|
-
}
|
|
80
|
-
|
|
81
74
|
async function readIssuesJsonl(repoDir: string): Promise<BeadsIssue[]> {
|
|
82
75
|
const issuesPath = path.join(repoDir, BEADS_DIR, ISSUES_FILE);
|
|
83
76
|
|
|
@@ -135,27 +128,29 @@ function buildNudge(params: {
|
|
|
135
128
|
if (inProgress.length === 0) {
|
|
136
129
|
return `
|
|
137
130
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
138
|
-
⚡ [
|
|
131
|
+
⚡ [BEADS PROTOCOL]
|
|
139
132
|
|
|
140
|
-
|
|
133
|
+
Pick a task before code changes:
|
|
141
134
|
|
|
142
|
-
1)
|
|
143
|
-
2)
|
|
144
|
-
3)
|
|
135
|
+
1) \`bd ready\` → find unblocked work
|
|
136
|
+
2) \`bd show <id>\` → inspect task
|
|
137
|
+
3) \`bd update <id> --status=in_progress\` → claim it
|
|
145
138
|
|
|
146
|
-
|
|
139
|
+
For parallel work, use the Task tool to spawn subagents.
|
|
147
140
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
148
141
|
`;
|
|
149
142
|
}
|
|
150
143
|
|
|
151
144
|
if (missingSpec.length > 0) {
|
|
145
|
+
const ids = missingSpec
|
|
146
|
+
.slice(0, 3)
|
|
147
|
+
.map((i) => i.id)
|
|
148
|
+
.join(", ");
|
|
152
149
|
return `
|
|
153
150
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
154
|
-
⚡ [
|
|
155
|
-
|
|
156
|
-
In-progress Beads exist, but \`spec.md\` is missing for:
|
|
151
|
+
⚡ [BEADS PROTOCOL]
|
|
157
152
|
|
|
158
|
-
${
|
|
153
|
+
Missing \`spec.md\` for: ${ids}
|
|
159
154
|
|
|
160
155
|
Create \`.beads/artifacts/<id>/spec.md\` before implementation.
|
|
161
156
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
@@ -232,7 +227,7 @@ export const SwarmEnforcer: Plugin = async ({ client, directory }) => {
|
|
|
232
227
|
if (!nudge) return;
|
|
233
228
|
|
|
234
229
|
parts.push({
|
|
235
|
-
id: `
|
|
230
|
+
id: `beads-nudge-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
|
|
236
231
|
sessionID,
|
|
237
232
|
messageID: messageID || "",
|
|
238
233
|
type: "text",
|
|
@@ -257,8 +252,8 @@ export const SwarmEnforcer: Plugin = async ({ client, directory }) => {
|
|
|
257
252
|
|
|
258
253
|
if (cachedInProgress.length === 0) {
|
|
259
254
|
await showToast(
|
|
260
|
-
"
|
|
261
|
-
"
|
|
255
|
+
"Beads: No task claimed",
|
|
256
|
+
"Run bd ready/show/update to claim a task before edits.",
|
|
262
257
|
"warning",
|
|
263
258
|
);
|
|
264
259
|
return;
|
|
@@ -266,7 +261,7 @@ export const SwarmEnforcer: Plugin = async ({ client, directory }) => {
|
|
|
266
261
|
|
|
267
262
|
if (cachedMissingSpec.length > 0) {
|
|
268
263
|
await showToast(
|
|
269
|
-
"
|
|
264
|
+
"Beads: Missing spec.md",
|
|
270
265
|
`Create .beads/artifacts/<id>/spec.md for: ${cachedMissingSpec
|
|
271
266
|
.slice(0, 3)
|
|
272
267
|
.map((i) => i.id)
|
|
@@ -286,8 +281,8 @@ export const SwarmEnforcer: Plugin = async ({ client, directory }) => {
|
|
|
286
281
|
.map((i) => i.id)
|
|
287
282
|
.join(", ");
|
|
288
283
|
await showToast(
|
|
289
|
-
"
|
|
290
|
-
`In-progress
|
|
284
|
+
"Beads: Work still in progress",
|
|
285
|
+
`In-progress: ${list}. Close with bd close + bd sync when done.`,
|
|
291
286
|
"info",
|
|
292
287
|
);
|
|
293
288
|
},
|
|
@@ -497,6 +497,47 @@ bd_inbox({ unread: true });
|
|
|
497
497
|
bd_claim(); // Gets frontend task that was waiting on API
|
|
498
498
|
```
|
|
499
499
|
|
|
500
|
+
## Multi-Agent Coordination (Swarm Mode)
|
|
501
|
+
|
|
502
|
+
For parallel execution with multiple subagents, use the **beads-bridge** skill:
|
|
503
|
+
|
|
504
|
+
```typescript
|
|
505
|
+
skill({ name: "beads-bridge" });
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
**beads-bridge** provides:
|
|
509
|
+
|
|
510
|
+
- `beads-sync` - Sync Beads tasks to OpenCode todos for subagent visibility
|
|
511
|
+
- `swarm-monitor` - Real-time progress tracking and visualization
|
|
512
|
+
- `swarm-plan` - Task classification and dependency analysis
|
|
513
|
+
- `swarm-delegate` - Create delegation packets for workers
|
|
514
|
+
|
|
515
|
+
**When to use beads vs beads-bridge:**
|
|
516
|
+
|
|
517
|
+
| Scenario | Use |
|
|
518
|
+
| ------------------------------ | -------------------------------- |
|
|
519
|
+
| Single agent, linear work | `beads` skill only |
|
|
520
|
+
| Multiple agents in parallel | `beads-bridge` + `beads` |
|
|
521
|
+
| Need subagents to see tasks | `beads-bridge` (beads-sync push) |
|
|
522
|
+
| Track worker progress visually | `beads-bridge` (swarm-monitor) |
|
|
523
|
+
|
|
524
|
+
**Example swarm workflow:**
|
|
525
|
+
|
|
526
|
+
```typescript
|
|
527
|
+
// 1. Push beads to OpenCode todos (subagents can see via todoread)
|
|
528
|
+
beads_sync({ operation: "push" });
|
|
529
|
+
|
|
530
|
+
// 2. Spawn workers in parallel using Task tool
|
|
531
|
+
Task({ subagent_type: "general", description: "Worker 1", prompt: "..." });
|
|
532
|
+
Task({ subagent_type: "general", description: "Worker 2", prompt: "..." });
|
|
533
|
+
|
|
534
|
+
// 3. Monitor progress
|
|
535
|
+
swarm_monitor({ operation: "render_block", team_name: "my-swarm" });
|
|
536
|
+
|
|
537
|
+
// 4. Pull completed work back to beads
|
|
538
|
+
beads_sync({ operation: "pull" });
|
|
539
|
+
```
|
|
540
|
+
|
|
500
541
|
## Rules
|
|
501
542
|
|
|
502
543
|
1. **Always `bd_init()` first** - Required before any other bd\_\* tool
|