spec-kitty-cli 0.12.1__py3-none-any.whl

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 (242) hide show
  1. spec_kitty_cli-0.12.1.dist-info/METADATA +1767 -0
  2. spec_kitty_cli-0.12.1.dist-info/RECORD +242 -0
  3. spec_kitty_cli-0.12.1.dist-info/WHEEL +4 -0
  4. spec_kitty_cli-0.12.1.dist-info/entry_points.txt +2 -0
  5. spec_kitty_cli-0.12.1.dist-info/licenses/LICENSE +21 -0
  6. specify_cli/__init__.py +171 -0
  7. specify_cli/acceptance.py +627 -0
  8. specify_cli/agent_utils/README.md +157 -0
  9. specify_cli/agent_utils/__init__.py +9 -0
  10. specify_cli/agent_utils/status.py +356 -0
  11. specify_cli/cli/__init__.py +6 -0
  12. specify_cli/cli/commands/__init__.py +46 -0
  13. specify_cli/cli/commands/accept.py +189 -0
  14. specify_cli/cli/commands/agent/__init__.py +22 -0
  15. specify_cli/cli/commands/agent/config.py +382 -0
  16. specify_cli/cli/commands/agent/context.py +191 -0
  17. specify_cli/cli/commands/agent/feature.py +1057 -0
  18. specify_cli/cli/commands/agent/release.py +11 -0
  19. specify_cli/cli/commands/agent/tasks.py +1253 -0
  20. specify_cli/cli/commands/agent/workflow.py +801 -0
  21. specify_cli/cli/commands/context.py +246 -0
  22. specify_cli/cli/commands/dashboard.py +85 -0
  23. specify_cli/cli/commands/implement.py +973 -0
  24. specify_cli/cli/commands/init.py +827 -0
  25. specify_cli/cli/commands/init_help.py +62 -0
  26. specify_cli/cli/commands/merge.py +755 -0
  27. specify_cli/cli/commands/mission.py +240 -0
  28. specify_cli/cli/commands/ops.py +265 -0
  29. specify_cli/cli/commands/orchestrate.py +640 -0
  30. specify_cli/cli/commands/repair.py +175 -0
  31. specify_cli/cli/commands/research.py +165 -0
  32. specify_cli/cli/commands/sync.py +364 -0
  33. specify_cli/cli/commands/upgrade.py +249 -0
  34. specify_cli/cli/commands/validate_encoding.py +186 -0
  35. specify_cli/cli/commands/validate_tasks.py +186 -0
  36. specify_cli/cli/commands/verify.py +310 -0
  37. specify_cli/cli/helpers.py +123 -0
  38. specify_cli/cli/step_tracker.py +91 -0
  39. specify_cli/cli/ui.py +192 -0
  40. specify_cli/core/__init__.py +53 -0
  41. specify_cli/core/agent_context.py +311 -0
  42. specify_cli/core/config.py +96 -0
  43. specify_cli/core/context_validation.py +362 -0
  44. specify_cli/core/dependency_graph.py +351 -0
  45. specify_cli/core/git_ops.py +129 -0
  46. specify_cli/core/multi_parent_merge.py +323 -0
  47. specify_cli/core/paths.py +260 -0
  48. specify_cli/core/project_resolver.py +110 -0
  49. specify_cli/core/stale_detection.py +263 -0
  50. specify_cli/core/tool_checker.py +79 -0
  51. specify_cli/core/utils.py +43 -0
  52. specify_cli/core/vcs/__init__.py +114 -0
  53. specify_cli/core/vcs/detection.py +341 -0
  54. specify_cli/core/vcs/exceptions.py +85 -0
  55. specify_cli/core/vcs/git.py +1304 -0
  56. specify_cli/core/vcs/jujutsu.py +1208 -0
  57. specify_cli/core/vcs/protocol.py +285 -0
  58. specify_cli/core/vcs/types.py +249 -0
  59. specify_cli/core/version_checker.py +261 -0
  60. specify_cli/core/worktree.py +506 -0
  61. specify_cli/dashboard/__init__.py +28 -0
  62. specify_cli/dashboard/diagnostics.py +204 -0
  63. specify_cli/dashboard/handlers/__init__.py +17 -0
  64. specify_cli/dashboard/handlers/api.py +143 -0
  65. specify_cli/dashboard/handlers/base.py +65 -0
  66. specify_cli/dashboard/handlers/features.py +390 -0
  67. specify_cli/dashboard/handlers/router.py +81 -0
  68. specify_cli/dashboard/handlers/static.py +50 -0
  69. specify_cli/dashboard/lifecycle.py +541 -0
  70. specify_cli/dashboard/scanner.py +437 -0
  71. specify_cli/dashboard/server.py +123 -0
  72. specify_cli/dashboard/static/dashboard/dashboard.css +722 -0
  73. specify_cli/dashboard/static/dashboard/dashboard.js +1424 -0
  74. specify_cli/dashboard/static/spec-kitty.png +0 -0
  75. specify_cli/dashboard/templates/__init__.py +36 -0
  76. specify_cli/dashboard/templates/index.html +258 -0
  77. specify_cli/doc_generators.py +621 -0
  78. specify_cli/doc_state.py +408 -0
  79. specify_cli/frontmatter.py +384 -0
  80. specify_cli/gap_analysis.py +915 -0
  81. specify_cli/gitignore_manager.py +300 -0
  82. specify_cli/guards.py +145 -0
  83. specify_cli/legacy_detector.py +83 -0
  84. specify_cli/manifest.py +286 -0
  85. specify_cli/merge/__init__.py +63 -0
  86. specify_cli/merge/executor.py +653 -0
  87. specify_cli/merge/forecast.py +215 -0
  88. specify_cli/merge/ordering.py +126 -0
  89. specify_cli/merge/preflight.py +230 -0
  90. specify_cli/merge/state.py +185 -0
  91. specify_cli/merge/status_resolver.py +354 -0
  92. specify_cli/mission.py +654 -0
  93. specify_cli/missions/documentation/command-templates/implement.md +309 -0
  94. specify_cli/missions/documentation/command-templates/plan.md +275 -0
  95. specify_cli/missions/documentation/command-templates/review.md +344 -0
  96. specify_cli/missions/documentation/command-templates/specify.md +206 -0
  97. specify_cli/missions/documentation/command-templates/tasks.md +189 -0
  98. specify_cli/missions/documentation/mission.yaml +113 -0
  99. specify_cli/missions/documentation/templates/divio/explanation-template.md +192 -0
  100. specify_cli/missions/documentation/templates/divio/howto-template.md +168 -0
  101. specify_cli/missions/documentation/templates/divio/reference-template.md +179 -0
  102. specify_cli/missions/documentation/templates/divio/tutorial-template.md +146 -0
  103. specify_cli/missions/documentation/templates/generators/jsdoc.json.template +18 -0
  104. specify_cli/missions/documentation/templates/generators/sphinx-conf.py.template +36 -0
  105. specify_cli/missions/documentation/templates/plan-template.md +269 -0
  106. specify_cli/missions/documentation/templates/release-template.md +222 -0
  107. specify_cli/missions/documentation/templates/spec-template.md +172 -0
  108. specify_cli/missions/documentation/templates/task-prompt-template.md +140 -0
  109. specify_cli/missions/documentation/templates/tasks-template.md +159 -0
  110. specify_cli/missions/research/command-templates/merge.md +388 -0
  111. specify_cli/missions/research/command-templates/plan.md +125 -0
  112. specify_cli/missions/research/command-templates/review.md +144 -0
  113. specify_cli/missions/research/command-templates/tasks.md +225 -0
  114. specify_cli/missions/research/mission.yaml +115 -0
  115. specify_cli/missions/research/templates/data-model-template.md +33 -0
  116. specify_cli/missions/research/templates/plan-template.md +161 -0
  117. specify_cli/missions/research/templates/research/evidence-log.csv +18 -0
  118. specify_cli/missions/research/templates/research/source-register.csv +18 -0
  119. specify_cli/missions/research/templates/research-template.md +35 -0
  120. specify_cli/missions/research/templates/spec-template.md +64 -0
  121. specify_cli/missions/research/templates/task-prompt-template.md +148 -0
  122. specify_cli/missions/research/templates/tasks-template.md +114 -0
  123. specify_cli/missions/software-dev/command-templates/accept.md +75 -0
  124. specify_cli/missions/software-dev/command-templates/analyze.md +183 -0
  125. specify_cli/missions/software-dev/command-templates/checklist.md +286 -0
  126. specify_cli/missions/software-dev/command-templates/clarify.md +157 -0
  127. specify_cli/missions/software-dev/command-templates/constitution.md +432 -0
  128. specify_cli/missions/software-dev/command-templates/dashboard.md +101 -0
  129. specify_cli/missions/software-dev/command-templates/implement.md +41 -0
  130. specify_cli/missions/software-dev/command-templates/merge.md +383 -0
  131. specify_cli/missions/software-dev/command-templates/plan.md +171 -0
  132. specify_cli/missions/software-dev/command-templates/review.md +32 -0
  133. specify_cli/missions/software-dev/command-templates/specify.md +321 -0
  134. specify_cli/missions/software-dev/command-templates/tasks.md +566 -0
  135. specify_cli/missions/software-dev/mission.yaml +100 -0
  136. specify_cli/missions/software-dev/templates/plan-template.md +132 -0
  137. specify_cli/missions/software-dev/templates/spec-template.md +116 -0
  138. specify_cli/missions/software-dev/templates/task-prompt-template.md +140 -0
  139. specify_cli/missions/software-dev/templates/tasks-template.md +159 -0
  140. specify_cli/orchestrator/__init__.py +75 -0
  141. specify_cli/orchestrator/agent_config.py +224 -0
  142. specify_cli/orchestrator/agents/__init__.py +170 -0
  143. specify_cli/orchestrator/agents/augment.py +112 -0
  144. specify_cli/orchestrator/agents/base.py +243 -0
  145. specify_cli/orchestrator/agents/claude.py +112 -0
  146. specify_cli/orchestrator/agents/codex.py +106 -0
  147. specify_cli/orchestrator/agents/copilot.py +137 -0
  148. specify_cli/orchestrator/agents/cursor.py +139 -0
  149. specify_cli/orchestrator/agents/gemini.py +115 -0
  150. specify_cli/orchestrator/agents/kilocode.py +94 -0
  151. specify_cli/orchestrator/agents/opencode.py +132 -0
  152. specify_cli/orchestrator/agents/qwen.py +96 -0
  153. specify_cli/orchestrator/config.py +455 -0
  154. specify_cli/orchestrator/executor.py +642 -0
  155. specify_cli/orchestrator/integration.py +1230 -0
  156. specify_cli/orchestrator/monitor.py +898 -0
  157. specify_cli/orchestrator/scheduler.py +832 -0
  158. specify_cli/orchestrator/state.py +508 -0
  159. specify_cli/orchestrator/testing/__init__.py +122 -0
  160. specify_cli/orchestrator/testing/availability.py +346 -0
  161. specify_cli/orchestrator/testing/fixtures.py +684 -0
  162. specify_cli/orchestrator/testing/paths.py +218 -0
  163. specify_cli/plan_validation.py +107 -0
  164. specify_cli/scripts/debug-dashboard-scan.py +61 -0
  165. specify_cli/scripts/tasks/acceptance_support.py +695 -0
  166. specify_cli/scripts/tasks/task_helpers.py +506 -0
  167. specify_cli/scripts/tasks/tasks_cli.py +848 -0
  168. specify_cli/scripts/validate_encoding.py +180 -0
  169. specify_cli/task_metadata_validation.py +274 -0
  170. specify_cli/tasks_support.py +447 -0
  171. specify_cli/template/__init__.py +47 -0
  172. specify_cli/template/asset_generator.py +206 -0
  173. specify_cli/template/github_client.py +334 -0
  174. specify_cli/template/manager.py +193 -0
  175. specify_cli/template/renderer.py +99 -0
  176. specify_cli/templates/AGENTS.md +190 -0
  177. specify_cli/templates/POWERSHELL_SYNTAX.md +229 -0
  178. specify_cli/templates/agent-file-template.md +35 -0
  179. specify_cli/templates/checklist-template.md +42 -0
  180. specify_cli/templates/claudeignore-template +58 -0
  181. specify_cli/templates/command-templates/accept.md +141 -0
  182. specify_cli/templates/command-templates/analyze.md +253 -0
  183. specify_cli/templates/command-templates/checklist.md +352 -0
  184. specify_cli/templates/command-templates/clarify.md +224 -0
  185. specify_cli/templates/command-templates/constitution.md +432 -0
  186. specify_cli/templates/command-templates/dashboard.md +175 -0
  187. specify_cli/templates/command-templates/implement.md +190 -0
  188. specify_cli/templates/command-templates/merge.md +374 -0
  189. specify_cli/templates/command-templates/plan.md +171 -0
  190. specify_cli/templates/command-templates/research.md +88 -0
  191. specify_cli/templates/command-templates/review.md +510 -0
  192. specify_cli/templates/command-templates/specify.md +321 -0
  193. specify_cli/templates/command-templates/status.md +92 -0
  194. specify_cli/templates/command-templates/tasks.md +199 -0
  195. specify_cli/templates/git-hooks/pre-commit +22 -0
  196. specify_cli/templates/git-hooks/pre-commit-agent-check +37 -0
  197. specify_cli/templates/git-hooks/pre-commit-encoding-check +142 -0
  198. specify_cli/templates/plan-template.md +108 -0
  199. specify_cli/templates/spec-template.md +118 -0
  200. specify_cli/templates/task-prompt-template.md +165 -0
  201. specify_cli/templates/tasks-template.md +161 -0
  202. specify_cli/templates/vscode-settings.json +13 -0
  203. specify_cli/text_sanitization.py +225 -0
  204. specify_cli/upgrade/__init__.py +18 -0
  205. specify_cli/upgrade/detector.py +239 -0
  206. specify_cli/upgrade/metadata.py +182 -0
  207. specify_cli/upgrade/migrations/__init__.py +65 -0
  208. specify_cli/upgrade/migrations/base.py +80 -0
  209. specify_cli/upgrade/migrations/m_0_10_0_python_only.py +359 -0
  210. specify_cli/upgrade/migrations/m_0_10_12_constitution_cleanup.py +99 -0
  211. specify_cli/upgrade/migrations/m_0_10_14_update_implement_slash_command.py +176 -0
  212. specify_cli/upgrade/migrations/m_0_10_1_populate_slash_commands.py +174 -0
  213. specify_cli/upgrade/migrations/m_0_10_2_update_slash_commands.py +172 -0
  214. specify_cli/upgrade/migrations/m_0_10_6_workflow_simplification.py +174 -0
  215. specify_cli/upgrade/migrations/m_0_10_8_fix_memory_structure.py +252 -0
  216. specify_cli/upgrade/migrations/m_0_10_9_repair_templates.py +168 -0
  217. specify_cli/upgrade/migrations/m_0_11_0_workspace_per_wp.py +182 -0
  218. specify_cli/upgrade/migrations/m_0_11_1_improved_workflow_templates.py +173 -0
  219. specify_cli/upgrade/migrations/m_0_11_1_update_implement_slash_command.py +160 -0
  220. specify_cli/upgrade/migrations/m_0_11_2_improved_workflow_templates.py +173 -0
  221. specify_cli/upgrade/migrations/m_0_11_3_workflow_agent_flag.py +114 -0
  222. specify_cli/upgrade/migrations/m_0_12_0_documentation_mission.py +155 -0
  223. specify_cli/upgrade/migrations/m_0_12_1_remove_kitty_specs_from_gitignore.py +183 -0
  224. specify_cli/upgrade/migrations/m_0_2_0_specify_to_kittify.py +80 -0
  225. specify_cli/upgrade/migrations/m_0_4_8_gitignore_agents.py +118 -0
  226. specify_cli/upgrade/migrations/m_0_5_0_encoding_hooks.py +141 -0
  227. specify_cli/upgrade/migrations/m_0_6_5_commands_rename.py +169 -0
  228. specify_cli/upgrade/migrations/m_0_6_7_ensure_missions.py +228 -0
  229. specify_cli/upgrade/migrations/m_0_7_2_worktree_commands_dedup.py +89 -0
  230. specify_cli/upgrade/migrations/m_0_7_3_update_scripts.py +114 -0
  231. specify_cli/upgrade/migrations/m_0_8_0_remove_active_mission.py +82 -0
  232. specify_cli/upgrade/migrations/m_0_8_0_worktree_agents_symlink.py +148 -0
  233. specify_cli/upgrade/migrations/m_0_9_0_frontmatter_only_lanes.py +346 -0
  234. specify_cli/upgrade/migrations/m_0_9_1_complete_lane_migration.py +656 -0
  235. specify_cli/upgrade/migrations/m_0_9_2_research_mission_templates.py +221 -0
  236. specify_cli/upgrade/registry.py +121 -0
  237. specify_cli/upgrade/runner.py +284 -0
  238. specify_cli/validators/__init__.py +14 -0
  239. specify_cli/validators/paths.py +154 -0
  240. specify_cli/validators/research.py +428 -0
  241. specify_cli/verify_enhanced.py +270 -0
  242. specify_cli/workspace_context.py +224 -0
