@ultrakit/ultrakit 0.0.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.
Files changed (704) hide show
  1. package/README.md +95 -0
  2. package/dist/index.d.ts +6 -0
  3. package/dist/index.js +5991 -0
  4. package/dist/template/.opencode/.env.example +196 -0
  5. package/dist/template/.opencode/.template-manifest.json +718 -0
  6. package/dist/template/.opencode/.version +1 -0
  7. package/dist/template/.opencode/AGENTS.md +573 -0
  8. package/dist/template/.opencode/AGENT_ALIGNMENT.md +564 -0
  9. package/dist/template/.opencode/README.md +79 -0
  10. package/dist/template/.opencode/agent/build.md +447 -0
  11. package/dist/template/.opencode/agent/explore.md +114 -0
  12. package/dist/template/.opencode/agent/general.md +201 -0
  13. package/dist/template/.opencode/agent/painter.md +83 -0
  14. package/dist/template/.opencode/agent/plan.md +469 -0
  15. package/dist/template/.opencode/agent/review.md +235 -0
  16. package/dist/template/.opencode/agent/scout.md +142 -0
  17. package/dist/template/.opencode/agent/vision.md +169 -0
  18. package/dist/template/.opencode/command/compound.md +240 -0
  19. package/dist/template/.opencode/command/create.md +298 -0
  20. package/dist/template/.opencode/command/curate.md +299 -0
  21. package/dist/template/.opencode/command/design.md +130 -0
  22. package/dist/template/.opencode/command/explore.md +170 -0
  23. package/dist/template/.opencode/command/handoff.md +149 -0
  24. package/dist/template/.opencode/command/health.md +356 -0
  25. package/dist/template/.opencode/command/init-context.md +297 -0
  26. package/dist/template/.opencode/command/init-user.md +125 -0
  27. package/dist/template/.opencode/command/init.md +115 -0
  28. package/dist/template/.opencode/command/iterate.md +200 -0
  29. package/dist/template/.opencode/command/lfg.md +173 -0
  30. package/dist/template/.opencode/command/plan.md +436 -0
  31. package/dist/template/.opencode/command/pr.md +166 -0
  32. package/dist/template/.opencode/command/research.md +128 -0
  33. package/dist/template/.opencode/command/resume.md +78 -0
  34. package/dist/template/.opencode/command/review-codebase.md +135 -0
  35. package/dist/template/.opencode/command/ship.md +390 -0
  36. package/dist/template/.opencode/command/status.md +126 -0
  37. package/dist/template/.opencode/command/ui-review.md +111 -0
  38. package/dist/template/.opencode/command/ui-slop-check.md +169 -0
  39. package/dist/template/.opencode/command/verify.md +173 -0
  40. package/dist/template/.opencode/context/README.md +29 -0
  41. package/dist/template/.opencode/context/git-context.md +32 -0
  42. package/dist/template/.opencode/dcp-prompts/defaults/README.md +40 -0
  43. package/dist/template/.opencode/dcp-prompts/defaults/compress-message.md +42 -0
  44. package/dist/template/.opencode/dcp-prompts/defaults/compress-range.md +59 -0
  45. package/dist/template/.opencode/dcp-prompts/defaults/context-limit-nudge.md +15 -0
  46. package/dist/template/.opencode/dcp-prompts/defaults/iteration-nudge.md +3 -0
  47. package/dist/template/.opencode/dcp-prompts/defaults/system.md +31 -0
  48. package/dist/template/.opencode/dcp-prompts/defaults/turn-nudge.md +7 -0
  49. package/dist/template/.opencode/dcp-prompts/overrides/compress-message.md +71 -0
  50. package/dist/template/.opencode/dcp.jsonc +115 -0
  51. package/dist/template/.opencode/memory/README.md +89 -0
  52. package/dist/template/.opencode/memory/_templates/design.md +59 -0
  53. package/dist/template/.opencode/memory/_templates/prd.md +203 -0
  54. package/dist/template/.opencode/memory/_templates/project.md +58 -0
  55. package/dist/template/.opencode/memory/_templates/proposal.md +38 -0
  56. package/dist/template/.opencode/memory/_templates/roadmap.md +93 -0
  57. package/dist/template/.opencode/memory/_templates/state.md +89 -0
  58. package/dist/template/.opencode/memory/_templates/tasks.md +198 -0
  59. package/dist/template/.opencode/memory/_templates/tech-stack.md +85 -0
  60. package/dist/template/.opencode/memory/_templates/user.md +26 -0
  61. package/dist/template/.opencode/memory/project/gotchas.md +67 -0
  62. package/dist/template/.opencode/memory/project/project.md +92 -0
  63. package/dist/template/.opencode/memory/project/roadmap.md +142 -0
  64. package/dist/template/.opencode/memory/project/state.md +84 -0
  65. package/dist/template/.opencode/memory/project/tech-stack.md +53 -0
  66. package/dist/template/.opencode/memory/project/user.md +45 -0
  67. package/dist/template/.opencode/memory/research/benchmark-framework.md +162 -0
  68. package/dist/template/.opencode/memory/research/ccpm-analysis.md +334 -0
  69. package/dist/template/.opencode/memory/research/context-management-analysis.md +685 -0
  70. package/dist/template/.opencode/memory/research/effectiveness-audit.md +213 -0
  71. package/dist/template/.opencode/memory/research/opencode-mcp-bug-report.md +129 -0
  72. package/dist/template/.opencode/memory/research/openspec-analysis.md +226 -0
  73. package/dist/template/.opencode/memory/session-context.md +40 -0
  74. package/dist/template/.opencode/opencode.json +1148 -0
  75. package/dist/template/.opencode/opencodex-fast.jsonc +3 -0
  76. package/dist/template/.opencode/package.json +21 -0
  77. package/dist/template/.opencode/plugin/README.md +81 -0
  78. package/dist/template/.opencode/plugin/copilot-auth.ts +1285 -0
  79. package/dist/template/.opencode/plugin/lib/capture.ts +177 -0
  80. package/dist/template/.opencode/plugin/lib/compact.ts +194 -0
  81. package/dist/template/.opencode/plugin/lib/compile.ts +253 -0
  82. package/dist/template/.opencode/plugin/lib/context.ts +198 -0
  83. package/dist/template/.opencode/plugin/lib/curator.ts +234 -0
  84. package/dist/template/.opencode/plugin/lib/db/graph.ts +253 -0
  85. package/dist/template/.opencode/plugin/lib/db/maintenance.ts +312 -0
  86. package/dist/template/.opencode/plugin/lib/db/observations.ts +304 -0
  87. package/dist/template/.opencode/plugin/lib/db/pipeline.ts +520 -0
  88. package/dist/template/.opencode/plugin/lib/db/schema.ts +687 -0
  89. package/dist/template/.opencode/plugin/lib/db/types.ts +284 -0
  90. package/dist/template/.opencode/plugin/lib/distill.ts +376 -0
  91. package/dist/template/.opencode/plugin/lib/index-generator.ts +170 -0
  92. package/dist/template/.opencode/plugin/lib/inject.ts +126 -0
  93. package/dist/template/.opencode/plugin/lib/lint.ts +359 -0
  94. package/dist/template/.opencode/plugin/lib/memory-admin-tools.ts +277 -0
  95. package/dist/template/.opencode/plugin/lib/memory-db.ts +100 -0
  96. package/dist/template/.opencode/plugin/lib/memory-helpers.ts +141 -0
  97. package/dist/template/.opencode/plugin/lib/memory-hooks.ts +399 -0
  98. package/dist/template/.opencode/plugin/lib/memory-tools.ts +535 -0
  99. package/dist/template/.opencode/plugin/lib/notify.ts +89 -0
  100. package/dist/template/.opencode/plugin/lib/operation-log.ts +110 -0
  101. package/dist/template/.opencode/plugin/lib/validate.ts +243 -0
  102. package/dist/template/.opencode/plugin/memory.ts +90 -0
  103. package/dist/template/.opencode/plugin/package.json +7 -0
  104. package/dist/template/.opencode/plugin/prompt-leverage.ts +191 -0
  105. package/dist/template/.opencode/plugin/rtk.ts +43 -0
  106. package/dist/template/.opencode/plugin/sdk/copilot/chat/convert-to-openai-compatible-chat-messages.ts +172 -0
  107. package/dist/template/.opencode/plugin/sdk/copilot/chat/get-response-metadata.ts +15 -0
  108. package/dist/template/.opencode/plugin/sdk/copilot/chat/map-openai-compatible-finish-reason.ts +19 -0
  109. package/dist/template/.opencode/plugin/sdk/copilot/chat/openai-compatible-api-types.ts +72 -0
  110. package/dist/template/.opencode/plugin/sdk/copilot/chat/openai-compatible-chat-language-model.ts +835 -0
  111. package/dist/template/.opencode/plugin/sdk/copilot/chat/openai-compatible-chat-options.ts +30 -0
  112. package/dist/template/.opencode/plugin/sdk/copilot/chat/openai-compatible-metadata-extractor.ts +48 -0
  113. package/dist/template/.opencode/plugin/sdk/copilot/chat/openai-compatible-prepare-tools.ts +92 -0
  114. package/dist/template/.opencode/plugin/sdk/copilot/copilot-provider.ts +101 -0
  115. package/dist/template/.opencode/plugin/sdk/copilot/index.ts +5 -0
  116. package/dist/template/.opencode/plugin/sdk/copilot/openai-compatible-error.ts +30 -0
  117. package/dist/template/.opencode/plugin/sdk/copilot/responses/convert-to-openai-responses-input.ts +335 -0
  118. package/dist/template/.opencode/plugin/sdk/copilot/responses/map-openai-responses-finish-reason.ts +22 -0
  119. package/dist/template/.opencode/plugin/sdk/copilot/responses/openai-config.ts +18 -0
  120. package/dist/template/.opencode/plugin/sdk/copilot/responses/openai-error.ts +22 -0
  121. package/dist/template/.opencode/plugin/sdk/copilot/responses/openai-responses-api-types.ts +214 -0
  122. package/dist/template/.opencode/plugin/sdk/copilot/responses/openai-responses-language-model.ts +1770 -0
  123. package/dist/template/.opencode/plugin/sdk/copilot/responses/openai-responses-prepare-tools.ts +173 -0
  124. package/dist/template/.opencode/plugin/sdk/copilot/responses/openai-responses-settings.ts +1 -0
  125. package/dist/template/.opencode/plugin/sdk/copilot/responses/tool/code-interpreter.ts +87 -0
  126. package/dist/template/.opencode/plugin/sdk/copilot/responses/tool/file-search.ts +127 -0
  127. package/dist/template/.opencode/plugin/sdk/copilot/responses/tool/image-generation.ts +114 -0
  128. package/dist/template/.opencode/plugin/sdk/copilot/responses/tool/local-shell.ts +64 -0
  129. package/dist/template/.opencode/plugin/sdk/copilot/responses/tool/web-search-preview.ts +103 -0
  130. package/dist/template/.opencode/plugin/sdk/copilot/responses/tool/web-search.ts +102 -0
  131. package/dist/template/.opencode/plugin/sessions.ts +457 -0
  132. package/dist/template/.opencode/plugin/skill-mcp.ts +618 -0
  133. package/dist/template/.opencode/plugin/tsconfig.json +16 -0
  134. package/dist/template/.opencode/skill/accessibility-audit/SKILL.md +191 -0
  135. package/dist/template/.opencode/skill/agent-evals/SKILL.md +208 -0
  136. package/dist/template/.opencode/skill/agent-teams/SKILL.md +268 -0
  137. package/dist/template/.opencode/skill/anti-ai-slop/SKILL.md +76 -0
  138. package/dist/template/.opencode/skill/api-and-interface-design/SKILL.md +162 -0
  139. package/dist/template/.opencode/skill/augment-context-engine/SKILL.md +122 -0
  140. package/dist/template/.opencode/skill/augment-context-engine/mcp.json +6 -0
  141. package/dist/template/.opencode/skill/beads/SKILL.md +182 -0
  142. package/dist/template/.opencode/skill/beads/references/BEST_PRACTICES.md +27 -0
  143. package/dist/template/.opencode/skill/beads/references/BOUNDARIES.md +219 -0
  144. package/dist/template/.opencode/skill/beads/references/DEPENDENCIES.md +124 -0
  145. package/dist/template/.opencode/skill/beads/references/EXAMPLES.md +45 -0
  146. package/dist/template/.opencode/skill/beads/references/FILE_CLAIMING.md +101 -0
  147. package/dist/template/.opencode/skill/beads/references/GIT_SYNC.md +25 -0
  148. package/dist/template/.opencode/skill/beads/references/HIERARCHY.md +71 -0
  149. package/dist/template/.opencode/skill/beads/references/MULTI_AGENT.md +40 -0
  150. package/dist/template/.opencode/skill/beads/references/RESUMABILITY.md +177 -0
  151. package/dist/template/.opencode/skill/beads/references/SESSION_PROTOCOL.md +61 -0
  152. package/dist/template/.opencode/skill/beads/references/TASK_CREATION.md +38 -0
  153. package/dist/template/.opencode/skill/beads/references/TROUBLESHOOTING.md +38 -0
  154. package/dist/template/.opencode/skill/beads/references/WORKFLOWS.md +226 -0
  155. package/dist/template/.opencode/skill/brainstorming/SKILL.md +114 -0
  156. package/dist/template/.opencode/skill/brand-asset-protocol/SKILL.md +222 -0
  157. package/dist/template/.opencode/skill/chrome-devtools/SKILL.md +76 -0
  158. package/dist/template/.opencode/skill/chrome-devtools/mcp.json +19 -0
  159. package/dist/template/.opencode/skill/ci-cd-and-automation/SKILL.md +202 -0
  160. package/dist/template/.opencode/skill/cloudflare/SKILL.md +253 -0
  161. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/README.md +35 -0
  162. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/api.md +100 -0
  163. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/configuration.md +99 -0
  164. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/gotchas.md +59 -0
  165. package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/patterns.md +89 -0
  166. package/dist/template/.opencode/skill/cloudflare/references/ai-gateway/README.md +695 -0
  167. package/dist/template/.opencode/skill/cloudflare/references/ai-search/README.md +14 -0
  168. package/dist/template/.opencode/skill/cloudflare/references/ai-search/api.md +38 -0
  169. package/dist/template/.opencode/skill/cloudflare/references/ai-search/configuration.md +52 -0
  170. package/dist/template/.opencode/skill/cloudflare/references/ai-search/gotchas.md +41 -0
  171. package/dist/template/.opencode/skill/cloudflare/references/ai-search/patterns.md +45 -0
  172. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/README.md +14 -0
  173. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/api.md +27 -0
  174. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/configuration.md +45 -0
  175. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/gotchas.md +3 -0
  176. package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/patterns.md +36 -0
  177. package/dist/template/.opencode/skill/cloudflare/references/api/README.md +21 -0
  178. package/dist/template/.opencode/skill/cloudflare/references/api/api.md +31 -0
  179. package/dist/template/.opencode/skill/cloudflare/references/api/configuration.md +20 -0
  180. package/dist/template/.opencode/skill/cloudflare/references/api/gotchas.md +28 -0
  181. package/dist/template/.opencode/skill/cloudflare/references/api/patterns.md +47 -0
  182. package/dist/template/.opencode/skill/cloudflare/references/api-shield/README.md +20 -0
  183. package/dist/template/.opencode/skill/cloudflare/references/api-shield/api.md +78 -0
  184. package/dist/template/.opencode/skill/cloudflare/references/api-shield/configuration.md +128 -0
  185. package/dist/template/.opencode/skill/cloudflare/references/api-shield/gotchas.md +51 -0
  186. package/dist/template/.opencode/skill/cloudflare/references/api-shield/patterns.md +145 -0
  187. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/README.md +16 -0
  188. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/api.md +50 -0
  189. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/configuration.md +53 -0
  190. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
  191. package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/patterns.md +45 -0
  192. package/dist/template/.opencode/skill/cloudflare/references/bindings/README.md +14 -0
  193. package/dist/template/.opencode/skill/cloudflare/references/bindings/api.md +3 -0
  194. package/dist/template/.opencode/skill/cloudflare/references/bindings/configuration.md +58 -0
  195. package/dist/template/.opencode/skill/cloudflare/references/bindings/gotchas.md +35 -0
  196. package/dist/template/.opencode/skill/cloudflare/references/bindings/patterns.md +37 -0
  197. package/dist/template/.opencode/skill/cloudflare/references/bot-management/README.md +71 -0
  198. package/dist/template/.opencode/skill/cloudflare/references/bot-management/api.md +168 -0
  199. package/dist/template/.opencode/skill/cloudflare/references/bot-management/configuration.md +114 -0
  200. package/dist/template/.opencode/skill/cloudflare/references/bot-management/gotchas.md +99 -0
  201. package/dist/template/.opencode/skill/cloudflare/references/bot-management/patterns.md +125 -0
  202. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/README.md +16 -0
  203. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/api.md +54 -0
  204. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/configuration.md +47 -0
  205. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/gotchas.md +29 -0
  206. package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/patterns.md +29 -0
  207. package/dist/template/.opencode/skill/cloudflare/references/c3/README.md +264 -0
  208. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/README.md +93 -0
  209. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/api.md +176 -0
  210. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/configuration.md +164 -0
  211. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/gotchas.md +203 -0
  212. package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/patterns.md +180 -0
  213. package/dist/template/.opencode/skill/cloudflare/references/containers/README.md +16 -0
  214. package/dist/template/.opencode/skill/cloudflare/references/containers/api.md +43 -0
  215. package/dist/template/.opencode/skill/cloudflare/references/containers/configuration.md +56 -0
  216. package/dist/template/.opencode/skill/cloudflare/references/containers/gotchas.md +21 -0
  217. package/dist/template/.opencode/skill/cloudflare/references/containers/patterns.md +40 -0
  218. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/README.md +85 -0
  219. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/api.md +198 -0
  220. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/configuration.md +151 -0
  221. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/gotchas.md +129 -0
  222. package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/patterns.md +122 -0
  223. package/dist/template/.opencode/skill/cloudflare/references/d1/README.md +92 -0
  224. package/dist/template/.opencode/skill/cloudflare/references/d1/api.md +141 -0
  225. package/dist/template/.opencode/skill/cloudflare/references/d1/configuration.md +127 -0
  226. package/dist/template/.opencode/skill/cloudflare/references/d1/gotchas.md +70 -0
  227. package/dist/template/.opencode/skill/cloudflare/references/d1/patterns.md +144 -0
  228. package/dist/template/.opencode/skill/cloudflare/references/ddos/README.md +34 -0
  229. package/dist/template/.opencode/skill/cloudflare/references/ddos/api.md +136 -0
  230. package/dist/template/.opencode/skill/cloudflare/references/ddos/configuration.md +67 -0
  231. package/dist/template/.opencode/skill/cloudflare/references/ddos/gotchas.md +114 -0
  232. package/dist/template/.opencode/skill/cloudflare/references/ddos/patterns.md +158 -0
  233. package/dist/template/.opencode/skill/cloudflare/references/do-storage/README.md +62 -0
  234. package/dist/template/.opencode/skill/cloudflare/references/do-storage/api.md +89 -0
  235. package/dist/template/.opencode/skill/cloudflare/references/do-storage/configuration.md +116 -0
  236. package/dist/template/.opencode/skill/cloudflare/references/do-storage/gotchas.md +93 -0
  237. package/dist/template/.opencode/skill/cloudflare/references/do-storage/patterns.md +112 -0
  238. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/README.md +125 -0
  239. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/api.md +152 -0
  240. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/configuration.md +148 -0
  241. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/gotchas.md +158 -0
  242. package/dist/template/.opencode/skill/cloudflare/references/durable-objects/patterns.md +255 -0
  243. package/dist/template/.opencode/skill/cloudflare/references/email-routing/README.md +18 -0
  244. package/dist/template/.opencode/skill/cloudflare/references/email-routing/api.md +46 -0
  245. package/dist/template/.opencode/skill/cloudflare/references/email-routing/configuration.md +63 -0
  246. package/dist/template/.opencode/skill/cloudflare/references/email-routing/gotchas.md +16 -0
  247. package/dist/template/.opencode/skill/cloudflare/references/email-routing/patterns.md +46 -0
  248. package/dist/template/.opencode/skill/cloudflare/references/email-workers/README.md +598 -0
  249. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/README.md +62 -0
  250. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/api.md +137 -0
  251. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/configuration.md +133 -0
  252. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/gotchas.md +184 -0
  253. package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/patterns.md +176 -0
  254. package/dist/template/.opencode/skill/cloudflare/references/images/README.md +14 -0
  255. package/dist/template/.opencode/skill/cloudflare/references/images/api.md +3 -0
  256. package/dist/template/.opencode/skill/cloudflare/references/images/configuration.md +45 -0
  257. package/dist/template/.opencode/skill/cloudflare/references/images/gotchas.md +23 -0
  258. package/dist/template/.opencode/skill/cloudflare/references/images/patterns.md +31 -0
  259. package/dist/template/.opencode/skill/cloudflare/references/kv/README.md +60 -0
  260. package/dist/template/.opencode/skill/cloudflare/references/kv/api.md +114 -0
  261. package/dist/template/.opencode/skill/cloudflare/references/kv/configuration.md +92 -0
  262. package/dist/template/.opencode/skill/cloudflare/references/kv/gotchas.md +117 -0
  263. package/dist/template/.opencode/skill/cloudflare/references/kv/patterns.md +139 -0
  264. package/dist/template/.opencode/skill/cloudflare/references/miniflare/README.md +64 -0
  265. package/dist/template/.opencode/skill/cloudflare/references/miniflare/api.md +144 -0
  266. package/dist/template/.opencode/skill/cloudflare/references/miniflare/configuration.md +203 -0
  267. package/dist/template/.opencode/skill/cloudflare/references/miniflare/gotchas.md +187 -0
  268. package/dist/template/.opencode/skill/cloudflare/references/miniflare/patterns.md +211 -0
  269. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/README.md +60 -0
  270. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/api.md +240 -0
  271. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/configuration.md +127 -0
  272. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/gotchas.md +171 -0
  273. package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/patterns.md +171 -0
  274. package/dist/template/.opencode/skill/cloudflare/references/observability/README.md +18 -0
  275. package/dist/template/.opencode/skill/cloudflare/references/observability/api.md +51 -0
  276. package/dist/template/.opencode/skill/cloudflare/references/observability/configuration.md +60 -0
  277. package/dist/template/.opencode/skill/cloudflare/references/observability/gotchas.md +36 -0
  278. package/dist/template/.opencode/skill/cloudflare/references/observability/patterns.md +42 -0
  279. package/dist/template/.opencode/skill/cloudflare/references/pages/README.md +76 -0
  280. package/dist/template/.opencode/skill/cloudflare/references/pages/api.md +200 -0
  281. package/dist/template/.opencode/skill/cloudflare/references/pages/configuration.md +228 -0
  282. package/dist/template/.opencode/skill/cloudflare/references/pages/gotchas.md +161 -0
  283. package/dist/template/.opencode/skill/cloudflare/references/pages/patterns.md +145 -0
  284. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/README.md +57 -0
  285. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/api.md +201 -0
  286. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/configuration.md +159 -0
  287. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/gotchas.md +151 -0
  288. package/dist/template/.opencode/skill/cloudflare/references/pages-functions/patterns.md +190 -0
  289. package/dist/template/.opencode/skill/cloudflare/references/pipelines/README.md +664 -0
  290. package/dist/template/.opencode/skill/cloudflare/references/pulumi/README.md +107 -0
  291. package/dist/template/.opencode/skill/cloudflare/references/pulumi/api.md +194 -0
  292. package/dist/template/.opencode/skill/cloudflare/references/pulumi/configuration.md +216 -0
  293. package/dist/template/.opencode/skill/cloudflare/references/pulumi/gotchas.md +223 -0
  294. package/dist/template/.opencode/skill/cloudflare/references/pulumi/patterns.md +139 -0
  295. package/dist/template/.opencode/skill/cloudflare/references/queues/README.md +69 -0
  296. package/dist/template/.opencode/skill/cloudflare/references/queues/api.md +138 -0
  297. package/dist/template/.opencode/skill/cloudflare/references/queues/configuration.md +125 -0
  298. package/dist/template/.opencode/skill/cloudflare/references/queues/gotchas.md +112 -0
  299. package/dist/template/.opencode/skill/cloudflare/references/queues/patterns.md +155 -0
  300. package/dist/template/.opencode/skill/cloudflare/references/r2/README.md +61 -0
  301. package/dist/template/.opencode/skill/cloudflare/references/r2/api.md +127 -0
  302. package/dist/template/.opencode/skill/cloudflare/references/r2/configuration.md +76 -0
  303. package/dist/template/.opencode/skill/cloudflare/references/r2/gotchas.md +94 -0
  304. package/dist/template/.opencode/skill/cloudflare/references/r2/patterns.md +127 -0
  305. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/README.md +18 -0
  306. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/api.md +29 -0
  307. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/configuration.md +39 -0
  308. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
  309. package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/patterns.md +46 -0
  310. package/dist/template/.opencode/skill/cloudflare/references/r2-sql/README.md +512 -0
  311. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/README.md +21 -0
  312. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/api.md +135 -0
  313. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/configuration.md +63 -0
  314. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/gotchas.md +75 -0
  315. package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/patterns.md +102 -0
  316. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/README.md +81 -0
  317. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/api.md +164 -0
  318. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/configuration.md +147 -0
  319. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/gotchas.md +172 -0
  320. package/dist/template/.opencode/skill/cloudflare/references/realtimekit/patterns.md +155 -0
  321. package/dist/template/.opencode/skill/cloudflare/references/sandbox/README.md +90 -0
  322. package/dist/template/.opencode/skill/cloudflare/references/sandbox/api.md +178 -0
  323. package/dist/template/.opencode/skill/cloudflare/references/sandbox/configuration.md +131 -0
  324. package/dist/template/.opencode/skill/cloudflare/references/sandbox/gotchas.md +156 -0
  325. package/dist/template/.opencode/skill/cloudflare/references/sandbox/patterns.md +203 -0
  326. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/README.md +58 -0
  327. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/api.md +182 -0
  328. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/configuration.md +140 -0
  329. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/gotchas.md +129 -0
  330. package/dist/template/.opencode/skill/cloudflare/references/secrets-store/patterns.md +218 -0
  331. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/README.md +91 -0
  332. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/api.md +139 -0
  333. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/configuration.md +129 -0
  334. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/gotchas.md +87 -0
  335. package/dist/template/.opencode/skill/cloudflare/references/smart-placement/patterns.md +135 -0
  336. package/dist/template/.opencode/skill/cloudflare/references/snippets/README.md +15 -0
  337. package/dist/template/.opencode/skill/cloudflare/references/snippets/api.md +47 -0
  338. package/dist/template/.opencode/skill/cloudflare/references/snippets/configuration.md +33 -0
  339. package/dist/template/.opencode/skill/cloudflare/references/snippets/gotchas.md +21 -0
  340. package/dist/template/.opencode/skill/cloudflare/references/snippets/patterns.md +34 -0
  341. package/dist/template/.opencode/skill/cloudflare/references/spectrum/README.md +16 -0
  342. package/dist/template/.opencode/skill/cloudflare/references/spectrum/api.md +24 -0
  343. package/dist/template/.opencode/skill/cloudflare/references/spectrum/configuration.md +43 -0
  344. package/dist/template/.opencode/skill/cloudflare/references/spectrum/gotchas.md +42 -0
  345. package/dist/template/.opencode/skill/cloudflare/references/spectrum/patterns.md +40 -0
  346. package/dist/template/.opencode/skill/cloudflare/references/static-assets/README.md +14 -0
  347. package/dist/template/.opencode/skill/cloudflare/references/static-assets/api.md +3 -0
  348. package/dist/template/.opencode/skill/cloudflare/references/static-assets/configuration.md +47 -0
  349. package/dist/template/.opencode/skill/cloudflare/references/static-assets/gotchas.md +44 -0
  350. package/dist/template/.opencode/skill/cloudflare/references/static-assets/patterns.md +42 -0
  351. package/dist/template/.opencode/skill/cloudflare/references/stream/README.md +103 -0
  352. package/dist/template/.opencode/skill/cloudflare/references/stream/api.md +204 -0
  353. package/dist/template/.opencode/skill/cloudflare/references/stream/configuration.md +127 -0
  354. package/dist/template/.opencode/skill/cloudflare/references/stream/gotchas.md +131 -0
  355. package/dist/template/.opencode/skill/cloudflare/references/stream/patterns.md +152 -0
  356. package/dist/template/.opencode/skill/cloudflare/references/tail-workers/README.md +640 -0
  357. package/dist/template/.opencode/skill/cloudflare/references/terraform/README.md +76 -0
  358. package/dist/template/.opencode/skill/cloudflare/references/terraform/api.md +159 -0
  359. package/dist/template/.opencode/skill/cloudflare/references/terraform/configuration.md +156 -0
  360. package/dist/template/.opencode/skill/cloudflare/references/terraform/gotchas.md +207 -0
  361. package/dist/template/.opencode/skill/cloudflare/references/terraform/patterns.md +135 -0
  362. package/dist/template/.opencode/skill/cloudflare/references/tunnel/README.md +82 -0
  363. package/dist/template/.opencode/skill/cloudflare/references/tunnel/api.md +105 -0
  364. package/dist/template/.opencode/skill/cloudflare/references/tunnel/configuration.md +113 -0
  365. package/dist/template/.opencode/skill/cloudflare/references/tunnel/gotchas.md +115 -0
  366. package/dist/template/.opencode/skill/cloudflare/references/tunnel/patterns.md +157 -0
  367. package/dist/template/.opencode/skill/cloudflare/references/turn/README.md +699 -0
  368. package/dist/template/.opencode/skill/cloudflare/references/turnstile/README.md +14 -0
  369. package/dist/template/.opencode/skill/cloudflare/references/turnstile/api.md +3 -0
  370. package/dist/template/.opencode/skill/cloudflare/references/turnstile/configuration.md +19 -0
  371. package/dist/template/.opencode/skill/cloudflare/references/turnstile/gotchas.md +27 -0
  372. package/dist/template/.opencode/skill/cloudflare/references/turnstile/patterns.md +41 -0
  373. package/dist/template/.opencode/skill/cloudflare/references/vectorize/README.md +682 -0
  374. package/dist/template/.opencode/skill/cloudflare/references/waf/README.md +14 -0
  375. package/dist/template/.opencode/skill/cloudflare/references/waf/api.md +3 -0
  376. package/dist/template/.opencode/skill/cloudflare/references/waf/configuration.md +44 -0
  377. package/dist/template/.opencode/skill/cloudflare/references/waf/gotchas.md +24 -0
  378. package/dist/template/.opencode/skill/cloudflare/references/waf/patterns.md +29 -0
  379. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/README.md +19 -0
  380. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/api.md +52 -0
  381. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/configuration.md +31 -0
  382. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/gotchas.md +28 -0
  383. package/dist/template/.opencode/skill/cloudflare/references/web-analytics/patterns.md +52 -0
  384. package/dist/template/.opencode/skill/cloudflare/references/workerd/README.md +47 -0
  385. package/dist/template/.opencode/skill/cloudflare/references/workerd/api.md +199 -0
  386. package/dist/template/.opencode/skill/cloudflare/references/workerd/configuration.md +185 -0
  387. package/dist/template/.opencode/skill/cloudflare/references/workerd/gotchas.md +203 -0
  388. package/dist/template/.opencode/skill/cloudflare/references/workerd/patterns.md +216 -0
  389. package/dist/template/.opencode/skill/cloudflare/references/workers/README.md +96 -0
  390. package/dist/template/.opencode/skill/cloudflare/references/workers/api.md +137 -0
  391. package/dist/template/.opencode/skill/cloudflare/references/workers/configuration.md +147 -0
  392. package/dist/template/.opencode/skill/cloudflare/references/workers/gotchas.md +99 -0
  393. package/dist/template/.opencode/skill/cloudflare/references/workers/patterns.md +149 -0
  394. package/dist/template/.opencode/skill/cloudflare/references/workers-ai/README.md +116 -0
  395. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/README.md +48 -0
  396. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/api.md +169 -0
  397. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/configuration.md +136 -0
  398. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
  399. package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/patterns.md +170 -0
  400. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/README.md +16 -0
  401. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/api.md +20 -0
  402. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/configuration.md +3 -0
  403. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/gotchas.md +35 -0
  404. package/dist/template/.opencode/skill/cloudflare/references/workers-playground/patterns.md +42 -0
  405. package/dist/template/.opencode/skill/cloudflare/references/workers-vpc/README.md +579 -0
  406. package/dist/template/.opencode/skill/cloudflare/references/workflows/README.md +62 -0
  407. package/dist/template/.opencode/skill/cloudflare/references/workflows/api.md +125 -0
  408. package/dist/template/.opencode/skill/cloudflare/references/workflows/configuration.md +177 -0
  409. package/dist/template/.opencode/skill/cloudflare/references/workflows/gotchas.md +136 -0
  410. package/dist/template/.opencode/skill/cloudflare/references/workflows/patterns.md +132 -0
  411. package/dist/template/.opencode/skill/cloudflare/references/wrangler/README.md +90 -0
  412. package/dist/template/.opencode/skill/cloudflare/references/wrangler/api.md +140 -0
  413. package/dist/template/.opencode/skill/cloudflare/references/wrangler/configuration.md +128 -0
  414. package/dist/template/.opencode/skill/cloudflare/references/wrangler/gotchas.md +93 -0
  415. package/dist/template/.opencode/skill/cloudflare/references/wrangler/patterns.md +150 -0
  416. package/dist/template/.opencode/skill/cloudflare/references/zaraz/README.md +360 -0
  417. package/dist/template/.opencode/skill/code-search-patterns/SKILL.md +253 -0
  418. package/dist/template/.opencode/skill/code-simplification/SKILL.md +211 -0
  419. package/dist/template/.opencode/skill/condition-based-waiting/SKILL.md +135 -0
  420. package/dist/template/.opencode/skill/condition-based-waiting/example.ts +158 -0
  421. package/dist/template/.opencode/skill/context-condensation/SKILL.md +149 -0
  422. package/dist/template/.opencode/skill/context-engineering/SKILL.md +176 -0
  423. package/dist/template/.opencode/skill/context-initialization/SKILL.md +69 -0
  424. package/dist/template/.opencode/skill/context-management/SKILL.md +390 -0
  425. package/dist/template/.opencode/skill/core-data-expert/SKILL.md +93 -0
  426. package/dist/template/.opencode/skill/core-data-expert/references/batch-operations.md +543 -0
  427. package/dist/template/.opencode/skill/core-data-expert/references/cloudkit-integration.md +259 -0
  428. package/dist/template/.opencode/skill/core-data-expert/references/concurrency.md +522 -0
  429. package/dist/template/.opencode/skill/core-data-expert/references/fetch-requests.md +643 -0
  430. package/dist/template/.opencode/skill/core-data-expert/references/glossary.md +233 -0
  431. package/dist/template/.opencode/skill/core-data-expert/references/migration.md +393 -0
  432. package/dist/template/.opencode/skill/core-data-expert/references/model-configuration.md +597 -0
  433. package/dist/template/.opencode/skill/core-data-expert/references/performance.md +300 -0
  434. package/dist/template/.opencode/skill/core-data-expert/references/persistent-history.md +553 -0
  435. package/dist/template/.opencode/skill/core-data-expert/references/project-audit.md +60 -0
  436. package/dist/template/.opencode/skill/core-data-expert/references/saving.md +574 -0
  437. package/dist/template/.opencode/skill/core-data-expert/references/stack-setup.md +625 -0
  438. package/dist/template/.opencode/skill/core-data-expert/references/testing.md +300 -0
  439. package/dist/template/.opencode/skill/core-data-expert/references/threading.md +589 -0
  440. package/dist/template/.opencode/skill/deep-research/SKILL.md +384 -0
  441. package/dist/template/.opencode/skill/defense-in-depth/SKILL.md +176 -0
  442. package/dist/template/.opencode/skill/deprecation-and-migration/SKILL.md +189 -0
  443. package/dist/template/.opencode/skill/design-direction-advisor/SKILL.md +139 -0
  444. package/dist/template/.opencode/skill/design-system-audit/SKILL.md +153 -0
  445. package/dist/template/.opencode/skill/design-taste-frontend/SKILL.md +238 -0
  446. package/dist/template/.opencode/skill/development-lifecycle/SKILL.md +320 -0
  447. package/dist/template/.opencode/skill/dispatching-parallel-agents/SKILL.md +191 -0
  448. package/dist/template/.opencode/skill/documentation-and-adrs/SKILL.md +220 -0
  449. package/dist/template/.opencode/skill/executing-plans/SKILL.md +247 -0
  450. package/dist/template/.opencode/skill/figma/SKILL.md +224 -0
  451. package/dist/template/.opencode/skill/figma-go/SKILL.md +65 -0
  452. package/dist/template/.opencode/skill/finishing-a-development-branch/SKILL.md +357 -0
  453. package/dist/template/.opencode/skill/frontend-design/SKILL.md +235 -0
  454. package/dist/template/.opencode/skill/frontend-design/references/animation/motion-advanced.md +224 -0
  455. package/dist/template/.opencode/skill/frontend-design/references/animation/motion-core.md +181 -0
  456. package/dist/template/.opencode/skill/frontend-design/references/canvas/execution.md +90 -0
  457. package/dist/template/.opencode/skill/frontend-design/references/canvas/philosophy.md +94 -0
  458. package/dist/template/.opencode/skill/frontend-design/references/design/color-system.md +111 -0
  459. package/dist/template/.opencode/skill/frontend-design/references/design/interaction.md +149 -0
  460. package/dist/template/.opencode/skill/frontend-design/references/design/typography-rules.md +106 -0
  461. package/dist/template/.opencode/skill/frontend-design/references/design/ux-writing.md +99 -0
  462. package/dist/template/.opencode/skill/frontend-design/references/shadcn/accessibility.md +132 -0
  463. package/dist/template/.opencode/skill/frontend-design/references/shadcn/core-components.md +153 -0
  464. package/dist/template/.opencode/skill/frontend-design/references/shadcn/form-components.md +158 -0
  465. package/dist/template/.opencode/skill/frontend-design/references/shadcn/setup.md +69 -0
  466. package/dist/template/.opencode/skill/frontend-design/references/shadcn/theming.md +152 -0
  467. package/dist/template/.opencode/skill/frontend-design/references/tailwind/responsive.md +112 -0
  468. package/dist/template/.opencode/skill/frontend-design/references/tailwind/utilities-layout.md +134 -0
  469. package/dist/template/.opencode/skill/frontend-design/references/tailwind/utilities-styling.md +165 -0
  470. package/dist/template/.opencode/skill/frontend-design/references/tailwind/v4-config.md +147 -0
  471. package/dist/template/.opencode/skill/frontend-design/references/tailwind/v4-features.md +128 -0
  472. package/dist/template/.opencode/skill/full-output-enforcement/SKILL.md +62 -0
  473. package/dist/template/.opencode/skill/gemini-large-context/SKILL.md +216 -0
  474. package/dist/template/.opencode/skill/gh-address-comments/SKILL.md +29 -0
  475. package/dist/template/.opencode/skill/gh-address-comments/scripts/fetch_comments.py +237 -0
  476. package/dist/template/.opencode/skill/gh-fix-ci/SKILL.md +38 -0
  477. package/dist/template/.opencode/skill/gh-fix-ci/scripts/inspect_pr_checks.py +509 -0
  478. package/dist/template/.opencode/skill/hi-fi-prototype-html/SKILL.md +253 -0
  479. package/dist/template/.opencode/skill/high-end-visual-design/SKILL.md +111 -0
  480. package/dist/template/.opencode/skill/html-deck-export/SKILL.md +189 -0
  481. package/dist/template/.opencode/skill/incremental-implementation/SKILL.md +191 -0
  482. package/dist/template/.opencode/skill/index-knowledge/SKILL.md +413 -0
  483. package/dist/template/.opencode/skill/industrial-brutalist-ui/SKILL.md +105 -0
  484. package/dist/template/.opencode/skill/jira/SKILL.md +283 -0
  485. package/dist/template/.opencode/skill/jira/mcp.json +6 -0
  486. package/dist/template/.opencode/skill/memory-grounding/SKILL.md +68 -0
  487. package/dist/template/.opencode/skill/memory-system/SKILL.md +148 -0
  488. package/dist/template/.opencode/skill/minimalist-ui/SKILL.md +98 -0
  489. package/dist/template/.opencode/skill/mockup-to-code/SKILL.md +184 -0
  490. package/dist/template/.opencode/skill/opensrc/SKILL.md +284 -0
  491. package/dist/template/.opencode/skill/opensrc/references/architecture.md +176 -0
  492. package/dist/template/.opencode/skill/opensrc/references/cli-usage.md +176 -0
  493. package/dist/template/.opencode/skill/opensrc/references/registry-support.md +137 -0
  494. package/dist/template/.opencode/skill/pdf-extract/SKILL.md +438 -0
  495. package/dist/template/.opencode/skill/performance-optimization/SKILL.md +236 -0
  496. package/dist/template/.opencode/skill/playwright/SKILL.md +381 -0
  497. package/dist/template/.opencode/skill/playwright/mcp.json +16 -0
  498. package/dist/template/.opencode/skill/playwright/references/agent-browser-cli.md +405 -0
  499. package/dist/template/.opencode/skill/playwriter/SKILL.md +158 -0
  500. package/dist/template/.opencode/skill/polar/SKILL.md +102 -0
  501. package/dist/template/.opencode/skill/portless/SKILL.md +109 -0
  502. package/dist/template/.opencode/skill/prd/SKILL.md +146 -0
  503. package/dist/template/.opencode/skill/prd-task/SKILL.md +182 -0
  504. package/dist/template/.opencode/skill/prd-task/references/prd-schema.json +124 -0
  505. package/dist/template/.opencode/skill/prompt-leverage/SKILL.md +90 -0
  506. package/dist/template/.opencode/skill/prompt-leverage/references/framework.md +91 -0
  507. package/dist/template/.opencode/skill/prompt-leverage/scripts/augment_prompt.py +157 -0
  508. package/dist/template/.opencode/skill/react-best-practices/AGENTS.md +2410 -0
  509. package/dist/template/.opencode/skill/react-best-practices/README.md +123 -0
  510. package/dist/template/.opencode/skill/react-best-practices/SKILL.md +133 -0
  511. package/dist/template/.opencode/skill/react-best-practices/metadata.json +15 -0
  512. package/dist/template/.opencode/skill/react-best-practices/rules/_sections.md +46 -0
  513. package/dist/template/.opencode/skill/react-best-practices/rules/_template.md +28 -0
  514. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  515. package/dist/template/.opencode/skill/react-best-practices/rules/advanced-use-latest.md +49 -0
  516. package/dist/template/.opencode/skill/react-best-practices/rules/async-api-routes.md +38 -0
  517. package/dist/template/.opencode/skill/react-best-practices/rules/async-defer-await.md +80 -0
  518. package/dist/template/.opencode/skill/react-best-practices/rules/async-dependencies.md +36 -0
  519. package/dist/template/.opencode/skill/react-best-practices/rules/async-parallel.md +28 -0
  520. package/dist/template/.opencode/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  521. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  522. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-conditional.md +31 -0
  523. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  524. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  525. package/dist/template/.opencode/skill/react-best-practices/rules/bundle-preload.md +50 -0
  526. package/dist/template/.opencode/skill/react-best-practices/rules/client-event-listeners.md +74 -0
  527. package/dist/template/.opencode/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
  528. package/dist/template/.opencode/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  529. package/dist/template/.opencode/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
  530. package/dist/template/.opencode/skill/react-best-practices/rules/js-batch-dom-css.md +82 -0
  531. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
  532. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
  533. package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-storage.md +70 -0
  534. package/dist/template/.opencode/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
  535. package/dist/template/.opencode/skill/react-best-practices/rules/js-early-exit.md +50 -0
  536. package/dist/template/.opencode/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
  537. package/dist/template/.opencode/skill/react-best-practices/rules/js-index-maps.md +37 -0
  538. package/dist/template/.opencode/skill/react-best-practices/rules/js-length-check-first.md +49 -0
  539. package/dist/template/.opencode/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
  540. package/dist/template/.opencode/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
  541. package/dist/template/.opencode/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  542. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-activity.md +26 -0
  543. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  544. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
  545. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
  546. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  547. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  548. package/dist/template/.opencode/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
  549. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
  550. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
  551. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
  552. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  553. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  554. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-memo.md +44 -0
  555. package/dist/template/.opencode/skill/react-best-practices/rules/rerender-transitions.md +40 -0
  556. package/dist/template/.opencode/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
  557. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-lru.md +41 -0
  558. package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-react.md +76 -0
  559. package/dist/template/.opencode/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
  560. package/dist/template/.opencode/skill/react-best-practices/rules/server-serialization.md +38 -0
  561. package/dist/template/.opencode/skill/receiving-code-review/SKILL.md +263 -0
  562. package/dist/template/.opencode/skill/reconcile/SKILL.md +183 -0
  563. package/dist/template/.opencode/skill/redesign-existing-projects/SKILL.md +191 -0
  564. package/dist/template/.opencode/skill/reflection-checkpoints/SKILL.md +183 -0
  565. package/dist/template/.opencode/skill/requesting-code-review/SKILL.md +443 -0
  566. package/dist/template/.opencode/skill/requesting-code-review/references/specialist-profiles.md +108 -0
  567. package/dist/template/.opencode/skill/requesting-code-review/review.md +160 -0
  568. package/dist/template/.opencode/skill/resend/SKILL.md +177 -0
  569. package/dist/template/.opencode/skill/resend/references/react-email.md +287 -0
  570. package/dist/template/.opencode/skill/resend/references/receive-email.md +248 -0
  571. package/dist/template/.opencode/skill/resend/references/send-email.md +318 -0
  572. package/dist/template/.opencode/skill/root-cause-tracing/SKILL.md +192 -0
  573. package/dist/template/.opencode/skill/root-cause-tracing/find-polluter.sh +63 -0
  574. package/dist/template/.opencode/skill/rtk-command-compression/SKILL.md +134 -0
  575. package/dist/template/.opencode/skill/screenshot/SKILL.md +48 -0
  576. package/dist/template/.opencode/skill/screenshot/scripts/ensure_macos_permissions.sh +54 -0
  577. package/dist/template/.opencode/skill/screenshot/scripts/macos_display_info.swift +22 -0
  578. package/dist/template/.opencode/skill/screenshot/scripts/macos_permissions.swift +40 -0
  579. package/dist/template/.opencode/skill/screenshot/scripts/macos_window_info.swift +126 -0
  580. package/dist/template/.opencode/skill/screenshot/scripts/take_screenshot.ps1 +163 -0
  581. package/dist/template/.opencode/skill/screenshot/scripts/take_screenshot.py +585 -0
  582. package/dist/template/.opencode/skill/security-and-hardening/SKILL.md +296 -0
  583. package/dist/template/.opencode/skill/security-threat-model/SKILL.md +36 -0
  584. package/dist/template/.opencode/skill/security-threat-model/references/prompt-template.md +255 -0
  585. package/dist/template/.opencode/skill/security-threat-model/references/security-controls-and-assets.md +32 -0
  586. package/dist/template/.opencode/skill/sharing-skills/SKILL.md +214 -0
  587. package/dist/template/.opencode/skill/skill-creator/SKILL.md +181 -0
  588. package/dist/template/.opencode/skill/skill-installer/SKILL.md +58 -0
  589. package/dist/template/.opencode/skill/skill-installer/scripts/github_utils.py +21 -0
  590. package/dist/template/.opencode/skill/skill-installer/scripts/install-skill-from-github.py +313 -0
  591. package/dist/template/.opencode/skill/skill-installer/scripts/list-skills.py +106 -0
  592. package/dist/template/.opencode/skill/structured-edit/SKILL.md +191 -0
  593. package/dist/template/.opencode/skill/subagent-driven-development/SKILL.md +237 -0
  594. package/dist/template/.opencode/skill/supabase/SKILL.md +130 -0
  595. package/dist/template/.opencode/skill/supabase/mcp.json +27 -0
  596. package/dist/template/.opencode/skill/supabase-postgres-best-practices/AGENTS.md +1490 -0
  597. package/dist/template/.opencode/skill/supabase-postgres-best-practices/SKILL.md +65 -0
  598. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/advanced-full-text-search.md +55 -0
  599. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/advanced-jsonb-indexing.md +49 -0
  600. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/conn-idle-timeout.md +46 -0
  601. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/conn-limits.md +44 -0
  602. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/conn-pooling.md +41 -0
  603. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/conn-prepared-statements.md +46 -0
  604. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/data-batch-inserts.md +54 -0
  605. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/data-n-plus-one.md +53 -0
  606. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/data-pagination.md +50 -0
  607. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/data-upsert.md +50 -0
  608. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/lock-advisory.md +56 -0
  609. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/lock-deadlock-prevention.md +68 -0
  610. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/lock-short-transactions.md +50 -0
  611. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/lock-skip-locked.md +54 -0
  612. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/monitor-explain-analyze.md +45 -0
  613. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/monitor-pg-stat-statements.md +55 -0
  614. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/monitor-vacuum-analyze.md +55 -0
  615. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-composite-indexes.md +44 -0
  616. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-covering-indexes.md +40 -0
  617. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-index-types.md +45 -0
  618. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-missing-indexes.md +43 -0
  619. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/query-partial-indexes.md +45 -0
  620. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-data-types.md +46 -0
  621. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-foreign-key-indexes.md +59 -0
  622. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-lowercase-identifiers.md +55 -0
  623. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-partitioning.md +55 -0
  624. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/schema-primary-keys.md +61 -0
  625. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/security-privileges.md +54 -0
  626. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/security-rls-basics.md +50 -0
  627. package/dist/template/.opencode/skill/supabase-postgres-best-practices/rules/security-rls-performance.md +57 -0
  628. package/dist/template/.opencode/skill/swarm-coordination/SKILL.md +244 -0
  629. package/dist/template/.opencode/skill/swarm-coordination/references/architecture.md +39 -0
  630. package/dist/template/.opencode/skill/swarm-coordination/references/delegation-worker-protocol.md +145 -0
  631. package/dist/template/.opencode/skill/swarm-coordination/references/dependency-graph.md +50 -0
  632. package/dist/template/.opencode/skill/swarm-coordination/references/drift-check.md +90 -0
  633. package/dist/template/.opencode/skill/swarm-coordination/references/integration-beads.md +20 -0
  634. package/dist/template/.opencode/skill/swarm-coordination/references/launch-flow.md +186 -0
  635. package/dist/template/.opencode/skill/swarm-coordination/references/reconciler.md +172 -0
  636. package/dist/template/.opencode/skill/swarm-coordination/references/tier-enforcement.md +78 -0
  637. package/dist/template/.opencode/skill/swarm-coordination/references/tmux-integration.md +134 -0
  638. package/dist/template/.opencode/skill/swift-concurrency/SKILL.md +266 -0
  639. package/dist/template/.opencode/skill/swift-concurrency/references/actors.md +640 -0
  640. package/dist/template/.opencode/skill/swift-concurrency/references/async-algorithms.md +822 -0
  641. package/dist/template/.opencode/skill/swift-concurrency/references/async-await-basics.md +249 -0
  642. package/dist/template/.opencode/skill/swift-concurrency/references/async-sequences.md +670 -0
  643. package/dist/template/.opencode/skill/swift-concurrency/references/core-data.md +533 -0
  644. package/dist/template/.opencode/skill/swift-concurrency/references/glossary.md +128 -0
  645. package/dist/template/.opencode/skill/swift-concurrency/references/linting.md +142 -0
  646. package/dist/template/.opencode/skill/swift-concurrency/references/memory-management.md +542 -0
  647. package/dist/template/.opencode/skill/swift-concurrency/references/migration.md +1076 -0
  648. package/dist/template/.opencode/skill/swift-concurrency/references/performance.md +574 -0
  649. package/dist/template/.opencode/skill/swift-concurrency/references/sendable.md +578 -0
  650. package/dist/template/.opencode/skill/swift-concurrency/references/tasks.md +604 -0
  651. package/dist/template/.opencode/skill/swift-concurrency/references/testing.md +565 -0
  652. package/dist/template/.opencode/skill/swift-concurrency/references/threading.md +452 -0
  653. package/dist/template/.opencode/skill/swiftui-expert-skill/SKILL.md +329 -0
  654. package/dist/template/.opencode/skill/swiftui-expert-skill/references/animation-advanced.md +351 -0
  655. package/dist/template/.opencode/skill/swiftui-expert-skill/references/animation-basics.md +284 -0
  656. package/dist/template/.opencode/skill/swiftui-expert-skill/references/animation-transitions.md +326 -0
  657. package/dist/template/.opencode/skill/swiftui-expert-skill/references/image-optimization.md +286 -0
  658. package/dist/template/.opencode/skill/swiftui-expert-skill/references/layout-best-practices.md +312 -0
  659. package/dist/template/.opencode/skill/swiftui-expert-skill/references/liquid-glass.md +377 -0
  660. package/dist/template/.opencode/skill/swiftui-expert-skill/references/list-patterns.md +153 -0
  661. package/dist/template/.opencode/skill/swiftui-expert-skill/references/modern-apis.md +400 -0
  662. package/dist/template/.opencode/skill/swiftui-expert-skill/references/performance-patterns.md +377 -0
  663. package/dist/template/.opencode/skill/swiftui-expert-skill/references/scroll-patterns.md +305 -0
  664. package/dist/template/.opencode/skill/swiftui-expert-skill/references/sheet-navigation-patterns.md +292 -0
  665. package/dist/template/.opencode/skill/swiftui-expert-skill/references/state-management.md +447 -0
  666. package/dist/template/.opencode/skill/swiftui-expert-skill/references/text-formatting.md +285 -0
  667. package/dist/template/.opencode/skill/swiftui-expert-skill/references/view-structure.md +276 -0
  668. package/dist/template/.opencode/skill/systematic-debugging/SKILL.md +402 -0
  669. package/dist/template/.opencode/skill/terse-output-mode/SKILL.md +95 -0
  670. package/dist/template/.opencode/skill/test-driven-development/SKILL.md +403 -0
  671. package/dist/template/.opencode/skill/testing-anti-patterns/SKILL.md +333 -0
  672. package/dist/template/.opencode/skill/think-in-code/SKILL.md +136 -0
  673. package/dist/template/.opencode/skill/using-git-worktrees/SKILL.md +259 -0
  674. package/dist/template/.opencode/skill/ux-quality-gates/SKILL.md +137 -0
  675. package/dist/template/.opencode/skill/v0/SKILL.md +158 -0
  676. package/dist/template/.opencode/skill/v1-run/SKILL.md +175 -0
  677. package/dist/template/.opencode/skill/v1-run/mcp.json +6 -0
  678. package/dist/template/.opencode/skill/vercel-deploy-claimable/SKILL.md +124 -0
  679. package/dist/template/.opencode/skill/vercel-deploy-claimable/scripts/deploy.sh +249 -0
  680. package/dist/template/.opencode/skill/verification-before-completion/SKILL.md +357 -0
  681. package/dist/template/.opencode/skill/verification-before-completion/references/VERIFICATION_PROTOCOL.md +171 -0
  682. package/dist/template/.opencode/skill/verification-gates/SKILL.md +63 -0
  683. package/dist/template/.opencode/skill/visual-analysis/SKILL.md +154 -0
  684. package/dist/template/.opencode/skill/web-design-guidelines/SKILL.md +46 -0
  685. package/dist/template/.opencode/skill/webclaw/SKILL.md +155 -0
  686. package/dist/template/.opencode/skill/workspace-setup/SKILL.md +76 -0
  687. package/dist/template/.opencode/skill/writing-plans/SKILL.md +320 -0
  688. package/dist/template/.opencode/skill/writing-skills/SKILL.md +324 -0
  689. package/dist/template/.opencode/skill/writing-skills/anthropic-best-practices.md +1173 -0
  690. package/dist/template/.opencode/skill/writing-skills/graphviz-conventions.dot +172 -0
  691. package/dist/template/.opencode/skill/writing-skills/persuasion-principles.md +220 -0
  692. package/dist/template/.opencode/skill/writing-skills/references/anti-patterns.md +25 -0
  693. package/dist/template/.opencode/skill/writing-skills/references/claude-search-optimization.md +140 -0
  694. package/dist/template/.opencode/skill/writing-skills/references/discovery-workflow.md +11 -0
  695. package/dist/template/.opencode/skill/writing-skills/references/file-organization.md +32 -0
  696. package/dist/template/.opencode/skill/writing-skills/references/flowcharts-and-examples.md +57 -0
  697. package/dist/template/.opencode/skill/writing-skills/references/rationalization-hardening.md +75 -0
  698. package/dist/template/.opencode/skill/writing-skills/references/testing-methodology.md +397 -0
  699. package/dist/template/.opencode/skill/writing-skills/references/testing-skill-types.md +52 -0
  700. package/dist/template/.opencode/tool/context7.ts +191 -0
  701. package/dist/template/.opencode/tool/grepsearch.ts +143 -0
  702. package/dist/template/.opencode/tsconfig.json +21 -0
  703. package/dist/template/.opencode/tui.json +15 -0
  704. package/package.json +78 -0
