@niujiajie/freespec 0.0.0-stage → 1.15.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 (308) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +58 -2
  3. package/bin/freespec.js +5 -0
  4. package/dist/cli/index.d.ts +25 -0
  5. package/dist/cli/index.js +359 -0
  6. package/dist/commands/shared-output.d.ts +18 -0
  7. package/dist/commands/shared-output.js +61 -0
  8. package/dist/commands/workflow/default-schema.d.ts +2 -0
  9. package/dist/commands/workflow/default-schema.js +4 -0
  10. package/dist/commands/workflow/index.d.ts +13 -0
  11. package/dist/commands/workflow/index.js +10 -0
  12. package/dist/commands/workflow/instructions.d.ts +39 -0
  13. package/dist/commands/workflow/instructions.js +565 -0
  14. package/dist/commands/workflow/new-change.d.ts +19 -0
  15. package/dist/commands/workflow/new-change.js +135 -0
  16. package/dist/commands/workflow/shared.d.ts +94 -0
  17. package/dist/commands/workflow/shared.js +169 -0
  18. package/dist/commands/workflow/status.d.ts +18 -0
  19. package/dist/commands/workflow/status.js +201 -0
  20. package/dist/core/artifact-graph/graph.d.ts +72 -0
  21. package/dist/core/artifact-graph/graph.js +165 -0
  22. package/dist/core/artifact-graph/index.d.ts +9 -0
  23. package/dist/core/artifact-graph/index.js +14 -0
  24. package/dist/core/artifact-graph/instruction-loader.d.ts +208 -0
  25. package/dist/core/artifact-graph/instruction-loader.js +268 -0
  26. package/dist/core/artifact-graph/outputs.d.ts +19 -0
  27. package/dist/core/artifact-graph/outputs.js +351 -0
  28. package/dist/core/artifact-graph/resolver.d.ts +89 -0
  29. package/dist/core/artifact-graph/resolver.js +342 -0
  30. package/dist/core/artifact-graph/schema.d.ts +27 -0
  31. package/dist/core/artifact-graph/schema.js +160 -0
  32. package/dist/core/artifact-graph/state.d.ts +12 -0
  33. package/dist/core/artifact-graph/state.js +31 -0
  34. package/dist/core/artifact-graph/types.d.ts +40 -0
  35. package/dist/core/artifact-graph/types.js +59 -0
  36. package/dist/core/available-tools.d.ts +18 -0
  37. package/dist/core/available-tools.js +49 -0
  38. package/dist/core/change-layout.d.ts +17 -0
  39. package/dist/core/change-layout.js +30 -0
  40. package/dist/core/change-metadata/index.d.ts +2 -0
  41. package/dist/core/change-metadata/index.js +2 -0
  42. package/dist/core/change-metadata/schema.d.ts +23 -0
  43. package/dist/core/change-metadata/schema.js +46 -0
  44. package/dist/core/change-status-policy.d.ts +49 -0
  45. package/dist/core/change-status-policy.js +50 -0
  46. package/dist/core/command-generation/adapters/amazon-q.d.ts +17 -0
  47. package/dist/core/command-generation/adapters/amazon-q.js +32 -0
  48. package/dist/core/command-generation/adapters/antigravity.d.ts +13 -0
  49. package/dist/core/command-generation/adapters/antigravity.js +27 -0
  50. package/dist/core/command-generation/adapters/atomcode.d.ts +24 -0
  51. package/dist/core/command-generation/adapters/atomcode.js +46 -0
  52. package/dist/core/command-generation/adapters/auggie.d.ts +13 -0
  53. package/dist/core/command-generation/adapters/auggie.js +28 -0
  54. package/dist/core/command-generation/adapters/bob.d.ts +18 -0
  55. package/dist/core/command-generation/adapters/bob.js +33 -0
  56. package/dist/core/command-generation/adapters/claude.d.ts +13 -0
  57. package/dist/core/command-generation/adapters/claude.js +32 -0
  58. package/dist/core/command-generation/adapters/cline.d.ts +14 -0
  59. package/dist/core/command-generation/adapters/cline.js +27 -0
  60. package/dist/core/command-generation/adapters/codeassistant.d.ts +15 -0
  61. package/dist/core/command-generation/adapters/codeassistant.js +29 -0
  62. package/dist/core/command-generation/adapters/codebuddy.d.ts +13 -0
  63. package/dist/core/command-generation/adapters/codebuddy.js +29 -0
  64. package/dist/core/command-generation/adapters/codestudio.d.ts +13 -0
  65. package/dist/core/command-generation/adapters/codestudio.js +27 -0
  66. package/dist/core/command-generation/adapters/command-code.d.ts +19 -0
  67. package/dist/core/command-generation/adapters/command-code.js +34 -0
  68. package/dist/core/command-generation/adapters/continue.d.ts +13 -0
  69. package/dist/core/command-generation/adapters/continue.js +33 -0
  70. package/dist/core/command-generation/adapters/costrict.d.ts +13 -0
  71. package/dist/core/command-generation/adapters/costrict.js +28 -0
  72. package/dist/core/command-generation/adapters/crush.d.ts +13 -0
  73. package/dist/core/command-generation/adapters/crush.js +30 -0
  74. package/dist/core/command-generation/adapters/cursor.d.ts +14 -0
  75. package/dist/core/command-generation/adapters/cursor.js +31 -0
  76. package/dist/core/command-generation/adapters/devin.d.ts +19 -0
  77. package/dist/core/command-generation/adapters/devin.js +36 -0
  78. package/dist/core/command-generation/adapters/easycode.d.ts +17 -0
  79. package/dist/core/command-generation/adapters/easycode.js +28 -0
  80. package/dist/core/command-generation/adapters/factory.d.ts +13 -0
  81. package/dist/core/command-generation/adapters/factory.js +28 -0
  82. package/dist/core/command-generation/adapters/gemini.d.ts +13 -0
  83. package/dist/core/command-generation/adapters/gemini.js +27 -0
  84. package/dist/core/command-generation/adapters/gigacode.d.ts +17 -0
  85. package/dist/core/command-generation/adapters/gigacode.js +31 -0
  86. package/dist/core/command-generation/adapters/github-copilot.d.ts +13 -0
  87. package/dist/core/command-generation/adapters/github-copilot.js +27 -0
  88. package/dist/core/command-generation/adapters/iflow.d.ts +13 -0
  89. package/dist/core/command-generation/adapters/iflow.js +30 -0
  90. package/dist/core/command-generation/adapters/index.d.ts +40 -0
  91. package/dist/core/command-generation/adapters/index.js +40 -0
  92. package/dist/core/command-generation/adapters/junie.d.ts +13 -0
  93. package/dist/core/command-generation/adapters/junie.js +27 -0
  94. package/dist/core/command-generation/adapters/kilocode.d.ts +14 -0
  95. package/dist/core/command-generation/adapters/kilocode.js +23 -0
  96. package/dist/core/command-generation/adapters/kiro.d.ts +13 -0
  97. package/dist/core/command-generation/adapters/kiro.js +27 -0
  98. package/dist/core/command-generation/adapters/lingma.d.ts +13 -0
  99. package/dist/core/command-generation/adapters/lingma.js +30 -0
  100. package/dist/core/command-generation/adapters/oh-my-pi.d.ts +21 -0
  101. package/dist/core/command-generation/adapters/oh-my-pi.js +42 -0
  102. package/dist/core/command-generation/adapters/opencode.d.ts +14 -0
  103. package/dist/core/command-generation/adapters/opencode.js +38 -0
  104. package/dist/core/command-generation/adapters/pi.d.ts +18 -0
  105. package/dist/core/command-generation/adapters/pi.js +39 -0
  106. package/dist/core/command-generation/adapters/qoder.d.ts +13 -0
  107. package/dist/core/command-generation/adapters/qoder.js +30 -0
  108. package/dist/core/command-generation/adapters/qwen.d.ts +17 -0
  109. package/dist/core/command-generation/adapters/qwen.js +31 -0
  110. package/dist/core/command-generation/adapters/roocode.d.ts +14 -0
  111. package/dist/core/command-generation/adapters/roocode.js +27 -0
  112. package/dist/core/command-generation/adapters/trae.d.ts +13 -0
  113. package/dist/core/command-generation/adapters/trae.js +28 -0
  114. package/dist/core/command-generation/adapters/zcode.d.ts +16 -0
  115. package/dist/core/command-generation/adapters/zcode.js +33 -0
  116. package/dist/core/command-generation/generator.d.ts +29 -0
  117. package/dist/core/command-generation/generator.js +43 -0
  118. package/dist/core/command-generation/index.d.ts +22 -0
  119. package/dist/core/command-generation/index.js +24 -0
  120. package/dist/core/command-generation/invocation.d.ts +73 -0
  121. package/dist/core/command-generation/invocation.js +77 -0
  122. package/dist/core/command-generation/registry.d.ts +36 -0
  123. package/dist/core/command-generation/registry.js +114 -0
  124. package/dist/core/command-generation/toml.d.ts +19 -0
  125. package/dist/core/command-generation/toml.js +39 -0
  126. package/dist/core/command-generation/types.d.ts +63 -0
  127. package/dist/core/command-generation/types.js +8 -0
  128. package/dist/core/command-generation/yaml.d.ts +36 -0
  129. package/dist/core/command-generation/yaml.js +48 -0
  130. package/dist/core/command-surface.d.ts +15 -0
  131. package/dist/core/command-surface.js +33 -0
  132. package/dist/core/config-prompts.d.ts +9 -0
  133. package/dist/core/config-prompts.js +56 -0
  134. package/dist/core/config-schema.d.ts +98 -0
  135. package/dist/core/config-schema.js +308 -0
  136. package/dist/core/config.d.ts +50 -0
  137. package/dist/core/config.js +122 -0
  138. package/dist/core/file-state.d.ts +36 -0
  139. package/dist/core/file-state.js +144 -0
  140. package/dist/core/file-view.d.ts +13 -0
  141. package/dist/core/file-view.js +14 -0
  142. package/dist/core/global-config.d.ts +101 -0
  143. package/dist/core/global-config.js +182 -0
  144. package/dist/core/id.d.ts +17 -0
  145. package/dist/core/id.js +30 -0
  146. package/dist/core/index.d.ts +6 -0
  147. package/dist/core/index.js +7 -0
  148. package/dist/core/init.d.ts +57 -0
  149. package/dist/core/init.js +836 -0
  150. package/dist/core/list.d.ts +11 -0
  151. package/dist/core/list.js +197 -0
  152. package/dist/core/migration.d.ts +121 -0
  153. package/dist/core/migration.js +540 -0
  154. package/dist/core/onboarding-commands.d.ts +30 -0
  155. package/dist/core/onboarding-commands.js +38 -0
  156. package/dist/core/openspec-root.d.ts +47 -0
  157. package/dist/core/openspec-root.js +196 -0
  158. package/dist/core/planning-home.d.ts +16 -0
  159. package/dist/core/planning-home.js +67 -0
  160. package/dist/core/profile-sync-drift.d.ts +31 -0
  161. package/dist/core/profile-sync-drift.js +201 -0
  162. package/dist/core/profiles.d.ts +19 -0
  163. package/dist/core/profiles.js +33 -0
  164. package/dist/core/project-config.d.ts +132 -0
  165. package/dist/core/project-config.js +519 -0
  166. package/dist/core/references.d.ts +10 -0
  167. package/dist/core/references.js +46 -0
  168. package/dist/core/root-selection.d.ts +59 -0
  169. package/dist/core/root-selection.js +132 -0
  170. package/dist/core/shared/allowed-tools.d.ts +12 -0
  171. package/dist/core/shared/allowed-tools.js +12 -0
  172. package/dist/core/shared/ide-restart.d.ts +26 -0
  173. package/dist/core/shared/ide-restart.js +42 -0
  174. package/dist/core/shared/index.d.ts +11 -0
  175. package/dist/core/shared/index.js +11 -0
  176. package/dist/core/shared/skill-content-equivalence.d.ts +7 -0
  177. package/dist/core/shared/skill-content-equivalence.js +45 -0
  178. package/dist/core/shared/skill-files.d.ts +7 -0
  179. package/dist/core/shared/skill-files.js +43 -0
  180. package/dist/core/shared/skill-generation.d.ts +49 -0
  181. package/dist/core/shared/skill-generation.js +125 -0
  182. package/dist/core/shared/skill-paths.d.ts +13 -0
  183. package/dist/core/shared/skill-paths.js +23 -0
  184. package/dist/core/shared/tool-detection.d.ts +99 -0
  185. package/dist/core/shared/tool-detection.js +318 -0
  186. package/dist/core/shared-skill-target.d.ts +51 -0
  187. package/dist/core/shared-skill-target.js +239 -0
  188. package/dist/core/store/errors.d.ts +20 -0
  189. package/dist/core/store/errors.js +22 -0
  190. package/dist/core/store/index.d.ts +2 -0
  191. package/dist/core/store/index.js +2 -0
  192. package/dist/core/styles/palette.d.ts +7 -0
  193. package/dist/core/styles/palette.js +8 -0
  194. package/dist/core/templates/optional-workflow.d.ts +69 -0
  195. package/dist/core/templates/optional-workflow.js +140 -0
  196. package/dist/core/templates/types.d.ts +19 -0
  197. package/dist/core/templates/types.js +5 -0
  198. package/dist/core/templates/workflows/personal.d.ts +22 -0
  199. package/dist/core/templates/workflows/personal.js +225 -0
  200. package/dist/core/update-plan.d.ts +127 -0
  201. package/dist/core/update-plan.js +390 -0
  202. package/dist/core/update.d.ts +154 -0
  203. package/dist/core/update.js +723 -0
  204. package/dist/core/version-check.d.ts +188 -0
  205. package/dist/core/version-check.js +906 -0
  206. package/dist/core/zod-issues.d.ts +4 -0
  207. package/dist/core/zod-issues.js +10 -0
  208. package/dist/index.d.ts +3 -0
  209. package/dist/index.js +3 -0
  210. package/dist/prompts/searchable-multi-select.d.ts +35 -0
  211. package/dist/prompts/searchable-multi-select.js +188 -0
  212. package/dist/telemetry/config.d.ts +37 -0
  213. package/dist/telemetry/config.js +148 -0
  214. package/dist/telemetry/index.d.ts +39 -0
  215. package/dist/telemetry/index.js +217 -0
  216. package/dist/telemetry/opt-out.d.ts +17 -0
  217. package/dist/telemetry/opt-out.js +27 -0
  218. package/dist/ui/ascii-patterns.d.ts +16 -0
  219. package/dist/ui/ascii-patterns.js +133 -0
  220. package/dist/ui/welcome-screen.d.ts +18 -0
  221. package/dist/ui/welcome-screen.js +199 -0
  222. package/dist/utils/change-metadata.d.ts +116 -0
  223. package/dist/utils/change-metadata.js +324 -0
  224. package/dist/utils/change-utils.d.ts +79 -0
  225. package/dist/utils/change-utils.js +121 -0
  226. package/dist/utils/ci.d.ts +12 -0
  227. package/dist/utils/ci.js +16 -0
  228. package/dist/utils/command-references.d.ts +104 -0
  229. package/dist/utils/command-references.js +190 -0
  230. package/dist/utils/date.d.ts +8 -0
  231. package/dist/utils/date.js +13 -0
  232. package/dist/utils/executable-path.d.ts +5 -0
  233. package/dist/utils/executable-path.js +44 -0
  234. package/dist/utils/file-system.d.ts +58 -0
  235. package/dist/utils/file-system.js +432 -0
  236. package/dist/utils/index.d.ts +6 -0
  237. package/dist/utils/index.js +9 -0
  238. package/dist/utils/interactive.d.ts +85 -0
  239. package/dist/utils/interactive.js +174 -0
  240. package/dist/utils/item-discovery.d.ts +15 -0
  241. package/dist/utils/item-discovery.js +33 -0
  242. package/dist/utils/line-endings.d.ts +34 -0
  243. package/dist/utils/line-endings.js +46 -0
  244. package/dist/utils/match.d.ts +3 -0
  245. package/dist/utils/match.js +22 -0
  246. package/dist/utils/nested-change.d.ts +35 -0
  247. package/dist/utils/nested-change.js +185 -0
  248. package/dist/utils/shell-detection.d.ts +20 -0
  249. package/dist/utils/shell-detection.js +94 -0
  250. package/dist/utils/task-progress.d.ts +67 -0
  251. package/dist/utils/task-progress.js +184 -0
  252. package/package.json +74 -4
  253. package/schemas//351/273/230/350/256/244/schema.yaml +68 -0
  254. package/schemas//351/273/230/350/256/244/templates//344/273/273/345/212/241/346/270/205/345/215/225.md +25 -0
  255. package/schemas//351/273/230/350/256/244/templates//346/265/213/350/257/225/347/224/250/344/276/213.md +34 -0
  256. package/schemas//351/273/230/350/256/244/templates//350/256/276/350/256/241/346/226/207/346/241/243.md +172 -0
  257. package/schemas//351/273/230/350/256/244/templates//351/234/200/346/261/202/346/226/207/346/241/243.md +19 -0
  258. package/skill-files//344/273/273/345/212/241/references//346/212/244/346/240/217.md +43 -0
  259. package/skill-files//344/273/273/345/212/241/references//347/262/222/345/272/246.md +23 -0
  260. package/skill-files//344/273/273/345/212/241/references//347/272/246/346/235/237.md +8 -0
  261. package/skill-files//344/273/273/345/212/241/scripts/check-tasks.mjs +83 -0
  262. package/skill-files//345/206/231Java/references/Java/350/247/204/350/214/203.md +25 -0
  263. package/skill-files//345/206/231Java/references//345/215/261/351/231/251/345/206/231/346/263/225.md +27 -0
  264. package/skill-files//345/206/231Java/references//345/256/214/346/210/220/345/257/271/347/205/247.md +15 -0
  265. package/skill-files//345/206/231Java/references//346/212/244/346/240/217.md +35 -0
  266. package/skill-files//345/206/231Java/references//347/272/246/346/235/237.md +8 -0
  267. package/skill-files//345/206/231Java/references//350/270/251/345/235/221.md +17 -0
  268. package/skill-files//345/256/241Java/references//346/212/244/346/240/217.md +19 -0
  269. package/skill-files//345/256/241Java/references//347/244/272/344/276/213.md +23 -0
  270. package/skill-files//345/256/241Java/references//347/272/246/346/235/237.md +7 -0
  271. package/skill-files//345/256/241Java/references//350/247/204/345/210/231.md +23 -0
  272. package/skill-files//345/256/241Java/references//351/242/206/345/237/237/346/243/200/351/241/271.md +58 -0
  273. package/skill-files//345/256/241/346/226/207/346/241/243/references//346/212/244/346/240/217.md +18 -0
  274. package/skill-files//345/256/241/346/226/207/346/241/243/references//347/272/246/346/235/237.md +8 -0
  275. package/skill-files//345/256/241/346/226/207/346/241/243/references//347/273/264/345/272/246.md +17 -0
  276. package/skill-files//345/256/241/346/226/207/346/241/243/references//350/270/251/345/235/221.md +11 -0
  277. package/skill-files//346/226/260/345/273/272/references//344/272/244/346/216/245.md +11 -0
  278. package/skill-files//346/226/260/345/273/272/references//346/212/244/346/240/217.md +14 -0
  279. package/skill-files//346/226/260/345/273/272/references//347/272/246/346/235/237.md +7 -0
  280. package/skill-files//346/267/261/346/200/235/config/prompts.yaml +114 -0
  281. package/skill-files//346/267/261/346/200/235/references//344/270/211/346/226/271/346/240/270/345/257/271.md +72 -0
  282. package/skill-files//346/267/261/346/200/235/references//344/276/213/345/255/220.md +39 -0
  283. package/skill-files//346/267/261/346/200/235/references//346/200/216/344/271/210/346/203/263.md +61 -0
  284. package/skill-files//346/267/261/346/200/235/references//346/212/244/346/240/217.md +26 -0
  285. package/skill-files//346/267/261/346/200/235/references//347/202/271/351/200/211/346/217/220/351/227/256.md +66 -0
  286. package/skill-files//346/267/261/346/200/235/references//347/231/273/350/256/260.md +45 -0
  287. package/skill-files//346/267/261/346/200/235/references//347/272/246/346/235/237.md +9 -0
  288. package/skill-files//347/224/250/344/276/213/references//346/200/216/344/271/210/345/206/231.md +13 -0
  289. package/skill-files//347/224/250/344/276/213/references//346/212/244/346/240/217.md +42 -0
  290. package/skill-files//347/224/250/344/276/213/references//347/272/246/346/235/237.md +5 -0
  291. package/skill-files//347/224/250/344/276/213/scripts/check-cases.mjs +70 -0
  292. package/skill-files//350/256/276/350/256/241/references//345/207/206/345/244/207.md +25 -0
  293. package/skill-files//350/256/276/350/256/241/references//346/212/244/346/240/217.md +134 -0
  294. package/skill-files//350/256/276/350/256/241/references//346/226/207/351/243/216.md +17 -0
  295. package/skill-files//350/256/276/350/256/241/references//347/225/214/351/235/242.md +18 -0
  296. package/skill-files//350/256/276/350/256/241/references//347/261/273/345/236/213.md +19 -0
  297. package/skill-files//350/256/276/350/256/241/references//347/272/246/346/235/237.md +25 -0
  298. package/skill-files//350/256/276/350/256/241/scripts/_smoke.mjs +72 -0
  299. package/skill-files//350/256/276/350/256/241/scripts/check-design.mjs +331 -0
  300. package/skill-files//351/234/200/346/261/202/references//346/212/244/346/240/217.md +26 -0
  301. package/skill-files//351/234/200/346/261/202/references//346/226/207/351/243/216.md +23 -0
  302. package/skill-files//351/234/200/346/261/202/references//346/267/261/346/200/235/346/221/204/345/205/245.md +21 -0
  303. package/skill-files//351/234/200/346/261/202/references//347/272/246/346/235/237.md +8 -0
  304. package/skill-files//351/234/200/346/261/202/references//351/234/200/346/261/202/345/276/205/345/256/232.md +13 -0
  305. package/skill-files//351/234/200/346/261/202/scripts/check-requirements.mjs +60 -0
  306. package/skill-files//351/252/214/346/224/266/references//346/212/244/346/240/217.md +27 -0
  307. package/skill-files//351/252/214/346/224/266/references//346/240/270/345/257/271.md +17 -0
  308. package/skill-files//351/252/214/346/224/266/references//347/272/246/346/235/237.md +7 -0
