@vyuhlabs/dxkit 2.4.7 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/CHANGELOG.md +456 -30
  2. package/README.md +360 -439
  3. package/dist/analyzers/bom/gather.d.ts +3 -3
  4. package/dist/analyzers/bom/gather.js +3 -3
  5. package/dist/analyzers/bom/index.js +2 -2
  6. package/dist/analyzers/bom/index.js.map +1 -1
  7. package/dist/analyzers/dashboard/index.d.ts.map +1 -1
  8. package/dist/analyzers/dashboard/index.js +4 -3
  9. package/dist/analyzers/dashboard/index.js.map +1 -1
  10. package/dist/analyzers/developer/index.d.ts.map +1 -1
  11. package/dist/analyzers/developer/index.js +2 -1
  12. package/dist/analyzers/developer/index.js.map +1 -1
  13. package/dist/analyzers/dispatcher.d.ts +15 -0
  14. package/dist/analyzers/dispatcher.d.ts.map +1 -1
  15. package/dist/analyzers/dispatcher.js +42 -6
  16. package/dist/analyzers/dispatcher.js.map +1 -1
  17. package/dist/analyzers/health.d.ts.map +1 -1
  18. package/dist/analyzers/health.js +11 -1
  19. package/dist/analyzers/health.js.map +1 -1
  20. package/dist/analyzers/licenses/gather.d.ts +1 -1
  21. package/dist/analyzers/licenses/gather.d.ts.map +1 -1
  22. package/dist/analyzers/licenses/gather.js +18 -2
  23. package/dist/analyzers/licenses/gather.js.map +1 -1
  24. package/dist/analyzers/quality/index.d.ts.map +1 -1
  25. package/dist/analyzers/quality/index.js +10 -2
  26. package/dist/analyzers/quality/index.js.map +1 -1
  27. package/dist/analyzers/security/aggregator.d.ts.map +1 -1
  28. package/dist/analyzers/security/aggregator.js +8 -48
  29. package/dist/analyzers/security/aggregator.js.map +1 -1
  30. package/dist/analyzers/security/gather.d.ts +4 -3
  31. package/dist/analyzers/security/gather.d.ts.map +1 -1
  32. package/dist/analyzers/security/gather.js +23 -5
  33. package/dist/analyzers/security/gather.js.map +1 -1
  34. package/dist/analyzers/security/index.d.ts +1 -1
  35. package/dist/analyzers/security/index.js +2 -2
  36. package/dist/analyzers/security/index.js.map +1 -1
  37. package/dist/analyzers/tools/autogen-header.js +1 -1
  38. package/dist/analyzers/tools/cloc.js +3 -3
  39. package/dist/analyzers/tools/cloc.js.map +1 -1
  40. package/dist/analyzers/tools/deadline.d.ts +67 -0
  41. package/dist/analyzers/tools/deadline.d.ts.map +1 -0
  42. package/dist/analyzers/tools/deadline.js +81 -0
  43. package/dist/analyzers/tools/deadline.js.map +1 -0
  44. package/dist/analyzers/tools/exclusions.d.ts +6 -6
  45. package/dist/analyzers/tools/exclusions.js +6 -6
  46. package/dist/analyzers/tools/fingerprint.d.ts +91 -26
  47. package/dist/analyzers/tools/fingerprint.d.ts.map +1 -1
  48. package/dist/analyzers/tools/fingerprint.js +111 -22
  49. package/dist/analyzers/tools/fingerprint.js.map +1 -1
  50. package/dist/analyzers/tools/generic.d.ts.map +1 -1
  51. package/dist/analyzers/tools/generic.js +7 -2
  52. package/dist/analyzers/tools/generic.js.map +1 -1
  53. package/dist/analyzers/tools/gitleaks.d.ts +24 -1
  54. package/dist/analyzers/tools/gitleaks.d.ts.map +1 -1
  55. package/dist/analyzers/tools/gitleaks.js +21 -12
  56. package/dist/analyzers/tools/gitleaks.js.map +1 -1
  57. package/dist/analyzers/tools/graphify.js +1 -1
  58. package/dist/analyzers/tools/jscpd.js +1 -1
  59. package/dist/analyzers/tools/jscpd.js.map +1 -1
  60. package/dist/analyzers/tools/lint-label.d.ts +29 -0
  61. package/dist/analyzers/tools/lint-label.d.ts.map +1 -0
  62. package/dist/analyzers/tools/lint-label.js +23 -0
  63. package/dist/analyzers/tools/lint-label.js.map +1 -0
  64. package/dist/analyzers/tools/nuget-package-reference.d.ts +6 -4
  65. package/dist/analyzers/tools/nuget-package-reference.d.ts.map +1 -1
  66. package/dist/analyzers/tools/nuget-package-reference.js +7 -5
  67. package/dist/analyzers/tools/nuget-package-reference.js.map +1 -1
  68. package/dist/analyzers/tools/report-date.d.ts +17 -0
  69. package/dist/analyzers/tools/report-date.d.ts.map +1 -0
  70. package/dist/analyzers/tools/report-date.js +26 -0
  71. package/dist/analyzers/tools/report-date.js.map +1 -0
  72. package/dist/analyzers/tools/runner.js +3 -3
  73. package/dist/analyzers/tools/runner.js.map +1 -1
  74. package/dist/analyzers/tools/vendored-advisor.js +1 -1
  75. package/dist/analyzers/tools/walk-paths.d.ts +1 -1
  76. package/dist/analyzers/tools/walk-paths.js +1 -1
  77. package/dist/analyzers/tools/walk-source-files.js +1 -1
  78. package/dist/analyzers/types.d.ts +6 -4
  79. package/dist/analyzers/types.d.ts.map +1 -1
  80. package/dist/baseline/baseline-file.d.ts +104 -0
  81. package/dist/baseline/baseline-file.d.ts.map +1 -0
  82. package/dist/baseline/baseline-file.js +110 -0
  83. package/dist/baseline/baseline-file.js.map +1 -0
  84. package/dist/baseline/check-renderers.d.ts +108 -0
  85. package/dist/baseline/check-renderers.d.ts.map +1 -0
  86. package/dist/baseline/check-renderers.js +379 -0
  87. package/dist/baseline/check-renderers.js.map +1 -0
  88. package/dist/baseline/check.d.ts +127 -0
  89. package/dist/baseline/check.d.ts.map +1 -0
  90. package/dist/baseline/check.js +462 -0
  91. package/dist/baseline/check.js.map +1 -0
  92. package/dist/baseline/content-hash.d.ts +83 -0
  93. package/dist/baseline/content-hash.d.ts.map +1 -0
  94. package/dist/baseline/content-hash.js +131 -0
  95. package/dist/baseline/content-hash.js.map +1 -0
  96. package/dist/baseline/create.d.ts +96 -0
  97. package/dist/baseline/create.d.ts.map +1 -0
  98. package/dist/baseline/create.js +339 -0
  99. package/dist/baseline/create.js.map +1 -0
  100. package/dist/baseline/entry-to-located.d.ts +35 -0
  101. package/dist/baseline/entry-to-located.d.ts.map +1 -0
  102. package/dist/baseline/entry-to-located.js +72 -0
  103. package/dist/baseline/entry-to-located.js.map +1 -0
  104. package/dist/baseline/finding-identity.d.ts +47 -0
  105. package/dist/baseline/finding-identity.d.ts.map +1 -0
  106. package/dist/baseline/finding-identity.js +292 -0
  107. package/dist/baseline/finding-identity.js.map +1 -0
  108. package/dist/baseline/git-aware-match.d.ts +146 -0
  109. package/dist/baseline/git-aware-match.d.ts.map +1 -0
  110. package/dist/baseline/git-aware-match.js +439 -0
  111. package/dist/baseline/git-aware-match.js.map +1 -0
  112. package/dist/baseline/policy.d.ts +171 -0
  113. package/dist/baseline/policy.d.ts.map +1 -0
  114. package/dist/baseline/policy.js +206 -0
  115. package/dist/baseline/policy.js.map +1 -0
  116. package/dist/baseline/producers/health.d.ts +30 -0
  117. package/dist/baseline/producers/health.d.ts.map +1 -0
  118. package/dist/baseline/producers/health.js +42 -0
  119. package/dist/baseline/producers/health.js.map +1 -0
  120. package/dist/baseline/producers/index.d.ts +164 -0
  121. package/dist/baseline/producers/index.d.ts.map +1 -0
  122. package/dist/baseline/producers/index.js +200 -0
  123. package/dist/baseline/producers/index.js.map +1 -0
  124. package/dist/baseline/producers/licenses.d.ts +23 -0
  125. package/dist/baseline/producers/licenses.d.ts.map +1 -0
  126. package/dist/baseline/producers/licenses.js +46 -0
  127. package/dist/baseline/producers/licenses.js.map +1 -0
  128. package/dist/baseline/producers/quality.d.ts +39 -0
  129. package/dist/baseline/producers/quality.d.ts.map +1 -0
  130. package/dist/baseline/producers/quality.js +84 -0
  131. package/dist/baseline/producers/quality.js.map +1 -0
  132. package/dist/baseline/producers/secret-hmac.d.ts +45 -0
  133. package/dist/baseline/producers/secret-hmac.d.ts.map +1 -0
  134. package/dist/baseline/producers/secret-hmac.js +70 -0
  135. package/dist/baseline/producers/secret-hmac.js.map +1 -0
  136. package/dist/baseline/producers/security.d.ts +59 -0
  137. package/dist/baseline/producers/security.d.ts.map +1 -0
  138. package/dist/baseline/producers/security.js +135 -0
  139. package/dist/baseline/producers/security.js.map +1 -0
  140. package/dist/baseline/producers/tests.d.ts +36 -0
  141. package/dist/baseline/producers/tests.d.ts.map +1 -0
  142. package/dist/baseline/producers/tests.js +69 -0
  143. package/dist/baseline/producers/tests.js.map +1 -0
  144. package/dist/baseline/salt.d.ts +45 -0
  145. package/dist/baseline/salt.d.ts.map +1 -0
  146. package/dist/baseline/salt.js +113 -0
  147. package/dist/baseline/salt.js.map +1 -0
  148. package/dist/baseline/show.d.ts +79 -0
  149. package/dist/baseline/show.d.ts.map +1 -0
  150. package/dist/baseline/show.js +233 -0
  151. package/dist/baseline/show.js.map +1 -0
  152. package/dist/baseline/types.d.ts +482 -0
  153. package/dist/baseline/types.d.ts.map +1 -0
  154. package/dist/baseline/types.js +53 -0
  155. package/dist/baseline/types.js.map +1 -0
  156. package/dist/cli.d.ts.map +1 -1
  157. package/dist/cli.js +395 -92
  158. package/dist/cli.js.map +1 -1
  159. package/dist/codebase-scanner.d.ts.map +1 -1
  160. package/dist/codebase-scanner.js +0 -1
  161. package/dist/codebase-scanner.js.map +1 -1
  162. package/dist/constants.d.ts.map +1 -1
  163. package/dist/constants.js +0 -4
  164. package/dist/constants.js.map +1 -1
  165. package/dist/detect.js +3 -3
  166. package/dist/detect.js.map +1 -1
  167. package/dist/doctor.d.ts.map +1 -1
  168. package/dist/doctor.js +22 -25
  169. package/dist/doctor.js.map +1 -1
  170. package/dist/fail-on.d.ts +84 -0
  171. package/dist/fail-on.d.ts.map +1 -0
  172. package/dist/fail-on.js +128 -0
  173. package/dist/fail-on.js.map +1 -0
  174. package/dist/generator.d.ts.map +1 -1
  175. package/dist/generator.js +2 -141
  176. package/dist/generator.js.map +1 -1
  177. package/dist/languages/capabilities/provider.d.ts +4 -4
  178. package/dist/languages/capabilities/types.d.ts +1 -1
  179. package/dist/languages/csharp.d.ts.map +1 -1
  180. package/dist/languages/csharp.js +15 -24
  181. package/dist/languages/csharp.js.map +1 -1
  182. package/dist/languages/go.d.ts.map +1 -1
  183. package/dist/languages/go.js +0 -15
  184. package/dist/languages/go.js.map +1 -1
  185. package/dist/languages/index.d.ts +4 -3
  186. package/dist/languages/index.d.ts.map +1 -1
  187. package/dist/languages/index.js +3 -2
  188. package/dist/languages/index.js.map +1 -1
  189. package/dist/languages/java.d.ts.map +1 -1
  190. package/dist/languages/java.js +0 -6
  191. package/dist/languages/java.js.map +1 -1
  192. package/dist/languages/kotlin.d.ts.map +1 -1
  193. package/dist/languages/kotlin.js +0 -11
  194. package/dist/languages/kotlin.js.map +1 -1
  195. package/dist/languages/python.d.ts.map +1 -1
  196. package/dist/languages/python.js +0 -15
  197. package/dist/languages/python.js.map +1 -1
  198. package/dist/languages/ruby.d.ts.map +1 -1
  199. package/dist/languages/ruby.js +0 -6
  200. package/dist/languages/ruby.js.map +1 -1
  201. package/dist/languages/rust.d.ts.map +1 -1
  202. package/dist/languages/rust.js +0 -4
  203. package/dist/languages/rust.js.map +1 -1
  204. package/dist/languages/types.d.ts +9 -35
  205. package/dist/languages/types.d.ts.map +1 -1
  206. package/dist/languages/typescript.d.ts.map +1 -1
  207. package/dist/languages/typescript.js +26 -4
  208. package/dist/languages/typescript.js.map +1 -1
  209. package/dist/lib.d.ts +2 -3
  210. package/dist/lib.d.ts.map +1 -1
  211. package/dist/lib.js +3 -6
  212. package/dist/lib.js.map +1 -1
  213. package/dist/prompts.d.ts.map +1 -1
  214. package/dist/prompts.js +0 -10
  215. package/dist/prompts.js.map +1 -1
  216. package/dist/report-schema.d.ts +42 -0
  217. package/dist/report-schema.d.ts.map +1 -0
  218. package/dist/report-schema.js +54 -0
  219. package/dist/report-schema.js.map +1 -0
  220. package/dist/ship-installers.d.ts +106 -0
  221. package/dist/ship-installers.d.ts.map +1 -0
  222. package/dist/ship-installers.js +415 -0
  223. package/dist/ship-installers.js.map +1 -0
  224. package/dist/types.d.ts +0 -4
  225. package/dist/types.d.ts.map +1 -1
  226. package/dist/update.d.ts.map +1 -1
  227. package/dist/update.js +0 -4
  228. package/dist/update.js.map +1 -1
  229. package/package.json +17 -11
  230. package/templates/.claude/agents/onboarding.md +5 -4
  231. package/templates/.claude/agents-available/codebase-explorer.md +1 -1
  232. package/templates/.claude/agents-available/debugger.md +2 -2
  233. package/templates/.claude/agents-available/health-auditor.md +2 -2
  234. package/templates/.claude/commands/doctor.md +20 -12
  235. package/templates/.claude/skills/build/SKILL.md.template +22 -30
  236. package/templates/.claude/skills/deploy/SKILL.md.template +5 -25
  237. package/templates/.claude/skills/doctor/SKILL.md +24 -47
  238. package/templates/.claude/skills/gcloud/SKILL.md +5 -5
  239. package/templates/.claude/skills/learned/SKILL.md +1 -1
  240. package/templates/.claude/skills/pulumi/SKILL.md +2 -2
  241. package/templates/.claude/skills/quality/SKILL.md.template +4 -23
  242. package/templates/.claude/skills/review/SKILL.md.template +4 -3
  243. package/templates/.claude/skills/scaffold/SKILL.md.template +5 -15
  244. package/templates/.claude/skills/secrets/SKILL.md +20 -21
  245. package/templates/.claude/skills/session/SKILL.md +20 -31
  246. package/templates/.claude/skills/test/SKILL.md.template +1 -7
  247. package/templates/.devcontainer/devcontainer.json +81 -0
  248. package/templates/.devcontainer/install-agent-clis.sh +42 -0
  249. package/templates/.devcontainer/post-create.sh +67 -0
  250. package/templates/.githooks/pre-commit +55 -0
  251. package/templates/.githooks/pre-push +63 -0
  252. package/templates/.github/workflows/dxkit-baseline-refresh.yml +78 -0
  253. package/templates/.github/workflows/dxkit-guardrails.yml +98 -0
  254. package/templates/CLAUDE.md.template +62 -196
  255. package/dist/project-yaml.d.ts +0 -13
  256. package/dist/project-yaml.d.ts.map +0 -1
  257. package/dist/project-yaml.js +0 -188
  258. package/dist/project-yaml.js.map +0 -1
  259. package/templates/.ai/README.md +0 -117
  260. package/templates/.ai/prompts/execution-prompt.md +0 -9
  261. package/templates/.ai/prompts/planning-prompt.md +0 -18
  262. package/templates/.ai/prompts/session-end-template.md +0 -182
  263. package/templates/.ai/prompts/session-end.md +0 -132
  264. package/templates/.ai/prompts/session-start.md +0 -109
  265. package/templates/.ai/prompts/step-by-step.md +0 -113
  266. package/templates/.ai/sessions/.gitkeep +0 -0
  267. package/templates/.claude/commands/setup-pr-review.md +0 -72
  268. package/templates/.devcontainer/Dockerfile.dev.template +0 -89
  269. package/templates/.devcontainer/devcontainer.json.template +0 -184
  270. package/templates/.devcontainer/docker-compose.yml.template +0 -105
  271. package/templates/.devcontainer/init-scripts/01-init.sql.template +0 -12
  272. package/templates/.devcontainer/post-create.sh.template +0 -298
  273. package/templates/.github/workflows/ci.yml.template +0 -399
  274. package/templates/.github/workflows/quality.yml.template +0 -376
  275. package/templates/.pre-commit-config.yaml.template +0 -106
  276. package/templates/.project/config/edit_config.py +0 -275
  277. package/templates/.project/config/project_config.py +0 -894
  278. package/templates/.project/scripts/codegen/generate-all.sh +0 -20
  279. package/templates/.project/scripts/codegen/validate-all.sh +0 -17
  280. package/templates/.project/scripts/docs/generate-all.sh +0 -30
  281. package/templates/.project/scripts/docs/serve.sh +0 -20
  282. package/templates/.project/scripts/quality/fix-all.sh +0 -138
  283. package/templates/.project/scripts/quality/lint-go.sh +0 -34
  284. package/templates/.project/scripts/quality/lint-python.sh +0 -54
  285. package/templates/.project/scripts/quality/run-all.sh +0 -497
  286. package/templates/.project/scripts/session/commit.sh +0 -70
  287. package/templates/.project/scripts/session/create-pr.sh +0 -165
  288. package/templates/.project/scripts/session/end.sh +0 -207
  289. package/templates/.project/scripts/session/start.sh +0 -233
  290. package/templates/.project/scripts/setup/doctor.sh +0 -404
  291. package/templates/.project/scripts/setup/interactive-setup.sh +0 -585
  292. package/templates/.project/scripts/sync/sync-template.sh +0 -328
  293. package/templates/.project/scripts/test/run-all.sh +0 -179
  294. package/templates/.project/scripts/test/run-quick.sh +0 -25
  295. package/templates/Makefile +0 -514
  296. package/templates/config/versions.yaml +0 -57
  297. package/templates/configs/go/.golangci.yml.template +0 -172
  298. package/templates/configs/go/go.mod.template +0 -15
  299. package/templates/configs/java/README.md +0 -6
  300. package/templates/configs/kotlin/README.md +0 -6
  301. package/templates/configs/node/package.json.template +0 -67
  302. package/templates/configs/node/tsconfig.json.template +0 -53
  303. package/templates/configs/python/pyproject.toml.template +0 -92
  304. package/templates/configs/python/pytest.ini.template +0 -64
  305. package/templates/configs/python/ruff.toml.template +0 -79
  306. package/templates/configs/ruby/README.md +0 -6
  307. package/templates/configs/rust/Cargo.toml.template +0 -51
  308. package/templates/configs/shared/.editorconfig +0 -67
  309. package/templates/scripts/validate-templates.sh +0 -449
