@devtrack-solution/codesdd 1.2.2

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 (433) hide show
  1. package/.sdd/skills/curated/api-clean-flask-langgraph/SKILL.md +2751 -0
  2. package/.sdd/skills/curated/devtrack-api/SKILL.md +137 -0
  3. package/.sdd/skills/curated/devtrack-api/agents/openai.yaml +4 -0
  4. package/.sdd/skills/curated/devtrack-api/references/application-presentation.md +381 -0
  5. package/.sdd/skills/curated/devtrack-api/references/architecture-governance.md +219 -0
  6. package/.sdd/skills/curated/devtrack-api/references/domain-modeling.md +359 -0
  7. package/.sdd/skills/curated/devtrack-api/references/implementation-checklist.md +127 -0
  8. package/.sdd/skills/curated/devtrack-api/references/imports-lint.md +207 -0
  9. package/.sdd/skills/curated/devtrack-api/references/testing-validation.md +167 -0
  10. package/.sdd/skills/curated/devtrack-api/references/typeorm-infrastructure.md +334 -0
  11. package/LICENSE +21 -0
  12. package/README.md +842 -0
  13. package/bin/codesdd.js +10 -0
  14. package/dist/cli/index.d.ts +3 -0
  15. package/dist/cli/index.js +560 -0
  16. package/dist/commands/change.d.ts +35 -0
  17. package/dist/commands/change.js +296 -0
  18. package/dist/commands/completion.d.ts +72 -0
  19. package/dist/commands/completion.js +258 -0
  20. package/dist/commands/config.d.ts +36 -0
  21. package/dist/commands/config.js +552 -0
  22. package/dist/commands/feedback.d.ts +9 -0
  23. package/dist/commands/feedback.js +184 -0
  24. package/dist/commands/schema.d.ts +6 -0
  25. package/dist/commands/schema.js +870 -0
  26. package/dist/commands/sdd/execution.d.ts +3 -0
  27. package/dist/commands/sdd/execution.js +409 -0
  28. package/dist/commands/sdd/shared.d.ts +9 -0
  29. package/dist/commands/sdd/shared.js +84 -0
  30. package/dist/commands/sdd/skills.d.ts +3 -0
  31. package/dist/commands/sdd/skills.js +154 -0
  32. package/dist/commands/sdd.d.ts +3 -0
  33. package/dist/commands/sdd.js +769 -0
  34. package/dist/commands/show.d.ts +14 -0
  35. package/dist/commands/show.js +133 -0
  36. package/dist/commands/spec.d.ts +15 -0
  37. package/dist/commands/spec.js +228 -0
  38. package/dist/commands/validate.d.ts +24 -0
  39. package/dist/commands/validate.js +295 -0
  40. package/dist/commands/workflow/index.d.ts +17 -0
  41. package/dist/commands/workflow/index.js +12 -0
  42. package/dist/commands/workflow/instructions.d.ts +29 -0
  43. package/dist/commands/workflow/instructions.js +383 -0
  44. package/dist/commands/workflow/new-change.d.ts +11 -0
  45. package/dist/commands/workflow/new-change.js +45 -0
  46. package/dist/commands/workflow/schemas.d.ts +10 -0
  47. package/dist/commands/workflow/schemas.js +34 -0
  48. package/dist/commands/workflow/shared.d.ts +57 -0
  49. package/dist/commands/workflow/shared.js +117 -0
  50. package/dist/commands/workflow/status.d.ts +14 -0
  51. package/dist/commands/workflow/status.js +76 -0
  52. package/dist/commands/workflow/templates.d.ts +16 -0
  53. package/dist/commands/workflow/templates.js +68 -0
  54. package/dist/core/archive.d.ts +16 -0
  55. package/dist/core/archive.js +487 -0
  56. package/dist/core/artifact-graph/graph.d.ts +56 -0
  57. package/dist/core/artifact-graph/graph.js +141 -0
  58. package/dist/core/artifact-graph/index.d.ts +7 -0
  59. package/dist/core/artifact-graph/index.js +13 -0
  60. package/dist/core/artifact-graph/instruction-loader.d.ts +143 -0
  61. package/dist/core/artifact-graph/instruction-loader.js +215 -0
  62. package/dist/core/artifact-graph/resolver.d.ts +81 -0
  63. package/dist/core/artifact-graph/resolver.js +258 -0
  64. package/dist/core/artifact-graph/schema.d.ts +13 -0
  65. package/dist/core/artifact-graph/schema.js +108 -0
  66. package/dist/core/artifact-graph/state.d.ts +12 -0
  67. package/dist/core/artifact-graph/state.js +54 -0
  68. package/dist/core/artifact-graph/types.d.ts +45 -0
  69. package/dist/core/artifact-graph/types.js +43 -0
  70. package/dist/core/available-tools.d.ts +16 -0
  71. package/dist/core/available-tools.js +30 -0
  72. package/dist/core/branding.d.ts +8 -0
  73. package/dist/core/branding.js +12 -0
  74. package/dist/core/cli/command-matrix.d.ts +23 -0
  75. package/dist/core/cli/command-matrix.js +123 -0
  76. package/dist/core/command-generation/adapters/amazon-q.d.ts +13 -0
  77. package/dist/core/command-generation/adapters/amazon-q.js +26 -0
  78. package/dist/core/command-generation/adapters/antigravity.d.ts +13 -0
  79. package/dist/core/command-generation/adapters/antigravity.js +26 -0
  80. package/dist/core/command-generation/adapters/auggie.d.ts +13 -0
  81. package/dist/core/command-generation/adapters/auggie.js +27 -0
  82. package/dist/core/command-generation/adapters/claude.d.ts +13 -0
  83. package/dist/core/command-generation/adapters/claude.js +50 -0
  84. package/dist/core/command-generation/adapters/cline.d.ts +14 -0
  85. package/dist/core/command-generation/adapters/cline.js +27 -0
  86. package/dist/core/command-generation/adapters/codebuddy.d.ts +13 -0
  87. package/dist/core/command-generation/adapters/codebuddy.js +28 -0
  88. package/dist/core/command-generation/adapters/codex.d.ts +16 -0
  89. package/dist/core/command-generation/adapters/codex.js +39 -0
  90. package/dist/core/command-generation/adapters/continue.d.ts +13 -0
  91. package/dist/core/command-generation/adapters/continue.js +28 -0
  92. package/dist/core/command-generation/adapters/costrict.d.ts +13 -0
  93. package/dist/core/command-generation/adapters/costrict.js +27 -0
  94. package/dist/core/command-generation/adapters/crush.d.ts +13 -0
  95. package/dist/core/command-generation/adapters/crush.js +30 -0
  96. package/dist/core/command-generation/adapters/cursor.d.ts +14 -0
  97. package/dist/core/command-generation/adapters/cursor.js +44 -0
  98. package/dist/core/command-generation/adapters/factory.d.ts +13 -0
  99. package/dist/core/command-generation/adapters/factory.js +27 -0
  100. package/dist/core/command-generation/adapters/gemini.d.ts +13 -0
  101. package/dist/core/command-generation/adapters/gemini.js +26 -0
  102. package/dist/core/command-generation/adapters/github-copilot.d.ts +13 -0
  103. package/dist/core/command-generation/adapters/github-copilot.js +26 -0
  104. package/dist/core/command-generation/adapters/iflow.d.ts +13 -0
  105. package/dist/core/command-generation/adapters/iflow.js +29 -0
  106. package/dist/core/command-generation/adapters/index.d.ts +29 -0
  107. package/dist/core/command-generation/adapters/index.js +29 -0
  108. package/dist/core/command-generation/adapters/kilocode.d.ts +14 -0
  109. package/dist/core/command-generation/adapters/kilocode.js +23 -0
  110. package/dist/core/command-generation/adapters/kiro.d.ts +13 -0
  111. package/dist/core/command-generation/adapters/kiro.js +26 -0
  112. package/dist/core/command-generation/adapters/opencode.d.ts +13 -0
  113. package/dist/core/command-generation/adapters/opencode.js +29 -0
  114. package/dist/core/command-generation/adapters/pi.d.ts +14 -0
  115. package/dist/core/command-generation/adapters/pi.js +41 -0
  116. package/dist/core/command-generation/adapters/qoder.d.ts +13 -0
  117. package/dist/core/command-generation/adapters/qoder.js +30 -0
  118. package/dist/core/command-generation/adapters/qwen.d.ts +13 -0
  119. package/dist/core/command-generation/adapters/qwen.js +26 -0
  120. package/dist/core/command-generation/adapters/roocode.d.ts +14 -0
  121. package/dist/core/command-generation/adapters/roocode.js +27 -0
  122. package/dist/core/command-generation/adapters/windsurf.d.ts +14 -0
  123. package/dist/core/command-generation/adapters/windsurf.js +51 -0
  124. package/dist/core/command-generation/generator.d.ts +21 -0
  125. package/dist/core/command-generation/generator.js +27 -0
  126. package/dist/core/command-generation/index.d.ts +22 -0
  127. package/dist/core/command-generation/index.js +24 -0
  128. package/dist/core/command-generation/registry.d.ts +36 -0
  129. package/dist/core/command-generation/registry.js +92 -0
  130. package/dist/core/command-generation/types.d.ts +56 -0
  131. package/dist/core/command-generation/types.js +8 -0
  132. package/dist/core/completions/command-registry.d.ts +7 -0
  133. package/dist/core/completions/command-registry.js +461 -0
  134. package/dist/core/completions/completion-provider.d.ts +60 -0
  135. package/dist/core/completions/completion-provider.js +102 -0
  136. package/dist/core/completions/factory.d.ts +64 -0
  137. package/dist/core/completions/factory.js +75 -0
  138. package/dist/core/completions/generators/bash-generator.d.ts +32 -0
  139. package/dist/core/completions/generators/bash-generator.js +174 -0
  140. package/dist/core/completions/generators/fish-generator.d.ts +32 -0
  141. package/dist/core/completions/generators/fish-generator.js +157 -0
  142. package/dist/core/completions/generators/powershell-generator.d.ts +33 -0
  143. package/dist/core/completions/generators/powershell-generator.js +207 -0
  144. package/dist/core/completions/generators/zsh-generator.d.ts +44 -0
  145. package/dist/core/completions/generators/zsh-generator.js +250 -0
  146. package/dist/core/completions/installers/bash-installer.d.ts +87 -0
  147. package/dist/core/completions/installers/bash-installer.js +318 -0
  148. package/dist/core/completions/installers/fish-installer.d.ts +43 -0
  149. package/dist/core/completions/installers/fish-installer.js +143 -0
  150. package/dist/core/completions/installers/powershell-installer.d.ts +88 -0
  151. package/dist/core/completions/installers/powershell-installer.js +327 -0
  152. package/dist/core/completions/installers/zsh-installer.d.ts +125 -0
  153. package/dist/core/completions/installers/zsh-installer.js +452 -0
  154. package/dist/core/completions/templates/bash-templates.d.ts +6 -0
  155. package/dist/core/completions/templates/bash-templates.js +24 -0
  156. package/dist/core/completions/templates/fish-templates.d.ts +7 -0
  157. package/dist/core/completions/templates/fish-templates.js +39 -0
  158. package/dist/core/completions/templates/powershell-templates.d.ts +6 -0
  159. package/dist/core/completions/templates/powershell-templates.js +25 -0
  160. package/dist/core/completions/templates/zsh-templates.d.ts +6 -0
  161. package/dist/core/completions/templates/zsh-templates.js +36 -0
  162. package/dist/core/completions/types.d.ts +79 -0
  163. package/dist/core/completions/types.js +2 -0
  164. package/dist/core/config-prompts.d.ts +9 -0
  165. package/dist/core/config-prompts.js +34 -0
  166. package/dist/core/config-schema.d.ts +86 -0
  167. package/dist/core/config-schema.js +213 -0
  168. package/dist/core/config.d.ts +17 -0
  169. package/dist/core/config.js +33 -0
  170. package/dist/core/converters/json-converter.d.ts +6 -0
  171. package/dist/core/converters/json-converter.js +51 -0
  172. package/dist/core/global-config.d.ts +44 -0
  173. package/dist/core/global-config.js +125 -0
  174. package/dist/core/index.d.ts +2 -0
  175. package/dist/core/index.js +3 -0
  176. package/dist/core/init.d.ts +36 -0
  177. package/dist/core/init.js +576 -0
  178. package/dist/core/legacy-cleanup.d.ts +162 -0
  179. package/dist/core/legacy-cleanup.js +512 -0
  180. package/dist/core/list.d.ts +9 -0
  181. package/dist/core/list.js +173 -0
  182. package/dist/core/migration.d.ts +23 -0
  183. package/dist/core/migration.js +108 -0
  184. package/dist/core/parsers/change-parser.d.ts +13 -0
  185. package/dist/core/parsers/change-parser.js +193 -0
  186. package/dist/core/parsers/markdown-parser.d.ts +22 -0
  187. package/dist/core/parsers/markdown-parser.js +187 -0
  188. package/dist/core/parsers/requirement-blocks.d.ts +37 -0
  189. package/dist/core/parsers/requirement-blocks.js +201 -0
  190. package/dist/core/profile-sync-drift.d.ts +38 -0
  191. package/dist/core/profile-sync-drift.js +201 -0
  192. package/dist/core/profiles.d.ts +26 -0
  193. package/dist/core/profiles.js +41 -0
  194. package/dist/core/project-config.d.ts +64 -0
  195. package/dist/core/project-config.js +223 -0
  196. package/dist/core/schemas/base.schema.d.ts +13 -0
  197. package/dist/core/schemas/base.schema.js +13 -0
  198. package/dist/core/schemas/change.schema.d.ts +73 -0
  199. package/dist/core/schemas/change.schema.js +31 -0
  200. package/dist/core/schemas/index.d.ts +4 -0
  201. package/dist/core/schemas/index.js +4 -0
  202. package/dist/core/schemas/spec.schema.d.ts +18 -0
  203. package/dist/core/schemas/spec.schema.js +15 -0
  204. package/dist/core/sdd/adr-policy.d.ts +7 -0
  205. package/dist/core/sdd/adr-policy.js +47 -0
  206. package/dist/core/sdd/adr.d.ts +4 -0
  207. package/dist/core/sdd/adr.js +27 -0
  208. package/dist/core/sdd/bootstrap.d.ts +28 -0
  209. package/dist/core/sdd/bootstrap.js +353 -0
  210. package/dist/core/sdd/check.d.ts +51 -0
  211. package/dist/core/sdd/check.js +831 -0
  212. package/dist/core/sdd/coordination/coordination-adapters.d.ts +73 -0
  213. package/dist/core/sdd/coordination/coordination-adapters.js +87 -0
  214. package/dist/core/sdd/coordination/index.d.ts +2 -0
  215. package/dist/core/sdd/coordination/index.js +2 -0
  216. package/dist/core/sdd/dedup.d.ts +23 -0
  217. package/dist/core/sdd/dedup.js +62 -0
  218. package/dist/core/sdd/default-bootstrap-files.d.ts +23 -0
  219. package/dist/core/sdd/default-bootstrap-files.js +385 -0
  220. package/dist/core/sdd/default-skills.d.ts +16 -0
  221. package/dist/core/sdd/default-skills.js +427 -0
  222. package/dist/core/sdd/diagnose.d.ts +25 -0
  223. package/dist/core/sdd/diagnose.js +1312 -0
  224. package/dist/core/sdd/docs-sync.d.ts +21 -0
  225. package/dist/core/sdd/docs-sync.js +231 -0
  226. package/dist/core/sdd/domain/helpers.d.ts +6 -0
  227. package/dist/core/sdd/domain/helpers.js +37 -0
  228. package/dist/core/sdd/domain/lifecycle-guardrails.d.ts +22 -0
  229. package/dist/core/sdd/domain/lifecycle-guardrails.js +31 -0
  230. package/dist/core/sdd/domain/lifecycle-hooks.d.ts +16 -0
  231. package/dist/core/sdd/domain/lifecycle-hooks.js +27 -0
  232. package/dist/core/sdd/domain/post-active-validation.d.ts +15 -0
  233. package/dist/core/sdd/domain/post-active-validation.js +71 -0
  234. package/dist/core/sdd/domain/traceability.d.ts +8 -0
  235. package/dist/core/sdd/domain/traceability.js +83 -0
  236. package/dist/core/sdd/domain/transition-engine.d.ts +49 -0
  237. package/dist/core/sdd/domain/transition-engine.js +120 -0
  238. package/dist/core/sdd/fingerprint.d.ts +23 -0
  239. package/dist/core/sdd/fingerprint.js +146 -0
  240. package/dist/core/sdd/import-openspec.d.ts +31 -0
  241. package/dist/core/sdd/import-openspec.js +232 -0
  242. package/dist/core/sdd/init.d.ts +36 -0
  243. package/dist/core/sdd/init.js +65 -0
  244. package/dist/core/sdd/json-schema.d.ts +6 -0
  245. package/dist/core/sdd/json-schema.js +59 -0
  246. package/dist/core/sdd/legacy-operations.d.ts +286 -0
  247. package/dist/core/sdd/legacy-operations.js +2175 -0
  248. package/dist/core/sdd/lenses.d.ts +14 -0
  249. package/dist/core/sdd/lenses.js +97 -0
  250. package/dist/core/sdd/merge-catalog.d.ts +9 -0
  251. package/dist/core/sdd/merge-catalog.js +70 -0
  252. package/dist/core/sdd/migrate-workspace.d.ts +36 -0
  253. package/dist/core/sdd/migrate-workspace.js +344 -0
  254. package/dist/core/sdd/migrate.d.ts +24 -0
  255. package/dist/core/sdd/migrate.js +385 -0
  256. package/dist/core/sdd/resolve-project-root.d.ts +15 -0
  257. package/dist/core/sdd/resolve-project-root.js +46 -0
  258. package/dist/core/sdd/root-resolver.d.ts +16 -0
  259. package/dist/core/sdd/root-resolver.js +62 -0
  260. package/dist/core/sdd/sanitize.d.ts +35 -0
  261. package/dist/core/sdd/sanitize.js +750 -0
  262. package/dist/core/sdd/services/approve.service.d.ts +20 -0
  263. package/dist/core/sdd/services/approve.service.js +82 -0
  264. package/dist/core/sdd/services/audit.service.d.ts +53 -0
  265. package/dist/core/sdd/services/audit.service.js +136 -0
  266. package/dist/core/sdd/services/breakdown.service.d.ts +35 -0
  267. package/dist/core/sdd/services/breakdown.service.js +185 -0
  268. package/dist/core/sdd/services/context.service.d.ts +346 -0
  269. package/dist/core/sdd/services/context.service.js +278 -0
  270. package/dist/core/sdd/services/debate.service.d.ts +16 -0
  271. package/dist/core/sdd/services/debate.service.js +73 -0
  272. package/dist/core/sdd/services/decide.service.d.ts +23 -0
  273. package/dist/core/sdd/services/decide.service.js +81 -0
  274. package/dist/core/sdd/services/dedup-apply.service.d.ts +39 -0
  275. package/dist/core/sdd/services/dedup-apply.service.js +259 -0
  276. package/dist/core/sdd/services/feature-lint.service.d.ts +29 -0
  277. package/dist/core/sdd/services/feature-lint.service.js +146 -0
  278. package/dist/core/sdd/services/finalize.service.d.ts +33 -0
  279. package/dist/core/sdd/services/finalize.service.js +707 -0
  280. package/dist/core/sdd/services/frontend-gap.service.d.ts +23 -0
  281. package/dist/core/sdd/services/frontend-gap.service.js +117 -0
  282. package/dist/core/sdd/services/frontend-impact.service.d.ts +19 -0
  283. package/dist/core/sdd/services/frontend-impact.service.js +46 -0
  284. package/dist/core/sdd/services/ingest-deposito.service.d.ts +32 -0
  285. package/dist/core/sdd/services/ingest-deposito.service.js +231 -0
  286. package/dist/core/sdd/services/insight.service.d.ts +21 -0
  287. package/dist/core/sdd/services/insight.service.js +81 -0
  288. package/dist/core/sdd/services/legacy-capability.service.d.ts +24 -0
  289. package/dist/core/sdd/services/legacy-capability.service.js +59 -0
  290. package/dist/core/sdd/services/mcp-runtime.service.d.ts +42 -0
  291. package/dist/core/sdd/services/mcp-runtime.service.js +144 -0
  292. package/dist/core/sdd/services/metrics.service.d.ts +49 -0
  293. package/dist/core/sdd/services/metrics.service.js +181 -0
  294. package/dist/core/sdd/services/next.service.d.ts +35 -0
  295. package/dist/core/sdd/services/next.service.js +54 -0
  296. package/dist/core/sdd/services/onboard.service.d.ts +9 -0
  297. package/dist/core/sdd/services/onboard.service.js +165 -0
  298. package/dist/core/sdd/services/rebuild.service.d.ts +31 -0
  299. package/dist/core/sdd/services/rebuild.service.js +482 -0
  300. package/dist/core/sdd/services/scan-naming.service.d.ts +43 -0
  301. package/dist/core/sdd/services/scan-naming.service.js +246 -0
  302. package/dist/core/sdd/services/skills-invoke.service.d.ts +24 -0
  303. package/dist/core/sdd/services/skills-invoke.service.js +63 -0
  304. package/dist/core/sdd/services/skills-sync.service.d.ts +15 -0
  305. package/dist/core/sdd/services/skills-sync.service.js +117 -0
  306. package/dist/core/sdd/services/start.service.d.ts +26 -0
  307. package/dist/core/sdd/services/start.service.js +237 -0
  308. package/dist/core/sdd/skills.d.ts +15 -0
  309. package/dist/core/sdd/skills.js +46 -0
  310. package/dist/core/sdd/state-lock.d.ts +19 -0
  311. package/dist/core/sdd/state-lock.js +144 -0
  312. package/dist/core/sdd/state.d.ts +155 -0
  313. package/dist/core/sdd/state.js +1000 -0
  314. package/dist/core/sdd/store/in-memory-adapter.d.ts +12 -0
  315. package/dist/core/sdd/store/in-memory-adapter.js +27 -0
  316. package/dist/core/sdd/store/index.d.ts +5 -0
  317. package/dist/core/sdd/store/index.js +5 -0
  318. package/dist/core/sdd/store/sdd-stores.d.ts +25 -0
  319. package/dist/core/sdd/store/sdd-stores.js +59 -0
  320. package/dist/core/sdd/store/state-store.d.ts +32 -0
  321. package/dist/core/sdd/store/state-store.js +2 -0
  322. package/dist/core/sdd/store/yaml-file-adapter.d.ts +12 -0
  323. package/dist/core/sdd/store/yaml-file-adapter.js +43 -0
  324. package/dist/core/sdd/structural-health.d.ts +557 -0
  325. package/dist/core/sdd/structural-health.js +187 -0
  326. package/dist/core/sdd/transaction.d.ts +14 -0
  327. package/dist/core/sdd/transaction.js +100 -0
  328. package/dist/core/sdd/types.d.ts +1570 -0
  329. package/dist/core/sdd/types.js +617 -0
  330. package/dist/core/sdd/views.d.ts +3 -0
  331. package/dist/core/sdd/views.js +560 -0
  332. package/dist/core/sdd/workspace-schemas.d.ts +620 -0
  333. package/dist/core/sdd/workspace-schemas.js +254 -0
  334. package/dist/core/sdd/write-manifest.d.ts +25 -0
  335. package/dist/core/sdd/write-manifest.js +353 -0
  336. package/dist/core/shared/index.d.ts +8 -0
  337. package/dist/core/shared/index.js +8 -0
  338. package/dist/core/shared/skill-generation.d.ts +49 -0
  339. package/dist/core/shared/skill-generation.js +106 -0
  340. package/dist/core/shared/tool-detection.d.ts +71 -0
  341. package/dist/core/shared/tool-detection.js +158 -0
  342. package/dist/core/specs-apply.d.ts +73 -0
  343. package/dist/core/specs-apply.js +385 -0
  344. package/dist/core/styles/palette.d.ts +7 -0
  345. package/dist/core/styles/palette.js +8 -0
  346. package/dist/core/templates/index.d.ts +8 -0
  347. package/dist/core/templates/index.js +9 -0
  348. package/dist/core/templates/skill-templates.d.ts +20 -0
  349. package/dist/core/templates/skill-templates.js +19 -0
  350. package/dist/core/templates/types.d.ts +19 -0
  351. package/dist/core/templates/types.js +5 -0
  352. package/dist/core/templates/workflows/apply-change.d.ts +10 -0
  353. package/dist/core/templates/workflows/apply-change.js +308 -0
  354. package/dist/core/templates/workflows/archive-change.d.ts +10 -0
  355. package/dist/core/templates/workflows/archive-change.js +277 -0
  356. package/dist/core/templates/workflows/bulk-archive-change.d.ts +10 -0
  357. package/dist/core/templates/workflows/bulk-archive-change.js +502 -0
  358. package/dist/core/templates/workflows/continue-change.d.ts +10 -0
  359. package/dist/core/templates/workflows/continue-change.js +232 -0
  360. package/dist/core/templates/workflows/explore.d.ts +10 -0
  361. package/dist/core/templates/workflows/explore.js +475 -0
  362. package/dist/core/templates/workflows/feedback.d.ts +9 -0
  363. package/dist/core/templates/workflows/feedback.js +108 -0
  364. package/dist/core/templates/workflows/ff-change.d.ts +10 -0
  365. package/dist/core/templates/workflows/ff-change.js +206 -0
  366. package/dist/core/templates/workflows/new-change.d.ts +10 -0
  367. package/dist/core/templates/workflows/new-change.js +151 -0
  368. package/dist/core/templates/workflows/onboard.d.ts +10 -0
  369. package/dist/core/templates/workflows/onboard.js +573 -0
  370. package/dist/core/templates/workflows/propose.d.ts +10 -0
  371. package/dist/core/templates/workflows/propose.js +224 -0
  372. package/dist/core/templates/workflows/sdd.d.ts +10 -0
  373. package/dist/core/templates/workflows/sdd.js +107 -0
  374. package/dist/core/templates/workflows/sync-specs.d.ts +10 -0
  375. package/dist/core/templates/workflows/sync-specs.js +286 -0
  376. package/dist/core/templates/workflows/verify-change.d.ts +10 -0
  377. package/dist/core/templates/workflows/verify-change.js +346 -0
  378. package/dist/core/update.d.ts +77 -0
  379. package/dist/core/update.js +538 -0
  380. package/dist/core/validation/constants.d.ts +34 -0
  381. package/dist/core/validation/constants.js +40 -0
  382. package/dist/core/validation/types.d.ts +18 -0
  383. package/dist/core/validation/types.js +2 -0
  384. package/dist/core/validation/validator.d.ts +33 -0
  385. package/dist/core/validation/validator.js +409 -0
  386. package/dist/core/view.d.ts +8 -0
  387. package/dist/core/view.js +170 -0
  388. package/dist/index.d.ts +3 -0
  389. package/dist/index.js +3 -0
  390. package/dist/prompts/searchable-multi-select.d.ts +28 -0
  391. package/dist/prompts/searchable-multi-select.js +159 -0
  392. package/dist/telemetry/config.d.ts +32 -0
  393. package/dist/telemetry/config.js +68 -0
  394. package/dist/telemetry/index.d.ts +44 -0
  395. package/dist/telemetry/index.js +207 -0
  396. package/dist/ui/ascii-patterns.d.ts +16 -0
  397. package/dist/ui/ascii-patterns.js +133 -0
  398. package/dist/ui/welcome-screen.d.ts +10 -0
  399. package/dist/ui/welcome-screen.js +146 -0
  400. package/dist/utils/change-metadata.d.ts +51 -0
  401. package/dist/utils/change-metadata.js +147 -0
  402. package/dist/utils/change-utils.d.ts +62 -0
  403. package/dist/utils/change-utils.js +121 -0
  404. package/dist/utils/command-references.d.ts +18 -0
  405. package/dist/utils/command-references.js +20 -0
  406. package/dist/utils/file-system.d.ts +36 -0
  407. package/dist/utils/file-system.js +281 -0
  408. package/dist/utils/index.d.ts +6 -0
  409. package/dist/utils/index.js +9 -0
  410. package/dist/utils/interactive.d.ts +18 -0
  411. package/dist/utils/interactive.js +21 -0
  412. package/dist/utils/item-discovery.d.ts +4 -0
  413. package/dist/utils/item-discovery.js +73 -0
  414. package/dist/utils/match.d.ts +3 -0
  415. package/dist/utils/match.js +22 -0
  416. package/dist/utils/openspec-compat.d.ts +2 -0
  417. package/dist/utils/openspec-compat.js +2 -0
  418. package/dist/utils/shell-detection.d.ts +20 -0
  419. package/dist/utils/shell-detection.js +41 -0
  420. package/dist/utils/task-progress.d.ts +8 -0
  421. package/dist/utils/task-progress.js +36 -0
  422. package/package.json +111 -0
  423. package/schemas/sdd/1-spec.schema.json +221 -0
  424. package/schemas/sdd/2-plan.schema.json +199 -0
  425. package/schemas/sdd/3-tasks.schema.json +102 -0
  426. package/schemas/sdd/4-changelog.schema.json +55 -0
  427. package/schemas/sdd/5-quality.schema.json +427 -0
  428. package/schemas/sdd/workspace-catalog.schema.json +1012 -0
  429. package/schemas/spec-driven/schema.yaml +153 -0
  430. package/schemas/spec-driven/templates/design.md +19 -0
  431. package/schemas/spec-driven/templates/proposal.md +23 -0
  432. package/schemas/spec-driven/templates/spec.md +8 -0
  433. package/schemas/spec-driven/templates/tasks.md +9 -0