@@ -0,0 +1,17 @@
1
+ /**
2
+ * GigaCode Command Adapter
3
+ *
4
+ * Formats commands for GigaCode using its Markdown custom command format.
5
+ * Project commands live in `.gigacode/commands/` and accept an optional
6
+ * `description` field in YAML frontmatter.
7
+ *
8
+ * @see https://gitverse.ru/docs/ai/ai-assistant-gigacode/gigacode-cli/commands
9
+ */
10
+ import type { ToolCommandAdapter } from '../types.js';
11
+ /**
12
+ * GigaCode adapter for command generation.
13
+ * File path: .gigacode/commands/freespec-<id>.md
14
+ * Format: Markdown with description frontmatter
15
+ */
16
+ export declare const gigacodeAdapter: ToolCommandAdapter;
17
+ //# sourceMappingURL=gigacode.d.ts.map
@@ -0,0 +1,31 @@
1
+ /**
2
+ * GigaCode Command Adapter
3
+ *
4
+ * Formats commands for GigaCode using its Markdown custom command format.
5
+ * Project commands live in `.gigacode/commands/` and accept an optional
6
+ * `description` field in YAML frontmatter.
7
+ *
8
+ * @see https://gitverse.ru/docs/ai/ai-assistant-gigacode/gigacode-cli/commands
9
+ */
10
+ import path from 'path';
11
+ import { escapeYamlValue } from '../yaml.js';
12
+ /**
13
+ * GigaCode adapter for command generation.
14
+ * File path: .gigacode/commands/freespec-<id>.md
15
+ * Format: Markdown with description frontmatter
16
+ */
17
+ export const gigacodeAdapter = {
18
+ toolId: 'gigacode',
19
+ getFilePath(commandId) {
20
+ return path.join('.gigacode', 'commands', `freespec-${commandId}.md`);
21
+ },
22
+ formatFile(content) {
23
+ return `---
24
+ description: ${escapeYamlValue(content.description)}
25
+ ---
26
+
27
+ ${content.body}
28
+ `;
29
+ },
30
+ };
31
+ //# sourceMappingURL=gigacode.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * GitHub Copilot Command Adapter
3
+ *
4
+ * Formats commands for GitHub Copilot following its .prompt.md specification.
5
+ */
6
+ import type { ToolCommandAdapter } from '../types.js';
7
+ /**
8
+ * GitHub Copilot adapter for command generation.
9
+ * File path: .github/prompts/freespec-<id>.prompt.md
10
+ * Frontmatter: description
11
+ */
12
+ export declare const githubCopilotAdapter: ToolCommandAdapter;
13
+ //# sourceMappingURL=github-copilot.d.ts.map
@@ -0,0 +1,27 @@
1
+ /**
2
+ * GitHub Copilot Command Adapter
3
+ *
4
+ * Formats commands for GitHub Copilot following its .prompt.md specification.
5
+ */
6
+ import path from 'path';
7
+ import { escapeYamlValue } from '../yaml.js';
8
+ /**
9
+ * GitHub Copilot adapter for command generation.
10
+ * File path: .github/prompts/freespec-<id>.prompt.md
11
+ * Frontmatter: description
12
+ */
13
+ export const githubCopilotAdapter = {
14
+ toolId: 'github-copilot',
15
+ getFilePath(commandId) {
16
+ return path.join('.github', 'prompts', `freespec-${commandId}.prompt.md`);
17
+ },
18
+ formatFile(content) {
19
+ return `---
20
+ description: ${escapeYamlValue(content.description)}
21
+ ---
22
+
23
+ ${content.body}
24
+ `;
25
+ },
26
+ };
27
+ //# sourceMappingURL=github-copilot.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * iFlow Command Adapter
3
+ *
4
+ * Formats commands for iFlow following its frontmatter specification.
5
+ */
6
+ import type { ToolCommandAdapter } from '../types.js';
7
+ /**
8
+ * iFlow adapter for command generation.
9
+ * File path: .iflow/commands/freespec-<id>.md
10
+ * Frontmatter: name, id, category, description
11
+ */
12
+ export declare const iflowAdapter: ToolCommandAdapter;
13
+ //# sourceMappingURL=iflow.d.ts.map
@@ -0,0 +1,30 @@
1
+ /**
2
+ * iFlow Command Adapter
3
+ *
4
+ * Formats commands for iFlow following its frontmatter specification.
5
+ */
6
+ import path from 'path';
7
+ import { escapeYamlValue } from '../yaml.js';
8
+ /**
9
+ * iFlow adapter for command generation.
10
+ * File path: .iflow/commands/freespec-<id>.md
11
+ * Frontmatter: name, id, category, description
12
+ */
13
+ export const iflowAdapter = {
14
+ toolId: 'iflow',
15
+ getFilePath(commandId) {
16
+ return path.join('.iflow', 'commands', `freespec-${commandId}.md`);
17
+ },
18
+ formatFile(content) {
19
+ return `---
20
+ name: ${escapeYamlValue(`/freespec-${content.id}`)}
21
+ id: ${escapeYamlValue(`freespec-${content.id}`)}
22
+ category: ${escapeYamlValue(content.category)}
23
+ description: ${escapeYamlValue(content.description)}
24
+ ---
25
+
26
+ ${content.body}
27
+ `;
28
+ },
29
+ };
30
+ //# sourceMappingURL=iflow.js.map
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Command Adapters Index
3
+ *
4
+ * Re-exports all tool command adapters.
5
+ */
6
+ export { amazonQAdapter } from './amazon-q.js';
7
+ export { antigravityAdapter } from './antigravity.js';
8
+ export { atomcodeAdapter } from './atomcode.js';
9
+ export { auggieAdapter } from './auggie.js';
10
+ export { bobAdapter } from './bob.js';
11
+ export { claudeAdapter } from './claude.js';
12
+ export { clineAdapter } from './cline.js';
13
+ export { commandCodeAdapter } from './command-code.js';
14
+ export { codebuddyAdapter } from './codebuddy.js';
15
+ export { codeStudioAdapter } from './codestudio.js';
16
+ export { continueAdapter } from './continue.js';
17
+ export { costrictAdapter } from './costrict.js';
18
+ export { crushAdapter } from './crush.js';
19
+ export { cursorAdapter } from './cursor.js';
20
+ export { devinAdapter } from './devin.js';
21
+ export { easycodeAdapter } from './easycode.js';
22
+ export { factoryAdapter } from './factory.js';
23
+ export { geminiAdapter } from './gemini.js';
24
+ export { githubCopilotAdapter } from './github-copilot.js';
25
+ export { gigacodeAdapter } from './gigacode.js';
26
+ export { iflowAdapter } from './iflow.js';
27
+ export { junieAdapter } from './junie.js';
28
+ export { kilocodeAdapter } from './kilocode.js';
29
+ export { kiroAdapter } from './kiro.js';
30
+ export { ohMyPiAdapter } from './oh-my-pi.js';
31
+ export { opencodeAdapter } from './opencode.js';
32
+ export { piAdapter } from './pi.js';
33
+ export { codeassistantAdapter } from './codeassistant.js';
34
+ export { qoderAdapter } from './qoder.js';
35
+ export { lingmaAdapter } from './lingma.js';
36
+ export { qwenAdapter } from './qwen.js';
37
+ export { roocodeAdapter } from './roocode.js';
38
+ export { traeAdapter } from './trae.js';
39
+ export { zcodeAdapter } from './zcode.js';
40
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Command Adapters Index
3
+ *
4
+ * Re-exports all tool command adapters.
5
+ */
6
+ export { amazonQAdapter } from './amazon-q.js';
7
+ export { antigravityAdapter } from './antigravity.js';
8
+ export { atomcodeAdapter } from './atomcode.js';
9
+ export { auggieAdapter } from './auggie.js';
10
+ export { bobAdapter } from './bob.js';
11
+ export { claudeAdapter } from './claude.js';
12
+ export { clineAdapter } from './cline.js';
13
+ export { commandCodeAdapter } from './command-code.js';
14
+ export { codebuddyAdapter } from './codebuddy.js';
15
+ export { codeStudioAdapter } from './codestudio.js';
16
+ export { continueAdapter } from './continue.js';
17
+ export { costrictAdapter } from './costrict.js';
18
+ export { crushAdapter } from './crush.js';
19
+ export { cursorAdapter } from './cursor.js';
20
+ export { devinAdapter } from './devin.js';
21
+ export { easycodeAdapter } from './easycode.js';
22
+ export { factoryAdapter } from './factory.js';
23
+ export { geminiAdapter } from './gemini.js';
24
+ export { githubCopilotAdapter } from './github-copilot.js';
25
+ export { gigacodeAdapter } from './gigacode.js';
26
+ export { iflowAdapter } from './iflow.js';
27
+ export { junieAdapter } from './junie.js';
28
+ export { kilocodeAdapter } from './kilocode.js';
29
+ export { kiroAdapter } from './kiro.js';
30
+ export { ohMyPiAdapter } from './oh-my-pi.js';
31
+ export { opencodeAdapter } from './opencode.js';
32
+ export { piAdapter } from './pi.js';
33
+ export { codeassistantAdapter } from './codeassistant.js';
34
+ export { qoderAdapter } from './qoder.js';
35
+ export { lingmaAdapter } from './lingma.js';
36
+ export { qwenAdapter } from './qwen.js';
37
+ export { roocodeAdapter } from './roocode.js';
38
+ export { traeAdapter } from './trae.js';
39
+ export { zcodeAdapter } from './zcode.js';
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Junie Command Adapter
3
+ *
4
+ * Formats commands for Junie following its frontmatter specification.
5
+ */
6
+ import type { ToolCommandAdapter } from '../types.js';
7
+ /**
8
+ * Junie adapter for command generation.
9
+ * File path: .junie/commands/freespec-<id>.md
10
+ * Frontmatter: description
11
+ */
12
+ export declare const junieAdapter: ToolCommandAdapter;
13
+ //# sourceMappingURL=junie.d.ts.map
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Junie Command Adapter
3
+ *
4
+ * Formats commands for Junie following its frontmatter specification.
5
+ */
6
+ import path from 'path';
7
+ import { escapeYamlValue } from '../yaml.js';
8
+ /**
9
+ * Junie adapter for command generation.
10
+ * File path: .junie/commands/freespec-<id>.md
11
+ * Frontmatter: description
12
+ */
13
+ export const junieAdapter = {
14
+ toolId: 'junie',
15
+ getFilePath(commandId) {
16
+ return path.join('.junie', 'commands', `freespec-${commandId}.md`);
17
+ },
18
+ formatFile(content) {
19
+ return `---
20
+ description: ${escapeYamlValue(content.description)}
21
+ ---
22
+
23
+ ${content.body}
24
+ `;
25
+ },
26
+ };
27
+ //# sourceMappingURL=junie.js.map
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Kilo Code Command Adapter
3
+ *
4
+ * Formats commands for Kilo Code following its workflow specification.
5
+ * Kilo Code workflows don't use frontmatter.
6
+ */
7
+ import type { ToolCommandAdapter } from '../types.js';
8
+ /**
9
+ * Kilo Code adapter for command generation.
10
+ * File path: .kilo/command/freespec-<id>.md
11
+ * Format: Plain markdown without frontmatter
12
+ */
13
+ export declare const kilocodeAdapter: ToolCommandAdapter;
14
+ //# sourceMappingURL=kilocode.d.ts.map
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Kilo Code Command Adapter
3
+ *
4
+ * Formats commands for Kilo Code following its workflow specification.
5
+ * Kilo Code workflows don't use frontmatter.
6
+ */
7
+ import path from 'path';
8
+ /**
9
+ * Kilo Code adapter for command generation.
10
+ * File path: .kilo/command/freespec-<id>.md
11
+ * Format: Plain markdown without frontmatter
12
+ */
13
+ export const kilocodeAdapter = {
14
+ toolId: 'kilocode',
15
+ getFilePath(commandId) {
16
+ return path.join('.kilo', 'command', `freespec-${commandId}.md`);
17
+ },
18
+ formatFile(content) {
19
+ return `${content.body}
20
+ `;
21
+ },
22
+ };
23
+ //# sourceMappingURL=kilocode.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Kiro Command Adapter
3
+ *
4
+ * Formats commands for Kiro following its .prompt.md specification.
5
+ */
6
+ import type { ToolCommandAdapter } from '../types.js';
7
+ /**
8
+ * Kiro adapter for command generation.
9
+ * File path: .kiro/prompts/freespec-<id>.prompt.md
10
+ * Frontmatter: description
11
+ */
12
+ export declare const kiroAdapter: ToolCommandAdapter;
13
+ //# sourceMappingURL=kiro.d.ts.map
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Kiro Command Adapter
3
+ *
4
+ * Formats commands for Kiro following its .prompt.md specification.
5
+ */
6
+ import path from 'path';
7
+ import { escapeYamlValue } from '../yaml.js';
8
+ /**
9
+ * Kiro adapter for command generation.
10
+ * File path: .kiro/prompts/freespec-<id>.prompt.md
11
+ * Frontmatter: description
12
+ */
13
+ export const kiroAdapter = {
14
+ toolId: 'kiro',
15
+ getFilePath(commandId) {
16
+ return path.join('.kiro', 'prompts', `freespec-${commandId}.prompt.md`);
17
+ },
18
+ formatFile(content) {
19
+ return `---
20
+ description: ${escapeYamlValue(content.description)}
21
+ ---
22
+
23
+ ${content.body}
24
+ `;
25
+ },
26
+ };
27
+ //# sourceMappingURL=kiro.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Lingma Command Adapter
3
+ *
4
+ * Formats commands for Lingma following its frontmatter specification.
5
+ */
6
+ import type { ToolCommandAdapter } from '../types.js';
7
+ /**
8
+ * Lingma adapter for command generation.
9
+ * File path: .lingma/commands/freespec/<id>.md
10
+ * Frontmatter: name, description, category, tags
11
+ */
12
+ export declare const lingmaAdapter: ToolCommandAdapter;
13
+ //# sourceMappingURL=lingma.d.ts.map
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Lingma Command Adapter
3
+ *
4
+ * Formats commands for Lingma following its frontmatter specification.
5
+ */
6
+ import path from 'path';
7
+ import { escapeYamlValue, formatTagsArray } from '../yaml.js';
8
+ /**
9
+ * Lingma adapter for command generation.
10
+ * File path: .lingma/commands/freespec/<id>.md
11
+ * Frontmatter: name, description, category, tags
12
+ */
13
+ export const lingmaAdapter = {
14
+ toolId: 'lingma',
15
+ getFilePath(commandId) {
16
+ return path.join('.lingma', 'commands', 'freespec', `${commandId}.md`);
17
+ },
18
+ formatFile(content) {
19
+ return `---
20
+ name: ${escapeYamlValue(content.name)}
21
+ description: ${escapeYamlValue(content.description)}
22
+ category: ${escapeYamlValue(content.category)}
23
+ tags: ${formatTagsArray(content.tags)}
24
+ ---
25
+
26
+ ${content.body}
27
+ `;
28
+ },
29
+ };
30
+ //# sourceMappingURL=lingma.js.map
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Oh My Pi (OMP) Command Adapter
3
+ *
4
+ * Formats commands for Oh My Pi following its slash command specification.
5
+ * OMP loads slash commands from .omp/commands/*.md with YAML frontmatter.
6
+ * The filename (minus .md) becomes the slash command name.
7
+ */
8
+ import type { ToolCommandAdapter } from '../types.js';
9
+ /**
10
+ * Oh My Pi adapter for command generation.
11
+ * File path: .omp/commands/freespec-<id>.md
12
+ * Frontmatter: description
13
+ *
14
+ * OMP uses the filename (minus .md) as the slash command name, so
15
+ * freespec-propose.md → /freespec-propose. generateCommand rewrites the body's
16
+ * command references to that form before this adapter formats it, and
17
+ * $@ is injected after **Input**: headings so user-supplied arguments
18
+ * (e.g. /freespec-propose my-feature) are visible to the agent.
19
+ */
20
+ export declare const ohMyPiAdapter: ToolCommandAdapter;
21
+ //# sourceMappingURL=oh-my-pi.d.ts.map
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Oh My Pi (OMP) Command Adapter
3
+ *
4
+ * Formats commands for Oh My Pi following its slash command specification.
5
+ * OMP loads slash commands from .omp/commands/*.md with YAML frontmatter.
6
+ * The filename (minus .md) becomes the slash command name.
7
+ */
8
+ import path from 'path';
9
+ import { escapeYamlValue } from '../yaml.js';
10
+ const OMP_INPUT_HEADING = /^\*\*Input\*\*:[^\n]*$/m;
11
+ function injectOmpArgs(body) {
12
+ if (body.includes('$@') || body.includes('$ARGUMENTS')) {
13
+ return body;
14
+ }
15
+ return body.replace(OMP_INPUT_HEADING, (heading) => `${heading}\n**Provided arguments**: $@`);
16
+ }
17
+ /**
18
+ * Oh My Pi adapter for command generation.
19
+ * File path: .omp/commands/freespec-<id>.md
20
+ * Frontmatter: description
21
+ *
22
+ * OMP uses the filename (minus .md) as the slash command name, so
23
+ * freespec-propose.md → /freespec-propose. generateCommand rewrites the body's
24
+ * command references to that form before this adapter formats it, and
25
+ * $@ is injected after **Input**: headings so user-supplied arguments
26
+ * (e.g. /freespec-propose my-feature) are visible to the agent.
27
+ */
28
+ export const ohMyPiAdapter = {
29
+ toolId: 'oh-my-pi',
30
+ getFilePath(commandId) {
31
+ return path.join('.omp', 'commands', `freespec-${commandId}.md`);
32
+ },
33
+ formatFile(content) {
34
+ return `---
35
+ description: ${escapeYamlValue(content.description)}
36
+ ---
37
+
38
+ ${injectOmpArgs(content.body)}
39
+ `;
40
+ },
41
+ };
42
+ //# sourceMappingURL=oh-my-pi.js.map
@@ -0,0 +1,14 @@
1
+ /**
2
+ * OpenCode Command Adapter
3
+ *
4
+ * Formats commands for OpenCode following its frontmatter specification.
5
+ */
6
+ import type { ToolCommandAdapter } from '../types.js';
7
+ /**
8
+ * OpenCode adapter for command generation.
9
+ * File path: .opencode/commands/freespec-<id>.md
10
+ * Frontmatter: description. $ARGUMENTS is injected after the complete input
11
+ * contract because OpenCode only passes arguments through explicit placeholders.
12
+ */
13
+ export declare const opencodeAdapter: ToolCommandAdapter;
14
+ //# sourceMappingURL=opencode.d.ts.map
@@ -0,0 +1,38 @@
1
+ /**
2
+ * OpenCode Command Adapter
3
+ *
4
+ * Formats commands for OpenCode following its frontmatter specification.
5
+ */
6
+ import path from 'path';
7
+ import { escapeYamlValue } from '../yaml.js';
8
+ const OPENCODE_INPUT_BLOCK = /^\*\*Input\*\*:[^\r\n]*(?:\r?\n(?!\r?\n)[^\r\n]*)*/m;
9
+ const OPENCODE_NO_INPUT = /^\*\*Input\*\*:\s*None required\b/im;
10
+ const OPENCODE_ARGUMENT_PLACEHOLDER = /\$(?:ARGUMENTS\b|[1-9]\d*\b)/;
11
+ function injectOpenCodeArgs(body) {
12
+ if (OPENCODE_ARGUMENT_PLACEHOLDER.test(body) || OPENCODE_NO_INPUT.test(body)) {
13
+ return body;
14
+ }
15
+ const eol = body.includes('\r\n') ? '\r\n' : '\n';
16
+ return body.replace(OPENCODE_INPUT_BLOCK, (input) => `${input}${eol}**Provided arguments**: $ARGUMENTS`);
17
+ }
18
+ /**
19
+ * OpenCode adapter for command generation.
20
+ * File path: .opencode/commands/freespec-<id>.md
21
+ * Frontmatter: description. $ARGUMENTS is injected after the complete input
22
+ * contract because OpenCode only passes arguments through explicit placeholders.
23
+ */
24
+ export const opencodeAdapter = {
25
+ toolId: 'opencode',
26
+ getFilePath(commandId) {
27
+ return path.join('.opencode', 'commands', `freespec-${commandId}.md`);
28
+ },
29
+ formatFile(content) {
30
+ return `---
31
+ description: ${escapeYamlValue(content.description)}
32
+ ---
33
+
34
+ ${injectOpenCodeArgs(content.body)}
35
+ `;
36
+ },
37
+ };
38
+ //# sourceMappingURL=opencode.js.map
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Pi Command Adapter
3
+ *
4
+ * Formats commands for Pi (pi.dev) following its prompt template specification.
5
+ * Pi prompt templates live in .pi/prompts/*.md with description frontmatter.
6
+ */
7
+ import type { ToolCommandAdapter } from '../types.js';
8
+ /**
9
+ * Pi adapter for prompt template generation.
10
+ * File path: .pi/prompts/freespec-<id>.md
11
+ * Frontmatter: description
12
+ *
13
+ * Pi uses the filename (minus .md) as the slash command name, so
14
+ * freespec-propose.md → /freespec-propose. generateCommand rewrites the body's
15
+ * command references to that form before this adapter formats it.
16
+ */
17
+ export declare const piAdapter: ToolCommandAdapter;
18
+ //# sourceMappingURL=pi.d.ts.map
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Pi Command Adapter
3
+ *
4
+ * Formats commands for Pi (pi.dev) following its prompt template specification.
5
+ * Pi prompt templates live in .pi/prompts/*.md with description frontmatter.
6
+ */
7
+ import path from 'path';
8
+ import { escapeYamlValue } from '../yaml.js';
9
+ const PI_INPUT_HEADING = /^\*\*Input\*\*:[^\n]*$/m;
10
+ function injectPiArgs(body) {
11
+ if (body.includes('$@') || body.includes('$ARGUMENTS')) {
12
+ return body;
13
+ }
14
+ return body.replace(PI_INPUT_HEADING, (heading) => `${heading}\n**Provided arguments**: $@`);
15
+ }
16
+ /**
17
+ * Pi adapter for prompt template generation.
18
+ * File path: .pi/prompts/freespec-<id>.md
19
+ * Frontmatter: description
20
+ *
21
+ * Pi uses the filename (minus .md) as the slash command name, so
22
+ * freespec-propose.md → /freespec-propose. generateCommand rewrites the body's
23
+ * command references to that form before this adapter formats it.
24
+ */
25
+ export const piAdapter = {
26
+ toolId: 'pi',
27
+ getFilePath(commandId) {
28
+ return path.join('.pi', 'prompts', `freespec-${commandId}.md`);
29
+ },
30
+ formatFile(content) {
31
+ return `---
32
+ description: ${escapeYamlValue(content.description)}
33
+ ---
34
+
35
+ ${injectPiArgs(content.body)}
36
+ `;
37
+ },
38
+ };
39
+ //# sourceMappingURL=pi.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Qoder Command Adapter
3
+ *
4
+ * Formats commands for Qoder following its frontmatter specification.
5
+ */
6
+ import type { ToolCommandAdapter } from '../types.js';
7
+ /**
8
+ * Qoder adapter for command generation.
9
+ * File path: .qoder/commands/freespec/<id>.md
10
+ * Frontmatter: name, description, category, tags
11
+ */
12
+ export declare const qoderAdapter: ToolCommandAdapter;
13
+ //# sourceMappingURL=qoder.d.ts.map
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Qoder Command Adapter
3
+ *
4
+ * Formats commands for Qoder following its frontmatter specification.
5
+ */
6
+ import path from 'path';
7
+ import { escapeYamlValue, formatTagsArray } from '../yaml.js';
8
+ /**
9
+ * Qoder adapter for command generation.
10
+ * File path: .qoder/commands/freespec/<id>.md
11
+ * Frontmatter: name, description, category, tags
12
+ */
13
+ export const qoderAdapter = {
14
+ toolId: 'qoder',
15
+ getFilePath(commandId) {
16
+ return path.join('.qoder', 'commands', 'freespec', `${commandId}.md`);
17
+ },
18
+ formatFile(content) {
19
+ return `---
20
+ name: ${escapeYamlValue(content.name)}
21
+ description: ${escapeYamlValue(content.description)}
22
+ category: ${escapeYamlValue(content.category)}
23
+ tags: ${formatTagsArray(content.tags)}
24
+ ---
25
+
26
+ ${content.body}
27
+ `;
28
+ },
29
+ };
30
+ //# sourceMappingURL=qoder.js.map
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Qwen Code Command Adapter
3
+ *
4
+ * Formats commands for Qwen Code following its Markdown custom command
5
+ * specification. Qwen Code has deprecated TOML commands in favor of
6
+ * Markdown files with YAML frontmatter.
7
+ *
8
+ * @see https://qwenlm.github.io/qwen-code-docs/en/users/features/commands/#markdown-file-format-specification-recommended
9
+ */
10
+ import type { ToolCommandAdapter } from '../types.js';
11
+ /**
12
+ * Qwen adapter for command generation.
13
+ * File path: .qwen/commands/freespec-<id>.md
14
+ * Format: Markdown with description frontmatter
15
+ */
16
+ export declare const qwenAdapter: ToolCommandAdapter;
17
+ //# sourceMappingURL=qwen.d.ts.map
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Qwen Code Command Adapter
3
+ *
4
+ * Formats commands for Qwen Code following its Markdown custom command
5
+ * specification. Qwen Code has deprecated TOML commands in favor of
6
+ * Markdown files with YAML frontmatter.
7
+ *
8
+ * @see https://qwenlm.github.io/qwen-code-docs/en/users/features/commands/#markdown-file-format-specification-recommended
9
+ */
10
+ import path from 'path';
11
+ import { escapeYamlValue } from '../yaml.js';
12
+ /**
13
+ * Qwen adapter for command generation.
14
+ * File path: .qwen/commands/freespec-<id>.md
15
+ * Format: Markdown with description frontmatter
16
+ */
17
+ export const qwenAdapter = {
18
+ toolId: 'qwen',
19
+ getFilePath(commandId) {
20
+ return path.join('.qwen', 'commands', `freespec-${commandId}.md`);
21
+ },
22
+ formatFile(content) {
23
+ return `---
24
+ description: ${escapeYamlValue(content.description)}
25
+ ---
26
+
27
+ ${content.body}
28
+ `;
29
+ },
30
+ };
31
+ //# sourceMappingURL=qwen.js.map