@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,47 @@
|
|
|
1
|
+
# CAGE-BUDGET-002:公共原语超过词汇预算
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:budget / verify。
|
|
10
|
+
|
|
11
|
+
框架公共词汇计数超过当前 16 个预算。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 优先组合现有原语;确需增加公共概念时由框架维护者评审,不由业务项目随意扩展品牌。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
用 command/event/reaction 组合新业务
|
|
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:91`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
findings.push({
|
|
43
|
+
code: 'CAGE-BUDGET-002',
|
|
44
|
+
reason: `品牌原语 ${primitives} 个,超过 16 个预算`,
|
|
45
|
+
fix: '优先使用组合子,避免新增原语',
|
|
46
|
+
});
|
|
47
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-BUDGET-003:新增未经基线认可的 unsafe
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:budget / verify。
|
|
10
|
+
|
|
11
|
+
本次图中的 unsafe 数超过给定基线;没有基线时允许值为零。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 优先移除逃生口;确需使用时写明 reason/owner,评审后更新受审基线。不要用刚改后的图冒充旧基线。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
unsafe({ reason: '受审的历史修复', owner: '负责人' }, action) 并使用受审基线
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
随手调用 unsafe,再覆盖基线隐藏增长
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
重跑 cage budget;有 unsafe 基线时使用真实受审基线。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/cli/src/budget.ts:98`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
findings.push({
|
|
43
|
+
code: 'CAGE-BUDGET-003',
|
|
44
|
+
reason: `unsafe 从 ${allowance} 增加到 ${graph.unsafeCount}`,
|
|
45
|
+
fix: '移除新增逃生口,或在评审完成后更新受审基线',
|
|
46
|
+
});
|
|
47
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-CMD-002:已有记录命令缺少 id
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明加载。
|
|
10
|
+
|
|
11
|
+
非新建命令的对象输入 schema 没有 id,无法确定要加载哪条记录。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 在 input 添加 UUID id;没有其他输入时可省略 input 使用默认 idOnly。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
input: z.object({ id: z.string().uuid(), title: z.string() })
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
input: z.object({ title: z.string() }) // from 不是 new
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
重跑 cage check、gen 和相关命令测试,检查生成输入/方法签名。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/kernel/src/primitives/command.ts:240`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
if (from !== 'new' && input instanceof z.ZodObject && !('id' in input.shape)) {
|
|
43
|
+
throw declError('CAGE-CMD-002', `${agg.name} 的非新建命令输入必须包含 id`);
|
|
44
|
+
}
|
|
45
|
+
if (def.name !== undefined && !/^[a-z][A-Za-z0-9]*$/.test(def.name)) {
|
|
46
|
+
throw declError('CAGE-NAME-004', `命令名 ${def.name} 必须是小驼峰`);
|
|
47
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-CMD-003:新建命令没有目标状态
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明加载。
|
|
10
|
+
|
|
11
|
+
from 为 new 时使用 to: null,新记录没有可保留的当前状态。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 新建必须指向已声明状态;to: null 只用于已有记录的字段更新,仍检查 from、身份、版本并写审计。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
from: 'new', to: 'draft' // 或已有记录 from: 'approved', to: null
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
from: 'new', to: null
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
重跑 cage check、gen 和相关命令测试,检查生成输入/方法签名。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/kernel/src/primitives/command.ts:233`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
if (from === 'new' && def.to === null) {
|
|
43
|
+
throw declError('CAGE-CMD-003', `${agg.name} 的新建命令必须指定目标状态,不能使用 to: null`);
|
|
44
|
+
}
|
|
45
|
+
if (def.to !== null && !hasStates(agg, def.to as string)) {
|
|
46
|
+
throw declError('CAGE-STATE-001', `${agg.name} 的命令 to 是未声明的状态:${String(def.to)}`);
|
|
47
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-CONN-001:连接器名称格式错误
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
connector 的名称不是小写字母开头的小写短横线格式。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 采用稳定的英文连接器标识,中文名称写 description 或图谱 label。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
connector('finance-erp', definition)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
connector('FinanceERP', definition)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及网络时检查同步记录、外部幂等结果与成功回写。fake 与真实联调分别报告。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/connectors/src/primitives.ts:63`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
export function connector<Ops extends Record<string, OpDef<any, any>>>(name: string, def: ConnectorDef<Ops>): Connector<Ops> {
|
|
43
|
+
if (!/^[a-z][a-z0-9-]*$/.test(name)) throw declError('CAGE-CONN-001', `连接器名 ${name} 必须是小写短横线`);
|
|
44
|
+
if (def.timeoutMs !== undefined && (!Number.isSafeInteger(def.timeoutMs) || def.timeoutMs <= 0 || def.timeoutMs > 300_000)) {
|
|
45
|
+
throw declError('CAGE-CONN-015', '连接器 timeoutMs 必须是 1~300000 毫秒的整数');
|
|
46
|
+
}
|
|
47
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-CONN-002:外部操作路径格式错误
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
op.path 没有以斜线开头。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. host 在连接器白名单中配置,操作 path 只写从 / 开始的相对接口路径。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
path: '/api/purchase-orders'
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
path: 'https://erp.example.com/api/orders'
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及网络时检查同步记录、外部幂等结果与成功回写。fake 与真实联调分别报告。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/connectors/src/primitives.ts:31`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
export function op<Req extends z.ZodObject<any>, Res extends z.ZodType>(def: OpDef<Req, Res>): OpDef<Req, Res> {
|
|
43
|
+
if (!def.path.startsWith('/')) throw declError('CAGE-CONN-002', `操作路径 ${def.path} 必须以 / 开头`);
|
|
44
|
+
return def;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-CONN-003:地址白名单包含协议或路径
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
connector.hosts 中包含协议、路径或空白,而不是主机名(可带端口)。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 将协议和路径从 host 移除;实际路径写 op.path,环境 host 按声明配置。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
hosts: { test: 'erp-sandbox.example.com:8443', prod: 'erp.example.com' }
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
hosts: { prod: 'https://erp.example.com/api' }
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及网络时检查同步记录、外部幂等结果与成功回写。fake 与真实联调分别报告。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/connectors/src/primitives.ts:71`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
for (const h of Object.values(def.hosts)) {
|
|
43
|
+
if (h && /[/:\s]/.test(h.replace(/:\d+$/, ''))) throw declError('CAGE-CONN-003', `地址白名单只能写主机名(可带端口):${h}`);
|
|
44
|
+
}
|
|
45
|
+
const c: any = {
|
|
46
|
+
[CONNECTOR]: true,
|
|
47
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-CONN-004:只读操作被用作出站写映射
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
outbound 绑定了 effect 为 read 的操作。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 按真实副作用给操作声明 write/retryableWrite;有可重试写入时设计远端幂等协议,不能只改标签。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
effect: 'retryableWrite' // 第三方实际支持幂等写入
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
effect: 'read' // 却在业务事件后创建远端订单
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及网络时检查同步记录、外部幂等结果与成功回写。fake 与真实联调分别报告。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/connectors/src/primitives.ts:116`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
): Outbound<E, O> {
|
|
43
|
+
if (operation.effect === 'read') throw declError('CAGE-CONN-004', '只读操作不能用于出站映射');
|
|
44
|
+
const o: any = {
|
|
45
|
+
[OUTBOUND]: true,
|
|
46
|
+
event: ev,
|
|
47
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-CONN-005:入站事件名称格式错误
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
inbound 的事件名不是小驼峰格式。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 使用小驼峰稳定标识,展示文案另设中文。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
inbound(erp, 'goodsReceived', definition)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
inbound(erp, 'GoodsReceived', definition)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及网络时检查同步记录、外部幂等结果与成功回写。fake 与真实联调分别报告。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/connectors/src/primitives.ts:176`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
): Inbound<P> {
|
|
43
|
+
if (!/^[a-z][A-Za-z0-9]*$/.test(eventName)) throw declError('CAGE-CONN-005', `入站事件名 ${eventName} 必须是小驼峰`);
|
|
44
|
+
if (!def.command.invokedBy.includes('external') && !def.command.invokedBy.includes('user')) {
|
|
45
|
+
throw declError('CAGE-CONN-006', `入站回调调用的命令必须声明 invokedBy: 'external'`);
|
|
46
|
+
}
|
|
47
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-CONN-006:回调命令未允许 external
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
入站回调指向的命令没有声明 external 调用身份。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 为专用回调命令声明 external;验签和输入校验之后才能调用,不把内部命令暴露为普通用户接口。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
invokedBy: 'external'
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
invokedBy: 'user' // 作为 inbound.command
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及网络时检查同步记录、外部幂等结果与成功回写。fake 与真实联调分别报告。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/connectors/src/primitives.ts:178`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
if (!def.command.invokedBy.includes('external') && !def.command.invokedBy.includes('user')) {
|
|
43
|
+
throw declError('CAGE-CONN-006', `入站回调调用的命令必须声明 invokedBy: 'external'`);
|
|
44
|
+
}
|
|
45
|
+
return Object.freeze({ [INBOUND]: true as const, connector: conn, event: eventName, ...def });
|
|
46
|
+
}
|
|
47
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-CONN-007:当前环境没有连接器地址
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
非 fake 环境中,连接器 hosts 找不到当前 stage 对应的主机。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 检查 CAGE_STAGE 与 hosts.test/prod。fake 不需要真实主机;真实联调必须配置正确环境及密钥。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
CAGE_STAGE=test,hosts.test 指向沙箱主机
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
只配置 prod 却用 test 环境启动,或把 fake 成功称作真实联调通过
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及网络时检查同步记录、外部幂等结果与成功回写。fake 与真实联调分别报告。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/connectors/src/runtime.ts:168`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
const host = o.connector.hosts[st];
|
|
43
|
+
if (!host) throw new ConnectorError(`[CAGE-CONN-007] 连接器 ${o.connector.name} 没有 ${st} 环境的地址`, null, false);
|
|
44
|
+
const token = o.connector.secret ? await secrets.get(o.connector.secret) : undefined;
|
|
45
|
+
await take(o.connector, signal);
|
|
46
|
+
const url = new URL(o.path, `https://${host}`);
|
|
47
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-CONN-008:外部请求发生网络错误或超时
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
fetch 在收到有效 HTTP 响应前失败,例如 DNS、网络、TLS 或 timeout。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 核对脱敏后的主机、网络、代理和 timeoutMs;排除临时故障后由 worker 重试,不能在 handler 内加网络重试。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
使用同步记录定位失败阶段;保持同一业务幂等键重试
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
每次重试换远端幂等键,导致重复写入
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及网络时检查同步记录、外部幂等结果与成功回写。fake 与真实联调分别报告。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/connectors/src/runtime.ts:192`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
} catch (e) {
|
|
43
|
+
const err = e instanceof ConnectorError ? e : new ConnectorError(`[CAGE-CONN-008] 调用 ${o.connector.name}.${o.name} 失败:${(e as Error)?.name ?? 'Error'}`, httpStatus, o.effect !== 'write', 'unknown');
|
|
44
|
+
await recordCall(opts.kernel, o, key, opts.tenantId ?? null, 'failed', httpStatus, body, undefined, err.message);
|
|
45
|
+
throw err;
|
|
46
|
+
}
|
|
47
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-CONN-009:外部服务返回非成功状态
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
连接器取得 HTTP 响应,但状态码不是成功码。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 看同步记录的状态与脱敏响应;核对鉴权、字段及限流。可重试性还受 effect 和状态码控制,不是所有 4xx 都会重试。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
修正 401 的运行环境密钥,确认后重放失败事件
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
把所有 4xx 改成成功,或无限重试无效请求
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及网络时检查同步记录、外部幂等结果与成功回写。fake 与真实联调分别报告。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/connectors/src/runtime.ts:183`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
try { json = text ? JSON.parse(text) : null; } catch { /* 无效响应由下方 schema 统一诊断,不记录原文。 */ }
|
|
43
|
+
if (!res.ok) throw new ConnectorError(`[CAGE-CONN-009] ${o.connector.name}.${o.name} 返回 ${res.status}`, res.status,
|
|
44
|
+
o.effect !== 'write' && (res.status >= 500 || res.status === 429), res.status >= 500 ? 'unknown' : 'rejected');
|
|
45
|
+
const result = o.response.safeParse(json);
|
|
46
|
+
if (!result.success) throw new ConnectorError(`[CAGE-CONN-010] ${o.connector.name}.${o.name} 的响应格式与声明不符`, res.status, false, 'unknown');
|
|
47
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# CAGE-CONN-010:外部响应不符合 schema
|
|
2
|
+
|
|
3
|
+
[返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
|
|
4
|
+
|
|
5
|
+
> 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
|
|
6
|
+
|
|
7
|
+
## 何时出现
|
|
8
|
+
|
|
9
|
+
阶段:声明、图规则或 worker。
|
|
10
|
+
|
|
11
|
+
外部返回成功 HTTP 状态,但内容不满足声明的 response schema。
|
|
12
|
+
|
|
13
|
+
## 修复步骤
|
|
14
|
+
|
|
15
|
+
1. 对照真实协议、响应样例和声明,修正一方;不要用 any 或空对象吞掉未知格式。该错误按永久失败处理。
|
|
16
|
+
|
|
17
|
+
## 正例
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
response: z.object({ erpNo: z.string() }) 与真实成功协议一致
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 反例
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
后端返回 { orderNo: 123 },却继续读取 res.erpNo
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 修复后验证
|
|
30
|
+
|
|
31
|
+
先 cage check;涉及网络时检查同步记录、外部幂等结果与成功回写。fake 与真实联调分别报告。
|
|
32
|
+
|
|
33
|
+
## 框架内的检查位置
|
|
34
|
+
|
|
35
|
+
以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
|
|
36
|
+
|
|
37
|
+
- `packages/connectors/src/runtime.ts:186`
|
|
38
|
+
|
|
39
|
+
实现片段(位置随框架版本更新):
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
const result = o.response.safeParse(json);
|
|
43
|
+
if (!result.success) throw new ConnectorError(`[CAGE-CONN-010] ${o.connector.name}.${o.name} 的响应格式与声明不符`, res.status, false, 'unknown');
|
|
44
|
+
return result.data;
|
|
45
|
+
});
|
|
46
|
+
await recordCall(opts.kernel, o, key, opts.tenantId ?? null, 'ok', httpStatus, body, parsed);
|
|
47
|
+
```
|