@vyuhlabs/dxkit 2.4.8 → 2.5.1
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.
- package/CHANGELOG.md +312 -0
- package/README.md +360 -439
- package/dist/analyzers/security/aggregator.d.ts.map +1 -1
- package/dist/analyzers/security/aggregator.js +4 -46
- package/dist/analyzers/security/aggregator.js.map +1 -1
- package/dist/analyzers/tools/fingerprint.d.ts +91 -26
- package/dist/analyzers/tools/fingerprint.d.ts.map +1 -1
- package/dist/analyzers/tools/fingerprint.js +111 -22
- package/dist/analyzers/tools/fingerprint.js.map +1 -1
- package/dist/analyzers/tools/generic.d.ts.map +1 -1
- package/dist/analyzers/tools/generic.js +6 -1
- package/dist/analyzers/tools/generic.js.map +1 -1
- package/dist/analyzers/tools/gitleaks.d.ts +24 -1
- package/dist/analyzers/tools/gitleaks.d.ts.map +1 -1
- package/dist/analyzers/tools/gitleaks.js +20 -11
- package/dist/analyzers/tools/gitleaks.js.map +1 -1
- package/dist/analyzers/tools/graphify.d.ts.map +1 -1
- package/dist/analyzers/tools/graphify.js +9 -5
- package/dist/analyzers/tools/graphify.js.map +1 -1
- package/dist/analyzers/tools/tool-registry.d.ts +19 -1
- package/dist/analyzers/tools/tool-registry.d.ts.map +1 -1
- package/dist/analyzers/tools/tool-registry.js +25 -0
- package/dist/analyzers/tools/tool-registry.js.map +1 -1
- package/dist/analyzers/types.d.ts +6 -4
- package/dist/analyzers/types.d.ts.map +1 -1
- package/dist/baseline/baseline-file.d.ts +104 -0
- package/dist/baseline/baseline-file.d.ts.map +1 -0
- package/dist/baseline/baseline-file.js +110 -0
- package/dist/baseline/baseline-file.js.map +1 -0
- package/dist/baseline/check-renderers.d.ts +108 -0
- package/dist/baseline/check-renderers.d.ts.map +1 -0
- package/dist/baseline/check-renderers.js +379 -0
- package/dist/baseline/check-renderers.js.map +1 -0
- package/dist/baseline/check.d.ts +127 -0
- package/dist/baseline/check.d.ts.map +1 -0
- package/dist/baseline/check.js +462 -0
- package/dist/baseline/check.js.map +1 -0
- package/dist/baseline/content-hash.d.ts +83 -0
- package/dist/baseline/content-hash.d.ts.map +1 -0
- package/dist/baseline/content-hash.js +131 -0
- package/dist/baseline/content-hash.js.map +1 -0
- package/dist/baseline/create.d.ts +96 -0
- package/dist/baseline/create.d.ts.map +1 -0
- package/dist/baseline/create.js +339 -0
- package/dist/baseline/create.js.map +1 -0
- package/dist/baseline/entry-to-located.d.ts +35 -0
- package/dist/baseline/entry-to-located.d.ts.map +1 -0
- package/dist/baseline/entry-to-located.js +72 -0
- package/dist/baseline/entry-to-located.js.map +1 -0
- package/dist/baseline/finding-identity.d.ts +47 -0
- package/dist/baseline/finding-identity.d.ts.map +1 -0
- package/dist/baseline/finding-identity.js +292 -0
- package/dist/baseline/finding-identity.js.map +1 -0
- package/dist/baseline/git-aware-match.d.ts +146 -0
- package/dist/baseline/git-aware-match.d.ts.map +1 -0
- package/dist/baseline/git-aware-match.js +439 -0
- package/dist/baseline/git-aware-match.js.map +1 -0
- package/dist/baseline/policy.d.ts +171 -0
- package/dist/baseline/policy.d.ts.map +1 -0
- package/dist/baseline/policy.js +206 -0
- package/dist/baseline/policy.js.map +1 -0
- package/dist/baseline/producers/health.d.ts +30 -0
- package/dist/baseline/producers/health.d.ts.map +1 -0
- package/dist/baseline/producers/health.js +42 -0
- package/dist/baseline/producers/health.js.map +1 -0
- package/dist/baseline/producers/index.d.ts +164 -0
- package/dist/baseline/producers/index.d.ts.map +1 -0
- package/dist/baseline/producers/index.js +200 -0
- package/dist/baseline/producers/index.js.map +1 -0
- package/dist/baseline/producers/licenses.d.ts +23 -0
- package/dist/baseline/producers/licenses.d.ts.map +1 -0
- package/dist/baseline/producers/licenses.js +46 -0
- package/dist/baseline/producers/licenses.js.map +1 -0
- package/dist/baseline/producers/quality.d.ts +39 -0
- package/dist/baseline/producers/quality.d.ts.map +1 -0
- package/dist/baseline/producers/quality.js +84 -0
- package/dist/baseline/producers/quality.js.map +1 -0
- package/dist/baseline/producers/secret-hmac.d.ts +45 -0
- package/dist/baseline/producers/secret-hmac.d.ts.map +1 -0
- package/dist/baseline/producers/secret-hmac.js +70 -0
- package/dist/baseline/producers/secret-hmac.js.map +1 -0
- package/dist/baseline/producers/security.d.ts +59 -0
- package/dist/baseline/producers/security.d.ts.map +1 -0
- package/dist/baseline/producers/security.js +135 -0
- package/dist/baseline/producers/security.js.map +1 -0
- package/dist/baseline/producers/tests.d.ts +36 -0
- package/dist/baseline/producers/tests.d.ts.map +1 -0
- package/dist/baseline/producers/tests.js +69 -0
- package/dist/baseline/producers/tests.js.map +1 -0
- package/dist/baseline/salt.d.ts +45 -0
- package/dist/baseline/salt.d.ts.map +1 -0
- package/dist/baseline/salt.js +113 -0
- package/dist/baseline/salt.js.map +1 -0
- package/dist/baseline/show.d.ts +79 -0
- package/dist/baseline/show.d.ts.map +1 -0
- package/dist/baseline/show.js +233 -0
- package/dist/baseline/show.js.map +1 -0
- package/dist/baseline/types.d.ts +482 -0
- package/dist/baseline/types.d.ts.map +1 -0
- package/dist/baseline/types.js +53 -0
- package/dist/baseline/types.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +398 -82
- package/dist/cli.js.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +0 -4
- package/dist/constants.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +39 -35
- package/dist/doctor.js.map +1 -1
- package/dist/fail-on.d.ts +84 -0
- package/dist/fail-on.d.ts.map +1 -0
- package/dist/fail-on.js +128 -0
- package/dist/fail-on.js.map +1 -0
- package/dist/generator.d.ts +1 -1
- package/dist/generator.d.ts.map +1 -1
- package/dist/generator.js +81 -274
- package/dist/generator.js.map +1 -1
- package/dist/hooks-cli.d.ts +20 -0
- package/dist/hooks-cli.d.ts.map +1 -0
- package/dist/hooks-cli.js +145 -0
- package/dist/hooks-cli.js.map +1 -0
- package/dist/languages/csharp.d.ts.map +1 -1
- package/dist/languages/csharp.js +4 -9
- package/dist/languages/csharp.js.map +1 -1
- package/dist/languages/go.d.ts.map +1 -1
- package/dist/languages/go.js +3 -14
- package/dist/languages/go.js.map +1 -1
- package/dist/languages/index.d.ts +19 -1
- package/dist/languages/index.d.ts.map +1 -1
- package/dist/languages/index.js +32 -0
- package/dist/languages/index.js.map +1 -1
- package/dist/languages/java.d.ts.map +1 -1
- package/dist/languages/java.js +4 -6
- package/dist/languages/java.js.map +1 -1
- package/dist/languages/kotlin.d.ts.map +1 -1
- package/dist/languages/kotlin.js +9 -11
- package/dist/languages/kotlin.js.map +1 -1
- package/dist/languages/python.d.ts.map +1 -1
- package/dist/languages/python.js +4 -15
- package/dist/languages/python.js.map +1 -1
- package/dist/languages/ruby.d.ts.map +1 -1
- package/dist/languages/ruby.js +4 -6
- package/dist/languages/ruby.js.map +1 -1
- package/dist/languages/rust.d.ts.map +1 -1
- package/dist/languages/rust.js +4 -4
- package/dist/languages/rust.js.map +1 -1
- package/dist/languages/types.d.ts +29 -28
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages/typescript.d.ts.map +1 -1
- package/dist/languages/typescript.js +31 -4
- package/dist/languages/typescript.js.map +1 -1
- package/dist/lib.d.ts +2 -3
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +3 -6
- package/dist/lib.js.map +1 -1
- package/dist/prompts.d.ts.map +1 -1
- package/dist/prompts.js +0 -10
- package/dist/prompts.js.map +1 -1
- package/dist/report-schema.d.ts +42 -0
- package/dist/report-schema.d.ts.map +1 -0
- package/dist/report-schema.js +54 -0
- package/dist/report-schema.js.map +1 -0
- package/dist/ship-installers.d.ts +112 -0
- package/dist/ship-installers.d.ts.map +1 -0
- package/dist/ship-installers.js +530 -0
- package/dist/ship-installers.js.map +1 -0
- package/dist/tools-cli.d.ts.map +1 -1
- package/dist/tools-cli.js +45 -9
- package/dist/tools-cli.js.map +1 -1
- package/dist/types.d.ts +0 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/update.d.ts.map +1 -1
- package/dist/update.js +0 -4
- package/dist/update.js.map +1 -1
- package/package.json +17 -11
- package/templates/.claude/skills/dxkit-action/SKILL.md +150 -0
- package/templates/.claude/skills/dxkit-config/SKILL.md +124 -0
- package/templates/.claude/skills/dxkit-hooks/SKILL.md +109 -0
- package/templates/.claude/skills/dxkit-init/SKILL.md +93 -0
- package/templates/.claude/skills/dxkit-learn/SKILL.md +84 -0
- package/templates/.claude/skills/dxkit-reports/SKILL.md +111 -0
- package/templates/.devcontainer/devcontainer.json +55 -0
- package/templates/.devcontainer/install-agent-clis.sh +42 -0
- package/templates/.devcontainer/post-create.sh +81 -0
- package/templates/.githooks/pre-commit +55 -0
- package/templates/.githooks/pre-push +63 -0
- package/templates/.github/workflows/dxkit-baseline-refresh.yml +78 -0
- package/templates/.github/workflows/dxkit-guardrails.yml +98 -0
- package/templates/AGENTS.md.template +137 -0
- package/templates/CLAUDE.md.template +16 -245
- package/dist/codebase-scanner.d.ts +0 -36
- package/dist/codebase-scanner.d.ts.map +0 -1
- package/dist/codebase-scanner.js +0 -688
- package/dist/codebase-scanner.js.map +0 -1
- package/dist/project-yaml.d.ts +0 -13
- package/dist/project-yaml.d.ts.map +0 -1
- package/dist/project-yaml.js +0 -188
- package/dist/project-yaml.js.map +0 -1
- package/templates/.ai/README.md +0 -117
- package/templates/.ai/prompts/execution-prompt.md +0 -9
- package/templates/.ai/prompts/planning-prompt.md +0 -18
- package/templates/.ai/prompts/session-end-template.md +0 -182
- package/templates/.ai/prompts/session-end.md +0 -132
- package/templates/.ai/prompts/session-start.md +0 -109
- package/templates/.ai/prompts/step-by-step.md +0 -113
- package/templates/.ai/sessions/.gitkeep +0 -0
- package/templates/.claude/agents/doc-writer.md +0 -107
- package/templates/.claude/agents/knowledge-bot.md +0 -64
- package/templates/.claude/agents/onboarding.md +0 -61
- package/templates/.claude/agents/quality-reviewer.md +0 -85
- package/templates/.claude/agents-available/code-reviewer.md +0 -29
- package/templates/.claude/agents-available/codebase-explorer.md +0 -100
- package/templates/.claude/agents-available/dashboard-builder.md +0 -433
- package/templates/.claude/agents-available/debugger.md +0 -29
- package/templates/.claude/agents-available/dependency-mapper.md +0 -80
- package/templates/.claude/agents-available/dev-report.md +0 -108
- package/templates/.claude/agents-available/doc-writer.md +0 -107
- package/templates/.claude/agents-available/feature-builder.md +0 -163
- package/templates/.claude/agents-available/feature-planner.md +0 -185
- package/templates/.claude/agents-available/health-auditor.md +0 -95
- package/templates/.claude/agents-available/hooks-configurator.md +0 -211
- package/templates/.claude/agents-available/knowledge-bot.md +0 -62
- package/templates/.claude/agents-available/plan-executor.md +0 -133
- package/templates/.claude/agents-available/strategic-planner.md +0 -141
- package/templates/.claude/agents-available/test-gap-finder.md +0 -67
- package/templates/.claude/agents-available/test-writer.md +0 -34
- package/templates/.claude/agents-available/vulnerability-scanner.md +0 -173
- package/templates/.claude/commands/ask.md +0 -7
- package/templates/.claude/commands/build-feature.md +0 -26
- package/templates/.claude/commands/build.md.template +0 -30
- package/templates/.claude/commands/check.md.template +0 -43
- package/templates/.claude/commands/dashboard.md +0 -28
- package/templates/.claude/commands/deps.md +0 -15
- package/templates/.claude/commands/dev-report.md +0 -50
- package/templates/.claude/commands/docs.md +0 -21
- package/templates/.claude/commands/doctor.md +0 -21
- package/templates/.claude/commands/enable-agent.md +0 -12
- package/templates/.claude/commands/execute-plan.md +0 -25
- package/templates/.claude/commands/explore-codebase.md +0 -12
- package/templates/.claude/commands/export-pdf.md +0 -30
- package/templates/.claude/commands/feature.md +0 -25
- package/templates/.claude/commands/fix-issue.md +0 -12
- package/templates/.claude/commands/fix.md.template +0 -32
- package/templates/.claude/commands/health.md +0 -58
- package/templates/.claude/commands/help.md +0 -36
- package/templates/.claude/commands/learn.md +0 -48
- package/templates/.claude/commands/onboarding.md +0 -21
- package/templates/.claude/commands/plan.md +0 -20
- package/templates/.claude/commands/quality.md.template +0 -65
- package/templates/.claude/commands/session-end.md +0 -40
- package/templates/.claude/commands/session-start.md +0 -30
- package/templates/.claude/commands/setup-hooks.md +0 -18
- package/templates/.claude/commands/setup-pr-review.md +0 -72
- package/templates/.claude/commands/stealth-mode.md +0 -17
- package/templates/.claude/commands/test-gaps.md +0 -49
- package/templates/.claude/commands/test.md.template +0 -40
- package/templates/.claude/commands/vulnerabilities.md +0 -49
- package/templates/.claude/skills/build/SKILL.md.template +0 -98
- package/templates/.claude/skills/deploy/SKILL.md.template +0 -131
- package/templates/.claude/skills/deploy/references/gotchas.md +0 -5
- package/templates/.claude/skills/doctor/SKILL.md +0 -54
- package/templates/.claude/skills/gcloud/SKILL.md +0 -66
- package/templates/.claude/skills/gcloud/references/gotchas.md +0 -5
- package/templates/.claude/skills/learned/SKILL.md +0 -55
- package/templates/.claude/skills/learned/references/conventions.md +0 -11
- package/templates/.claude/skills/learned/references/deny-recommendations.md +0 -18
- package/templates/.claude/skills/learned/references/gotchas.md +0 -11
- package/templates/.claude/skills/pulumi/SKILL.md +0 -73
- package/templates/.claude/skills/quality/SKILL.md.template +0 -108
- package/templates/.claude/skills/quality/references/gotchas.md +0 -5
- package/templates/.claude/skills/review/SKILL.md.template +0 -73
- package/templates/.claude/skills/scaffold/SKILL.md.template +0 -123
- package/templates/.claude/skills/secrets/SKILL.md +0 -52
- package/templates/.claude/skills/session/SKILL.md +0 -43
- package/templates/.claude/skills/test/SKILL.md.template +0 -122
- package/templates/.claude/skills/test/references/gotchas.md +0 -5
- package/templates/.devcontainer/Dockerfile.dev.template +0 -89
- package/templates/.devcontainer/devcontainer.json.template +0 -184
- package/templates/.devcontainer/docker-compose.yml.template +0 -105
- package/templates/.devcontainer/init-scripts/01-init.sql.template +0 -12
- package/templates/.devcontainer/post-create.sh.template +0 -298
- package/templates/.github/workflows/ci.yml.template +0 -399
- package/templates/.github/workflows/quality.yml.template +0 -376
- package/templates/.pre-commit-config.yaml.template +0 -106
- package/templates/.project/config/edit_config.py +0 -275
- package/templates/.project/config/project_config.py +0 -894
- package/templates/.project/scripts/codegen/generate-all.sh +0 -20
- package/templates/.project/scripts/codegen/validate-all.sh +0 -17
- package/templates/.project/scripts/docs/generate-all.sh +0 -30
- package/templates/.project/scripts/docs/serve.sh +0 -20
- package/templates/.project/scripts/quality/fix-all.sh +0 -138
- package/templates/.project/scripts/quality/lint-go.sh +0 -34
- package/templates/.project/scripts/quality/lint-python.sh +0 -54
- package/templates/.project/scripts/quality/run-all.sh +0 -497
- package/templates/.project/scripts/session/commit.sh +0 -70
- package/templates/.project/scripts/session/create-pr.sh +0 -165
- package/templates/.project/scripts/session/end.sh +0 -207
- package/templates/.project/scripts/session/start.sh +0 -233
- package/templates/.project/scripts/setup/doctor.sh +0 -404
- package/templates/.project/scripts/setup/interactive-setup.sh +0 -585
- package/templates/.project/scripts/sync/sync-template.sh +0 -328
- package/templates/.project/scripts/test/run-all.sh +0 -179
- package/templates/.project/scripts/test/run-quick.sh +0 -25
- package/templates/Makefile +0 -514
- package/templates/config/versions.yaml +0 -57
- package/templates/configs/go/.golangci.yml.template +0 -172
- package/templates/configs/go/go.mod.template +0 -15
- package/templates/configs/java/README.md +0 -6
- package/templates/configs/kotlin/README.md +0 -6
- package/templates/configs/node/package.json.template +0 -67
- package/templates/configs/node/tsconfig.json.template +0 -53
- package/templates/configs/python/pyproject.toml.template +0 -92
- package/templates/configs/python/pytest.ini.template +0 -64
- package/templates/configs/python/ruff.toml.template +0 -79
- package/templates/configs/ruby/README.md +0 -6
- package/templates/configs/rust/Cargo.toml.template +0 -51
- package/templates/configs/shared/.editorconfig +0 -67
- package/templates/scripts/validate-templates.sh +0 -449
package/templates/Makefile
DELETED
|
@@ -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
|