@yss123/cage-cli 0.3.0 → 0.3.2

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 (388) hide show
  1. package/README.md +7 -3
  2. package/dist/approval-tree.d.ts +88 -0
  3. package/dist/approval-tree.js +18 -0
  4. package/dist/approval-tree.js.map +1 -0
  5. package/dist/capabilities.js +46 -31
  6. package/dist/capabilities.js.map +1 -1
  7. package/dist/graph-approvals.d.ts +11 -1
  8. package/dist/graph-approvals.js +18 -5
  9. package/dist/graph-approvals.js.map +1 -1
  10. package/dist/graph-relations.js +10 -8
  11. package/dist/graph-relations.js.map +1 -1
  12. package/dist/graph.js +2 -0
  13. package/dist/graph.js.map +1 -1
  14. package/dist/main.js +1 -1
  15. package/dist/main.js.map +1 -1
  16. package/dist/ontology.js +8 -5
  17. package/dist/ontology.js.map +1 -1
  18. package/dist/project-structure.js +2 -2
  19. package/dist/project-structure.js.map +1 -1
  20. package/dist/sync.d.ts +1 -1
  21. package/dist/sync.js +25 -108
  22. package/dist/sync.js.map +1 -1
  23. package/graph-ui/approval-flow.js +28 -8
  24. package/graph-ui/approval-parallel.js +110 -0
  25. package/graph-ui/approval-tree.js +17 -0
  26. package/graph-ui/business.css +26 -0
  27. package/graph-ui/business.js +30 -13
  28. package/graph-ui/graph-approvals.js +18 -5
  29. package/graph-ui/graph-relations.js +10 -8
  30. package/package.json +6 -6
  31. package/templates/app/.agents/skills/cage-development/SKILL.md +10 -0
  32. package/templates/app/AGENTS.md +39 -122
  33. package/templates/app/CLAUDE.md +6 -0
  34. package/templates/app/README.md +9 -8
  35. package/templates/app/apps/api/package.json +2 -2
  36. package/templates/app/apps/web/package.json +1 -1
  37. package/templates/app/apps/web/src/modules/approval/components/task-operation-dialog.tsx +61 -0
  38. package/templates/app/apps/web/src/modules/approval/hooks/use-approval-tasks.ts +6 -9
  39. package/templates/app/apps/web/src/modules/approval/pages/approval-tasks-page.tsx +81 -49
  40. package/templates/app/apps/web/src/modules/approval/pages/approval-tasks.css +18 -0
  41. package/templates/app/apps/web/src/modules/purchase/components/approval-history.tsx +39 -4
  42. package/templates/app/apps/web/src/modules/purchase/components/order-reviewers.tsx +38 -0
  43. package/templates/app/apps/web/src/modules/purchase/components/purchase-order-form.tsx +9 -2
  44. package/templates/app/apps/web/src/modules/purchase/pages/purchase-intelligence.css +2 -0
  45. package/templates/app/apps/web/src/modules/purchase/pages/purchase-order-detail-page.tsx +2 -0
  46. package/templates/app/apps/web/src/modules/purchase/pages/purchase-orders-page.tsx +2 -0
  47. package/templates/app/apps/web/src/shared/lib/error-message.ts +6 -1
  48. package/templates/app/apps/web/src/shared/ui/approval-member-picker.css +10 -0
  49. package/templates/app/apps/web/src/shared/ui/approval-member-picker.tsx +51 -0
  50. package/templates/app/cage.config.json +14 -0
  51. package/templates/app/db/migrations/0004_draft.sql +27 -0
  52. package/templates/app/docs/README.md +11 -0
  53. package/templates/app/docs/development/README.md +64 -0
  54. package/templates/app/docs/development/examples/note/note-detail-page.tsx +106 -0
  55. package/templates/app/docs/development/examples/note/note.ts +67 -0
  56. package/templates/app/docs/development/examples/note/notes-page.tsx +87 -0
  57. package/templates/{blank/docs/ai → app/docs/development/examples}/purchase-example.md +24 -10
  58. package/templates/{blank/docs/ai → app/docs/development/getting-started}/architecture.md +4 -4
  59. package/templates/app/docs/development/getting-started/first-feature.md +66 -0
  60. package/templates/{blank/docs/ai → app/docs/development/getting-started}/workflow.md +13 -12
  61. package/templates/app/docs/development/guides/approvals.md +270 -0
  62. package/templates/app/docs/development/guides/business-collaboration.md +63 -0
  63. package/templates/{blank/docs/ai → app/docs/development/guides}/files.md +5 -1
  64. package/templates/app/docs/{ai → development/guides}/intelligence.md +4 -4
  65. package/templates/{blank/docs/ai → app/docs/development/guides}/recipes.md +31 -11
  66. package/templates/app/docs/{ai → development/guides}/relations.md +2 -2
  67. package/templates/app/docs/{ai → development/guides}/routing.md +1 -1
  68. package/templates/{blank/docs/ai → app/docs/development/guides}/transfers.md +1 -1
  69. package/templates/{blank/docs/ai → app/docs/development/reference}/commenting.md +1 -1
  70. package/templates/app/docs/{ai → development/reference}/primitives.md +8 -62
  71. package/templates/app/docs/{ai → development/reference}/project-structure.md +2 -2
  72. package/templates/app/docs/development/skills/cage-development/SKILL.md +134 -0
  73. package/templates/{blank/docs/ai → app/docs/development/tools}/diagnostics.md +3 -3
  74. package/templates/{blank/docs/ai → app/docs/development/tools}/ontology-context.md +3 -3
  75. package/templates/app/docs/{ai → development/tools}/troubleshooting.md +7 -1
  76. package/templates/app/docs/errors/CAGE-AI-001.md +3 -3
  77. package/templates/app/docs/errors/CAGE-APPR-001.md +13 -10
  78. package/templates/app/docs/errors/CAGE-APPR-002.md +1 -1
  79. package/templates/app/docs/errors/CAGE-APPR-003.md +1 -1
  80. package/templates/app/docs/errors/CAGE-APPR-004.md +1 -1
  81. package/templates/app/docs/errors/CAGE-APPR-005.md +5 -5
  82. package/templates/app/docs/errors/CAGE-APPR-006.md +25 -10
  83. package/templates/app/docs/errors/CAGE-APPR-007.md +9 -7
  84. package/templates/app/docs/errors/CAGE-APPR-010.md +1 -1
  85. package/templates/app/docs/errors/CAGE-AUDIT-001.md +1 -1
  86. package/templates/app/docs/errors/CAGE-AUTH-001.md +1 -1
  87. package/templates/app/docs/errors/CAGE-BIZ-001.md +1 -1
  88. package/templates/app/docs/errors/CAGE-BIZ-002.md +1 -1
  89. package/templates/app/docs/errors/CAGE-BUDGET-001.md +1 -1
  90. package/templates/app/docs/errors/CAGE-BUDGET-002.md +1 -1
  91. package/templates/app/docs/errors/CAGE-BUDGET-003.md +1 -1
  92. package/templates/app/docs/errors/CAGE-CMD-002.md +1 -1
  93. package/templates/app/docs/errors/CAGE-CMD-003.md +1 -1
  94. package/templates/app/docs/errors/CAGE-CONN-001.md +1 -1
  95. package/templates/app/docs/errors/CAGE-CONN-002.md +1 -1
  96. package/templates/app/docs/errors/CAGE-CONN-003.md +1 -1
  97. package/templates/app/docs/errors/CAGE-CONN-004.md +1 -1
  98. package/templates/app/docs/errors/CAGE-CONN-005.md +1 -1
  99. package/templates/app/docs/errors/CAGE-CONN-006.md +1 -1
  100. package/templates/app/docs/errors/CAGE-CONN-007.md +1 -1
  101. package/templates/app/docs/errors/CAGE-CONN-008.md +1 -1
  102. package/templates/app/docs/errors/CAGE-CONN-009.md +1 -1
  103. package/templates/app/docs/errors/CAGE-CONN-010.md +1 -1
  104. package/templates/app/docs/errors/CAGE-CONN-011.md +1 -1
  105. package/templates/app/docs/errors/CAGE-CONN-012.md +1 -1
  106. package/templates/app/docs/errors/CAGE-CONN-013.md +1 -1
  107. package/templates/app/docs/errors/CAGE-CONN-014.md +1 -1
  108. package/templates/app/docs/errors/CAGE-CONN-015.md +1 -1
  109. package/templates/app/docs/errors/CAGE-CREATE-001.md +2 -2
  110. package/templates/app/docs/errors/CAGE-DECL-001.md +1 -1
  111. package/templates/app/docs/errors/CAGE-DECL-002.md +1 -1
  112. package/templates/app/docs/errors/CAGE-DECL-003.md +1 -1
  113. package/templates/app/docs/errors/CAGE-DECL-004.md +1 -1
  114. package/templates/app/docs/errors/CAGE-DEP-001.md +1 -1
  115. package/templates/app/docs/errors/CAGE-DEP-002.md +1 -1
  116. package/templates/app/docs/errors/CAGE-DEP-003.md +1 -1
  117. package/templates/app/docs/errors/CAGE-DEP-004.md +1 -1
  118. package/templates/app/docs/errors/CAGE-DEP-005.md +1 -1
  119. package/templates/app/docs/errors/CAGE-DIAG-001.md +1 -1
  120. package/templates/app/docs/errors/CAGE-DLQ-001.md +1 -1
  121. package/templates/app/docs/errors/CAGE-ENV-001.md +1 -1
  122. package/templates/app/docs/errors/CAGE-ENV-002.md +1 -1
  123. package/templates/app/docs/errors/CAGE-ENV-003.md +1 -1
  124. package/templates/app/docs/errors/CAGE-EVENT-001.md +2 -2
  125. package/templates/app/docs/errors/CAGE-EVENT-002.md +1 -1
  126. package/templates/app/docs/errors/CAGE-FIELD-001.md +1 -1
  127. package/templates/app/docs/errors/CAGE-FIELD-002.md +1 -1
  128. package/templates/app/docs/errors/CAGE-FIELD-003.md +1 -1
  129. package/templates/app/docs/errors/CAGE-FIELD-004.md +1 -1
  130. package/templates/app/docs/errors/CAGE-FILE-001.md +1 -1
  131. package/templates/app/docs/errors/CAGE-GEN-001.md +1 -1
  132. package/templates/app/docs/errors/CAGE-GEN-002.md +1 -1
  133. package/templates/app/docs/errors/CAGE-GEN-003.md +1 -1
  134. package/templates/app/docs/errors/CAGE-GRANT-001.md +1 -1
  135. package/templates/app/docs/errors/CAGE-GRANT-002.md +1 -1
  136. package/templates/app/docs/errors/CAGE-GRANT-003.md +1 -1
  137. package/templates/app/docs/errors/CAGE-IMPACT-001.md +1 -1
  138. package/templates/app/docs/errors/CAGE-IMPACT-002.md +1 -1
  139. package/templates/app/docs/errors/CAGE-INIT-001.md +1 -1
  140. package/templates/app/docs/errors/CAGE-INIT-002.md +1 -1
  141. package/templates/app/docs/errors/CAGE-INIT-003.md +1 -1
  142. package/templates/app/docs/errors/CAGE-INIT-004.md +1 -1
  143. package/templates/app/docs/errors/CAGE-INIT-005.md +1 -1
  144. package/templates/app/docs/errors/CAGE-JOB-001.md +1 -1
  145. package/templates/app/docs/errors/CAGE-JOB-002.md +1 -1
  146. package/templates/app/docs/errors/CAGE-JOB-003.md +1 -1
  147. package/templates/app/docs/errors/CAGE-LINT-001.md +1 -1
  148. package/templates/app/docs/errors/CAGE-MIG-001.md +1 -1
  149. package/templates/app/docs/errors/CAGE-MIG-002.md +1 -1
  150. package/templates/app/docs/errors/CAGE-MIG-005.md +1 -1
  151. package/templates/app/docs/errors/CAGE-NAME-001.md +1 -1
  152. package/templates/app/docs/errors/CAGE-NAME-002.md +1 -1
  153. package/templates/app/docs/errors/CAGE-NAME-003.md +1 -1
  154. package/templates/app/docs/errors/CAGE-NAME-004.md +1 -1
  155. package/templates/app/docs/errors/CAGE-NAME-005.md +1 -1
  156. package/templates/app/docs/errors/CAGE-NAME-006.md +1 -1
  157. package/templates/app/docs/errors/CAGE-ORG-001.md +1 -1
  158. package/templates/app/docs/errors/CAGE-PAIR-002.md +1 -1
  159. package/templates/app/docs/errors/CAGE-QUERY-001.md +1 -1
  160. package/templates/app/docs/errors/CAGE-QUERY-002.md +1 -1
  161. package/templates/app/docs/errors/CAGE-QUERY-003.md +1 -1
  162. package/templates/app/docs/errors/CAGE-REACT-001.md +1 -1
  163. package/templates/app/docs/errors/CAGE-REACT-002.md +1 -1
  164. package/templates/app/docs/errors/CAGE-REACT-003.md +1 -1
  165. package/templates/app/docs/errors/CAGE-READS-001.md +1 -1
  166. package/templates/app/docs/errors/CAGE-REG-001.md +2 -2
  167. package/templates/app/docs/errors/CAGE-REG-002.md +1 -1
  168. package/templates/app/docs/errors/CAGE-REG-003.md +1 -1
  169. package/templates/app/docs/errors/CAGE-REL-001.md +1 -1
  170. package/templates/app/docs/errors/CAGE-ROUTE-001.md +1 -1
  171. package/templates/app/docs/errors/CAGE-SCOPE-001.md +1 -1
  172. package/templates/app/docs/errors/CAGE-SCOPE-002.md +1 -1
  173. package/templates/app/docs/errors/CAGE-SECRET-001.md +1 -1
  174. package/templates/app/docs/errors/CAGE-SECRET-002.md +1 -1
  175. package/templates/app/docs/errors/CAGE-SENS-001.md +1 -1
  176. package/templates/app/docs/errors/CAGE-SQL-001.md +1 -1
  177. package/templates/app/docs/errors/CAGE-SQL-002.md +1 -1
  178. package/templates/app/docs/errors/CAGE-STATE-001.md +1 -1
  179. package/templates/app/docs/errors/CAGE-STATE-002.md +1 -1
  180. package/templates/app/docs/errors/CAGE-STATE-003.md +1 -1
  181. package/templates/app/docs/errors/CAGE-STATE-004.md +1 -1
  182. package/templates/app/docs/errors/CAGE-STATE-005.md +1 -1
  183. package/templates/app/docs/errors/CAGE-STATE-010.md +1 -1
  184. package/templates/app/docs/errors/CAGE-STATE-011.md +1 -1
  185. package/templates/app/docs/errors/CAGE-STRUCT-001.md +4 -4
  186. package/templates/app/docs/errors/CAGE-STRUCT-002.md +3 -3
  187. package/templates/app/docs/errors/CAGE-SYNC-001.md +4 -4
  188. package/templates/app/docs/errors/CAGE-TEST-001.md +1 -1
  189. package/templates/app/docs/errors/CAGE-TEST-002.md +1 -1
  190. package/templates/app/docs/errors/CAGE-TEST-003.md +1 -1
  191. package/templates/app/docs/errors/CAGE-UNSAFE-001.md +1 -1
  192. package/templates/app/docs/errors/CAGE-UPGRADE-001.md +1 -1
  193. package/templates/app/docs/errors/CAGE-WORKER-001.md +1 -1
  194. package/templates/app/docs/errors/CAGE-WORKER-002.md +1 -1
  195. package/templates/app/docs/errors/CAGE-WORKER-003.md +1 -1
  196. package/templates/app/docs/errors/README.md +3 -3
  197. package/templates/app/docs/errors/runtime.md +1 -1
  198. package/templates/app/package.json +3 -3
  199. package/templates/app/packages/contracts/package.json +1 -1
  200. package/templates/app/packages/contracts/src/aggregates/approval-member/index.ts +70 -0
  201. package/templates/app/packages/contracts/src/aggregates/purchase-order/index.ts +10 -2
  202. package/templates/app/packages/contracts/src/index.ts +9 -0
  203. package/templates/app/packages/domain/package.json +5 -5
  204. package/templates/app/packages/domain/src/modules/purchase/approval-members.ts +54 -0
  205. package/templates/app/packages/domain/src/modules/purchase/approvals.ts +19 -8
  206. package/templates/app/packages/domain/src/modules/purchase/index.ts +2 -1
  207. package/templates/app/packages/domain/src/modules/purchase/intelligence.test.ts +169 -7
  208. package/templates/app/packages/domain/src/modules/purchase/purchase-order.ts +56 -5
  209. package/templates/blank/.agents/skills/cage-development/SKILL.md +10 -0
  210. package/templates/blank/AGENTS.md +39 -122
  211. package/templates/blank/CLAUDE.md +6 -0
  212. package/templates/blank/README.md +3 -3
  213. package/templates/blank/apps/api/package.json +1 -1
  214. package/templates/blank/apps/web/package.json +1 -1
  215. package/templates/blank/docs/README.md +11 -0
  216. package/templates/blank/docs/development/README.md +64 -0
  217. package/templates/blank/docs/development/examples/note/note-detail-page.tsx +106 -0
  218. package/templates/blank/docs/development/examples/note/note.ts +67 -0
  219. package/templates/blank/docs/development/examples/note/notes-page.tsx +87 -0
  220. package/templates/{app/docs/ai → blank/docs/development/examples}/purchase-example.md +24 -10
  221. package/templates/{app/docs/ai → blank/docs/development/getting-started}/architecture.md +4 -4
  222. package/templates/blank/docs/development/getting-started/first-feature.md +66 -0
  223. package/templates/{app/docs/ai → blank/docs/development/getting-started}/workflow.md +13 -12
  224. package/templates/blank/docs/development/guides/approvals.md +270 -0
  225. package/templates/blank/docs/development/guides/business-collaboration.md +63 -0
  226. package/templates/{app/docs/ai → blank/docs/development/guides}/files.md +5 -1
  227. package/templates/blank/docs/{ai → development/guides}/intelligence.md +4 -4
  228. package/templates/{app/docs/ai → blank/docs/development/guides}/recipes.md +31 -11
  229. package/templates/blank/docs/{ai → development/guides}/relations.md +2 -2
  230. package/templates/blank/docs/{ai → development/guides}/routing.md +1 -1
  231. package/templates/{app/docs/ai → blank/docs/development/guides}/transfers.md +1 -1
  232. package/templates/{app/docs/ai → blank/docs/development/reference}/commenting.md +1 -1
  233. package/templates/blank/docs/{ai → development/reference}/primitives.md +8 -62
  234. package/templates/blank/docs/{ai → development/reference}/project-structure.md +2 -2
  235. package/templates/blank/docs/development/skills/cage-development/SKILL.md +134 -0
  236. package/templates/{app/docs/ai → blank/docs/development/tools}/diagnostics.md +3 -3
  237. package/templates/{app/docs/ai → blank/docs/development/tools}/ontology-context.md +3 -3
  238. package/templates/blank/docs/{ai → development/tools}/troubleshooting.md +7 -1
  239. package/templates/blank/docs/errors/CAGE-AI-001.md +3 -3
  240. package/templates/blank/docs/errors/CAGE-APPR-001.md +13 -10
  241. package/templates/blank/docs/errors/CAGE-APPR-002.md +1 -1
  242. package/templates/blank/docs/errors/CAGE-APPR-003.md +1 -1
  243. package/templates/blank/docs/errors/CAGE-APPR-004.md +1 -1
  244. package/templates/blank/docs/errors/CAGE-APPR-005.md +5 -5
  245. package/templates/blank/docs/errors/CAGE-APPR-006.md +25 -10
  246. package/templates/blank/docs/errors/CAGE-APPR-007.md +9 -7
  247. package/templates/blank/docs/errors/CAGE-APPR-010.md +1 -1
  248. package/templates/blank/docs/errors/CAGE-AUDIT-001.md +1 -1
  249. package/templates/blank/docs/errors/CAGE-AUTH-001.md +1 -1
  250. package/templates/blank/docs/errors/CAGE-BIZ-001.md +1 -1
  251. package/templates/blank/docs/errors/CAGE-BIZ-002.md +1 -1
  252. package/templates/blank/docs/errors/CAGE-BUDGET-001.md +1 -1
  253. package/templates/blank/docs/errors/CAGE-BUDGET-002.md +1 -1
  254. package/templates/blank/docs/errors/CAGE-BUDGET-003.md +1 -1
  255. package/templates/blank/docs/errors/CAGE-CMD-002.md +1 -1
  256. package/templates/blank/docs/errors/CAGE-CMD-003.md +1 -1
  257. package/templates/blank/docs/errors/CAGE-CONN-001.md +1 -1
  258. package/templates/blank/docs/errors/CAGE-CONN-002.md +1 -1
  259. package/templates/blank/docs/errors/CAGE-CONN-003.md +1 -1
  260. package/templates/blank/docs/errors/CAGE-CONN-004.md +1 -1
  261. package/templates/blank/docs/errors/CAGE-CONN-005.md +1 -1
  262. package/templates/blank/docs/errors/CAGE-CONN-006.md +1 -1
  263. package/templates/blank/docs/errors/CAGE-CONN-007.md +1 -1
  264. package/templates/blank/docs/errors/CAGE-CONN-008.md +1 -1
  265. package/templates/blank/docs/errors/CAGE-CONN-009.md +1 -1
  266. package/templates/blank/docs/errors/CAGE-CONN-010.md +1 -1
  267. package/templates/blank/docs/errors/CAGE-CONN-011.md +1 -1
  268. package/templates/blank/docs/errors/CAGE-CONN-012.md +1 -1
  269. package/templates/blank/docs/errors/CAGE-CONN-013.md +1 -1
  270. package/templates/blank/docs/errors/CAGE-CONN-014.md +1 -1
  271. package/templates/blank/docs/errors/CAGE-CONN-015.md +1 -1
  272. package/templates/blank/docs/errors/CAGE-CREATE-001.md +2 -2
  273. package/templates/blank/docs/errors/CAGE-DECL-001.md +1 -1
  274. package/templates/blank/docs/errors/CAGE-DECL-002.md +1 -1
  275. package/templates/blank/docs/errors/CAGE-DECL-003.md +1 -1
  276. package/templates/blank/docs/errors/CAGE-DECL-004.md +1 -1
  277. package/templates/blank/docs/errors/CAGE-DEP-001.md +1 -1
  278. package/templates/blank/docs/errors/CAGE-DEP-002.md +1 -1
  279. package/templates/blank/docs/errors/CAGE-DEP-003.md +1 -1
  280. package/templates/blank/docs/errors/CAGE-DEP-004.md +1 -1
  281. package/templates/blank/docs/errors/CAGE-DEP-005.md +1 -1
  282. package/templates/blank/docs/errors/CAGE-DIAG-001.md +1 -1
  283. package/templates/blank/docs/errors/CAGE-DLQ-001.md +1 -1
  284. package/templates/blank/docs/errors/CAGE-ENV-001.md +1 -1
  285. package/templates/blank/docs/errors/CAGE-ENV-002.md +1 -1
  286. package/templates/blank/docs/errors/CAGE-ENV-003.md +1 -1
  287. package/templates/blank/docs/errors/CAGE-EVENT-001.md +2 -2
  288. package/templates/blank/docs/errors/CAGE-EVENT-002.md +1 -1
  289. package/templates/blank/docs/errors/CAGE-FIELD-001.md +1 -1
  290. package/templates/blank/docs/errors/CAGE-FIELD-002.md +1 -1
  291. package/templates/blank/docs/errors/CAGE-FIELD-003.md +1 -1
  292. package/templates/blank/docs/errors/CAGE-FIELD-004.md +1 -1
  293. package/templates/blank/docs/errors/CAGE-FILE-001.md +1 -1
  294. package/templates/blank/docs/errors/CAGE-GEN-001.md +1 -1
  295. package/templates/blank/docs/errors/CAGE-GEN-002.md +1 -1
  296. package/templates/blank/docs/errors/CAGE-GEN-003.md +1 -1
  297. package/templates/blank/docs/errors/CAGE-GRANT-001.md +1 -1
  298. package/templates/blank/docs/errors/CAGE-GRANT-002.md +1 -1
  299. package/templates/blank/docs/errors/CAGE-GRANT-003.md +1 -1
  300. package/templates/blank/docs/errors/CAGE-IMPACT-001.md +1 -1
  301. package/templates/blank/docs/errors/CAGE-IMPACT-002.md +1 -1
  302. package/templates/blank/docs/errors/CAGE-INIT-001.md +1 -1
  303. package/templates/blank/docs/errors/CAGE-INIT-002.md +1 -1
  304. package/templates/blank/docs/errors/CAGE-INIT-003.md +1 -1
  305. package/templates/blank/docs/errors/CAGE-INIT-004.md +1 -1
  306. package/templates/blank/docs/errors/CAGE-INIT-005.md +1 -1
  307. package/templates/blank/docs/errors/CAGE-JOB-001.md +1 -1
  308. package/templates/blank/docs/errors/CAGE-JOB-002.md +1 -1
  309. package/templates/blank/docs/errors/CAGE-JOB-003.md +1 -1
  310. package/templates/blank/docs/errors/CAGE-LINT-001.md +1 -1
  311. package/templates/blank/docs/errors/CAGE-MIG-001.md +1 -1
  312. package/templates/blank/docs/errors/CAGE-MIG-002.md +1 -1
  313. package/templates/blank/docs/errors/CAGE-MIG-005.md +1 -1
  314. package/templates/blank/docs/errors/CAGE-NAME-001.md +1 -1
  315. package/templates/blank/docs/errors/CAGE-NAME-002.md +1 -1
  316. package/templates/blank/docs/errors/CAGE-NAME-003.md +1 -1
  317. package/templates/blank/docs/errors/CAGE-NAME-004.md +1 -1
  318. package/templates/blank/docs/errors/CAGE-NAME-005.md +1 -1
  319. package/templates/blank/docs/errors/CAGE-NAME-006.md +1 -1
  320. package/templates/blank/docs/errors/CAGE-ORG-001.md +1 -1
  321. package/templates/blank/docs/errors/CAGE-PAIR-002.md +1 -1
  322. package/templates/blank/docs/errors/CAGE-QUERY-001.md +1 -1
  323. package/templates/blank/docs/errors/CAGE-QUERY-002.md +1 -1
  324. package/templates/blank/docs/errors/CAGE-QUERY-003.md +1 -1
  325. package/templates/blank/docs/errors/CAGE-REACT-001.md +1 -1
  326. package/templates/blank/docs/errors/CAGE-REACT-002.md +1 -1
  327. package/templates/blank/docs/errors/CAGE-REACT-003.md +1 -1
  328. package/templates/blank/docs/errors/CAGE-READS-001.md +1 -1
  329. package/templates/blank/docs/errors/CAGE-REG-001.md +2 -2
  330. package/templates/blank/docs/errors/CAGE-REG-002.md +1 -1
  331. package/templates/blank/docs/errors/CAGE-REG-003.md +1 -1
  332. package/templates/blank/docs/errors/CAGE-REL-001.md +1 -1
  333. package/templates/blank/docs/errors/CAGE-ROUTE-001.md +1 -1
  334. package/templates/blank/docs/errors/CAGE-SCOPE-001.md +1 -1
  335. package/templates/blank/docs/errors/CAGE-SCOPE-002.md +1 -1
  336. package/templates/blank/docs/errors/CAGE-SECRET-001.md +1 -1
  337. package/templates/blank/docs/errors/CAGE-SECRET-002.md +1 -1
  338. package/templates/blank/docs/errors/CAGE-SENS-001.md +1 -1
  339. package/templates/blank/docs/errors/CAGE-SQL-001.md +1 -1
  340. package/templates/blank/docs/errors/CAGE-SQL-002.md +1 -1
  341. package/templates/blank/docs/errors/CAGE-STATE-001.md +1 -1
  342. package/templates/blank/docs/errors/CAGE-STATE-002.md +1 -1
  343. package/templates/blank/docs/errors/CAGE-STATE-003.md +1 -1
  344. package/templates/blank/docs/errors/CAGE-STATE-004.md +1 -1
  345. package/templates/blank/docs/errors/CAGE-STATE-005.md +1 -1
  346. package/templates/blank/docs/errors/CAGE-STATE-010.md +1 -1
  347. package/templates/blank/docs/errors/CAGE-STATE-011.md +1 -1
  348. package/templates/blank/docs/errors/CAGE-STRUCT-001.md +4 -4
  349. package/templates/blank/docs/errors/CAGE-STRUCT-002.md +3 -3
  350. package/templates/blank/docs/errors/CAGE-SYNC-001.md +4 -4
  351. package/templates/blank/docs/errors/CAGE-TEST-001.md +1 -1
  352. package/templates/blank/docs/errors/CAGE-TEST-002.md +1 -1
  353. package/templates/blank/docs/errors/CAGE-TEST-003.md +1 -1
  354. package/templates/blank/docs/errors/CAGE-UNSAFE-001.md +1 -1
  355. package/templates/blank/docs/errors/CAGE-UPGRADE-001.md +1 -1
  356. package/templates/blank/docs/errors/CAGE-WORKER-001.md +1 -1
  357. package/templates/blank/docs/errors/CAGE-WORKER-002.md +1 -1
  358. package/templates/blank/docs/errors/CAGE-WORKER-003.md +1 -1
  359. package/templates/blank/docs/errors/README.md +3 -3
  360. package/templates/blank/docs/errors/runtime.md +1 -1
  361. package/templates/blank/docs/examples/purchase-admin/README.md +1 -1
  362. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/approval/components/task-operation-dialog.tsx +61 -0
  363. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/approval/hooks/use-approval-tasks.ts +6 -9
  364. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/approval/pages/approval-tasks-page.tsx +81 -49
  365. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/approval/pages/approval-tasks.css +18 -0
  366. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/components/approval-history.tsx +39 -4
  367. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/components/order-reviewers.tsx +38 -0
  368. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/components/purchase-order-form.tsx +9 -2
  369. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/pages/purchase-intelligence.css +2 -0
  370. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/pages/purchase-order-detail-page.tsx +2 -0
  371. package/templates/blank/docs/examples/purchase-admin/apps/web/src/modules/purchase/pages/purchase-orders-page.tsx +2 -0
  372. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/lib/error-message.ts +6 -1
  373. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/approval-member-picker.css +10 -0
  374. package/templates/blank/docs/examples/purchase-admin/apps/web/src/shared/ui/approval-member-picker.tsx +51 -0
  375. package/templates/blank/docs/examples/purchase-admin/cage.config.json +14 -0
  376. package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/aggregates/approval-member/index.ts +70 -0
  377. package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/aggregates/purchase-order/index.ts +10 -2
  378. package/templates/blank/docs/examples/purchase-admin/packages/contracts/src/index.ts +9 -0
  379. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/approval-members.ts +54 -0
  380. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/approvals.ts +19 -8
  381. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/index.ts +2 -1
  382. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/intelligence.test.ts +169 -7
  383. package/templates/blank/docs/examples/purchase-admin/packages/domain/src/modules/purchase/purchase-order.ts +56 -5
  384. package/templates/blank/package.json +3 -3
  385. package/templates/blank/packages/contracts/package.json +1 -1
  386. package/templates/blank/packages/domain/package.json +5 -5
  387. package/templates/app/docs/ai/README.md +0 -98
  388. package/templates/blank/docs/ai/README.md +0 -98
