@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,13 @@
1
+ /**
2
+ * Claude Code Command Adapter
3
+ *
4
+ * Formats commands for Claude Code following its frontmatter specification.
5
+ */
6
+ import type { ToolCommandAdapter } from '../types.js';
7
+ /**
8
+ * Claude Code adapter for command generation.
9
+ * File path: .claude/commands/freespec/<id>.md
10
+ * Frontmatter: name, description, allowed-tools, category, tags
11
+ */
12
+ export declare const claudeAdapter: ToolCommandAdapter;
13
+ //# sourceMappingURL=claude.d.ts.map
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Claude Code Command Adapter
3
+ *
4
+ * Formats commands for Claude Code following its frontmatter specification.
5
+ */
6
+ import path from 'path';
7
+ import { escapeYamlValue, formatTagsArray } from '../yaml.js';
8
+ import { OPENSPEC_CLI_ALLOWED_TOOLS } from '../../shared/allowed-tools.js';
9
+ /**
10
+ * Claude Code adapter for command generation.
11
+ * File path: .claude/commands/freespec/<id>.md
12
+ * Frontmatter: name, description, allowed-tools, category, tags
13
+ */
14
+ export const claudeAdapter = {
15
+ toolId: 'claude',
16
+ getFilePath(commandId) {
17
+ return path.join('.claude', 'commands', 'freespec', `${commandId}.md`);
18
+ },
19
+ formatFile(content) {
20
+ return `---
21
+ name: ${escapeYamlValue(content.name)}
22
+ description: ${escapeYamlValue(content.description)}
23
+ allowed-tools: ${OPENSPEC_CLI_ALLOWED_TOOLS}
24
+ category: ${escapeYamlValue(content.category)}
25
+ tags: ${formatTagsArray(content.tags)}
26
+ ---
27
+
28
+ ${content.body}
29
+ `;
30
+ },
31
+ };
32
+ //# sourceMappingURL=claude.js.map
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Cline Command Adapter
3
+ *
4
+ * Formats commands for Cline following its workflow specification.
5
+ * Cline uses markdown headers instead of YAML frontmatter.
6
+ */
7
+ import type { ToolCommandAdapter } from '../types.js';
8
+ /**
9
+ * Cline adapter for command generation.
10
+ * File path: .clinerules/workflows/freespec-<id>.md
11
+ * Format: Markdown header with description
12
+ */
13
+ export declare const clineAdapter: ToolCommandAdapter;
14
+ //# sourceMappingURL=cline.d.ts.map
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Cline Command Adapter
3
+ *
4
+ * Formats commands for Cline following its workflow specification.
5
+ * Cline uses markdown headers instead of YAML frontmatter.
6
+ */
7
+ import path from 'path';
8
+ /**
9
+ * Cline adapter for command generation.
10
+ * File path: .clinerules/workflows/freespec-<id>.md
11
+ * Format: Markdown header with description
12
+ */
13
+ export const clineAdapter = {
14
+ toolId: 'cline',
15
+ getFilePath(commandId) {
16
+ return path.join('.clinerules', 'workflows', `freespec-${commandId}.md`);
17
+ },
18
+ formatFile(content) {
19
+ return `# ${content.name}
20
+
21
+ ${content.description}
22
+
23
+ ${content.body}
24
+ `;
25
+ },
26
+ };
27
+ //# sourceMappingURL=cline.js.map
@@ -0,0 +1,15 @@
1
+ /**
2
+ * SourceCraft Code Assistant Command Adapter
3
+ *
4
+ * Formats commands for the SourceCraft Code Assistant VS Code extension.
5
+ *
6
+ * @see https://sourcecraft.dev/portal/docs/en/code-assistant/operations/agent/slash-commands
7
+ */
8
+ import type { ToolCommandAdapter } from '../types.js';
9
+ /**
10
+ * SourceCraft Code Assistant adapter for command generation.
11
+ * File path: .codeassistant/commands/freespec-<id>.md
12
+ * Format: YAML frontmatter with description
13
+ */
14
+ export declare const codeassistantAdapter: ToolCommandAdapter;
15
+ //# sourceMappingURL=codeassistant.d.ts.map
@@ -0,0 +1,29 @@
1
+ /**
2
+ * SourceCraft Code Assistant Command Adapter
3
+ *
4
+ * Formats commands for the SourceCraft Code Assistant VS Code extension.
5
+ *
6
+ * @see https://sourcecraft.dev/portal/docs/en/code-assistant/operations/agent/slash-commands
7
+ */
8
+ import path from 'path';
9
+ import { escapeYamlValue } from '../yaml.js';
10
+ /**
11
+ * SourceCraft Code Assistant adapter for command generation.
12
+ * File path: .codeassistant/commands/freespec-<id>.md
13
+ * Format: YAML frontmatter with description
14
+ */
15
+ export const codeassistantAdapter = {
16
+ toolId: 'codeassistant',
17
+ getFilePath(commandId) {
18
+ return path.join('.codeassistant', 'commands', `freespec-${commandId}.md`);
19
+ },
20
+ formatFile(content) {
21
+ return `---
22
+ description: ${escapeYamlValue(content.description)}
23
+ ---
24
+
25
+ ${content.body}
26
+ `;
27
+ },
28
+ };
29
+ //# sourceMappingURL=codeassistant.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * CodeBuddy Command Adapter
3
+ *
4
+ * Formats commands for CodeBuddy following its frontmatter specification.
5
+ */
6
+ import type { ToolCommandAdapter } from '../types.js';
7
+ /**
8
+ * CodeBuddy adapter for command generation.
9
+ * File path: .codebuddy/commands/freespec/<id>.md
10
+ * Frontmatter: name, description, argument-hint
11
+ */
12
+ export declare const codebuddyAdapter: ToolCommandAdapter;
13
+ //# sourceMappingURL=codebuddy.d.ts.map
@@ -0,0 +1,29 @@
1
+ /**
2
+ * CodeBuddy Command Adapter
3
+ *
4
+ * Formats commands for CodeBuddy following its frontmatter specification.
5
+ */
6
+ import path from 'path';
7
+ import { escapeYamlValue } from '../yaml.js';
8
+ /**
9
+ * CodeBuddy adapter for command generation.
10
+ * File path: .codebuddy/commands/freespec/<id>.md
11
+ * Frontmatter: name, description, argument-hint
12
+ */
13
+ export const codebuddyAdapter = {
14
+ toolId: 'codebuddy',
15
+ getFilePath(commandId) {
16
+ return path.join('.codebuddy', 'commands', 'freespec', `${commandId}.md`);
17
+ },
18
+ formatFile(content) {
19
+ return `---
20
+ name: ${escapeYamlValue(content.name)}
21
+ description: ${escapeYamlValue(content.description)}
22
+ argument-hint: "[command arguments]"
23
+ ---
24
+
25
+ ${content.body}
26
+ `;
27
+ },
28
+ };
29
+ //# sourceMappingURL=codebuddy.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Code Studio Command Adapter
3
+ *
4
+ * Formats commands for Syncfusion Code Studio following its .prompt.md specification.
5
+ */
6
+ import type { ToolCommandAdapter } from '../types.js';
7
+ /**
8
+ * Code Studio adapter for command generation.
9
+ * File path: .codestudio/prompts/freespec-<id>.prompt.md
10
+ * Frontmatter: description
11
+ */
12
+ export declare const codeStudioAdapter: ToolCommandAdapter;
13
+ //# sourceMappingURL=codestudio.d.ts.map
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Code Studio Command Adapter
3
+ *
4
+ * Formats commands for Syncfusion Code Studio following its .prompt.md specification.
5
+ */
6
+ import path from 'path';
7
+ import { escapeYamlValue } from '../yaml.js';
8
+ /**
9
+ * Code Studio adapter for command generation.
10
+ * File path: .codestudio/prompts/freespec-<id>.prompt.md
11
+ * Frontmatter: description
12
+ */
13
+ export const codeStudioAdapter = {
14
+ toolId: 'codestudio',
15
+ getFilePath(commandId) {
16
+ return path.join('.codestudio', '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=codestudio.js.map
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Command Code Command Adapter
3
+ *
4
+ * Command Code reads custom slash commands from `.commandcode/commands/`. The
5
+ * command name is the markdown filename without its `.md` extension, so
6
+ * `freespec-<id>.md` registers `/freespec-<id>` — the same flat naming Cursor and
7
+ * OpenCode use. See https://commandcode.ai/docs/reference/slash-commands.
8
+ */
9
+ import type { ToolCommandAdapter } from '../types.js';
10
+ /**
11
+ * Command Code adapter for command generation.
12
+ * File path: .commandcode/commands/freespec-<id>.md
13
+ * Format: plain Markdown with $ARGUMENTS injected after the input contract
14
+ *
15
+ * Command Code executes the full trimmed file body and substitutes invocation
16
+ * arguments only where the body includes one of its argument placeholders.
17
+ */
18
+ export declare const commandCodeAdapter: ToolCommandAdapter;
19
+ //# sourceMappingURL=command-code.d.ts.map
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Command Code Command Adapter
3
+ *
4
+ * Command Code reads custom slash commands from `.commandcode/commands/`. The
5
+ * command name is the markdown filename without its `.md` extension, so
6
+ * `freespec-<id>.md` registers `/freespec-<id>` — the same flat naming Cursor and
7
+ * OpenCode use. See https://commandcode.ai/docs/reference/slash-commands.
8
+ */
9
+ import path from 'path';
10
+ const COMMAND_CODE_INPUT_HEADING = /^\*\*Input\*\*:[^\n]*$/m;
11
+ function injectCommandCodeArgs(body) {
12
+ if (/^\*\*Provided arguments\*\*:\s*(?:\$(?:ARGUMENTS|@)|\$\{(?:ARGUMENTS|@)\})\s*$/m.test(body)) {
13
+ return body;
14
+ }
15
+ return body.replace(COMMAND_CODE_INPUT_HEADING, (heading) => `${heading}\n**Provided arguments**: $ARGUMENTS`);
16
+ }
17
+ /**
18
+ * Command Code adapter for command generation.
19
+ * File path: .commandcode/commands/freespec-<id>.md
20
+ * Format: plain Markdown with $ARGUMENTS injected after the input contract
21
+ *
22
+ * Command Code executes the full trimmed file body and substitutes invocation
23
+ * arguments only where the body includes one of its argument placeholders.
24
+ */
25
+ export const commandCodeAdapter = {
26
+ toolId: 'command-code',
27
+ getFilePath(commandId) {
28
+ return path.join('.commandcode', 'commands', `freespec-${commandId}.md`);
29
+ },
30
+ formatFile(content) {
31
+ return `${injectCommandCodeArgs(content.body)}\n`;
32
+ },
33
+ };
34
+ //# sourceMappingURL=command-code.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Continue Command Adapter
3
+ *
4
+ * Formats commands for Continue following its .prompt specification.
5
+ */
6
+ import type { ToolCommandAdapter } from '../types.js';
7
+ /**
8
+ * Continue adapter for command generation.
9
+ * File path: .continue/prompts/freespec-<id>.prompt
10
+ * Frontmatter: name, description, invokable
11
+ */
12
+ export declare const continueAdapter: ToolCommandAdapter;
13
+ //# sourceMappingURL=continue.d.ts.map
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Continue Command Adapter
3
+ *
4
+ * Formats commands for Continue following its .prompt specification.
5
+ */
6
+ import path from 'path';
7
+ import { escapeYamlValue } from '../yaml.js';
8
+ /**
9
+ * Continue adapter for command generation.
10
+ * File path: .continue/prompts/freespec-<id>.prompt
11
+ * Frontmatter: name, description, invokable
12
+ */
13
+ export const continueAdapter = {
14
+ toolId: 'continue',
15
+ getFilePath(commandId) {
16
+ return path.join('.continue', 'prompts', `freespec-${commandId}.prompt`);
17
+ },
18
+ formatFile(content) {
19
+ // Continue injects an invoked prompt into the model context. Smaller local
20
+ // models can otherwise mistake the workflow name for a tool to call (#925).
21
+ return `---
22
+ name: ${escapeYamlValue(`freespec-${content.id}`)}
23
+ description: ${escapeYamlValue(content.description)}
24
+ invokable: true
25
+ ---
26
+
27
+ This workflow prompt is already active. Follow its instructions directly. Do not call a tool named after this workflow.
28
+
29
+ ${content.body}
30
+ `;
31
+ },
32
+ };
33
+ //# sourceMappingURL=continue.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * CoStrict Command Adapter
3
+ *
4
+ * Formats commands for CoStrict following its frontmatter specification.
5
+ */
6
+ import type { ToolCommandAdapter } from '../types.js';
7
+ /**
8
+ * CoStrict adapter for command generation.
9
+ * File path: .cospec/freespec/commands/freespec-<id>.md
10
+ * Frontmatter: description, argument-hint
11
+ */
12
+ export declare const costrictAdapter: ToolCommandAdapter;
13
+ //# sourceMappingURL=costrict.d.ts.map
@@ -0,0 +1,28 @@
1
+ /**
2
+ * CoStrict Command Adapter
3
+ *
4
+ * Formats commands for CoStrict following its frontmatter specification.
5
+ */
6
+ import path from 'path';
7
+ import { escapeYamlValue } from '../yaml.js';
8
+ /**
9
+ * CoStrict adapter for command generation.
10
+ * File path: .cospec/freespec/commands/freespec-<id>.md
11
+ * Frontmatter: description, argument-hint
12
+ */
13
+ export const costrictAdapter = {
14
+ toolId: 'costrict',
15
+ getFilePath(commandId) {
16
+ return path.join('.cospec', 'freespec', 'commands', `freespec-${commandId}.md`);
17
+ },
18
+ formatFile(content) {
19
+ return `---
20
+ description: ${escapeYamlValue(content.description)}
21
+ argument-hint: command arguments
22
+ ---
23
+
24
+ ${content.body}
25
+ `;
26
+ },
27
+ };
28
+ //# sourceMappingURL=costrict.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Crush Command Adapter
3
+ *
4
+ * Formats commands for Crush following its frontmatter specification.
5
+ */
6
+ import type { ToolCommandAdapter } from '../types.js';
7
+ /**
8
+ * Crush adapter for command generation.
9
+ * File path: .crush/commands/freespec/<id>.md
10
+ * Frontmatter: name, description, category, tags
11
+ */
12
+ export declare const crushAdapter: ToolCommandAdapter;
13
+ //# sourceMappingURL=crush.d.ts.map
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Crush Command Adapter
3
+ *
4
+ * Formats commands for Crush following its frontmatter specification.
5
+ */
6
+ import path from 'path';
7
+ import { escapeYamlValue, formatTagsArray } from '../yaml.js';
8
+ /**
9
+ * Crush adapter for command generation.
10
+ * File path: .crush/commands/freespec/<id>.md
11
+ * Frontmatter: name, description, category, tags
12
+ */
13
+ export const crushAdapter = {
14
+ toolId: 'crush',
15
+ getFilePath(commandId) {
16
+ return path.join('.crush', '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=crush.js.map
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Cursor Command Adapter
3
+ *
4
+ * Formats commands for Cursor following its frontmatter specification.
5
+ * Cursor uses a different frontmatter format and file naming convention.
6
+ */
7
+ import type { ToolCommandAdapter } from '../types.js';
8
+ /**
9
+ * Cursor adapter for command generation.
10
+ * File path: .cursor/commands/freespec-<id>.md
11
+ * Frontmatter: name (as /freespec-<id>), id, category, description
12
+ */
13
+ export declare const cursorAdapter: ToolCommandAdapter;
14
+ //# sourceMappingURL=cursor.d.ts.map
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Cursor Command Adapter
3
+ *
4
+ * Formats commands for Cursor following its frontmatter specification.
5
+ * Cursor uses a different frontmatter format and file naming convention.
6
+ */
7
+ import path from 'path';
8
+ import { escapeYamlValue } from '../yaml.js';
9
+ /**
10
+ * Cursor adapter for command generation.
11
+ * File path: .cursor/commands/freespec-<id>.md
12
+ * Frontmatter: name (as /freespec-<id>), id, category, description
13
+ */
14
+ export const cursorAdapter = {
15
+ toolId: 'cursor',
16
+ getFilePath(commandId) {
17
+ return path.join('.cursor', 'commands', `freespec-${commandId}.md`);
18
+ },
19
+ formatFile(content) {
20
+ return `---
21
+ name: ${escapeYamlValue(`/freespec-${content.id}`)}
22
+ id: ${escapeYamlValue(`freespec-${content.id}`)}
23
+ category: ${escapeYamlValue(content.category)}
24
+ description: ${escapeYamlValue(content.description)}
25
+ ---
26
+
27
+ ${content.body}
28
+ `;
29
+ },
30
+ };
31
+ //# sourceMappingURL=cursor.js.map
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Devin Desktop Command Adapter
3
+ *
4
+ * Formats commands for Devin Desktop following its frontmatter specification.
5
+ * Devin Desktop reads Cascade-style workflows from `.devin/workflows/`, the
6
+ * same shape Windsurf uses.
7
+ */
8
+ import type { ToolCommandAdapter } from '../types.js';
9
+ /**
10
+ * Devin Desktop adapter for command generation.
11
+ * File path: .devin/workflows/freespec-<id>.md
12
+ * Frontmatter: name, description, category, tags
13
+ *
14
+ * The `freespec-` filename prefix makes this a flat invocation, so the generator
15
+ * rewrites the body's `/freespec:*` references to the `/freespec-*` form Devin
16
+ * registers — see invocation.ts.
17
+ */
18
+ export declare const devinAdapter: ToolCommandAdapter;
19
+ //# sourceMappingURL=devin.d.ts.map
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Devin Desktop Command Adapter
3
+ *
4
+ * Formats commands for Devin Desktop following its frontmatter specification.
5
+ * Devin Desktop reads Cascade-style workflows from `.devin/workflows/`, the
6
+ * same shape Windsurf uses.
7
+ */
8
+ import path from 'path';
9
+ import { escapeYamlValue, formatTagsArray } from '../yaml.js';
10
+ /**
11
+ * Devin Desktop adapter for command generation.
12
+ * File path: .devin/workflows/freespec-<id>.md
13
+ * Frontmatter: name, description, category, tags
14
+ *
15
+ * The `freespec-` filename prefix makes this a flat invocation, so the generator
16
+ * rewrites the body's `/freespec:*` references to the `/freespec-*` form Devin
17
+ * registers — see invocation.ts.
18
+ */
19
+ export const devinAdapter = {
20
+ toolId: 'devin',
21
+ getFilePath(commandId) {
22
+ return path.join('.devin', 'workflows', `freespec-${commandId}.md`);
23
+ },
24
+ formatFile(content) {
25
+ return `---
26
+ name: ${escapeYamlValue(content.name)}
27
+ description: ${escapeYamlValue(content.description)}
28
+ category: ${escapeYamlValue(content.category)}
29
+ tags: ${formatTagsArray(content.tags)}
30
+ ---
31
+
32
+ ${content.body}
33
+ `;
34
+ },
35
+ };
36
+ //# sourceMappingURL=devin.js.map
@@ -0,0 +1,17 @@
1
+ /**
2
+ * EasyCode Command Adapter
3
+ *
4
+ * Formats commands for OrionStarAI/EasyCode using its TOML command format.
5
+ * https://github.com/OrionStarAI/EasyCode
6
+ */
7
+ import type { ToolCommandAdapter } from '../types.js';
8
+ /**
9
+ * EasyCode adapter for command generation.
10
+ * File path: .easycode/commands/freespec/<id>.toml
11
+ *
12
+ * Format:
13
+ * description = "<basic-string>" single-line, backslash/quote-safe
14
+ * prompt = """<multiline-string>""" multiline, backslash/triple-quote-safe
15
+ */
16
+ export declare const easycodeAdapter: ToolCommandAdapter;
17
+ //# sourceMappingURL=easycode.d.ts.map
@@ -0,0 +1,28 @@
1
+ /**
2
+ * EasyCode Command Adapter
3
+ *
4
+ * Formats commands for OrionStarAI/EasyCode using its TOML command format.
5
+ * https://github.com/OrionStarAI/EasyCode
6
+ */
7
+ import path from 'path';
8
+ import { escapeTomlBasicString, escapeTomlMultilineBasicString } from '../toml.js';
9
+ /**
10
+ * EasyCode adapter for command generation.
11
+ * File path: .easycode/commands/freespec/<id>.toml
12
+ *
13
+ * Format:
14
+ * description = "<basic-string>" single-line, backslash/quote-safe
15
+ * prompt = """<multiline-string>""" multiline, backslash/triple-quote-safe
16
+ */
17
+ export const easycodeAdapter = {
18
+ toolId: 'easycode',
19
+ getFilePath(commandId) {
20
+ return path.join('.easycode', 'commands', 'freespec', `${commandId}.toml`);
21
+ },
22
+ formatFile(content) {
23
+ const safeDesc = escapeTomlBasicString(content.description);
24
+ const safeBody = escapeTomlMultilineBasicString(content.body);
25
+ return `description = "${safeDesc}"\n\nprompt = """\n${safeBody}\n"""\n`;
26
+ },
27
+ };
28
+ //# sourceMappingURL=easycode.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Factory Droid Command Adapter
3
+ *
4
+ * Formats commands for Factory Droid following its frontmatter specification.
5
+ */
6
+ import type { ToolCommandAdapter } from '../types.js';
7
+ /**
8
+ * Factory adapter for command generation.
9
+ * File path: .factory/commands/freespec-<id>.md
10
+ * Frontmatter: description, argument-hint
11
+ */
12
+ export declare const factoryAdapter: ToolCommandAdapter;
13
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Factory Droid Command Adapter
3
+ *
4
+ * Formats commands for Factory Droid following its frontmatter specification.
5
+ */
6
+ import path from 'path';
7
+ import { escapeYamlValue } from '../yaml.js';
8
+ /**
9
+ * Factory adapter for command generation.
10
+ * File path: .factory/commands/freespec-<id>.md
11
+ * Frontmatter: description, argument-hint
12
+ */
13
+ export const factoryAdapter = {
14
+ toolId: 'factory',
15
+ getFilePath(commandId) {
16
+ return path.join('.factory', 'commands', `freespec-${commandId}.md`);
17
+ },
18
+ formatFile(content) {
19
+ return `---
20
+ description: ${escapeYamlValue(content.description)}
21
+ argument-hint: command arguments
22
+ ---
23
+
24
+ ${content.body}
25
+ `;
26
+ },
27
+ };
28
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Gemini CLI Command Adapter
3
+ *
4
+ * Formats commands for Gemini CLI following its TOML specification.
5
+ */
6
+ import type { ToolCommandAdapter } from '../types.js';
7
+ /**
8
+ * Gemini adapter for command generation.
9
+ * File path: .gemini/commands/freespec/<id>.toml
10
+ * Format: TOML with description and prompt fields
11
+ */
12
+ export declare const geminiAdapter: ToolCommandAdapter;
13
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Gemini CLI Command Adapter
3
+ *
4
+ * Formats commands for Gemini CLI following its TOML specification.
5
+ */
6
+ import path from 'path';
7
+ import { escapeTomlBasicString, escapeTomlMultilineBasicString } from '../toml.js';
8
+ /**
9
+ * Gemini adapter for command generation.
10
+ * File path: .gemini/commands/freespec/<id>.toml
11
+ * Format: TOML with description and prompt fields
12
+ */
13
+ export const geminiAdapter = {
14
+ toolId: 'gemini',
15
+ getFilePath(commandId) {
16
+ return path.join('.gemini', 'commands', 'freespec', `${commandId}.toml`);
17
+ },
18
+ formatFile(content) {
19
+ return `description = "${escapeTomlBasicString(content.description)}"
20
+
21
+ prompt = """
22
+ ${escapeTomlMultilineBasicString(content.body)}
23
+ """
24
+ `;
25
+ },
26
+ };
27
+ //# sourceMappingURL=gemini.js.map