@@ -0,0 +1,242 @@
1
+ specify_cli/__init__.py,sha256=NiuIRNJ5HbgXo-_iGcNO1CjiSHPR_ZQmtKWYlby6UCk,5450
2
+ specify_cli/acceptance.py,sha256=tsiJwgy53jY-kee-2QzVj1QSaFzk1vFY83c46XJp6PY,21230
3
+ specify_cli/doc_generators.py,sha256=TeTgUDIKux1wQNSSUhs4_-gvh8vsYZwY7d_BFkXAAdM,19549
4
+ specify_cli/doc_state.py,sha256=yD-ogViIiv9xbqLLU-GbivjXwEKYJ7eh8sPB4wthO_I,12918
5
+ specify_cli/frontmatter.py,sha256=763gsn4VqNHLed1-oL0ZZVOEWFr9B-h7qEp-Mhs9O4c,12136
6
+ specify_cli/gap_analysis.py,sha256=ho9OHX01dctViyj5rfyRYTEzhkijGv8eLsc5ImIa4Pk,28340
7
+ specify_cli/gitignore_manager.py,sha256=vOP7BkmGpZ7oZua3m4ABbsFQGajFP_6AVFwoXW3q5SQ,10569
8
+ specify_cli/guards.py,sha256=hOUcmaHDjHesnFLrN4pqjTUxEbHYuVKn6by3cpgIZ2k,4586
9
+ specify_cli/legacy_detector.py,sha256=bGUn_enxYUhnGDh-gDdkfVyz9V8sDmijojyhZwCNhL8,2435
10
+ specify_cli/manifest.py,sha256=v55EtGz50Whbbl9t6GptUj2tCPzY_p5j0nj-WuX33E8,10909
11
+ specify_cli/mission.py,sha256=BfRYol2Fvf6ghH_KTZO-fsB5kmnkYviG39OydYwS-nk,22581
12
+ specify_cli/plan_validation.py,sha256=NkyReWP_PPBPeiznPxk6N-3o49rBW0cZJHkoS1XG8xw,3210
13
+ specify_cli/task_metadata_validation.py,sha256=S2dnrPVSAI_gSqRMz-KwqEC2A4hxTT21JfYlFwdru6g,9133
14
+ specify_cli/tasks_support.py,sha256=WDAwmRuQz3YqxYPj1bADt981-24erqzMMC9qsqpMYHQ,14675
15
+ specify_cli/text_sanitization.py,sha256=UobRytRrzBy_Ym1WHSv4xo9OeVRb4JWowmDR1-SNURs,7520
16
+ specify_cli/verify_enhanced.py,sha256=ss-p4TEn9279oPfRAdCDmjm82ACVHPwgN504eivYcGQ,10284
17
+ specify_cli/workspace_context.py,sha256=jPWgNJFpx8qdlCvMRKhZO3wiMHw375GYHD6GMlbJ1_A,6234
18
+ specify_cli/agent_utils/README.md,sha256=h6bHhvmVQMa09S4kytpB1Rm0ReMA70nta-3PLcEp028,6141
19
+ specify_cli/agent_utils/__init__.py,sha256=HpRQk4l-687q-LNzeTVam_7hSNPVhL-CuPeayANFANA,255
20
+ specify_cli/agent_utils/status.py,sha256=ShNsgTbWXNRpxYusme_WH35mZuetihH4iHvXyADFa1o,14151
21
+ specify_cli/cli/__init__.py,sha256=Ed0nQGc4jroIa-L-q-1MJogsJE81if3mWtMcbqkbNzs,242
22
+ specify_cli/cli/helpers.py,sha256=nDvqS7nmCEcSKqH8wfje8ANkcXr7WO84eR_UnlrfNEU,4539
23
+ specify_cli/cli/step_tracker.py,sha256=hOAsuKDl53eHVQ20n2f9fYnNAvmnMVpDbENtpfbCi1k,3142
24
+ specify_cli/cli/ui.py,sha256=fTzOiJYnVoRpiZaF3juJBvWAvWUFHgh4YxoxVHFSOLA,6366
25
+ specify_cli/cli/commands/__init__.py,sha256=vy8AX7KVN9nHh-nVDr6fOhby_5Yoil9PBWC7_H-9_hs,1859
26
+ specify_cli/cli/commands/accept.py,sha256=Go_Xb6jDhAijmO_vpKoyhsVOeEKMOVzXAb4S7ApFDCQ,6751
27
+ specify_cli/cli/commands/context.py,sha256=dS5QD5tLwRjAZna1tp6B7qJwaw8EvQcKmVQW07IJ_HI,8286
28
+ specify_cli/cli/commands/dashboard.py,sha256=ZV7a_rt6XJMie1LzIpuT7Mpt3fZIMPRSD4jb_gL91C4,3088
29
+ specify_cli/cli/commands/implement.py,sha256=8FOEIdv-wPI44NMV1M1H-rms5Wk2VP-IlZoxPysHS1g,37737
30
+ specify_cli/cli/commands/init.py,sha256=LocNOwhret6S4ZQ5e5DT2JbA5k9cHJ1pwIbZjlM2WCM,36517
31
+ specify_cli/cli/commands/init_help.py,sha256=2Ds1fxvIC3Wo6tK2VgKhneK1EWsUD4osQ43hDSAkgt4,2478
32
+ specify_cli/cli/commands/merge.py,sha256=NEOYS6akeddYxZn4Fw9hLmDh1dOHFlxeHzUHFTg2Shs,30762
33
+ specify_cli/cli/commands/mission.py,sha256=8pO6voZ-uID_mC8TzJrvdjQJCi-DhzM_jhCnnG-kS5A,8806
34
+ specify_cli/cli/commands/ops.py,sha256=E8xfvUtDihH0pJqbU5x0yYRP63pr4f_gvqun86mTeMU,8085
35
+ specify_cli/cli/commands/orchestrate.py,sha256=ibdDvaTrH2UEXlgBXXVu8cnLnMc7gOAZxxT2LHaP4-k,20421
36
+ specify_cli/cli/commands/repair.py,sha256=bZ31a9dRH4nxLM8IImMoWUxima8pGJhmGf5B9TbFTtI,6208
37
+ specify_cli/cli/commands/research.py,sha256=f69pCPPdtXNa2FGUy0waAIOqRHxKrGIql0Q5z1WWhQw,6612
38
+ specify_cli/cli/commands/sync.py,sha256=PeWNE5vL0wyMMhvpDN4EeI5nVLOi935xVMKqi_lSpqk,11311
39
+ specify_cli/cli/commands/upgrade.py,sha256=WasQ9fj5KnuBiQaDlZguS6Rj2tX1QSH387hL9VMZIH0,8673
40
+ specify_cli/cli/commands/validate_encoding.py,sha256=4n1G_CUQ15WpU0g25_PhgtIPuS3Y6gJaGIf3Y9BBcdM,7386
41
+ specify_cli/cli/commands/validate_tasks.py,sha256=XZekLmDcSlUaebMi8coxXWauFkAWxeX7is8ljsEu3k4,6734
42
+ specify_cli/cli/commands/verify.py,sha256=UESVqE2CLRWUJsSGIvShnxpYGi-YDvXDU9HsEBbMz08,12394
43
+ specify_cli/cli/commands/agent/__init__.py,sha256=jdF5Hb_83PM2G-LePmgZZxqrg4XLZueOGlwcSSXzX3s,681
44
+ specify_cli/cli/commands/agent/config.py,sha256=kDlGQ5bCa6G1hxGMgp59UZeF8G1Qn0NKciY3DUGeEaY,12524
45
+ specify_cli/cli/commands/agent/context.py,sha256=XyzMAQ3A9hJvWouY3ZykJU7hOyNVJtkNHoFj7VCW9kU,6559
46
+ specify_cli/cli/commands/agent/feature.py,sha256=79syq6TtzDHc3vm8OANYMpu7nwOEv-TqrOmVZb6hJyo,36410
47
+ specify_cli/cli/commands/agent/release.py,sha256=xtTE0wACruHdNK_c0ToBWgGxnD1QfOGS9J6hA0qXhSA,213
48
+ specify_cli/cli/commands/agent/tasks.py,sha256=rhsGkmcTqPaRAJJ4BLnUybUTc8kw1L5J0SKkyuU3lZU,51208
49
+ specify_cli/cli/commands/agent/workflow.py,sha256=oP4FHUeQSSGAZHtYVizqe82J__hqhR_m1mTevw_aoBg,37248
50
+ specify_cli/core/__init__.py,sha256=ahmOJKet_a1xrl6Q3W2UCH_Aa1ZSm1lTUALy2n325Pc,1284
51
+ specify_cli/core/agent_context.py,sha256=FrXBkIofV7scAI4JHpZ-hHsm3mw5IS_leUdCX30uem8,10712
52
+ specify_cli/core/config.py,sha256=0wADMN0V-Rg8Qk4hbT1QK1dcHbI2ZoIcJJ4heRNqL0E,4371
53
+ specify_cli/core/context_validation.py,sha256=0DNmlAQ55tZ38_gh5QuYeCvgws4bDWf1bFCGXjS_Wm0,11177
54
+ specify_cli/core/dependency_graph.py,sha256=5vlf8Rsi1vlPs5z4qpWpwJLM5cc6m0gkda-Jg4XvE6Q,11047
55
+ specify_cli/core/git_ops.py,sha256=8n6UFKuWEVKynroo07FnRjwkNiBEFlnfDO2CnYjUcZs,4156
56
+ specify_cli/core/multi_parent_merge.py,sha256=EuvOAycQVOTs-HZX4LCPCI3lJ6pbD-IoTb6dsXw2PFU,9986
57
+ specify_cli/core/paths.py,sha256=yRfQZ_0mNNwOoWQthgoNJFZHXDTluBtbRERL79rDxNw,8618
58
+ specify_cli/core/project_resolver.py,sha256=D9W9ZF3jJggQPDZ5z34gnJie_6EH-y3aRFkpkRIWzc8,3801
59
+ specify_cli/core/stale_detection.py,sha256=BHQ6tvong-8y8y4-nKRQa1CJRmk8i-ELaCy9wQ4Pz1g,8087
60
+ specify_cli/core/tool_checker.py,sha256=DIpjju_vbDTDdCftqWep2ANuLqDrPIfYw-9dX0jzGI0,2516
61
+ specify_cli/core/utils.py,sha256=Lf2k5jNYQb8HuSXU3tF7Woc4FFyNX8VFmiGI9DYm6YU,1184
62
+ specify_cli/core/version_checker.py,sha256=u_nlViiYORqjSmrhaxVZbY8o2h2aoXp3rkGxcDSRgBs,7771
63
+ specify_cli/core/worktree.py,sha256=khC9VOQDJ5iHAoRs4fpE0InM_ES3z8yTaeEmcwx5XDA,16622
64
+ specify_cli/core/vcs/__init__.py,sha256=7M2i9dylMYutHxjEdnWd33OKOyCQK2VDD3r-05QQ6Oo,2282
65
+ specify_cli/core/vcs/detection.py,sha256=POEZVCvtuvDkWSgRjCjxffBndOOCGI8MEmKHWYqnDSI,11083
66
+ specify_cli/core/vcs/exceptions.py,sha256=9KFfSOOTjr1CkhkLDc-L2S4VV642quwrHCeD8mt6qz8,1706
67
+ specify_cli/core/vcs/git.py,sha256=XRxd8NX-cv-rBM3xVkW7PvIXYxBC32LospUQ86aeF-Q,43635
68
+ specify_cli/core/vcs/jujutsu.py,sha256=TM7w89Q7rvdqz4tcMEvIUHhy1Wl2Vg7zfU9w1Z14C_A,40172
69
+ specify_cli/core/vcs/protocol.py,sha256=2bmYxGlpN8q41g4iHApcb6z25Uu2WwP8kiEVVk6RghU,7876
70
+ specify_cli/core/vcs/types.py,sha256=PRkqAiqVJ9P-KW339QRt-SRy5Ez6FWptJfH6AbZnRas,7512
71
+ specify_cli/dashboard/__init__.py,sha256=Ok7gk-JSLefrjYkSrQWZNiraF9_5unZIZt2bor39lf8,726
72
+ specify_cli/dashboard/diagnostics.py,sha256=IZDSvP_SKUkkM038TYkJ4-JEXmFK5UY44WDr7IUUsrE,8424
73
+ specify_cli/dashboard/lifecycle.py,sha256=-21zAlVETVMH468KJhExFVGLUeg2S84OerlHs7s7KjU,19588
74
+ specify_cli/dashboard/scanner.py,sha256=YBxpyndtKXSQn-5o5r6x9nz_QCyOixdivhdfdraYNDc,15732
75
+ specify_cli/dashboard/server.py,sha256=B_VmdcM320l-VyIHa0F1F3QMmU-xe359V5US4AJXFkc,4113
76
+ specify_cli/dashboard/handlers/__init__.py,sha256=m1sDIlnhLK_VWPuAY97fNp3CrGz9Y-yIqFIFEgOA1EI,409
77
+ specify_cli/dashboard/handlers/api.py,sha256=fgURrGaMDkt-1SLZ44ZFXOezRcHxqlCUqUfBH33eW4Q,5436
78
+ specify_cli/dashboard/handlers/base.py,sha256=rfZOXKx0wULQbi0tZBIU8jUupFTvS7GBqPpzjGmZPsI,2394
79
+ specify_cli/dashboard/handlers/features.py,sha256=NT8hlbVsrrWchx4a-PfPg7oOEqdMQ-qJSvtW45GgU9I,16282
80
+ specify_cli/dashboard/handlers/router.py,sha256=Tb8v7we7ozYmCrUYyKRMYAI4kCEPo7AXA8yensCjDGI,2104
81
+ specify_cli/dashboard/handlers/static.py,sha256=vahtMr0ZfqqJKim-7rbfe3WiPE0VoQk6tREsEx7Ww3o,1499
82
+ specify_cli/dashboard/static/spec-kitty.png,sha256=jgxPJ4g8XtcGitG_68j3Ti3UZvOr75iDNUfJz_GWeS4,1481824
83
+ specify_cli/dashboard/static/dashboard/dashboard.css,sha256=NtMbPHyTQaY9WMh_XlOkJnLPbqOdv0aDVUhJ-Wk-0ek,13697
84
+ specify_cli/dashboard/static/dashboard/dashboard.js,sha256=dVeWqHEM6jLIxBnnWhGJNY2f_IIuStZMLaphtmsLvP8,60262
85
+ specify_cli/dashboard/templates/__init__.py,sha256=g_QkfM17deG93cKpVhLwlm9IuWFnm5e7GD6YTRpW8TU,1214
86
+ specify_cli/dashboard/templates/index.html,sha256=J5zcu2DZrpxvzIolgPbjho3lclFkpwBJTeGKSfTtp84,13009
87
+ specify_cli/merge/__init__.py,sha256=lWgcAN4M9ULGyC3QzY0UxO-hEPNlthpb02L9m-dNOgY,1774
88
+ specify_cli/merge/executor.py,sha256=mCi4WeftSKKEn96S5pQQ96Z3mVyA7kkV-p_2Xk7MazI,23119
89
+ specify_cli/merge/forecast.py,sha256=ph5nE3MpRzS25S80fqcEuUP088ks6Xy5zC0dvBjTFkU,6753
90
+ specify_cli/merge/ordering.py,sha256=i6n8w2uKsr80LBanUfRViLnD5w1znErG9u_2AOnRK4k,3694
91
+ specify_cli/merge/preflight.py,sha256=eh-KWdiN7HMp-HVDIWP_ki0jYlo9v6CiL3jDAiFZW8M,7310
92
+ specify_cli/merge/state.py,sha256=gd1SyhYg9SbZRadxYJjgkeb0CwWz0FABXbQq0bwS3i8,5146
93
+ specify_cli/merge/status_resolver.py,sha256=9lIyIDVGqFTfAntX1Iar-NCMyXoPTyWnprRPpllNpnk,11115
94
+ specify_cli/missions/documentation/mission.yaml,sha256=YECKaKl-uGPhb30CWoQAkwSWVebVsQrcBGib3fxVTg0,3579
95
+ specify_cli/missions/documentation/command-templates/implement.md,sha256=X6CBOWEfEDIOvXIXdTIh2PCy9lHmjR3DjCF1Bh3m11A,9481
96
+ specify_cli/missions/documentation/command-templates/plan.md,sha256=_UXGXjuUeT1zQNEzgfAOI-C8KZ3hSveUmVQZQLEgMK0,9376
97
+ specify_cli/missions/documentation/command-templates/review.md,sha256=xFpmi4ifb4QzoL5qM9fN5nn3h_3LOdjPuvBF3unF7b0,10847
98
+ specify_cli/missions/documentation/command-templates/specify.md,sha256=GUkISqbPhfbOQIQymBXPnuzvGA5zvUc7m9ULSVd2l7k,7173
99
+ specify_cli/missions/documentation/command-templates/tasks.md,sha256=vOH7FdRTDooN7iBXWFB7Qqnxp6Yi3nMAuQBY5PlkIR4,7347
100
+ specify_cli/missions/documentation/templates/plan-template.md,sha256=MN060SNStFJmhEQqdaNkWkTZGM_yroQScHqUWL8DXbM,9961
101
+ specify_cli/missions/documentation/templates/release-template.md,sha256=hWth_g53NaPHED4bzyQvUGQybtlx7btao7X2xPBM9Dc,5478
102
+ specify_cli/missions/documentation/templates/spec-template.md,sha256=z789CV_TIl0PQm4lWC_6YAWP4aY-V_NFge88tQfP83o,7303
103
+ specify_cli/missions/documentation/templates/task-prompt-template.md,sha256=RItX9z5P02vOBr7koFrTmPdH_lPT6SUS14Bs8AlZo6E,5700
104
+ specify_cli/missions/documentation/templates/tasks-template.md,sha256=lzXVXHcO95wHNhTq9d7g8gEczcXLFhbnatk3tleY770,5803
105
+ specify_cli/missions/documentation/templates/divio/explanation-template.md,sha256=_oEPMJGpQcEfMt8P8O3idEZgdGiz6eNz-sA7e0r0XHo,4817
106
+ specify_cli/missions/documentation/templates/divio/howto-template.md,sha256=utV-Uz-XAks2mXDjcSz2__bVe_unVXjVv3D8753kRnE,3670
107
+ specify_cli/missions/documentation/templates/divio/reference-template.md,sha256=M61uZohHQVo4E-FFyP_MthXj5U7_tnul2G4zcVTy6wY,3837
108
+ specify_cli/missions/documentation/templates/divio/tutorial-template.md,sha256=5D8s-Wb5FHuODU2HKalEs5iz5QAC6-3pDbtHicjbQFY,4226
109
+ specify_cli/missions/documentation/templates/generators/jsdoc.json.template,sha256=diBsRb6CFcLIMkdMGc2mjcrvH0F80nlm5WSJ2spMnRk,393
110
+ specify_cli/missions/documentation/templates/generators/sphinx-conf.py.template,sha256=kDPWayUfIF04velVO7WJOGajI-cbIRyw4qmdiGhOQ3s,904
111
+ specify_cli/missions/research/mission.yaml,sha256=GPTClnDLJG4u02ucOIZ6hrapM0a2p0NtnBDbv1XWgBo,3656
112
+ specify_cli/missions/research/command-templates/merge.md,sha256=tfv1oboxCqW6WZnGoOKxJBmRZBPtwYQjhsUNp0DYMhg,10971
113
+ specify_cli/missions/research/command-templates/plan.md,sha256=p1XAeSV2k-MXoV6zMWR94S1iE_XXxD9MVzbqhaTP_24,6683
114
+ specify_cli/missions/research/command-templates/review.md,sha256=yy6YxXdgrx2A-5qJckCOTiW2SNe42ToZ_Nva4cvzF-E,6630
115
+ specify_cli/missions/research/command-templates/tasks.md,sha256=AXkOlYUnlhzDf1acZwOSQA_11oRwAmHTyB2GJ5Y_Kg0,8238
116
+ specify_cli/missions/research/templates/data-model-template.md,sha256=2RFcAIEMYodPG0VuOBGCehSpTi2Pdw8wkG6kH8aX0MU,1343
117
+ specify_cli/missions/research/templates/plan-template.md,sha256=6M5OorMVjJ2vn0z79dZTd0ZqaXKlHpeC_ehvi-zvGjQ,4763
118
+ specify_cli/missions/research/templates/research-template.md,sha256=WC_jTDbYzXecB2cKa1gO47mhC6iOD_YENwJtno36rvw,1423
119
+ specify_cli/missions/research/templates/spec-template.md,sha256=2UibaEdzaoCzdc7Am3CGZOTBIpqIDI40aAL3aeiba84,2425
120
+ specify_cli/missions/research/templates/task-prompt-template.md,sha256=517Toa1GUoeW3szxALK9WTNEcexKxFb8vjI-4dRzQFE,6129
121
+ specify_cli/missions/research/templates/tasks-template.md,sha256=j9A1RiDT3Ium4seNOsB2rcs-iNFEC62T6sRMZYkcXo4,5009
122
+ specify_cli/missions/research/templates/research/evidence-log.csv,sha256=-3sgIcvz5aoMOpn0zdN1pzQQOA2CvX3UdswPS-GVTVw,1572
123
+ specify_cli/missions/research/templates/research/source-register.csv,sha256=K9QTwcsdn_l5YE0Cx8PdsrBrk1YYJ-xiu2IaX1XSkaY,1296
124
+ specify_cli/missions/software-dev/mission.yaml,sha256=0wBtWbEZeAhFRcOIiIUn38cO8Wu1jrKYVTLThvQ8BN4,2413
125
+ specify_cli/missions/software-dev/command-templates/accept.md,sha256=4H8WkkhGcaIteu4YNrDYr5fjPd3DMvrk1Up8lnz2wmE,3169
126
+ specify_cli/missions/software-dev/command-templates/analyze.md,sha256=JEaVTma0gx8t-RbRB5EUO09EU9fketcl8x-h646X18w,6924
127
+ specify_cli/missions/software-dev/command-templates/checklist.md,sha256=T0eKBGeihhquS_H2QNpcbvLtf7GW2pkPt1F_As_b5vQ,16665
128
+ specify_cli/missions/software-dev/command-templates/clarify.md,sha256=HYnzigtgKo5la72QlQr2NQnri3-VJ0ZCyqUhTjl2mFA,9920
129
+ specify_cli/missions/software-dev/command-templates/constitution.md,sha256=EflS3Sfo8UfvTXADD-vtN72B6Sju-tgg5iOK7sNjIks,11262
130
+ specify_cli/missions/software-dev/command-templates/dashboard.md,sha256=QRnW8GloeeCN_pgl1T_y4mac0B1SJk0Oid1aNIAwblk,3219
131
+ specify_cli/missions/software-dev/command-templates/implement.md,sha256=BOcxzzwZoYL-whEaIoBmvojoOLlwsW0OoQyGfz197YY,1770
132
+ specify_cli/missions/software-dev/command-templates/merge.md,sha256=N3vQtkorq3xF30ah1B6NfFWcEvt97sOarLFvipdx_68,10772
133
+ specify_cli/missions/software-dev/command-templates/plan.md,sha256=g8EzGF__KwpuqaIdRGOtOplpuWm0QpvBjHaWV494cro,8021
134
+ specify_cli/missions/software-dev/command-templates/review.md,sha256=C799Ix3vSgDMzv_IFaeE6PnpbpxBbf4uwHJUJDxf8sk,1795
135
+ specify_cli/missions/software-dev/command-templates/specify.md,sha256=JUPY-PNid-zwNv4Cjw0yGNmlOikjjRK5CuWX5afpRZI,16840
136
+ specify_cli/missions/software-dev/command-templates/tasks.md,sha256=BnUgdutM9WPo9GzsSesblq2hArnV4xGihD-XgRquMpI,21545
137
+ specify_cli/missions/software-dev/templates/plan-template.md,sha256=rUiGpP3tavBlp_3npGDibNcIf3O-61fpV2cBOfDJISk,4748
138
+ specify_cli/missions/software-dev/templates/spec-template.md,sha256=z58NEQsc-_94RgfF-dgzSSailglveiPJETbW3Gjb4uc,4063
139
+ specify_cli/missions/software-dev/templates/task-prompt-template.md,sha256=21i2jCa53Q_TtTS-WXvsGem4oGBUvUieDpdmVL2IBzw,5699
140
+ specify_cli/missions/software-dev/templates/tasks-template.md,sha256=xZM2eHdoal4xLKBa1VDcUrM_hAdDPfUrgUFf71y8nOI,5802
141
+ specify_cli/orchestrator/__init__.py,sha256=SaKpV43lT3_2NgZ-NBs5kHFO3a4bDKocZ4N53lewbVA,2012
142
+ specify_cli/orchestrator/agent_config.py,sha256=lGcuCp-Q6JbI8SANk6xC9GFOi8KWgf5ZWoC2jnjIkcM,6658
143
+ specify_cli/orchestrator/config.py,sha256=RSTBCBTBIAcGICXZ4iiGUpeaucnz3gUVGeibdJ-uOMI,14008
144
+ specify_cli/orchestrator/executor.py,sha256=5i85ctUuAm3j0dHmTzVq6IKyuYxxU5ZwiZ1WzsXxHn4,17792
145
+ specify_cli/orchestrator/integration.py,sha256=ewKeoKgaAFqaDPHqKByYuVg4lOBLhIbkDUVM8uyZBMQ,41071
146
+ specify_cli/orchestrator/monitor.py,sha256=JgkzwGZsm8Ij05IN5sEpIrmbyXe3Qr6T54E0leIk7-U,27615
147
+ specify_cli/orchestrator/scheduler.py,sha256=25UynRmpQ0iN6fmp5mQ7dOnS6TjJlTH8vXNmoAMMscI,24534
148
+ specify_cli/orchestrator/state.py,sha256=TlqGPIGdCAvCL6TCrb5uhEXwqKx4inzw-JLSuMwMEz4,17207
149
+ specify_cli/orchestrator/agents/__init__.py,sha256=I-pZQ6_SpjNmJrlbqTKuxr3W4Sn_9_mHHdHO4YHuecg,4875
150
+ specify_cli/orchestrator/agents/augment.py,sha256=ZL6xthWIp4Hm3xrJEJ0wKtPn_VHrnfUZFeYo2uVCrvY,3311
151
+ specify_cli/orchestrator/agents/base.py,sha256=nodw9RzZTZV0iWfcq49ruZdEqqn2CJwvkpg7mbsXqWY,7282
152
+ specify_cli/orchestrator/agents/claude.py,sha256=DNoS6Q1n4EZOD0t-Hyb6gQVf9di1lRZN6NhwMKktziw,3321
153
+ specify_cli/orchestrator/agents/codex.py,sha256=dg-Dc6-2m0bZ5abEZ7mdx7y9Tfxu7dv8GNpcy31AVAI,3005
154
+ specify_cli/orchestrator/agents/copilot.py,sha256=vty4v38Z3Qa_6l2cca9jeRzqyET0f7mlfCSmiZpAt-Q,4286
155
+ specify_cli/orchestrator/agents/cursor.py,sha256=mxBxOxt0GNGBodW_Ac95ChL1EL6hyLCAlIH5_SS3HwI,4226
156
+ specify_cli/orchestrator/agents/gemini.py,sha256=du3XUG86I0Dhy4E71Kk4fNGkLKvAcj4pit4KOw9gytA,3479
157
+ specify_cli/orchestrator/agents/kilocode.py,sha256=5qZgoEPFSWJ6Og9Qb02SiTVZXnhr5KPSZO5s31dh9zM,2661
158
+ specify_cli/orchestrator/agents/opencode.py,sha256=XOZuPLIA2ihHakmKH-xemuTsCWBRoyf6RgKhU6sF7ZM,4489
159
+ specify_cli/orchestrator/agents/qwen.py,sha256=hWP0yu0SGPt-9PNYzenoBV5Dyh1UTCSAe1O4GRwJbqg,2661
160
+ specify_cli/orchestrator/testing/__init__.py,sha256=kdGy0l4pJy60sfQ8JPZkNlx7jUiuheNUYVK0eG0Ed7o,3007
161
+ specify_cli/orchestrator/testing/availability.py,sha256=Y3PhlxTlsGDBdCwdhoAcCg0wWsWtmnqT1K1gyYd1XAA,10411
162
+ specify_cli/orchestrator/testing/fixtures.py,sha256=mIYvy2zBBANgGL7W2AcP2tRdVKjDvSCzi9pF9MgM00c,20041
163
+ specify_cli/orchestrator/testing/paths.py,sha256=yrgmOfn-tjL5hHZ-cayiTckl2L7vpZIaw2EKN82oMHQ,6228
164
+ specify_cli/scripts/debug-dashboard-scan.py,sha256=wli7lvG1-z3Km8i70Jt4zh_QxaFick7q4yc_CgFS8qs,2197
165
+ specify_cli/scripts/validate_encoding.py,sha256=KfHnwc4EAt2D8atkmG5Tya_CUaeItint0ruMmu9aNmk,5825
166
+ specify_cli/scripts/tasks/acceptance_support.py,sha256=4rXNyugu705MWbCQxzGI8_mt8wXZ1dsX_kjNYo7fjI8,23565
167
+ specify_cli/scripts/tasks/task_helpers.py,sha256=a4jOo5z9cZ-igl5-q7wdzjyqqY-qYLxFFID2QkBpaic,16614
168
+ specify_cli/scripts/tasks/tasks_cli.py,sha256=1VelXO01VrNZMzAJucs-GYrmAVHUJB_ZUFloZgrLXOA,32786
169
+ specify_cli/template/__init__.py,sha256=9E6-VYVXouRpY1U3qGxe0YDcntXojezWBrmpunIV1r8,1105
170
+ specify_cli/template/asset_generator.py,sha256=d9U3-Zpsv-hbo1mvsCoXLcncdonc76RRt3l_N0B9rtQ,7738
171
+ specify_cli/template/github_client.py,sha256=P1rcFNyROeOTfgGkGpubkC5elw-pZvhPDcOoY431TXQ,12406
172
+ specify_cli/template/manager.py,sha256=d6ydSHMmwjxkE8MtUcxsffnVSZt6l6KsaNNzUmw3lfc,7981
173
+ specify_cli/template/renderer.py,sha256=s_ccPkam_-68YUklzlnJWLCq_EIMvu7a6lE5MX1B4V4,3081
174
+ specify_cli/templates/AGENTS.md,sha256=V3kJYEZx-k2onEHil-v0x5NMkffygICPw0Xk9VcNCac,6080
175
+ specify_cli/templates/POWERSHELL_SYNTAX.md,sha256=ooO-Js_BMCU4humWjBZ_HBN87pIr31gUma71migzohI,5920
176
+ specify_cli/templates/agent-file-template.md,sha256=4fbnN2S6DgvfcJiX7Gu0OdZpYr20bRtD0i038IiIMjs,910
177
+ specify_cli/templates/checklist-template.md,sha256=rRD1efkXnQz5NSEOa_DgvECRASwlH1QW1ADIgnXTPms,1387
178
+ specify_cli/templates/claudeignore-template,sha256=5W5WqvzLa2hvTTxLJiDm3jc3GPApCU1-K-MemfTswHg,740
179
+ specify_cli/templates/plan-template.md,sha256=2AlxUBpR-lK6cY2lF_ujMMc_vp0mGlMpTNFzkPzqrRM,3913
180
+ specify_cli/templates/spec-template.md,sha256=RJlgx0XxfM3D6Mbs986AuXqODDrQlO-To9v2xKFEWds,4129
181
+ specify_cli/templates/task-prompt-template.md,sha256=AUj0R2HOVylZg8dM93pGL90ohmQgQXGUHz_8t7TSUkk,6613
182
+ specify_cli/templates/tasks-template.md,sha256=1W125IaVP02MYPIbGbnFyLqdcwio-eTaauywoxxYnZM,5953
183
+ specify_cli/templates/vscode-settings.json,sha256=WAsn2ohN5oCqO0qlEHsTwyJf914sdBF9OZUhjrFL1e0,357
184
+ specify_cli/templates/command-templates/accept.md,sha256=Bf_nyckMq1j9HQuBMN4GYlod5D3Zh4UZ4kEhGccPia4,5538
185
+ specify_cli/templates/command-templates/analyze.md,sha256=hNJiACVvKpeesSoKtGBMydTLm0TbzjBeGNu93X7JJLU,9237
186
+ specify_cli/templates/command-templates/checklist.md,sha256=VWyfldPTlKpRGFEkU9M9BowoSzg3Kz9nlxadtC8D8g0,18918
187
+ specify_cli/templates/command-templates/clarify.md,sha256=k2XCCW6FqMLDrpW92c-PdYvBeBNRW9zBpdVKBxR_uHw,12040
188
+ specify_cli/templates/command-templates/constitution.md,sha256=GJycPrMz94xdVSPpmRBu4lEd6srp1HgTQNacw5ZYPXA,11238
189
+ specify_cli/templates/command-templates/dashboard.md,sha256=ifXKacoOLPomKtncPHIY6I_xCBCLp0NknL8_7kjJztw,5704
190
+ specify_cli/templates/command-templates/implement.md,sha256=fXOKyXuCm8UandweeFpW9S6tqxdSVr32KR1Dwf-opOk,6333
191
+ specify_cli/templates/command-templates/merge.md,sha256=TclVzbUNZRe-4e8Hn1qcxfwPJqmhhHe0bjcS5-96hi4,11020
192
+ specify_cli/templates/command-templates/plan.md,sha256=g8EzGF__KwpuqaIdRGOtOplpuWm0QpvBjHaWV494cro,8021
193
+ specify_cli/templates/command-templates/research.md,sha256=_GlrBcnH-6-HKPpIuCFHI5ua51gBRvRXzRC5kFroaPA,3682
194
+ specify_cli/templates/command-templates/review.md,sha256=YGvNXLr2FydRIISLtIuDicuGPfA-BtreMotCmkodahI,23831
195
+ specify_cli/templates/command-templates/specify.md,sha256=JUPY-PNid-zwNv4Cjw0yGNmlOikjjRK5CuWX5afpRZI,16840
196
+ specify_cli/templates/command-templates/status.md,sha256=HQSHSMEGOOekbd4nN_93yzXyhPmubb_9B_OivGa4JJg,3384
197
+ specify_cli/templates/command-templates/tasks.md,sha256=E4fN0ZKEPObRlUbyE6TPSuak9TmzzE92EZwceUgj01U,9264
198
+ specify_cli/templates/git-hooks/pre-commit,sha256=DO436OhMs6pkPwpfOhOBVWs0P2tH_2TYIJKaX-gzQOg,651
199
+ specify_cli/templates/git-hooks/pre-commit-agent-check,sha256=f-klyIzlFOFjhATGzWdtUHPfpa7TSY86cn6buXYwwwI,1397
200
+ specify_cli/templates/git-hooks/pre-commit-encoding-check,sha256=j8MooYnxnWHBehrJFsHRRcqDlGZ5gx7g5S1LUcYA-gA,4375
201
+ specify_cli/upgrade/__init__.py,sha256=m4sZB2wfYbzYBUUl2AtRYLKWnIhgczhVnHEwHb3Xvmk,473
202
+ specify_cli/upgrade/detector.py,sha256=gQpXDFuzZpXoavyfATAq2WotsFz19mbopk76gELebOY,7855
203
+ specify_cli/upgrade/metadata.py,sha256=QlQF74gOD8XxQ-EBEOiUQJ1yJUt5zs3dVMKT2lceFtg,5686
204
+ specify_cli/upgrade/registry.py,sha256=g4bWA6vpFfSZty-pPETIJpwOBYw3a5p9uJ21Uz3H8WQ,4091
205
+ specify_cli/upgrade/runner.py,sha256=VG4gAExuOB31oZPaDjCAVvg6UcQFrSUYAMBFg51_GDw,9802
206
+ specify_cli/upgrade/migrations/__init__.py,sha256=T_LDx41jG_4rhl_QEw5-lLxQrSTrtXop6vJOb_iRgj8,2447
207
+ specify_cli/upgrade/migrations/base.py,sha256=hbU1tPKVvczXVLSzRBafXvZw2WPbmPJjOb0Kku2y9bA,2267
208
+ specify_cli/upgrade/migrations/m_0_10_0_python_only.py,sha256=mIK71BdgDhx9RwGCLERCZiuHTbQNj93OAw7blHw7bMY,15154
209
+ specify_cli/upgrade/migrations/m_0_10_12_constitution_cleanup.py,sha256=rieToZQ7zLC361cSkcXx4DoX3TMP5WanZvSXRO2khKw,3384
210
+ specify_cli/upgrade/migrations/m_0_10_14_update_implement_slash_command.py,sha256=D-Si3cxebV97qnEcCSrgAMPDty73ft9WfNK9iGTBHWI,7124
211
+ specify_cli/upgrade/migrations/m_0_10_1_populate_slash_commands.py,sha256=kdPXsp3erFz3Z-s74pd0141mJfVC2O5dqtAzDeKVsyg,6525
212
+ specify_cli/upgrade/migrations/m_0_10_2_update_slash_commands.py,sha256=XzIBSIcPYLRnZMEdOxdTDt0TGNLAqFXK5U2zfP-LYdE,7129
213
+ specify_cli/upgrade/migrations/m_0_10_6_workflow_simplification.py,sha256=81olzFFSNN89RQWMqbAMXFJH45QC6BT1oS2gSq2n_oI,7434
214
+ specify_cli/upgrade/migrations/m_0_10_8_fix_memory_structure.py,sha256=kGUXWA3tyUToEe7kFk0XQsCWiW24vsEEJuUmvH6Y7N8,11679
215
+ specify_cli/upgrade/migrations/m_0_10_9_repair_templates.py,sha256=voCWWe6Xi3wSahSPFwTj9l3usunTvCaaY7rnA-rFCuI,6775
216
+ specify_cli/upgrade/migrations/m_0_11_0_workspace_per_wp.py,sha256=1kxWD91x98qLlxSt-OzFFPc_5bFWWGQX3JEyJyIk50g,6139
217
+ specify_cli/upgrade/migrations/m_0_11_1_improved_workflow_templates.py,sha256=BWwQmR_GoihDvhw-MZaX4FmVZtS62GzUECvw6lf2rog,7283
218
+ specify_cli/upgrade/migrations/m_0_11_1_update_implement_slash_command.py,sha256=zvbGk1otwYbWrhYdOO4RxGW6ck2LYUkjDH2wwtCSKIg,6299
219
+ specify_cli/upgrade/migrations/m_0_11_2_improved_workflow_templates.py,sha256=ataRL4oMT7sQEN9PVk3gBYiHjC_pIBwdqAn6lItNs_w,7307
220
+ specify_cli/upgrade/migrations/m_0_11_3_workflow_agent_flag.py,sha256=AjmaPzsDCk9oRHH3hpgAvrtDj4kv7CwzJPpfslMa_zw,4404
221
+ specify_cli/upgrade/migrations/m_0_12_0_documentation_mission.py,sha256=t21rDEq_VwzdBvVci0J-cep5TGae_uos6DKRdTNhueQ,5512
222
+ specify_cli/upgrade/migrations/m_0_12_1_remove_kitty_specs_from_gitignore.py,sha256=BUmFISJd8WBfnUP0jkjXLwGZ70Waj5j_vGeJZzJW98s,6100
223
+ specify_cli/upgrade/migrations/m_0_2_0_specify_to_kittify.py,sha256=Z6wma8AcgDihLF6auEL_3yq7edAmbZjBiVwsT69C62A,3053
224
+ specify_cli/upgrade/migrations/m_0_4_8_gitignore_agents.py,sha256=bB-YhrvVeMKCtl64U8UCCP8pIzw-gLPzR0MTn-Kb_gU,3971
225
+ specify_cli/upgrade/migrations/m_0_5_0_encoding_hooks.py,sha256=LRrVOqXxfqEb6FWuvinst1BMbe_2M4m42wdgdw_3bl4,5019
226
+ specify_cli/upgrade/migrations/m_0_6_5_commands_rename.py,sha256=QkTOjZMWp6h8ZIO8g8PVdB_cPqdkKT8TQS5R7pc8TD4,6924
227
+ specify_cli/upgrade/migrations/m_0_6_7_ensure_missions.py,sha256=NlfY43UL5uj3ynjRTHp2iSdf-k_j5mxFasn-Kr9Lqek,8946
228
+ specify_cli/upgrade/migrations/m_0_7_2_worktree_commands_dedup.py,sha256=HjfqBLcCNj35i8W7NIq8ybxjdrQu4INV9dOH11iMJZc,3341
229
+ specify_cli/upgrade/migrations/m_0_7_3_update_scripts.py,sha256=LP6K_oX8Q4WQOs8WvU0s_WtgQ8Lax_rL5blnZ_nDbe0,3873
230
+ specify_cli/upgrade/migrations/m_0_8_0_remove_active_mission.py,sha256=nsbPGLmLakthSfO54kLoAPRz2N1MkkneSf6gdqGX4Kg,3050
231
+ specify_cli/upgrade/migrations/m_0_8_0_worktree_agents_symlink.py,sha256=jTGYAkD1hBWaw62BEE_eFeVIzFq3gA-UeQ7IBMNtpj4,5887
232
+ specify_cli/upgrade/migrations/m_0_9_0_frontmatter_only_lanes.py,sha256=1CmuAlTN4dHQNWrB4aUnOSsjwUDlahw7vQzOvFInfv4,13369
233
+ specify_cli/upgrade/migrations/m_0_9_1_complete_lane_migration.py,sha256=GhWNVsFhM4M6JQwtEfeg8Qt4TFVBSllBFvNBn5_AQCI,26125
234
+ specify_cli/upgrade/migrations/m_0_9_2_research_mission_templates.py,sha256=_eeYaQbXg5Z2trhfGmtItr19CWqLw3KItf74KN_el1E,8318
235
+ specify_cli/validators/__init__.py,sha256=9vSq0bx3UUsXhe9ZGXQ1TYrSc_wdkBVw8ft-RTLQT-E,443
236
+ specify_cli/validators/paths.py,sha256=NQRmWT9hNoihWWeq5KvBSjFjTJSVjdfvAWPw4yWD8i4,4764
237
+ specify_cli/validators/research.py,sha256=ZTbiQGkjRskpJUETwyRlPqng_AlGpbsgxjv7BwVMgoI,14510
238
+ spec_kitty_cli-0.12.1.dist-info/METADATA,sha256=9oMxPefiDRevuWxBZ1eKZnfA4fJhsO1htbvfdsFJkBk,76324
239
+ spec_kitty_cli-0.12.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
240
+ spec_kitty_cli-0.12.1.dist-info/entry_points.txt,sha256=AJYAalLcuhaXNjS_XbmJXAI9ZoqdJbofTR0M-1Gd3Mg,48
241
+ spec_kitty_cli-0.12.1.dist-info/licenses/LICENSE,sha256=JRC0RrwfDPlwJFMHXSDNiGMeIOVkJljttzJdnB61NPc,1060
242
+ spec_kitty_cli-0.12.1.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.28.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ spec-kitty = specify_cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright GitHub, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,171 @@
1
+ #!/usr/bin/env python3
2
+ # /// script
3
+ # requires-python = ">=3.11"
4
+ # dependencies = [
5
+ # "typer",
6
+ # "rich",
7
+ # "platformdirs",
8
+ # "readchar",
9
+ # "httpx",
10
+ # ]
11
+ # ///
12
+ """
13
+ Spec Kitty CLI - setup tooling for Spec Kitty projects.
14
+
15
+ Usage:
16
+ spec-kitty init <project-name>
17
+ spec-kitty init .
18
+ spec-kitty init --here
19
+ """
20
+
21
+ import os
22
+ from pathlib import Path
23
+
24
+ import typer
25
+ from rich.console import Console
26
+
27
+ # Get version from package metadata
28
+ # Test mode: use environment override to ensure tests use source version
29
+ if os.environ.get("SPEC_KITTY_TEST_MODE") == "1":
30
+ __version__ = os.environ.get("SPEC_KITTY_CLI_VERSION", "0.5.0-dev")
31
+ else:
32
+ try:
33
+ from importlib.metadata import version as get_version
34
+ __version__ = get_version("spec-kitty-cli")
35
+ except Exception:
36
+ # Fallback for development/editable installs
37
+ __version__ = "0.5.0-dev"
38
+
39
+ from specify_cli.mission import MissionNotFoundError
40
+ from specify_cli.cli import StepTracker
41
+ from specify_cli.cli.helpers import (
42
+ BannerGroup,
43
+ callback as root_callback,
44
+ console,
45
+ show_banner,
46
+ )
47
+ from specify_cli.cli.commands import register_commands
48
+ from specify_cli.cli.commands.init import register_init_command
49
+
50
+ def activate_mission(project_path: Path, mission_key: str, mission_display: str, console: Console) -> str:
51
+ """
52
+ DEPRECATED: No-op function for backwards compatibility.
53
+
54
+ As of v0.8.0, missions are selected per-feature during /spec-kitty.specify,
55
+ not at the project level during init. This function is kept for backwards
56
+ compatibility with existing init code but no longer sets an active mission.
57
+ """
58
+ # Just verify the mission directory exists
59
+ kittify_root = project_path / ".kittify"
60
+ missions_dir = kittify_root / "missions"
61
+ mission_path = missions_dir / mission_key
62
+
63
+ if mission_path.exists():
64
+ return f"{mission_display} (per-feature selection)"
65
+ else:
66
+ console.print(
67
+ f"[yellow]Note:[/yellow] Mission [cyan]{mission_display}[/cyan] templates will be "
68
+ f"available when you run [cyan]/spec-kitty.specify[/cyan]."
69
+ )
70
+ return f"{mission_display} (templates pending)"
71
+
72
+
73
+ def version_callback(value: bool) -> None:
74
+ """Display version and exit."""
75
+ if value:
76
+ console.print(f"spec-kitty-cli version {__version__}")
77
+ raise typer.Exit()
78
+
79
+
80
+ app = typer.Typer(
81
+ name="spec-kitty",
82
+ help="Setup tool for Spec Kitty spec-driven development projects",
83
+ add_completion=False,
84
+ invoke_without_command=True,
85
+ cls=BannerGroup,
86
+ )
87
+
88
+ app.callback()(root_callback)
89
+
90
+
91
+ @app.callback()
92
+ def main_callback(
93
+ version: bool = typer.Option(None, "--version", "-v", callback=version_callback, is_eager=True, help="Show version and exit")
94
+ ) -> None:
95
+ """Main callback for version flag."""
96
+ pass
97
+
98
+
99
+ def ensure_executable_scripts(project_path: Path, tracker: StepTracker | None = None) -> None:
100
+ """Ensure POSIX .sh scripts under .kittify/scripts (recursively) have execute bits (no-op on Windows)."""
101
+ if os.name == "nt":
102
+ return # Windows: skip silently
103
+ scripts_root = project_path / ".kittify" / "scripts"
104
+ if not scripts_root.is_dir():
105
+ return
106
+ failures: list[str] = []
107
+ updated = 0
108
+ for script in scripts_root.rglob("*.sh"):
109
+ try:
110
+ if script.is_symlink() or not script.is_file():
111
+ continue
112
+ try:
113
+ with script.open("rb") as f:
114
+ if f.read(2) != b"#!":
115
+ continue
116
+ except Exception:
117
+ continue
118
+ st = script.stat(); mode = st.st_mode
119
+ if mode & 0o111:
120
+ continue
121
+ new_mode = mode
122
+ if mode & 0o400: new_mode |= 0o100
123
+ if mode & 0o040: new_mode |= 0o010
124
+ if mode & 0o004: new_mode |= 0o001
125
+ if not (new_mode & 0o100):
126
+ new_mode |= 0o100
127
+ os.chmod(script, new_mode)
128
+ updated += 1
129
+ except Exception as e:
130
+ failures.append(f"{script.relative_to(scripts_root)}: {e}")
131
+ if tracker:
132
+ detail = f"{updated} updated" + (f", {len(failures)} failed" if failures else "")
133
+ tracker.add("chmod", "Set script permissions recursively")
134
+ (tracker.error if failures else tracker.complete)("chmod", detail)
135
+ else:
136
+ if updated:
137
+ console.print(f"[cyan]Updated execute permissions on {updated} script(s) recursively[/cyan]")
138
+ if failures:
139
+ console.print("[yellow]Some scripts could not be updated:[/yellow]")
140
+ for f in failures:
141
+ console.print(f" - {f}")
142
+
143
+
144
+ # Register the init command with necessary dependencies
145
+ register_init_command(
146
+ app,
147
+ console=console,
148
+ show_banner=show_banner,
149
+ activate_mission=activate_mission,
150
+ ensure_executable_scripts=ensure_executable_scripts,
151
+ )
152
+
153
+ register_commands(app)
154
+
155
+ def main():
156
+ import sys
157
+ # Ensure UTF-8 encoding on Windows to handle Unicode characters in git output
158
+ # Fixes: https://github.com/Priivacy-ai/spec-kitty/issues/66
159
+ if sys.platform == 'win32':
160
+ try:
161
+ sys.stdout.reconfigure(encoding='utf-8')
162
+ sys.stderr.reconfigure(encoding='utf-8')
163
+ except (AttributeError, OSError):
164
+ # Python < 3.7 or reconfigure not available
165
+ pass
166
+ app()
167
+
168
+ __all__ = ["main", "app", "__version__"]
169
+
170
+ if __name__ == "__main__":
171
+ main()