@dewtech/dare-cli 3.3.0 → 3.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.
- package/LICENSE +21 -0
- package/README.md +764 -764
- package/dist/__tests__/confidence.test.js +13 -13
- package/dist/__tests__/dag-converter.test.js +56 -56
- package/dist/__tests__/dag-runner/buildLocateContext.test.d.ts +2 -0
- package/dist/__tests__/dag-runner/buildLocateContext.test.d.ts.map +1 -0
- package/dist/__tests__/dag-runner/buildLocateContext.test.js +53 -0
- package/dist/__tests__/dag-runner/buildLocateContext.test.js.map +1 -0
- package/dist/__tests__/dual-graph.test.d.ts +2 -0
- package/dist/__tests__/dual-graph.test.d.ts.map +1 -0
- package/dist/__tests__/dual-graph.test.js +141 -0
- package/dist/__tests__/dual-graph.test.js.map +1 -0
- package/dist/__tests__/graphrag/contract/traverse.contract.d.ts +9 -0
- package/dist/__tests__/graphrag/contract/traverse.contract.d.ts.map +1 -0
- package/dist/__tests__/graphrag/contract/traverse.contract.js +58 -0
- package/dist/__tests__/graphrag/contract/traverse.contract.js.map +1 -0
- package/dist/__tests__/graphrag/contract/traverse.contract.test.d.ts +2 -0
- package/dist/__tests__/graphrag/contract/traverse.contract.test.d.ts.map +1 -0
- package/dist/__tests__/graphrag/contract/traverse.contract.test.js +100 -0
- package/dist/__tests__/graphrag/contract/traverse.contract.test.js.map +1 -0
- package/dist/__tests__/graphrag/factory.test.js +10 -1
- package/dist/__tests__/graphrag/factory.test.js.map +1 -1
- package/dist/__tests__/graphrag/fixtures/dual-graph/build-fixture-graph.d.ts +11 -0
- package/dist/__tests__/graphrag/fixtures/dual-graph/build-fixture-graph.d.ts.map +1 -0
- package/dist/__tests__/graphrag/fixtures/dual-graph/build-fixture-graph.js +34 -0
- package/dist/__tests__/graphrag/fixtures/dual-graph/build-fixture-graph.js.map +1 -0
- package/dist/__tests__/graphrag/fixtures/dual-graph/fixtures.test.d.ts +2 -0
- package/dist/__tests__/graphrag/fixtures/dual-graph/fixtures.test.d.ts.map +1 -0
- package/dist/__tests__/graphrag/fixtures/dual-graph/fixtures.test.js +46 -0
- package/dist/__tests__/graphrag/fixtures/dual-graph/fixtures.test.js.map +1 -0
- package/dist/__tests__/graphrag/graph-rag.test.js +31 -0
- package/dist/__tests__/graphrag/graph-rag.test.js.map +1 -1
- package/dist/__tests__/graphrag/json-graph.test.js +57 -0
- package/dist/__tests__/graphrag/json-graph.test.js.map +1 -1
- package/dist/__tests__/graphrag/neo4j-graph.test.d.ts +2 -0
- package/dist/__tests__/graphrag/neo4j-graph.test.d.ts.map +1 -0
- package/dist/__tests__/graphrag/neo4j-graph.test.js +104 -0
- package/dist/__tests__/graphrag/neo4j-graph.test.js.map +1 -0
- package/dist/__tests__/graphrag/neo4j-persistence.test.d.ts +2 -0
- package/dist/__tests__/graphrag/neo4j-persistence.test.d.ts.map +1 -0
- package/dist/__tests__/graphrag/neo4j-persistence.test.js +110 -0
- package/dist/__tests__/graphrag/neo4j-persistence.test.js.map +1 -0
- package/dist/__tests__/mcp-server/server.test.js +3 -16
- package/dist/__tests__/mcp-server/server.test.js.map +1 -1
- package/dist/__tests__/project-generator.test.js +2 -2
- package/dist/__tests__/project-generator.test.js.map +1 -1
- package/dist/__tests__/refine.test.js +49 -49
- package/dist/__tests__/reverse-collection.test.js +6 -6
- package/dist/__tests__/review.test.js +38 -38
- package/dist/__tests__/security-hardening.test.d.ts +2 -0
- package/dist/__tests__/security-hardening.test.d.ts.map +1 -0
- package/dist/__tests__/security-hardening.test.js +101 -0
- package/dist/__tests__/security-hardening.test.js.map +1 -0
- package/dist/__tests__/validate.test.js +65 -65
- package/dist/bin/dare.js +0 -0
- package/dist/commands/__tests__/execute.telemetry.spec.js +9 -0
- package/dist/commands/__tests__/execute.telemetry.spec.js.map +1 -1
- package/dist/commands/__tests__/graph-viz-layers.test.d.ts +2 -0
- package/dist/commands/__tests__/graph-viz-layers.test.d.ts.map +1 -0
- package/dist/commands/__tests__/graph-viz-layers.test.js +36 -0
- package/dist/commands/__tests__/graph-viz-layers.test.js.map +1 -0
- package/dist/commands/__tests__/impact.test.d.ts +2 -0
- package/dist/commands/__tests__/impact.test.d.ts.map +1 -0
- package/dist/commands/__tests__/impact.test.js +26 -0
- package/dist/commands/__tests__/impact.test.js.map +1 -0
- package/dist/commands/__tests__/init-validation.test.d.ts +2 -0
- package/dist/commands/__tests__/init-validation.test.d.ts.map +1 -0
- package/dist/commands/__tests__/init-validation.test.js +81 -0
- package/dist/commands/__tests__/init-validation.test.js.map +1 -0
- package/dist/commands/__tests__/init.integration.spec.js +6 -4
- package/dist/commands/__tests__/init.integration.spec.js.map +1 -1
- package/dist/commands/__tests__/init.spec.d.ts +2 -0
- package/dist/commands/__tests__/init.spec.d.ts.map +1 -0
- package/dist/commands/__tests__/init.spec.js +88 -0
- package/dist/commands/__tests__/init.spec.js.map +1 -0
- package/dist/commands/__tests__/locate.test.d.ts +2 -0
- package/dist/commands/__tests__/locate.test.d.ts.map +1 -0
- package/dist/commands/__tests__/locate.test.js +35 -0
- package/dist/commands/__tests__/locate.test.js.map +1 -0
- package/dist/commands/__tests__/owners.test.d.ts +2 -0
- package/dist/commands/__tests__/owners.test.d.ts.map +1 -0
- package/dist/commands/__tests__/owners.test.js +34 -0
- package/dist/commands/__tests__/owners.test.js.map +1 -0
- package/dist/commands/__tests__/trace.test.d.ts +2 -0
- package/dist/commands/__tests__/trace.test.d.ts.map +1 -0
- package/dist/commands/__tests__/trace.test.js +29 -0
- package/dist/commands/__tests__/trace.test.js.map +1 -0
- package/dist/commands/blueprint.js +122 -122
- package/dist/commands/design.js +20 -20
- package/dist/commands/execute.d.ts.map +1 -1
- package/dist/commands/execute.js +11 -6
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/graph-queries.d.ts +48 -0
- package/dist/commands/graph-queries.d.ts.map +1 -0
- package/dist/commands/graph-queries.js +204 -0
- package/dist/commands/graph-queries.js.map +1 -0
- package/dist/commands/graph.d.ts +13 -0
- package/dist/commands/graph.d.ts.map +1 -1
- package/dist/commands/graph.js +212 -8
- package/dist/commands/graph.js.map +1 -1
- package/dist/commands/init-validation.d.ts +22 -0
- package/dist/commands/init-validation.d.ts.map +1 -0
- package/dist/commands/init-validation.js +54 -0
- package/dist/commands/init-validation.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +26 -10
- package/dist/commands/init.js.map +1 -1
- package/dist/dag-runner/__tests__/fixtures/src/math.d.ts +3 -0
- package/dist/dag-runner/__tests__/fixtures/src/math.d.ts.map +1 -0
- package/dist/dag-runner/__tests__/fixtures/src/math.js +7 -0
- package/dist/dag-runner/__tests__/fixtures/src/math.js.map +1 -0
- package/dist/dag-runner/__tests__/graph-ingest-symbols.test.d.ts +2 -0
- package/dist/dag-runner/__tests__/graph-ingest-symbols.test.d.ts.map +1 -0
- package/dist/dag-runner/__tests__/graph-ingest-symbols.test.js +81 -0
- package/dist/dag-runner/__tests__/graph-ingest-symbols.test.js.map +1 -0
- package/dist/dag-runner/graph-ingest.d.ts.map +1 -1
- package/dist/dag-runner/graph-ingest.js +46 -0
- package/dist/dag-runner/graph-ingest.js.map +1 -1
- package/dist/dag-runner/graph-locate.d.ts +11 -0
- package/dist/dag-runner/graph-locate.d.ts.map +1 -0
- package/dist/dag-runner/graph-locate.js +74 -0
- package/dist/dag-runner/graph-locate.js.map +1 -0
- package/dist/dag-runner/run_dag.d.ts +3 -1
- package/dist/dag-runner/run_dag.d.ts.map +1 -1
- package/dist/dag-runner/run_dag.js +2 -1
- package/dist/dag-runner/run_dag.js.map +1 -1
- package/dist/dag-runner/utils/stitch-context.d.ts +3 -1
- package/dist/dag-runner/utils/stitch-context.d.ts.map +1 -1
- package/dist/dag-runner/utils/stitch-context.js +8 -2
- package/dist/dag-runner/utils/stitch-context.js.map +1 -1
- package/dist/graphrag/__tests__/code-index.test.d.ts +2 -0
- package/dist/graphrag/__tests__/code-index.test.d.ts.map +1 -0
- package/dist/graphrag/__tests__/code-index.test.js +75 -0
- package/dist/graphrag/__tests__/code-index.test.js.map +1 -0
- package/dist/graphrag/__tests__/fixtures/code-index/sample.d.ts +5 -0
- package/dist/graphrag/__tests__/fixtures/code-index/sample.d.ts.map +1 -0
- package/dist/graphrag/__tests__/fixtures/code-index/sample.js +10 -0
- package/dist/graphrag/__tests__/fixtures/code-index/sample.js.map +1 -0
- package/dist/graphrag/__tests__/locate.test.d.ts +2 -0
- package/dist/graphrag/__tests__/locate.test.d.ts.map +1 -0
- package/dist/graphrag/__tests__/locate.test.js +43 -0
- package/dist/graphrag/__tests__/locate.test.js.map +1 -0
- package/dist/graphrag/__tests__/requirement-ingest.test.d.ts +2 -0
- package/dist/graphrag/__tests__/requirement-ingest.test.d.ts.map +1 -0
- package/dist/graphrag/__tests__/requirement-ingest.test.js +66 -0
- package/dist/graphrag/__tests__/requirement-ingest.test.js.map +1 -0
- package/dist/graphrag/__tests__/traverse.test.d.ts +2 -0
- package/dist/graphrag/__tests__/traverse.test.d.ts.map +1 -0
- package/dist/graphrag/__tests__/traverse.test.js +71 -0
- package/dist/graphrag/__tests__/traverse.test.js.map +1 -0
- package/dist/graphrag/__tests__/types.test.d.ts +2 -0
- package/dist/graphrag/__tests__/types.test.d.ts.map +1 -0
- package/dist/graphrag/__tests__/types.test.js +52 -0
- package/dist/graphrag/__tests__/types.test.js.map +1 -0
- package/dist/graphrag/code-index.d.ts +15 -0
- package/dist/graphrag/code-index.d.ts.map +1 -0
- package/dist/graphrag/code-index.js +205 -0
- package/dist/graphrag/code-index.js.map +1 -0
- package/dist/graphrag/factory.d.ts.map +1 -1
- package/dist/graphrag/factory.js +5 -0
- package/dist/graphrag/factory.js.map +1 -1
- package/dist/graphrag/graph-rag.d.ts +6 -2
- package/dist/graphrag/graph-rag.d.ts.map +1 -1
- package/dist/graphrag/graph-rag.js +64 -26
- package/dist/graphrag/graph-rag.js.map +1 -1
- package/dist/graphrag/index.d.ts +8 -2
- package/dist/graphrag/index.d.ts.map +1 -1
- package/dist/graphrag/index.js +5 -1
- package/dist/graphrag/index.js.map +1 -1
- package/dist/graphrag/json-graph.d.ts +8 -0
- package/dist/graphrag/json-graph.d.ts.map +1 -1
- package/dist/graphrag/json-graph.js +50 -4
- package/dist/graphrag/json-graph.js.map +1 -1
- package/dist/graphrag/knowledge-graph.d.ts +8 -3
- package/dist/graphrag/knowledge-graph.d.ts.map +1 -1
- package/dist/graphrag/neo4j-graph.d.ts +19 -18
- package/dist/graphrag/neo4j-graph.d.ts.map +1 -1
- package/dist/graphrag/neo4j-graph.js +164 -38
- package/dist/graphrag/neo4j-graph.js.map +1 -1
- package/dist/graphrag/requirement-ingest.d.ts +15 -0
- package/dist/graphrag/requirement-ingest.d.ts.map +1 -0
- package/dist/graphrag/requirement-ingest.js +158 -0
- package/dist/graphrag/requirement-ingest.js.map +1 -0
- package/dist/graphrag/traverse.d.ts +5 -0
- package/dist/graphrag/traverse.d.ts.map +1 -0
- package/dist/graphrag/traverse.js +139 -0
- package/dist/graphrag/traverse.js.map +1 -0
- package/dist/graphrag/types.d.ts +60 -2
- package/dist/graphrag/types.d.ts.map +1 -1
- package/dist/graphrag/types.js +34 -1
- package/dist/graphrag/types.js.map +1 -1
- package/dist/mcp-server/__tests__/auth.test.d.ts +2 -0
- package/dist/mcp-server/__tests__/auth.test.d.ts.map +1 -0
- package/dist/mcp-server/__tests__/auth.test.js +72 -0
- package/dist/mcp-server/__tests__/auth.test.js.map +1 -0
- package/dist/mcp-server/__tests__/boot-config.test.d.ts +2 -0
- package/dist/mcp-server/__tests__/boot-config.test.d.ts.map +1 -0
- package/dist/mcp-server/__tests__/boot-config.test.js +29 -0
- package/dist/mcp-server/__tests__/boot-config.test.js.map +1 -0
- package/dist/mcp-server/__tests__/error-sanitize.test.d.ts +2 -0
- package/dist/mcp-server/__tests__/error-sanitize.test.d.ts.map +1 -0
- package/dist/mcp-server/__tests__/error-sanitize.test.js +66 -0
- package/dist/mcp-server/__tests__/error-sanitize.test.js.map +1 -0
- package/dist/mcp-server/__tests__/mcp-graph.test.d.ts +2 -0
- package/dist/mcp-server/__tests__/mcp-graph.test.d.ts.map +1 -0
- package/dist/mcp-server/__tests__/mcp-graph.test.js +85 -0
- package/dist/mcp-server/__tests__/mcp-graph.test.js.map +1 -0
- package/dist/mcp-server/__tests__/path-confinement.test.d.ts +2 -0
- package/dist/mcp-server/__tests__/path-confinement.test.d.ts.map +1 -0
- package/dist/mcp-server/__tests__/path-confinement.test.js +135 -0
- package/dist/mcp-server/__tests__/path-confinement.test.js.map +1 -0
- package/dist/mcp-server/bin/server.js +18 -6
- package/dist/mcp-server/bin/server.js.map +1 -1
- package/dist/mcp-server/boot-config.d.ts +6 -0
- package/dist/mcp-server/boot-config.d.ts.map +1 -0
- package/dist/mcp-server/boot-config.js +17 -0
- package/dist/mcp-server/boot-config.js.map +1 -0
- package/dist/mcp-server/middleware/auth.d.ts +10 -0
- package/dist/mcp-server/middleware/auth.d.ts.map +1 -0
- package/dist/mcp-server/middleware/auth.js +44 -0
- package/dist/mcp-server/middleware/auth.js.map +1 -0
- package/dist/mcp-server/middleware/cors.d.ts +6 -0
- package/dist/mcp-server/middleware/cors.d.ts.map +1 -0
- package/dist/mcp-server/middleware/cors.js +30 -0
- package/dist/mcp-server/middleware/cors.js.map +1 -0
- package/dist/mcp-server/middleware/error-handler.d.ts +11 -0
- package/dist/mcp-server/middleware/error-handler.d.ts.map +1 -0
- package/dist/mcp-server/middleware/error-handler.js +14 -0
- package/dist/mcp-server/middleware/error-handler.js.map +1 -0
- package/dist/mcp-server/server.d.ts +7 -2
- package/dist/mcp-server/server.d.ts.map +1 -1
- package/dist/mcp-server/server.js +290 -105
- package/dist/mcp-server/server.js.map +1 -1
- package/dist/skills/registry-mock.json +109 -109
- package/dist/skills/tests/manifest.spec.js +20 -20
- package/dist/stacks/__tests__/dna-emitter.spec.js +6 -6
- package/dist/stacks/dna-emitter.js +69 -69
- package/dist/stacks/ruby-rails-8/scaffold.js +15 -15
- package/dist/utils/__tests__/static-analyzer-exports.test.d.ts +2 -0
- package/dist/utils/__tests__/static-analyzer-exports.test.d.ts.map +1 -0
- package/dist/utils/__tests__/static-analyzer-exports.test.js +21 -0
- package/dist/utils/__tests__/static-analyzer-exports.test.js.map +1 -0
- package/dist/utils/project-generator.d.ts.map +1 -1
- package/dist/utils/project-generator.js +266 -252
- package/dist/utils/project-generator.js.map +1 -1
- package/dist/utils/stack-bootstrap.js +371 -371
- package/dist/utils/static-analyzer.d.ts +9 -0
- package/dist/utils/static-analyzer.d.ts.map +1 -1
- package/dist/utils/static-analyzer.js +2 -2
- package/dist/utils/static-analyzer.js.map +1 -1
- package/dist/utils/templates.js +394 -394
- package/dist/verification/__tests__/anti-tamper.test.js +13 -13
- package/dist/verification/__tests__/telemetry.test.js +9 -0
- package/dist/verification/__tests__/telemetry.test.js.map +1 -1
- package/package.json +96 -93
- package/templates/DARE-dag-example.yaml +280 -280
- package/templates/UPDATE-MANIFEST.json +68 -68
- package/templates/backend/node-nestjs/.env.example +9 -9
- package/templates/backend/node-nestjs/nest-cli.json +8 -8
- package/templates/backend/node-nestjs/package.json +50 -50
- package/templates/backend/node-nestjs/src/app.controller.ts +12 -12
- package/templates/backend/node-nestjs/src/app.module.ts +15 -15
- package/templates/backend/node-nestjs/src/app.service.ts +8 -8
- package/templates/backend/node-nestjs/src/main.ts +24 -24
- package/templates/backend/node-nestjs/tsconfig.json +21 -21
- package/templates/backend/php-laravel/.env.example +22 -22
- package/templates/backend/php-laravel/app/Http/Controllers/HealthController.php +15 -15
- package/templates/backend/php-laravel/composer.json +40 -40
- package/templates/backend/python-fastapi/.env.example +4 -4
- package/templates/backend/python-fastapi/app/api/router.py +8 -8
- package/templates/backend/python-fastapi/app/core/config.py +20 -20
- package/templates/backend/python-fastapi/main.py +35 -35
- package/templates/backend/python-fastapi/requirements.txt +13 -13
- package/templates/backend/rust-axum/.env.example +3 -3
- package/templates/backend/rust-axum/Cargo.toml +23 -23
- package/templates/backend/rust-axum/src/errors.rs +30 -30
- package/templates/backend/rust-axum/src/main.rs +32 -32
- package/templates/backend/rust-axum/src/routes.rs +6 -6
- package/templates/frontend/leptos-csr/.cargo/config.toml +2 -2
- package/templates/frontend/leptos-csr/Cargo.toml +16 -16
- package/templates/frontend/leptos-csr/Trunk.toml +10 -10
- package/templates/frontend/leptos-csr/index.html +11 -11
- package/templates/frontend/leptos-csr/src/lib.rs +20 -20
- package/templates/frontend/leptos-csr/style/main.scss +19 -19
- package/templates/frontend/leptos-fullstack/.cargo/config.toml +4 -4
- package/templates/frontend/leptos-fullstack/Cargo.toml +56 -56
- package/templates/frontend/leptos-fullstack/src/app.rs +49 -49
- package/templates/frontend/leptos-fullstack/src/lib.rs +9 -9
- package/templates/frontend/leptos-fullstack/src/main.rs +29 -29
- package/templates/frontend/leptos-fullstack/style/main.scss +19 -19
- package/templates/frontend/react/index.html +12 -12
- package/templates/frontend/react/package.json +35 -35
- package/templates/frontend/react/src/App.tsx +25 -25
- package/templates/frontend/react/src/main.tsx +9 -9
- package/templates/frontend/vue/package.json +32 -32
- package/templates/frontend/vue/src/App.vue +7 -7
- package/templates/frontend/vue/src/main.ts +10 -10
- package/templates/frontend/vue/src/router/index.ts +14 -14
- package/templates/frontend/vue/src/views/HomeView.vue +6 -6
- package/templates/hooks/pre-commit-dare-validate +24 -24
- package/templates/ide/antigravity/.agents/skills/dare-ax/SKILL.md +152 -152
- package/templates/ide/antigravity/.agents/skills/dare-bench/SKILL.md +21 -21
- package/templates/ide/antigravity/.agents/skills/dare-blueprint/SKILL.md +368 -368
- package/templates/ide/antigravity/.agents/skills/dare-bootstrap/SKILL.md +32 -32
- package/templates/ide/antigravity/.agents/skills/dare-bugfix-design/SKILL.md +76 -76
- package/templates/ide/antigravity/.agents/skills/dare-dag/SKILL.md +32 -32
- package/templates/ide/antigravity/.agents/skills/dare-dag-build/SKILL.md +154 -154
- package/templates/ide/antigravity/.agents/skills/dare-dag-run/SKILL.md +130 -130
- package/templates/ide/antigravity/.agents/skills/dare-dag-runner/SKILL.md +203 -203
- package/templates/ide/antigravity/.agents/skills/dare-design/SKILL.md +180 -180
- package/templates/ide/antigravity/.agents/skills/dare-discover/SKILL.md +33 -33
- package/templates/ide/antigravity/.agents/skills/dare-dna/SKILL.md +63 -63
- package/templates/ide/antigravity/.agents/skills/dare-docker/SKILL.md +315 -315
- package/templates/ide/antigravity/.agents/skills/dare-execute/SKILL.md +264 -264
- package/templates/ide/antigravity/.agents/skills/dare-feature-design/SKILL.md +74 -74
- package/templates/ide/antigravity/.agents/skills/dare-frontend-design/SKILL.md +192 -192
- package/templates/ide/antigravity/.agents/skills/dare-graph/SKILL.md +35 -35
- package/templates/ide/antigravity/.agents/skills/dare-info/SKILL.md +31 -31
- package/templates/ide/antigravity/.agents/skills/dare-init/SKILL.md +35 -35
- package/templates/ide/antigravity/.agents/skills/dare-laravel-api/SKILL.md +337 -337
- package/templates/ide/antigravity/.agents/skills/dare-layered-design/SKILL.md +166 -166
- package/templates/ide/antigravity/.agents/skills/dare-llm-integration/SKILL.md +217 -217
- package/templates/ide/antigravity/.agents/skills/dare-migrate/SKILL.md +61 -61
- package/templates/ide/antigravity/.agents/skills/dare-quality-telemetry/SKILL.md +187 -187
- package/templates/ide/antigravity/.agents/skills/dare-realtime/SKILL.md +217 -217
- package/templates/ide/antigravity/.agents/skills/dare-refine/SKILL.md +114 -114
- package/templates/ide/antigravity/.agents/skills/dare-reverse/SKILL.md +108 -108
- package/templates/ide/antigravity/.agents/skills/dare-review/SKILL.md +111 -111
- package/templates/ide/antigravity/.agents/skills/dare-rust-leptos/SKILL.md +263 -263
- package/templates/ide/antigravity/.agents/skills/dare-rust-workspace/SKILL.md +275 -275
- package/templates/ide/antigravity/.agents/skills/dare-security/SKILL.md +274 -274
- package/templates/ide/antigravity/.agents/skills/dare-skill/SKILL.md +35 -35
- package/templates/ide/antigravity/.agents/skills/dare-tasks/SKILL.md +265 -265
- package/templates/ide/antigravity/.agents/skills/dare-telemetry/SKILL.md +188 -188
- package/templates/ide/antigravity/.agents/skills/dare-update/SKILL.md +33 -33
- package/templates/ide/antigravity/.agents/skills/dare-validate/SKILL.md +33 -33
- package/templates/ide/antigravity/.agents/skills/dare-welcome/SKILL.md +30 -30
- package/templates/ide/antigravity/.agents/skills/skill-fastapi-api/SKILL.md +343 -343
- package/templates/ide/antigravity/.agents/skills/skill-go-gin-api/SKILL.md +377 -377
- package/templates/ide/antigravity/.agents/skills/skill-mcp-server/SKILL.md +382 -382
- package/templates/ide/antigravity/.agents/skills/skill-nestjs-api/SKILL.md +326 -326
- package/templates/ide/antigravity/.agents/skills/skill-rails-api/SKILL.md +393 -393
- package/templates/ide/antigravity/templates/BLUEPRINT-template.md +193 -193
- package/templates/ide/antigravity/templates/DESIGN-template.md +129 -129
- package/templates/ide/antigravity/templates/TASK-SPEC-template.md +141 -141
- package/templates/ide/antigravity/templates/TASKS-template.md +26 -26
- package/templates/ide/antigravity/templates/TELEMETRY-template.md +125 -125
- package/templates/ide/claude/.claude/commands/dare-ax.md +131 -131
- package/templates/ide/claude/.claude/commands/dare-bench.md +18 -18
- package/templates/ide/claude/.claude/commands/dare-blueprint.md +134 -134
- package/templates/ide/claude/.claude/commands/dare-bootstrap.md +27 -27
- package/templates/ide/claude/.claude/commands/dare-bugfix-design.md +119 -119
- package/templates/ide/claude/.claude/commands/dare-dag-build.md +151 -151
- package/templates/ide/claude/.claude/commands/dare-dag-run.md +109 -109
- package/templates/ide/claude/.claude/commands/dare-dag-runner.md +117 -117
- package/templates/ide/claude/.claude/commands/dare-dag-viz.md +197 -197
- package/templates/ide/claude/.claude/commands/dare-dag.md +27 -27
- package/templates/ide/claude/.claude/commands/dare-design.md +69 -69
- package/templates/ide/claude/.claude/commands/dare-discover.md +28 -28
- package/templates/ide/claude/.claude/commands/dare-dna.md +75 -75
- package/templates/ide/claude/.claude/commands/dare-docker.md +207 -207
- package/templates/ide/claude/.claude/commands/dare-execute.md +152 -152
- package/templates/ide/claude/.claude/commands/dare-feature-design.md +147 -147
- package/templates/ide/claude/.claude/commands/dare-frontend-design.md +149 -149
- package/templates/ide/claude/.claude/commands/dare-graph.md +30 -30
- package/templates/ide/claude/.claude/commands/dare-info.md +26 -26
- package/templates/ide/claude/.claude/commands/dare-init.md +30 -30
- package/templates/ide/claude/.claude/commands/dare-laravel-api.md +211 -211
- package/templates/ide/claude/.claude/commands/dare-layered-design.md +124 -124
- package/templates/ide/claude/.claude/commands/dare-llm-integration.md +148 -148
- package/templates/ide/claude/.claude/commands/dare-migrate.md +72 -72
- package/templates/ide/claude/.claude/commands/dare-quality-telemetry.md +166 -166
- package/templates/ide/claude/.claude/commands/dare-realtime.md +159 -159
- package/templates/ide/claude/.claude/commands/dare-refine.md +145 -145
- package/templates/ide/claude/.claude/commands/dare-reverse.md +139 -139
- package/templates/ide/claude/.claude/commands/dare-review.md +113 -113
- package/templates/ide/claude/.claude/commands/dare-rust-leptos.md +269 -269
- package/templates/ide/claude/.claude/commands/dare-rust-workspace.md +209 -209
- package/templates/ide/claude/.claude/commands/dare-security.md +232 -232
- package/templates/ide/claude/.claude/commands/dare-skill.md +30 -30
- package/templates/ide/claude/.claude/commands/dare-tasks.md +70 -70
- package/templates/ide/claude/.claude/commands/dare-telemetry.md +132 -132
- package/templates/ide/claude/.claude/commands/dare-update.md +28 -28
- package/templates/ide/claude/.claude/commands/dare-validate.md +28 -28
- package/templates/ide/claude/.claude/commands/dare-welcome.md +25 -25
- package/templates/ide/claude/.claude/commands/skill-fastapi-api.md +205 -205
- package/templates/ide/claude/.claude/commands/skill-go-gin-api.md +232 -232
- package/templates/ide/claude/.claude/commands/skill-mcp-server.md +228 -228
- package/templates/ide/claude/.claude/commands/skill-nestjs-api.md +210 -210
- package/templates/ide/claude/.claude/commands/skill-rails-api.md +236 -236
- package/templates/ide/claude/.claude/settings.example.json +35 -35
- package/templates/ide/claude/CLAUDE.md +146 -146
- package/templates/ide/claude/templates/BLUEPRINT-template.md +193 -193
- package/templates/ide/claude/templates/DESIGN-template.md +129 -129
- package/templates/ide/claude/templates/TASK-SPEC-template.md +141 -141
- package/templates/ide/claude/templates/TASKS-template.md +26 -26
- package/templates/ide/claude/templates/TELEMETRY-template.md +125 -125
- package/templates/ide/cursor/.cursor/commands/dare-bench.md +18 -18
- package/templates/ide/cursor/.cursor/commands/dare-blueprint.md +86 -86
- package/templates/ide/cursor/.cursor/commands/dare-bootstrap.md +27 -27
- package/templates/ide/cursor/.cursor/commands/dare-bugfix-design.md +64 -64
- package/templates/ide/cursor/.cursor/commands/dare-dag-run.md +110 -110
- package/templates/ide/cursor/.cursor/commands/dare-dag-viz.md +139 -139
- package/templates/ide/cursor/.cursor/commands/dare-dag.md +27 -27
- package/templates/ide/cursor/.cursor/commands/dare-design.md +35 -35
- package/templates/ide/cursor/.cursor/commands/dare-discover.md +28 -28
- package/templates/ide/cursor/.cursor/commands/dare-dna.md +75 -75
- package/templates/ide/cursor/.cursor/commands/dare-docker-compose.md +18 -18
- package/templates/ide/cursor/.cursor/commands/dare-dockerfile.md +17 -17
- package/templates/ide/cursor/.cursor/commands/dare-execute.md +19 -19
- package/templates/ide/cursor/.cursor/commands/dare-feature-design.md +64 -64
- package/templates/ide/cursor/.cursor/commands/dare-graph.md +30 -30
- package/templates/ide/cursor/.cursor/commands/dare-info.md +26 -26
- package/templates/ide/cursor/.cursor/commands/dare-init.md +30 -30
- package/templates/ide/cursor/.cursor/commands/dare-migrate.md +72 -72
- package/templates/ide/cursor/.cursor/commands/dare-refine.md +107 -107
- package/templates/ide/cursor/.cursor/commands/dare-reverse.md +139 -139
- package/templates/ide/cursor/.cursor/commands/dare-review.md +91 -91
- package/templates/ide/cursor/.cursor/commands/dare-skill.md +30 -30
- package/templates/ide/cursor/.cursor/commands/dare-tasks.md +184 -184
- package/templates/ide/cursor/.cursor/commands/dare-telemetry.md +42 -42
- package/templates/ide/cursor/.cursor/commands/dare-update.md +28 -28
- package/templates/ide/cursor/.cursor/commands/dare-validate.md +28 -28
- package/templates/ide/cursor/.cursor/commands/dare-welcome.md +25 -25
- package/templates/ide/cursor/.cursor/rules/skill-ax.mdc +263 -263
- package/templates/ide/cursor/.cursor/rules/skill-bugfix-design.mdc +51 -51
- package/templates/ide/cursor/.cursor/rules/skill-dag-build.mdc +173 -173
- package/templates/ide/cursor/.cursor/rules/skill-dag-run.mdc +134 -134
- package/templates/ide/cursor/.cursor/rules/skill-dag-runner.mdc +221 -221
- package/templates/ide/cursor/.cursor/rules/skill-dna.mdc +63 -63
- package/templates/ide/cursor/.cursor/rules/skill-docker.mdc +33 -33
- package/templates/ide/cursor/.cursor/rules/skill-fastapi-api.mdc +352 -352
- package/templates/ide/cursor/.cursor/rules/skill-feature-design.mdc +43 -43
- package/templates/ide/cursor/.cursor/rules/skill-frontend-design.mdc +244 -244
- package/templates/ide/cursor/.cursor/rules/skill-go-gin-api.mdc +371 -371
- package/templates/ide/cursor/.cursor/rules/skill-laravel-api.mdc +44 -44
- package/templates/ide/cursor/.cursor/rules/skill-layered-design.mdc +266 -266
- package/templates/ide/cursor/.cursor/rules/skill-llm-integration.mdc +295 -295
- package/templates/ide/cursor/.cursor/rules/skill-mcp-server.mdc +367 -367
- package/templates/ide/cursor/.cursor/rules/skill-migrate.mdc +58 -58
- package/templates/ide/cursor/.cursor/rules/skill-nestjs-api.mdc +346 -346
- package/templates/ide/cursor/.cursor/rules/skill-quality-telemetry.mdc +248 -248
- package/templates/ide/cursor/.cursor/rules/skill-rails-api.mdc +400 -400
- package/templates/ide/cursor/.cursor/rules/skill-realtime.mdc +262 -262
- package/templates/ide/cursor/.cursor/rules/skill-reverse.mdc +107 -107
- package/templates/ide/cursor/.cursor/rules/skill-rust-leptos.mdc +281 -281
- package/templates/ide/cursor/.cursor/rules/skill-rust-workspace.mdc +312 -312
- package/templates/ide/cursor/.cursor/rules/skill-security.mdc +245 -245
- package/templates/ide/cursor/.cursor/rules/skill-telemetry.mdc +156 -156
- package/templates/ide/cursor/templates/BLUEPRINT-template.md +193 -193
- package/templates/ide/cursor/templates/DESIGN-template.md +129 -129
- package/templates/ide/cursor/templates/TASK-SPEC-template.md +141 -141
- package/templates/ide/cursor/templates/TASKS-template.md +26 -26
- package/templates/ide/cursor/templates/TELEMETRY-template.md +125 -125
- package/templates/shared/docker-compose.yml +41 -41
- package/templates/stacks/go-gin/.dare/skills.yml +11 -11
- package/templates/stacks/go-gin/.env.example +24 -24
- package/templates/stacks/go-gin/.github/workflows/dare-ci.yml +42 -42
- package/templates/stacks/go-gin/README.md.tpl +38 -38
- package/templates/stacks/go-gin/cmd/server/main.go.tpl +78 -78
- package/templates/stacks/go-gin/db/migrations/0001_create_users.down.sql +2 -2
- package/templates/stacks/go-gin/db/migrations/0001_create_users.up.sql +12 -12
- package/templates/stacks/go-gin/db/queries/users.sql +23 -23
- package/templates/stacks/go-gin/gitignore +7 -7
- package/templates/stacks/go-gin/go.mod.tpl +17 -17
- package/templates/stacks/go-gin/internal/config/config.go +41 -41
- package/templates/stacks/go-gin/internal/db/postgres.go.tpl +25 -25
- package/templates/stacks/go-gin/internal/handler/auth_handler.go.tpl +72 -72
- package/templates/stacks/go-gin/internal/handler/users_handler.go.tpl +72 -72
- package/templates/stacks/go-gin/internal/handler/ws_handler.go +37 -37
- package/templates/stacks/go-gin/internal/llm/dummy.go +14 -14
- package/templates/stacks/go-gin/internal/llm/provider.go +8 -8
- package/templates/stacks/go-gin/internal/middleware/jwt.go.tpl +58 -58
- package/templates/stacks/go-gin/internal/middleware/rate_limit.go +55 -55
- package/templates/stacks/go-gin/internal/model/user.go +17 -17
- package/templates/stacks/go-gin/internal/repository/users_repository.go.tpl +79 -79
- package/templates/stacks/go-gin/internal/service/auth_service.go.tpl +55 -55
- package/templates/stacks/go-gin/internal/service/users_service.go.tpl +53 -53
- package/templates/stacks/go-gin/llms.txt.tpl +54 -54
- package/templates/stacks/go-gin/openapi.json.tpl +46 -46
- package/templates/stacks/go-gin/sqlc.yaml +14 -14
- package/templates/stacks/go-gin/tests/smoke_test.go.tpl +22 -22
- package/templates/stacks/go-stdlib/.dare/skills.yml +11 -11
- package/templates/stacks/go-stdlib/.env.example +24 -24
- package/templates/stacks/go-stdlib/.github/workflows/dare-ci.yml +42 -42
- package/templates/stacks/go-stdlib/README.md.tpl +41 -41
- package/templates/stacks/go-stdlib/cmd/server/main.go.tpl +82 -82
- package/templates/stacks/go-stdlib/db/migrations/0001_create_users.down.sql +2 -2
- package/templates/stacks/go-stdlib/db/migrations/0001_create_users.up.sql +12 -12
- package/templates/stacks/go-stdlib/db/queries/users.sql +23 -23
- package/templates/stacks/go-stdlib/gitignore +6 -6
- package/templates/stacks/go-stdlib/go.mod.tpl +15 -15
- package/templates/stacks/go-stdlib/internal/config/config.go +41 -41
- package/templates/stacks/go-stdlib/internal/db/postgres.go.tpl +24 -24
- package/templates/stacks/go-stdlib/internal/handler/auth_handler.go.tpl +71 -71
- package/templates/stacks/go-stdlib/internal/handler/users_handler.go.tpl +84 -84
- package/templates/stacks/go-stdlib/internal/handler/ws_handler.go +36 -36
- package/templates/stacks/go-stdlib/internal/httpx/json.go +32 -32
- package/templates/stacks/go-stdlib/internal/llm/dummy.go +14 -14
- package/templates/stacks/go-stdlib/internal/llm/provider.go +8 -8
- package/templates/stacks/go-stdlib/internal/middleware/chain.go +21 -21
- package/templates/stacks/go-stdlib/internal/middleware/cors.go +27 -27
- package/templates/stacks/go-stdlib/internal/middleware/jwt.go.tpl +51 -51
- package/templates/stacks/go-stdlib/internal/middleware/rate_limit.go +81 -81
- package/templates/stacks/go-stdlib/internal/model/user.go +17 -17
- package/templates/stacks/go-stdlib/internal/repository/users_repository.go.tpl +75 -75
- package/templates/stacks/go-stdlib/internal/service/auth_service.go.tpl +55 -55
- package/templates/stacks/go-stdlib/internal/service/users_service.go.tpl +53 -53
- package/templates/stacks/go-stdlib/llms.txt.tpl +60 -60
- package/templates/stacks/go-stdlib/openapi.json.tpl +46 -46
- package/templates/stacks/go-stdlib/sqlc.yaml +14 -14
- package/templates/stacks/go-stdlib/tests/smoke_test.go.tpl +45 -45
- package/templates/stacks/mcp-go/.dare/skills.yml +8 -8
- package/templates/stacks/mcp-go/.env.example +14 -14
- package/templates/stacks/mcp-go/.github/workflows/dare-ci.yml +42 -42
- package/templates/stacks/mcp-go/README.md.tpl +50 -50
- package/templates/stacks/mcp-go/cmd/server/main.go.tpl +62 -62
- package/templates/stacks/mcp-go/gitignore +6 -6
- package/templates/stacks/mcp-go/go.mod.tpl +9 -9
- package/templates/stacks/mcp-go/internal/prompts/summarize.go +9 -9
- package/templates/stacks/mcp-go/internal/server/server.go.tpl +80 -80
- package/templates/stacks/mcp-go/internal/tools/echo.go +15 -15
- package/templates/stacks/mcp-go/internal/transports/http.go.tpl +21 -21
- package/templates/stacks/mcp-go/internal/transports/sse.go.tpl +17 -17
- package/templates/stacks/mcp-go/internal/transports/stdio.go.tpl +14 -14
- package/templates/stacks/mcp-go/llms.txt.tpl +60 -60
- package/templates/stacks/mcp-go/openapi.json.tpl +31 -31
- package/templates/stacks/mcp-go/tests/echo_test.go.tpl +37 -37
- package/templates/stacks/mcp-node-ts/.dare/skills.yml +8 -8
- package/templates/stacks/mcp-node-ts/.env.example +16 -16
- package/templates/stacks/mcp-node-ts/.github/workflows/dare-ci.yml +54 -54
- package/templates/stacks/mcp-node-ts/README.md.hbs +49 -49
- package/templates/stacks/mcp-node-ts/gitignore +7 -7
- package/templates/stacks/mcp-node-ts/llms.txt.hbs +61 -61
- package/templates/stacks/mcp-node-ts/openapi.json.hbs +39 -39
- package/templates/stacks/mcp-node-ts/package.json.hbs +35 -35
- package/templates/stacks/mcp-node-ts/src/cli.ts.hbs +71 -71
- package/templates/stacks/mcp-node-ts/src/prompts/index.ts +36 -36
- package/templates/stacks/mcp-node-ts/src/server.ts.hbs +45 -45
- package/templates/stacks/mcp-node-ts/src/tools/echo.ts +23 -23
- package/templates/stacks/mcp-node-ts/src/tools/index.ts +18 -18
- package/templates/stacks/mcp-node-ts/src/transports/http.ts +68 -68
- package/templates/stacks/mcp-node-ts/src/transports/sse.ts +58 -58
- package/templates/stacks/mcp-node-ts/src/transports/stdio.ts +5 -5
- package/templates/stacks/mcp-node-ts/tests/echo.test.ts +50 -50
- package/templates/stacks/mcp-node-ts/tsconfig.json +17 -17
- package/templates/stacks/mcp-python/.dare/skills.yml +8 -8
- package/templates/stacks/mcp-python/.env.example +14 -14
- package/templates/stacks/mcp-python/.github/workflows/dare-ci.yml +42 -42
- package/templates/stacks/mcp-python/README.md.j2 +49 -49
- package/templates/stacks/mcp-python/gitignore +12 -12
- package/templates/stacks/mcp-python/llms.txt.j2 +56 -56
- package/templates/stacks/mcp-python/openapi.json.j2 +33 -33
- package/templates/stacks/mcp-python/pyproject.toml.j2 +37 -37
- package/templates/stacks/mcp-python/src/cli.py.j2 +68 -68
- package/templates/stacks/mcp-python/src/prompts/summarize.py +10 -10
- package/templates/stacks/mcp-python/src/server.py.j2 +28 -28
- package/templates/stacks/mcp-python/src/tools/echo.py +12 -12
- package/templates/stacks/mcp-python/src/transports/http.py +12 -12
- package/templates/stacks/mcp-python/src/transports/sse.py +13 -13
- package/templates/stacks/mcp-python/src/transports/stdio.py +6 -6
- package/templates/stacks/mcp-python/tests/test_echo.py +28 -28
- package/templates/stacks/mcp-rust/.dare/skills.yml +8 -8
- package/templates/stacks/mcp-rust/.env.example +14 -14
- package/templates/stacks/mcp-rust/.github/workflows/dare-ci.yml +38 -38
- package/templates/stacks/mcp-rust/Cargo.toml.tera +35 -35
- package/templates/stacks/mcp-rust/README.md.tera +50 -50
- package/templates/stacks/mcp-rust/gitignore +5 -5
- package/templates/stacks/mcp-rust/llms.txt.tera +60 -60
- package/templates/stacks/mcp-rust/openapi.json.tera +31 -31
- package/templates/stacks/mcp-rust/src/cli.rs.tera +33 -33
- package/templates/stacks/mcp-rust/src/lib.rs +6 -6
- package/templates/stacks/mcp-rust/src/main.rs.tera +30 -30
- package/templates/stacks/mcp-rust/src/prompts/mod.rs +1 -1
- package/templates/stacks/mcp-rust/src/prompts/summarize.rs +5 -5
- package/templates/stacks/mcp-rust/src/server.rs.tera +38 -38
- package/templates/stacks/mcp-rust/src/tools/echo.rs +18 -18
- package/templates/stacks/mcp-rust/src/tools/mod.rs +22 -22
- package/templates/stacks/mcp-rust/src/transports/http.rs +27 -27
- package/templates/stacks/mcp-rust/src/transports/mod.rs +3 -3
- package/templates/stacks/mcp-rust/src/transports/sse.rs +33 -33
- package/templates/stacks/mcp-rust/src/transports/stdio.rs +14 -14
- package/templates/stacks/mcp-rust/tests/echo_test.rs.tera +27 -27
- package/templates/stacks/node-nestjs/.dare/skills.yml +11 -11
- package/templates/stacks/node-nestjs/.env.example +21 -21
- package/templates/stacks/node-nestjs/.github/workflows/dare-ci.yml +54 -54
- package/templates/stacks/node-nestjs/README.md.hbs +35 -35
- package/templates/stacks/node-nestjs/gitignore +7 -7
- package/templates/stacks/node-nestjs/llms.txt.hbs +47 -47
- package/templates/stacks/node-nestjs/nest-cli.json +16 -16
- package/templates/stacks/node-nestjs/openapi.json.hbs +75 -75
- package/templates/stacks/node-nestjs/package.json.hbs +57 -57
- package/templates/stacks/node-nestjs/prisma/schema.prisma +25 -25
- package/templates/stacks/node-nestjs/prisma/seed.ts.hbs +25 -25
- package/templates/stacks/node-nestjs/src/app.module.ts +39 -39
- package/templates/stacks/node-nestjs/src/auth/auth.controller.ts +29 -29
- package/templates/stacks/node-nestjs/src/auth/auth.module.ts +25 -25
- package/templates/stacks/node-nestjs/src/auth/auth.service.ts +36 -36
- package/templates/stacks/node-nestjs/src/auth/dto/login-response.dto.ts +9 -9
- package/templates/stacks/node-nestjs/src/auth/dto/login.dto.ts +17 -17
- package/templates/stacks/node-nestjs/src/auth/jwt.strategy.ts +25 -25
- package/templates/stacks/node-nestjs/src/common/filters/problem-details.filter.ts +38 -38
- package/templates/stacks/node-nestjs/src/common/interceptors/json-response.interceptor.ts +13 -13
- package/templates/stacks/node-nestjs/src/main.ts.hbs +44 -44
- package/templates/stacks/node-nestjs/src/prisma/prisma.module.ts +9 -9
- package/templates/stacks/node-nestjs/src/prisma/prisma.service.ts +9 -9
- package/templates/stacks/node-nestjs/src/users/dto/create-user.dto.ts +22 -22
- package/templates/stacks/node-nestjs/src/users/dto/user.dto.ts +15 -15
- package/templates/stacks/node-nestjs/src/users/users.controller.ts +41 -41
- package/templates/stacks/node-nestjs/src/users/users.module.ts +11 -11
- package/templates/stacks/node-nestjs/src/users/users.repository.ts +38 -38
- package/templates/stacks/node-nestjs/src/users/users.service.ts +38 -38
- package/templates/stacks/node-nestjs/tsconfig.build.json +4 -4
- package/templates/stacks/node-nestjs/tsconfig.json +28 -28
- package/templates/stacks/php-laravel/.dare/skills.yml +11 -11
- package/templates/stacks/php-laravel/.env.example +41 -41
- package/templates/stacks/php-laravel/.github/workflows/dare-ci.yml +43 -43
- package/templates/stacks/php-laravel/README.md.hbs +36 -36
- package/templates/stacks/php-laravel/app/Http/Controllers/Api/AuthController.php +36 -36
- package/templates/stacks/php-laravel/app/Http/Controllers/Api/UsersController.php +33 -33
- package/templates/stacks/php-laravel/app/Http/Requests/CreateUserRequest.php +26 -26
- package/templates/stacks/php-laravel/app/Http/Requests/LoginRequest.php +34 -34
- package/templates/stacks/php-laravel/app/Llm/Contracts/LlmProvider.php +12 -12
- package/templates/stacks/php-laravel/app/Llm/Providers/DummyProvider.php +13 -13
- package/templates/stacks/php-laravel/app/Llm/Providers/OpenAiProvider.php +33 -33
- package/templates/stacks/php-laravel/app/Models/User.php +44 -44
- package/templates/stacks/php-laravel/app/Repositories/UsersRepository.php +32 -32
- package/templates/stacks/php-laravel/app/Services/AuthService.php +37 -37
- package/templates/stacks/php-laravel/app/Services/UsersService.php +57 -57
- package/templates/stacks/php-laravel/artisan +12 -12
- package/templates/stacks/php-laravel/bootstrap/app.php +29 -29
- package/templates/stacks/php-laravel/bootstrap/providers.php +5 -5
- package/templates/stacks/php-laravel/composer.json.hbs +58 -58
- package/templates/stacks/php-laravel/config/l5-swagger.php +41 -41
- package/templates/stacks/php-laravel/config/reverb.php +34 -34
- package/templates/stacks/php-laravel/config/sanctum.php +15 -15
- package/templates/stacks/php-laravel/database/migrations/2026_06_01_000001_create_users_table.php +27 -27
- package/templates/stacks/php-laravel/database/seeders/DatabaseSeeder.php +21 -21
- package/templates/stacks/php-laravel/gitignore +23 -23
- package/templates/stacks/php-laravel/llms.txt.hbs +53 -53
- package/templates/stacks/php-laravel/openapi.json.hbs +43 -43
- package/templates/stacks/php-laravel/phpstan.neon +9 -9
- package/templates/stacks/php-laravel/routes/api.php +13 -13
- package/templates/stacks/php-laravel/routes/channels.php +7 -7
- package/templates/stacks/php-laravel/tests/Feature/AuthTest.php +35 -35
- package/templates/stacks/php-laravel/tests/Feature/UsersTest.php +30 -30
- package/templates/stacks/php-laravel/tests/Pest.php +5 -5
- package/templates/stacks/python-fastapi/.dare/skills.yml +11 -11
- package/templates/stacks/python-fastapi/.env.example +21 -21
- package/templates/stacks/python-fastapi/.github/workflows/dare-ci.yml +43 -43
- package/templates/stacks/python-fastapi/README.md.j2 +35 -35
- package/templates/stacks/python-fastapi/alembic/env.py +46 -46
- package/templates/stacks/python-fastapi/alembic/script.py.mako +26 -26
- package/templates/stacks/python-fastapi/alembic/versions/0001_create_users.py.j2 +37 -37
- package/templates/stacks/python-fastapi/alembic.ini.j2 +39 -39
- package/templates/stacks/python-fastapi/app/core/config.py +24 -24
- package/templates/stacks/python-fastapi/app/core/security.py +34 -34
- package/templates/stacks/python-fastapi/app/db/session.py +22 -22
- package/templates/stacks/python-fastapi/app/main.py.j2 +36 -36
- package/templates/stacks/python-fastapi/app/models/__init__.py +3 -3
- package/templates/stacks/python-fastapi/app/models/user.py +30 -30
- package/templates/stacks/python-fastapi/app/repositories/user_repository.py +34 -34
- package/templates/stacks/python-fastapi/app/routers/auth.py +37 -37
- package/templates/stacks/python-fastapi/app/routers/users.py +46 -46
- package/templates/stacks/python-fastapi/app/schemas/user.py +56 -56
- package/templates/stacks/python-fastapi/app/services/auth_service.py +22 -22
- package/templates/stacks/python-fastapi/app/services/user_service.py +31 -31
- package/templates/stacks/python-fastapi/gitignore +12 -12
- package/templates/stacks/python-fastapi/llms.txt.j2 +53 -53
- package/templates/stacks/python-fastapi/openapi.json.j2 +43 -43
- package/templates/stacks/python-fastapi/pyproject.toml.j2 +45 -45
- package/templates/stacks/python-fastapi/tests/test_auth.py +22 -22
- package/templates/stacks/ruby-rails-8/.dare/skills.yml +50 -50
- package/templates/stacks/ruby-rails-8/.env.example +20 -20
- package/templates/stacks/ruby-rails-8/.github/workflows/dare-ci.yml +112 -112
- package/templates/stacks/ruby-rails-8/Gemfile.erb +61 -61
- package/templates/stacks/ruby-rails-8/app/channels/application_cable/channel.rb +11 -11
- package/templates/stacks/ruby-rails-8/app/channels/application_cable/connection.rb +34 -34
- package/templates/stacks/ruby-rails-8/app/channels/dare_updates_channel.rb +18 -18
- package/templates/stacks/ruby-rails-8/app/channels/user_updates_channel.rb +23 -23
- package/templates/stacks/ruby-rails-8/app/controllers/application_controller.rb +44 -44
- package/templates/stacks/ruby-rails-8/app/controllers/concerns/problem_details.rb +93 -93
- package/templates/stacks/ruby-rails-8/app/handlers/summarize_handler.rb +33 -33
- package/templates/stacks/ruby-rails-8/app/handlers/users_handler.rb +68 -68
- package/templates/stacks/ruby-rails-8/app/llm/cache/llm_cache.rb +44 -44
- package/templates/stacks/ruby-rails-8/app/llm/prompts/prompt_loader.rb +54 -54
- package/templates/stacks/ruby-rails-8/app/llm/prompts/summarize_v1.jinja2 +12 -12
- package/templates/stacks/ruby-rails-8/app/llm/providers/dummy_provider.rb +35 -35
- package/templates/stacks/ruby-rails-8/app/llm/providers/llm_provider.rb +67 -67
- package/templates/stacks/ruby-rails-8/app/llm/providers/openai_provider.rb +62 -62
- package/templates/stacks/ruby-rails-8/app/llm/rate_limit/token_bucket.rb +82 -82
- package/templates/stacks/ruby-rails-8/app/llm/validators/summarize_output_schema.json +21 -21
- package/templates/stacks/ruby-rails-8/app/llm/validators/validator.rb +52 -52
- package/templates/stacks/ruby-rails-8/app/models/user.rb +36 -36
- package/templates/stacks/ruby-rails-8/app/presenters/user_presenter.rb +48 -48
- package/templates/stacks/ruby-rails-8/app/repositories/document_repository.rb +57 -57
- package/templates/stacks/ruby-rails-8/app/repositories/user_repository.rb +73 -73
- package/templates/stacks/ruby-rails-8/app/services/create_user_service.rb +67 -67
- package/templates/stacks/ruby-rails-8/app/services/realtime_service.rb +53 -53
- package/templates/stacks/ruby-rails-8/app/services/summarize_document_service.rb +57 -57
- package/templates/stacks/ruby-rails-8/config/dare.yml +42 -42
- package/templates/stacks/ruby-rails-8/config/initializers/dare.rb +31 -31
- package/templates/stacks/ruby-rails-8/config/initializers/rack_attack.rb +64 -64
- package/templates/stacks/ruby-rails-8/config/initializers/rswag_api.rb +12 -12
- package/templates/stacks/ruby-rails-8/lib/tasks/dare.rake +159 -159
- package/templates/stacks/ruby-rails-8/llms.txt.erb +69 -69
- package/templates/stacks/ruby-rails-8/spec/api/summarize_spec.rb +56 -56
- package/templates/stacks/ruby-rails-8/spec/api/users_spec.rb +72 -72
- package/templates/stacks/ruby-rails-8/spec/channels/dare_updates_channel_spec.rb +61 -61
- package/templates/stacks/ruby-rails-8/spec/channels/user_updates_channel_spec.rb +56 -56
- package/templates/stacks/ruby-rails-8/spec/factories/users.rb +27 -27
- package/templates/stacks/ruby-rails-8/spec/handlers/users_handler_spec.rb +88 -88
- package/templates/stacks/ruby-rails-8/spec/rails_helper.rb +31 -31
- package/templates/stacks/ruby-rails-8/spec/services/create_user_service_spec.rb +88 -88
- package/templates/stacks/ruby-rails-8/spec/services/summarize_document_service_spec.rb +142 -142
- package/templates/stacks/ruby-rails-8/spec/swagger_helper.rb +73 -73
- package/templates/stacks/rust-axum/.dare/skills.yml +11 -11
- package/templates/stacks/rust-axum/.env.example +26 -26
- package/templates/stacks/rust-axum/.github/workflows/dare-ci.yml +40 -40
- package/templates/stacks/rust-axum/Cargo.toml.tera +53 -53
- package/templates/stacks/rust-axum/README.md.tera +37 -37
- package/templates/stacks/rust-axum/gitignore +5 -5
- package/templates/stacks/rust-axum/llms.txt.tera +54 -54
- package/templates/stacks/rust-axum/migrations/0001_create_users.sql +13 -13
- package/templates/stacks/rust-axum/openapi.json.tera +46 -46
- package/templates/stacks/rust-axum/src/config.rs +45 -45
- package/templates/stacks/rust-axum/src/errors.rs +48 -48
- package/templates/stacks/rust-axum/src/handlers/auth.rs +48 -48
- package/templates/stacks/rust-axum/src/handlers/mod.rs +3 -3
- package/templates/stacks/rust-axum/src/handlers/users.rs +81 -81
- package/templates/stacks/rust-axum/src/handlers/ws.rs +24 -24
- package/templates/stacks/rust-axum/src/lib.rs +19 -19
- package/templates/stacks/rust-axum/src/llm/mod.rs +1 -1
- package/templates/stacks/rust-axum/src/llm/provider.rs +48 -48
- package/templates/stacks/rust-axum/src/main.rs.tera +64 -64
- package/templates/stacks/rust-axum/src/middleware/auth.rs +20 -20
- package/templates/stacks/rust-axum/src/middleware/mod.rs +2 -2
- package/templates/stacks/rust-axum/src/middleware/rate_limit.rs +27 -27
- package/templates/stacks/rust-axum/src/models/mod.rs +1 -1
- package/templates/stacks/rust-axum/src/models/user.rs +13 -13
- package/templates/stacks/rust-axum/src/repositories/mod.rs +1 -1
- package/templates/stacks/rust-axum/src/repositories/user_repository.rs +62 -62
- package/templates/stacks/rust-axum/src/services/auth_service.rs +50 -50
- package/templates/stacks/rust-axum/src/services/mod.rs +2 -2
- package/templates/stacks/rust-axum/src/services/user_service.rs +53 -53
- package/templates/stacks/rust-axum/tests/integration_test.rs.tera +13 -13
- package/dist/commands/new.d.ts +0 -16
- package/dist/commands/new.d.ts.map +0 -1
- package/dist/commands/new.js +0 -104
- package/dist/commands/new.js.map +0 -1
|
@@ -1,159 +1,159 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# DARE v3.0 — Quality Telemetry rake tasks
|
|
4
|
-
# Validates conformance metrics M-01 to M-04 as per dare-quality-telemetry spec
|
|
5
|
-
#
|
|
6
|
-
# Usage:
|
|
7
|
-
# bundle exec rake dare:metrics # Full validation + JSON output
|
|
8
|
-
# bundle exec rake dare:metrics:quick # Exit-only (CI-friendly)
|
|
9
|
-
# bundle exec rake dare:openapi # Regenerate OpenAPI spec
|
|
10
|
-
#
|
|
11
|
-
# CI integration: add `bundle exec rake dare:metrics` to your CI pipeline.
|
|
12
|
-
# The task exits with code 1 if any metric fails.
|
|
13
|
-
|
|
14
|
-
namespace :dare do
|
|
15
|
-
# ── Main metrics validation task ─────────────────────────────────────────
|
|
16
|
-
desc "Validate DARE conformance metrics M-01 to M-04 and output JSON report"
|
|
17
|
-
task metrics: :environment do
|
|
18
|
-
require "json"
|
|
19
|
-
|
|
20
|
-
results = {
|
|
21
|
-
timestamp: Time.now.iso8601,
|
|
22
|
-
commit: git_commit_sha,
|
|
23
|
-
stack: "ruby-rails-8",
|
|
24
|
-
dare_version: "3.0",
|
|
25
|
-
metrics: {}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
# M-01: llms.txt exists and is non-empty
|
|
29
|
-
llms_txt_path = Rails.root.join("llms.txt")
|
|
30
|
-
llms_txt_valid = llms_txt_path.exist? && llms_txt_path.size > 0
|
|
31
|
-
results[:metrics]["M-01"] = {
|
|
32
|
-
pass: llms_txt_valid,
|
|
33
|
-
description: "Project has valid llms.txt",
|
|
34
|
-
details: llms_txt_valid ? "llms.txt found (#{llms_txt_path.size} bytes)" : "llms.txt missing or empty"
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
# M-02: OpenAPI spec exists and is valid JSON
|
|
38
|
-
openapi_path = Rails.root.join("public", "openapi.json")
|
|
39
|
-
openapi_valid = begin
|
|
40
|
-
openapi_path.exist? && JSON.parse(openapi_path.read).is_a?(Hash)
|
|
41
|
-
rescue JSON::ParserError
|
|
42
|
-
false
|
|
43
|
-
end
|
|
44
|
-
results[:metrics]["M-02"] = {
|
|
45
|
-
pass: openapi_valid,
|
|
46
|
-
description: "All endpoints have OpenAPI documentation",
|
|
47
|
-
details: openapi_valid ? "public/openapi.json found and valid" : "public/openapi.json missing or invalid JSON"
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
# M-03: CLI --json support (rails --help or dare:metrics itself)
|
|
51
|
-
# The DARE rails stack exposes JSON output from rake dare:metrics
|
|
52
|
-
cli_json_support = true # This task itself emits JSON — M-03 is satisfied
|
|
53
|
-
results[:metrics]["M-03"] = {
|
|
54
|
-
pass: cli_json_support,
|
|
55
|
-
description: "CLI supports --json output",
|
|
56
|
-
details: "rake dare:metrics emits JSON via STDOUT. Pass DARE_JSON=1 for machine-readable only."
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
# M-04: Rate limiting configured (rack-attack initializer present)
|
|
60
|
-
rack_attack_path = Rails.root.join("config", "initializers", "rack_attack.rb")
|
|
61
|
-
rate_limit_configured = rack_attack_path.exist?
|
|
62
|
-
results[:metrics]["M-04"] = {
|
|
63
|
-
pass: rate_limit_configured,
|
|
64
|
-
description: "100% of public endpoints have rate limit configured",
|
|
65
|
-
details: rate_limit_configured ? "rack_attack.rb initializer found" : "config/initializers/rack_attack.rb missing"
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
# ── Summary ─────────────────────────────────────────────────────────────
|
|
69
|
-
all_passed = results[:metrics].all? { |_, m| m[:pass] }
|
|
70
|
-
passed_count = results[:metrics].count { |_, m| m[:pass] }
|
|
71
|
-
total_count = results[:metrics].size
|
|
72
|
-
|
|
73
|
-
results[:summary] = {
|
|
74
|
-
passed: passed_count,
|
|
75
|
-
total: total_count,
|
|
76
|
-
all_pass: all_passed,
|
|
77
|
-
score: "#{(passed_count.to_f / total_count * 100).round(1)}%"
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
# ── Output ───────────────────────────────────────────────────────────────
|
|
81
|
-
json_output = JSON.pretty_generate(results)
|
|
82
|
-
puts json_output
|
|
83
|
-
|
|
84
|
-
# Save to tmp/dare_metrics.json
|
|
85
|
-
tmp_dir = Rails.root.join("tmp")
|
|
86
|
-
FileUtils.mkdir_p(tmp_dir)
|
|
87
|
-
File.write(Rails.root.join("tmp", "dare_metrics.json"), json_output)
|
|
88
|
-
$stderr.puts "\n[DARE] Metrics saved to tmp/dare_metrics.json" unless ENV["DARE_JSON"]
|
|
89
|
-
|
|
90
|
-
unless all_passed
|
|
91
|
-
$stderr.puts "\n[DARE] FAILED: #{total_count - passed_count} metric(s) not passing.\n"
|
|
92
|
-
$stderr.puts results[:metrics].select { |_, m| !m[:pass] }.map { |k, m| " #{k}: #{m[:details]}" }.join("\n")
|
|
93
|
-
exit!(1)
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
$stderr.puts "\n[DARE] All #{total_count} metrics passed (#{results[:summary][:score]})\n" unless ENV["DARE_JSON"]
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
# ── Quick check for CI pipelines ─────────────────────────────────────────
|
|
100
|
-
namespace :metrics do
|
|
101
|
-
desc "Quick DARE metrics check (silent — exit code only)"
|
|
102
|
-
task quick: :environment do
|
|
103
|
-
ENV["DARE_JSON"] = "1"
|
|
104
|
-
Rake::Task["dare:metrics"].invoke
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
# ── OpenAPI regeneration ──────────────────────────────────────────────────
|
|
109
|
-
desc "Regenerate public/openapi.json from rswag specs"
|
|
110
|
-
task openapi: :environment do
|
|
111
|
-
puts "[DARE] Regenerating OpenAPI spec via rswag..."
|
|
112
|
-
|
|
113
|
-
# rswag generates the spec when you run rswag:specs:swaggerize
|
|
114
|
-
# This is a convenience wrapper
|
|
115
|
-
Rake::Task["rswag:specs:swaggerize"].invoke if Rake::Task.task_defined?("rswag:specs:swaggerize")
|
|
116
|
-
|
|
117
|
-
openapi_path = Rails.root.join("public", "openapi.json")
|
|
118
|
-
if openapi_path.exist?
|
|
119
|
-
puts "[DARE] OpenAPI spec generated: #{openapi_path}"
|
|
120
|
-
else
|
|
121
|
-
warn "[DARE] WARNING: public/openapi.json not found after swaggerize."
|
|
122
|
-
warn "[DARE] Run: bundle exec rspec spec/api/ to generate it."
|
|
123
|
-
end
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
# ── Validate layered design ───────────────────────────────────────────────
|
|
127
|
-
desc "Validate DARE layered design directory structure"
|
|
128
|
-
task validate_structure: :environment do
|
|
129
|
-
required_dirs = %w[
|
|
130
|
-
app/handlers
|
|
131
|
-
app/services
|
|
132
|
-
app/repositories
|
|
133
|
-
app/models
|
|
134
|
-
app/presenters
|
|
135
|
-
app/llm/providers
|
|
136
|
-
app/llm/prompts
|
|
137
|
-
app/llm/validators
|
|
138
|
-
app/channels
|
|
139
|
-
]
|
|
140
|
-
|
|
141
|
-
missing = required_dirs.reject { |d| Rails.root.join(d).exist? }
|
|
142
|
-
|
|
143
|
-
if missing.any?
|
|
144
|
-
warn "[DARE] Missing directories:"
|
|
145
|
-
missing.each { |d| warn " - #{d}" }
|
|
146
|
-
exit!(1)
|
|
147
|
-
else
|
|
148
|
-
puts "[DARE] Layered design structure OK (#{required_dirs.size} directories)"
|
|
149
|
-
end
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
private
|
|
153
|
-
|
|
154
|
-
def git_commit_sha
|
|
155
|
-
`git rev-parse --short HEAD 2>/dev/null`.strip.presence || "unknown"
|
|
156
|
-
rescue StandardError
|
|
157
|
-
"unknown"
|
|
158
|
-
end
|
|
159
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# DARE v3.0 — Quality Telemetry rake tasks
|
|
4
|
+
# Validates conformance metrics M-01 to M-04 as per dare-quality-telemetry spec
|
|
5
|
+
#
|
|
6
|
+
# Usage:
|
|
7
|
+
# bundle exec rake dare:metrics # Full validation + JSON output
|
|
8
|
+
# bundle exec rake dare:metrics:quick # Exit-only (CI-friendly)
|
|
9
|
+
# bundle exec rake dare:openapi # Regenerate OpenAPI spec
|
|
10
|
+
#
|
|
11
|
+
# CI integration: add `bundle exec rake dare:metrics` to your CI pipeline.
|
|
12
|
+
# The task exits with code 1 if any metric fails.
|
|
13
|
+
|
|
14
|
+
namespace :dare do
|
|
15
|
+
# ── Main metrics validation task ─────────────────────────────────────────
|
|
16
|
+
desc "Validate DARE conformance metrics M-01 to M-04 and output JSON report"
|
|
17
|
+
task metrics: :environment do
|
|
18
|
+
require "json"
|
|
19
|
+
|
|
20
|
+
results = {
|
|
21
|
+
timestamp: Time.now.iso8601,
|
|
22
|
+
commit: git_commit_sha,
|
|
23
|
+
stack: "ruby-rails-8",
|
|
24
|
+
dare_version: "3.0",
|
|
25
|
+
metrics: {}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
# M-01: llms.txt exists and is non-empty
|
|
29
|
+
llms_txt_path = Rails.root.join("llms.txt")
|
|
30
|
+
llms_txt_valid = llms_txt_path.exist? && llms_txt_path.size > 0
|
|
31
|
+
results[:metrics]["M-01"] = {
|
|
32
|
+
pass: llms_txt_valid,
|
|
33
|
+
description: "Project has valid llms.txt",
|
|
34
|
+
details: llms_txt_valid ? "llms.txt found (#{llms_txt_path.size} bytes)" : "llms.txt missing or empty"
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
# M-02: OpenAPI spec exists and is valid JSON
|
|
38
|
+
openapi_path = Rails.root.join("public", "openapi.json")
|
|
39
|
+
openapi_valid = begin
|
|
40
|
+
openapi_path.exist? && JSON.parse(openapi_path.read).is_a?(Hash)
|
|
41
|
+
rescue JSON::ParserError
|
|
42
|
+
false
|
|
43
|
+
end
|
|
44
|
+
results[:metrics]["M-02"] = {
|
|
45
|
+
pass: openapi_valid,
|
|
46
|
+
description: "All endpoints have OpenAPI documentation",
|
|
47
|
+
details: openapi_valid ? "public/openapi.json found and valid" : "public/openapi.json missing or invalid JSON"
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
# M-03: CLI --json support (rails --help or dare:metrics itself)
|
|
51
|
+
# The DARE rails stack exposes JSON output from rake dare:metrics
|
|
52
|
+
cli_json_support = true # This task itself emits JSON — M-03 is satisfied
|
|
53
|
+
results[:metrics]["M-03"] = {
|
|
54
|
+
pass: cli_json_support,
|
|
55
|
+
description: "CLI supports --json output",
|
|
56
|
+
details: "rake dare:metrics emits JSON via STDOUT. Pass DARE_JSON=1 for machine-readable only."
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
# M-04: Rate limiting configured (rack-attack initializer present)
|
|
60
|
+
rack_attack_path = Rails.root.join("config", "initializers", "rack_attack.rb")
|
|
61
|
+
rate_limit_configured = rack_attack_path.exist?
|
|
62
|
+
results[:metrics]["M-04"] = {
|
|
63
|
+
pass: rate_limit_configured,
|
|
64
|
+
description: "100% of public endpoints have rate limit configured",
|
|
65
|
+
details: rate_limit_configured ? "rack_attack.rb initializer found" : "config/initializers/rack_attack.rb missing"
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
# ── Summary ─────────────────────────────────────────────────────────────
|
|
69
|
+
all_passed = results[:metrics].all? { |_, m| m[:pass] }
|
|
70
|
+
passed_count = results[:metrics].count { |_, m| m[:pass] }
|
|
71
|
+
total_count = results[:metrics].size
|
|
72
|
+
|
|
73
|
+
results[:summary] = {
|
|
74
|
+
passed: passed_count,
|
|
75
|
+
total: total_count,
|
|
76
|
+
all_pass: all_passed,
|
|
77
|
+
score: "#{(passed_count.to_f / total_count * 100).round(1)}%"
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
# ── Output ───────────────────────────────────────────────────────────────
|
|
81
|
+
json_output = JSON.pretty_generate(results)
|
|
82
|
+
puts json_output
|
|
83
|
+
|
|
84
|
+
# Save to tmp/dare_metrics.json
|
|
85
|
+
tmp_dir = Rails.root.join("tmp")
|
|
86
|
+
FileUtils.mkdir_p(tmp_dir)
|
|
87
|
+
File.write(Rails.root.join("tmp", "dare_metrics.json"), json_output)
|
|
88
|
+
$stderr.puts "\n[DARE] Metrics saved to tmp/dare_metrics.json" unless ENV["DARE_JSON"]
|
|
89
|
+
|
|
90
|
+
unless all_passed
|
|
91
|
+
$stderr.puts "\n[DARE] FAILED: #{total_count - passed_count} metric(s) not passing.\n"
|
|
92
|
+
$stderr.puts results[:metrics].select { |_, m| !m[:pass] }.map { |k, m| " #{k}: #{m[:details]}" }.join("\n")
|
|
93
|
+
exit!(1)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
$stderr.puts "\n[DARE] All #{total_count} metrics passed (#{results[:summary][:score]})\n" unless ENV["DARE_JSON"]
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# ── Quick check for CI pipelines ─────────────────────────────────────────
|
|
100
|
+
namespace :metrics do
|
|
101
|
+
desc "Quick DARE metrics check (silent — exit code only)"
|
|
102
|
+
task quick: :environment do
|
|
103
|
+
ENV["DARE_JSON"] = "1"
|
|
104
|
+
Rake::Task["dare:metrics"].invoke
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# ── OpenAPI regeneration ──────────────────────────────────────────────────
|
|
109
|
+
desc "Regenerate public/openapi.json from rswag specs"
|
|
110
|
+
task openapi: :environment do
|
|
111
|
+
puts "[DARE] Regenerating OpenAPI spec via rswag..."
|
|
112
|
+
|
|
113
|
+
# rswag generates the spec when you run rswag:specs:swaggerize
|
|
114
|
+
# This is a convenience wrapper
|
|
115
|
+
Rake::Task["rswag:specs:swaggerize"].invoke if Rake::Task.task_defined?("rswag:specs:swaggerize")
|
|
116
|
+
|
|
117
|
+
openapi_path = Rails.root.join("public", "openapi.json")
|
|
118
|
+
if openapi_path.exist?
|
|
119
|
+
puts "[DARE] OpenAPI spec generated: #{openapi_path}"
|
|
120
|
+
else
|
|
121
|
+
warn "[DARE] WARNING: public/openapi.json not found after swaggerize."
|
|
122
|
+
warn "[DARE] Run: bundle exec rspec spec/api/ to generate it."
|
|
123
|
+
end
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# ── Validate layered design ───────────────────────────────────────────────
|
|
127
|
+
desc "Validate DARE layered design directory structure"
|
|
128
|
+
task validate_structure: :environment do
|
|
129
|
+
required_dirs = %w[
|
|
130
|
+
app/handlers
|
|
131
|
+
app/services
|
|
132
|
+
app/repositories
|
|
133
|
+
app/models
|
|
134
|
+
app/presenters
|
|
135
|
+
app/llm/providers
|
|
136
|
+
app/llm/prompts
|
|
137
|
+
app/llm/validators
|
|
138
|
+
app/channels
|
|
139
|
+
]
|
|
140
|
+
|
|
141
|
+
missing = required_dirs.reject { |d| Rails.root.join(d).exist? }
|
|
142
|
+
|
|
143
|
+
if missing.any?
|
|
144
|
+
warn "[DARE] Missing directories:"
|
|
145
|
+
missing.each { |d| warn " - #{d}" }
|
|
146
|
+
exit!(1)
|
|
147
|
+
else
|
|
148
|
+
puts "[DARE] Layered design structure OK (#{required_dirs.size} directories)"
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
private
|
|
153
|
+
|
|
154
|
+
def git_commit_sha
|
|
155
|
+
`git rev-parse --short HEAD 2>/dev/null`.strip.presence || "unknown"
|
|
156
|
+
rescue StandardError
|
|
157
|
+
"unknown"
|
|
158
|
+
end
|
|
159
|
+
end
|
|
@@ -1,69 +1,69 @@
|
|
|
1
|
-
# llms.txt — Project Context for AI Agents
|
|
2
|
-
# Generated by DARE v3.0 — ruby-rails-8 stack
|
|
3
|
-
# App: <%= app_name %>
|
|
4
|
-
|
|
5
|
-
## Project Overview
|
|
6
|
-
Rails 8 application built with DARE v3.0 methodology.
|
|
7
|
-
Stack: ruby-rails-8 | Layered Design | OpenAPI | LLM integration | Action Cable
|
|
8
|
-
|
|
9
|
-
## Tech Stack
|
|
10
|
-
- Language: Ruby 3.3+
|
|
11
|
-
- Framework: Rails 8.0+ (Omakase)
|
|
12
|
-
- Database: PostgreSQL 14+
|
|
13
|
-
- Real-time: Action Cable + Redis
|
|
14
|
-
- Background: Solid Queue
|
|
15
|
-
- Cache: Solid Cache + Redis
|
|
16
|
-
- Deploy: Kamal
|
|
17
|
-
|
|
18
|
-
## Architecture (Layered Design)
|
|
19
|
-
- app/handlers/ — HTTP handlers (thin controllers — only HTTP concerns)
|
|
20
|
-
- app/services/ — Business logic (one class per operation, pure Ruby)
|
|
21
|
-
- app/repositories/ — Data access (interface + ActiveRecord implementation)
|
|
22
|
-
- app/models/ — Domain objects (no callbacks, no fat model)
|
|
23
|
-
- app/presenters/ — Serializers (Model → JSON, RFC 7807 errors)
|
|
24
|
-
- app/llm/ — LLM patterns (providers, prompts, validators, cache)
|
|
25
|
-
- app/channels/ — Real-time (Action Cable, authorized subscriptions)
|
|
26
|
-
- app/jobs/ — Background jobs (Solid Queue)
|
|
27
|
-
|
|
28
|
-
## Key Conventions
|
|
29
|
-
- Controllers NEVER call Repository or contain business logic
|
|
30
|
-
- Services are plain Ruby objects injected with dependencies
|
|
31
|
-
- Repositories abstract ActiveRecord; services never call AR directly
|
|
32
|
-
- Errors always formatted as RFC 7807 Problem Details
|
|
33
|
-
- Every endpoint documented via rswag (OpenAPI auto-generated from specs)
|
|
34
|
-
|
|
35
|
-
## Key Endpoints
|
|
36
|
-
- GET /openapi.json — OpenAPI spec (auto-generated by rswag)
|
|
37
|
-
- GET /api-docs — Swagger UI
|
|
38
|
-
- POST /api/users — Create user (example)
|
|
39
|
-
- GET /api/users/:id — Show user (example)
|
|
40
|
-
|
|
41
|
-
## Getting Started
|
|
42
|
-
bundle install
|
|
43
|
-
bin/rails db:create db:migrate
|
|
44
|
-
bin/rails server
|
|
45
|
-
# OR with Kamal:
|
|
46
|
-
kamal setup && kamal deploy
|
|
47
|
-
|
|
48
|
-
## Rate Limits
|
|
49
|
-
- Public endpoints: 100 req/min per IP (rack-attack)
|
|
50
|
-
- Auth endpoints: 10 req/min per IP
|
|
51
|
-
- LLM endpoints: 20 req/min per user
|
|
52
|
-
|
|
53
|
-
## For AI Agents
|
|
54
|
-
- OpenAPI spec: GET /openapi.json
|
|
55
|
-
- DARE metrics: bundle exec rake dare:metrics
|
|
56
|
-
- Test suite: bundle exec rspec
|
|
57
|
-
- Lint: bundle exec rubocop
|
|
58
|
-
- Rails help: bin/rails --help
|
|
59
|
-
- DARE manifest: .dare/skills.yml
|
|
60
|
-
|
|
61
|
-
## Directory Guide
|
|
62
|
-
- New feature? Add: handler → service → repository → model → presenter → spec
|
|
63
|
-
- New LLM feature? Add provider/prompt/validator in app/llm/
|
|
64
|
-
- New real-time event? Add channel in app/channels/ + realtime_service.rb broadcast
|
|
65
|
-
- New background job? Add in app/jobs/ using Solid Queue
|
|
66
|
-
|
|
67
|
-
## Generated by
|
|
68
|
-
DARE Method v3.0 — https://github.com/dewtech-technologies/dare-method
|
|
69
|
-
Stack: ruby-rails-8
|
|
1
|
+
# llms.txt — Project Context for AI Agents
|
|
2
|
+
# Generated by DARE v3.0 — ruby-rails-8 stack
|
|
3
|
+
# App: <%= app_name %>
|
|
4
|
+
|
|
5
|
+
## Project Overview
|
|
6
|
+
Rails 8 application built with DARE v3.0 methodology.
|
|
7
|
+
Stack: ruby-rails-8 | Layered Design | OpenAPI | LLM integration | Action Cable
|
|
8
|
+
|
|
9
|
+
## Tech Stack
|
|
10
|
+
- Language: Ruby 3.3+
|
|
11
|
+
- Framework: Rails 8.0+ (Omakase)
|
|
12
|
+
- Database: PostgreSQL 14+
|
|
13
|
+
- Real-time: Action Cable + Redis
|
|
14
|
+
- Background: Solid Queue
|
|
15
|
+
- Cache: Solid Cache + Redis
|
|
16
|
+
- Deploy: Kamal
|
|
17
|
+
|
|
18
|
+
## Architecture (Layered Design)
|
|
19
|
+
- app/handlers/ — HTTP handlers (thin controllers — only HTTP concerns)
|
|
20
|
+
- app/services/ — Business logic (one class per operation, pure Ruby)
|
|
21
|
+
- app/repositories/ — Data access (interface + ActiveRecord implementation)
|
|
22
|
+
- app/models/ — Domain objects (no callbacks, no fat model)
|
|
23
|
+
- app/presenters/ — Serializers (Model → JSON, RFC 7807 errors)
|
|
24
|
+
- app/llm/ — LLM patterns (providers, prompts, validators, cache)
|
|
25
|
+
- app/channels/ — Real-time (Action Cable, authorized subscriptions)
|
|
26
|
+
- app/jobs/ — Background jobs (Solid Queue)
|
|
27
|
+
|
|
28
|
+
## Key Conventions
|
|
29
|
+
- Controllers NEVER call Repository or contain business logic
|
|
30
|
+
- Services are plain Ruby objects injected with dependencies
|
|
31
|
+
- Repositories abstract ActiveRecord; services never call AR directly
|
|
32
|
+
- Errors always formatted as RFC 7807 Problem Details
|
|
33
|
+
- Every endpoint documented via rswag (OpenAPI auto-generated from specs)
|
|
34
|
+
|
|
35
|
+
## Key Endpoints
|
|
36
|
+
- GET /openapi.json — OpenAPI spec (auto-generated by rswag)
|
|
37
|
+
- GET /api-docs — Swagger UI
|
|
38
|
+
- POST /api/users — Create user (example)
|
|
39
|
+
- GET /api/users/:id — Show user (example)
|
|
40
|
+
|
|
41
|
+
## Getting Started
|
|
42
|
+
bundle install
|
|
43
|
+
bin/rails db:create db:migrate
|
|
44
|
+
bin/rails server
|
|
45
|
+
# OR with Kamal:
|
|
46
|
+
kamal setup && kamal deploy
|
|
47
|
+
|
|
48
|
+
## Rate Limits
|
|
49
|
+
- Public endpoints: 100 req/min per IP (rack-attack)
|
|
50
|
+
- Auth endpoints: 10 req/min per IP
|
|
51
|
+
- LLM endpoints: 20 req/min per user
|
|
52
|
+
|
|
53
|
+
## For AI Agents
|
|
54
|
+
- OpenAPI spec: GET /openapi.json
|
|
55
|
+
- DARE metrics: bundle exec rake dare:metrics
|
|
56
|
+
- Test suite: bundle exec rspec
|
|
57
|
+
- Lint: bundle exec rubocop
|
|
58
|
+
- Rails help: bin/rails --help
|
|
59
|
+
- DARE manifest: .dare/skills.yml
|
|
60
|
+
|
|
61
|
+
## Directory Guide
|
|
62
|
+
- New feature? Add: handler → service → repository → model → presenter → spec
|
|
63
|
+
- New LLM feature? Add provider/prompt/validator in app/llm/
|
|
64
|
+
- New real-time event? Add channel in app/channels/ + realtime_service.rb broadcast
|
|
65
|
+
- New background job? Add in app/jobs/ using Solid Queue
|
|
66
|
+
|
|
67
|
+
## Generated by
|
|
68
|
+
DARE Method v3.0 — https://github.com/dewtech-technologies/dare-method
|
|
69
|
+
Stack: ruby-rails-8
|
|
@@ -1,56 +1,56 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# DARE v3.0 — rswag OpenAPI spec for Summarize Documents API
|
|
4
|
-
# M-02: running `rake rswag:specs:swaggerize` generates public/openapi.json from this
|
|
5
|
-
require "swagger_helper"
|
|
6
|
-
|
|
7
|
-
RSpec.describe "Summarize Documents API", type: :request do
|
|
8
|
-
path "/api/v1/documents/{id}/summarize" do
|
|
9
|
-
parameter name: :id, in: :path, type: :string, description: "Document ID"
|
|
10
|
-
|
|
11
|
-
post "Summarize a document with LLM" do
|
|
12
|
-
tags "Documents"
|
|
13
|
-
produces "application/json"
|
|
14
|
-
security [{ bearerAuth: [] }]
|
|
15
|
-
description <<~DESC
|
|
16
|
-
Summarizes the document identified by :id using the configured LLM provider.
|
|
17
|
-
Returns the generated summary and the document ID on success.
|
|
18
|
-
RFC 7807 Problem Details on errors (D-006).
|
|
19
|
-
DESC
|
|
20
|
-
|
|
21
|
-
response "200", "Document summarized successfully" do
|
|
22
|
-
schema type: :object,
|
|
23
|
-
required: %w[summary document_id],
|
|
24
|
-
properties: {
|
|
25
|
-
summary: { type: :string, example: "This document discusses..." },
|
|
26
|
-
document_id: { type: :string, example: "doc-abc-123" }
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
let(:id) { create(:document, content: "Long content to summarize.").id }
|
|
30
|
-
run_test!
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
response "401", "Unauthorized — missing or invalid authentication token" do
|
|
34
|
-
schema "$ref" => "#/components/schemas/ProblemDetails"
|
|
35
|
-
|
|
36
|
-
let(:id) { "any-id" }
|
|
37
|
-
# No auth header provided
|
|
38
|
-
run_test!
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
response "404", "Document not found" do
|
|
42
|
-
schema "$ref" => "#/components/schemas/ProblemDetails"
|
|
43
|
-
|
|
44
|
-
let(:id) { "non-existent-document-id" }
|
|
45
|
-
run_test!
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
response "422", "Summarization failed (LLM returned empty result)" do
|
|
49
|
-
schema "$ref" => "#/components/schemas/ProblemDetails"
|
|
50
|
-
|
|
51
|
-
let(:id) { create(:document, content: "").id }
|
|
52
|
-
run_test!
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# DARE v3.0 — rswag OpenAPI spec for Summarize Documents API
|
|
4
|
+
# M-02: running `rake rswag:specs:swaggerize` generates public/openapi.json from this
|
|
5
|
+
require "swagger_helper"
|
|
6
|
+
|
|
7
|
+
RSpec.describe "Summarize Documents API", type: :request do
|
|
8
|
+
path "/api/v1/documents/{id}/summarize" do
|
|
9
|
+
parameter name: :id, in: :path, type: :string, description: "Document ID"
|
|
10
|
+
|
|
11
|
+
post "Summarize a document with LLM" do
|
|
12
|
+
tags "Documents"
|
|
13
|
+
produces "application/json"
|
|
14
|
+
security [{ bearerAuth: [] }]
|
|
15
|
+
description <<~DESC
|
|
16
|
+
Summarizes the document identified by :id using the configured LLM provider.
|
|
17
|
+
Returns the generated summary and the document ID on success.
|
|
18
|
+
RFC 7807 Problem Details on errors (D-006).
|
|
19
|
+
DESC
|
|
20
|
+
|
|
21
|
+
response "200", "Document summarized successfully" do
|
|
22
|
+
schema type: :object,
|
|
23
|
+
required: %w[summary document_id],
|
|
24
|
+
properties: {
|
|
25
|
+
summary: { type: :string, example: "This document discusses..." },
|
|
26
|
+
document_id: { type: :string, example: "doc-abc-123" }
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
let(:id) { create(:document, content: "Long content to summarize.").id }
|
|
30
|
+
run_test!
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
response "401", "Unauthorized — missing or invalid authentication token" do
|
|
34
|
+
schema "$ref" => "#/components/schemas/ProblemDetails"
|
|
35
|
+
|
|
36
|
+
let(:id) { "any-id" }
|
|
37
|
+
# No auth header provided
|
|
38
|
+
run_test!
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
response "404", "Document not found" do
|
|
42
|
+
schema "$ref" => "#/components/schemas/ProblemDetails"
|
|
43
|
+
|
|
44
|
+
let(:id) { "non-existent-document-id" }
|
|
45
|
+
run_test!
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
response "422", "Summarization failed (LLM returned empty result)" do
|
|
49
|
+
schema "$ref" => "#/components/schemas/ProblemDetails"
|
|
50
|
+
|
|
51
|
+
let(:id) { create(:document, content: "").id }
|
|
52
|
+
run_test!
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|