solokit 0.1.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 (323) hide show
  1. solokit/__init__.py +10 -0
  2. solokit/__version__.py +3 -0
  3. solokit/cli.py +374 -0
  4. solokit/core/__init__.py +1 -0
  5. solokit/core/cache.py +102 -0
  6. solokit/core/command_runner.py +278 -0
  7. solokit/core/config.py +453 -0
  8. solokit/core/config_validator.py +204 -0
  9. solokit/core/constants.py +291 -0
  10. solokit/core/error_formatter.py +279 -0
  11. solokit/core/error_handlers.py +346 -0
  12. solokit/core/exceptions.py +1567 -0
  13. solokit/core/file_ops.py +309 -0
  14. solokit/core/logging_config.py +166 -0
  15. solokit/core/output.py +99 -0
  16. solokit/core/performance.py +57 -0
  17. solokit/core/protocols.py +141 -0
  18. solokit/core/types.py +312 -0
  19. solokit/deployment/__init__.py +1 -0
  20. solokit/deployment/executor.py +411 -0
  21. solokit/git/__init__.py +1 -0
  22. solokit/git/integration.py +619 -0
  23. solokit/init/__init__.py +41 -0
  24. solokit/init/claude_commands_installer.py +87 -0
  25. solokit/init/dependency_installer.py +313 -0
  26. solokit/init/docs_structure.py +90 -0
  27. solokit/init/env_generator.py +160 -0
  28. solokit/init/environment_validator.py +334 -0
  29. solokit/init/git_hooks_installer.py +71 -0
  30. solokit/init/git_setup.py +188 -0
  31. solokit/init/gitignore_updater.py +195 -0
  32. solokit/init/initial_commit.py +145 -0
  33. solokit/init/initial_scans.py +109 -0
  34. solokit/init/orchestrator.py +246 -0
  35. solokit/init/readme_generator.py +207 -0
  36. solokit/init/session_structure.py +239 -0
  37. solokit/init/template_installer.py +424 -0
  38. solokit/learning/__init__.py +1 -0
  39. solokit/learning/archiver.py +115 -0
  40. solokit/learning/categorizer.py +126 -0
  41. solokit/learning/curator.py +428 -0
  42. solokit/learning/extractor.py +352 -0
  43. solokit/learning/reporter.py +351 -0
  44. solokit/learning/repository.py +254 -0
  45. solokit/learning/similarity.py +342 -0
  46. solokit/learning/validator.py +144 -0
  47. solokit/project/__init__.py +1 -0
  48. solokit/project/init.py +1162 -0
  49. solokit/project/stack.py +436 -0
  50. solokit/project/sync_plugin.py +438 -0
  51. solokit/project/tree.py +375 -0
  52. solokit/quality/__init__.py +1 -0
  53. solokit/quality/api_validator.py +424 -0
  54. solokit/quality/checkers/__init__.py +25 -0
  55. solokit/quality/checkers/base.py +114 -0
  56. solokit/quality/checkers/context7.py +221 -0
  57. solokit/quality/checkers/custom.py +162 -0
  58. solokit/quality/checkers/deployment.py +323 -0
  59. solokit/quality/checkers/documentation.py +179 -0
  60. solokit/quality/checkers/formatting.py +161 -0
  61. solokit/quality/checkers/integration.py +394 -0
  62. solokit/quality/checkers/linting.py +159 -0
  63. solokit/quality/checkers/security.py +261 -0
  64. solokit/quality/checkers/spec_completeness.py +127 -0
  65. solokit/quality/checkers/tests.py +184 -0
  66. solokit/quality/env_validator.py +306 -0
  67. solokit/quality/gates.py +655 -0
  68. solokit/quality/reporters/__init__.py +10 -0
  69. solokit/quality/reporters/base.py +25 -0
  70. solokit/quality/reporters/console.py +98 -0
  71. solokit/quality/reporters/json_reporter.py +34 -0
  72. solokit/quality/results.py +98 -0
  73. solokit/session/__init__.py +1 -0
  74. solokit/session/briefing/__init__.py +245 -0
  75. solokit/session/briefing/documentation_loader.py +53 -0
  76. solokit/session/briefing/formatter.py +476 -0
  77. solokit/session/briefing/git_context.py +282 -0
  78. solokit/session/briefing/learning_loader.py +212 -0
  79. solokit/session/briefing/milestone_builder.py +78 -0
  80. solokit/session/briefing/orchestrator.py +137 -0
  81. solokit/session/briefing/stack_detector.py +51 -0
  82. solokit/session/briefing/tree_generator.py +52 -0
  83. solokit/session/briefing/work_item_loader.py +209 -0
  84. solokit/session/briefing.py +353 -0
  85. solokit/session/complete.py +1188 -0
  86. solokit/session/status.py +246 -0
  87. solokit/session/validate.py +452 -0
  88. solokit/templates/.claude/commands/end.md +109 -0
  89. solokit/templates/.claude/commands/init.md +159 -0
  90. solokit/templates/.claude/commands/learn-curate.md +88 -0
  91. solokit/templates/.claude/commands/learn-search.md +62 -0
  92. solokit/templates/.claude/commands/learn-show.md +69 -0
  93. solokit/templates/.claude/commands/learn.md +136 -0
  94. solokit/templates/.claude/commands/start.md +114 -0
  95. solokit/templates/.claude/commands/status.md +22 -0
  96. solokit/templates/.claude/commands/validate.md +27 -0
  97. solokit/templates/.claude/commands/work-delete.md +119 -0
  98. solokit/templates/.claude/commands/work-graph.md +139 -0
  99. solokit/templates/.claude/commands/work-list.md +26 -0
  100. solokit/templates/.claude/commands/work-new.md +114 -0
  101. solokit/templates/.claude/commands/work-next.md +25 -0
  102. solokit/templates/.claude/commands/work-show.md +24 -0
  103. solokit/templates/.claude/commands/work-update.md +141 -0
  104. solokit/templates/CHANGELOG.md +17 -0
  105. solokit/templates/WORK_ITEM_TYPES.md +141 -0
  106. solokit/templates/__init__.py +1 -0
  107. solokit/templates/bug_spec.md +217 -0
  108. solokit/templates/config.schema.json +150 -0
  109. solokit/templates/dashboard_refine/base/.gitignore +36 -0
  110. solokit/templates/dashboard_refine/base/app/(dashboard)/layout.tsx +22 -0
  111. solokit/templates/dashboard_refine/base/app/(dashboard)/page.tsx +68 -0
  112. solokit/templates/dashboard_refine/base/app/(dashboard)/users/page.tsx +77 -0
  113. solokit/templates/dashboard_refine/base/app/globals.css +60 -0
  114. solokit/templates/dashboard_refine/base/app/layout.tsx +23 -0
  115. solokit/templates/dashboard_refine/base/app/page.tsx +9 -0
  116. solokit/templates/dashboard_refine/base/components/client-refine-wrapper.tsx +21 -0
  117. solokit/templates/dashboard_refine/base/components/layout/header.tsx +44 -0
  118. solokit/templates/dashboard_refine/base/components/layout/sidebar.tsx +82 -0
  119. solokit/templates/dashboard_refine/base/components/ui/button.tsx +53 -0
  120. solokit/templates/dashboard_refine/base/components/ui/card.tsx +78 -0
  121. solokit/templates/dashboard_refine/base/components/ui/table.tsx +116 -0
  122. solokit/templates/dashboard_refine/base/components.json +16 -0
  123. solokit/templates/dashboard_refine/base/lib/refine.tsx +65 -0
  124. solokit/templates/dashboard_refine/base/lib/utils.ts +13 -0
  125. solokit/templates/dashboard_refine/base/next.config.ts +10 -0
  126. solokit/templates/dashboard_refine/base/package.json.template +40 -0
  127. solokit/templates/dashboard_refine/base/postcss.config.mjs +8 -0
  128. solokit/templates/dashboard_refine/base/providers/refine-provider.tsx +26 -0
  129. solokit/templates/dashboard_refine/base/tailwind.config.ts +57 -0
  130. solokit/templates/dashboard_refine/base/tsconfig.json +27 -0
  131. solokit/templates/dashboard_refine/docker/Dockerfile +57 -0
  132. solokit/templates/dashboard_refine/docker/docker-compose.prod.yml +31 -0
  133. solokit/templates/dashboard_refine/docker/docker-compose.yml +21 -0
  134. solokit/templates/dashboard_refine/tier-1-essential/.eslintrc.json +7 -0
  135. solokit/templates/dashboard_refine/tier-1-essential/jest.config.ts +17 -0
  136. solokit/templates/dashboard_refine/tier-1-essential/jest.setup.ts +1 -0
  137. solokit/templates/dashboard_refine/tier-1-essential/package.json.tier1.template +57 -0
  138. solokit/templates/dashboard_refine/tier-1-essential/tests/setup.ts +26 -0
  139. solokit/templates/dashboard_refine/tier-1-essential/tests/unit/example.test.tsx +73 -0
  140. solokit/templates/dashboard_refine/tier-2-standard/package.json.tier2.template +62 -0
  141. solokit/templates/dashboard_refine/tier-3-comprehensive/eslint.config.mjs +22 -0
  142. solokit/templates/dashboard_refine/tier-3-comprehensive/package.json.tier3.template +79 -0
  143. solokit/templates/dashboard_refine/tier-3-comprehensive/playwright.config.ts +66 -0
  144. solokit/templates/dashboard_refine/tier-3-comprehensive/stryker.conf.json +38 -0
  145. solokit/templates/dashboard_refine/tier-3-comprehensive/tests/e2e/dashboard.spec.ts +88 -0
  146. solokit/templates/dashboard_refine/tier-3-comprehensive/tests/e2e/user-management.spec.ts +102 -0
  147. solokit/templates/dashboard_refine/tier-3-comprehensive/tests/integration/dashboard.test.tsx +90 -0
  148. solokit/templates/dashboard_refine/tier-3-comprehensive/type-coverage.json +16 -0
  149. solokit/templates/dashboard_refine/tier-4-production/instrumentation.ts +9 -0
  150. solokit/templates/dashboard_refine/tier-4-production/k6/dashboard-load-test.js +70 -0
  151. solokit/templates/dashboard_refine/tier-4-production/next.config.ts +46 -0
  152. solokit/templates/dashboard_refine/tier-4-production/package.json.tier4.template +89 -0
  153. solokit/templates/dashboard_refine/tier-4-production/sentry.client.config.ts +26 -0
  154. solokit/templates/dashboard_refine/tier-4-production/sentry.edge.config.ts +11 -0
  155. solokit/templates/dashboard_refine/tier-4-production/sentry.server.config.ts +11 -0
  156. solokit/templates/deployment_spec.md +500 -0
  157. solokit/templates/feature_spec.md +248 -0
  158. solokit/templates/fullstack_nextjs/base/.gitignore +36 -0
  159. solokit/templates/fullstack_nextjs/base/app/api/example/route.ts +65 -0
  160. solokit/templates/fullstack_nextjs/base/app/globals.css +27 -0
  161. solokit/templates/fullstack_nextjs/base/app/layout.tsx +20 -0
  162. solokit/templates/fullstack_nextjs/base/app/page.tsx +32 -0
  163. solokit/templates/fullstack_nextjs/base/components/example-component.tsx +20 -0
  164. solokit/templates/fullstack_nextjs/base/lib/prisma.ts +17 -0
  165. solokit/templates/fullstack_nextjs/base/lib/utils.ts +13 -0
  166. solokit/templates/fullstack_nextjs/base/lib/validations.ts +20 -0
  167. solokit/templates/fullstack_nextjs/base/next.config.ts +7 -0
  168. solokit/templates/fullstack_nextjs/base/package.json.template +32 -0
  169. solokit/templates/fullstack_nextjs/base/postcss.config.mjs +8 -0
  170. solokit/templates/fullstack_nextjs/base/prisma/schema.prisma +21 -0
  171. solokit/templates/fullstack_nextjs/base/tailwind.config.ts +19 -0
  172. solokit/templates/fullstack_nextjs/base/tsconfig.json +27 -0
  173. solokit/templates/fullstack_nextjs/docker/Dockerfile +60 -0
  174. solokit/templates/fullstack_nextjs/docker/docker-compose.prod.yml +57 -0
  175. solokit/templates/fullstack_nextjs/docker/docker-compose.yml +47 -0
  176. solokit/templates/fullstack_nextjs/tier-1-essential/.eslintrc.json +7 -0
  177. solokit/templates/fullstack_nextjs/tier-1-essential/jest.config.ts +17 -0
  178. solokit/templates/fullstack_nextjs/tier-1-essential/jest.setup.ts +1 -0
  179. solokit/templates/fullstack_nextjs/tier-1-essential/package.json.tier1.template +48 -0
  180. solokit/templates/fullstack_nextjs/tier-1-essential/tests/api/example.test.ts +88 -0
  181. solokit/templates/fullstack_nextjs/tier-1-essential/tests/setup.ts +22 -0
  182. solokit/templates/fullstack_nextjs/tier-1-essential/tests/unit/example.test.tsx +22 -0
  183. solokit/templates/fullstack_nextjs/tier-2-standard/package.json.tier2.template +52 -0
  184. solokit/templates/fullstack_nextjs/tier-3-comprehensive/eslint.config.mjs +39 -0
  185. solokit/templates/fullstack_nextjs/tier-3-comprehensive/package.json.tier3.template +68 -0
  186. solokit/templates/fullstack_nextjs/tier-3-comprehensive/playwright.config.ts +66 -0
  187. solokit/templates/fullstack_nextjs/tier-3-comprehensive/stryker.conf.json +33 -0
  188. solokit/templates/fullstack_nextjs/tier-3-comprehensive/tests/e2e/flow.spec.ts +59 -0
  189. solokit/templates/fullstack_nextjs/tier-3-comprehensive/tests/integration/api.test.ts +165 -0
  190. solokit/templates/fullstack_nextjs/tier-3-comprehensive/type-coverage.json +12 -0
  191. solokit/templates/fullstack_nextjs/tier-4-production/instrumentation.ts +9 -0
  192. solokit/templates/fullstack_nextjs/tier-4-production/k6/load-test.js +45 -0
  193. solokit/templates/fullstack_nextjs/tier-4-production/next.config.ts +46 -0
  194. solokit/templates/fullstack_nextjs/tier-4-production/package.json.tier4.template +77 -0
  195. solokit/templates/fullstack_nextjs/tier-4-production/sentry.client.config.ts +26 -0
  196. solokit/templates/fullstack_nextjs/tier-4-production/sentry.edge.config.ts +11 -0
  197. solokit/templates/fullstack_nextjs/tier-4-production/sentry.server.config.ts +11 -0
  198. solokit/templates/git-hooks/prepare-commit-msg +24 -0
  199. solokit/templates/integration_test_spec.md +363 -0
  200. solokit/templates/learnings.json +15 -0
  201. solokit/templates/ml_ai_fastapi/base/.gitignore +104 -0
  202. solokit/templates/ml_ai_fastapi/base/alembic/env.py +96 -0
  203. solokit/templates/ml_ai_fastapi/base/alembic.ini +114 -0
  204. solokit/templates/ml_ai_fastapi/base/pyproject.toml.template +91 -0
  205. solokit/templates/ml_ai_fastapi/base/requirements.txt.template +28 -0
  206. solokit/templates/ml_ai_fastapi/base/src/__init__.py +5 -0
  207. solokit/templates/ml_ai_fastapi/base/src/api/__init__.py +3 -0
  208. solokit/templates/ml_ai_fastapi/base/src/api/dependencies.py +20 -0
  209. solokit/templates/ml_ai_fastapi/base/src/api/routes/__init__.py +3 -0
  210. solokit/templates/ml_ai_fastapi/base/src/api/routes/example.py +134 -0
  211. solokit/templates/ml_ai_fastapi/base/src/api/routes/health.py +66 -0
  212. solokit/templates/ml_ai_fastapi/base/src/core/__init__.py +3 -0
  213. solokit/templates/ml_ai_fastapi/base/src/core/config.py +64 -0
  214. solokit/templates/ml_ai_fastapi/base/src/core/database.py +50 -0
  215. solokit/templates/ml_ai_fastapi/base/src/main.py +64 -0
  216. solokit/templates/ml_ai_fastapi/base/src/models/__init__.py +7 -0
  217. solokit/templates/ml_ai_fastapi/base/src/models/example.py +61 -0
  218. solokit/templates/ml_ai_fastapi/base/src/services/__init__.py +3 -0
  219. solokit/templates/ml_ai_fastapi/base/src/services/example.py +115 -0
  220. solokit/templates/ml_ai_fastapi/docker/Dockerfile +59 -0
  221. solokit/templates/ml_ai_fastapi/docker/docker-compose.prod.yml +112 -0
  222. solokit/templates/ml_ai_fastapi/docker/docker-compose.yml +77 -0
  223. solokit/templates/ml_ai_fastapi/tier-1-essential/pyproject.toml.tier1.template +112 -0
  224. solokit/templates/ml_ai_fastapi/tier-1-essential/pyrightconfig.json +41 -0
  225. solokit/templates/ml_ai_fastapi/tier-1-essential/pytest.ini +69 -0
  226. solokit/templates/ml_ai_fastapi/tier-1-essential/requirements-dev.txt +17 -0
  227. solokit/templates/ml_ai_fastapi/tier-1-essential/ruff.toml +81 -0
  228. solokit/templates/ml_ai_fastapi/tier-1-essential/tests/__init__.py +3 -0
  229. solokit/templates/ml_ai_fastapi/tier-1-essential/tests/conftest.py +72 -0
  230. solokit/templates/ml_ai_fastapi/tier-1-essential/tests/test_main.py +49 -0
  231. solokit/templates/ml_ai_fastapi/tier-1-essential/tests/unit/__init__.py +3 -0
  232. solokit/templates/ml_ai_fastapi/tier-1-essential/tests/unit/test_example.py +113 -0
  233. solokit/templates/ml_ai_fastapi/tier-2-standard/pyproject.toml.tier2.template +130 -0
  234. solokit/templates/ml_ai_fastapi/tier-3-comprehensive/locustfile.py +99 -0
  235. solokit/templates/ml_ai_fastapi/tier-3-comprehensive/mutmut_config.py +53 -0
  236. solokit/templates/ml_ai_fastapi/tier-3-comprehensive/pyproject.toml.tier3.template +150 -0
  237. solokit/templates/ml_ai_fastapi/tier-3-comprehensive/tests/integration/__init__.py +3 -0
  238. solokit/templates/ml_ai_fastapi/tier-3-comprehensive/tests/integration/conftest.py +74 -0
  239. solokit/templates/ml_ai_fastapi/tier-3-comprehensive/tests/integration/test_api.py +131 -0
  240. solokit/templates/ml_ai_fastapi/tier-4-production/pyproject.toml.tier4.template +162 -0
  241. solokit/templates/ml_ai_fastapi/tier-4-production/requirements-prod.txt +25 -0
  242. solokit/templates/ml_ai_fastapi/tier-4-production/src/api/routes/metrics.py +19 -0
  243. solokit/templates/ml_ai_fastapi/tier-4-production/src/core/logging.py +74 -0
  244. solokit/templates/ml_ai_fastapi/tier-4-production/src/core/monitoring.py +68 -0
  245. solokit/templates/ml_ai_fastapi/tier-4-production/src/core/sentry.py +66 -0
  246. solokit/templates/ml_ai_fastapi/tier-4-production/src/middleware/__init__.py +3 -0
  247. solokit/templates/ml_ai_fastapi/tier-4-production/src/middleware/logging.py +79 -0
  248. solokit/templates/ml_ai_fastapi/tier-4-production/src/middleware/tracing.py +60 -0
  249. solokit/templates/refactor_spec.md +287 -0
  250. solokit/templates/saas_t3/base/.gitignore +36 -0
  251. solokit/templates/saas_t3/base/app/api/trpc/[trpc]/route.ts +33 -0
  252. solokit/templates/saas_t3/base/app/globals.css +27 -0
  253. solokit/templates/saas_t3/base/app/layout.tsx +23 -0
  254. solokit/templates/saas_t3/base/app/page.tsx +31 -0
  255. solokit/templates/saas_t3/base/lib/api.tsx +77 -0
  256. solokit/templates/saas_t3/base/lib/utils.ts +13 -0
  257. solokit/templates/saas_t3/base/next.config.ts +7 -0
  258. solokit/templates/saas_t3/base/package.json.template +38 -0
  259. solokit/templates/saas_t3/base/postcss.config.mjs +8 -0
  260. solokit/templates/saas_t3/base/prisma/schema.prisma +20 -0
  261. solokit/templates/saas_t3/base/server/api/root.ts +19 -0
  262. solokit/templates/saas_t3/base/server/api/routers/example.ts +28 -0
  263. solokit/templates/saas_t3/base/server/api/trpc.ts +52 -0
  264. solokit/templates/saas_t3/base/server/db.ts +17 -0
  265. solokit/templates/saas_t3/base/tailwind.config.ts +19 -0
  266. solokit/templates/saas_t3/base/tsconfig.json +27 -0
  267. solokit/templates/saas_t3/docker/Dockerfile +60 -0
  268. solokit/templates/saas_t3/docker/docker-compose.prod.yml +59 -0
  269. solokit/templates/saas_t3/docker/docker-compose.yml +49 -0
  270. solokit/templates/saas_t3/tier-1-essential/.eslintrc.json +7 -0
  271. solokit/templates/saas_t3/tier-1-essential/jest.config.ts +17 -0
  272. solokit/templates/saas_t3/tier-1-essential/jest.setup.ts +1 -0
  273. solokit/templates/saas_t3/tier-1-essential/package.json.tier1.template +54 -0
  274. solokit/templates/saas_t3/tier-1-essential/tests/setup.ts +22 -0
  275. solokit/templates/saas_t3/tier-1-essential/tests/unit/example.test.tsx +24 -0
  276. solokit/templates/saas_t3/tier-2-standard/package.json.tier2.template +58 -0
  277. solokit/templates/saas_t3/tier-3-comprehensive/eslint.config.mjs +39 -0
  278. solokit/templates/saas_t3/tier-3-comprehensive/package.json.tier3.template +74 -0
  279. solokit/templates/saas_t3/tier-3-comprehensive/playwright.config.ts +66 -0
  280. solokit/templates/saas_t3/tier-3-comprehensive/stryker.conf.json +34 -0
  281. solokit/templates/saas_t3/tier-3-comprehensive/tests/e2e/home.spec.ts +41 -0
  282. solokit/templates/saas_t3/tier-3-comprehensive/tests/integration/api.test.ts +44 -0
  283. solokit/templates/saas_t3/tier-3-comprehensive/type-coverage.json +12 -0
  284. solokit/templates/saas_t3/tier-4-production/instrumentation.ts +9 -0
  285. solokit/templates/saas_t3/tier-4-production/k6/load-test.js +51 -0
  286. solokit/templates/saas_t3/tier-4-production/next.config.ts +46 -0
  287. solokit/templates/saas_t3/tier-4-production/package.json.tier4.template +83 -0
  288. solokit/templates/saas_t3/tier-4-production/sentry.client.config.ts +26 -0
  289. solokit/templates/saas_t3/tier-4-production/sentry.edge.config.ts +11 -0
  290. solokit/templates/saas_t3/tier-4-production/sentry.server.config.ts +11 -0
  291. solokit/templates/saas_t3/tier-4-production/vercel.json +37 -0
  292. solokit/templates/security_spec.md +287 -0
  293. solokit/templates/stack-versions.yaml +617 -0
  294. solokit/templates/status_update.json +6 -0
  295. solokit/templates/template-registry.json +257 -0
  296. solokit/templates/work_items.json +11 -0
  297. solokit/testing/__init__.py +1 -0
  298. solokit/testing/integration_runner.py +550 -0
  299. solokit/testing/performance.py +637 -0
  300. solokit/visualization/__init__.py +1 -0
  301. solokit/visualization/dependency_graph.py +788 -0
  302. solokit/work_items/__init__.py +1 -0
  303. solokit/work_items/creator.py +217 -0
  304. solokit/work_items/delete.py +264 -0
  305. solokit/work_items/get_dependencies.py +185 -0
  306. solokit/work_items/get_dependents.py +113 -0
  307. solokit/work_items/get_metadata.py +121 -0
  308. solokit/work_items/get_next_recommendations.py +133 -0
  309. solokit/work_items/manager.py +235 -0
  310. solokit/work_items/milestones.py +137 -0
  311. solokit/work_items/query.py +376 -0
  312. solokit/work_items/repository.py +267 -0
  313. solokit/work_items/scheduler.py +184 -0
  314. solokit/work_items/spec_parser.py +838 -0
  315. solokit/work_items/spec_validator.py +493 -0
  316. solokit/work_items/updater.py +157 -0
  317. solokit/work_items/validator.py +205 -0
  318. solokit-0.1.1.dist-info/METADATA +640 -0
  319. solokit-0.1.1.dist-info/RECORD +323 -0
  320. solokit-0.1.1.dist-info/WHEEL +5 -0
  321. solokit-0.1.1.dist-info/entry_points.txt +2 -0
  322. solokit-0.1.1.dist-info/licenses/LICENSE +21 -0
  323. solokit-0.1.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,141 @@