@@ -0,0 +1,835 @@
1
+ import {
2
+ APICallError,
3
+ InvalidResponseDataError,
4
+ type LanguageModelV3,
5
+ type LanguageModelV3CallOptions,
6
+ type LanguageModelV3Content,
7
+ type LanguageModelV3StreamPart,
8
+ type SharedV3ProviderMetadata,
9
+ type SharedV3Warning,
10
+ } from "@ai-sdk/provider";
11
+ import {
12
+ combineHeaders,
13
+ createEventSourceResponseHandler,
14
+ createJsonErrorResponseHandler,
15
+ createJsonResponseHandler,
16
+ type FetchFunction,
17
+ generateId,
18
+ isParsableJson,
19
+ parseProviderOptions,
20
+ type ParseResult,
21
+ postJsonToApi,
22
+ type ResponseHandler,
23
+ } from "@ai-sdk/provider-utils";
24
+ import { z } from "zod/v4";
25
+ import { convertToOpenAICompatibleChatMessages } from "./convert-to-openai-compatible-chat-messages.js";
26
+ import { getResponseMetadata } from "./get-response-metadata.js";
27
+ import { mapOpenAICompatibleFinishReason } from "./map-openai-compatible-finish-reason.js";
28
+ import {
29
+ type OpenAICompatibleChatModelId,
30
+ openaiCompatibleProviderOptions,
31
+ } from "./openai-compatible-chat-options.js";
32
+ import {
33
+ defaultOpenAICompatibleErrorStructure,
34
+ type ProviderErrorStructure,
35
+ } from "../openai-compatible-error.js";
36
+ import type { MetadataExtractor } from "./openai-compatible-metadata-extractor.js";
37
+ import { prepareTools } from "./openai-compatible-prepare-tools.js";
38
+
39
+ export type OpenAICompatibleChatConfig = {
40
+ provider: string;
41
+ headers: () => Record<string, string | undefined>;
42
+ url: (options: { modelId: string; path: string }) => string;
43
+ fetch?: FetchFunction;
44
+ includeUsage?: boolean;
45
+ errorStructure?: ProviderErrorStructure<any>;
46
+ metadataExtractor?: MetadataExtractor;
47
+
48
+ /**
49
+ * Whether the model supports structured outputs.
50
+ */
51
+ supportsStructuredOutputs?: boolean;
52
+
53
+ /**
54
+ * The supported URLs for the model.
55
+ */
56
+ supportedUrls?: () => LanguageModelV3["supportedUrls"];
57
+ };
58
+
59
+ export class OpenAICompatibleChatLanguageModel implements LanguageModelV3 {
60
+ readonly specificationVersion = "v3";
61
+
62
+ readonly supportsStructuredOutputs: boolean;
63
+
64
+ readonly modelId: OpenAICompatibleChatModelId;
65
+ private readonly config: OpenAICompatibleChatConfig;
66
+ private readonly failedResponseHandler: ResponseHandler<APICallError>;
67
+ private readonly chunkSchema; // type inferred via constructor
68
+
69
+ constructor(modelId: OpenAICompatibleChatModelId, config: OpenAICompatibleChatConfig) {
70
+ this.modelId = modelId;
71
+ this.config = config;
72
+
73
+ // initialize error handling:
74
+ const errorStructure = config.errorStructure ?? defaultOpenAICompatibleErrorStructure;
75
+ this.chunkSchema = createOpenAICompatibleChatChunkSchema(errorStructure.errorSchema);
76
+ this.failedResponseHandler = createJsonErrorResponseHandler(errorStructure);
77
+
78
+ this.supportsStructuredOutputs = config.supportsStructuredOutputs ?? false;
79
+ }
80
+
81
+ get provider(): string {
82
+ return this.config.provider;
83
+ }
84
+
85
+ private get providerOptionsName(): string {
86
+ return this.config.provider.split(".")[0].trim();
87
+ }
88
+
89
+ get supportedUrls() {
90
+ return this.config.supportedUrls?.() ?? {};
91
+ }
92
+
93
+ private async getArgs({
94
+ prompt,
95
+ maxOutputTokens,
96
+ temperature,
97
+ topP,
98
+ topK,
99
+ frequencyPenalty,
100
+ presencePenalty,
101
+ providerOptions,
102
+ stopSequences,
103
+ responseFormat,
104
+ seed,
105
+ toolChoice,
106
+ tools,
107
+ }: LanguageModelV3CallOptions) {
108
+ const warnings: SharedV3Warning[] = [];
109
+
110
+ // Parse provider options
111
+ const compatibleOptions = Object.assign(
112
+ (await parseProviderOptions({
113
+ provider: "copilot",
114
+ providerOptions,
115
+ schema: openaiCompatibleProviderOptions,
116
+ })) ?? {},
117
+ (await parseProviderOptions({
118
+ provider: this.providerOptionsName,
119
+ providerOptions,
120
+ schema: openaiCompatibleProviderOptions,
121
+ })) ?? {},
122
+ );
123
+
124
+ if (topK != null) {
125
+ warnings.push({ type: "unsupported", feature: "topK" });
126
+ }
127
+
128
+ if (
129
+ responseFormat?.type === "json" &&
130
+ responseFormat.schema != null &&
131
+ !this.supportsStructuredOutputs
132
+ ) {
133
+ warnings.push({
134
+ type: "unsupported",
135
+ feature: "responseFormat",
136
+ details: "JSON response format schema is only supported with structuredOutputs",
137
+ });
138
+ }
139
+
140
+ const {
141
+ tools: openaiTools,
142
+ toolChoice: openaiToolChoice,
143
+ toolWarnings,
144
+ } = prepareTools({
145
+ tools,
146
+ toolChoice,
147
+ });
148
+
149
+ return {
150
+ args: {
151
+ // model id:
152
+ model: this.modelId,
153
+
154
+ // model specific settings:
155
+ user: compatibleOptions.user,
156
+
157
+ // standardized settings:
158
+ max_tokens: maxOutputTokens,
159
+ temperature,
160
+ top_p: topP,
161
+ frequency_penalty: frequencyPenalty,
162
+ presence_penalty: presencePenalty,
163
+ response_format:
164
+ responseFormat?.type === "json"
165
+ ? this.supportsStructuredOutputs === true && responseFormat.schema != null
166
+ ? {
167
+ type: "json_schema",
168
+ json_schema: {
169
+ schema: responseFormat.schema,
170
+ name: responseFormat.name ?? "response",
171
+ description: responseFormat.description,
172
+ },
173
+ }
174
+ : { type: "json_object" }
175
+ : undefined,
176
+
177
+ stop: stopSequences,
178
+ seed,
179
+ ...Object.fromEntries(
180
+ Object.entries(providerOptions?.[this.providerOptionsName] ?? {}).filter(
181
+ ([key]) => !Object.keys(openaiCompatibleProviderOptions.shape).includes(key),
182
+ ),
183
+ ),
184
+
185
+ reasoning_effort: compatibleOptions.reasoningEffort,
186
+ verbosity: compatibleOptions.textVerbosity,
187
+
188
+ // messages:
189
+ messages: convertToOpenAICompatibleChatMessages(prompt),
190
+
191
+ // tools:
192
+ tools: openaiTools,
193
+ tool_choice: openaiToolChoice,
194
+
195
+ // thinking_budget
196
+ thinking_budget: compatibleOptions.thinking_budget,
197
+ },
198
+ warnings: [...warnings, ...toolWarnings],
199
+ };
200
+ }
201
+
202
+ async doGenerate(options: LanguageModelV3CallOptions) {
203
+ const { args, warnings } = await this.getArgs({ ...options });
204
+
205
+ const body = JSON.stringify(args);
206
+
207
+ const {
208
+ responseHeaders,
209
+ value: responseBody,
210
+ rawValue: rawResponse,
211
+ } = await postJsonToApi({
212
+ url: this.config.url({
213
+ path: "/chat/completions",
214
+ modelId: this.modelId,
215
+ }),
216
+ headers: combineHeaders(this.config.headers(), options.headers),
217
+ body: args,
218
+ failedResponseHandler: this.failedResponseHandler,
219
+ successfulResponseHandler: createJsonResponseHandler(OpenAICompatibleChatResponseSchema),
220
+ abortSignal: options.abortSignal,
221
+ fetch: this.config.fetch,
222
+ });
223
+
224
+ const choice = responseBody.choices[0];
225
+ const content: Array<LanguageModelV3Content> = [];
226
+
227
+ // text content:
228
+ const text = choice.message.content;
229
+ if (text != null && text.length > 0) {
230
+ content.push({
231
+ type: "text",
232
+ text,
233
+ providerMetadata: choice.message.reasoning_opaque
234
+ ? { copilot: { reasoningOpaque: choice.message.reasoning_opaque } }
235
+ : undefined,
236
+ });
237
+ }
238
+
239
+ // reasoning content (Copilot uses reasoning_text):
240
+ const reasoning = choice.message.reasoning_text;
241
+ if (reasoning != null && reasoning.length > 0) {
242
+ content.push({
243
+ type: "reasoning",
244
+ text: reasoning,
245
+ // Include reasoning_opaque for Copilot multi-turn reasoning
246
+ providerMetadata: choice.message.reasoning_opaque
247
+ ? { copilot: { reasoningOpaque: choice.message.reasoning_opaque } }
248
+ : undefined,
249
+ });
250
+ }
251
+
252
+ // tool calls:
253
+ if (choice.message.tool_calls != null) {
254
+ for (const toolCall of choice.message.tool_calls) {
255
+ content.push({
256
+ type: "tool-call",
257
+ toolCallId: toolCall.id ?? generateId(),
258
+ toolName: toolCall.function.name,
259
+ input: toolCall.function.arguments!,
260
+ providerMetadata: choice.message.reasoning_opaque
261
+ ? { copilot: { reasoningOpaque: choice.message.reasoning_opaque } }
262
+ : undefined,
263
+ });
264
+ }
265
+ }
266
+
267
+ // provider metadata:
268
+ const providerMetadata: SharedV3ProviderMetadata = {
269
+ [this.providerOptionsName]: {},
270
+ ...(await this.config.metadataExtractor?.extractMetadata?.({
271
+ parsedBody: rawResponse,
272
+ })),
273
+ };
274
+ const completionTokenDetails = responseBody.usage?.completion_tokens_details;
275
+ if (completionTokenDetails?.accepted_prediction_tokens != null) {
276
+ providerMetadata[this.providerOptionsName].acceptedPredictionTokens =
277
+ completionTokenDetails?.accepted_prediction_tokens;
278
+ }
279
+ if (completionTokenDetails?.rejected_prediction_tokens != null) {
280
+ providerMetadata[this.providerOptionsName].rejectedPredictionTokens =
281
+ completionTokenDetails?.rejected_prediction_tokens;
282
+ }
283
+
284
+ return {
285
+ content,
286
+ finishReason: {
287
+ unified: mapOpenAICompatibleFinishReason(choice.finish_reason),
288
+ raw: choice.finish_reason ?? undefined,
289
+ },
290
+ usage: {
291
+ inputTokens: {
292
+ total: responseBody.usage?.prompt_tokens ?? undefined,
293
+ noCache: undefined,
294
+ cacheRead: responseBody.usage?.prompt_tokens_details?.cached_tokens ?? undefined,
295
+ cacheWrite: undefined,
296
+ },
297
+ outputTokens: {
298
+ total: responseBody.usage?.completion_tokens ?? undefined,
299
+ text: undefined,
300
+ reasoning: responseBody.usage?.completion_tokens_details?.reasoning_tokens ?? undefined,
301
+ },
302
+ raw: responseBody.usage ?? undefined,
303
+ },
304
+ providerMetadata,
305
+ request: { body },
306
+ response: {
307
+ ...getResponseMetadata(responseBody),
308
+ headers: responseHeaders,
309
+ body: rawResponse,
310
+ },
311
+ warnings,
312
+ };
313
+ }
314
+
315
+ async doStream(options: LanguageModelV3CallOptions) {
316
+ const { args, warnings } = await this.getArgs({ ...options });
317
+
318
+ const body = {
319
+ ...args,
320
+ stream: true,
321
+
322
+ // only include stream_options when in strict compatibility mode:
323
+ stream_options: this.config.includeUsage ? { include_usage: true } : undefined,
324
+ };
325
+
326
+ const metadataExtractor = this.config.metadataExtractor?.createStreamExtractor();
327
+
328
+ const { responseHeaders, value: response } = await postJsonToApi({
329
+ url: this.config.url({
330
+ path: "/chat/completions",
331
+ modelId: this.modelId,
332
+ }),
333
+ headers: combineHeaders(this.config.headers(), options.headers),
334
+ body,
335
+ failedResponseHandler: this.failedResponseHandler,
336
+ successfulResponseHandler: createEventSourceResponseHandler(this.chunkSchema),
337
+ abortSignal: options.abortSignal,
338
+ fetch: this.config.fetch,
339
+ });
340
+
341
+ const toolCalls: Array<{
342
+ id: string;
343
+ type: "function";
344
+ function: {
345
+ name: string;
346
+ arguments: string;
347
+ };
348
+ hasFinished: boolean;
349
+ }> = [];
350
+
351
+ let finishReason: {
352
+ unified: ReturnType<typeof mapOpenAICompatibleFinishReason>;
353
+ raw: string | undefined;
354
+ } = {
355
+ unified: "other",
356
+ raw: undefined,
357
+ };
358
+ const usage: {
359
+ completionTokens: number | undefined;
360
+ completionTokensDetails: {
361
+ reasoningTokens: number | undefined;
362
+ acceptedPredictionTokens: number | undefined;
363
+ rejectedPredictionTokens: number | undefined;
364
+ };
365
+ promptTokens: number | undefined;
366
+ promptTokensDetails: {
367
+ cachedTokens: number | undefined;
368
+ };
369
+ totalTokens: number | undefined;
370
+ } = {
371
+ completionTokens: undefined,
372
+ completionTokensDetails: {
373
+ reasoningTokens: undefined,
374
+ acceptedPredictionTokens: undefined,
375
+ rejectedPredictionTokens: undefined,
376
+ },
377
+ promptTokens: undefined,
378
+ promptTokensDetails: {
379
+ cachedTokens: undefined,
380
+ },
381
+ totalTokens: undefined,
382
+ };
383
+ let isFirstChunk = true;
384
+ const providerOptionsName = this.providerOptionsName;
385
+ let isActiveReasoning = false;
386
+ let isActiveText = false;
387
+ let reasoningOpaque: string | undefined;
388
+
389
+ return {
390
+ stream: response.pipeThrough(
391
+ new TransformStream<
392
+ ParseResult<z.infer<typeof this.chunkSchema>>,
393
+ LanguageModelV3StreamPart
394
+ >({
395
+ start(controller) {
396
+ controller.enqueue({ type: "stream-start", warnings });
397
+ },
398
+
399
+ // TODO we lost type safety on Chunk, most likely due to the error schema. MUST FIX
400
+ transform(chunk, controller) {
401
+ // Emit raw chunk if requested (before anything else)
402
+ if (options.includeRawChunks) {
403
+ controller.enqueue({ type: "raw", rawValue: chunk.rawValue });
404
+ }
405
+
406
+ // handle failed chunk parsing / validation:
407
+ if (!chunk.success) {
408
+ finishReason = {
409
+ unified: "error",
410
+ raw: undefined,
411
+ };
412
+ controller.enqueue({ type: "error", error: chunk.error });
413
+ return;
414
+ }
415
+ const value = chunk.value;
416
+
417
+ metadataExtractor?.processChunk(chunk.rawValue);
418
+
419
+ // handle error chunks:
420
+ if ("error" in value) {
421
+ finishReason = {
422
+ unified: "error",
423
+ raw: undefined,
424
+ };
425
+ controller.enqueue({ type: "error", error: value.error.message });
426
+ return;
427
+ }
428
+
429
+ if (isFirstChunk) {
430
+ isFirstChunk = false;
431
+
432
+ controller.enqueue({
433
+ type: "response-metadata",
434
+ ...getResponseMetadata(value),
435
+ });
436
+ }
437
+
438
+ if (value.usage != null) {
439
+ const {
440
+ prompt_tokens,
441
+ completion_tokens,
442
+ total_tokens,
443
+ prompt_tokens_details,
444
+ completion_tokens_details,
445
+ } = value.usage;
446
+
447
+ usage.promptTokens = prompt_tokens ?? undefined;
448
+ usage.completionTokens = completion_tokens ?? undefined;
449
+ usage.totalTokens = total_tokens ?? undefined;
450
+ if (completion_tokens_details?.reasoning_tokens != null) {
451
+ usage.completionTokensDetails.reasoningTokens =
452
+ completion_tokens_details?.reasoning_tokens;
453
+ }
454
+ if (completion_tokens_details?.accepted_prediction_tokens != null) {
455
+ usage.completionTokensDetails.acceptedPredictionTokens =
456
+ completion_tokens_details?.accepted_prediction_tokens;
457
+ }
458
+ if (completion_tokens_details?.rejected_prediction_tokens != null) {
459
+ usage.completionTokensDetails.rejectedPredictionTokens =
460
+ completion_tokens_details?.rejected_prediction_tokens;
461
+ }
462
+ if (prompt_tokens_details?.cached_tokens != null) {
463
+ usage.promptTokensDetails.cachedTokens = prompt_tokens_details?.cached_tokens;
464
+ }
465
+ }
466
+
467
+ const choice = value.choices[0];
468
+
469
+ if (choice?.finish_reason != null) {
470
+ finishReason = {
471
+ unified: mapOpenAICompatibleFinishReason(choice.finish_reason),
472
+ raw: choice.finish_reason ?? undefined,
473
+ };
474
+ }
475
+
476
+ if (choice?.delta == null) {
477
+ return;
478
+ }
479
+
480
+ const delta = choice.delta;
481
+
482
+ // Capture reasoning_opaque for Copilot multi-turn reasoning.
483
+ // Claude models can send multiple reasoning_opaque delta chunks
484
+ // during streaming (especially with parallel tool calls).
485
+ // Concatenate them instead of throwing — same pattern as content/arguments.
486
+ if (delta.reasoning_opaque) {
487
+ reasoningOpaque =
488
+ reasoningOpaque != null
489
+ ? reasoningOpaque + delta.reasoning_opaque
490
+ : delta.reasoning_opaque;
491
+ }
492
+
493
+ // enqueue reasoning before text deltas (Copilot uses reasoning_text):
494
+ const reasoningContent = delta.reasoning_text;
495
+ if (reasoningContent) {
496
+ if (!isActiveReasoning) {
497
+ controller.enqueue({
498
+ type: "reasoning-start",
499
+ id: "reasoning-0",
500
+ });
501
+ isActiveReasoning = true;
502
+ }
503
+
504
+ controller.enqueue({
505
+ type: "reasoning-delta",
506
+ id: "reasoning-0",
507
+ delta: reasoningContent,
508
+ });
509
+ }
510
+
511
+ if (delta.content) {
512
+ // If reasoning was active and we're starting text, end reasoning first
513
+ // This handles the case where reasoning_opaque and content come in the same chunk
514
+ if (isActiveReasoning && !isActiveText) {
515
+ controller.enqueue({
516
+ type: "reasoning-end",
517
+ id: "reasoning-0",
518
+ providerMetadata: reasoningOpaque ? { copilot: { reasoningOpaque } } : undefined,
519
+ });
520
+ isActiveReasoning = false;
521
+ }
522
+
523
+ if (!isActiveText) {
524
+ controller.enqueue({
525
+ type: "text-start",
526
+ id: "txt-0",
527
+ providerMetadata: reasoningOpaque ? { copilot: { reasoningOpaque } } : undefined,
528
+ });
529
+ isActiveText = true;
530
+ }
531
+
532
+ controller.enqueue({
533
+ type: "text-delta",
534
+ id: "txt-0",
535
+ delta: delta.content,
536
+ });
537
+ }
538
+
539
+ if (delta.tool_calls != null) {
540
+ // If reasoning was active and we're starting tool calls, end reasoning first
541
+ // This handles the case where reasoning goes directly to tool calls with no content
542
+ if (isActiveReasoning) {
543
+ controller.enqueue({
544
+ type: "reasoning-end",
545
+ id: "reasoning-0",
546
+ providerMetadata: reasoningOpaque ? { copilot: { reasoningOpaque } } : undefined,
547
+ });
548
+ isActiveReasoning = false;
549
+ }
550
+ for (const toolCallDelta of delta.tool_calls) {
551
+ const index = toolCallDelta.index;
552
+
553
+ if (toolCalls[index] == null) {
554
+ if (toolCallDelta.id == null) {
555
+ throw new InvalidResponseDataError({
556
+ data: toolCallDelta,
557
+ message: `Expected 'id' to be a string.`,
558
+ });
559
+ }
560
+
561
+ if (toolCallDelta.function?.name == null) {
562
+ throw new InvalidResponseDataError({
563
+ data: toolCallDelta,
564
+ message: `Expected 'function.name' to be a string.`,
565
+ });
566
+ }
567
+
568
+ controller.enqueue({
569
+ type: "tool-input-start",
570
+ id: toolCallDelta.id,
571
+ toolName: toolCallDelta.function.name,
572
+ });
573
+
574
+ toolCalls[index] = {
575
+ id: toolCallDelta.id,
576
+ type: "function",
577
+ function: {
578
+ name: toolCallDelta.function.name,
579
+ arguments: toolCallDelta.function.arguments ?? "",
580
+ },
581
+ hasFinished: false,
582
+ };
583
+
584
+ const toolCall = toolCalls[index];
585
+
586
+ if (toolCall.function?.name != null && toolCall.function?.arguments != null) {
587
+ // send delta if the argument text has already started:
588
+ if (toolCall.function.arguments.length > 0) {
589
+ controller.enqueue({
590
+ type: "tool-input-delta",
591
+ id: toolCall.id,
592
+ delta: toolCall.function.arguments,
593
+ });
594
+ }
595
+
596
+ // check if tool call is complete
597
+ // (some providers send the full tool call in one chunk):
598
+ if (isParsableJson(toolCall.function.arguments)) {
599
+ controller.enqueue({
600
+ type: "tool-input-end",
601
+ id: toolCall.id,
602
+ });
603
+
604
+ controller.enqueue({
605
+ type: "tool-call",
606
+ toolCallId: toolCall.id ?? generateId(),
607
+ toolName: toolCall.function.name,
608
+ input: toolCall.function.arguments,
609
+ providerMetadata: reasoningOpaque
610
+ ? { copilot: { reasoningOpaque } }
611
+ : undefined,
612
+ });
613
+ toolCall.hasFinished = true;
614
+ }
615
+ }
616
+
617
+ continue;
618
+ }
619
+
620
+ // existing tool call, merge if not finished
621
+ const toolCall = toolCalls[index];
622
+
623
+ if (toolCall.hasFinished) {
624
+ continue;
625
+ }
626
+
627
+ if (toolCallDelta.function?.arguments != null) {
628
+ toolCall.function!.arguments += toolCallDelta.function?.arguments ?? "";
629
+ }
630
+
631
+ // send delta
632
+ controller.enqueue({
633
+ type: "tool-input-delta",
634
+ id: toolCall.id,
635
+ delta: toolCallDelta.function.arguments ?? "",
636
+ });
637
+
638
+ // check if tool call is complete
639
+ if (
640
+ toolCall.function?.name != null &&
641
+ toolCall.function?.arguments != null &&
642
+ isParsableJson(toolCall.function.arguments)
643
+ ) {
644
+ controller.enqueue({
645
+ type: "tool-input-end",
646
+ id: toolCall.id,
647
+ });
648
+
649
+ controller.enqueue({
650
+ type: "tool-call",
651
+ toolCallId: toolCall.id ?? generateId(),
652
+ toolName: toolCall.function.name,
653
+ input: toolCall.function.arguments,
654
+ providerMetadata: reasoningOpaque
655
+ ? { copilot: { reasoningOpaque } }
656
+ : undefined,
657
+ });
658
+ toolCall.hasFinished = true;
659
+ }
660
+ }
661
+ }
662
+ },
663
+
664
+ flush(controller) {
665
+ if (isActiveReasoning) {
666
+ controller.enqueue({
667
+ type: "reasoning-end",
668
+ id: "reasoning-0",
669
+ // Include reasoning_opaque for Copilot multi-turn reasoning
670
+ providerMetadata: reasoningOpaque ? { copilot: { reasoningOpaque } } : undefined,
671
+ });
672
+ }
673
+
674
+ if (isActiveText) {
675
+ controller.enqueue({ type: "text-end", id: "txt-0" });
676
+ }
677
+
678
+ // go through all tool calls and send the ones that are not finished
679
+ for (const toolCall of toolCalls.filter((toolCall) => !toolCall.hasFinished)) {
680
+ controller.enqueue({
681
+ type: "tool-input-end",
682
+ id: toolCall.id,
683
+ });
684
+
685
+ controller.enqueue({
686
+ type: "tool-call",
687
+ toolCallId: toolCall.id ?? generateId(),
688
+ toolName: toolCall.function.name,
689
+ input: toolCall.function.arguments,
690
+ });
691
+ }
692
+
693
+ const providerMetadata: SharedV3ProviderMetadata = {
694
+ [providerOptionsName]: {},
695
+ // Include reasoning_opaque for Copilot multi-turn reasoning
696
+ ...(reasoningOpaque ? { copilot: { reasoningOpaque } } : {}),
697
+ ...metadataExtractor?.buildMetadata(),
698
+ };
699
+ if (usage.completionTokensDetails.acceptedPredictionTokens != null) {
700
+ providerMetadata[providerOptionsName].acceptedPredictionTokens =
701
+ usage.completionTokensDetails.acceptedPredictionTokens;
702
+ }
703
+ if (usage.completionTokensDetails.rejectedPredictionTokens != null) {
704
+ providerMetadata[providerOptionsName].rejectedPredictionTokens =
705
+ usage.completionTokensDetails.rejectedPredictionTokens;
706
+ }
707
+
708
+ controller.enqueue({
709
+ type: "finish",
710
+ finishReason,
711
+ usage: {
712
+ inputTokens: {
713
+ total: usage.promptTokens,
714
+ noCache:
715
+ usage.promptTokens != undefined &&
716
+ usage.promptTokensDetails.cachedTokens != undefined
717
+ ? usage.promptTokens - usage.promptTokensDetails.cachedTokens
718
+ : undefined,
719
+ cacheRead: usage.promptTokensDetails.cachedTokens,
720
+ cacheWrite: undefined,
721
+ },
722
+ outputTokens: {
723
+ total: usage.completionTokens,
724
+ text: undefined,
725
+ reasoning: usage.completionTokensDetails.reasoningTokens,
726
+ },
727
+ raw: {
728
+ prompt_tokens: usage.promptTokens ?? null,
729
+ completion_tokens: usage.completionTokens ?? null,
730
+ total_tokens: usage.totalTokens ?? null,
731
+ },
732
+ },
733
+ providerMetadata,
734
+ });
735
+ },
736
+ }),
737
+ ),
738
+ request: { body },
739
+ response: { headers: responseHeaders },
740
+ };
741
+ }
742
+ }
743
+
744
+ const openaiCompatibleTokenUsageSchema = z
745
+ .object({
746
+ prompt_tokens: z.number().nullish(),
747
+ completion_tokens: z.number().nullish(),
748
+ total_tokens: z.number().nullish(),
749
+ prompt_tokens_details: z
750
+ .object({
751
+ cached_tokens: z.number().nullish(),
752
+ })
753
+ .nullish(),
754
+ completion_tokens_details: z
755
+ .object({
756
+ reasoning_tokens: z.number().nullish(),
757
+ accepted_prediction_tokens: z.number().nullish(),
758
+ rejected_prediction_tokens: z.number().nullish(),
759
+ })
760
+ .nullish(),
761
+ })
762
+ .nullish();
763
+
764
+ // limited version of the schema, focussed on what is needed for the implementation
765
+ // this approach limits breakages when the API changes and increases efficiency
766
+ const OpenAICompatibleChatResponseSchema = z.object({
767
+ id: z.string().nullish(),
768
+ created: z.number().nullish(),
769
+ model: z.string().nullish(),
770
+ choices: z.array(
771
+ z.object({
772
+ message: z.object({
773
+ role: z.literal("assistant").nullish(),
774
+ content: z.string().nullish(),
775
+ // Copilot-specific reasoning fields
776
+ reasoning_text: z.string().nullish(),
777
+ reasoning_opaque: z.string().nullish(),
778
+ tool_calls: z
779
+ .array(
780
+ z.object({
781
+ id: z.string().nullish(),
782
+ function: z.object({
783
+ name: z.string(),
784
+ arguments: z.string(),
785
+ }),
786
+ }),
787
+ )
788
+ .nullish(),
789
+ }),
790
+ finish_reason: z.string().nullish(),
791
+ }),
792
+ ),
793
+ usage: openaiCompatibleTokenUsageSchema,
794
+ });
795
+
796
+ // limited version of the schema, focussed on what is needed for the implementation
797
+ // this approach limits breakages when the API changes and increases efficiency
798
+ const createOpenAICompatibleChatChunkSchema = <ERROR_SCHEMA extends z.core.$ZodType>(
799
+ errorSchema: ERROR_SCHEMA,
800
+ ) =>
801
+ z.union([
802
+ z.object({
803
+ id: z.string().nullish(),
804
+ created: z.number().nullish(),
805
+ model: z.string().nullish(),
806
+ choices: z.array(
807
+ z.object({
808
+ delta: z
809
+ .object({
810
+ role: z.enum(["assistant"]).nullish(),
811
+ content: z.string().nullish(),
812
+ // Copilot-specific reasoning fields
813
+ reasoning_text: z.string().nullish(),
814
+ reasoning_opaque: z.string().nullish(),
815
+ tool_calls: z
816
+ .array(
817
+ z.object({
818
+ index: z.number(),
819
+ id: z.string().nullish(),
820
+ function: z.object({
821
+ name: z.string().nullish(),
822
+ arguments: z.string().nullish(),
823
+ }),
824
+ }),
825
+ )
826
+ .nullish(),
827
+ })
828
+ .nullish(),
829
+ finish_reason: z.string().nullish(),
830
+ }),
831
+ ),
832
+ usage: openaiCompatibleTokenUsageSchema,
833
+ }),
834
+ errorSchema,
835
+ ]);