@yss123/cage-cli 0.2.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.
Files changed (607) hide show
  1. package/README.md +47 -3
  2. package/bin/cage.js +5 -0
  3. package/bin/create-cage-app.js +5 -0
  4. package/dist/analyze.d.ts +16 -0
  5. package/dist/analyze.js +18 -2
  6. package/dist/analyze.js.map +1 -1
  7. package/dist/baseline.d.ts +8 -0
  8. package/dist/baseline.js +13 -0
  9. package/dist/baseline.js.map +1 -1
  10. package/dist/bootstrap.d.ts +20 -0
  11. package/dist/bootstrap.js +75 -0
  12. package/dist/bootstrap.js.map +1 -0
  13. package/dist/budget.d.ts +7 -0
  14. package/dist/budget.js +49 -5
  15. package/dist/budget.js.map +1 -1
  16. package/dist/capabilities.d.ts +38 -0
  17. package/dist/capabilities.js +133 -0
  18. package/dist/capabilities.js.map +1 -0
  19. package/dist/config.d.ts +31 -2
  20. package/dist/config.js +22 -0
  21. package/dist/config.js.map +1 -1
  22. package/dist/context.d.ts +14 -0
  23. package/dist/context.js +35 -2
  24. package/dist/context.js.map +1 -1
  25. package/dist/create-prompt.d.ts +7 -0
  26. package/dist/create-prompt.js +12 -0
  27. package/dist/create-prompt.js.map +1 -1
  28. package/dist/create.d.ts +21 -1
  29. package/dist/create.js +23 -1
  30. package/dist/create.js.map +1 -1
  31. package/dist/derive.d.ts +23 -0
  32. package/dist/derive.js +40 -0
  33. package/dist/derive.js.map +1 -1
  34. package/dist/dev.d.ts +6 -0
  35. package/dist/dev.js +11 -0
  36. package/dist/dev.js.map +1 -1
  37. package/dist/doctor.d.ts +98 -0
  38. package/dist/doctor.js +93 -0
  39. package/dist/doctor.js.map +1 -0
  40. package/dist/env.d.ts +6 -0
  41. package/dist/env.js +11 -0
  42. package/dist/env.js.map +1 -1
  43. package/dist/findings.d.ts +27 -0
  44. package/dist/findings.js +20 -0
  45. package/dist/findings.js.map +1 -1
  46. package/dist/gen/contracts.d.ts +28 -0
  47. package/dist/gen/contracts.js +52 -12
  48. package/dist/gen/contracts.js.map +1 -1
  49. package/dist/gen/index.d.ts +26 -0
  50. package/dist/gen/index.js +69 -1
  51. package/dist/gen/index.js.map +1 -1
  52. package/dist/gen/zod-code.d.ts +42 -0
  53. package/dist/gen/zod-code.js +178 -16
  54. package/dist/gen/zod-code.js.map +1 -1
  55. package/dist/graph-approvals.d.ts +60 -0
  56. package/dist/graph-approvals.js +80 -0
  57. package/dist/graph-approvals.js.map +1 -0
  58. package/dist/graph-business.d.ts +135 -0
  59. package/dist/graph-business.js +404 -0
  60. package/dist/graph-business.js.map +1 -0
  61. package/dist/graph-command.d.ts +17 -0
  62. package/dist/graph-command.js +21 -0
  63. package/dist/graph-command.js.map +1 -1
  64. package/dist/graph-model.d.ts +44 -0
  65. package/dist/graph-model.js +36 -3
  66. package/dist/graph-model.js.map +1 -1
  67. package/dist/graph-presentation.d.ts +16 -0
  68. package/dist/graph-presentation.js +10 -1
  69. package/dist/graph-presentation.js.map +1 -1
  70. package/dist/graph-query.d.ts +95 -0
  71. package/dist/graph-query.js +62 -0
  72. package/dist/graph-query.js.map +1 -1
  73. package/dist/graph-relations.d.ts +20 -0
  74. package/dist/graph-relations.js +34 -4
  75. package/dist/graph-relations.js.map +1 -1
  76. package/dist/graph-search.d.ts +35 -0
  77. package/dist/graph-search.js +36 -0
  78. package/dist/graph-search.js.map +1 -1
  79. package/dist/graph-snapshot.d.ts +26 -0
  80. package/dist/graph-snapshot.js +30 -1
  81. package/dist/graph-snapshot.js.map +1 -1
  82. package/dist/graph.d.ts +13 -2
  83. package/dist/graph.js +59 -4
  84. package/dist/graph.js.map +1 -1
  85. package/dist/impact.d.ts +50 -0
  86. package/dist/impact.js +62 -2
  87. package/dist/impact.js.map +1 -1
  88. package/dist/index.d.ts +10 -0
  89. package/dist/index.js +10 -0
  90. package/dist/index.js.map +1 -1
  91. package/dist/init.d.ts +12 -0
  92. package/dist/init.js +15 -0
  93. package/dist/init.js.map +1 -1
  94. package/dist/load.d.ts +10 -0
  95. package/dist/load.js +15 -0
  96. package/dist/load.js.map +1 -1
  97. package/dist/main.d.ts +6 -0
  98. package/dist/main.js +93 -5
  99. package/dist/main.js.map +1 -1
  100. package/dist/migrate.d.ts +12 -0
  101. package/dist/migrate.js +17 -0
  102. package/dist/migrate.js.map +1 -1
  103. package/dist/ontology.d.ts +67 -2
  104. package/dist/ontology.js +89 -2
  105. package/dist/ontology.js.map +1 -1
  106. package/dist/process-rules.d.ts +21 -0
  107. package/dist/process-rules.js +100 -0
  108. package/dist/process-rules.js.map +1 -0
  109. package/dist/process.d.ts +32 -0
  110. package/dist/process.js +32 -0
  111. package/dist/process.js.map +1 -1
  112. package/dist/project-structure.d.ts +5 -0
  113. package/dist/project-structure.js +10 -0
  114. package/dist/project-structure.js.map +1 -1
  115. package/dist/registration.d.ts +16 -0
  116. package/dist/registration.js +56 -0
  117. package/dist/registration.js.map +1 -0
  118. package/dist/rules.d.ts +52 -0
  119. package/dist/rules.js +58 -0
  120. package/dist/rules.js.map +1 -1
  121. package/dist/runtime-diagnostics.d.ts +27 -0
  122. package/dist/runtime-diagnostics.js +60 -0
  123. package/dist/runtime-diagnostics.js.map +1 -0
  124. package/dist/snapshots.d.ts +40 -0
  125. package/dist/snapshots.js +62 -0
  126. package/dist/snapshots.js.map +1 -0
  127. package/dist/static-check.d.ts +33 -0
  128. package/dist/static-check.js +37 -1
  129. package/dist/static-check.js.map +1 -1
  130. package/dist/sync.d.ts +11 -0
  131. package/dist/sync.js +65 -8
  132. package/dist/sync.js.map +1 -1
  133. package/dist/upgrade.d.ts +16 -0
  134. package/dist/upgrade.js +21 -0
  135. package/dist/upgrade.js.map +1 -1
  136. package/dist/verify.d.ts +14 -0
  137. package/dist/verify.js +19 -0
  138. package/dist/verify.js.map +1 -1
  139. package/dist/version.js +5 -0
  140. package/dist/version.js.map +1 -1
  141. package/graph-ui/app.js +321 -27
  142. package/graph-ui/approval-flow.js +165 -0
  143. package/graph-ui/business.css +985 -0
  144. package/graph-ui/business.js +549 -0
  145. package/graph-ui/flowchart-interaction.js +177 -0
  146. package/graph-ui/flowchart.js +1059 -0
  147. package/graph-ui/graph-approvals.js +79 -0
  148. package/graph-ui/graph-business.js +403 -0
  149. package/graph-ui/graph-model.js +36 -3
  150. package/graph-ui/graph-relations.js +34 -4
  151. package/graph-ui/graph-search.js +36 -0
  152. package/graph-ui/index.html +26 -12
  153. package/graph-ui/model.js +28 -0
  154. package/graph-ui/relations.js +4 -0
  155. package/graph-ui/structure.js +44 -0
  156. package/graph-ui/style.css +12 -0
  157. package/package.json +6 -4
  158. package/templates/app/.dockerignore +2 -0
  159. package/templates/app/.env.example +10 -0
  160. package/templates/app/AGENTS.md +49 -9
  161. package/templates/app/README.md +4 -1
  162. package/templates/app/_gitignore +1 -0
  163. package/templates/app/apps/api/package.json +2 -2
  164. package/templates/app/apps/api/src/main.ts +5 -1
  165. package/templates/app/apps/api/src/worker.ts +3 -0
  166. package/templates/app/apps/web/index.html +1 -0
  167. package/templates/app/apps/web/package.json +7 -3
  168. package/templates/app/apps/web/src/app/app.tsx +122 -12
  169. package/templates/app/apps/web/src/app/styles/global.css +88 -8
  170. package/templates/app/apps/web/src/app/use-session.ts +43 -0
  171. package/templates/app/apps/web/src/app/workspace-layout.tsx +58 -19
  172. package/templates/app/apps/web/src/main.tsx +5 -0
  173. package/templates/app/apps/web/src/modules/approval/hooks/use-approval-tasks.ts +11 -0
  174. package/templates/app/apps/web/src/modules/approval/index.ts +4 -0
  175. package/templates/app/apps/web/src/modules/approval/pages/approval-tasks-page.tsx +20 -1
  176. package/templates/app/apps/web/src/modules/auth/index.ts +4 -0
  177. package/templates/app/apps/web/src/modules/auth/pages/login-page.tsx +12 -0
  178. package/templates/app/apps/web/src/modules/inventory/index.ts +4 -0
  179. package/templates/app/apps/web/src/modules/inventory/pages/inventory-page.tsx +29 -1
  180. package/templates/app/apps/web/src/modules/purchase/components/approval-history.tsx +32 -0
  181. package/templates/app/apps/web/src/modules/purchase/components/order-attachments.tsx +29 -0
  182. package/templates/app/apps/web/src/modules/purchase/components/purchase-assistant-context.tsx +17 -0
  183. package/templates/app/apps/web/src/modules/purchase/components/purchase-order-form.css +6 -0
  184. package/templates/app/apps/web/src/modules/purchase/components/purchase-order-form.tsx +25 -3
  185. package/templates/app/apps/web/src/modules/purchase/index.ts +5 -0
  186. package/templates/app/apps/web/src/modules/purchase/lib/presentation.ts +20 -0
  187. package/templates/app/apps/web/src/modules/purchase/pages/purchase-intelligence.css +15 -0
  188. package/templates/app/apps/web/src/modules/purchase/pages/purchase-order-detail-page.tsx +154 -0
  189. package/templates/app/apps/web/src/modules/purchase/pages/purchase-orders-page.tsx +52 -22
  190. package/templates/app/apps/web/src/modules/workspace/index.ts +5 -0
  191. package/templates/app/apps/web/src/modules/workspace/pages/home-page.tsx +44 -0
  192. package/templates/app/apps/web/src/shared/hooks/use-command.ts +13 -0
  193. package/templates/app/apps/web/src/shared/lib/error-message.ts +9 -0
  194. package/templates/app/apps/web/src/shared/lib/navigation.ts +21 -0
  195. package/templates/app/apps/web/src/shared/ui/assistant-markdown.tsx +19 -0
  196. package/templates/app/apps/web/src/shared/ui/assistant-panel.css +134 -0
  197. package/templates/app/apps/web/src/shared/ui/assistant-panel.tsx +200 -0
  198. package/templates/app/apps/web/src/shared/ui/assistant-scope.tsx +72 -0
  199. package/templates/app/apps/web/src/shared/ui/attachment-upload.css +28 -0
  200. package/templates/app/apps/web/src/shared/ui/attachment-upload.tsx +163 -0
  201. package/templates/app/apps/web/src/shared/ui/notice.tsx +7 -0
  202. package/templates/app/apps/web/src/shared/ui/page-heading.tsx +7 -0
  203. package/templates/app/apps/web/src/shared/ui/page-state.css +47 -0
  204. package/templates/app/apps/web/src/shared/ui/page-state.tsx +76 -0
  205. package/templates/app/apps/web/src/shared/ui/require-capability.tsx +34 -0
  206. package/templates/app/apps/web/vite.config.ts +5 -0
  207. package/templates/app/cage.config.json +9 -0
  208. package/templates/app/db/migrations/0002_draft.sql +12 -0
  209. package/templates/app/db/migrations/0003_draft.sql +8 -0
  210. package/templates/app/deploy/nginx.conf +52 -0
  211. package/templates/app/docs/ai/README.md +21 -0
  212. package/templates/app/docs/ai/architecture.md +26 -0
  213. package/templates/app/docs/ai/commenting.md +203 -0
  214. package/templates/app/docs/ai/diagnostics.md +80 -0
  215. package/templates/app/docs/ai/files.md +93 -0
  216. package/templates/app/docs/ai/intelligence.md +348 -0
  217. package/templates/app/docs/ai/ontology-context.md +59 -4
  218. package/templates/app/docs/ai/primitives.md +33 -0
  219. package/templates/app/docs/ai/project-structure.md +8 -3
  220. package/templates/app/docs/ai/purchase-example.md +16 -2
  221. package/templates/app/docs/ai/recipes.md +9 -1
  222. package/templates/app/docs/ai/routing.md +86 -0
  223. package/templates/app/docs/ai/troubleshooting.md +5 -0
  224. package/templates/app/docs/ai/workflow.md +24 -11
  225. package/templates/app/docs/errors/CAGE-AI-001.md +61 -0
  226. package/templates/app/docs/errors/CAGE-APPR-001.md +7 -6
  227. package/templates/app/docs/errors/CAGE-APPR-002.md +2 -2
  228. package/templates/app/docs/errors/CAGE-APPR-003.md +1 -1
  229. package/templates/app/docs/errors/CAGE-APPR-004.md +4 -4
  230. package/templates/app/docs/errors/CAGE-APPR-005.md +1 -1
  231. package/templates/app/docs/errors/CAGE-APPR-006.md +12 -6
  232. package/templates/app/docs/errors/CAGE-APPR-007.md +3 -3
  233. package/templates/app/docs/errors/CAGE-APPR-010.md +5 -5
  234. package/templates/app/docs/errors/CAGE-AUDIT-001.md +53 -0
  235. package/templates/app/docs/errors/CAGE-AUTH-001.md +1 -1
  236. package/templates/app/docs/errors/CAGE-BIZ-001.md +51 -0
  237. package/templates/app/docs/errors/CAGE-BIZ-002.md +49 -0
  238. package/templates/app/docs/errors/CAGE-BUDGET-001.md +1 -1
  239. package/templates/app/docs/errors/CAGE-BUDGET-002.md +1 -1
  240. package/templates/app/docs/errors/CAGE-BUDGET-003.md +1 -1
  241. package/templates/app/docs/errors/CAGE-CMD-002.md +1 -1
  242. package/templates/app/docs/errors/CAGE-CMD-003.md +1 -1
  243. package/templates/app/docs/errors/CAGE-CONN-001.md +3 -3
  244. package/templates/app/docs/errors/CAGE-CONN-002.md +1 -1
  245. package/templates/app/docs/errors/CAGE-CONN-003.md +1 -1
  246. package/templates/app/docs/errors/CAGE-CONN-004.md +1 -1
  247. package/templates/app/docs/errors/CAGE-CONN-005.md +1 -1
  248. package/templates/app/docs/errors/CAGE-CONN-006.md +1 -1
  249. package/templates/app/docs/errors/CAGE-CONN-007.md +6 -6
  250. package/templates/app/docs/errors/CAGE-CONN-008.md +5 -5
  251. package/templates/app/docs/errors/CAGE-CONN-009.md +6 -6
  252. package/templates/app/docs/errors/CAGE-CONN-010.md +6 -6
  253. package/templates/app/docs/errors/CAGE-CONN-011.md +1 -1
  254. package/templates/app/docs/errors/CAGE-CONN-012.md +1 -1
  255. package/templates/app/docs/errors/CAGE-CONN-013.md +49 -0
  256. package/templates/app/docs/errors/CAGE-CONN-014.md +48 -0
  257. package/templates/app/docs/errors/CAGE-CONN-015.md +49 -0
  258. package/templates/app/docs/errors/CAGE-CREATE-001.md +10 -9
  259. package/templates/app/docs/errors/CAGE-DECL-001.md +2 -2
  260. package/templates/app/docs/errors/CAGE-DECL-002.md +7 -6
  261. package/templates/app/docs/errors/CAGE-DECL-003.md +1 -1
  262. package/templates/app/docs/errors/CAGE-DECL-004.md +1 -1
  263. package/templates/app/docs/errors/CAGE-DEP-001.md +2 -2
  264. package/templates/app/docs/errors/CAGE-DEP-002.md +1 -1
  265. package/templates/app/docs/errors/CAGE-DEP-003.md +2 -2
  266. package/templates/app/docs/errors/CAGE-DEP-004.md +1 -1
  267. package/templates/app/docs/errors/CAGE-DEP-005.md +1 -1
  268. package/templates/app/docs/errors/CAGE-DIAG-001.md +53 -0
  269. package/templates/app/docs/errors/CAGE-DLQ-001.md +2 -2
  270. package/templates/app/docs/errors/CAGE-ENV-001.md +4 -4
  271. package/templates/app/docs/errors/CAGE-ENV-002.md +51 -0
  272. package/templates/app/docs/errors/CAGE-ENV-003.md +48 -0
  273. package/templates/app/docs/errors/CAGE-EVENT-001.md +1 -1
  274. package/templates/app/docs/errors/CAGE-EVENT-002.md +7 -7
  275. package/templates/app/docs/errors/CAGE-FIELD-001.md +2 -2
  276. package/templates/app/docs/errors/CAGE-FIELD-002.md +1 -1
  277. package/templates/app/docs/errors/CAGE-FIELD-003.md +1 -1
  278. package/templates/app/docs/errors/CAGE-FIELD-004.md +1 -1
  279. package/templates/app/docs/errors/CAGE-FILE-001.md +56 -0
  280. package/templates/app/docs/errors/CAGE-GEN-001.md +2 -2
  281. package/templates/app/docs/errors/CAGE-GEN-002.md +1 -1
  282. package/templates/app/docs/errors/CAGE-GEN-003.md +53 -0
  283. package/templates/app/docs/errors/CAGE-GRANT-001.md +3 -3
  284. package/templates/app/docs/errors/CAGE-GRANT-002.md +2 -2
  285. package/templates/app/docs/errors/CAGE-GRANT-003.md +7 -6
  286. package/templates/app/docs/errors/CAGE-IMPACT-001.md +2 -2
  287. package/templates/app/docs/errors/CAGE-IMPACT-002.md +52 -0
  288. package/templates/app/docs/errors/CAGE-INIT-001.md +1 -1
  289. package/templates/app/docs/errors/CAGE-INIT-002.md +1 -1
  290. package/templates/app/docs/errors/CAGE-INIT-003.md +2 -2
  291. package/templates/app/docs/errors/CAGE-INIT-004.md +1 -1
  292. package/templates/app/docs/errors/CAGE-INIT-005.md +52 -0
  293. package/templates/app/docs/errors/CAGE-JOB-001.md +1 -1
  294. package/templates/app/docs/errors/CAGE-JOB-002.md +1 -1
  295. package/templates/app/docs/errors/CAGE-JOB-003.md +1 -1
  296. package/templates/app/docs/errors/CAGE-LINT-001.md +1 -1
  297. package/templates/app/docs/errors/CAGE-MIG-001.md +1 -1
  298. package/templates/app/docs/errors/CAGE-MIG-002.md +1 -1
  299. package/templates/app/docs/errors/CAGE-MIG-005.md +1 -1
  300. package/templates/app/docs/errors/CAGE-NAME-001.md +1 -1
  301. package/templates/app/docs/errors/CAGE-NAME-002.md +1 -1
  302. package/templates/app/docs/errors/CAGE-NAME-003.md +3 -3
  303. package/templates/app/docs/errors/CAGE-NAME-004.md +1 -1
  304. package/templates/app/docs/errors/CAGE-NAME-005.md +1 -1
  305. package/templates/app/docs/errors/CAGE-NAME-006.md +1 -1
  306. package/templates/app/docs/errors/CAGE-ORG-001.md +7 -6
  307. package/templates/app/docs/errors/CAGE-PAIR-002.md +6 -5
  308. package/templates/app/docs/errors/CAGE-QUERY-001.md +1 -1
  309. package/templates/app/docs/errors/CAGE-QUERY-002.md +2 -2
  310. package/templates/app/docs/errors/CAGE-QUERY-003.md +7 -6
  311. package/templates/app/docs/errors/CAGE-REACT-001.md +3 -3
  312. package/templates/app/docs/errors/CAGE-REACT-002.md +1 -1
  313. package/templates/app/docs/errors/CAGE-REACT-003.md +50 -0
  314. package/templates/app/docs/errors/CAGE-READS-001.md +9 -6
  315. package/templates/app/docs/errors/CAGE-REG-001.md +13 -12
  316. package/templates/app/docs/errors/CAGE-REG-002.md +2 -1
  317. package/templates/app/docs/errors/CAGE-REG-003.md +1 -1
  318. package/templates/app/docs/errors/CAGE-REL-001.md +14 -14
  319. package/templates/app/docs/errors/CAGE-ROUTE-001.md +7 -6
  320. package/templates/app/docs/errors/CAGE-SCOPE-001.md +1 -1
  321. package/templates/app/docs/errors/CAGE-SCOPE-002.md +2 -2
  322. package/templates/app/docs/errors/CAGE-SECRET-001.md +2 -2
  323. package/templates/app/docs/errors/CAGE-SECRET-002.md +1 -1
  324. package/templates/app/docs/errors/CAGE-SENS-001.md +5 -5
  325. package/templates/app/docs/errors/CAGE-SQL-001.md +1 -1
  326. package/templates/app/docs/errors/CAGE-SQL-002.md +1 -1
  327. package/templates/app/docs/errors/CAGE-STATE-001.md +3 -3
  328. package/templates/app/docs/errors/CAGE-STATE-002.md +1 -1
  329. package/templates/app/docs/errors/CAGE-STATE-003.md +1 -1
  330. package/templates/app/docs/errors/CAGE-STATE-004.md +1 -1
  331. package/templates/app/docs/errors/CAGE-STATE-005.md +3 -2
  332. package/templates/app/docs/errors/CAGE-STATE-010.md +5 -5
  333. package/templates/app/docs/errors/CAGE-STATE-011.md +5 -5
  334. package/templates/app/docs/errors/CAGE-STRUCT-001.md +1 -1
  335. package/templates/app/docs/errors/CAGE-STRUCT-002.md +1 -1
  336. package/templates/app/docs/errors/CAGE-SYNC-001.md +3 -2
  337. package/templates/app/docs/errors/CAGE-TEST-001.md +1 -1
  338. package/templates/app/docs/errors/CAGE-TEST-002.md +50 -0
  339. package/templates/app/docs/errors/CAGE-TEST-003.md +52 -0
  340. package/templates/app/docs/errors/CAGE-UNSAFE-001.md +3 -2
  341. package/templates/app/docs/errors/CAGE-UPGRADE-001.md +2 -2
  342. package/templates/app/docs/errors/CAGE-WORKER-001.md +48 -0
  343. package/templates/app/docs/errors/CAGE-WORKER-002.md +50 -0
  344. package/templates/app/docs/errors/CAGE-WORKER-003.md +48 -0
  345. package/templates/app/docs/errors/README.md +50 -0
  346. package/templates/app/package.json +3 -3
  347. package/templates/app/packages/contracts/package.json +1 -1
  348. package/templates/app/packages/contracts/src/aggregates/dept/index.ts +10 -10
  349. package/templates/app/packages/contracts/src/aggregates/inventory/index.ts +5 -5
  350. package/templates/app/packages/contracts/src/aggregates/inventory-lock/index.ts +4 -4
  351. package/templates/app/packages/contracts/src/aggregates/purchase-order/index.ts +26 -12
  352. package/templates/app/packages/contracts/src/aggregates/role/index.ts +15 -15
  353. package/templates/app/packages/contracts/src/aggregates/user/index.ts +16 -16
  354. package/templates/app/packages/contracts/src/index.ts +7 -1
  355. package/templates/app/packages/contracts/src/queries/index.ts +2 -2
  356. package/templates/app/packages/domain/package.json +5 -4
  357. package/templates/app/packages/domain/src/index.ts +4 -0
  358. package/templates/app/packages/domain/src/integrations/erp.ts +15 -0
  359. package/templates/app/packages/domain/src/integrations/intelligence.ts +20 -0
  360. package/templates/app/packages/domain/src/modules/inventory/index.ts +1 -0
  361. package/templates/app/packages/domain/src/modules/inventory/inventory.ts +12 -0
  362. package/templates/app/packages/domain/src/modules/purchase/approvals.ts +22 -1
  363. package/templates/app/packages/domain/src/modules/purchase/index.ts +1 -0
  364. package/templates/app/packages/domain/src/modules/purchase/intelligence.test.ts +62 -0
  365. package/templates/app/packages/domain/src/modules/purchase/jobs.ts +5 -0
  366. package/templates/app/packages/domain/src/modules/purchase/purchase-order.test.ts +9 -0
  367. package/templates/app/packages/domain/src/modules/purchase/purchase-order.ts +70 -0
  368. package/templates/app/packages/domain/src/modules/purchase/queries.ts +5 -0
  369. package/templates/app/packages/domain/src/workflows/purchase-inventory.ts +6 -0
  370. package/templates/app/packages/domain/src/workflows/purchase-process.ts +42 -0
  371. package/templates/blank/.dockerignore +2 -0
  372. package/templates/blank/.env.example +10 -0
  373. package/templates/blank/AGENTS.md +49 -9
  374. package/templates/blank/README.md +4 -1
  375. package/templates/blank/_gitignore +1 -0
  376. package/templates/blank/apps/api/package.json +1 -1
  377. package/templates/blank/apps/api/src/main.ts +4 -1
  378. package/templates/blank/apps/api/src/worker.ts +2 -0
  379. package/templates/blank/apps/web/index.html +1 -0
  380. package/templates/blank/apps/web/package.json +7 -3
  381. package/templates/blank/apps/web/src/app/app.tsx +80 -18
  382. package/templates/blank/apps/web/src/app/styles/global.css +90 -0
  383. package/templates/blank/apps/web/src/app/use-session.ts +43 -0
  384. package/templates/blank/apps/web/src/app/workspace-layout.tsx +30 -5
  385. package/templates/blank/apps/web/src/main.tsx +5 -0
  386. package/templates/blank/apps/web/src/modules/auth/index.ts +4 -0
  387. package/templates/blank/apps/web/src/modules/auth/pages/login-page.tsx +18 -1
  388. package/templates/blank/apps/web/src/modules/directory/index.ts +7 -0
  389. package/templates/blank/apps/web/src/modules/directory/pages/user-detail-page.tsx +78 -0
  390. package/templates/blank/apps/web/src/modules/directory/pages/users-page.tsx +93 -0
  391. package/templates/blank/apps/web/src/modules/workspace/index.ts +4 -0
  392. package/templates/blank/apps/web/src/modules/workspace/pages/home-page.tsx +17 -0
  393. package/templates/blank/apps/web/src/shared/lib/error-message.ts +11 -0
  394. package/templates/blank/apps/web/src/shared/lib/navigation.ts +21 -0
  395. package/templates/blank/apps/web/src/shared/ui/brand.tsx +10 -2
  396. package/templates/blank/apps/web/src/shared/ui/page-state.css +47 -0
  397. package/templates/blank/apps/web/src/shared/ui/page-state.tsx +76 -0
  398. package/templates/blank/apps/web/src/shared/ui/require-capability.tsx +34 -0
  399. package/templates/blank/apps/web/vite.config.ts +5 -0
  400. package/templates/blank/deploy/nginx.conf +52 -0
  401. package/templates/blank/docs/ai/README.md +21 -0
  402. package/templates/blank/docs/ai/architecture.md +26 -0
  403. package/templates/blank/docs/ai/commenting.md +203 -0
  404. package/templates/blank/docs/ai/diagnostics.md +80 -0
  405. package/templates/blank/docs/ai/files.md +93 -0
  406. package/templates/blank/docs/ai/intelligence.md +348 -0
  407. package/templates/blank/docs/ai/ontology-context.md +59 -4
  408. package/templates/blank/docs/ai/primitives.md +33 -0
  409. package/templates/blank/docs/ai/project-structure.md +8 -3
  410. package/templates/blank/docs/ai/purchase-example.md +16 -2
  411. package/templates/blank/docs/ai/recipes.md +9 -1
  412. package/templates/blank/docs/ai/routing.md +86 -0
  413. package/templates/blank/docs/ai/troubleshooting.md +5 -0
  414. package/templates/blank/docs/ai/workflow.md +24 -11
  415. package/templates/blank/docs/errors/CAGE-AI-001.md +61 -0
  416. package/templates/blank/docs/errors/CAGE-APPR-001.md +7 -6
  417. package/templates/blank/docs/errors/CAGE-APPR-002.md +2 -2
  418. package/templates/blank/docs/errors/CAGE-APPR-003.md +1 -1
  419. package/templates/blank/docs/errors/CAGE-APPR-004.md +4 -4
  420. package/templates/blank/docs/errors/CAGE-APPR-005.md +1 -1
  421. package/templates/blank/docs/errors/CAGE-APPR-006.md +12 -6
  422. package/templates/blank/docs/errors/CAGE-APPR-007.md +3 -3
  423. package/templates/blank/docs/errors/CAGE-APPR-010.md +5 -5
  424. package/templates/blank/docs/errors/CAGE-AUDIT-001.md +53 -0
  425. package/templates/blank/docs/errors/CAGE-AUTH-001.md +1 -1
  426. package/templates/blank/docs/errors/CAGE-BIZ-001.md +51 -0
  427. package/templates/blank/docs/errors/CAGE-BIZ-002.md +49 -0
  428. package/templates/blank/docs/errors/CAGE-BUDGET-001.md +1 -1
  429. package/templates/blank/docs/errors/CAGE-BUDGET-002.md +1 -1
  430. package/templates/blank/docs/errors/CAGE-BUDGET-003.md +1 -1
  431. package/templates/blank/docs/errors/CAGE-CMD-002.md +1 -1
  432. package/templates/blank/docs/errors/CAGE-CMD-003.md +1 -1
  433. package/templates/blank/docs/errors/CAGE-CONN-001.md +3 -3
  434. package/templates/blank/docs/errors/CAGE-CONN-002.md +1 -1
  435. package/templates/blank/docs/errors/CAGE-CONN-003.md +1 -1
  436. package/templates/blank/docs/errors/CAGE-CONN-004.md +1 -1
  437. package/templates/blank/docs/errors/CAGE-CONN-005.md +1 -1
  438. package/templates/blank/docs/errors/CAGE-CONN-006.md +1 -1
  439. package/templates/blank/docs/errors/CAGE-CONN-007.md +6 -6
  440. package/templates/blank/docs/errors/CAGE-CONN-008.md +5 -5
  441. package/templates/blank/docs/errors/CAGE-CONN-009.md +6 -6
  442. package/templates/blank/docs/errors/CAGE-CONN-010.md +6 -6
  443. package/templates/blank/docs/errors/CAGE-CONN-011.md +1 -1
  444. package/templates/blank/docs/errors/CAGE-CONN-012.md +1 -1
  445. package/templates/blank/docs/errors/CAGE-CONN-013.md +49 -0
  446. package/templates/blank/docs/errors/CAGE-CONN-014.md +48 -0
  447. package/templates/blank/docs/errors/CAGE-CONN-015.md +49 -0
  448. package/templates/blank/docs/errors/CAGE-CREATE-001.md +10 -9
  449. package/templates/blank/docs/errors/CAGE-DECL-001.md +2 -2
  450. package/templates/blank/docs/errors/CAGE-DECL-002.md +7 -6
  451. package/templates/blank/docs/errors/CAGE-DECL-003.md +1 -1
  452. package/templates/blank/docs/errors/CAGE-DECL-004.md +1 -1
  453. package/templates/blank/docs/errors/CAGE-DEP-001.md +2 -2
  454. package/templates/blank/docs/errors/CAGE-DEP-002.md +1 -1
  455. package/templates/blank/docs/errors/CAGE-DEP-003.md +2 -2
  456. package/templates/blank/docs/errors/CAGE-DEP-004.md +1 -1
  457. package/templates/blank/docs/errors/CAGE-DEP-005.md +1 -1
  458. package/templates/blank/docs/errors/CAGE-DIAG-001.md +53 -0
  459. package/templates/blank/docs/errors/CAGE-DLQ-001.md +2 -2
  460. package/templates/blank/docs/errors/CAGE-ENV-001.md +4 -4
  461. package/templates/blank/docs/errors/CAGE-ENV-002.md +51 -0
  462. package/templates/blank/docs/errors/CAGE-ENV-003.md +48 -0
  463. package/templates/blank/docs/errors/CAGE-EVENT-001.md +1 -1
  464. package/templates/blank/docs/errors/CAGE-EVENT-002.md +7 -7
  465. package/templates/blank/docs/errors/CAGE-FIELD-001.md +2 -2
  466. package/templates/blank/docs/errors/CAGE-FIELD-002.md +1 -1
  467. package/templates/blank/docs/errors/CAGE-FIELD-003.md +1 -1
  468. package/templates/blank/docs/errors/CAGE-FIELD-004.md +1 -1
  469. package/templates/blank/docs/errors/CAGE-FILE-001.md +56 -0
  470. package/templates/blank/docs/errors/CAGE-GEN-001.md +2 -2
  471. package/templates/blank/docs/errors/CAGE-GEN-002.md +1 -1
  472. package/templates/blank/docs/errors/CAGE-GEN-003.md +53 -0
  473. package/templates/blank/docs/errors/CAGE-GRANT-001.md +3 -3
  474. package/templates/blank/docs/errors/CAGE-GRANT-002.md +2 -2
  475. package/templates/blank/docs/errors/CAGE-GRANT-003.md +7 -6
  476. package/templates/blank/docs/errors/CAGE-IMPACT-001.md +2 -2
  477. package/templates/blank/docs/errors/CAGE-IMPACT-002.md +52 -0
  478. package/templates/blank/docs/errors/CAGE-INIT-001.md +1 -1
  479. package/templates/blank/docs/errors/CAGE-INIT-002.md +1 -1
  480. package/templates/blank/docs/errors/CAGE-INIT-003.md +2 -2
  481. package/templates/blank/docs/errors/CAGE-INIT-004.md +1 -1
  482. package/templates/blank/docs/errors/CAGE-INIT-005.md +52 -0
  483. package/templates/blank/docs/errors/CAGE-JOB-001.md +1 -1
  484. package/templates/blank/docs/errors/CAGE-JOB-002.md +1 -1
  485. package/templates/blank/docs/errors/CAGE-JOB-003.md +1 -1
  486. package/templates/blank/docs/errors/CAGE-LINT-001.md +1 -1
  487. package/templates/blank/docs/errors/CAGE-MIG-001.md +1 -1
  488. package/templates/blank/docs/errors/CAGE-MIG-002.md +1 -1
  489. package/templates/blank/docs/errors/CAGE-MIG-005.md +1 -1
  490. package/templates/blank/docs/errors/CAGE-NAME-001.md +1 -1
  491. package/templates/blank/docs/errors/CAGE-NAME-002.md +1 -1
  492. package/templates/blank/docs/errors/CAGE-NAME-003.md +3 -3
  493. package/templates/blank/docs/errors/CAGE-NAME-004.md +1 -1
  494. package/templates/blank/docs/errors/CAGE-NAME-005.md +1 -1
  495. package/templates/blank/docs/errors/CAGE-NAME-006.md +1 -1
  496. package/templates/blank/docs/errors/CAGE-ORG-001.md +7 -6
  497. package/templates/blank/docs/errors/CAGE-PAIR-002.md +6 -5
  498. package/templates/blank/docs/errors/CAGE-QUERY-001.md +1 -1
  499. package/templates/blank/docs/errors/CAGE-QUERY-002.md +2 -2
  500. package/templates/blank/docs/errors/CAGE-QUERY-003.md +7 -6
  501. package/templates/blank/docs/errors/CAGE-REACT-001.md +3 -3
  502. package/templates/blank/docs/errors/CAGE-REACT-002.md +1 -1
  503. package/templates/blank/docs/errors/CAGE-REACT-003.md +50 -0
  504. package/templates/blank/docs/errors/CAGE-READS-001.md +9 -6
  505. package/templates/blank/docs/errors/CAGE-REG-001.md +13 -12
  506. package/templates/blank/docs/errors/CAGE-REG-002.md +2 -1
  507. package/templates/blank/docs/errors/CAGE-REG-003.md +1 -1
  508. package/templates/blank/docs/errors/CAGE-REL-001.md +14 -14
  509. package/templates/blank/docs/errors/CAGE-ROUTE-001.md +7 -6
  510. package/templates/blank/docs/errors/CAGE-SCOPE-001.md +1 -1
  511. package/templates/blank/docs/errors/CAGE-SCOPE-002.md +2 -2
  512. package/templates/blank/docs/errors/CAGE-SECRET-001.md +2 -2
  513. package/templates/blank/docs/errors/CAGE-SECRET-002.md +1 -1
  514. package/templates/blank/docs/errors/CAGE-SENS-001.md +5 -5
  515. package/templates/blank/docs/errors/CAGE-SQL-001.md +1 -1
  516. package/templates/blank/docs/errors/CAGE-SQL-002.md +1 -1
  517. package/templates/blank/docs/errors/CAGE-STATE-001.md +3 -3
  518. package/templates/blank/docs/errors/CAGE-STATE-002.md +1 -1
  519. package/templates/blank/docs/errors/CAGE-STATE-003.md +1 -1
  520. package/templates/blank/docs/errors/CAGE-STATE-004.md +1 -1
  521. package/templates/blank/docs/errors/CAGE-STATE-005.md +3 -2
  522. package/templates/blank/docs/errors/CAGE-STATE-010.md +5 -5
  523. package/templates/blank/docs/errors/CAGE-STATE-011.md +5 -5
  524. package/templates/blank/docs/errors/CAGE-STRUCT-001.md +1 -1
  525. package/templates/blank/docs/errors/CAGE-STRUCT-002.md +1 -1
  526. package/templates/blank/docs/errors/CAGE-SYNC-001.md +3 -2
  527. package/templates/blank/docs/errors/CAGE-TEST-001.md +1 -1
  528. package/templates/blank/docs/errors/CAGE-TEST-002.md +50 -0
  529. package/templates/blank/docs/errors/CAGE-TEST-003.md +52 -0
  530. package/templates/blank/docs/errors/CAGE-UNSAFE-001.md +3 -2
  531. package/templates/blank/docs/errors/CAGE-UPGRADE-001.md +2 -2
  532. package/templates/blank/docs/errors/CAGE-WORKER-001.md +48 -0
  533. package/templates/blank/docs/errors/CAGE-WORKER-002.md +50 -0
  534. package/templates/blank/docs/errors/CAGE-WORKER-003.md +48 -0
  535. package/templates/blank/docs/errors/README.md +50 -0
  536. package/templates/blank/docs/examples/purchase-admin/apps/api/src/main.ts +5 -1
  537. package/templates/blank/docs/examples/purchase-admin/apps/api/src/worker.ts +3 -0
  538. package/templates/blank/docs/examples/purchase-admin/apps/web/src/app/app.tsx +122 -12
  539. package/templates/blank/docs/examples/purchase-admin/apps/web/src/app/styles/global.css +88 -8
  540. package/templates/blank/docs/examples/purchase-admin/apps/web/src/app/use-session.ts +43 -0
  541. package/templates/blank/docs/examples/purchase-admin/apps/web/src/app/workspace-layout.tsx +58 -19
  542. package/templates/blank/docs/examples/purchase-admin/apps/web/src/main.tsx +5 -0
  543. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/approval/hooks/use-approval-tasks.ts +11 -0
  544. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/approval/index.ts +4 -0
  545. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/approval/pages/approval-tasks-page.tsx +20 -1
  546. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/auth/index.ts +4 -0
  547. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/auth/pages/login-page.tsx +12 -0
  548. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/inventory/index.ts +4 -0
  549. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/inventory/pages/inventory-page.tsx +29 -1
  550. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/components/approval-history.tsx +32 -0
  551. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/components/order-attachments.tsx +29 -0
  552. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/components/purchase-assistant-context.tsx +17 -0
  553. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/components/purchase-order-form.css +6 -0
  554. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/components/purchase-order-form.tsx +25 -3
  555. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/index.ts +5 -0
  556. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/lib/presentation.ts +20 -0
  557. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/pages/purchase-intelligence.css +15 -0
  558. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/pages/purchase-order-detail-page.tsx +154 -0
  559. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/pages/purchase-orders-page.tsx +52 -22
  560. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/workspace/index.ts +5 -0
  561. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/workspace/pages/home-page.tsx +44 -0
  562. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/hooks/use-command.ts +13 -0
  563. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/lib/error-message.ts +9 -0
  564. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/lib/navigation.ts +21 -0
  565. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/assistant-markdown.tsx +19 -0
  566. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/assistant-panel.css +134 -0
  567. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/assistant-panel.tsx +200 -0
  568. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/assistant-scope.tsx +72 -0
  569. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/attachment-upload.css +28 -0
  570. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/attachment-upload.tsx +163 -0
  571. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/notice.tsx +7 -0
  572. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/page-heading.tsx +7 -0
  573. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/page-state.css +47 -0
  574. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/page-state.tsx +76 -0
  575. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/require-capability.tsx +34 -0
  576. package/templates/blank/docs/examples/purchase-admin/cage.config.json +9 -0
  577. package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/aggregates/dept/index.ts +10 -10
  578. package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/aggregates/inventory/index.ts +5 -5
  579. package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/aggregates/inventory-lock/index.ts +4 -4
  580. package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/aggregates/purchase-order/index.ts +26 -12
  581. package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/aggregates/role/index.ts +15 -15
  582. package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/aggregates/user/index.ts +16 -16
  583. package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/index.ts +7 -1
  584. package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/queries/index.ts +2 -2
  585. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/index.ts +4 -0
  586. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/integrations/erp.ts +15 -0
  587. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/integrations/intelligence.ts +20 -0
  588. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/inventory/index.ts +1 -0
  589. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/inventory/inventory.ts +12 -0
  590. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/approvals.ts +22 -1
  591. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/index.ts +1 -0
  592. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/intelligence.test.ts +62 -0
  593. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/jobs.ts +5 -0
  594. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/purchase-order.test.ts +9 -0
  595. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/purchase-order.ts +70 -0
  596. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/queries.ts +5 -0
  597. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/workflows/purchase-inventory.ts +6 -0
  598. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/workflows/purchase-process.ts +42 -0
  599. package/templates/blank/package.json +3 -3
  600. package/templates/blank/packages/contracts/package.json +1 -1
  601. package/templates/blank/packages/contracts/src/aggregates/dept/index.ts +10 -10
  602. package/templates/blank/packages/contracts/src/aggregates/role/index.ts +15 -15
  603. package/templates/blank/packages/contracts/src/aggregates/user/index.ts +16 -16
  604. package/templates/blank/packages/contracts/src/index.ts +1 -1
  605. package/templates/blank/packages/contracts/src/queries/index.ts +1 -1
  606. package/templates/blank/packages/domain/package.json +5 -4
  607. package/templates/blank/packages/domain/src/index.ts +2 -1