@@ -1,6 +1,6 @@
1
- # CAGE-APPR-001:可路由字段不存在
1
+ # CAGE-APPR-001:审批字段声明无效
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -8,11 +8,12 @@
8
8
 
9
9
  阶段:声明、图规则或 worker。
10
10
 
11
- approval.routable 引用了所属聚合没有声明的字段。
11
+ approval.routable 引用了不存在字段,或 approver.field 指向未声明、隐藏、未进入 routable 的字段。
12
12
 
13
13
  ## 修复步骤
14
14
 
15
- 1. 先在聚合声明实际字段,再将需要给审批路由的字段放入 routable;不要把任意输入直接交给流程。
15
+ 1. 先在聚合声明实际字段,再将需要给审批路由的非隐藏字段放入 routable;不要把任意输入直接交给流程。
16
+ 2. 字段选人值应为 UUID 或非空 UUID 数组,见 docs/development/guides/approvals.md;字段公开并不自动授予审批能力。
16
17
 
17
18
  ## 正例
18
19
 
@@ -34,15 +35,17 @@ routable: ['managerName'] // 聚合没有该字段
34
35
 
35
36
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
37
 
37
- - `packages/approval/src/route.ts:159`
38
+ - `packages/approval/src/route.ts:215`
39
+ - `packages/approval/src/route.ts:220`
40
+ - `packages/approval/src/route.ts:229`
38
41
  - `packages/kernel/src/primitives/flow.ts:245`