@@ -1,514 +0,0 @@
1
- .PHONY: help setup setup-ci doctor dev stop clean build deploy
2
- .PHONY: test test-unit test-integration test-coverage test-quick
3
- .PHONY: lint format format-check quality quality-fix
4
- .PHONY: quality-config quality-disable quality-enable quality-reset
5
- .PHONY: quality-strict quality-standard quality-relaxed quality-off quality-presets
6
- .PHONY: coverage-disable coverage-enable coverage-set
7
- .PHONY: info config
8
- .PHONY: lang-add lang-remove lang-list
9
- .PHONY: sync sync-preview
10
- .PHONY: sync-template sync-template-check sync-template-preview sync-template-apply sync-template-status
11
- .PHONY: docs docs-serve docs-check
12
- .PHONY: generate generate-errors validate validate-errors validate-codegen
13
- .PHONY: ai-start ai-step ai-checkpoint ai-history
14
- .PHONY: session-start session-end session-commit session-push
15
- .PHONY: check pre-commit fix
16
- .PHONY: secrets-pull secrets-show
17
-
18
- # Colors for output
19
- CYAN := \033[36m
20
- GREEN := \033[32m
21
- YELLOW := \033[33m
22
- DIM := \033[2m
23
- RESET := \033[0m
24
-
25
- help: ## Show this help message
26
- @echo "$(CYAN)Available commands:$(RESET)"
27
- @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
28
-
29
- # ============================================================================
30
- # Setup & Installation
31
- # ============================================================================
32
-
33
- setup: ## Interactive setup for new developers
34
- @./.project/scripts/setup/interactive-setup.sh
35
-
36
- doctor: ## Diagnose common setup issues
37
- @./.project/scripts/setup/doctor.sh
38
-
39
- setup-ci: ## Non-interactive setup for CI/CD
40
- @echo "$(CYAN)Setting up for CI...$(RESET)"
41
- @if [ -d "services/go/user-service" ]; then make -C services/go/user-service setup; fi
42
- @if [ -d "services/python/langgraph-service" ]; then make -C services/python/langgraph-service setup-ci; fi
43
-
44
- # ============================================================================
45
- # Project Configuration
46
- # ============================================================================
47
-
48
- info: ## Show project configuration dashboard
49
- @python3 .project/config/project_config.py info
50
-
51
- config: ## Interactive project configuration editor
52
- @python3 .project/config/edit_config.py
53
-
54
- # ============================================================================
55
- # Development
56
- # ============================================================================
57
-
58
- dev: ## Start all services in development mode
59
- @echo "$(CYAN)Starting all services...$(RESET)"
60
- @docker-compose up
61
-
62
- stop: ## Stop all services
63
- @echo "$(CYAN)Stopping all services...$(RESET)"
64
- @docker-compose down
65
-
66
- # ============================================================================
67
- # Testing
68
- # ============================================================================
69
-
70
- test: ## Run all tests (report: tmp/reports/test-report.md)
71
- @./.project/scripts/test/run-all.sh
72
-
73
- test-unit: ## Run only unit tests (fast)
74
- @./.project/scripts/test/run-quick.sh
75
-
76
- test-integration: ## Run only integration tests
77
- @if [ -d "services/go/user-service" ]; then make -C services/go/user-service test-integration; fi
78
- @if [ -d "services/python/langgraph-service" ]; then make -C services/python/langgraph-service test-integration; fi
79
-
80
- test-coverage: ## Run tests with detailed coverage report
81
- @echo "$(CYAN)Running tests with coverage...$(RESET)"
82
- @echo "$(CYAN)Go coverage...$(RESET)"
83
- @if find . -name "go.mod" -type f | grep -q .; then \
84
- go test ./... -coverprofile=coverage.out -covermode=atomic; \
85
- go tool cover -html=coverage.out -o coverage.html; \
86
- echo "$(GREEN)Coverage report: coverage.html$(RESET)"; \
87
- fi
88
- @echo "$(CYAN)Python coverage...$(RESET)"
89
- @for dir in $$(find pkg/python services/python -name "pyproject.toml" -o -name "setup.py" 2>/dev/null | xargs -r dirname | sort -u); do \
90
- (cd $$dir && pytest --cov=. --cov-report=html 2>/dev/null) || true; \
91
- done
92
- @echo "$(GREEN)✅ Coverage reports generated$(RESET)"
93
-
94
- test-quick: test-unit ## Alias for test-unit
95
-
96
- # ============================================================================
97
- # Code Generation
98
- # ============================================================================
99
-
100
- generate: ## Generate all code (error codes, etc.)
101
- @./.project/scripts/codegen/generate-all.sh
102
-
103
- generate-errors: ## Generate error codes from YAML (Go + Python)
104
- @./.project/scripts/codegen/generate-errors.sh
105
-
106
- validate: ## Validate all generated code is up-to-date
107
- @./.project/scripts/codegen/validate-all.sh
108
-
109
- validate-errors: validate ## Alias for validate
110
-
111
- validate-codegen: validate ## Alias for validate
112
-
113
- # ============================================================================
114
- # Code Quality
115
- # ============================================================================
116
-
117
- quality: ## Run all quality checks (report: tmp/reports/quality-report.md)
118
- @./.project/scripts/quality/run-all.sh
119
-
120
- quality-fix: ## Auto-fix quality issues where possible
121
- @./.project/scripts/quality/fix-all.sh
122
-
123
- lint: ## Lint all code (included in quality report)
124
- @echo "$(CYAN)Linting all code...$(RESET)"
125
- @./.project/scripts/quality/lint-go.sh
126
- @./.project/scripts/quality/lint-python.sh
127
- @echo "$(GREEN)✅ Linting complete$(RESET)"
128
-
129
- format: ## Format all code
130
- @echo "$(CYAN)Formatting all code...$(RESET)"
131
- @echo "$(CYAN)Formatting Go code...$(RESET)"
132
- @if find . -name "*.go" -type f -not -path "./v0/*" | grep -q .; then \
133
- gofmt -w $$(find . -name "*.go" -type f -not -path "./v0/*"); \
134
- goimports -w $$(find . -name "*.go" -type f -not -path "./v0/*") 2>/dev/null || true; \
135
- fi
136
- @echo "$(CYAN)Formatting Python code...$(RESET)"
137
- @if command -v black >/dev/null 2>&1; then \
138
- find pkg/python services/python -name "*.py" -type f 2>/dev/null | xargs -r black 2>/dev/null || true; \
139
- fi
140
- @echo "$(GREEN)✅ All code formatted$(RESET)"
141
-
142
- format-check: ## Check formatting without making changes
143
- @if [ -d "services/go/user-service" ]; then make -C services/go/user-service format-check; fi
144
- @if [ -d "services/python/langgraph-service" ]; then make -C services/python/langgraph-service format-check; fi
145
-
146
- # ============================================================================
147
- # Quality Configuration (toggle checks on/off)
148
- # ============================================================================
149
-
150
- QUALITY_CONFIG := .quality.env
151
-
152
- quality-config: ## Show current quality configuration
153
- @echo "$(CYAN)Quality Configuration$(RESET)"
154
- @echo "====================="
155
- @if [ -f "$(QUALITY_CONFIG)" ]; then \
156
- cat $(QUALITY_CONFIG); \
157
- else \
158
- echo "No custom configuration (using defaults)"; \
159
- echo ""; \
160
- echo "Defaults:"; \
161
- echo " SKIP_QUALITY_CHECKS=false"; \
162
- echo " SKIP_COVERAGE_CHECK=false"; \
163
- echo " COVERAGE_THRESHOLD=80"; \
164
- fi
165
- @echo ""
166
- @echo "$(CYAN)To modify, run:$(RESET)"
167
- @echo " make quality-disable # Disable quality checks"
168
- @echo " make quality-enable # Enable quality checks"
169
- @echo " make coverage-disable # Disable coverage threshold"
170
- @echo " make coverage-set PERCENT=70 # Set coverage threshold"
171
-
172
- quality-disable: ## Disable quality checks locally
173
- @echo "SKIP_QUALITY_CHECKS=true" > $(QUALITY_CONFIG)
174
- @if [ -f "$(QUALITY_CONFIG)" ] && grep -q "SKIP_COVERAGE_CHECK" $(QUALITY_CONFIG); then \
175
- true; \
176
- else \
177
- echo "SKIP_COVERAGE_CHECK=false" >> $(QUALITY_CONFIG); \
178
- fi
179
- @echo "$(GREEN)✅ Quality checks disabled$(RESET)"
180
- @echo "$(CYAN)Note: To disable in CI, set repository variable SKIP_QUALITY_CHECKS=true$(RESET)"
181
-
182
- quality-enable: ## Enable quality checks locally
183
- @if [ -f "$(QUALITY_CONFIG)" ]; then \
184
- sed -i 's/SKIP_QUALITY_CHECKS=true/SKIP_QUALITY_CHECKS=false/' $(QUALITY_CONFIG); \
185
- fi
186
- @echo "$(GREEN)✅ Quality checks enabled$(RESET)"
187
-
188
- coverage-disable: ## Disable coverage threshold checks
189
- @if [ -f "$(QUALITY_CONFIG)" ]; then \
190
- if grep -q "SKIP_COVERAGE_CHECK" $(QUALITY_CONFIG); then \
191
- sed -i 's/SKIP_COVERAGE_CHECK=.*/SKIP_COVERAGE_CHECK=true/' $(QUALITY_CONFIG); \
192
- else \
193
- echo "SKIP_COVERAGE_CHECK=true" >> $(QUALITY_CONFIG); \
194
- fi; \
195
- else \
196
- echo "SKIP_QUALITY_CHECKS=false" > $(QUALITY_CONFIG); \
197
- echo "SKIP_COVERAGE_CHECK=true" >> $(QUALITY_CONFIG); \
198
- fi
199
- @echo "$(GREEN)✅ Coverage threshold checks disabled$(RESET)"
200
-
201
- coverage-enable: ## Enable coverage threshold checks
202
- @if [ -f "$(QUALITY_CONFIG)" ]; then \
203
- sed -i 's/SKIP_COVERAGE_CHECK=true/SKIP_COVERAGE_CHECK=false/' $(QUALITY_CONFIG); \
204
- fi
205
- @echo "$(GREEN)✅ Coverage threshold checks enabled$(RESET)"
206
-
207
- coverage-set: ## Set coverage threshold (usage: make coverage-set PERCENT=80)
208
- ifndef PERCENT
209
- @echo "$(CYAN)Usage: make coverage-set PERCENT=80$(RESET)"
210
- @exit 1
211
- endif
212
- @if [ -f "$(QUALITY_CONFIG)" ]; then \
213
- if grep -q "COVERAGE_THRESHOLD" $(QUALITY_CONFIG); then \
214
- sed -i 's/COVERAGE_THRESHOLD=.*/COVERAGE_THRESHOLD=$(PERCENT)/' $(QUALITY_CONFIG); \
215
- else \
216
- echo "COVERAGE_THRESHOLD=$(PERCENT)" >> $(QUALITY_CONFIG); \
217
- fi; \
218
- else \
219
- echo "SKIP_QUALITY_CHECKS=false" > $(QUALITY_CONFIG); \
220
- echo "SKIP_COVERAGE_CHECK=false" >> $(QUALITY_CONFIG); \
221
- echo "COVERAGE_THRESHOLD=$(PERCENT)" >> $(QUALITY_CONFIG); \
222
- fi
223
- @echo "$(GREEN)✅ Coverage threshold set to $(PERCENT)%$(RESET)"
224
- @echo "$(CYAN)Note: Run 'make sync' to apply changes to config files$(RESET)"
225
-
226
- quality-reset: ## Reset quality configuration to defaults
227
- @rm -f $(QUALITY_CONFIG)
228
- @echo "$(GREEN)✅ Quality configuration reset to defaults$(RESET)"
229
-
230
- # ============================================================================
231
- # Quality Presets (new config system)
232
- # ============================================================================
233
-
234
- quality-presets: ## List available quality presets
235
- @python3 .project/config/project_config.py preset
236
-
237
- quality-strict: ## Apply strict quality preset (90%+ coverage, all checks)
238
- @python3 .project/config/project_config.py preset strict
239
-
240
- quality-standard: ## Apply standard quality preset (80% coverage, balanced)
241
- @python3 .project/config/project_config.py preset standard
242
-
243
- quality-relaxed: ## Apply relaxed quality preset (50% coverage, minimal)
244
- @python3 .project/config/project_config.py preset relaxed
245
-
246
- quality-off: ## Disable all quality checks
247
- @python3 .project/config/project_config.py preset off
248
-
249
- # ============================================================================
250
- # Language Management
251
- # ============================================================================
252
-
253
- lang-list: ## List available languages and their status
254
- @python3 .project/config/project_config.py lang-list
255
-
256
- lang-add: ## Add a language (usage: make lang-add LANG=python)
257
- ifndef LANG
258
- @echo "$(CYAN)Usage: make lang-add LANG=<language>$(RESET)"
259
- @echo "$(CYAN)Languages: python, go, node, rust$(RESET)"
260
- @exit 1
261
- endif
262
- @python3 .project/config/project_config.py lang-add $(LANG)
263
-
264
- lang-remove: ## Remove a language (usage: make lang-remove LANG=go)
265
- ifndef LANG
266
- @echo "$(CYAN)Usage: make lang-remove LANG=<language>$(RESET)"
267
- @exit 1
268
- endif
269
- @python3 .project/config/project_config.py lang-remove $(LANG)
270
-
271
- # ============================================================================
272
- # Config Sync (sync .project.yaml to language files)
273
- # ============================================================================
274
-
275
- sync: ## Sync project config to language files (pyproject.toml, go.mod, etc.)
276
- @python3 .project/config/project_config.py sync
277
-
278
- sync-preview: ## Preview config sync changes (dry run)
279
- @python3 .project/config/project_config.py sync --dry-run
280
-
281
- # ============================================================================
282
- # Documentation
283
- # ============================================================================
284
-
285
- docs: ## Generate all documentation (API docs, etc.)
286
- @./.project/scripts/docs/generate-all.sh
287
-
288
- docs-serve: ## Serve documentation locally
289
- @./.project/scripts/docs/serve.sh
290
-
291
- docs-check: ## Verify documentation is up to date
292
- @echo "$(CYAN)Checking documentation...$(RESET)"
293
- @./.project/scripts/docs/generate-all.sh > /dev/null 2>&1
294
- @if git diff --quiet docs/; then \
295
- echo "$(GREEN)✓$(RESET) Documentation is up to date"; \
296
- else \
297
- echo "$(CYAN)ℹ$(RESET) Documentation has changes (run: make docs)"; \
298
- fi
299
-
300
- # ============================================================================
301
- # Build & Deploy
302
- # ============================================================================
303
-
304
- build: ## Build all services
305
- @echo "$(CYAN)Building all services...$(RESET)"
306
- @echo "$(CYAN)Building Go services...$(RESET)"
307
- @for dir in $$(find services/go -name "go.mod" -type f 2>/dev/null | xargs -r dirname); do \
308
- echo "$(CYAN) Building $$dir...$(RESET)"; \
309
- (cd $$dir && go build -o bin/$$(basename $$dir) ./...) || exit 1; \
310
- done
311
- @echo "$(CYAN)Building Python services...$(RESET)"
312
- @for dir in $$(find services/python -name "pyproject.toml" -o -name "setup.py" 2>/dev/null | xargs -r dirname | sort -u); do \
313
- echo "$(CYAN) Building $$dir...$(RESET)"; \
314
- (cd $$dir && pip install -e . >/dev/null 2>&1) || true; \
315
- done
316
- @echo "$(GREEN)✅ All services built$(RESET)"
317
-
318
- clean: ## Clean all build artifacts and reports
319
- @echo "$(CYAN)Cleaning build artifacts...$(RESET)"
320
- @find . -type f -name "*.pyc" -delete
321
- @find . -type d -name "__pycache__" -delete
322
- @find . -type d -name "*.egg-info" -exec rm -rf {} + 2>/dev/null || true
323
- @find . -type f -name "coverage.out" -delete
324
- @find . -type f -name "coverage.html" -delete
325
- @find . -type d -name "htmlcov" -exec rm -rf {} + 2>/dev/null || true
326
- @find services/go -type d -name "bin" -exec rm -rf {} + 2>/dev/null || true
327
- @rm -rf tmp/reports/ 2>/dev/null || true
328
- @echo "$(GREEN)✅ Cleanup complete$(RESET)"
329
-
330
- deploy: ## Deploy services (CI only)
331
- @echo "$(CYAN)Deploying services...$(RESET)"
332
- @# TODO: Add deployment commands
333
-
334
- # ============================================================================
335
- # AI-Assisted Development (Low-level)
336
- # ============================================================================
337
-
338
- ai-start: ## Start AI-assisted development session (shows checkpoint + prompt)
339
- @./.project/scripts/session/start.sh
340
-
341
- ai-step: ## Show step-by-step development prompt
342
- @echo "$(CYAN)📋 Step-by-Step Development Guide:$(RESET)"
343
- @echo ""
344
- @cat .ai/prompts/step-by-step.md
345
-
346
- ai-checkpoint: ## Create session checkpoint
347
- @echo "$(CYAN)💾 Creating Session Checkpoint$(RESET)"
348
- @echo "=============================="
349
- @echo ""
350
- @DEVELOPER=$$(git config user.name | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g'); \
351
- DATE=$$(date +%Y-%m-%d); \
352
- SESSIONS_DIR=".ai/sessions/$$DEVELOPER/$$DATE"; \
353
- mkdir -p $$SESSIONS_DIR; \
354
- SESSION_NUM=1; \
355
- while [ -f "$$SESSIONS_DIR/session-$$SESSION_NUM.md" ]; do \
356
- SESSION_NUM=$$((SESSION_NUM + 1)); \
357
- done; \
358
- CHECKPOINT_FILE="$$SESSIONS_DIR/session-$$SESSION_NUM.md"; \
359
- echo "$(CYAN)Creating:$(RESET) $$CHECKPOINT_FILE"; \
360
- echo ""; \
361
- echo "$(CYAN)📋 Session End Prompt:$(RESET)"; \
362
- echo ""; \
363
- cat .ai/prompts/session-end.md; \
364
- echo ""; \
365
- echo "════════════════════════════════════════════════════════════════"; \
366
- echo ""; \
367
- echo "$(CYAN)Checkpoint will be created at:$(RESET) $$CHECKPOINT_FILE"; \
368
- echo "$(CYAN)Template location:$(RESET) .ai/templates/session-checkpoint-template.md"
369
-
370
- ai-history: ## Show recent AI session history
371
- @echo "$(CYAN)📚 Recent AI Sessions$(RESET)"
372
- @echo "====================="
373
- @echo ""
374
- @DEVELOPER=$$(git config user.name | tr '[:upper:]' '[:lower:]' | sed 's/ /-/g'); \
375
- SESSIONS_DIR=".ai/sessions/$$DEVELOPER"; \
376
- if [ -d "$$SESSIONS_DIR" ]; then \
377
- echo "$(CYAN)Sessions for $$DEVELOPER:$(RESET)"; \
378
- echo ""; \
379
- for file in $$(find $$SESSIONS_DIR -name "session-*.md" -type f 2>/dev/null | sort -r | head -5); do \
380
- DATE_DIR=$$(basename $$(dirname $$file)); \
381
- SESSION=$$(basename $$file); \
382
- echo "$(CYAN)📄 $$DATE_DIR/$$SESSION$(RESET)"; \
383
- echo " Path: $$file"; \
384
- GOAL=$$(grep -m 1 "^## Session Goal" $$file -A 1 | tail -1); \
385
- if [ -n "$$GOAL" ]; then \
386
- echo " Goal: $$GOAL"; \
387
- fi; \
388
- echo ""; \
389
- done; \
390
- TOTAL=$$(find $$SESSIONS_DIR -name "session-*.md" -type f 2>/dev/null | wc -l); \
391
- if [ $$TOTAL -gt 5 ]; then \
392
- echo "$(CYAN)... and $$(( $$TOTAL - 5 )) more$(RESET)"; \
393
- fi; \
394
- else \
395
- echo "$(CYAN)ℹ️ No sessions found for $$DEVELOPER$(RESET)"; \
396
- fi; \
397
- echo ""; \
398
- echo "$(CYAN)All developers:$(RESET)"; \
399
- for dev_dir in .ai/sessions/*/; do \
400
- if [ -d "$$dev_dir" ]; then \
401
- DEV_NAME=$$(basename $$dev_dir); \
402
- COUNT=$$(find $$dev_dir -name "session-*.md" -type f 2>/dev/null | wc -l); \
403
- echo " • $$DEV_NAME: $$COUNT session(s)"; \
404
- fi; \
405
- done
406
-
407
- # ============================================================================
408
- # Session Management (High-level, User-friendly)
409
- # ============================================================================
410
-
411
- session-start: ai-start ## Start a new development session (recommended)
412
-
413
- session-end: ## End current session (shows checklist and guides checkpoint creation)
414
- @./.project/scripts/session/end.sh
415
-
416
- session-commit: ## Commit session work (add SKIP_VERIFY=1 to skip checks)
417
- @if [ "$(SKIP_VERIFY)" = "1" ]; then \
418
- echo "$(CYAN)⚠️ Skipping verification checks (SKIP_VERIFY=1)$(RESET)"; \
419
- SKIP_VERIFY=1 ./.project/scripts/session/commit.sh; \
420
- else \
421
- echo "$(CYAN)Running verification checks before commit...$(RESET)"; \
422
- $(MAKE) check && ./.project/scripts/session/commit.sh || (echo "$(CYAN)❌ Checks failed. Run: make session-commit SKIP_VERIFY=1$(RESET)" && exit 1); \
423
- fi
424
-
425
- session-push: ## Push session work to remote (smart quality check: skips if working tree clean)
426
- @if [ "$(SKIP_VERIFY)" = "1" ]; then \
427
- echo "$(CYAN)⚠️ Skipping verification checks (SKIP_VERIFY=1)$(RESET)"; \
428
- git push --no-verify; \
429
- else \
430
- if [ -n "$$(git status --porcelain)" ]; then \
431
- echo "$(CYAN)⚠️ Uncommitted changes detected - running full verification...$(RESET)"; \
432
- $(MAKE) check && git push || (echo "$(CYAN)❌ Checks failed. Run: make session-push SKIP_VERIFY=1$(RESET)" && exit 1); \
433
- else \
434
- echo "$(GREEN)✅ Working tree clean - skipping quality checks (already verified in session-commit)$(RESET)"; \
435
- git push; \
436
- fi; \
437
- fi
438
-
439
- session-pr: ## Create pull request with auto-generated content (BASE=main to override base branch)
440
- @./.project/scripts/session/create-pr.sh $(BASE)
441
-
442
- # ============================================================================
443
- # Convenience Commands
444
- # ============================================================================
445
-
446
- check: validate quality test docs-check ## Run all checks before commit (validate + quality + test + docs)
447
- @echo ""
448
- @echo "$(GREEN)✅ All checks passed! Ready to commit.$(RESET)"
449
-
450
- pre-commit: check ## Alias for 'check' - run before committing
451
-
452
- fix: quality-fix format ## Fix all auto-fixable issues
453
- @echo ""
454
- @echo "$(GREEN)✅ All fixes applied! Run 'make check' to verify.$(RESET)"
455
-
456
- # ============================================================================
457
- # Secrets Management (Infisical)
458
- # ============================================================================
459
-
460
- secrets-pull: ## Pull secrets from Infisical to .env
461
- @if [ ! -f ".env" ]; then \
462
- echo "$(CYAN)No .env file found. Run 'make setup' first.$(RESET)"; \
463
- exit 1; \
464
- fi
465
- @if ! grep -q "INFISICAL_TOKEN" .env 2>/dev/null; then \
466
- echo "$(CYAN)Infisical not configured. Run 'make setup' to configure.$(RESET)"; \
467
- exit 1; \
468
- fi
469
- @echo "$(CYAN)Pulling secrets from Infisical...$(RESET)"
470
- @. .env && infisical export \
471
- --token="$$INFISICAL_TOKEN" \
472
- --projectId="$$INFISICAL_PROJECT_ID" \
473
- --env="$${INFISICAL_ENV:-dev}" \
474
- --format=dotenv > .env.secrets 2>/dev/null && \
475
- while IFS= read -r line; do \
476
- [ -z "$$line" ] && continue; \
477
- case "$$line" in \#*) continue;; esac; \
478
- key=$$(echo "$$line" | cut -d= -f1); \
479
- case "$$key" in INFISICAL_*) continue;; esac; \
480
- if ! grep -q "^$$key=" .env 2>/dev/null; then \
481
- echo "$$line" >> .env; \
482
- fi; \
483
- done < .env.secrets && \
484
- rm .env.secrets && \
485
- echo "$(GREEN)✅ Secrets pulled and merged into .env$(RESET)" || \
486
- (echo "$(CYAN)Failed to pull secrets. Check your token and permissions.$(RESET)" && rm -f .env.secrets && exit 1)
487
-
488
- secrets-show: ## Show Infisical configuration (no secrets displayed)
489
- @if [ -f ".env" ] && grep -q "INFISICAL_TOKEN" .env 2>/dev/null; then \
490
- echo "$(CYAN)Infisical Configuration:$(RESET)"; \
491
- grep "INFISICAL_PROJECT_ID" .env 2>/dev/null | sed 's/^/ /' || true; \
492
- grep "INFISICAL_ENV" .env 2>/dev/null | sed 's/^/ /' || true; \
493
- echo " INFISICAL_TOKEN=***configured***"; \
494
- else \
495
- echo "$(CYAN)Infisical not configured. Run 'make setup' to configure.$(RESET)"; \
496
- fi
497
-
498
- # ============================================================================
499
- # Template Sync (pull updates from template repository)
500
- # ============================================================================
501
-
502
- sync-template: sync-template-check ## Check for template updates
503
-
504
- sync-template-check: ## Check if template updates are available
505
- @./.project/scripts/sync/sync-template.sh check
506
-
507
- sync-template-preview: ## Preview template changes before applying
508
- @./.project/scripts/sync/sync-template.sh preview
509
-
510
- sync-template-apply: ## Apply template updates (preserves .project.yaml)
511
- @./.project/scripts/sync/sync-template.sh apply
512
-
513
- sync-template-status: ## Show template sync configuration
514
- @./.project/scripts/sync/sync-template.sh status
@@ -1,57 +0,0 @@
1
- # Default versions for languages and services
2
- # Update this file to change default versions across all new projects
3
-
4
- languages:
5
- python:
6
- default: "3.12"
7
- lts: "3.11"
8
- description: "Python programming language"
9
- note: "LTS = 3.11 (until Oct 2027), Latest = 3.12"
10
-
11
- go:
12
- default: "1.24.0"
13
- description: "Go programming language"
14
- note: "Go uses semantic versioning (e.g., 1.24.0)"
15
-
16
- nodejs:
17
- default: "20"
18
- lts: "20"
19
- description: "Node.js JavaScript runtime"
20
- note: "LTS = 20 (until Apr 2026), Current = 21"
21
-
22
- rust:
23
- default: "stable"
24
- description: "Rust programming language"
25
- note: "Options: stable, beta, nightly, or specific version"
26
-
27
- infrastructure:
28
- postgresql:
29
- default: "16"
30
- lts: "15"
31
- description: "PostgreSQL database"
32
- note: "LTS = 15 (until Nov 2027), Latest = 16"
33
-
34
- redis:
35
- default: "7"
36
- description: "Redis cache"
37
- note: "Latest stable = 7"
38
-
39
- # Python tools
40
- tools:
41
- ruff:
42
- default: "0.8.0"
43
- min: "0.8.0"
44
- description: "Python linter and formatter"
45
- note: "Fast Python linter, written in Rust"
46
-
47
- mypy:
48
- default: "1.8.0"
49
- min: "1.8.0"
50
- description: "Python static type checker"
51
-
52
- pytest:
53
- default: "8.0.0"
54
- min: "7.0.0"
55
- description: "Python testing framework"
56
-
57
- # Last updated: 2025-01-26