@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-APPR-001:可路由字段不存在
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
approval.routable 引用了所属聚合没有声明的字段。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 先在聚合声明实际字段,再将需要给审批路由的字段放入 routable;不要把任意输入直接交给流程。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
routable: ['amount', 'deptId'] // 两字段均在 PurchaseOrder.fields 中
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
routable: ['managerName'] // 聚合没有该字段
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及选人/流程推进时,用实际用户、部门和角色提交并处理待办,检查 worker 与死信。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/approval/src/route.ts:159`
|
|
38
|
+
- `packages/kernel/src/primitives/flow.ts:245`
|
|
39
|
+
|
|
40
|
+
实现片段(位置随框架版本更新):
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
for (const field of s.context.fields) if (!binding.agg.fields[field] || binding.agg.fields[field].isHidden)
|
|
44
|
+
throw declError('CAGE-APPR-001', `AI 上下文字段 ${field} 不存在或不可公开`);
|
|
45
|
+
for (const query of s.context.queries ?? []) if (!registry.queries.some(q => q.name === query))
|
|
46
|
+
throw declError('CAGE-REG-001', `AI 步骤引用的查询 ${query} 未导出`);
|
|
47
|
+
}
|
|
48
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-APPR-002:审批结论落到其他聚合
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
onApproved 或 onRejected 的命令不属于当前审批绑定的聚合。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 把结论绑定到当前单据的命令;后续跨对象动作通过该命令的事件和反应完成。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
PurchaseOrder 的审批绑定使用 approvePurchaseOrder 命令
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
采购审批 onApproved 直接绑定 InventoryLock.acquire
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及选人/流程推进时,用实际用户、部门和角色提交并处理待办,检查 worker 与死信。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/kernel/src/primitives/flow.ts:248`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
for (const c of [def.onApproved, def.onRejected, ...(def.onReturned ? [def.onReturned] : [])]) {
|
|
43
|
+
if (c.agg !== agg) throw declError('CAGE-APPR-002', `审批结论命令必须属于 ${agg.name}`);
|
|
44
|
+
if (!c.invokedBy.includes('process')) {
|
|
45
|
+
throw declError('CAGE-APPR-003', `审批结论命令必须声明 invokedBy: 'process'`);
|
|
46
|
+
}
|
|
47
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-APPR-003:审批结论未允许流程调用
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
审批结论命令的 invokedBy 不包含 process。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 将结论命令声明为 process;前端通过待办接口审批,不要为了显示按钮把结论改成用户可直调。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
invokedBy: 'process'
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
invokedBy: 'user' // 用作审批结论
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及选人/流程推进时,用实际用户、部门和角色提交并处理待办,检查 worker 与死信。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/kernel/src/primitives/flow.ts:250`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
if (!c.invokedBy.includes('process')) {
|
|
43
|
+
throw declError('CAGE-APPR-003', `审批结论命令必须声明 invokedBy: 'process'`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return Object.freeze({
|
|
47
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-APPR-004:路由没有对应审批绑定
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
运行审批桥接时,route 的 process 找不到同名 approval 绑定。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 检查 process 名完全相同,绑定和路由均从 domain 入口导出。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
approval(..., { process: 'po-approval', ... }) 与 route('po-approval', ...)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
绑定叫 po-approval,路由叫 purchase-approval
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及选人/流程推进时,用实际用户、部门和角色提交并处理待办,检查 worker 与死信。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/approval/src/bridge.ts:14`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
const binding = k.registry.approvalByProcess(r.process);
|
|
43
|
+
if (!binding) throw new Error(`[CAGE-APPR-004] 没有流程 ${r.process} 的审批绑定`);
|
|
44
|
+
const cmd = r.outcome === 'approved' ? binding.a.onApproved : r.outcome === 'returned' ? binding.a.onReturned : binding.a.onRejected;
|
|
45
|
+
if (!cmd) throw new Error('[CAGE-APPR-006] 审批未绑定退回修改命令');
|
|
46
|
+
let ctx: Ctx;
|
|
47
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-APPR-005:流程名称格式错误
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
route 的流程标识不是小写字母开头的小写短横线格式。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 使用稳定的小写短横线标识;需要中文显示时修改 step 标题或图谱 label,不翻译标识。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
route('po-approval', nodes)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
route('采购审批', nodes)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及选人/流程推进时,用实际用户、部门和角色提交并处理待办,检查 worker 与死信。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/approval/src/route.ts:126`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
export function route(process: string, nodes: RouteNode[]): Route {
|
|
43
|
+
if (!/^[a-z][a-z0-9-]*$/.test(process)) throw declError('CAGE-APPR-005', `流程名 ${process} 必须是小写短横线`);
|
|
44
|
+
if (nodes.length === 0) throw declError('CAGE-APPR-006', `流程 ${process} 至少需要一个步骤`);
|
|
45
|
+
const fields = new Set<string>();
|
|
46
|
+
for (const n of nodes) {
|
|
47
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# CAGE-APPR-006:流程没有步骤
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
route 接收了空步骤数组。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 声明至少一个实际审批步骤,并检查条件后能否形成预期流程。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
route('po-approval', [step('经理审批', approver.deptLeader('deptId'))])
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
route('po-approval', [])
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及选人/流程推进时,用实际用户、部门和角色提交并处理待办,检查 worker 与死信。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/approval/src/bridge.ts:16`
|
|
38
|
+
- `packages/approval/src/engine.ts:70`
|
|
39
|
+
- `packages/approval/src/route.ts:66`
|
|
40
|
+
- `packages/approval/src/route.ts:68`
|
|
41
|
+
- `packages/approval/src/route.ts:127`
|
|
42
|
+
- `packages/approval/src/route.ts:154`
|
|
43
|
+
- `packages/approval/src/route.ts:156`
|
|
44
|
+
|
|
45
|
+
实现片段(位置随框架版本更新):
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
const cmd = r.outcome === 'approved' ? binding.a.onApproved : r.outcome === 'returned' ? binding.a.onReturned : binding.a.onRejected;
|
|
49
|
+
if (!cmd) throw new Error('[CAGE-APPR-006] 审批未绑定退回修改命令');
|
|
50
|
+
let ctx: Ctx;
|
|
51
|
+
if (r.lastApprover) {
|
|
52
|
+
const user = await k.contextFor(r.lastApprover, r.tenantId);
|
|
53
|
+
```
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# CAGE-APPR-007:找不到审批人
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
worker 启动或推进审批步骤时,选人器没有找到人。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 先看本项目 approvals.ts:deptLeader 读取单据部门的负责人;role 使用角色 code;user 使用实际用户 UUID。
|
|
16
|
+
2. 在 /admin 设置单据所属部门的负责人,或创建对应 code 的角色并分配实际用户。给用户经理角色,并不等于设置了部门负责人。
|
|
17
|
+
3. 再核对审批人的结论能力、数据范围、ceiling 额度和职责分离。选中审批人不等于允许完成审批。
|
|
18
|
+
4. 若 OrderSubmitted 已入死信,修复后在 /admin 按 outboxId 重放,确认待办生成;原提交已成功时不重复提交或 SQL 改回草稿。
|
|
19
|
+
|
|
20
|
+
## 正例
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
deptLeader('deptId'):给该部门设置负责人;role('finance'):给实际用户分配 code=finance 的角色
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## 反例
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
只建中文名为“财务”的角色却没有配置 code/用户,或配置后重复提交已是 pending_approval 的单据
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 修复后验证
|
|
33
|
+
|
|
34
|
+
先 cage check;涉及选人/流程推进时,用实际用户、部门和角色提交并处理待办,检查 worker 与死信。
|
|
35
|
+
|
|
36
|
+
## 框架内的检查位置
|
|
37
|
+
|
|
38
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
39
|
+
|
|
40
|
+
- `packages/approval/src/engine.ts:81`
|
|
41
|
+
|
|
42
|
+
实现片段(位置随框架版本更新):
|
|
43
|
+
|
|
44
|
+
```ts
|
|
45
|
+
if (who.length === 0) {
|
|
46
|
+
throw new Error(`[CAGE-APPR-007] 流程 ${this.route.process} 第 ${index + 1} 步「${title}」找不到审批人,请在 /admin 配置部门负责人或角色`);
|
|
47
|
+
}
|
|
48
|
+
for (const assignee of new Set(who)) {
|
|
49
|
+
await tx.insertInto('flow.approval_task').values({ instance_id: instanceId, tenant_id: tenantId, step: index, title, assignee }).execute();
|
|
50
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# CAGE-APPR-010:流程专用命令没有调用者
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
命令只允许 process 调用,但图中没有审批结论、反应或任务调用它。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 补实际 approval/reaction/job 引用并从入口导出;如果本来是用户操作,按需求纠正 invokedBy。不要增加空引用骗过检查。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
approve 被 poApproval.onApproved 引用,或 acquireLock 被 lockOnApprove 引用
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
定义 process 命令但没有任何流程或反应调用
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及选人/流程推进时,用实际用户、部门和角色提交并处理待办,检查 worker 与死信。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/cli/src/rules.ts:175`
|
|
38
|
+
- `packages/cli/src/rules.ts:189`
|
|
39
|
+
|
|
40
|
+
实现片段(位置随框架版本更新):
|
|
41
|
+
|
|
42
|
+
```ts
|
|
43
|
+
|
|
44
|
+
/** CAGE-APPR-010:invokedBy 为 process 的命令必须有审批绑定或反应调用它,否则没有人能调用 */
|
|
45
|
+
/**
|
|
46
|
+
* 检查仅流程/外部可调用的命令是否有声明调用入口。
|
|
47
|
+
* @param g 当前图。
|
|
48
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# CAGE-AUDIT-001:可靠读取审计失败
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:安全读侧 / 查询。
|
|
10
|
+
|
|
11
|
+
敏感明文读取,或声明 audit.purpose 的查询,无法完成交付前的审计写入。请求拒绝交付结果。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 凭 requestId 检查审计存储、写账号权限和数据库可用性;修复后重新读取。
|
|
16
|
+
2. 不要吞掉审计异常、去除敏感声明或改用基表绕过审计。查询只声明目的,不把敏感输入放进目的文本。
|
|
17
|
+
|
|
18
|
+
## 正例
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
query('report', { reads: [Order], audit: { purpose: '月度核对' }, /* input/sql */ })
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 反例
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
审计写入失败后继续返回敏感明文
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 修复后验证
|
|
31
|
+
|
|
32
|
+
修复审计存储后重新读取,确认有权交付的数据与相应审计均完成。
|
|
33
|
+
|
|
34
|
+
## 框架内的检查位置
|
|
35
|
+
|
|
36
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
37
|
+
|
|
38
|
+
- `packages/kernel/src/read.ts:136`
|
|
39
|
+
- `packages/kernel/src/read.ts:137`
|
|
40
|
+
- `packages/kernel/src/read.ts:284`
|
|
41
|
+
- `packages/kernel/src/read.ts:285`
|
|
42
|
+
- `packages/kernel/src/transfer/index.ts:176`
|
|
43
|
+
- `packages/kernel/src/transfer/index.ts:177`
|
|
44
|
+
|
|
45
|
+
实现片段(位置随框架版本更新):
|
|
46
|
+
|
|
47
|
+
```ts
|
|
48
|
+
}); } catch {
|
|
49
|
+
this.k.log.error({ code: 'CAGE-AUDIT-001', aggregate: agg.name, kind, requestId: ctx.requestId }, '读取审计失败,未交付数据');
|
|
50
|
+
throw cageError('INTERNAL', { diagnostic: 'CAGE-AUDIT-001', phase: 'audit', operation: kind, retryable: true });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-AUTH-001:OIDC 发现文档获取失败
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:HTTP 登录。
|
|
10
|
+
|
|
11
|
+
HTTP 无法取得 OIDC issuer 的发现文档,或远端返回非成功状态。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 检查部署环境 OIDC issuer、发现地址、网络与证书配置;不要关闭认证或把 issuer 校验删掉。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
配置可访问的 OIDC_ISSUER、正确客户端和回调地址
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
将不可访问的 issuer 当作已成功登录并继续建立会话
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
重新走真实 OIDC 登录和回调,确认会话中的用户与授权;不要仅验证发现文档能打开。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/http/src/oidc.ts:25`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
(disco ??= fetch(new URL('.well-known/openid-configuration', o.issuer.endsWith('/') ? o.issuer : `${o.issuer}/`)).then(async (r) => {
|
|
43
|
+
if (!r.ok) throw new Error(`[CAGE-AUTH-001] OIDC 发现文档获取失败:${r.status}`);
|
|
44
|
+
return (await r.json()) as Discovery;
|
|
45
|
+
}));
|
|
46
|
+
const secure = opts.cookieSecure ?? process.env.NODE_ENV === 'production';
|
|
47
|
+
```
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# CAGE-BIZ-001:业务流程声明无效
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明加载 / 图规则。
|
|
10
|
+
|
|
11
|
+
流程或板块标识重复、名称说明缺失、入口/连线/结束阶段无效,或引用的真实声明未从 domain 导出。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 使用 businessProcess 声明阅读规格,填写流程、板块、阶段及连线说明;阶段引用已导出的真实业务声明。
|
|
16
|
+
2. 主对象使用聚合引用;相同板块 ID 的名称和说明保持一致。流程不调度命令,也不授予权限。
|
|
17
|
+
|
|
18
|
+
## 正例
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
export const orderFlow = businessProcess('order-flow', { /* 完整阶段和转移,均引用真实声明 */ });
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 反例
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
transitions: [{ from: 'draft', to: 'missing', mode: 'automatic', label: '继续' }] // missing 阶段不存在
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## 修复后验证
|
|
31
|
+
|
|
32
|
+
重跑 cage check,再在 cage graph 中检查主线、分支、关联和实现代码;运行行为仍需相应业务回归。
|
|
33
|
+
|
|
34
|
+
## 框架内的检查位置
|
|
35
|
+
|
|
36
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
37
|
+
|
|
38
|
+
- `packages/kernel/src/primitives/business-process.ts:132`
|
|
39
|
+
- `packages/kernel/src/registry.ts:253`
|
|
40
|
+
- `packages/kernel/src/registry.ts:256`
|
|
41
|
+
- `packages/kernel/src/registry.ts:259`
|
|
42
|
+
|
|
43
|
+
实现片段(位置随框架版本更新):
|
|
44
|
+
|
|
45
|
+
```ts
|
|
46
|
+
): BusinessProcess {
|
|
47
|
+
const invalid = (reason: string): never => { throw declError('CAGE-BIZ-001', `${name}:${reason}`); };
|
|
48
|
+
const identifier = (value: string) => /^[a-z][a-z0-9-]*$/.test(value);
|
|
49
|
+
const text = (value: string) => typeof value === 'string' && value.trim().length > 0;
|
|
50
|
+
if (!identifier(name) || !identifier(def.area.id)) invalid('流程与板块标识须使用小写短横线格式');
|
|
51
|
+
```
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# CAGE-BIZ-002:业务流程与真实声明不一致
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明加载 / 图规则。
|
|
10
|
+
|
|
11
|
+
阶段不可达或无法结束,自动连线缺少真实触发链,人工/等待方式与目标入口不符,同对象状态不相接,或关联对象缺少实现依据。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 自动连线必须有 emits、事件触发、反应目标、审批结论或外部成功回写支持;reads、字段关联和状态相接不能证明自动调用。
|
|
16
|
+
2. 人工下一步使用用户可调用的命令,独立通知或调度使用 wait;核对前后命令的状态约束。
|
|
17
|
+
3. 关联的 via 引用本阶段实际可触发的声明,且该声明确实读取、写入或引用目标对象。补齐入口到所有阶段,以及各阶段到结束结果的路径。
|
|
18
|
+
|
|
19
|
+
## 正例
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
{ from: 'draft', to: 'submit', mode: 'manual', label: '申请人提交' } // submit 允许 user 且状态相接
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 反例
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
{ from: 'create', to: 'submit', mode: 'automatic', label: '自动提交' } // 只有状态相接,没有实际触发
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## 修复后验证
|
|
32
|
+
|
|
33
|
+
重跑 cage check,再在 cage graph 中检查主线、分支、关联和实现代码;运行行为仍需相应业务回归。
|
|
34
|
+
|
|
35
|
+
## 框架内的检查位置
|
|
36
|
+
|
|
37
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
38
|
+
|
|
39
|
+
- `packages/cli/src/process-rules.ts:50`
|
|
40
|
+
|
|
41
|
+
实现片段(位置随框架版本更新):
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
const fail = (node: ViewNode, reason: string, fix: string) => findings.push({
|
|
45
|
+
code: 'CAGE-BIZ-002', at: node.file ? `${node.file}:${node.line}` : node.id, reason, fix,
|
|
46
|
+
});
|
|
47
|
+
const actual = (start: string) => reachable(start, key => causalSuccessors(model, key));
|
|
48
|
+
const involving = (start: string, target: string) => {
|
|
49
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-BUDGET-001:内核超出体积预算
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:budget / verify。
|
|
10
|
+
|
|
11
|
+
框架源码检查发现内核有效代码行数超过当前 5000 行预算。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 框架维护者将非内核职责拆为扩展,必要的预算调整需架构评审。独立业务项目不应复制内核源码来修此错误。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
第三方业务放到 connectors/业务声明,内核保持通用
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
直接调大阈值或删除检查
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
重跑 cage budget;有 unsafe 基线时使用真实受审基线。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/cli/src/budget.ts:85`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
findings.push({
|
|
43
|
+
code: 'CAGE-BUDGET-001',
|
|
44
|
+
reason: `内核 ${lines} 行,超过 5000 行预算`,
|
|
45
|
+
fix: '拆出扩展职责,或提交架构评审调整预算',
|
|
46
|
+
});
|
|
47
|
+
```
|