39
42
 
40
43
  实现片段(位置随框架版本更新):
41
44
 
42
45
  ```ts
43
- for (const field of s.context.fields) if (!binding.agg.fields[field] || binding.agg.fields[field].isHidden)
44
- throw declError('CAGE-APPR-001', `AI 上下文字段 ${field} 不存在或不可公开`);
45
- for (const query of s.context.queries ?? []) if (!registry.queries.some(q => q.name === query))
46
- throw declError('CAGE-REG-001', `AI 步骤引用的查询 ${query} 未导出`);
47
- }
46
+ if (reminders && (!routeBinding?.routable.includes(reminders.requesterField) || !routeBinding.agg.fields[reminders.requesterField] || routeBinding.agg.fields[reminders.requesterField].isHidden))
47
+ throw declError('CAGE-APPR-001', `申请人字段 ${reminders.requesterField} 必须存在、可公开且进入 routable`);
48
+ for (const node of declaredSteps) {
49
+ const selector = node.kind === 'ai' ? node.handoff : node.approver;
50
+ // 新字段选择器必须能从 routable 快照取值;不追溯改变历史部门选人的声明校验行为。
48
51
  ```
@@ -1,6 +1,6 @@
1
1
  # CAGE-APPR-002:审批结论落到其他聚合
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-APPR-003:审批结论未允许流程调用
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-APPR-004:路由没有对应审批绑定
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-APPR-005:流程名称格式错误
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -34,14 +34,14 @@ route('采购审批', nodes)
34
34
 