@@ -0,0 +1,51 @@
1
+ # CAGE-ENV-002:运行配置不满足安全边界
2
+
3
+ [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
4
+
5
+ > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
+
7
+ ## 何时出现
8
+
9
+ 阶段:init / migrate / 启动。
10
+
11
+ 生产启动缺少足够强的 Cookie 密钥,或服务配置中的认证并发、超时等参数无效。
12
+
13
+ ## 修复步骤
14
+
15
+ 1. 按诊断的配置项设置合法值;生产提供独立生成的随机 Cookie 密钥并重启服务。
16
+ 2. 只报告配置项名称和错误码,不输出密钥或整个环境文件。
17
+
18
+ ## 正例
19
+
20
+ ```text
21
+ 由受控环境变量提供随机 CAGE_COOKIE_SECRET,并设置有界认证并发及队列
22
+ ```
23
+
24
+ ## 反例
25
+
26
+ ```text
27
+ 生产继续使用固定开发 Cookie 密钥,或给并发上限填入无穷值
28
+ ```
29
+
30
+ ## 修复后验证
31
+
32
+ 重跑原先失败的命令,确认使用预期库与账号;输出脱敏信息。
33
+
34
+ ## 框架内的检查位置
35
+
36
+ 以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
37
+
38
+ - `packages/http/src/auth.ts:69`
39
+ - `packages/http/src/auth.ts:72`
40
+ - `packages/http/src/server.ts:111`
41
+ - `packages/http/src/server.ts:115`
42
+
43
+ 实现片段(位置随框架版本更新):
44
+
45
+ ```ts
46
+
47
+ /** concurrency 是同时派生个数,queueLimit 是额外等待个数;非法配置在启动期抛 CAGE-ENV-002。 */
48
+ constructor(private readonly concurrency = 4, private readonly queueLimit = 32) {
49
+ if (!Number.isSafeInteger(concurrency) || concurrency < 1 || !Number.isSafeInteger(queueLimit) || queueLimit < 0) {
50
+ throw new Error('[CAGE-ENV-002] passwordConcurrency 必须为正整数,passwordQueueLimit 必须为非负整数');
51
+ ```
@@ -0,0 +1,48 @@
1
+ # CAGE-ENV-003:服务启动不能隐式初始化组织
2
+
3
+ [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
4
+
5
+ > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
+
7
+ ## 何时出现
8
+
9
+ 阶段:init / migrate / 启动。
10
+
11
+ createServer 显式传入 bootstrap: true。初始化不能混入日常服务启动并输出密码。
12
+
13
+ ## 修复步骤
14
+
15
+ 1. 移除启动参数中的 bootstrap: true;先审查执行迁移,再显式执行 cage bootstrap。
16
+ 2. 使用 --credentials-file 指定新的受限凭据文件;组织已有用户时不重置凭据。
17
+
18
+ ## 正例
19
+
20
+ ```text
21
+ pnpm exec cage bootstrap --credentials-file .cage/admin-credentials.json
22
+ ```
23
+
24
+ ## 反例
25
+
26
+ ```text
27
+ createServer({ domain, bootstrap: true })
28
+ ```
29
+
30
+ ## 修复后验证
31
+
32
+ 重跑原先失败的命令,确认使用预期库与账号;输出脱敏信息。
33
+
34
+ ## 框架内的检查位置
35
+
36
+ 以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
37
+
38
+ - `packages/http/src/server.ts:113`
39
+
40
+ 实现片段(位置随框架版本更新):
41
+
42
+ ```ts
43
+ }
44
+ if (opts.bootstrap) throw new Error('[CAGE-ENV-003] 服务启动不再隐式初始化组织;请在受控初始化入口显式调用 bootstrapOrg 并安全交付初始凭据');
45
+ const readinessTimeoutMs = opts.readinessTimeoutMs ?? 2000;
46
+ if (!Number.isSafeInteger(readinessTimeoutMs) || readinessTimeoutMs < 1) throw new Error('[CAGE-ENV-002] readinessTimeoutMs 必须为正整数');
47
+ // 开发会话密钥也是随机值,重启会使旧 CSRF/OIDC cookie 失效;多实例必须显式共享配置。
48
+ ```
@@ -34,7 +34,7 @@ emit(OrderCancelled, (o, _i, prev) => ({ orderId: o.id, previousStatus: prev.sta
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/kernel/src/kernel.ts:380`
37
+ - `packages/kernel/src/kernel.ts:456`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -34,17 +34,17 @@ note: text().optional() // 新增字段
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/cli/src/rules.ts:225`
38
- - `packages/cli/src/rules.ts:237`
39
- - `packages/cli/src/rules.ts:244`
40
- - `packages/cli/src/rules.ts:254`
37
+ - `packages/cli/src/rules.ts:275`
38
+ - `packages/cli/src/rules.ts:293`
39
+ - `packages/cli/src/rules.ts:300`
40
+ - `packages/cli/src/rules.ts:310`
41
41
 
42
42
  实现片段(位置随框架版本更新):
43
43
 
44
44
  ```ts
45
45
 
46
46
  /** CAGE-EVENT-002:事件载荷只允许向后兼容的变更(只能新增可选字段) */
47
- export function checkEventCompat(base: Ontology, head: Ontology): Finding[] {
48
- const findings: Finding[] = [];
49
- const b = new Map(base.nodes.filter((n) => n.kind === 'event').map((n) => [n.id, n]));
47
+ /**
48
+ * 比较同名事件字段的删除、类型改变及新增必填项。
49
+ * @param base 旧本体,代表可能仍有在途事件的声明。
50
50
  ```
@@ -34,7 +34,7 @@ text().sensitive('自定义随意字符串')
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/kernel/src/primitives/fields.ts:100`
37
+ - `packages/kernel/src/primitives/fields.ts:197`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -43,5 +43,5 @@ text().sensitive('自定义随意字符串')
43
43
  if (!SENSITIVE_KINDS.includes(kind)) throw declError('CAGE-FIELD-001', `未知的敏感种类 ${kind}`);
44
44
  return this.with({ sensitiveKind: kind });
45
45
  }
46
- /** 唯一约束(租户内) */
46
+ /** 返回要求租户内唯一的新字段;实际约束由 DDL/迁移落实,不是仅一次应用查询。文件和集合已有专用归属/配对语义,拒绝该修饰。 */
47
47
  ```
@@ -34,7 +34,7 @@ deptId: ref(undefined)
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/kernel/src/primitives/fields.ts:160`
37
+ - `packages/kernel/src/primitives/fields.ts:270`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -34,7 +34,7 @@ fields: { amount: z.string() }
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/kernel/src/primitives/aggregate.ts:83`
37
+ - `packages/kernel/src/primitives/aggregate.ts:174`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -34,7 +34,7 @@ fields: { version: text() }
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/kernel/src/primitives/aggregate.ts:85`
37
+ - `packages/kernel/src/primitives/aggregate.ts:176`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -0,0 +1,56 @@
1
+ # CAGE-FILE-001:文件字段或上传配置无效
2
+
3
+ [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
4
+
5
+ > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
+
7
+ ## 何时出现
8
+
9
+ 阶段:字段声明 / 私有文件服务配置。
10
+
11
+ 文件缺少明确的大小/MIME 限制,多文件数量无效,文件嵌入 JSON/事件/范围字段,或存储分片配置超出适配器限制。
12
+
13
+ ## 修复步骤
14
+
15
+ 1. 文件直接声明在聚合 fields 中,设置正整数 maxBytes、明确 MIME accept;files 还需 1–100 的 maxCount。
16
+ 2. 不使用 sensitive/hidden/unique 修饰文件;事件只传 id/list(id())。上传 partBytes/maxFileBytes 必须符合存储适配器分片限制。
17
+
18
+ ## 正例
19
+
20
+ ```text
21
+ attachments: files({ maxBytes: 20971520, maxCount: 10, accept: ['application/pdf'] })
22
+ ```
23
+
24
+ ## 反例
25
+
26
+ ```text
27
+ list({ contract: file({ maxBytes: 0, accept: ['*/*'] }) })
28
+ ```
29
+
30
+ ## 修复后验证
31
+
32
+ 重跑 cage check、gen 和文件回归;实际验证暂停、续传、命令绑定及当前权限下载,云存储联调单独报告。
33
+
34
+ ## 框架内的检查位置
35
+
36
+ 以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
37
+
38
+ - `packages/files/src/service.ts:95`
39
+ - `packages/files/src/service.ts:98`
40
+ - `packages/kernel/src/primitives/aggregate.ts:189`
41
+ - `packages/kernel/src/primitives/event.ts:51`
42
+ - `packages/kernel/src/primitives/fields.ts:195`
43
+ - `packages/kernel/src/primitives/fields.ts:202`
44
+ - `packages/kernel/src/primitives/fields.ts:208`
45
+ - `packages/kernel/src/primitives/fields.ts:305`
46
+ - `packages/kernel/src/primitives/fields.ts:336`
47
+
48
+ 实现片段(位置随框架版本更新):
49
+
50
+ ```ts
51
+ };
52
+ for (const [name, value] of Object.entries(this.options)) if (!Number.isSafeInteger(value) || value < 1) throw new Error(`[CAGE-FILE-001] ${name} 必须为正安全整数`);
53
+ const limits = this.storage.limits;
54
+ if (this.options.partBytes < limits.minPartBytes || this.options.partBytes > limits.maxPartBytes || Math.ceil(this.options.maxFileBytes / this.options.partBytes) > limits.maxParts)
55
+ throw new Error('[CAGE-FILE-001] 分片配置超出存储适配器限制');
56
+ ```
@@ -34,8 +34,8 @@ gen --check/verify 比较发现需提交的生成文件缺失或与声明不一
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/cli/src/gen/index.ts:48`
38
- - `packages/cli/src/gen/index.ts:90`
37
+ - `packages/cli/src/gen/index.ts:76`
38
+ - `packages/cli/src/gen/index.ts:122`
39
39
 
40
40
  实现片段(位置随框架版本更新):
41
41
 
@@ -34,7 +34,7 @@
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/cli/src/gen/index.ts:162`
37
+ - `packages/cli/src/gen/index.ts:209`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -0,0 +1,53 @@
1
+ # CAGE-GEN-003:输入校验需要服务端执行
2
+
3
+ [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
4
+
5
+ > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
+
7
+ ## 何时出现
8
+
9
+ 阶段:gen --check / verify。
10
+
11
+ refine/superRefine、transform 等可执行校验无法无损转换到生成的客户端 schema,报告包含字段路径。
12
+
13
+ ## 修复步骤
14
+
15
+ 1. 阅读诊断定位的命令和字段;把可表达规则声明成标准 schema,保留服务端作为最终校验。
16
+ 2. 确需自定义逻辑时,在页面解释业务拒绝并处理领域错误;不要认为契约生成成功代表执行函数已被复制。
17
+
18
+ ## 正例
19
+
20
+ ```text
21
+ strict、multipleOf、default 使用标准 Zod 声明;自定义规则按字段报告降级
22
+ ```
23
+
24
+ ## 反例
25
+
26
+ ```text
27
+ 把服务端 refine 丢失当作客户端校验完全等价
28
+ ```
29
+
30
+ ## 修复后验证
31
+
32
+ 重新生成并审查后执行 cage gen --check;结构变化还需审查并执行 migrate。
33
+
34
+ ## 框架内的检查位置
35
+
36
+ 以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
37
+
38
+ - `packages/cli/src/gen/index.ts:159`
39
+ - `packages/cli/src/gen/zod-code.ts:64`
40
+ - `packages/cli/src/gen/zod-code.ts:84`
41
+ - `packages/cli/src/gen/zod-code.ts:120`
42
+ - `packages/cli/src/gen/zod-code.ts:140`
43
+ - `packages/cli/src/gen/zod-code.ts:217`
44
+
45
+ 实现片段(位置随框架版本更新):
46
+
47
+ ```ts
48
+ for (const diagnostic of schemaDiagnostics(entry.input)) findings.push({
49
+ code: 'CAGE-GEN-003', severity: 'warning', at: `${entry.name}:${diagnostic.path}`,
50
+ reason: diagnostic.reason, fix: '前端校验只提供即时提示,以服务端命令校验为准;不要复制可执行函数到契约。',
51
+ });
52
+
53
+ ```
@@ -34,9 +34,9 @@
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/admin/src/domain/constraints.ts:21`
38
- - `packages/admin/src/domain/constraints.ts:24`
39
- - `packages/admin/src/domain/constraints.ts:51`
37
+ - `packages/admin/src/domain/constraints.ts:39`
38
+ - `packages/admin/src/domain/constraints.ts:42`
39
+ - `packages/admin/src/domain/constraints.ts:78`
40
40
 
41
41
  实现片段(位置随框架版本更新):
42
42
 
@@ -34,8 +34,8 @@
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/admin/src/domain/constraints.ts:37`
38
- - `packages/admin/src/domain/constraints.ts:55`
37
+ - `packages/admin/src/domain/constraints.ts:59`
38
+ - `packages/admin/src/domain/constraints.ts:82`
39
39
 
40
40
  实现片段(位置随框架版本更新):
41
41
 
@@ -34,14 +34,15 @@ PurchaseOrder.anything // 没有对应声明
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/admin/src/domain/constraints.ts:13`
37
+ - `packages/admin/src/domain/constraints.ts:21`
38
+ - `packages/admin/src/domain/constraints.ts:26`
38
39
 
39
40
  实现片段(位置随框架版本更新):
40
41
 
41
42
  ```ts
42
- check: (_role, _ctx, input, meta) =>
43
- meta.catalog().includes(input.capability) ? ok() : violation(`[CAGE-GRANT-003] 能力点 ${input.capability} 不在能力目录里`),
44
- });
45
-
46
- /** 防提权:不能授出自己没有的能力点;数值参数(额度)不能超过自己的 */
43
+ * 构造目录存在性约束。check 使用内核提供的实时目录核对 input.capability,
44
+ * 未知能力返回 CAGE-GRANT-003;该检查不负责判断操作者是否拥有这个能力。
45
+ */
46
+ export const knownCapability = (): Constraint => ({
47
+ name: 'knownCapability',
47
48
  ```
@@ -34,8 +34,8 @@ pnpm exec cage impact --base-file .cage/before-change.json
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/cli/src/baseline.ts:45`
38
- - `packages/cli/src/main.ts:212`
37
+ - `packages/cli/src/baseline.ts:58`
38
+ - `packages/cli/src/main.ts:287`
39
39
 
40
40
  实现片段(位置随框架版本更新):
41
41
 
@@ -0,0 +1,52 @@
1
+ # CAGE-IMPACT-002:命名本体快照无效
2
+
3
+ [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
4
+
5
+ > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
+
7
+ ## 何时出现
8
+
9
+ 阶段:impact / 基线加载。
10
+
11
+ 快照名非法、同名已存在、指定快照不存在,或快照格式损坏。
12
+
13
+ ## 修复步骤
14
+
15
+ 1. 先 cage snapshot list 核对已有名称,再用新的稳定名称保存。
16
+ 2. 保存后通过 impact --snapshot 比较;不要覆盖旧基线或把修改后的图当成修改前状态。
17
+
18
+ ## 正例
19
+
20
+ ```text
21
+ cage snapshot save before-rental-change;cage impact --snapshot before-rental-change
22
+ ```
23
+
24
+ ## 反例
25
+
26
+ ```text
27
+ 多次使用同名快照覆盖唯一旧图
28
+ ```
29
+
30
+ ## 修复后验证
31
+
32
+ 使用可靠基线重新 impact,确认报告中的变化与本次需求相符。
33
+
34
+ ## 框架内的检查位置
35
+
36
+ 以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
37
+
38
+ - `packages/cli/src/impact.ts:95`
39
+ - `packages/cli/src/snapshots.ts:24`
40
+ - `packages/cli/src/snapshots.ts:27`
41
+ - `packages/cli/src/snapshots.ts:56`
42
+ - `packages/cli/src/snapshots.ts:58`
43
+
44
+ 实现片段(位置随框架版本更新):
45
+
46
+ ```ts
47
+ const graph = value.graph ?? value;
48
+ if (graph.version !== 1 || !Array.isArray(graph.nodes) || !Array.isArray(graph.edges)) throw new Error('[CAGE-IMPACT-002] 基线文件不是有效本体图或命名快照');
49
+ return graph as Ontology;
50
+ }
51
+
52
+ ```
@@ -34,7 +34,7 @@ postgresql://postgres:密码@主机:端口/
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/cli/src/init.ts:80`
37
+ - `packages/cli/src/init.ts:100`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -36,7 +36,7 @@ ALTER ROLE 重置共享账号密码,导致已有应用断连
36
36
 
37
37
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
38
38
 
39
- - `packages/cli/src/init.ts:94`
39
+ - `packages/cli/src/init.ts:114`
40
40
 
41
41
  实现片段(位置随框架版本更新):
42
42
 
@@ -34,8 +34,8 @@ app 连接 business_db,而 read/migrate 指向另一个库
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/cli/src/init.ts:22`
38
- - `packages/cli/src/init.ts:97`
37
+ - `packages/cli/src/init.ts:30`
38
+ - `packages/cli/src/init.ts:117`
39
39
 
40
40
  实现片段(位置随框架版本更新):
41
41
 
@@ -35,7 +35,7 @@
35
35
 
36
36
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
37
37
 
38
- - `packages/cli/src/init.ts:122`
38
+ - `packages/cli/src/init.ts:142`
39
39
 
40
40
  实现片段(位置随框架版本更新):
41
41
 
@@ -0,0 +1,52 @@
1
+ # CAGE-INIT-005:显式组织初始化或凭据交付失败
2
+
3
+ [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
4
+
5
+ > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
+
7
+ ## 何时出现
8
+
9
+ 阶段:init。
10
+
11
+ bootstrap 配置不完整,凭据文件已存在、权限无法限制,或组织初始化事务失败。
12
+
13
+ ## 修复步骤
14
+
15
+ 1. 审查执行迁移后,提供新的凭据文件路径和实际可用连接;父目录需存在。
16
+ 2. 先修复文件权限或数据库错误,再重新执行;不能把密码转而打印到服务日志。
17
+
18
+ ## 正例
19
+
20
+ ```text
21
+ cage bootstrap --credentials-file .cage/admin-credentials.json // 新受限文件
22
+ ```
23
+
24
+ ## 反例
25
+
26
+ ```text
27
+ 覆盖已有凭据文件,或初始化失败后继续输出“成功”
28
+ ```
29
+
30
+ ## 修复后验证
31
+
32
+ 恢复/核对配置后运行 cage init 验证,随后按流程 gen、审查迁移并 migrate;不输出凭证。
33
+
34
+ ## 框架内的检查位置
35
+
36
+ 以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
37
+
38
+ - `packages/cli/src/bootstrap.ts:19`
39
+ - `packages/cli/src/bootstrap.ts:23`
40
+ - `packages/cli/src/bootstrap.ts:32`
41
+ - `packages/cli/src/bootstrap.ts:45`
42
+ - `packages/cli/src/bootstrap.ts:61`
43
+
44
+ 实现片段(位置随框架版本更新):
45
+
46
+ ```ts
47
+ * @param file 已解析的目标路径,父目录必须存在,目标不得已存在。
48
+ * @throws 创建或 ACL 限制失败时抛出 CAGE-INIT-005;已创建空文件可能保留,不能视为交付成功。
49
+ */
50
+ export function protectCredentialFile(file: string): void {
51
+ try { closeSync(openSync(file, 'wx', 0o600)); }
52
+ ```
@@ -34,7 +34,7 @@ cron: '每天两点'
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/kernel/src/primitives/flow.ts:190`
37
+ - `packages/kernel/src/primitives/flow.ts:346`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -34,7 +34,7 @@ calls: [],run 却调用 cancel
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/kernel/src/worker/scheduler.ts:38`
37
+ - `packages/kernel/src/worker/scheduler.ts:43`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -34,7 +34,7 @@ reads: [],却 query.list(PurchaseOrder, ...)
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/kernel/src/worker/scheduler.ts:28`
37
+ - `packages/kernel/src/worker/scheduler.ts:33`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -34,7 +34,7 @@ verify 将没有专属 CAGE 码的 ESLint 诊断汇总为该码。
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/cli/src/verify.ts:95`
37
+ - `packages/cli/src/verify.ts:114`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -34,7 +34,7 @@
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/kernel/src/db/migrate.ts:84`
37
+ - `packages/kernel/src/db/migrate.ts:94`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -34,7 +34,7 @@
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/kernel/src/db/migrate.ts:96`
37
+ - `packages/kernel/src/db/migrate.ts:106`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -34,7 +34,7 @@
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/kernel/src/db/migrate.ts:71`
37
+ - `packages/kernel/src/db/migrate.ts:81`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -34,7 +34,7 @@ aggregate('purchase-order', definition)
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/kernel/src/primitives/aggregate.ts:72`
37
+ - `packages/kernel/src/primitives/aggregate.ts:163`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -34,7 +34,7 @@ fields: { supplier_phone: text() }
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/kernel/src/primitives/aggregate.ts:87`
37
+ - `packages/kernel/src/primitives/aggregate.ts:178`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -34,14 +34,14 @@ event('order-submitted', fields)
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/kernel/src/primitives/event.ts:19`
37
+ - `packages/kernel/src/primitives/event.ts:49`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
41
41
  ```ts
42
- export function event<const N extends string, F extends Fields>(name: N, fields: F, opts?: { description?: string }): Event<N, F> {
42
+ export function event<const N extends string, F extends Fields>(name: N, fields: F, opts?: { /** 可选事件事实说明,供本体与文档使用;不改变事件名、字段或投递语义。 */ description?: string }): Event<N, F> {
43
43
  if (!/^[A-Z][A-Za-z0-9]*$/.test(name)) throw declError('CAGE-NAME-003', `事件名 ${name} 必须是大驼峰`);
44
44
  if (Object.values(fields).some(isRelation)) throw declError('CAGE-REL-001', '事件载荷不声明持久化关系;传递 ID 数组请使用 list(id())');
45
+ if (Object.values(fields).some(isFile)) throw declError('CAGE-FILE-001', '事件传递文件 ID 请使用 id/list(id()),不声明文件生命周期');
45
46
  return Object.freeze({
46
- [EVENT]: true as const,
47
47
  ```
@@ -34,7 +34,7 @@ name: '提交审批'
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/kernel/src/primitives/command.ts:145`
37
+ - `packages/kernel/src/primitives/command.ts:243`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40