@yss123/cage-cli 0.1.0 → 0.3.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/README.md +69 -3
- package/bin/cage.js +5 -0
- package/bin/create-cage-app.js +5 -0
- package/dist/analyze.d.ts +16 -0
- package/dist/analyze.js +20 -2
- package/dist/analyze.js.map +1 -1
- package/dist/baseline.d.ts +8 -0
- package/dist/baseline.js +13 -0
- package/dist/baseline.js.map +1 -1
- package/dist/bootstrap.d.ts +20 -0
- package/dist/bootstrap.js +75 -0
- package/dist/bootstrap.js.map +1 -0
- package/dist/budget.d.ts +7 -0
- package/dist/budget.js +49 -5
- package/dist/budget.js.map +1 -1
- package/dist/capabilities.d.ts +38 -0
- package/dist/capabilities.js +133 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/config.d.ts +33 -4
- package/dist/config.js +22 -1
- package/dist/config.js.map +1 -1
- package/dist/context.d.ts +86 -0
- package/dist/context.js +235 -0
- package/dist/context.js.map +1 -0
- package/dist/create-prompt.d.ts +12 -0
- package/dist/create-prompt.js +62 -0
- package/dist/create-prompt.js.map +1 -0
- package/dist/create.d.ts +38 -1
- package/dist/create.js +52 -13
- package/dist/create.js.map +1 -1
- package/dist/derive.d.ts +23 -0
- package/dist/derive.js +40 -0
- package/dist/derive.js.map +1 -1
- package/dist/dev.d.ts +6 -0
- package/dist/dev.js +23 -51
- package/dist/dev.js.map +1 -1
- package/dist/doctor.d.ts +98 -0
- package/dist/doctor.js +93 -0
- package/dist/doctor.js.map +1 -0
- package/dist/env.d.ts +6 -0
- package/dist/env.js +11 -0
- package/dist/env.js.map +1 -1
- package/dist/findings.d.ts +27 -0
- package/dist/findings.js +20 -0
- package/dist/findings.js.map +1 -1
- package/dist/gen/contracts.d.ts +28 -0
- package/dist/gen/contracts.js +81 -20
- package/dist/gen/contracts.js.map +1 -1
- package/dist/gen/index.d.ts +26 -0
- package/dist/gen/index.js +112 -4
- package/dist/gen/index.js.map +1 -1
- package/dist/gen/zod-code.d.ts +43 -1
- package/dist/gen/zod-code.js +180 -16
- package/dist/gen/zod-code.js.map +1 -1
- package/dist/graph-approvals.d.ts +60 -0
- package/dist/graph-approvals.js +80 -0
- package/dist/graph-approvals.js.map +1 -0
- package/dist/graph-business.d.ts +135 -0
- package/dist/graph-business.js +404 -0
- package/dist/graph-business.js.map +1 -0
- package/dist/graph-command.d.ts +28 -0
- package/dist/graph-command.js +88 -0
- package/dist/graph-command.js.map +1 -0
- package/dist/graph-model.d.ts +65 -0
- package/dist/graph-model.js +134 -0
- package/dist/graph-model.js.map +1 -0
- package/dist/graph-presentation.d.ts +27 -0
- package/dist/graph-presentation.js +34 -0
- package/dist/graph-presentation.js.map +1 -0
- package/dist/graph-query.d.ts +266 -0
- package/dist/graph-query.js +304 -0
- package/dist/graph-query.js.map +1 -0
- package/dist/graph-relations.d.ts +34 -0
- package/dist/graph-relations.js +172 -0
- package/dist/graph-relations.js.map +1 -0
- package/dist/graph-search.d.ts +56 -0
- package/dist/graph-search.js +99 -0
- package/dist/graph-search.js.map +1 -0
- package/dist/graph-snapshot.d.ts +28 -4
- package/dist/graph-snapshot.js +32 -20
- package/dist/graph-snapshot.js.map +1 -1
- package/dist/graph.d.ts +13 -2
- package/dist/graph.js +78 -5
- package/dist/graph.js.map +1 -1
- package/dist/impact.d.ts +56 -0
- package/dist/impact.js +90 -18
- package/dist/impact.js.map +1 -1
- package/dist/index.d.ts +15 -1
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/init.d.ts +18 -0
- package/dist/init.js +146 -0
- package/dist/init.js.map +1 -0
- package/dist/load.d.ts +10 -0
- package/dist/load.js +15 -0
- package/dist/load.js.map +1 -1
- package/dist/main.d.ts +6 -0
- package/dist/main.js +170 -37
- package/dist/main.js.map +1 -1
- package/dist/migrate.d.ts +15 -6
- package/dist/migrate.js +31 -53
- package/dist/migrate.js.map +1 -1
- package/dist/ontology.d.ts +69 -2
- package/dist/ontology.js +101 -4
- package/dist/ontology.js.map +1 -1
- package/dist/process-rules.d.ts +21 -0
- package/dist/process-rules.js +100 -0
- package/dist/process-rules.js.map +1 -0
- package/dist/process.d.ts +32 -0
- package/dist/process.js +32 -0
- package/dist/process.js.map +1 -1
- package/dist/project-structure.d.ts +13 -0
- package/dist/project-structure.js +104 -0
- package/dist/project-structure.js.map +1 -0
- package/dist/registration.d.ts +16 -0
- package/dist/registration.js +56 -0
- package/dist/registration.js.map +1 -0
- package/dist/rules.d.ts +52 -0
- package/dist/rules.js +58 -0
- package/dist/rules.js.map +1 -1
- package/dist/runtime-diagnostics.d.ts +27 -0
- package/dist/runtime-diagnostics.js +60 -0
- package/dist/runtime-diagnostics.js.map +1 -0
- package/dist/snapshots.d.ts +40 -0
- package/dist/snapshots.js +62 -0
- package/dist/snapshots.js.map +1 -0
- package/dist/static-check.d.ts +33 -0
- package/dist/static-check.js +38 -5
- package/dist/static-check.js.map +1 -1
- package/dist/sync.d.ts +11 -0
- package/dist/sync.js +139 -10
- package/dist/sync.js.map +1 -1
- package/dist/upgrade.d.ts +16 -0
- package/dist/upgrade.js +21 -0
- package/dist/upgrade.js.map +1 -1
- package/dist/verify.d.ts +14 -0
- package/dist/verify.js +19 -0
- package/dist/verify.js.map +1 -1
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -1
- package/graph-ui/app.js +367 -35
- package/graph-ui/approval-flow.js +165 -0
- package/graph-ui/business.css +985 -0
- package/graph-ui/business.js +549 -0
- package/graph-ui/flowchart-interaction.js +177 -0
- package/graph-ui/flowchart.js +1059 -0
- package/graph-ui/graph-approvals.js +79 -0
- package/graph-ui/graph-business.js +403 -0
- package/graph-ui/graph-model.js +133 -0
- package/graph-ui/graph-relations.js +171 -0
- package/graph-ui/graph-search.js +98 -0
- package/graph-ui/index.html +26 -12
- package/graph-ui/model.js +47 -77
- package/graph-ui/relations.js +6 -125
- package/graph-ui/structure.js +48 -1
- package/graph-ui/style.css +33 -0
- package/package.json +10 -8
- package/templates/app/.dockerignore +2 -0
- package/templates/app/.env.example +68 -14
- package/templates/app/AGENTS.md +135 -12
- package/templates/app/Dockerfile +2 -0
- package/templates/app/README.md +49 -16
- package/templates/app/_gitignore +9 -0
- package/templates/app/apps/api/package.json +2 -2
- package/templates/app/apps/api/src/main.ts +5 -1
- package/templates/app/apps/api/src/worker.ts +3 -0
- package/templates/app/apps/web/index.html +1 -0
- package/templates/app/apps/web/package.json +7 -3
- package/templates/app/apps/web/src/app/app.tsx +128 -0
- package/templates/app/apps/web/src/{style.css → app/styles/global.css} +88 -8
- package/templates/app/apps/web/src/app/use-session.ts +43 -0
- package/templates/app/apps/web/src/app/workspace-layout.tsx +109 -0
- package/templates/app/apps/web/src/main.tsx +9 -543
- package/templates/app/apps/web/src/modules/approval/hooks/use-approval-tasks.ts +31 -0
- package/templates/app/apps/web/src/modules/approval/index.ts +6 -0
- package/templates/app/apps/web/src/modules/approval/pages/approval-tasks-page.tsx +73 -0
- package/templates/app/apps/web/src/modules/auth/index.ts +5 -0
- package/templates/app/apps/web/src/modules/auth/pages/login-page.tsx +71 -0
- package/templates/app/apps/web/src/modules/inventory/index.ts +5 -0
- package/templates/app/apps/web/src/modules/inventory/pages/inventory-page.tsx +102 -0
- package/templates/app/apps/web/src/modules/purchase/components/approval-history.tsx +32 -0
- package/templates/app/apps/web/src/modules/purchase/components/order-attachments.tsx +29 -0
- package/templates/app/apps/web/src/modules/purchase/components/purchase-assistant-context.tsx +17 -0
- package/templates/app/apps/web/src/modules/purchase/components/purchase-order-form.css +6 -0
- package/templates/app/apps/web/src/modules/purchase/components/purchase-order-form.tsx +82 -0
- package/templates/app/apps/web/src/modules/purchase/index.ts +7 -0
- package/templates/app/apps/web/src/modules/purchase/lib/presentation.ts +20 -0
- package/templates/app/apps/web/src/modules/purchase/pages/purchase-intelligence.css +15 -0
- package/templates/app/apps/web/src/modules/purchase/pages/purchase-order-detail-page.tsx +154 -0
- package/templates/app/apps/web/src/modules/purchase/pages/purchase-orders-page.tsx +240 -0
- package/templates/app/apps/web/src/modules/workspace/index.ts +5 -0
- package/templates/app/apps/web/src/modules/workspace/pages/home-page.tsx +44 -0
- package/templates/app/apps/web/src/shared/hooks/use-command.ts +42 -0
- package/templates/app/apps/web/src/shared/lib/error-message.ts +24 -0
- package/templates/app/apps/web/src/shared/lib/navigation.ts +21 -0
- package/templates/app/apps/web/src/shared/ui/assistant-markdown.tsx +19 -0
- package/templates/app/apps/web/src/shared/ui/assistant-panel.css +134 -0
- package/templates/app/apps/web/src/shared/ui/assistant-panel.tsx +200 -0
- package/templates/app/apps/web/src/shared/ui/assistant-scope.tsx +72 -0
- package/templates/app/apps/web/src/shared/ui/attachment-upload.css +28 -0
- package/templates/app/apps/web/src/shared/ui/attachment-upload.tsx +163 -0
- package/templates/app/apps/web/src/shared/ui/notice.tsx +20 -0
- package/templates/app/apps/web/src/shared/ui/page-heading.tsx +35 -0
- package/templates/app/apps/web/src/shared/ui/page-state.css +47 -0
- package/templates/app/apps/web/src/shared/ui/page-state.tsx +76 -0
- package/templates/app/apps/web/src/shared/ui/require-capability.tsx +34 -0
- package/templates/app/apps/web/vite.config.ts +8 -0
- package/templates/app/cage.config.json +10 -1
- package/templates/app/db/migrations/0002_draft.sql +12 -0
- package/templates/app/db/migrations/0003_draft.sql +8 -0
- package/templates/app/deploy/nginx.conf +52 -0
- package/templates/app/docs/ai/README.md +98 -0
- package/templates/app/docs/ai/architecture.md +148 -0
- package/templates/app/docs/ai/commenting.md +203 -0
- package/templates/app/docs/ai/diagnostics.md +80 -0
- package/templates/app/docs/ai/files.md +93 -0
- package/templates/app/docs/ai/intelligence.md +348 -0
- package/templates/app/docs/ai/ontology-context.md +172 -0
- package/templates/app/docs/ai/primitives.md +282 -0
- package/templates/app/docs/ai/project-structure.md +128 -0
- package/templates/app/docs/ai/purchase-example.md +111 -0
- package/templates/app/docs/ai/recipes.md +89 -0
- package/templates/app/docs/ai/relations.md +160 -0
- package/templates/app/docs/ai/routing.md +86 -0
- package/templates/app/docs/ai/transfers.md +92 -0
- package/templates/app/docs/ai/troubleshooting.md +65 -0
- package/templates/app/docs/ai/workflow.md +152 -0
- package/templates/app/docs/errors/CAGE-AI-001.md +61 -0
- package/templates/app/docs/errors/CAGE-APPR-001.md +48 -0
- package/templates/app/docs/errors/CAGE-APPR-002.md +47 -0
- package/templates/app/docs/errors/CAGE-APPR-003.md +47 -0
- package/templates/app/docs/errors/CAGE-APPR-004.md +47 -0
- package/templates/app/docs/errors/CAGE-APPR-005.md +47 -0
- package/templates/app/docs/errors/CAGE-APPR-006.md +53 -0
- package/templates/app/docs/errors/CAGE-APPR-007.md +50 -0
- package/templates/app/docs/errors/CAGE-APPR-010.md +48 -0
- package/templates/app/docs/errors/CAGE-AUDIT-001.md +53 -0
- package/templates/app/docs/errors/CAGE-AUTH-001.md +47 -0
- package/templates/app/docs/errors/CAGE-BIZ-001.md +51 -0
- package/templates/app/docs/errors/CAGE-BIZ-002.md +49 -0
- package/templates/app/docs/errors/CAGE-BUDGET-001.md +47 -0
- package/templates/app/docs/errors/CAGE-BUDGET-002.md +47 -0
- package/templates/app/docs/errors/CAGE-BUDGET-003.md +47 -0
- package/templates/app/docs/errors/CAGE-CMD-002.md +47 -0
- package/templates/app/docs/errors/CAGE-CMD-003.md +47 -0
- package/templates/app/docs/errors/CAGE-CONN-001.md +47 -0
- package/templates/app/docs/errors/CAGE-CONN-002.md +47 -0
- package/templates/app/docs/errors/CAGE-CONN-003.md +47 -0
- package/templates/app/docs/errors/CAGE-CONN-004.md +47 -0
- package/templates/app/docs/errors/CAGE-CONN-005.md +47 -0
- package/templates/app/docs/errors/CAGE-CONN-006.md +47 -0
- package/templates/app/docs/errors/CAGE-CONN-007.md +47 -0
- package/templates/app/docs/errors/CAGE-CONN-008.md +47 -0
- package/templates/app/docs/errors/CAGE-CONN-009.md +47 -0
- package/templates/app/docs/errors/CAGE-CONN-010.md +47 -0
- package/templates/app/docs/errors/CAGE-CONN-011.md +47 -0
- package/templates/app/docs/errors/CAGE-CONN-012.md +47 -0
- package/templates/app/docs/errors/CAGE-CONN-013.md +49 -0
- package/templates/app/docs/errors/CAGE-CONN-014.md +48 -0
- package/templates/app/docs/errors/CAGE-CONN-015.md +49 -0
- package/templates/app/docs/errors/CAGE-CREATE-001.md +53 -0
- package/templates/app/docs/errors/CAGE-DECL-001.md +48 -0
- package/templates/app/docs/errors/CAGE-DECL-002.md +48 -0
- package/templates/app/docs/errors/CAGE-DECL-003.md +47 -0
- package/templates/app/docs/errors/CAGE-DECL-004.md +47 -0
- package/templates/app/docs/errors/CAGE-DEP-001.md +48 -0
- package/templates/app/docs/errors/CAGE-DEP-002.md +47 -0
- package/templates/app/docs/errors/CAGE-DEP-003.md +47 -0
- package/templates/app/docs/errors/CAGE-DEP-004.md +47 -0
- package/templates/app/docs/errors/CAGE-DEP-005.md +47 -0
- package/templates/app/docs/errors/CAGE-DIAG-001.md +53 -0
- package/templates/app/docs/errors/CAGE-DLQ-001.md +48 -0
- package/templates/app/docs/errors/CAGE-ENV-001.md +52 -0
- package/templates/app/docs/errors/CAGE-ENV-002.md +51 -0
- package/templates/app/docs/errors/CAGE-ENV-003.md +48 -0
- package/templates/app/docs/errors/CAGE-EVENT-001.md +47 -0
- package/templates/app/docs/errors/CAGE-EVENT-002.md +50 -0
- package/templates/app/docs/errors/CAGE-FIELD-001.md +47 -0
- package/templates/app/docs/errors/CAGE-FIELD-002.md +47 -0
- package/templates/app/docs/errors/CAGE-FIELD-003.md +47 -0
- package/templates/app/docs/errors/CAGE-FIELD-004.md +47 -0
- package/templates/app/docs/errors/CAGE-FILE-001.md +56 -0
- package/templates/app/docs/errors/CAGE-GEN-001.md +48 -0
- package/templates/app/docs/errors/CAGE-GEN-002.md +47 -0
- package/templates/app/docs/errors/CAGE-GEN-003.md +53 -0
- package/templates/app/docs/errors/CAGE-GRANT-001.md +49 -0
- package/templates/app/docs/errors/CAGE-GRANT-002.md +48 -0
- package/templates/app/docs/errors/CAGE-GRANT-003.md +48 -0
- package/templates/app/docs/errors/CAGE-IMPACT-001.md +48 -0
- package/templates/app/docs/errors/CAGE-IMPACT-002.md +52 -0
- package/templates/app/docs/errors/CAGE-INIT-001.md +47 -0
- package/templates/app/docs/errors/CAGE-INIT-002.md +49 -0
- package/templates/app/docs/errors/CAGE-INIT-003.md +48 -0
- package/templates/app/docs/errors/CAGE-INIT-004.md +48 -0
- package/templates/app/docs/errors/CAGE-INIT-005.md +52 -0
- package/templates/app/docs/errors/CAGE-JOB-001.md +47 -0
- package/templates/app/docs/errors/CAGE-JOB-002.md +47 -0
- package/templates/app/docs/errors/CAGE-JOB-003.md +47 -0
- package/templates/app/docs/errors/CAGE-LINT-001.md +47 -0
- package/templates/app/docs/errors/CAGE-MIG-001.md +47 -0
- package/templates/app/docs/errors/CAGE-MIG-002.md +47 -0
- package/templates/app/docs/errors/CAGE-MIG-003.md +5 -0
- package/templates/app/docs/errors/CAGE-MIG-004.md +5 -0
- package/templates/app/docs/errors/CAGE-MIG-005.md +47 -0
- package/templates/app/docs/errors/CAGE-NAME-001.md +47 -0
- package/templates/app/docs/errors/CAGE-NAME-002.md +47 -0
- package/templates/app/docs/errors/CAGE-NAME-003.md +47 -0
- package/templates/app/docs/errors/CAGE-NAME-004.md +47 -0
- package/templates/app/docs/errors/CAGE-NAME-005.md +47 -0
- package/templates/app/docs/errors/CAGE-NAME-006.md +47 -0
- package/templates/app/docs/errors/CAGE-ORG-001.md +50 -0
- package/templates/app/docs/errors/CAGE-PAIR-002.md +51 -0
- package/templates/app/docs/errors/CAGE-QUERY-001.md +47 -0
- package/templates/app/docs/errors/CAGE-QUERY-002.md +47 -0
- package/templates/app/docs/errors/CAGE-QUERY-003.md +50 -0
- package/templates/app/docs/errors/CAGE-REACT-001.md +47 -0
- package/templates/app/docs/errors/CAGE-REACT-002.md +47 -0
- package/templates/app/docs/errors/CAGE-REACT-003.md +50 -0
- package/templates/app/docs/errors/CAGE-READS-001.md +50 -0
- package/templates/app/docs/errors/CAGE-REG-001.md +54 -0
- package/templates/app/docs/errors/CAGE-REG-002.md +49 -0
- package/templates/app/docs/errors/CAGE-REG-003.md +47 -0
- package/templates/app/docs/errors/CAGE-REL-001.md +64 -0
- package/templates/app/docs/errors/CAGE-ROUTE-001.md +48 -0
- package/templates/app/docs/errors/CAGE-SCOPE-001.md +47 -0
- package/templates/app/docs/errors/CAGE-SCOPE-002.md +47 -0
- package/templates/app/docs/errors/CAGE-SECRET-001.md +48 -0
- package/templates/app/docs/errors/CAGE-SECRET-002.md +47 -0
- package/templates/app/docs/errors/CAGE-SENS-001.md +48 -0
- package/templates/app/docs/errors/CAGE-SQL-001.md +47 -0
- package/templates/app/docs/errors/CAGE-SQL-002.md +47 -0
- package/templates/app/docs/errors/CAGE-STATE-001.md +49 -0
- package/templates/app/docs/errors/CAGE-STATE-002.md +47 -0
- package/templates/app/docs/errors/CAGE-STATE-003.md +47 -0
- package/templates/app/docs/errors/CAGE-STATE-004.md +47 -0
- package/templates/app/docs/errors/CAGE-STATE-005.md +49 -0
- package/templates/app/docs/errors/CAGE-STATE-010.md +48 -0
- package/templates/app/docs/errors/CAGE-STATE-011.md +48 -0
- package/templates/app/docs/errors/CAGE-STRUCT-001.md +51 -0
- package/templates/app/docs/errors/CAGE-STRUCT-002.md +51 -0
- package/templates/app/docs/errors/CAGE-SYNC-001.md +49 -0
- package/templates/app/docs/errors/CAGE-TEST-001.md +47 -0
- package/templates/app/docs/errors/CAGE-TEST-002.md +50 -0
- package/templates/app/docs/errors/CAGE-TEST-003.md +52 -0
- package/templates/app/docs/errors/CAGE-UNSAFE-001.md +49 -0
- package/templates/app/docs/errors/CAGE-UPGRADE-001.md +48 -0
- package/templates/app/docs/errors/CAGE-WORKER-001.md +48 -0
- package/templates/app/docs/errors/CAGE-WORKER-002.md +50 -0
- package/templates/app/docs/errors/CAGE-WORKER-003.md +48 -0
- package/templates/app/docs/errors/README.md +357 -0
- package/templates/app/docs/errors/runtime.md +50 -0
- package/templates/app/package.json +4 -7
- package/templates/app/packages/contracts/package.json +1 -1
- package/templates/app/packages/contracts/src/{dept.ts → aggregates/dept/index.ts} +11 -11
- package/templates/app/packages/contracts/src/{inventory.ts → aggregates/inventory/index.ts} +6 -6
- package/templates/app/packages/contracts/src/{inventory-lock.ts → aggregates/inventory-lock/index.ts} +5 -5
- package/templates/app/packages/contracts/src/aggregates/purchase-order/index.ts +86 -0
- package/templates/app/packages/contracts/src/{role.ts → aggregates/role/index.ts} +16 -16
- package/templates/app/packages/contracts/src/aggregates/user/index.ts +89 -0
- package/templates/app/packages/contracts/src/index.ts +20 -14
- package/templates/app/packages/contracts/src/{queries.ts → queries/index.ts} +2 -2
- package/templates/app/packages/domain/package.json +5 -4
- package/templates/app/packages/domain/src/index.ts +8 -7
- package/templates/app/packages/domain/src/{erp.ts → integrations/erp.ts} +16 -1
- package/templates/app/packages/domain/src/integrations/intelligence.ts +20 -0
- package/templates/app/packages/domain/src/modules/inventory/index.ts +3 -0
- package/templates/app/packages/domain/src/{inventory.ts → modules/inventory/inventory.ts} +12 -0
- package/templates/app/packages/domain/src/modules/purchase/approvals.ts +39 -0
- package/templates/app/packages/domain/src/modules/purchase/index.ts +7 -0
- package/templates/app/packages/domain/src/modules/purchase/intelligence.test.ts +62 -0
- package/templates/app/packages/domain/src/{jobs.ts → modules/purchase/jobs.ts} +5 -0
- package/templates/app/packages/domain/src/{purchase-order.test.ts → modules/purchase/purchase-order.test.ts} +11 -2
- package/templates/app/packages/domain/src/modules/purchase/purchase-order.ts +192 -0
- package/templates/app/packages/domain/src/{queries.ts → modules/purchase/queries.ts} +5 -0
- package/templates/app/packages/domain/src/{reactions.ts → workflows/purchase-inventory.ts} +8 -2
- package/templates/app/packages/domain/src/workflows/purchase-process.ts +42 -0
- package/templates/blank/.dockerignore +12 -0
- package/templates/blank/.env.example +71 -0
- package/templates/blank/.github/workflows/cage.yml +44 -0
- package/templates/blank/AGENTS.md +136 -0
- package/templates/blank/Dockerfile +25 -0
- package/templates/blank/README.md +40 -0
- package/templates/blank/_gitignore +9 -0
- package/templates/blank/apps/api/package.json +15 -0
- package/templates/blank/apps/api/src/main.ts +14 -0
- package/templates/blank/apps/api/src/worker.ts +10 -0
- package/templates/blank/apps/api/tsconfig.json +5 -0
- package/templates/blank/apps/web/index.html +14 -0
- package/templates/blank/apps/web/package.json +26 -0
- package/templates/blank/apps/web/src/app/app.tsx +106 -0
- package/templates/blank/apps/web/src/app/styles/global.css +606 -0
- package/templates/blank/apps/web/src/app/use-session.ts +43 -0
- package/templates/blank/apps/web/src/app/workspace-layout.tsx +95 -0
- package/templates/blank/apps/web/src/main.tsx +18 -0
- package/templates/blank/apps/web/src/modules/auth/index.ts +5 -0
- package/templates/blank/apps/web/src/modules/auth/pages/login-page.tsx +104 -0
- package/templates/blank/apps/web/src/modules/directory/index.ts +7 -0
- package/templates/blank/apps/web/src/modules/directory/pages/user-detail-page.tsx +78 -0
- package/templates/blank/apps/web/src/modules/directory/pages/users-page.tsx +93 -0
- package/templates/blank/apps/web/src/modules/workspace/index.ts +5 -0
- package/templates/blank/apps/web/src/modules/workspace/pages/home-page.tsx +62 -0
- package/templates/blank/apps/web/src/shared/lib/error-message.ts +22 -0
- package/templates/blank/apps/web/src/shared/lib/navigation.ts +21 -0
- package/templates/blank/apps/web/src/shared/ui/brand.tsx +19 -0
- package/templates/blank/apps/web/src/shared/ui/page-state.css +47 -0
- package/templates/blank/apps/web/src/shared/ui/page-state.tsx +76 -0
- package/templates/blank/apps/web/src/shared/ui/require-capability.tsx +34 -0
- package/templates/blank/apps/web/tsconfig.json +11 -0
- package/templates/blank/apps/web/vite.config.ts +24 -0
- package/templates/blank/cage.config.json +14 -0
- package/templates/blank/db/migrations/0001_init.sql +63 -0
- package/templates/blank/deploy/nginx.conf +52 -0
- package/templates/blank/docs/ai/README.md +98 -0
- package/templates/blank/docs/ai/architecture.md +148 -0
- package/templates/blank/docs/ai/commenting.md +203 -0
- package/templates/blank/docs/ai/diagnostics.md +80 -0
- package/templates/blank/docs/ai/files.md +93 -0
- package/templates/blank/docs/ai/intelligence.md +348 -0
- package/templates/blank/docs/ai/ontology-context.md +172 -0
- package/templates/blank/docs/ai/primitives.md +282 -0
- package/templates/blank/docs/ai/project-structure.md +128 -0
- package/templates/blank/docs/ai/purchase-example.md +111 -0
- package/templates/blank/docs/ai/recipes.md +89 -0
- package/templates/blank/docs/ai/relations.md +160 -0
- package/templates/blank/docs/ai/routing.md +86 -0
- package/templates/blank/docs/ai/transfers.md +92 -0
- package/templates/blank/docs/ai/troubleshooting.md +65 -0
- package/templates/blank/docs/ai/workflow.md +152 -0
- package/templates/blank/docs/errors/CAGE-AI-001.md +61 -0
- package/templates/blank/docs/errors/CAGE-APPR-001.md +48 -0
- package/templates/blank/docs/errors/CAGE-APPR-002.md +47 -0
- package/templates/blank/docs/errors/CAGE-APPR-003.md +47 -0
- package/templates/blank/docs/errors/CAGE-APPR-004.md +47 -0
- package/templates/blank/docs/errors/CAGE-APPR-005.md +47 -0
- package/templates/blank/docs/errors/CAGE-APPR-006.md +53 -0
- package/templates/blank/docs/errors/CAGE-APPR-007.md +50 -0
- package/templates/blank/docs/errors/CAGE-APPR-010.md +48 -0
- package/templates/blank/docs/errors/CAGE-AUDIT-001.md +53 -0
- package/templates/blank/docs/errors/CAGE-AUTH-001.md +47 -0
- package/templates/blank/docs/errors/CAGE-BIZ-001.md +51 -0
- package/templates/blank/docs/errors/CAGE-BIZ-002.md +49 -0
- package/templates/blank/docs/errors/CAGE-BUDGET-001.md +47 -0
- package/templates/blank/docs/errors/CAGE-BUDGET-002.md +47 -0
- package/templates/blank/docs/errors/CAGE-BUDGET-003.md +47 -0
- package/templates/blank/docs/errors/CAGE-CMD-002.md +47 -0
- package/templates/blank/docs/errors/CAGE-CMD-003.md +47 -0
- package/templates/blank/docs/errors/CAGE-CONN-001.md +47 -0
- package/templates/blank/docs/errors/CAGE-CONN-002.md +47 -0
- package/templates/blank/docs/errors/CAGE-CONN-003.md +47 -0
- package/templates/blank/docs/errors/CAGE-CONN-004.md +47 -0
- package/templates/blank/docs/errors/CAGE-CONN-005.md +47 -0
- package/templates/blank/docs/errors/CAGE-CONN-006.md +47 -0
- package/templates/blank/docs/errors/CAGE-CONN-007.md +47 -0
- package/templates/blank/docs/errors/CAGE-CONN-008.md +47 -0
- package/templates/blank/docs/errors/CAGE-CONN-009.md +47 -0
- package/templates/blank/docs/errors/CAGE-CONN-010.md +47 -0
- package/templates/blank/docs/errors/CAGE-CONN-011.md +47 -0
- package/templates/blank/docs/errors/CAGE-CONN-012.md +47 -0
- package/templates/blank/docs/errors/CAGE-CONN-013.md +49 -0
- package/templates/blank/docs/errors/CAGE-CONN-014.md +48 -0
- package/templates/blank/docs/errors/CAGE-CONN-015.md +49 -0
- package/templates/blank/docs/errors/CAGE-CREATE-001.md +53 -0
- package/templates/blank/docs/errors/CAGE-DECL-001.md +48 -0
- package/templates/blank/docs/errors/CAGE-DECL-002.md +48 -0
- package/templates/blank/docs/errors/CAGE-DECL-003.md +47 -0
- package/templates/blank/docs/errors/CAGE-DECL-004.md +47 -0
- package/templates/blank/docs/errors/CAGE-DEP-001.md +48 -0
- package/templates/blank/docs/errors/CAGE-DEP-002.md +47 -0
- package/templates/blank/docs/errors/CAGE-DEP-003.md +47 -0
- package/templates/blank/docs/errors/CAGE-DEP-004.md +47 -0
- package/templates/blank/docs/errors/CAGE-DEP-005.md +47 -0
- package/templates/blank/docs/errors/CAGE-DIAG-001.md +53 -0
- package/templates/blank/docs/errors/CAGE-DLQ-001.md +48 -0
- package/templates/blank/docs/errors/CAGE-ENV-001.md +52 -0
- package/templates/blank/docs/errors/CAGE-ENV-002.md +51 -0
- package/templates/blank/docs/errors/CAGE-ENV-003.md +48 -0
- package/templates/blank/docs/errors/CAGE-EVENT-001.md +47 -0
- package/templates/blank/docs/errors/CAGE-EVENT-002.md +50 -0
- package/templates/blank/docs/errors/CAGE-FIELD-001.md +47 -0
- package/templates/blank/docs/errors/CAGE-FIELD-002.md +47 -0
- package/templates/blank/docs/errors/CAGE-FIELD-003.md +47 -0
- package/templates/blank/docs/errors/CAGE-FIELD-004.md +47 -0
- package/templates/blank/docs/errors/CAGE-FILE-001.md +56 -0
- package/templates/blank/docs/errors/CAGE-GEN-001.md +48 -0
- package/templates/blank/docs/errors/CAGE-GEN-002.md +47 -0
- package/templates/blank/docs/errors/CAGE-GEN-003.md +53 -0
- package/templates/blank/docs/errors/CAGE-GRANT-001.md +49 -0
- package/templates/blank/docs/errors/CAGE-GRANT-002.md +48 -0
- package/templates/blank/docs/errors/CAGE-GRANT-003.md +48 -0
- package/templates/blank/docs/errors/CAGE-IMPACT-001.md +48 -0
- package/templates/blank/docs/errors/CAGE-IMPACT-002.md +52 -0
- package/templates/blank/docs/errors/CAGE-INIT-001.md +47 -0
- package/templates/blank/docs/errors/CAGE-INIT-002.md +49 -0
- package/templates/blank/docs/errors/CAGE-INIT-003.md +48 -0
- package/templates/blank/docs/errors/CAGE-INIT-004.md +48 -0
- package/templates/blank/docs/errors/CAGE-INIT-005.md +52 -0
- package/templates/blank/docs/errors/CAGE-JOB-001.md +47 -0
- package/templates/blank/docs/errors/CAGE-JOB-002.md +47 -0
- package/templates/blank/docs/errors/CAGE-JOB-003.md +47 -0
- package/templates/blank/docs/errors/CAGE-LINT-001.md +47 -0
- package/templates/blank/docs/errors/CAGE-MIG-001.md +47 -0
- package/templates/blank/docs/errors/CAGE-MIG-002.md +47 -0
- package/templates/blank/docs/errors/CAGE-MIG-003.md +5 -0
- package/templates/blank/docs/errors/CAGE-MIG-004.md +5 -0
- package/templates/blank/docs/errors/CAGE-MIG-005.md +47 -0
- package/templates/blank/docs/errors/CAGE-NAME-001.md +47 -0
- package/templates/blank/docs/errors/CAGE-NAME-002.md +47 -0
- package/templates/blank/docs/errors/CAGE-NAME-003.md +47 -0
- package/templates/blank/docs/errors/CAGE-NAME-004.md +47 -0
- package/templates/blank/docs/errors/CAGE-NAME-005.md +47 -0
- package/templates/blank/docs/errors/CAGE-NAME-006.md +47 -0
- package/templates/blank/docs/errors/CAGE-ORG-001.md +50 -0
- package/templates/blank/docs/errors/CAGE-PAIR-002.md +51 -0
- package/templates/blank/docs/errors/CAGE-QUERY-001.md +47 -0
- package/templates/blank/docs/errors/CAGE-QUERY-002.md +47 -0
- package/templates/blank/docs/errors/CAGE-QUERY-003.md +50 -0
- package/templates/blank/docs/errors/CAGE-REACT-001.md +47 -0
- package/templates/blank/docs/errors/CAGE-REACT-002.md +47 -0
- package/templates/blank/docs/errors/CAGE-REACT-003.md +50 -0
- package/templates/blank/docs/errors/CAGE-READS-001.md +50 -0
- package/templates/blank/docs/errors/CAGE-REG-001.md +54 -0
- package/templates/blank/docs/errors/CAGE-REG-002.md +49 -0
- package/templates/blank/docs/errors/CAGE-REG-003.md +47 -0
- package/templates/blank/docs/errors/CAGE-REL-001.md +64 -0
- package/templates/blank/docs/errors/CAGE-ROUTE-001.md +48 -0
- package/templates/blank/docs/errors/CAGE-SCOPE-001.md +47 -0
- package/templates/blank/docs/errors/CAGE-SCOPE-002.md +47 -0
- package/templates/blank/docs/errors/CAGE-SECRET-001.md +48 -0
- package/templates/blank/docs/errors/CAGE-SECRET-002.md +47 -0
- package/templates/blank/docs/errors/CAGE-SENS-001.md +48 -0
- package/templates/blank/docs/errors/CAGE-SQL-001.md +47 -0
- package/templates/blank/docs/errors/CAGE-SQL-002.md +47 -0
- package/templates/blank/docs/errors/CAGE-STATE-001.md +49 -0
- package/templates/blank/docs/errors/CAGE-STATE-002.md +47 -0
- package/templates/blank/docs/errors/CAGE-STATE-003.md +47 -0
- package/templates/blank/docs/errors/CAGE-STATE-004.md +47 -0
- package/templates/blank/docs/errors/CAGE-STATE-005.md +49 -0
- package/templates/blank/docs/errors/CAGE-STATE-010.md +48 -0
- package/templates/blank/docs/errors/CAGE-STATE-011.md +48 -0
- package/templates/blank/docs/errors/CAGE-STRUCT-001.md +51 -0
- package/templates/blank/docs/errors/CAGE-STRUCT-002.md +51 -0
- package/templates/blank/docs/errors/CAGE-SYNC-001.md +49 -0
- package/templates/blank/docs/errors/CAGE-TEST-001.md +47 -0
- package/templates/blank/docs/errors/CAGE-TEST-002.md +50 -0
- package/templates/blank/docs/errors/CAGE-TEST-003.md +52 -0
- package/templates/blank/docs/errors/CAGE-UNSAFE-001.md +49 -0
- package/templates/blank/docs/errors/CAGE-UPGRADE-001.md +48 -0
- package/templates/blank/docs/errors/CAGE-WORKER-001.md +48 -0
- package/templates/blank/docs/errors/CAGE-WORKER-002.md +50 -0
- package/templates/blank/docs/errors/CAGE-WORKER-003.md +48 -0
- package/templates/blank/docs/errors/README.md +357 -0
- package/templates/blank/docs/errors/runtime.md +50 -0
- package/templates/blank/docs/examples/purchase-admin/README.md +5 -0
- package/templates/blank/docs/examples/purchase-admin/apps/api/src/main.ts +14 -0
- package/templates/blank/docs/examples/purchase-admin/apps/api/src/worker.ts +17 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/app/app.tsx +128 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/app/styles/global.css +743 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/app/use-session.ts +43 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/app/workspace-layout.tsx +109 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/main.tsx +18 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/approval/hooks/use-approval-tasks.ts +31 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/approval/index.ts +6 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/approval/pages/approval-tasks-page.tsx +73 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/auth/index.ts +5 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/auth/pages/login-page.tsx +71 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/inventory/index.ts +5 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/inventory/pages/inventory-page.tsx +102 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/components/approval-history.tsx +32 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/components/order-attachments.tsx +29 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/components/purchase-assistant-context.tsx +17 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/components/purchase-order-form.css +6 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/components/purchase-order-form.tsx +82 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/index.ts +7 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/lib/presentation.ts +20 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/pages/purchase-intelligence.css +15 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/pages/purchase-order-detail-page.tsx +154 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/pages/purchase-orders-page.tsx +240 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/workspace/index.ts +5 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/workspace/pages/home-page.tsx +44 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/hooks/use-command.ts +42 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/lib/error-message.ts +24 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/lib/navigation.ts +21 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/assistant-markdown.tsx +19 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/assistant-panel.css +134 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/assistant-panel.tsx +200 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/assistant-scope.tsx +72 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/attachment-upload.css +28 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/attachment-upload.tsx +163 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/notice.tsx +20 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/page-heading.tsx +35 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/page-state.css +47 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/page-state.tsx +76 -0
- package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/require-capability.tsx +34 -0
- package/templates/blank/docs/examples/purchase-admin/cage.config.json +123 -0
- package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/aggregates/dept/index.ts +74 -0
- package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/aggregates/inventory/index.ts +57 -0
- package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/aggregates/inventory-lock/index.ts +52 -0
- package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/aggregates/purchase-order/index.ts +86 -0
- package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/aggregates/role/index.ts +85 -0
- package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/aggregates/user/index.ts +89 -0
- package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/index.ts +87 -0
- package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/queries/index.ts +17 -0
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/index.ts +10 -0
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/integrations/erp.ts +51 -0
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/integrations/intelligence.ts +20 -0
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/inventory/index.ts +3 -0
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/inventory/inventory.ts +55 -0
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/approvals.ts +39 -0
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/index.ts +7 -0
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/intelligence.test.ts +62 -0
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/jobs.ts +18 -0
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/purchase-order.test.ts +146 -0
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/purchase-order.ts +192 -0
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/queries.ts +15 -0
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/workflows/purchase-inventory.ts +30 -0
- package/templates/blank/docs/examples/purchase-admin/packages/domain/src/workflows/purchase-process.ts +42 -0
- package/templates/blank/package.json +22 -0
- package/templates/blank/packages/contracts/package.json +16 -0
- package/templates/blank/packages/contracts/src/aggregates/dept/index.ts +74 -0
- package/templates/blank/packages/contracts/src/aggregates/role/index.ts +85 -0
- package/templates/blank/packages/contracts/src/aggregates/user/index.ts +89 -0
- package/templates/blank/packages/contracts/src/index.ts +55 -0
- package/templates/blank/packages/contracts/src/queries/index.ts +13 -0
- package/templates/blank/packages/contracts/tsconfig.json +5 -0
- package/templates/blank/packages/domain/package.json +24 -0
- package/templates/blank/packages/domain/src/index.ts +5 -0
- package/templates/blank/packages/domain/tsconfig.json +5 -0
- package/templates/blank/pnpm-workspace.yaml +10 -0
- package/templates/blank/renovate.json +5 -0
- package/templates/blank/tsconfig.base.json +8 -0
- package/dist/database.d.ts +0 -5
- package/dist/database.js +0 -70
- package/dist/database.js.map +0 -1
- package/managed/errors/CAGE-APPR-001.md +0 -32
- package/managed/errors/CAGE-APPR-002.md +0 -32
- package/managed/errors/CAGE-APPR-003.md +0 -32
- package/managed/errors/CAGE-APPR-004.md +0 -32
- package/managed/errors/CAGE-APPR-005.md +0 -32
- package/managed/errors/CAGE-APPR-006.md +0 -32
- package/managed/errors/CAGE-APPR-007.md +0 -32
- package/managed/errors/CAGE-APPR-010.md +0 -32
- package/managed/errors/CAGE-AUTH-001.md +0 -32
- package/managed/errors/CAGE-BUDGET-001.md +0 -32
- package/managed/errors/CAGE-BUDGET-002.md +0 -32
- package/managed/errors/CAGE-BUDGET-003.md +0 -32
- package/managed/errors/CAGE-CMD-002.md +0 -32
- package/managed/errors/CAGE-CMD-003.md +0 -34
- package/managed/errors/CAGE-CONN-001.md +0 -32
- package/managed/errors/CAGE-CONN-002.md +0 -32
- package/managed/errors/CAGE-CONN-003.md +0 -32
- package/managed/errors/CAGE-CONN-004.md +0 -32
- package/managed/errors/CAGE-CONN-005.md +0 -32
- package/managed/errors/CAGE-CONN-006.md +0 -32
- package/managed/errors/CAGE-CONN-007.md +0 -32
- package/managed/errors/CAGE-CONN-008.md +0 -32
- package/managed/errors/CAGE-CONN-009.md +0 -32
- package/managed/errors/CAGE-CONN-010.md +0 -32
- package/managed/errors/CAGE-CONN-011.md +0 -32
- package/managed/errors/CAGE-CONN-012.md +0 -32
- package/managed/errors/CAGE-CREATE-001.md +0 -32
- package/managed/errors/CAGE-DECL-001.md +0 -34
- package/managed/errors/CAGE-DECL-002.md +0 -34
- package/managed/errors/CAGE-DECL-003.md +0 -34
- package/managed/errors/CAGE-DECL-004.md +0 -34
- package/managed/errors/CAGE-DEP-001.md +0 -34
- package/managed/errors/CAGE-DEP-002.md +0 -34
- package/managed/errors/CAGE-DEP-003.md +0 -34
- package/managed/errors/CAGE-DEP-004.md +0 -34
- package/managed/errors/CAGE-DEP-005.md +0 -34
- package/managed/errors/CAGE-DLQ-001.md +0 -32
- package/managed/errors/CAGE-ENV-001.md +0 -32
- package/managed/errors/CAGE-EVENT-001.md +0 -32
- package/managed/errors/CAGE-EVENT-002.md +0 -32
- package/managed/errors/CAGE-FIELD-001.md +0 -32
- package/managed/errors/CAGE-FIELD-002.md +0 -32
- package/managed/errors/CAGE-FIELD-003.md +0 -32
- package/managed/errors/CAGE-FIELD-004.md +0 -32
- package/managed/errors/CAGE-GEN-001.md +0 -33
- package/managed/errors/CAGE-GEN-002.md +0 -33
- package/managed/errors/CAGE-GRANT-001.md +0 -32
- package/managed/errors/CAGE-GRANT-002.md +0 -32
- package/managed/errors/CAGE-GRANT-003.md +0 -32
- package/managed/errors/CAGE-IMPACT-001.md +0 -32
- package/managed/errors/CAGE-JOB-001.md +0 -32
- package/managed/errors/CAGE-JOB-002.md +0 -32
- package/managed/errors/CAGE-JOB-003.md +0 -32
- package/managed/errors/CAGE-LINT-001.md +0 -32
- package/managed/errors/CAGE-MIG-001.md +0 -32
- package/managed/errors/CAGE-MIG-002.md +0 -32
- package/managed/errors/CAGE-MIG-003.md +0 -32
- package/managed/errors/CAGE-MIG-004.md +0 -32
- package/managed/errors/CAGE-MIG-005.md +0 -32
- package/managed/errors/CAGE-NAME-001.md +0 -32
- package/managed/errors/CAGE-NAME-002.md +0 -32
- package/managed/errors/CAGE-NAME-003.md +0 -32
- package/managed/errors/CAGE-NAME-004.md +0 -32
- package/managed/errors/CAGE-NAME-005.md +0 -32
- package/managed/errors/CAGE-NAME-006.md +0 -32
- package/managed/errors/CAGE-ORG-001.md +0 -32
- package/managed/errors/CAGE-PAIR-002.md +0 -33
- package/managed/errors/CAGE-QUERY-001.md +0 -32
- package/managed/errors/CAGE-QUERY-002.md +0 -32
- package/managed/errors/CAGE-QUERY-003.md +0 -32
- package/managed/errors/CAGE-REACT-001.md +0 -32
- package/managed/errors/CAGE-REACT-002.md +0 -32
- package/managed/errors/CAGE-READS-001.md +0 -32
- package/managed/errors/CAGE-REG-001.md +0 -32
- package/managed/errors/CAGE-REG-002.md +0 -32
- package/managed/errors/CAGE-REG-003.md +0 -32
- package/managed/errors/CAGE-ROUTE-001.md +0 -32
- package/managed/errors/CAGE-SCOPE-001.md +0 -32
- package/managed/errors/CAGE-SCOPE-002.md +0 -32
- package/managed/errors/CAGE-SECRET-001.md +0 -32
- package/managed/errors/CAGE-SECRET-002.md +0 -32
- package/managed/errors/CAGE-SENS-001.md +0 -32
- package/managed/errors/CAGE-SQL-001.md +0 -32
- package/managed/errors/CAGE-SQL-002.md +0 -32
- package/managed/errors/CAGE-STATE-001.md +0 -32
- package/managed/errors/CAGE-STATE-002.md +0 -32
- package/managed/errors/CAGE-STATE-003.md +0 -32
- package/managed/errors/CAGE-STATE-004.md +0 -32
- package/managed/errors/CAGE-STATE-005.md +0 -32
- package/managed/errors/CAGE-STATE-010.md +0 -32
- package/managed/errors/CAGE-STATE-011.md +0 -32
- package/managed/errors/CAGE-SYNC-001.md +0 -35
- package/managed/errors/CAGE-TEST-001.md +0 -33
- package/managed/errors/CAGE-UNSAFE-001.md +0 -32
- package/managed/errors/CAGE-UPGRADE-001.md +0 -32
- package/managed/errors/README.md +0 -99
- package/templates/app/compose.yaml +0 -39
- package/templates/app/packages/contracts/src/purchase-order.ts +0 -72
- package/templates/app/packages/contracts/src/user.ts +0 -89
- package/templates/app/packages/domain/src/approvals.ts +0 -18
- package/templates/app/packages/domain/src/purchase-order.ts +0 -122
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# CAGE-GEN-001:契约等生成结果过期
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:gen --check / verify。
|
|
10
|
+
|
|
11
|
+
gen --check/verify 比较发现需提交的生成文件缺失或与声明不一致。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 改源声明后运行 pnpm gen,审查并提交结果;手改生成物会被覆盖,不靠更新预期掩盖错误。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
修改 domain → pnpm gen → pnpm exec cage gen --check
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
直接编辑 packages/contracts/src/aggregates/purchase-order/index.ts
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
重新生成并审查后执行 cage gen --check;结构变化还需审查并执行 migrate。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/cli/src/gen/index.ts:76`
|
|
38
|
+
- `packages/cli/src/gen/index.ts:122`
|
|
39
|
+
|
|
40
|
+
实现片段(位置随框架版本更新):
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
findings: Finding[],
|
|
44
|
+
code = 'CAGE-GEN-001',
|
|
45
|
+
) {
|
|
46
|
+
const cur = existsSync(path) ? readFileSync(path, 'utf8') : null;
|
|
47
|
+
if (cur === content) return;
|
|
48
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-GEN-002:声明结构没有对应迁移
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:gen --check / verify。
|
|
10
|
+
|
|
11
|
+
声明的期望结构与最后一个迁移内嵌的结构快照不一致。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 运行 pnpm gen 生成新迁移草稿,审查回填、非空与破坏性变更后提交;实际落库还需 pnpm migrate。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
新增字段 → gen → 审查新迁移 → migrate
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
修改已执行 0001_init.sql,或把 gen 当作已更新数据库
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
重新生成并审查后执行 cage gen --check;结构变化还需审查并执行 migrate。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/cli/src/gen/index.ts:209`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
findings.push({
|
|
43
|
+
code: 'CAGE-GEN-002',
|
|
44
|
+
at: cfg.migrations,
|
|
45
|
+
reason: `声明的表结构与迁移不一致(${stmts.length} 处变化)`,
|
|
46
|
+
fix: '运行 cage gen 生成迁移草稿,人审后提交',
|
|
47
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# CAGE-GEN-003:输入校验需要服务端执行
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:gen --check / verify。
|
|
10
|
+
|
|
11
|
+
refine/superRefine、transform 等可执行校验无法无损转换到生成的客户端 schema,报告包含字段路径。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 阅读诊断定位的命令和字段;把可表达规则声明成标准 schema,保留服务端作为最终校验。
|
|
16
|
+
2. 确需自定义逻辑时,在页面解释业务拒绝并处理领域错误;不要认为契约生成成功代表执行函数已被复制。
|
|
17
|
+
|
|
18
|
+
## 正例
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
strict、multipleOf、default 使用标准 Zod 声明;自定义规则按字段报告降级
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 反例
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
把服务端 refine 丢失当作客户端校验完全等价
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 修复后验证
|
|
31
|
+
|
|
32
|
+
重新生成并审查后执行 cage gen --check;结构变化还需审查并执行 migrate。
|
|
33
|
+
|
|
34
|
+
## 框架内的检查位置
|
|
35
|
+
|
|
36
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
37
|
+
|
|
38
|
+
- `packages/cli/src/gen/index.ts:159`
|
|
39
|
+
- `packages/cli/src/gen/zod-code.ts:64`
|
|
40
|
+
- `packages/cli/src/gen/zod-code.ts:84`
|
|
41
|
+
- `packages/cli/src/gen/zod-code.ts:120`
|
|
42
|
+
- `packages/cli/src/gen/zod-code.ts:140`
|
|
43
|
+
- `packages/cli/src/gen/zod-code.ts:217`
|
|
44
|
+
|
|
45
|
+
实现片段(位置随框架版本更新):
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
for (const diagnostic of schemaDiagnostics(entry.input)) findings.push({
|
|
49
|
+
code: 'CAGE-GEN-003', severity: 'warning', at: `${entry.name}:${diagnostic.path}`,
|
|
50
|
+
reason: diagnostic.reason, fix: '前端校验只提供即时提示,以服务端命令校验为准;不要复制可执行函数到契约。',
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
```
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# CAGE-GRANT-001:授予超出自己的能力或额度
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:组织命令。
|
|
10
|
+
|
|
11
|
+
管理员授予自己没有的能力/更高参数,或分配含越权能力的角色。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 由具备足够能力和参数的管理员操作;降低授予范围到自身权限内,不禁用防提权约束。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
有 approve=100000 额度的管理员授予不超过自身的额度
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
自己没有采购审批能力,却给别人分配该能力或包含它的角色
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
用真实操作人验证允许与拒绝场景,检查目标角色最终能力、参数和范围。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/admin/src/domain/constraints.ts:39`
|
|
38
|
+
- `packages/admin/src/domain/constraints.ts:42`
|
|
39
|
+
- `packages/admin/src/domain/constraints.ts:78`
|
|
40
|
+
|
|
41
|
+
实现片段(位置随框架版本更新):
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
const mine = ctx.capabilities.get(input.capability);
|
|
45
|
+
if (!mine) return violation('[CAGE-GRANT-001] 不能授出自己没有的能力点');
|
|
46
|
+
for (const [k, v] of Object.entries(input.params ?? {})) {
|
|
47
|
+
if (typeof v === 'number' && typeof mine[k] === 'number' && v > (mine[k] as number)) {
|
|
48
|
+
return violation(`[CAGE-GRANT-001] 参数 ${k}=${v} 超过了你自己的 ${mine[k]}`);
|
|
49
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# CAGE-GRANT-002:授予超出自己的数据范围
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:组织命令。
|
|
10
|
+
|
|
11
|
+
设置范围或分配角色时,目标范围比操作人自身范围更宽。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 核对操作人在该聚合的范围,由具有足够范围的管理员配置;部门限定还需对应范围字段。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
自己有 all 范围时,按业务需求授予部门范围
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
仅有本人范围的管理员给角色授予全部部门
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
用真实操作人验证允许与拒绝场景,检查目标角色最终能力、参数和范围。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/admin/src/domain/constraints.ts:59`
|
|
38
|
+
- `packages/admin/src/domain/constraints.ts:82`
|
|
39
|
+
|
|
40
|
+
实现片段(位置随框架版本更新):
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
const want = COMBINATOR_WIDTH[input.combinator as Combinator] ?? 99;
|
|
44
|
+
return want <= ownWidth(ctx, input.aggregate) ? ok() : violation('[CAGE-GRANT-002] 不能授出比自己更宽的数据范围');
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# CAGE-GRANT-003:能力不在代码目录中
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:组织命令。
|
|
10
|
+
|
|
11
|
+
授权请求引用了注册表没有声明的能力点。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 先在 domain 声明并导出相应命令/聚合,再查看能力目录;不要在管理页面凭空发明能力名称。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
PurchaseOrder.submit // 由已导出的命令形成
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
PurchaseOrder.anything // 没有对应声明
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
用真实操作人验证允许与拒绝场景,检查目标角色最终能力、参数和范围。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/admin/src/domain/constraints.ts:21`
|
|
38
|
+
- `packages/admin/src/domain/constraints.ts:26`
|
|
39
|
+
|
|
40
|
+
实现片段(位置随框架版本更新):
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
* 构造目录存在性约束。check 使用内核提供的实时目录核对 input.capability,
|
|
44
|
+
* 未知能力返回 CAGE-GRANT-003;该检查不负责判断操作者是否拥有这个能力。
|
|
45
|
+
*/
|
|
46
|
+
export const knownCapability = (): Constraint => ({
|
|
47
|
+
name: 'knownCapability',
|
|
48
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# CAGE-IMPACT-001:影响分析没有可用基线
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:impact / 基线加载。
|
|
10
|
+
|
|
11
|
+
impact 未指定基线,或 Git 基线无法加载/抽取。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 使用真实存在且能加载的提交,或修改前保存的完整 ontology.json。基线失败不能当作没有变化。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
pnpm exec cage impact --base-file .cage/before-change.json
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
修改后才保存旧图,或指定不存在的提交并忽略失败
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
使用可靠基线重新 impact,确认报告中的变化与本次需求相符。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/cli/src/baseline.ts:58`
|
|
38
|
+
- `packages/cli/src/main.ts:287`
|
|
39
|
+
|
|
40
|
+
实现片段(位置随框架版本更新):
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
);
|
|
44
|
+
if (code !== 0) throw new Error('[CAGE-IMPACT-001] 基线抽取失败,请修复基线声明或使用保存的 --base-file');
|
|
45
|
+
return readOntology(join(project, '.cage/ontology.json'));
|
|
46
|
+
} finally {
|
|
47
|
+
// 先断开本次建立的 junction,避免清理工作树时遍历共享依赖目录。
|
|
48
|
+
```
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# CAGE-IMPACT-002:命名本体快照无效
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:impact / 基线加载。
|
|
10
|
+
|
|
11
|
+
快照名非法、同名已存在、指定快照不存在,或快照格式损坏。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 先 cage snapshot list 核对已有名称,再用新的稳定名称保存。
|
|
16
|
+
2. 保存后通过 impact --snapshot 比较;不要覆盖旧基线或把修改后的图当成修改前状态。
|
|
17
|
+
|
|
18
|
+
## 正例
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
cage snapshot save before-rental-change;cage impact --snapshot before-rental-change
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 反例
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
多次使用同名快照覆盖唯一旧图
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 修复后验证
|
|
31
|
+
|
|
32
|
+
使用可靠基线重新 impact,确认报告中的变化与本次需求相符。
|
|
33
|
+
|
|
34
|
+
## 框架内的检查位置
|
|
35
|
+
|
|
36
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
37
|
+
|
|
38
|
+
- `packages/cli/src/impact.ts:95`
|
|
39
|
+
- `packages/cli/src/snapshots.ts:24`
|
|
40
|
+
- `packages/cli/src/snapshots.ts:27`
|
|
41
|
+
- `packages/cli/src/snapshots.ts:56`
|
|
42
|
+
- `packages/cli/src/snapshots.ts:58`
|
|
43
|
+
|
|
44
|
+
实现片段(位置随框架版本更新):
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
const graph = value.graph ?? value;
|
|
48
|
+
if (graph.version !== 1 || !Array.isArray(graph.nodes) || !Array.isArray(graph.edges)) throw new Error('[CAGE-IMPACT-002] 基线文件不是有效本体图或命名快照');
|
|
49
|
+
return graph as Ontology;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-INIT-001:管理员 URL 没有数据库名
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:init。
|
|
10
|
+
|
|
11
|
+
init 的管理员连接没有指定一个明确的已有数据库。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 在 URL 路径填写实际数据库名,确认该库已经存在;init 不负责创建数据库。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
postgresql://postgres:已编码密码@主机:端口/business_db
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
postgresql://postgres:密码@主机:端口/
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
恢复/核对配置后运行 cage init 验证,随后按流程 gen、审查迁移并 migrate;不输出凭证。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/cli/src/init.ts:100`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
if (!target.pathname || target.pathname === '/') {
|
|
43
|
+
throw new Error('[CAGE-INIT-001] 管理员连接必须指定已经存在的数据库名,例如 postgresql://postgres:密码@localhost:5432/business_db');
|
|
44
|
+
}
|
|
45
|
+
const admin = new pg.Client({ connectionString: adminUrl, connectionTimeoutMillis: 5000, application_name: 'cage-init' });
|
|
46
|
+
let staged: string | undefined;
|
|
47
|
+
```
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# CAGE-INIT-002:集群已有账号但缺少原凭证
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:init。
|
|
10
|
+
|
|
11
|
+
PostgreSQL 集群已经存在 Cage 登录角色,而本项目没有保存可复用的三种连接。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 从已有项目或管理员安全取得对应角色的原连接,填入本项目 .env,再运行 init 验证。
|
|
16
|
+
2. 角色名在集群共享;不要为新项目随机重置 cage_app/read/migrate 的密码,影响其他项目。
|
|
17
|
+
3. 如需完全隔离的账号策略,先规划集群/角色隔离方案;不删除共享角色绕过检查。
|
|
18
|
+
|
|
19
|
+
## 正例
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
复用原 APP/READ/MIGRATE 凭证,指向本项目实际同一库
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 反例
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
ALTER ROLE 重置共享账号密码,导致已有应用断连
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 修复后验证
|
|
32
|
+
|
|
33
|
+
恢复/核对配置后运行 cage init 验证,随后按流程 gen、审查迁移并 migrate;不输出凭证。
|
|
34
|
+
|
|
35
|
+
## 框架内的检查位置
|
|
36
|
+
|
|
37
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
38
|
+
|
|
39
|
+
- `packages/cli/src/init.ts:114`
|
|
40
|
+
|
|
41
|
+
实现片段(位置随框架版本更新):
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
if (existing.rowCount !== 4 || !hasSaved) {
|
|
45
|
+
throw new Error('[CAGE-INIT-002] PostgreSQL 集群已有 Cage 账号;请在 .env 提供已有的 APP / READ / MIGRATE 连接后重试。初始化不会重置这些账号的密码');
|
|
46
|
+
}
|
|
47
|
+
if (new URL(saved.APP).host !== target.host || new URL(saved.APP).pathname !== target.pathname) {
|
|
48
|
+
throw new Error('[CAGE-INIT-003] 已有账号连接与管理员连接必须指向同一个数据库;请检查 .env');
|
|
49
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# CAGE-INIT-003:三种连接身份或目标不一致
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:init。
|
|
10
|
+
|
|
11
|
+
APP/READ/MIGRATE 账号不是各自 Cage 账号,或三者及管理员连接不指向同一目标数据库。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 核对 URL 的用户名、主机、端口、数据库名;各自使用正确账号,并连接同一个库,不输出密码。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
cage_app/cage_read/cage_migrate 均连接同一 host:port/business_db
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
app 连接 business_db,而 read/migrate 指向另一个库
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
恢复/核对配置后运行 cage init 验证,随后按流程 gen、审查迁移并 migrate;不输出凭证。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/cli/src/init.ts:30`
|
|
38
|
+
- `packages/cli/src/init.ts:117`
|
|
39
|
+
|
|
40
|
+
实现片段(位置随框架版本更新):
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
if (url.username !== accounts[key] || url.host !== target.host || url.pathname !== target.pathname) {
|
|
44
|
+
throw new Error('[CAGE-INIT-003] APP / READ / MIGRATE 需使用各自的 cage 账号,指向同一个数据库;请检查 .env');
|
|
45
|
+
}
|
|
46
|
+
const client = new pg.Client({ connectionString: urls[key], connectionTimeoutMillis: 5000 });
|
|
47
|
+
try {
|
|
48
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# CAGE-INIT-004:账号已创建但 .env 替换失败
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:init。
|
|
10
|
+
|
|
11
|
+
数据库账号权限已提交,随机凭证仍保存在错误指出的 .env.cage-init-*.tmp 恢复文件中。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 保留恢复文件,解除文件占用或修复项目目录权限,将该文件恢复为项目 .env。
|
|
16
|
+
2. 恢复后运行 init 验证连接,不重新生成密码;恢复文件及 .env 均含凭证,不提交到 Git,不发到聊天。
|
|
17
|
+
|
|
18
|
+
## 正例
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
按报错路径恢复 .env 后验证并继续 gen/migrate
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 反例
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
删除恢复文件,丢失刚创建角色的随机密码
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 修复后验证
|
|
31
|
+
|
|
32
|
+
恢复/核对配置后运行 cage init 验证,随后按流程 gen、审查迁移并 migrate;不输出凭证。
|
|
33
|
+
|
|
34
|
+
## 框架内的检查位置
|
|
35
|
+
|
|
36
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
37
|
+
|
|
38
|
+
- `packages/cli/src/init.ts:142`
|
|
39
|
+
|
|
40
|
+
实现片段(位置随框架版本更新):
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
} catch {
|
|
44
|
+
throw new Error(`[CAGE-INIT-004] 账号权限已准备,但无法替换 .env;凭证保存在 ${staged},请将它恢复为项目 .env 后继续`);
|
|
45
|
+
}
|
|
46
|
+
staged = undefined;
|
|
47
|
+
return { status: reuse ? 'reused' : 'created', envFile };
|
|
48
|
+
```
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# CAGE-INIT-005:显式组织初始化或凭据交付失败
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:init。
|
|
10
|
+
|
|
11
|
+
bootstrap 配置不完整,凭据文件已存在、权限无法限制,或组织初始化事务失败。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 审查执行迁移后,提供新的凭据文件路径和实际可用连接;父目录需存在。
|
|
16
|
+
2. 先修复文件权限或数据库错误,再重新执行;不能把密码转而打印到服务日志。
|
|
17
|
+
|
|
18
|
+
## 正例
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
cage bootstrap --credentials-file .cage/admin-credentials.json // 新受限文件
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 反例
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
覆盖已有凭据文件,或初始化失败后继续输出“成功”
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 修复后验证
|
|
31
|
+
|
|
32
|
+
恢复/核对配置后运行 cage init 验证,随后按流程 gen、审查迁移并 migrate;不输出凭证。
|
|
33
|
+
|
|
34
|
+
## 框架内的检查位置
|
|
35
|
+
|
|
36
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
37
|
+
|
|
38
|
+
- `packages/cli/src/bootstrap.ts:19`
|
|
39
|
+
- `packages/cli/src/bootstrap.ts:23`
|
|
40
|
+
- `packages/cli/src/bootstrap.ts:32`
|
|
41
|
+
- `packages/cli/src/bootstrap.ts:45`
|
|
42
|
+
- `packages/cli/src/bootstrap.ts:61`
|
|
43
|
+
|
|
44
|
+
实现片段(位置随框架版本更新):
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
* @param file 已解析的目标路径,父目录必须存在,目标不得已存在。
|
|
48
|
+
* @throws 创建或 ACL 限制失败时抛出 CAGE-INIT-005;已创建空文件可能保留,不能视为交付成功。
|
|
49
|
+
*/
|
|
50
|
+
export function protectCredentialFile(file: string): void {
|
|
51
|
+
try { closeSync(openSync(file, 'wx', 0o600)); }
|
|
52
|
+
```
|