35
35
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
36
 
37
- - `packages/approval/src/route.ts:126`
37
+ - `packages/approval/src/route.ts:176`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
41
41
  ```ts
42
- export function route(process: string, nodes: RouteNode[]): Route {
42
+ export function route(process: string, nodes: RouteNode[], options: { reminders?: ApprovalReminderPolicy } = {}): Route {
43
43
  if (!/^[a-z][a-z0-9-]*$/.test(process)) throw declError('CAGE-APPR-005', `流程名 ${process} 必须是小写短横线`);
44
44
  if (nodes.length === 0) throw declError('CAGE-APPR-006', `流程 ${process} 至少需要一个步骤`);
45
- const fields = new Set<string>();
46
- for (const n of nodes) {
45
+ const inspection = inspectRoute(nodes);
46
+ const fields = new Set<string>(inspection.fields);
47
47
  ```
@@ -1,6 +1,6 @@
1
- # CAGE-APPR-006:流程没有步骤
1
+ # CAGE-APPR-006:审批步骤配置无效
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -8,11 +8,13 @@
8
8
 
9
9
  阶段:声明、图规则或 worker。
10
10
 
11
- route 接收了空步骤数组。
11
+ route 没有步骤、展开后为空,或人工 actions/assignment、候选池与 all 组合、AI 步骤必填配置或预算不合法。
12
12
 