@@ -0,0 +1,452 @@
1
+ import { promises as fs } from 'fs';
2
+ import path from 'path';
3
+ import os from 'os';
4
+ import { FileSystemUtils } from '../../../utils/file-system.js';
5
+ /**
6
+ * Installer for Zsh completion scripts.
7
+ * Supports both Oh My Zsh and standard Zsh configurations.
8
+ */
9
+ export class ZshInstaller {
10
+ homeDir;
11
+ /**
12
+ * Markers for .zshrc configuration management
13
+ */
14
+ ZSHRC_MARKERS = {
15
+ start: '# OPENSPEC:START',
16
+ end: '# OPENSPEC:END',
17
+ };
18
+ constructor(homeDir = os.homedir()) {
19
+ this.homeDir = homeDir;
20
+ }
21
+ /**
22
+ * Check if Oh My Zsh is installed
23
+ *
24
+ * @returns true if Oh My Zsh is detected for the installer's home directory
25
+ */
26
+ async isOhMyZshInstalled() {
27
+ const expectedOhMyZshPath = path.join(this.homeDir, '.oh-my-zsh');
28
+ // Respect the installer homeDir when ambient shell env points elsewhere.
29
+ if (process.env.ZSH) {
30
+ const envOhMyZshPath = path.resolve(process.env.ZSH);
31
+ if (envOhMyZshPath === path.resolve(expectedOhMyZshPath)) {
32
+ return true;
33
+ }
34
+ }
35
+ // Fall back to checking for ~/.oh-my-zsh directory
36
+ try {
37
+ const stat = await fs.stat(expectedOhMyZshPath);
38
+ return stat.isDirectory();
39
+ }
40
+ catch {
41
+ return false;
42
+ }
43
+ }
44
+ /**
45
+ * Get the appropriate installation path for the completion script
46
+ *
47
+ * @returns Object with installation path and whether it's Oh My Zsh
48
+ */
49
+ async getInstallationPath() {
50
+ const isOhMyZsh = await this.isOhMyZshInstalled();
51
+ if (isOhMyZsh) {
52
+ // Oh My Zsh custom completions directory
53
+ return {
54
+ path: path.join(this.homeDir, '.oh-my-zsh', 'custom', 'completions', '_openspec'),
55
+ isOhMyZsh: true,
56
+ };
57
+ }
58
+ else {
59
+ // Standard Zsh completions directory
60
+ return {
61
+ path: path.join(this.homeDir, '.zsh', 'completions', '_openspec'),
62
+ isOhMyZsh: false,
63
+ };
64
+ }
65
+ }
66
+ /**
67
+ * Backup an existing completion file if it exists
68
+ *
69
+ * @param targetPath - Path to the file to backup
70
+ * @returns Path to the backup file, or undefined if no backup was needed
71
+ */
72
+ async backupExistingFile(targetPath) {
73
+ try {
74
+ await fs.access(targetPath);
75
+ // File exists, create a backup
76
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
77
+ const backupPath = `${targetPath}.backup-${timestamp}`;
78
+ await fs.copyFile(targetPath, backupPath);
79
+ return backupPath;
80
+ }
81
+ catch {
82
+ // File doesn't exist, no backup needed
83
+ return undefined;
84
+ }
85
+ }
86
+ /**
87
+ * Get the path to .zshrc file
88
+ *
89
+ * @returns Path to .zshrc
90
+ */
91
+ getZshrcPath() {
92
+ return path.join(this.homeDir, '.zshrc');
93
+ }
94
+ /**
95
+ * Generate .zshrc configuration content
96
+ *
97
+ * @param completionsDir - Directory containing completion scripts
98
+ * @returns Configuration content
99
+ */
100
+ generateZshrcConfig(completionsDir) {
101
+ return [
102
+ '# OpenSpec shell completions configuration',
103
+ `fpath=("${completionsDir}" $fpath)`,
104
+ 'autoload -Uz compinit',
105
+ 'compinit',
106
+ ].join('\n');
107
+ }
108
+ /**
109
+ * Configure .zshrc to enable completions
110
+ * Only applies to standard Zsh (not Oh My Zsh)
111
+ *
112
+ * @param completionsDir - Directory containing completion scripts
113
+ * @returns true if configured successfully, false otherwise
114
+ */
115
+ async configureZshrc(completionsDir) {
116
+ // Check if auto-configuration is disabled
117
+ if (process.env.OPENSPEC_NO_AUTO_CONFIG === '1') {
118
+ return false;
119
+ }
120
+ try {
121
+ const zshrcPath = this.getZshrcPath();
122
+ const config = this.generateZshrcConfig(completionsDir);
123
+ // Check write permissions
124
+ const canWrite = await FileSystemUtils.canWriteFile(zshrcPath);
125
+ if (!canWrite) {
126
+ return false;
127
+ }
128
+ // Use marker-based update
129
+ await FileSystemUtils.updateFileWithMarkers(zshrcPath, config, this.ZSHRC_MARKERS.start, this.ZSHRC_MARKERS.end);
130
+ return true;
131
+ }
132
+ catch (error) {
133
+ // Fail gracefully - don't break installation
134
+ console.debug(`Unable to configure .zshrc for completions: ${error.message}`);
135
+ return false;
136
+ }
137
+ }
138
+ /**
139
+ * Check if .zshrc has OpenSpec configuration markers
140
+ *
141
+ * @returns true if .zshrc exists and has markers
142
+ */
143
+ async hasZshrcConfig() {
144
+ try {
145
+ const zshrcPath = this.getZshrcPath();
146
+ const content = await fs.readFile(zshrcPath, 'utf-8');
147
+ return content.includes(this.ZSHRC_MARKERS.start) && content.includes(this.ZSHRC_MARKERS.end);
148
+ }
149
+ catch {
150
+ return false;
151
+ }
152
+ }
153
+ /**
154
+ * Check if fpath configuration is needed for a given directory
155
+ * Used to verify if Oh My Zsh (or other) completions directory is already in fpath
156
+ *
157
+ * @param completionsDir - Directory to check for in fpath
158
+ * @returns true if configuration is needed, false if directory is already referenced
159
+ */
160
+ async needsFpathConfig(completionsDir) {
161
+ try {
162
+ const zshrcPath = this.getZshrcPath();
163
+ const content = await fs.readFile(zshrcPath, 'utf-8');
164
+ // Check if fpath already includes this directory
165
+ return !content.includes(completionsDir);
166
+ }
167
+ catch (error) {
168
+ // If we can't read .zshrc, assume config is needed
169
+ console.debug(`Unable to read .zshrc to check fpath config: ${error instanceof Error ? error.message : String(error)}`);
170
+ return true;
171
+ }
172
+ }
173
+ /**
174
+ * Remove .zshrc configuration
175
+ * Used during uninstallation
176
+ *
177
+ * @returns true if removed successfully, false otherwise
178
+ */
179
+ async removeZshrcConfig() {
180
+ try {
181
+ const zshrcPath = this.getZshrcPath();
182
+ // Check if file exists
183
+ try {
184
+ await fs.access(zshrcPath);
185
+ }
186
+ catch {
187
+ // File doesn't exist, nothing to remove
188
+ return true;
189
+ }
190
+ // Read file content
191
+ const content = await fs.readFile(zshrcPath, 'utf-8');
192
+ // Check if markers exist
193
+ if (!content.includes(this.ZSHRC_MARKERS.start) || !content.includes(this.ZSHRC_MARKERS.end)) {
194
+ // Markers don't exist, nothing to remove
195
+ return true;
196
+ }
197
+ // Remove content between markers (including markers)
198
+ const lines = content.split('\n');
199
+ const startIndex = lines.findIndex((line) => line.trim() === this.ZSHRC_MARKERS.start);
200
+ const endIndex = lines.findIndex((line) => line.trim() === this.ZSHRC_MARKERS.end);
201
+ if (startIndex === -1 || endIndex === -1 || endIndex < startIndex) {
202
+ // Invalid marker placement
203
+ return false;
204
+ }
205
+ // Remove lines between markers (inclusive)
206
+ lines.splice(startIndex, endIndex - startIndex + 1);
207
+ // Remove trailing empty lines at the start if the markers were at the top
208
+ while (lines.length > 0 && lines[0].trim() === '') {
209
+ lines.shift();
210
+ }
211
+ // Write back
212
+ await fs.writeFile(zshrcPath, lines.join('\n'), 'utf-8');
213
+ return true;
214
+ }
215
+ catch (error) {
216
+ // Fail gracefully
217
+ console.debug(`Unable to remove .zshrc configuration: ${error.message}`);
218
+ return false;
219
+ }
220
+ }
221
+ /**
222
+ * Install the completion script
223
+ *
224
+ * @param completionScript - The completion script content to install
225
+ * @returns Installation result with status and instructions
226
+ */
227
+ async install(completionScript) {
228
+ try {
229
+ const { path: targetPath, isOhMyZsh } = await this.getInstallationPath();
230
+ // Check if already installed with same content
231
+ let isUpdate = false;
232
+ try {
233
+ const existingContent = await fs.readFile(targetPath, 'utf-8');
234
+ if (existingContent === completionScript) {
235
+ // Already installed and up to date
236
+ return {
237
+ success: true,
238
+ installedPath: targetPath,
239
+ isOhMyZsh,
240
+ message: 'Completion script is already installed (up to date)',
241
+ instructions: [
242
+ 'The completion script is already installed and up to date.',
243
+ 'If completions are not working, try: exec zsh',
244
+ ],
245
+ };
246
+ }
247
+ // File exists but content is different - this is an update
248
+ isUpdate = true;
249
+ }
250
+ catch (error) {
251
+ // File doesn't exist or can't be read, proceed with installation
252
+ console.debug(`Unable to read existing completion file at ${targetPath}: ${error.message}`);
253
+ }
254
+ // Ensure the directory exists
255
+ const targetDir = path.dirname(targetPath);
256
+ await fs.mkdir(targetDir, { recursive: true });
257
+ // Backup existing file if updating
258
+ const backupPath = isUpdate ? await this.backupExistingFile(targetPath) : undefined;
259
+ // Write the completion script
260
+ await fs.writeFile(targetPath, completionScript, 'utf-8');
261
+ // Auto-configure .zshrc
262
+ let zshrcConfigured = false;
263
+ if (isOhMyZsh) {
264
+ // For Oh My Zsh, verify that custom/completions is in fpath
265
+ // If not, add it to .zshrc
266
+ const needsConfig = await this.needsFpathConfig(targetDir);
267
+ if (needsConfig) {
268
+ zshrcConfigured = await this.configureZshrc(targetDir);
269
+ }
270
+ }
271
+ else {
272
+ // Standard Zsh always needs .zshrc configuration
273
+ zshrcConfigured = await this.configureZshrc(targetDir);
274
+ }
275
+ // Generate instructions (only if .zshrc wasn't auto-configured)
276
+ let instructions = zshrcConfigured ? undefined : this.generateInstructions(isOhMyZsh, targetPath);
277
+ // Add fpath guidance for Oh My Zsh installations
278
+ if (isOhMyZsh) {
279
+ const fpathGuidance = this.generateOhMyZshFpathGuidance(targetDir);
280
+ if (fpathGuidance) {
281
+ instructions = instructions ? [...instructions, '', ...fpathGuidance] : fpathGuidance;
282
+ }
283
+ }
284
+ // Determine appropriate message based on update status
285
+ let message;
286
+ if (isUpdate) {
287
+ message = backupPath
288
+ ? 'Completion script updated successfully (previous version backed up)'
289
+ : 'Completion script updated successfully';
290
+ }
291
+ else {
292
+ message = isOhMyZsh
293
+ ? 'Completion script installed successfully for Oh My Zsh'
294
+ : zshrcConfigured
295
+ ? 'Completion script installed and .zshrc configured successfully'
296
+ : 'Completion script installed successfully for Zsh';
297
+ }
298
+ return {
299
+ success: true,
300
+ installedPath: targetPath,
301
+ backupPath,
302
+ isOhMyZsh,
303
+ zshrcConfigured,
304
+ message,
305
+ instructions,
306
+ };
307
+ }
308
+ catch (error) {
309
+ return {
310
+ success: false,
311
+ isOhMyZsh: false,
312
+ message: `Failed to install completion script: ${error instanceof Error ? error.message : String(error)}`,
313
+ };
314
+ }
315
+ }
316
+ /**
317
+ * Generate Oh My Zsh fpath verification guidance
318
+ *
319
+ * @param completionsDir - Custom completions directory path
320
+ * @returns Array of guidance strings, or undefined if not needed
321
+ */
322
+ generateOhMyZshFpathGuidance(completionsDir) {
323
+ return [
324
+ 'Note: Oh My Zsh typically auto-loads completions from custom/completions.',
325
+ `Verify that ${completionsDir} is in your fpath by running:`,
326
+ ' echo $fpath | grep "custom/completions"',
327
+ '',
328
+ 'If not found, completions may not work. Restart your shell to ensure changes take effect.',
329
+ ];
330
+ }
331
+ /**
332
+ * Generate user instructions for enabling completions
333
+ *
334
+ * @param isOhMyZsh - Whether Oh My Zsh is being used
335
+ * @param installedPath - Path where the script was installed
336
+ * @returns Array of instruction strings
337
+ */
338
+ generateInstructions(isOhMyZsh, installedPath) {
339
+ if (isOhMyZsh) {
340
+ return [
341
+ 'Completion script installed to Oh My Zsh completions directory.',
342
+ 'Restart your shell or run: exec zsh',
343
+ 'Completions should activate automatically.',
344
+ ];
345
+ }
346
+ else {
347
+ const completionsDir = path.dirname(installedPath);
348
+ const zshrcPath = path.join(this.homeDir, '.zshrc');
349
+ return [
350
+ 'Completion script installed to ~/.zsh/completions/',
351
+ '',
352
+ 'To enable completions, add the following to your ~/.zshrc file:',
353
+ '',
354
+ ` # Add completions directory to fpath`,
355
+ ` fpath=(${completionsDir} $fpath)`,
356
+ '',
357
+ ' # Initialize completion system',
358
+ ' autoload -Uz compinit',
359
+ ' compinit',
360
+ '',
361
+ 'Then restart your shell or run: exec zsh',
362
+ '',
363
+ `Check if these lines already exist in ${zshrcPath} before adding.`,
364
+ ];
365
+ }
366
+ }
367
+ /**
368
+ * Uninstall the completion script
369
+ *
370
+ * @returns true if uninstalled successfully, false otherwise
371
+ */
372
+ async uninstall() {
373
+ try {
374
+ const { path: targetPath, isOhMyZsh } = await this.getInstallationPath();
375
+ // Try to remove completion script
376
+ let scriptRemoved = false;
377
+ try {
378
+ await fs.access(targetPath);
379
+ await fs.unlink(targetPath);
380
+ scriptRemoved = true;
381
+ }
382
+ catch {
383
+ // Script not installed
384
+ }
385
+ // Try to remove .zshrc configuration (only for standard Zsh)
386
+ let zshrcWasPresent = false;
387
+ let zshrcCleaned = false;
388
+ if (!isOhMyZsh) {
389
+ zshrcWasPresent = await this.hasZshrcConfig();
390
+ if (zshrcWasPresent) {
391
+ zshrcCleaned = await this.removeZshrcConfig();
392
+ }
393
+ }
394
+ if (!scriptRemoved && !zshrcWasPresent) {
395
+ return {
396
+ success: false,
397
+ message: 'Completion script is not installed',
398
+ };
399
+ }
400
+ const messages = [];
401
+ if (scriptRemoved) {
402
+ messages.push(`Completion script removed from ${targetPath}`);
403
+ }
404
+ if (zshrcCleaned && !isOhMyZsh) {
405
+ messages.push('Removed OpenSpec configuration from ~/.zshrc');
406
+ }
407
+ return {
408
+ success: true,
409
+ message: messages.join('. '),
410
+ };
411
+ }
412
+ catch (error) {
413
+ return {
414
+ success: false,
415
+ message: `Failed to uninstall completion script: ${error instanceof Error ? error.message : String(error)}`,
416
+ };
417
+ }
418
+ }
419
+ /**
420
+ * Check if completion script is currently installed
421
+ *
422
+ * @returns true if the completion script exists
423
+ */
424
+ async isInstalled() {
425
+ try {
426
+ const { path: targetPath } = await this.getInstallationPath();
427
+ await fs.access(targetPath);
428
+ return true;
429
+ }
430
+ catch {
431
+ return false;
432
+ }
433
+ }
434
+ /**
435
+ * Get information about the current installation
436
+ *
437
+ * @returns Installation status information
438
+ */
439
+ async getInstallationInfo() {
440
+ const installed = await this.isInstalled();
441
+ if (!installed) {
442
+ return { installed: false };
443
+ }
444
+ const { path: targetPath, isOhMyZsh } = await this.getInstallationPath();
445
+ return {
446
+ installed: true,
447
+ path: targetPath,
448
+ isOhMyZsh,
449
+ };
450
+ }
451
+ }
452
+ //# sourceMappingURL=zsh-installer.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Static template strings for Bash completion scripts.
3
+ * These are Bash-specific helper functions that never change.
4
+ */
5
+ export declare const BASH_DYNAMIC_HELPERS = "# Dynamic completion helpers\n\n_openspec_complete_changes() {\n local changes\n changes=$(opensdd __complete changes 2>/dev/null | cut -f1)\n COMPREPLY=($(compgen -W \"$changes\" -- \"$cur\"))\n}\n\n_openspec_complete_specs() {\n local specs\n specs=$(opensdd __complete specs 2>/dev/null | cut -f1)\n COMPREPLY=($(compgen -W \"$specs\" -- \"$cur\"))\n}\n\n_openspec_complete_items() {\n local items\n items=$(opensdd __complete changes 2>/dev/null | cut -f1; opensdd __complete specs 2>/dev/null | cut -f1)\n COMPREPLY=($(compgen -W \"$items\" -- \"$cur\"))\n}";
6
+ //# sourceMappingURL=bash-templates.d.ts.map
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Static template strings for Bash completion scripts.
3
+ * These are Bash-specific helper functions that never change.
4
+ */
5
+ export const BASH_DYNAMIC_HELPERS = `# Dynamic completion helpers
6
+
7
+ _openspec_complete_changes() {
8
+ local changes
9
+ changes=$(opensdd __complete changes 2>/dev/null | cut -f1)
10
+ COMPREPLY=($(compgen -W "$changes" -- "$cur"))
11
+ }
12
+
13
+ _openspec_complete_specs() {
14
+ local specs
15
+ specs=$(opensdd __complete specs 2>/dev/null | cut -f1)
16
+ COMPREPLY=($(compgen -W "$specs" -- "$cur"))
17
+ }
18
+
19
+ _openspec_complete_items() {
20
+ local items
21
+ items=$(opensdd __complete changes 2>/dev/null | cut -f1; opensdd __complete specs 2>/dev/null | cut -f1)
22
+ COMPREPLY=($(compgen -W "$items" -- "$cur"))
23
+ }`;
24
+ //# sourceMappingURL=bash-templates.js.map
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Static template strings for Fish completion scripts.
3
+ * These are Fish-specific helper functions that never change.
4
+ */
5
+ export declare const FISH_STATIC_HELPERS = "# Helper function to check if a subcommand is present\nfunction __fish_openspec_using_subcommand\n set -l cmd (commandline -opc)\n set -e cmd[1]\n for i in $argv\n if contains -- $i $cmd\n return 0\n end\n end\n return 1\nend\n\nfunction __fish_openspec_no_subcommand\n set -l cmd (commandline -opc)\n test (count $cmd) -eq 1\nend";
6
+ export declare const FISH_DYNAMIC_HELPERS = "# Dynamic completion helpers\n\nfunction __fish_openspec_changes\n opensdd __complete changes 2>/dev/null | while read -l id desc\n printf '%s\\t%s\\n' \"$id\" \"$desc\"\n end\nend\n\nfunction __fish_openspec_specs\n opensdd __complete specs 2>/dev/null | while read -l id desc\n printf '%s\\t%s\\n' \"$id\" \"$desc\"\n end\nend\n\nfunction __fish_openspec_items\n __fish_openspec_changes\n __fish_openspec_specs\nend";
7
+ //# sourceMappingURL=fish-templates.d.ts.map
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Static template strings for Fish completion scripts.
3
+ * These are Fish-specific helper functions that never change.
4
+ */
5
+ export const FISH_STATIC_HELPERS = `# Helper function to check if a subcommand is present
6
+ function __fish_openspec_using_subcommand
7
+ set -l cmd (commandline -opc)
8
+ set -e cmd[1]
9
+ for i in $argv
10
+ if contains -- $i $cmd
11
+ return 0
12
+ end
13
+ end
14
+ return 1
15
+ end
16
+
17
+ function __fish_openspec_no_subcommand
18
+ set -l cmd (commandline -opc)
19
+ test (count $cmd) -eq 1
20
+ end`;
21
+ export const FISH_DYNAMIC_HELPERS = `# Dynamic completion helpers
22
+
23
+ function __fish_openspec_changes
24
+ opensdd __complete changes 2>/dev/null | while read -l id desc
25
+ printf '%s\\t%s\\n' "$id" "$desc"
26
+ end
27
+ end
28
+
29
+ function __fish_openspec_specs
30
+ opensdd __complete specs 2>/dev/null | while read -l id desc
31
+ printf '%s\\t%s\\n' "$id" "$desc"
32
+ end
33
+ end
34
+
35
+ function __fish_openspec_items
36
+ __fish_openspec_changes
37
+ __fish_openspec_specs
38
+ end`;
39
+ //# sourceMappingURL=fish-templates.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Static template strings for PowerShell completion scripts.
3
+ * These are PowerShell-specific helper functions that never change.
4
+ */
5
+ export declare const POWERSHELL_DYNAMIC_HELPERS = "# Dynamic completion helpers\n\nfunction Get-OpenSpecChanges {\n $output = opensdd __complete changes 2>$null\n if ($output) {\n $output | ForEach-Object {\n ($_ -split \"\\t\")[0]\n }\n }\n}\n\nfunction Get-OpenSpecSpecs {\n $output = opensdd __complete specs 2>$null\n if ($output) {\n $output | ForEach-Object {\n ($_ -split \"\\t\")[0]\n }\n }\n}\n";
6
+ //# sourceMappingURL=powershell-templates.d.ts.map
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Static template strings for PowerShell completion scripts.
3
+ * These are PowerShell-specific helper functions that never change.
4
+ */
5
+ export const POWERSHELL_DYNAMIC_HELPERS = `# Dynamic completion helpers
6
+
7
+ function Get-OpenSpecChanges {
8
+ $output = opensdd __complete changes 2>$null
9
+ if ($output) {
10
+ $output | ForEach-Object {
11
+ ($_ -split "\\t")[0]
12
+ }
13
+ }
14
+ }
15
+
16
+ function Get-OpenSpecSpecs {
17
+ $output = opensdd __complete specs 2>$null
18
+ if ($output) {
19
+ $output | ForEach-Object {
20
+ ($_ -split "\\t")[0]
21
+ }
22
+ }
23
+ }
24
+ `;
25
+ //# sourceMappingURL=powershell-templates.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Static template strings for Zsh completion scripts.
3
+ * These are Zsh-specific helper functions that never change.
4
+ */
5
+ export declare const ZSH_DYNAMIC_HELPERS = "# Dynamic completion helpers\n\n# Use opensdd __complete to get available changes\n_openspec_complete_changes() {\n local -a changes\n while IFS=$'\\t' read -r id desc; do\n changes+=(\"$id:$desc\")\n done < <(opensdd __complete changes 2>/dev/null)\n _describe \"change\" changes\n}\n\n# Use opensdd __complete to get available specs\n_openspec_complete_specs() {\n local -a specs\n while IFS=$'\\t' read -r id desc; do\n specs+=(\"$id:$desc\")\n done < <(opensdd __complete specs 2>/dev/null)\n _describe \"spec\" specs\n}\n\n# Get both changes and specs\n_openspec_complete_items() {\n local -a items\n while IFS=$'\\t' read -r id desc; do\n items+=(\"$id:$desc\")\n done < <(opensdd __complete changes 2>/dev/null)\n while IFS=$'\\t' read -r id desc; do\n items+=(\"$id:$desc\")\n done < <(opensdd __complete specs 2>/dev/null)\n _describe \"item\" items\n}";
6
+ //# sourceMappingURL=zsh-templates.d.ts.map
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Static template strings for Zsh completion scripts.
3
+ * These are Zsh-specific helper functions that never change.
4
+ */
5
+ export const ZSH_DYNAMIC_HELPERS = `# Dynamic completion helpers
6
+
7
+ # Use opensdd __complete to get available changes
8
+ _openspec_complete_changes() {
9
+ local -a changes
10
+ while IFS=$'\\t' read -r id desc; do
11
+ changes+=("$id:$desc")
12
+ done < <(opensdd __complete changes 2>/dev/null)
13
+ _describe "change" changes
14
+ }
15
+
16
+ # Use opensdd __complete to get available specs
17
+ _openspec_complete_specs() {
18
+ local -a specs
19
+ while IFS=$'\\t' read -r id desc; do
20
+ specs+=("$id:$desc")
21
+ done < <(opensdd __complete specs 2>/dev/null)
22
+ _describe "spec" specs
23
+ }
24
+
25
+ # Get both changes and specs
26
+ _openspec_complete_items() {
27
+ local -a items
28
+ while IFS=$'\\t' read -r id desc; do
29
+ items+=("$id:$desc")
30
+ done < <(opensdd __complete changes 2>/dev/null)
31
+ while IFS=$'\\t' read -r id desc; do
32
+ items+=("$id:$desc")
33
+ done < <(opensdd __complete specs 2>/dev/null)
34
+ _describe "item" items
35
+ }`;
36
+ //# sourceMappingURL=zsh-templates.js.map