1
+ ---
2
+ description: Update work item fields
3
+ argument-hint: <work_item_id> <field>
4
+ ---
5
+
6
+ # Work Item Update
7
+
8
+ Update a specific field of an existing work item using interactive UI.
9
+
10
+ ## Usage
11
+
12
+ ```
13
+ /work-update <work_item_id> <field>
14
+ ```
15
+
16
+ **Fields:** priority, milestone, add-dependency, remove-dependency
17
+
18
+ **Note:** Status changes are NOT allowed via this command. Status is managed automatically by session workflow (/start sets to in_progress, /end sets to completed).
19
+
20
+ **Examples:**
21
+ ```
22
+ /work-update bug_timeout priority
23
+ /work-update feature_search milestone
24
+ /work-update integration_test_api add-dependency
25
+ /work-update feature_dashboard remove-dependency
26
+ ```
27
+
28
+ ## Instructions
29
+
30
+ 1. **Parse arguments** from the command:
31
+ - First argument: `work_item_id` (required)
32
+ - Second argument: `field` (required)
33
+
34
+ **If either is missing:**
35
+ - Show error: "Usage: /work-update <work_item_id> <field>"
36
+ - Show valid fields: priority, milestone, add-dependency, remove-dependency
37
+ - Exit
38
+
39
+ **If field = "status":**
40
+ - Show error: "Status changes are not allowed via /work-update. Status is managed by session workflow (/start, /end)."
41
+ - Exit
42
+
43
+ 2. **Load and display current work item details** (optimized - fast metadata-only lookup):
44
+ - Use `python -m solokit.work_items.get_metadata <work_item_id>` for fast metadata retrieval
45
+ - This script reads ONLY the work item metadata from JSON, not the full spec file (much faster!)
46
+ - If work item doesn't exist: Show error and suggest using `/work-list` to see available items
47
+ - Display current values concisely:
48
+ ```
49
+ Current: {work_item_id}
50
+ - Type: {type}
51
+ - Status: {status}
52
+ - Priority: {priority}
53
+ - Milestone: {milestone or "(none)"}
54
+ - Dependencies: {dependencies or "(none)"}
55
+ ```
56
+
57
+ 3. **Ask for the new value** based on field specified (use `AskUserQuestion`):
58
+
59
+ **If field = "priority":**
60
+ - Question: "Select new priority for {work_item_id}:"
61
+ - Header: "Priority"
62
+ - Multi-select: false
63
+ - Options:
64
+ - Label: "critical", Description: "Blocking issue or urgent requirement"
65
+ - Label: "high", Description: "Important work to be done soon"
66
+ - Label: "medium", Description: "Normal priority work"
67
+ - Label: "low", Description: "Nice to have, can be deferred"
68
+
69
+ **If field = "milestone":**
70
+ - Question: "Enter milestone name for {work_item_id}:"
71
+ - Header: "Milestone"
72
+ - Multi-select: false
73
+ - Options (provide examples, user selects "Type something"):
74
+ - Label: "Sprint 1", Description: "Example milestone"
75
+ - Label: "Q1 2025", Description: "Example milestone"
76
+
77
+ **If field = "add-dependency":**
78
+ - Query `.session/tracking/work_items.json` for available work items
79
+ - Filter to show only: not_started, in_progress, or blocked items (exclude completed and self)
80
+ - **Smart filtering**: Filter by relevance based on work item's title (e.g., if updating "feature_auth_ui", show auth-related items)
81
+ - Question: "Select work items to add as dependencies for {work_item_id}: (Select multiple)"
82
+ - Header: "Dependencies"
83
+ - **Multi-select: true** (allows selecting multiple dependencies at once)
84
+ - Options: Show up to 4 most relevant work items (prioritize: not_started > in_progress > blocked):
85
+ - Label: "{work_item_id}", Description: "[{priority}] [{type}] {title} ({status})"
86
+ - Note: User can select "Type something" to manually enter comma-separated IDs
87
+
88
+ **If field = "remove-dependency":**
89
+ - Use `python -m solokit.work_items.get_metadata <work_item_id> --with-deps` to get dependency details
90
+ - This returns dependency IDs WITH their type and title in ONE efficient call!
91
+ - If no dependencies: Show error "Work item has no dependencies to remove"
92
+ - Question: "Select dependencies to remove from {work_item_id}: (Select multiple)"
93
+ - Header: "Remove"
94
+ - **Multi-select: true** (allows removing multiple dependencies at once)
95
+ - Options: Show all current dependencies with details:
96
+ - Label: "{dependency_id}", Description: "[{type}] {title} ({status})"
97
+
98
+ 4. **Execute the update**:
99
+
100
+ **For all fields:**
101
+ ```bash
102
+ sk work-update <work_item_id> --<field> <value>
103
+ ```
104
+
105
+ **For dependencies** (if multiple selected, join with commas):
106
+ ```bash
107
+ sk work-update <work_item_id> --add-dependency "dep1,dep2,dep3"
108
+ sk work-update <work_item_id> --remove-dependency "dep1,dep2"
109
+ ```
110
+
111
+ Examples:
112
+ ```bash
113
+ sk work-update bug_timeout --priority critical
114
+ sk work-update feature_search --milestone "Sprint 2"
115
+ sk work-update integration_test_api --add-dependency feature_api_client
116
+ sk work-update integration_test_api --add-dependency "feature_api,feature_db,bug_auth"
117
+ sk work-update feature_dashboard --remove-dependency "bug_css_layout,feature_old"
118
+ ```
119
+
120
+ 5. **Show the output** to the user, which includes:
121
+ - Confirmation of the update
122
+ - Old value → New value
123
+ - Update timestamp
124
+
125
+ ## Error Handling
126
+
127
+ If the command fails:
128
+ - **Missing arguments**: Show usage and valid fields
129
+ - **Invalid work_item_id**: Show error and list available work items
130
+ - **Status field specified**: Show error explaining status is managed by session workflow
131
+ - **Invalid field**: Show error and list valid fields (priority, milestone, add-dependency, remove-dependency)
132
+ - **Invalid field value**: Re-prompt with valid options
133
+ - **Dependency doesn't exist**: Re-prompt with valid dependencies
134
+ - **No dependencies to remove**: Show error with message
135
+
136
+ ## Notes
137
+
138
+ - Updates are automatically tracked in the work item's update_history
139
+ - Each update records timestamp and the changes made
140
+ - Status changes to "completed" trigger completion metadata
141
+ - The field argument uses hyphens (add-dependency, remove-dependency) matching the CLI flags
@@ -0,0 +1,17 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+ - Initial project setup with Session-Driven Development
12
+
13
+ ### Changed
14
+
15
+ ### Fixed
16
+
17
+ ### Removed
@@ -0,0 +1,141 @@
1
+ # Work Item Types
2
+
3
+ This document defines the work item types supported by the Session-Driven Development plugin.
4
+
5
+ ## Standard Work Item Types
6
+
7
+ ### feature
8
+ Standard feature development work items.
9
+ - **Template:** Feature specification
10
+ - **Typical sessions:** 2-4
11
+ - **Validation:** Tests pass, linting pass, documentation updated
12
+
13
+ ### bug
14
+ Bug fix work items.
15
+ - **Template:** Bug report
16
+ - **Typical sessions:** 1-2
17
+ - **Validation:** Tests pass, regression tests added, root cause documented
18
+
19
+ ### refactor
20
+ Code refactoring work items.
21
+ - **Template:** Refactor plan
22
+ - **Typical sessions:** 1-3
23
+ - **Validation:** Tests pass, no functionality changes, code quality improved
24
+
25
+ ### security
26
+ Security-focused work items for vulnerabilities, hardening, and compliance.
27
+ - **Template:** `templates/security_task.md`
28
+ - **Typical sessions:** 1-2
29
+ - **Priority:** Critical (by default)
30
+ - **Validation:**
31
+ - Security scan required
32
+ - Penetration testing (for critical issues)
33
+ - Security review completed
34
+ - No new vulnerabilities introduced
35
+
36
+ **Usage:**
37
+ ```json
38
+ {
39
+ "type": "security",
40
+ "title": "Fix SQL Injection in User Login",
41
+ "priority": "critical",
42
+ "validation_criteria": {
43
+ "security_scan_required": true,
44
+ "penetration_test": true,
45
+ "security_review": true
46
+ }
47
+ }
48
+ ```
49
+
50
+ ## Integration & Deployment Types (Phase 1.8)
51
+
52
+ ### integration_test
53
+ Integration testing work items that validate multiple components working together.
54
+ - **Template:** `templates/integration_test_spec.md`
55
+ - **Typical sessions:** 1-2
56
+ - **Validation:**
57
+ - Integration tests pass
58
+ - End-to-end tests pass
59
+ - Performance benchmarks met
60
+ - API contracts validated
61
+ - **Dependencies:** Required (must specify what components are being integrated)
62
+
63
+ **Usage:**
64
+ ```json
65
+ {
66
+ "type": "integration_test",
67
+ "title": "Test OAuth + User Profile Integration",
68
+ "dependencies": ["feature_oauth", "feature_profile"],
69
+ "validation_criteria": {
70
+ "integration_tests_pass": true,
71
+ "e2e_tests_pass": true,
72
+ "performance_benchmarks_met": true,
73
+ "api_contracts_validated": true
74
+ }
75
+ }
76
+ ```
77
+
78
+ ### deployment
79
+ Deployment work items for releasing code to environments.
80
+ - **Template:** `templates/deployment_spec.md`
81
+ - **Typical sessions:** 1
82
+ - **Validation:**
83
+ - Deployment successful
84
+ - Smoke tests pass
85
+ - Monitoring operational
86
+ - Rollback tested
87
+ - Documentation updated
88
+ - **Dependencies:** Required (must specify what features/fixes are being deployed)
89
+
90
+ **Usage:**
91
+ ```json
92
+ {
93
+ "type": "deployment",
94
+ "title": "Deploy v1.2.0 to Production",
95
+ "dependencies": ["feature_oauth", "feature_profile", "integration_test_auth"],
96
+ "validation_criteria": {
97
+ "deployment_successful": true,
98
+ "smoke_tests_pass": true,
99
+ "monitoring_operational": true,
100
+ "rollback_tested": true,
101
+ "documentation_updated": true
102
+ }
103
+ }
104
+ ```
105
+
106
+ ## Validation Rules
107
+
108
+ ### All Types
109
+ - Must have a title
110
+ - Must have a type from the list above
111
+ - Must have a status (not_started, in_progress, completed)
112
+ - Must have a priority (critical, high, medium, low)
113
+
114
+ ### security
115
+ - **Priority should be critical or high** - Security issues are high priority by default
116
+ - **Security validation required** - Must pass security scans and reviews
117
+ - **May require external review** - Security team or penetration testing
118
+
119
+ ### integration_test and deployment
120
+ - **Must have dependencies** - Cannot be created without specifying dependencies
121
+ - **Phase-specific validation** - Additional validation criteria enforced
122
+ - **Typical workflow:**
123
+ 1. Complete all dependent work items
124
+ 2. Create integration_test to validate integration
125
+ 3. Complete integration tests
126
+ 4. Create deployment to deploy to environment
127
+ 5. Complete deployment with smoke tests
128
+
129
+ ## Work Item Lifecycle
130
+
131
+ ```
132
+ not_started → in_progress → completed
133
+ ↓ ↓
134
+ blocked blocked
135
+ ```
136
+
137
+ **Status definitions:**
138
+ - `not_started` - Ready to begin, dependencies satisfied
139
+ - `in_progress` - Currently being worked on
140
+ - `blocked` - Waiting on dependency or external factor
141
+ - `completed` - Work finished and validated
@@ -0,0 +1 @@
1
+ """Templates for work item specs, configuration, and test setup."""
@@ -0,0 +1,217 @@
1
+ # Bug: [Bug Title]
2
+
3
+ <!--
4
+ TEMPLATE INSTRUCTIONS:
5
+ - Replace [Bug Title] with a concise description of the bug
6
+ - Fill out all sections with specific details
7
+ - Include code snippets, error messages, and screenshots where relevant
8
+ - Document your investigation process in Root Cause Analysis
9
+ - Remove these instructions before finalizing the spec
10
+ -->
11
+
12
+ ## Description
13
+
14
+ <!-- Clear, concise description of the bug and its impact on users/system -->
15
+
16
+ Clear description of the bug and its impact.
17
+
18
+ **Example:**
19
+ > User authentication fails intermittently when logging in from mobile devices. Users see a "Session expired" error even though they just created a new session. This affects approximately 15% of mobile login attempts based on error logs.
20
+
21
+ ## Steps to Reproduce
22
+
23
+ <!-- Detailed steps that reliably reproduce the bug -->
24
+
25
+ 1. Step 1
26
+ 2. Step 2
27
+ 3. Step 3
28
+
29
+ **Example:**
30
+ 1. Open the app on a mobile device (iOS or Android)
31
+ 2. Navigate to the login screen
32
+ 3. Enter valid credentials (test@example.com / Test123!)
33
+ 4. Tap "Login"
34
+ 5. Observe the error message: "Session expired. Please try again."
35
+ 6. Repeat steps 3-4 several times
36
+ 7. Bug occurs roughly 1 in 7 attempts
37
+
38
+ **Environment:**
39
+ - Device: iPhone 14 Pro, Samsung Galaxy S23
40
+ - OS Version: iOS 17.0, Android 13
41
+ - App Version: 2.3.1
42
+ - Network: WiFi and 5G tested
43
+
44
+ ## Expected Behavior
45
+
46
+ <!-- What should happen when the user performs the steps above -->
47
+
48
+ **Example:**
49
+ > User should be successfully authenticated and redirected to the dashboard. A valid session cookie should be set and remain valid for 7 days or until the user logs out.
50
+
51
+ ## Actual Behavior
52
+
53
+ <!-- What actually happens, including error messages, logs, screenshots -->
54
+
55
+ **Example:**
56
+ > User sees an error toast: "Session expired. Please try again."
57
+
58
+ **Error Log:**
59
+ ```
60
+ [ERROR] 2025-10-18 14:23:45 - SessionManager: Session validation failed
61
+ sessionId: 7f8a9b2c-4d3e-4a1b-9c8d-1e2f3a4b5c6d
62
+ reason: Session not found in cache
63
+ userId: null
64
+ timestamp: 1697640225000
65
+ ```
66
+
67
+ **Screenshot:** [Attach screenshot of error]
68
+
69
+ ## Impact
70
+
71
+ <!-- Severity, affected users, business impact, and any available workarounds -->
72
+
73
+ - **Severity:** High (affects core functionality but workaround exists)
74
+ - **Affected Users:** ~15% of mobile users on iOS and Android
75
+ - **Affected Versions:** 2.3.0 and 2.3.1
76
+ - **Business Impact:** Reduced mobile conversion rate by ~8% over past week
77
+ - **Workaround:** Users can retry login 2-3 times until it succeeds
78
+
79
+ ## Root Cause Analysis
80
+
81
+ ### Investigation
82
+
83
+ <!-- Document what you did to investigate: logs reviewed, code analyzed, experiments run -->
84
+
85
+ **Example:**
86
+ 1. Reviewed application logs for past 7 days (10,427 login attempts, 1,563 failures)
87
+ 2. Identified pattern: failures only occur on mobile devices
88
+ 3. Checked Redis cache metrics: intermittent connection timeouts to session store
89
+ 4. Analyzed session creation code in `auth/SessionManager.ts`
90
+ 5. Discovered race condition in session creation for mobile devices
91
+ 6. Reproduced locally with added latency to Redis connection
92
+
93
+ **Key Findings:**
94
+ - Mobile devices have ~200ms additional latency compared to web
95
+ - Session write to Redis times out after 100ms (too aggressive)
96
+ - When timeout occurs, client receives session ID but server hasn't finished writing
97
+ - Subsequent validation fails because session doesn't exist in Redis yet
98
+
99
+ ### Root Cause
100
+
101
+ <!-- The underlying technical cause of the bug -->
102
+
103
+ **Example:**
104
+ > Race condition in `SessionManager.createSession()` method. The method returns the session ID to the client before confirming the session was successfully written to Redis. On mobile devices with higher latency, the Redis write often exceeds the 100ms timeout, but the client already received a session ID and attempts to use it immediately.
105
+
106
+ **Code:**
107
+ ```typescript
108
+ // Current buggy code in auth/SessionManager.ts:47-52
109
+ async createSession(userId: string): Promise<string> {
110
+ const sessionId = generateSessionId();
111
+ // Fire-and-forget write (BUG: doesn't await completion)
112
+ this.redis.set(`session:${sessionId}`, userData, 'EX', 604800);
113
+ return sessionId; // Returns before write completes!
114
+ }
115
+ ```
116
+
117
+ ### Why It Happened
118
+
119
+ <!-- Why was this bug introduced? What can we learn? -->
120
+
121
+ **Example:**
122
+ > The original implementation used fire-and-forget for Redis writes to optimize for perceived latency (avoiding await). This worked fine in the local development environment but failed to account for higher latency in production, especially on mobile networks.
123
+
124
+ **Contributing Factors:**
125
+ - Insufficient integration testing with realistic network latency
126
+ - No monitoring/alerting on Redis write timeouts
127
+ - Timeout value (100ms) too aggressive for production conditions
128
+ - Lack of error handling for failed cache writes
129
+
130
+ ## Fix Approach
131
+
132
+ <!-- How will this bug be fixed? Include code changes if relevant -->
133
+
134
+ **Example:**
135
+ > Await Redis write completion before returning session ID. Increase Redis timeout to 500ms. Add retry logic for failed writes. Add monitoring for session creation failures.
136
+
137
+ **Code Changes:**
138
+ ```typescript
139
+ // Fixed code in auth/SessionManager.ts:47-58
140
+ async createSession(userId: string): Promise<string> {
141
+ const sessionId = generateSessionId();
142
+ const userData = { userId, createdAt: Date.now() };
143
+
144
+ try {
145
+ // WAIT for Redis write to complete
146
+ await this.redis.set(
147
+ `session:${sessionId}`,
148
+ JSON.stringify(userData),
149
+ 'EX',
150
+ 604800,
151
+ { timeout: 500 } // Increased timeout
152
+ );
153
+ this.metrics.recordSessionCreated(userId);
154
+ return sessionId;
155
+ } catch (error) {
156
+ this.metrics.recordSessionCreationFailed(userId, error);
157
+ throw new SessionCreationError('Failed to create session', error);
158
+ }
159
+ }
160
+ ```
161
+
162
+ **Files Modified:**
163
+ - `src/auth/SessionManager.ts` - Fix race condition
164
+ - `src/config/redis.ts` - Increase default timeout to 500ms
165
+ - `src/monitoring/metrics.ts` - Add session creation metrics
166
+
167
+ ## Acceptance Criteria
168
+
169
+ <!-- Define specific, measurable criteria for considering this bug fixed -->
170
+ <!-- Minimum 3 items required for spec validation -->
171
+
172
+ - [ ] Root cause is identified and addressed (not just symptoms)
173
+ - [ ] All reproduction steps no longer trigger the bug
174
+ - [ ] Comprehensive tests added to prevent regression
175
+ - [ ] No new bugs or regressions introduced by the fix
176
+ - [ ] Edge cases identified in investigation are handled
177
+ - [ ] All tests pass (unit, integration, and manual)
178
+ - [ ] Documentation updated if behavior changed
179
+
180
+ **Example criteria for a specific bug:**
181
+ - [ ] Mobile login success rate improves to >99% (currently ~85%)
182
+ - [ ] Session creation completes within 500ms on high-latency networks
183
+ - [ ] Redis write failures are properly handled and logged
184
+ - [ ] Monitoring alerts configured for session creation failures
185
+
186
+ ## Testing Strategy
187
+
188
+ <!-- Comprehensive testing to verify the fix and prevent regression -->
189
+
190
+ ### Regression Tests
191
+ - [ ] Add unit test for session creation with simulated Redis latency
192
+ - [ ] Add integration test for mobile login flow with 200ms+ latency
193
+ - [ ] Add test to verify session immediately usable after creation
194
+ - [ ] Add test for Redis write failure handling
195
+
196
+ ### Manual Verification
197
+ - [ ] Test on iPhone 14 Pro with test account
198
+ - [ ] Test on Samsung Galaxy S23 with test account
199
+ - [ ] Test on simulated slow network (3G, high latency)
200
+ - [ ] Verify error monitoring captures failures
201
+ - [ ] Confirm login success rate improves to >99%
202
+
203
+ ### Edge Cases
204
+ - [ ] Test with Redis temporarily unavailable
205
+ - [ ] Test with very high latency (1000ms+)
206
+ - [ ] Test concurrent login attempts from same device
207
+ - [ ] Test session creation during Redis failover
208
+
209
+ ## Prevention
210
+
211
+ <!-- How can we prevent similar bugs in the future? -->
212
+
213
+ **Example:**
214
+ - Add integration tests with simulated network latency (100ms, 500ms, 1000ms)
215
+ - Set up monitoring/alerting for Redis operation timeouts
216
+ - Code review checklist: verify all async operations are properly awaited
217
+ - Performance testing requirements for mobile devices
@@ -0,0 +1,150 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://github.com/ankushdixit/solokit/schemas/config.json",
4
+ "title": "Solokit Configuration",
5
+ "description": "Configuration for Session-Driven Development workflows",
6
+ "type": "object",
7
+ "properties": {
8
+ "quality_gates": {
9
+ "type": "object",
10
+ "description": "Quality gate configuration",
11
+ "properties": {
12
+ "test": {
13
+ "type": "object",
14
+ "properties": {
15
+ "required": {"type": "boolean"},
16
+ "command": {"type": "string"},
17
+ "timeout": {"type": "integer", "minimum": 1}
18
+ },
19
+ "required": ["required"]
20
+ },
21
+ "lint": {
22
+ "type": "object",
23
+ "properties": {
24
+ "required": {"type": "boolean"},
25
+ "command": {"type": "string"},
26
+ "timeout": {"type": "integer", "minimum": 1}
27
+ },
28
+ "required": ["required"]
29
+ },
30
+ "security": {
31
+ "type": "object",
32
+ "properties": {
33
+ "required": {"type": "boolean"},
34
+ "severity": {
35
+ "type": "string",
36
+ "enum": ["critical", "high", "medium", "low"]
37
+ },
38
+ "timeout": {"type": "integer", "minimum": 1}
39
+ },
40
+ "required": ["required"]
41
+ },
42
+ "format": {
43
+ "type": "object",
44
+ "properties": {
45
+ "required": {"type": "boolean"},
46
+ "auto_fix": {"type": "boolean"},
47
+ "command": {"type": "string"},
48
+ "timeout": {"type": "integer", "minimum": 1}
49
+ }
50
+ },
51
+ "documentation": {
52
+ "type": "object",
53
+ "properties": {
54
+ "required": {"type": "boolean"},
55
+ "check_changelog": {"type": "boolean"},
56
+ "check_docstrings": {"type": "boolean"}
57
+ }
58
+ },
59
+ "spec_completeness": {
60
+ "type": "object",
61
+ "properties": {
62
+ "required": {"type": "boolean"}
63
+ }
64
+ }
65
+ }
66
+ },
67
+ "learning": {
68
+ "type": "object",
69
+ "description": "Learning system configuration",
70
+ "properties": {
71
+ "auto_curate_frequency": {
72
+ "type": "integer",
73
+ "minimum": 1,
74
+ "description": "Auto-curate every N sessions"
75
+ },
76
+ "similarity_threshold": {
77
+ "type": "number",
78
+ "minimum": 0,
79
+ "maximum": 1,
80
+ "description": "Threshold for duplicate detection (Jaccard similarity)"
81
+ },
82
+ "containment_threshold": {
83
+ "type": "number",
84
+ "minimum": 0,
85
+ "maximum": 1,
86
+ "description": "Threshold for containment-based duplicate detection"
87
+ }
88
+ }
89
+ },
90
+ "session": {
91
+ "type": "object",
92
+ "description": "Session management configuration",
93
+ "properties": {
94
+ "auto_commit": {
95
+ "type": "boolean",
96
+ "description": "Automatically commit changes on session end"
97
+ },
98
+ "require_work_item": {
99
+ "type": "boolean",
100
+ "description": "Require work item for session start"
101
+ }
102
+ }
103
+ },
104
+ "deployment": {
105
+ "type": "object",
106
+ "description": "Deployment configuration",
107
+ "properties": {
108
+ "pre_deployment_checks": {
109
+ "type": "object",
110
+ "properties": {
111
+ "integration_tests": {"type": "boolean"},
112
+ "security_scans": {"type": "boolean"},
113
+ "environment_validation": {"type": "boolean"}
114
+ }
115
+ },
116
+ "smoke_tests": {
117
+ "type": "object",
118
+ "properties": {
119
+ "enabled": {"type": "boolean"},
120
+ "timeout": {"type": "integer", "minimum": 1},
121
+ "retry_count": {"type": "integer", "minimum": 0}
122
+ }
123
+ },
124
+ "rollback": {
125
+ "type": "object",
126
+ "properties": {
127
+ "automatic": {"type": "boolean"},
128
+ "on_smoke_test_failure": {"type": "boolean"},
129
+ "on_error_threshold": {"type": "boolean"},
130
+ "error_threshold_percent": {"type": "integer", "minimum": 0, "maximum": 100}
131
+ }
132
+ },
133
+ "environments": {
134
+ "type": "object",
135
+ "description": "Per-environment deployment configuration",
136
+ "patternProperties": {
137
+ ".*": {
138
+ "type": "object",
139
+ "properties": {
140
+ "auto_deploy": {"type": "boolean"},
141
+ "require_approval": {"type": "boolean"}
142
+ }
143
+ }
144
+ }
145
+ }
146
+ }
147
+ }
148
+ },
149
+ "additionalProperties": true
150
+ }