13
13
  ## 修复步骤
14
14
 
15
15
  1. 声明至少一个实际审批步骤,并检查条件后能否形成预期流程。
16
+ 2. candidate 只支持 any;逐人会签用默认 direct。actions 只接受 transfer/delegate/addSign 布尔值。
17
+ 3. AI 步骤需模型、要求、上下文字段、接管规则及正整数预算,并绑定 AI 运行时、退回命令和自动角色。
16
18
 
17
19
  ## 正例
18
20
 
@@ -35,12 +37,25 @@ route('po-approval', [])
35
37
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
36
38
 
37
39
  - `packages/approval/src/bridge.ts:16`
38
- - `packages/approval/src/engine.ts:70`
39
- - `packages/approval/src/route.ts:66`
40
- - `packages/approval/src/route.ts:68`
41
- - `packages/approval/src/route.ts:127`
42
- - `packages/approval/src/route.ts:154`
43
- - `packages/approval/src/route.ts:156`
40
+ - `packages/approval/src/deadlines.ts:34`
41
+ - `packages/approval/src/deadlines.ts:41`
42
+ - `packages/approval/src/engine.ts:75`
43
+ - `packages/approval/src/execution.ts:40`
44
+ - `packages/approval/src/execution.ts:42`
45
+ - `packages/approval/src/execution.ts:47`
46
+ - `packages/approval/src/execution.ts:49`
47
+ - `packages/approval/src/execution.ts:54`
48
+ - `packages/approval/src/execution.ts:55`
49
+ - `packages/approval/src/execution.ts:88`
50
+ - `packages/approval/src/operations.ts:375`
51
+ - `packages/approval/src/route.ts:109`
52
+ - `packages/approval/src/route.ts:111`
53
+ - `packages/approval/src/route.ts:115`
54
+ - `packages/approval/src/route.ts:117`
55
+ - `packages/approval/src/route.ts:177`
56
+ - `packages/approval/src/route.ts:213`
57
+ - `packages/approval/src/route.ts:224`
58
+ - `packages/approval/src/route.ts:226`
44
59
 
45
60
  实现片段(位置随框架版本更新):
46
61
 
@@ -49,5 +64,5 @@ route('po-approval', [])
49
64
  if (!cmd) throw new Error('[CAGE-APPR-006] 审批未绑定退回修改命令');
50
65
  let ctx: Ctx;
51
66
  if (r.lastApprover) {
52
- const user = await k.contextFor(r.lastApprover, r.tenantId);
67
+ // 待办决定已持有事务连接时复用它;同实例并发排队不能耗尽池后让锁持有者再等新连接。
53
68
  ```
@@ -1,6 +1,6 @@
1
1
  # CAGE-APPR-007:找不到审批人
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -8,14 +8,15 @@
8
8
 
9
9
  阶段:声明、图规则或 worker。
10
10
 
11
- worker 启动或推进审批步骤时,选人器没有找到人。
11
+ worker 启动或推进审批步骤时选人器没有找到人,或字段选人/候选节点中存在非当前租户启用账号。
12
12
 
13
13
  ## 修复步骤
14
14
 
15
15
  1. 先看本项目 approvals.ts:deptLeader 读取单据部门的负责人;role 使用角色 code;user 使用实际用户 UUID。
16
16
  2. 在 /admin 设置单据所属部门的负责人,或创建对应 code 的角色并分配实际用户。给用户经理角色,并不等于设置了部门负责人。
17
- 3. 再核对审批人的结论能力、数据范围、ceiling 额度和职责分离。选中审批人不等于允许完成审批。
18
- 4. 若 OrderSubmitted 已入死信,修复后在 /admin 按 outboxId 重放,确认待办生成;原提交已成功时不重复提交或 SQL 改回草稿。
17
+ 3. field 使用提交时保存的 routable 人员字段;检查 UUID 对应账号是否全部在当前租户且 active。不能删掉不合格人员后默认为审批通过;字段快照错误需按业务撤回/重提修正。
18
+ 4. 再核对审批人的结论能力、数据范围、ceiling 额度和职责分离。选中审批人不等于允许完成审批。
19
+ 5. 若 OrderSubmitted 已入死信,修复后在 /admin 按 outboxId 重放,确认待办生成;原提交已成功时不重复提交或 SQL 改回草稿。
19
20
 
20
21
  ## 正例
21
22
 
@@ -37,7 +38,8 @@ deptLeader('deptId'):给该部门设置负责人;role('finance'):给实际
37
38
 
38
39
  以下路径相对框架源码仓库,不是要求业务项目创建这些文件。当前项目先修业务声明、配置或授权;明确属于框架缺口时反馈错误码和脱敏上下文。
39
40
 
40
- - `packages/approval/src/engine.ts:81`
41
+ - `packages/approval/src/engine.ts:87`
42
+ - `packages/approval/src/engine.ts:94`
41
43
 
42
44
  实现片段(位置随框架版本更新):
43
45
 
@@ -45,6 +47,6 @@ deptLeader('deptId'):给该部门设置负责人;role('finance'):给实际
45
47
  if (who.length === 0) {
46
48
  throw new Error(`[CAGE-APPR-007] 流程 ${this.route.process} 第 ${index + 1} 步「${title}」找不到审批人,请在 /admin 配置部门负责人或角色`);
47
49
  }
48
- for (const assignee of new Set(who)) {
49
- await tx.insertInto('flow.approval_task').values({ instance_id: instanceId, tenant_id: tenantId, step: index, title, assignee }).execute();
50
+ if (selector.kind === 'field' || assignment === 'candidate') {
51
+ // 新字段/候选声明不允许创建指向停用或其他租户账号的票;整批拒绝,不静默减少会签人数。
50
52
  ```
@@ -1,6 +1,6 @@
1
1
  # CAGE-APPR-010:流程专用命令没有调用者
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-AUDIT-001:可靠读取审计失败
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-AUTH-001:OIDC 发现文档获取失败
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-BIZ-001:业务流程声明无效
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-BIZ-002:业务流程与真实声明不一致
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-BUDGET-001:内核超出体积预算
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-BUDGET-002:公共原语超过词汇预算
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-BUDGET-003:新增未经基线认可的 unsafe
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CMD-002:已有记录命令缺少 id
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CMD-003:新建命令没有目标状态
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CONN-001:连接器名称格式错误
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CONN-002:外部操作路径格式错误
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CONN-003:地址白名单包含协议或路径
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CONN-004:只读操作被用作出站写映射
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CONN-005:入站事件名称格式错误
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CONN-006:回调命令未允许 external
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CONN-007:当前环境没有连接器地址
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CONN-008:外部请求发生网络错误或超时
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CONN-009:外部服务返回非成功状态
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CONN-010:外部响应不符合 schema
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CONN-011:出站永久失败进入死信
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CONN-012:外部专用命令没有声明调用者
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CONN-013:出站幂等键无效或请求冲突
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CONN-014:不可重试外部写入结果未知
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CONN-015:连接器超时或限流参数无效
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-CREATE-001:项目创建参数或模板资源有误
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -29,7 +29,7 @@ cage create . 覆盖当前已有业务项目
29
29
 
30
30
  ## 修复后验证
31
31
 
32
- 向一个新目录创建,检查 AGENTS.md、业务源码、docs/ai 和 docs/errors,然后按 README 安装/构建。
32
+ 向一个新目录创建,检查 AGENTS.md、业务源码、docs/development 和 docs/errors,然后按 README 安装/构建。
33
33
 
34
34
  ## 框架内的检查位置
35
35
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-DECL-001:声明不在可抽取的顶层常量
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-DECL-002:声明没有从 domain 入口导出
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-DECL-003:声明不是 export const
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-DECL-004:跨文件导出名冲突
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-DEP-001:领域声明直接依赖 IO
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-DEP-002:适配器绕过命令写库
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-DEP-003:前端依赖服务端实现
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-DEP-004:声明或 handler 直接发请求/动态导入
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-DEP-005:domain 反向依赖生成物
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-DIAG-001:运行诊断输入或连接失败
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-DLQ-001:死信不存在或已经处理
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-ENV-001:缺少数据库连接配置
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-ENV-002:运行配置不满足安全边界
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-ENV-003:服务启动不能隐式初始化组织
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-EVENT-001:事件载荷不满足声明
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6
 
@@ -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:456`
37
+ - `packages/kernel/src/kernel.ts:461`
38
38
 
39
39
  实现片段(位置随框架版本更新):
40
40
 
@@ -1,6 +1,6 @@
1
1
  # CAGE-EVENT-002:事件变更不向后兼容
2
2
 
3
- [返回错误码册](README.md) · [业务排错](../ai/troubleshooting.md)
3
+ [返回错误码册](README.md) · [业务排错](../development/tools/troubleshooting.md)
4
4
 
5
5
  > 本页由框架生成。正反例为局部声明或操作说明,完整写法见业务开发指南及本项目 domain。
6
6