@classytic/arc 2.30.0 → 2.31.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 (239) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +7 -0
  3. package/TRADEMARK.md +22 -0
  4. package/dist/{BaseController-B5DwufbB.mjs → BaseController-De7GqHck.mjs} +16 -17
  5. package/dist/{EventTransport-QmY7A258.d.mts → EventTransport-2uVV34WU.d.mts} +1 -0
  6. package/dist/{EventTransport-C6YA8xY9.mjs → EventTransport-9mlTgqzE.mjs} +1 -0
  7. package/dist/{HookSystem-WkIougo6.mjs → HookSystem-BcmPyq5I.mjs} +2 -1
  8. package/dist/{QueryCache-DOMT_iq7.d.mts → QueryCache-DFA-QrU9.d.mts} +2 -1
  9. package/dist/{ResourceRegistry-y9Hnypus.mjs → ResourceRegistry-qq0mn2s9.mjs} +3 -2
  10. package/dist/{actionPermissions-CAphcmUG.mjs → actionPermissions-BE5NwaQk.mjs} +1 -0
  11. package/dist/audit/index.d.mts +3 -2
  12. package/dist/audit/index.mjs +2 -1
  13. package/dist/auth/audit.d.mts +1 -0
  14. package/dist/auth/audit.mjs +1 -0
  15. package/dist/auth/index.d.mts +5 -4
  16. package/dist/auth/index.mjs +6 -5
  17. package/dist/auth/redis-session.d.mts +2 -1
  18. package/dist/auth/redis-session.mjs +1 -0
  19. package/dist/{applyPermissionResult-Cf6zUCvb.mjs → authorizationDecision-ChvUQGG1.mjs} +19 -10
  20. package/dist/{buildHandler-BYS3Vkfz.mjs → buildHandler-CDrCJzmB.mjs} +4 -3
  21. package/dist/cache/index.d.mts +4 -3
  22. package/dist/cache/index.mjs +4 -3
  23. package/dist/{caching-_NJeDd1_.mjs → caching-BFHA6Scf.mjs} +2 -1
  24. package/dist/cleanup/index.d.mts +4 -3
  25. package/dist/cleanup/index.mjs +9 -13
  26. package/dist/cli/commands/describe.d.mts +2 -1
  27. package/dist/cli/commands/describe.mjs +3 -2
  28. package/dist/cli/commands/docs.d.mts +1 -0
  29. package/dist/cli/commands/docs.mjs +3 -2
  30. package/dist/cli/commands/doctor.d.mts +1 -0
  31. package/dist/cli/commands/doctor.mjs +1 -0
  32. package/dist/cli/commands/generate.d.mts +2 -1
  33. package/dist/cli/commands/generate.mjs +2 -1
  34. package/dist/cli/commands/init.d.mts +2 -1
  35. package/dist/cli/commands/init.mjs +2 -1
  36. package/dist/cli/commands/introspect.d.mts +1 -0
  37. package/dist/cli/commands/introspect.mjs +2 -1
  38. package/dist/cli/index.d.mts +3 -2
  39. package/dist/cli/index.mjs +3 -2
  40. package/dist/{constants-DNre0wRg.mjs → constants-D3Dv4LAV.mjs} +1 -0
  41. package/dist/context/index.d.mts +1 -0
  42. package/dist/context/index.mjs +3 -2
  43. package/dist/core/index.d.mts +3 -2
  44. package/dist/core/index.mjs +7 -6
  45. package/dist/{core-poalJLvp.mjs → core-BGpIxINN.mjs} +3 -2
  46. package/dist/{createActionRouter-BxuywVRB.mjs → createActionRouter-CDXEdasl.mjs} +8 -7
  47. package/dist/{createAggregationRouter-BiY-lGdY.mjs → createAggregationRouter-KrQDzx-k.mjs} +7 -6
  48. package/dist/{createApp-CXrKFciH.mjs → createApp-Df89BEni.mjs} +484 -209
  49. package/dist/{defineAggregation-ufWjUwml.mjs → defineAggregation-DbPPS8RI.mjs} +1 -0
  50. package/dist/{defineResource-CxWqDCAy.mjs → defineResource-Bv6EtN1x.mjs} +63 -38
  51. package/dist/discovery/index.d.mts +1 -0
  52. package/dist/discovery/index.mjs +1 -0
  53. package/dist/docs/index.d.mts +3 -2
  54. package/dist/docs/index.mjs +3 -2
  55. package/dist/{elevation-C9s5hFP_.d.mts → elevation-BXCfVcNG.d.mts} +1 -0
  56. package/dist/{elevation-CIz1GjGm.mjs → elevation-D2l1mh4g.mjs} +4 -3
  57. package/dist/encryption/index.d.mts +2 -1
  58. package/dist/encryption/index.mjs +3 -2
  59. package/dist/{errorHandler-Bq2OeEQL.mjs → errorHandler-C5NeD6bT.mjs} +3 -2
  60. package/dist/{errorHandler-C6yv4ZTW.d.mts → errorHandler-CpYUJmPA.d.mts} +1 -0
  61. package/dist/{errors-DHcHVAgk.d.mts → errors-BGdVwP25.d.mts} +1 -0
  62. package/dist/{errors-DkO8Nk6-.mjs → errors-Cj42AntO.mjs} +1 -0
  63. package/dist/{eventPlugin-D2NNR4py.mjs → eventPlugin-CkffEihm.mjs} +5 -4
  64. package/dist/{eventPlugin-Bg3cP2_u.d.mts → eventPlugin-GF5nnBIq.d.mts} +2 -1
  65. package/dist/events/index.d.mts +4 -3
  66. package/dist/events/index.mjs +16 -4
  67. package/dist/events/transports/redis-stream-entry.d.mts +2 -1
  68. package/dist/events/transports/redis-stream-entry.mjs +1 -0
  69. package/dist/events/transports/redis.d.mts +2 -1
  70. package/dist/events/transports/redis.mjs +1 -0
  71. package/dist/{externalPaths-BE6wFpYv.d.mts → externalPaths-CmGOxOtD.d.mts} +1 -0
  72. package/dist/factory/index.d.mts +9 -5
  73. package/dist/factory/index.mjs +7 -6
  74. package/dist/{fastify-augmentation-0WhPnUH7.d.mts → fastify-augmentation-zh0_AYHa.d.mts} +13 -4
  75. package/dist/{fields-CQ_7KQWw.mjs → fields-CB5Cuzk9.mjs} +1 -0
  76. package/dist/{fields-D3lhgzhD.d.mts → fields-I_EeRWND.d.mts} +1 -0
  77. package/dist/{generate-BnsL9GBm.d.mts → generate-DCGuEbqI.d.mts} +1 -0
  78. package/dist/{generate-D0wZupBg.mjs → generate-EcA6ui4i.mjs} +2 -1
  79. package/dist/{headers-BvlQSDMB.mjs → headers-3zvE0rM3.mjs} +2 -1
  80. package/dist/{health-CB_m4S32.mjs → health-DjZYjM7H.mjs} +1 -0
  81. package/dist/hooks/index.d.mts +2 -1
  82. package/dist/hooks/index.mjs +2 -1
  83. package/dist/idempotency/index.d.mts +3 -2
  84. package/dist/idempotency/index.mjs +4 -3
  85. package/dist/idempotency/redis.d.mts +2 -1
  86. package/dist/idempotency/redis.mjs +1 -0
  87. package/dist/{index-Cx7bro4R.d.mts → index-Bc2ox8_U.d.mts} +5 -4
  88. package/dist/{index-CG4yqMDB.d.mts → index-C-481Zf2.d.mts} +74 -18
  89. package/dist/{index-Ch16aAah.d.mts → index-CEJNZFtX.d.mts} +53 -15
  90. package/dist/index-CFThn1K9.d.mts +224 -0
  91. package/dist/{index-Q5gzEIWY.d.mts → index-CpzxqePp.d.mts} +107 -32
  92. package/dist/index.d.mts +9 -8
  93. package/dist/index.mjs +11 -10
  94. package/dist/{init-tlRSt667.mjs → init-BEiNZBsJ.mjs} +19 -23
  95. package/dist/{init-BPEu8cs-.d.mts → init-Cscs4lab.d.mts} +1 -0
  96. package/dist/integrations/event-gateway.d.mts +3 -2
  97. package/dist/integrations/event-gateway.mjs +2 -1
  98. package/dist/integrations/index.d.mts +4 -3
  99. package/dist/integrations/index.mjs +1 -0
  100. package/dist/integrations/jobs/index.d.mts +2 -1
  101. package/dist/integrations/jobs/index.mjs +108 -32
  102. package/dist/integrations/mcp/index.d.mts +6 -6
  103. package/dist/integrations/mcp/index.mjs +2 -1
  104. package/dist/integrations/mcp/testing.d.mts +3 -2
  105. package/dist/integrations/mcp/testing.mjs +2 -2
  106. package/dist/integrations/streamline.d.mts +1 -0
  107. package/dist/integrations/streamline.mjs +3 -2
  108. package/dist/integrations/webhooks.d.mts +1 -0
  109. package/dist/integrations/webhooks.mjs +1 -0
  110. package/dist/integrations/websocket-pushref-redis.d.mts +2 -1
  111. package/dist/integrations/websocket-pushref-redis.mjs +1 -0
  112. package/dist/integrations/websocket-redis.d.mts +2 -1
  113. package/dist/integrations/websocket-redis.mjs +1 -0
  114. package/dist/integrations/websocket.d.mts +3 -2
  115. package/dist/integrations/websocket.mjs +1 -0
  116. package/dist/{interface-BGZCzOGL.d.mts → interface-BOk3YnTz.d.mts} +1 -0
  117. package/dist/{interface-Uk8ONJv7.d.mts → interface-DEWNOMza.d.mts} +1 -0
  118. package/dist/{interface-n5hpKg1d.mjs → interface-DYzM0q-u.mjs} +1 -0
  119. package/dist/{jsonBody-BlzAoGCe.mjs → jsonBody-BYbLDi5D.mjs} +2 -1
  120. package/dist/{keys-Cd316u_y.mjs → keys-C0_pa1tY.mjs} +1 -0
  121. package/dist/{loadResources-DpU8pfjV.mjs → loadResources-yawi9tAE.mjs} +2 -1
  122. package/dist/{loadResourcesFromEntry-kvGT6EcO.mjs → loadResourcesFromEntry-BAjYZonx.mjs} +2 -1
  123. package/dist/logger/index.d.mts +1 -0
  124. package/dist/logger/index.mjs +1 -0
  125. package/dist/{mcpPlugin-nRzm5g2s.mjs → mcpPlugin-B_es0hiF.mjs} +22 -23
  126. package/dist/{memory-CmnzXE5Z.mjs → memory-DR6wpa9F.mjs} +2 -1
  127. package/dist/{metrics-fdxI5mn_.mjs → metrics-CUdw_wLB.mjs} +2 -1
  128. package/dist/middleware/index.d.mts +2 -1
  129. package/dist/middleware/index.mjs +3 -2
  130. package/dist/migrations/index.d.mts +1 -0
  131. package/dist/migrations/index.mjs +2 -1
  132. package/dist/module-0pFJA6YW.mjs +78 -0
  133. package/dist/{multipartBody-D0eBvkeq.mjs → multipartBody-wOgj_fnj.mjs} +1 -0
  134. package/dist/{openapi-B8Vkbxbn.mjs → openapi-B2L4js1v.mjs} +6 -5
  135. package/dist/permissions/index.d.mts +5 -4
  136. package/dist/permissions/index.mjs +6 -5
  137. package/dist/{permissions-Bfu_8y1U.mjs → permissions-L--QDAir.mjs} +214 -41
  138. package/dist/{pipe-BOLmGIxa.mjs → pipe-DRDNsI2T.mjs} +2 -1
  139. package/dist/pipeline/index.d.mts +2 -1
  140. package/dist/pipeline/index.mjs +2 -1
  141. package/dist/{pipeline-BJnpkY9i.mjs → pipeline-UPQFatit.mjs} +6 -5
  142. package/dist/plugins/index.d.mts +8 -7
  143. package/dist/plugins/index.mjs +16 -15
  144. package/dist/plugins/response-cache.d.mts +1 -0
  145. package/dist/plugins/response-cache.mjs +2 -1
  146. package/dist/plugins/tracing-entry.d.mts +2 -1
  147. package/dist/plugins/tracing-entry.mjs +2 -1
  148. package/dist/{pluralize-BhrgwZb9.mjs → pluralize-O0FZgESl.mjs} +1 -0
  149. package/dist/{preloadResources-DCfa2egz.d.mts → preloadResources-CyoJMSiO.d.mts} +117 -12
  150. package/dist/{preloadResources-DSY5HGpS.mjs → preloadResources-Dz6BjzM6.mjs} +1 -0
  151. package/dist/presets/filesUpload.d.mts +6 -5
  152. package/dist/presets/filesUpload.mjs +9 -11
  153. package/dist/presets/index.d.mts +3 -2
  154. package/dist/presets/index.mjs +2 -1
  155. package/dist/presets/multiTenant.d.mts +2 -1
  156. package/dist/presets/multiTenant.mjs +3 -2
  157. package/dist/presets/search.d.mts +3 -2
  158. package/dist/presets/search.mjs +2 -1
  159. package/dist/{presets-CJOEXLuk.mjs → presets-C4-g4_4P.mjs} +4 -3
  160. package/dist/{projection-UBDgfMwu.mjs → projection-BHw6xlOQ.mjs} +2 -1
  161. package/dist/{pushref-registry-BbcnpNTm.d.mts → pushref-registry-Dov9l4qE.d.mts} +1 -0
  162. package/dist/{queryCachePlugin-DSGuSVLW.mjs → queryCachePlugin-BZr8v46E.mjs} +5 -4
  163. package/dist/{queryCachePlugin-br4otiqF.d.mts → queryCachePlugin-BzqxconG.d.mts} +3 -2
  164. package/dist/{rateLimit-DrED-C4v.mjs → rateLimit-CMPY5Qms.mjs} +7 -3
  165. package/dist/{rateLimitKey-BoWRH3e7.mjs → rateLimitKey-Dn5JNmkj.mjs} +1 -0
  166. package/dist/{realtime-B9nmIY5V.mjs → realtime-C5NoxWFY.mjs} +20 -9
  167. package/dist/{redis-UDtLaNj6.d.mts → redis-CduhKsJi.d.mts} +2 -1
  168. package/dist/{redis-stream-uIaauNpZ.d.mts → redis-stream-qN6A-RFv.d.mts} +2 -1
  169. package/dist/{registerRoute-JkxIEBJq.mjs → registerRoute-CBN84fc7.mjs} +4 -3
  170. package/dist/registry/index.d.mts +3 -2
  171. package/dist/registry/index.mjs +3 -2
  172. package/dist/{registry-BYXUUg21.mjs → registry-4213U4zb.mjs} +2 -1
  173. package/dist/{renewingLease-3cuQH7h8.mjs → renewingLease-Dll8mGgc.mjs} +1 -0
  174. package/dist/{replyHelpers-67tRawQZ.mjs → replyHelpers-DIiZKGUt.mjs} +2 -1
  175. package/dist/{repositoryFilter-Dz8k3S4P.mjs → repositoryFilter-f9eAfq_l.mjs} +1 -0
  176. package/dist/{requestContext-MrlJwECf.mjs → requestContext-2TxXOJ7T.mjs} +1 -0
  177. package/dist/{rolldown-runtime-8H4AJuhK.mjs → rolldown-runtime-CUsjNX9R.mjs} +1 -0
  178. package/dist/{schedules-CjOd2MG9.mjs → schedules-DdtlICTf.mjs} +3 -2
  179. package/dist/{schemaConverter-DJvodiHj.mjs → schemaConverter-D--wdJM-.mjs} +70 -17
  180. package/dist/{schemaIR-Ca7ySNPx.mjs → schemaIR-Bm2enbnh.mjs} +2 -1
  181. package/dist/schemas/index.d.mts +1 -0
  182. package/dist/schemas/index.mjs +1 -0
  183. package/dist/scim/index.d.mts +1 -0
  184. package/dist/scim/index.mjs +2 -1
  185. package/dist/scope/index.d.mts +3 -2
  186. package/dist/scope/index.mjs +5 -4
  187. package/dist/{scope-DfaPntpo.mjs → scope-DHx5Fous.mjs} +4 -3
  188. package/dist/{sessionManager-BHOM3N_0.d.mts → sessionManager-qimlKV0P.d.mts} +1 -0
  189. package/dist/{simpleEqualityMatcher-Cg05HPsn.mjs → simpleEqualityMatcher-DjQJ7FKA.mjs} +1 -0
  190. package/dist/{sse-BQ1w0dfl.mjs → sse-CUTo9y0X.mjs} +5 -4
  191. package/dist/{sseStream-BQ7Qaynp.mjs → sseStream-B_5XcVVd.mjs} +2 -1
  192. package/dist/{storage-DLUZ04kK.d.mts → storage-Cx9Sz3Ou.d.mts} +1 -0
  193. package/dist/{store-helpers-DY6xq4sM.mjs → store-helpers-D1MP_gRG.mjs} +1 -0
  194. package/dist/{streaming-BQcW6_Kq.mjs → streaming-PSZwi8JV.mjs} +1 -0
  195. package/dist/{subscribe-helpers-DfzsivM6.mjs → subscribe-helpers-C0Tb2aUp.mjs} +2 -1
  196. package/dist/sync/changelog.d.mts +1 -0
  197. package/dist/sync/changelog.mjs +1 -0
  198. package/dist/testing/cleanupStoreContract.d.mts +2 -1
  199. package/dist/testing/cleanupStoreContract.mjs +1 -0
  200. package/dist/testing/index.d.mts +139 -12
  201. package/dist/testing/index.mjs +230 -16
  202. package/dist/testing/outboxStoreContract.d.mts +1 -0
  203. package/dist/testing/outboxStoreContract.mjs +1 -0
  204. package/dist/testing/storageContract.d.mts +2 -1
  205. package/dist/testing/storageContract.mjs +1 -0
  206. package/dist/{tracing-CsGKQJGg.d.mts → tracing-Dro5eH6j.d.mts} +1 -0
  207. package/dist/{transactionContext-PNdoyLLm.mjs → transactionContext-dAfBVUrk.mjs} +1 -0
  208. package/dist/{typeGuards-C9KXUly6.mjs → typeGuards-B0ryPo3I.mjs} +1 -0
  209. package/dist/types/index.d.mts +6 -5
  210. package/dist/types/index.mjs +1 -0
  211. package/dist/types/storage.d.mts +2 -1
  212. package/dist/types/storage.mjs +1 -0
  213. package/dist/{types-ChvvVNP8.d.mts → types-B7XeLEgK.d.mts} +34 -2
  214. package/dist/{types-Cc91nXuA.d.mts → types-ByHn9rEO.d.mts} +1 -0
  215. package/dist/{types-C_ZZRcD6.d.mts → types-C4QE8qnm.d.mts} +1 -0
  216. package/dist/{types-D_n8L6VY.d.mts → types-CBgvkp8O.d.mts} +51 -12
  217. package/dist/{types-DjC-KUCz.d.mts → types-ChuShpCP.d.mts} +1 -0
  218. package/dist/{types-Bmmn-fO0.d.mts → types-CwcUQ610.d.mts} +2 -6
  219. package/dist/{types-CSyCxl2V.mjs → types-Cys0ko9Z.mjs} +4 -3
  220. package/dist/usage/index.d.mts +3 -2
  221. package/dist/usage/index.mjs +0 -0
  222. package/dist/{userHelpers-Cg_y3fBz.mjs → userHelpers-ChYJ6CdK.mjs} +1 -0
  223. package/dist/utils/index.d.mts +16 -7
  224. package/dist/utils/index.mjs +10 -9
  225. package/dist/{utils-taUVD4p3.mjs → utils-vL8BrDE2.mjs} +3 -2
  226. package/dist/{validate-Bk44F2yT.mjs → validate-_KbifpHF.mjs} +2 -1
  227. package/dist/{versioning-gKWyryT3.mjs → versioning-CHDTor3P.mjs} +3 -2
  228. package/dist/{versioning-DXgY5BUm.d.mts → versioning-D_rhHfZm.d.mts} +5 -2
  229. package/dist/{websocket-_Pd0CgR0.d.mts → websocket-BOXVggMf.d.mts} +2 -1
  230. package/package.json +547 -539
  231. package/skills/arc/SKILL.md +22 -8
  232. package/skills/arc/references/api-reference.md +4 -0
  233. package/skills/arc/references/auth.md +3 -0
  234. package/skills/arc/references/integrations.md +33 -0
  235. package/skills/arc/references/mcp.md +6 -7
  236. package/skills/arc/references/production.md +24 -25
  237. package/skills/arc-code-review/references/anti-patterns.md +3 -3
  238. package/dist/index-CCzVR-N3.d.mts +0 -107
  239. package/dist/module-_-M7C5ES.mjs +0 -29
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 Classytic
3
+ Copyright (c) 2025 Classytic LLC
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -324,3 +324,10 @@ arc doctor # diagnose env
324
324
  ## License
325
325
 
326
326
  MIT
327
+
328
+
329
+ ## Trademark
330
+
331
+ The code is MIT-licensed. **"Classytic", "arc", and the logos are trademarks of
332
+ Classytic LLC** and are **not** licensed under MIT — see [TRADEMARK.md](TRADEMARK.md).
333
+ Forks must be renamed; the license covers the code, not the brand.
package/TRADEMARK.md ADDED
@@ -0,0 +1,22 @@
1
+ # Trademark Notice
2
+
3
+ The **source code** in this package is licensed under the MIT License (see
4
+ [LICENSE](LICENSE)). Trademarks are **not** part of that license.
5
+
6
+ **"Classytic", "arc", the Classytic and arc logos**, and related names and marks
7
+ are trademarks of **Classytic LLC** (Wyoming, USA). The MIT License covers the
8
+ code only — it grants **no right** to use Classytic LLC's names, logos, or brand.
9
+
10
+ ## You may
11
+ - use, fork, modify, and redistribute the **code** under the MIT License;
12
+ - state truthfully that your product "uses" or "is built on" arc / Classytic
13
+ software, without implying endorsement.
14
+
15
+ ## You may not (without written permission from Classytic LLC)
16
+ - use "Classytic", "arc", or confusingly similar names as the name of your own
17
+ product, package, company, or service;
18
+ - use the Classytic / arc logos or brand styling;
19
+ - imply sponsorship, affiliation, or endorsement by Classytic LLC.
20
+
21
+ Forks or redistributions must be **renamed** so they are not confused with the
22
+ official project. Permission / questions: **trademark@classytic.com**.
@@ -1,14 +1,15 @@
1
- import { h as SYSTEM_FIELDS, o as DEFAULT_TENANT_FIELD } from "./constants-DNre0wRg.mjs";
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
2
+ import { h as SYSTEM_FIELDS, o as DEFAULT_TENANT_FIELD } from "./constants-D3Dv4LAV.mjs";
2
3
  import { arcLog } from "./logger/index.mjs";
3
- import { d as createDomainError, f as createError, i as NotFoundError, p as isArcError, r as ForbiddenError } from "./errors-DkO8Nk6-.mjs";
4
- import { n as getUserRoles, t as getUserId } from "./userHelpers-Cg_y3fBz.mjs";
5
- import { b as isElevated, c as getOrgId, n as PUBLIC_SCOPE, x as isMember } from "./types-CSyCxl2V.mjs";
6
- import { t as simpleEqualityMatcher } from "./simpleEqualityMatcher-Cg05HPsn.mjs";
7
- import { t as toRepositoryFilter } from "./repositoryFilter-Dz8k3S4P.mjs";
8
- import { o as conjoinPolicyFilters } from "./applyPermissionResult-Cf6zUCvb.mjs";
9
- import { i as resolveEffectiveRoles, n as applyFieldWritePermissions } from "./fields-CQ_7KQWw.mjs";
10
- import { g as ArcQueryParser, n as scheduleBackground } from "./utils-taUVD4p3.mjs";
11
- import { t as buildQueryKey } from "./keys-Cd316u_y.mjs";
4
+ import { a as conjoinPolicyFilters } from "./authorizationDecision-ChvUQGG1.mjs";
5
+ import { d as createDomainError, f as createError, i as NotFoundError, p as isArcError, r as ForbiddenError } from "./errors-Cj42AntO.mjs";
6
+ import { n as getUserRoles, t as getUserId } from "./userHelpers-ChYJ6CdK.mjs";
7
+ import { b as isElevated, c as getOrgId, n as PUBLIC_SCOPE, x as isMember } from "./types-Cys0ko9Z.mjs";
8
+ import { t as simpleEqualityMatcher } from "./simpleEqualityMatcher-DjQJ7FKA.mjs";
9
+ import { t as toRepositoryFilter } from "./repositoryFilter-f9eAfq_l.mjs";
10
+ import { i as resolveEffectiveRoles, n as applyFieldWritePermissions } from "./fields-CB5Cuzk9.mjs";
11
+ import { g as ArcQueryParser, n as scheduleBackground } from "./utils-vL8BrDE2.mjs";
12
+ import { t as buildQueryKey } from "./keys-C0_pa1tY.mjs";
12
13
  //#region src/core/AccessControl.ts
13
14
  const log$1 = arcLog("access-control");
14
15
  var AccessControl = class {
@@ -33,13 +34,13 @@ var AccessControl = class {
33
34
  * Combines ID filter with policy/org filters for proper security enforcement
34
35
  */
35
36
  buildIdFilter(id, req) {
36
- const filter = { [this.idField]: id };
37
+ let filter = { [this.idField]: id };
37
38
  const arcContext = this._meta(req);
38
39
  const policyFilters = arcContext?._policyFilters;
39
- if (policyFilters) Object.assign(filter, policyFilters);
40
+ if (policyFilters) filter = conjoinPolicyFilters(filter, policyFilters);
40
41
  const scope = arcContext?._scope;
41
42
  const orgId = scope ? getOrgId(scope) : void 0;
42
- if (this.tenantField && orgId && !policyFilters?.[this.tenantField]) filter[this.tenantField] = orgId;
43
+ if (this.tenantField && orgId) filter = conjoinPolicyFilters(filter, { [this.tenantField]: orgId });
43
44
  return toRepositoryFilter(filter);
44
45
  }
45
46
  /**
@@ -1488,10 +1489,8 @@ function BulkMixin(Base) {
1488
1489
  * Returns the merged filter, or `null` when access must be denied.
1489
1490
  */
1490
1491
  buildBulkFilter(userFilter, req) {
1491
- const filter = { ...userFilter };
1492
1492
  const arcContext = this.meta(req);
1493
- const policyFilters = arcContext?._policyFilters;
1494
- if (policyFilters) Object.assign(filter, policyFilters);
1493
+ let filter = conjoinPolicyFilters(userFilter, arcContext?._policyFilters);
1495
1494
  if (this.tenantField) {
1496
1495
  const scope = arcContext?._scope;
1497
1496
  if (!scope) return filter;
@@ -1499,7 +1498,7 @@ function BulkMixin(Base) {
1499
1498
  if (isElevated(scope)) return filter;
1500
1499
  const orgId = getOrgId(scope);
1501
1500
  if (!orgId) return null;
1502
- filter[this.tenantField] = orgId;
1501
+ filter = conjoinPolicyFilters(filter, { [this.tenantField]: orgId });
1503
1502
  }
1504
1503
  return filter;
1505
1504
  }
@@ -1,3 +1,4 @@
1
+
1
2
  import { DeadLetteredEvent, DomainEvent, DomainEvent as DomainEvent$1, EventHandler, EventHandler as EventHandler$1, EventLogger, EventLogger as EventLogger$1, EventTransport, EventTransport as EventTransport$1, PublishManyResult } from "@classytic/primitives/events";
2
3
  //#region src/events/EventTransport.d.ts
3
4
  interface MemoryEventTransportOptions {
@@ -1,3 +1,4 @@
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
1
2
  import { createEvent, matchEventPattern } from "@classytic/primitives/events";
2
3
  //#region src/events/EventTransport.ts
3
4
  /**
@@ -1,4 +1,5 @@
1
- import { t as buildRequestScopeProjection } from "./projection-UBDgfMwu.mjs";
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
2
+ import { t as buildRequestScopeProjection } from "./projection-BHw6xlOQ.mjs";
2
3
  //#region src/hooks/HookSystem.ts
3
4
  /**
4
5
  * Hook System
@@ -1,4 +1,5 @@
1
- import { r as CacheStore } from "./interface-BGZCzOGL.mjs";
1
+
2
+ import { r as CacheStore } from "./interface-BOk3YnTz.mjs";
2
3
  //#region src/cache/QueryCache.d.ts
3
4
  /** Metadata wrapper stored in CacheStore */
4
5
  interface CacheEnvelope<T = unknown> {
@@ -1,4 +1,5 @@
1
- import "./constants-DNre0wRg.mjs";
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
2
+ import "./constants-D3Dv4LAV.mjs";
2
3
  //#region src/registry/ResourceRegistry.ts
3
4
  /**
4
5
  * Resource Registry
@@ -59,7 +60,7 @@ var ResourceRegistry = class {
59
60
  summary: r.summary,
60
61
  description: r.description,
61
62
  permissions: r.permissions,
62
- raw: r.raw,
63
+ raw: r.rawHandler !== void 0,
63
64
  schema: r.schema
64
65
  })),
65
66
  events: Object.keys(resource.events ?? {}),
@@ -1,3 +1,4 @@
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
1
2
  //#region src/core/actionPermissions.ts
2
3
  /**
3
4
  * Return the effective `PermissionCheck` for a single action, or `undefined`
@@ -1,5 +1,6 @@
1
- import "../index-Q5gzEIWY.mjs";
2
- import { a as UserBase } from "../types-ChvvVNP8.mjs";
1
+
2
+ import "../index-CpzxqePp.mjs";
3
+ import { a as UserBase } from "../types-B7XeLEgK.mjs";
3
4
  import { FastifyPluginAsync } from "fastify";
4
5
  import { RepositoryLike } from "@classytic/repo-core/adapter";
5
6
  //#region src/audit/stores/interface.d.ts
@@ -1,4 +1,5 @@
1
- import { t as transactionContext } from "../transactionContext-PNdoyLLm.mjs";
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
2
+ import { t as transactionContext } from "../transactionContext-dAfBVUrk.mjs";
2
3
  import { and, anyOf, eq, gte, lt, lte } from "@classytic/repo-core/filter";
3
4
  import fp from "fastify-plugin";
4
5
  //#region src/audit/repository-audit-adapter.ts
@@ -1,3 +1,4 @@
1
+
1
2
  import { FastifyInstance } from "fastify";
2
3
  //#region src/auth/audit.d.ts
3
4
  /**
@@ -1,3 +1,4 @@
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
1
2
  //#region src/auth/audit.ts
2
3
  function compileGlobs(patterns) {
3
4
  if (patterns.length === 0) return () => false;
@@ -1,7 +1,8 @@
1
- import { Ht as AuthHelpers, Ut as AuthPluginOptions } from "../index-Q5gzEIWY.mjs";
2
- import { r as PermissionCheck } from "../types-ChvvVNP8.mjs";
3
- import { t as ExternalOpenApiPaths } from "../externalPaths-BE6wFpYv.mjs";
4
- import { a as SessionManagerOptions, c as createSessionManager, i as SessionData, n as MemorySessionStoreOptions, o as SessionManagerResult, r as SessionCookieOptions, s as SessionStore, t as MemorySessionStore } from "../sessionManager-BHOM3N_0.mjs";
1
+
2
+ import { Ut as AuthHelpers, Wt as AuthPluginOptions } from "../index-CpzxqePp.mjs";
3
+ import { r as PermissionCheck } from "../types-B7XeLEgK.mjs";
4
+ import { t as ExternalOpenApiPaths } from "../externalPaths-CmGOxOtD.mjs";
5
+ import { a as SessionManagerOptions, c as createSessionManager, i as SessionData, n as MemorySessionStoreOptions, o as SessionManagerResult, r as SessionCookieOptions, s as SessionStore, t as MemorySessionStore } from "../sessionManager-qimlKV0P.mjs";
5
6
  import { FastifyPluginAsync, FastifyReply as FastifyReply$1, FastifyRequest } from "fastify";
6
7
  //#region src/auth/authPlugin.d.ts
7
8
  declare module "fastify" {
@@ -1,8 +1,9 @@
1
- import { d as createDomainError, l as UnauthorizedError, p as isArcError, t as ArcError } from "../errors-DkO8Nk6-.mjs";
2
- import { n as requireSingleHeaderValue } from "../headers-BvlQSDMB.mjs";
3
- import { n as getUserRoles, r as normalizeRoles } from "../userHelpers-Cg_y3fBz.mjs";
4
- import { o as toJsonSchema } from "../schemaConverter-DJvodiHj.mjs";
5
- import { S as requireOrgRole, T as requireTeamMembership, x as requireOrgMembership } from "../permissions-Bfu_8y1U.mjs";
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
2
+ import { d as createDomainError, l as UnauthorizedError, p as isArcError, t as ArcError } from "../errors-Cj42AntO.mjs";
3
+ import { n as requireSingleHeaderValue } from "../headers-3zvE0rM3.mjs";
4
+ import { n as getUserRoles, r as normalizeRoles } from "../userHelpers-ChYJ6CdK.mjs";
5
+ import { o as toJsonSchema } from "../schemaConverter-D--wdJM-.mjs";
6
+ import { S as requireOrgRole, T as requireTeamMembership, x as requireOrgMembership } from "../permissions-L--QDAir.mjs";
6
7
  import { createHmac, randomUUID, timingSafeEqual } from "node:crypto";
7
8
  import fp from "fastify-plugin";
8
9
  //#region src/auth/authPlugin.ts
@@ -1,4 +1,5 @@
1
- import { i as SessionData, s as SessionStore } from "../sessionManager-BHOM3N_0.mjs";
1
+
2
+ import { i as SessionData, s as SessionStore } from "../sessionManager-qimlKV0P.mjs";
2
3
  //#region src/auth/redis-session.d.ts
3
4
  /** Minimal Redis client interface — compatible with ioredis */
4
5
  interface RedisLike {
@@ -1,3 +1,4 @@
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
1
2
  import sjson from "secure-json-parse";
2
3
  //#region src/auth/redis-session.ts
3
4
  /**
@@ -1,5 +1,6 @@
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
1
2
  import { arcLog } from "./logger/index.mjs";
2
- import { t as ArcError } from "./errors-DkO8Nk6-.mjs";
3
+ import { t as ArcError } from "./errors-Cj42AntO.mjs";
3
4
  //#region src/permissions/filter-merge.ts
4
5
  /**
5
6
  * Policy-filter composition — logical AND, never last-writer-wins.
@@ -93,7 +94,7 @@ function conjoinPolicyFilters(base, incoming) {
93
94
  return result;
94
95
  }
95
96
  //#endregion
96
- //#region src/permissions/applyPermissionResult.ts
97
+ //#region src/permissions/authorizationDecision.ts
97
98
  const log = arcLog("permissions:enforce");
98
99
  /**
99
100
  * Normalize a check return into the canonical {@link AuthorizationDecision}.
@@ -102,7 +103,21 @@ const log = arcLog("permissions:enforce");
102
103
  * pipeline only ever handles decisions.
103
104
  */
104
105
  function normalizeToDecision(result) {
105
- return typeof result === "boolean" ? { effect: result ? "allow" : "deny" } : result;
106
+ if (typeof result === "boolean") return { effect: result ? "allow" : "deny" };
107
+ /**
108
+ * A returned object MUST carry an `effect`. Without this guard a foreign shape — the
109
+ * pre-2.30 `{ granted: true }`, a hand-rolled `{ allowed: true }`, a stray Promise
110
+ * someone forgot to await — passed through as a decision with no effect and was read
111
+ * as DENY. A gate that says yes and is silently overruled is the worst available
112
+ * failure: nine `@classytic/arc-*` test suites went red at once and every symptom
113
+ * pointed at authentication rather than at the return shape.
114
+ *
115
+ * Throwing lands in `failed` (fail-closed, still a denial), so behaviour is unchanged
116
+ * for anything already correct — but the reason now names itself instead of hiding.
117
+ */
118
+ const effect = result?.effect;
119
+ if (result === null || typeof result !== "object" || effect !== "allow" && effect !== "deny") throw new Error(`[arc] a permission check returned an unrecognized shape: ${JSON.stringify(result)}. Return a boolean or an AuthorizationDecision ({ effect: 'allow' | 'deny', ... }). The pre-2.30 { granted } shape is no longer accepted — it normalized to a silent deny.`);
120
+ return result;
106
121
  }
107
122
  /**
108
123
  * Run a permission check once and classify the result. The single source of the
@@ -184,12 +199,6 @@ function applyAuthorizationDecision(decision, request) {
184
199
  }
185
200
  }
186
201
  /**
187
- * @deprecated Renamed to {@link applyAuthorizationDecision} — the contract is an
188
- * `AuthorizationDecision`, not a `PermissionResult`. This alias is kept for
189
- * back-compat and will be removed in a future major.
190
- */
191
- const applyPermissionResult = applyAuthorizationDecision;
192
- /**
193
202
  * Max length of a decision `reason` string before we fall back to the
194
203
  * generic default message. Upstream checks can return arbitrary strings; we
195
204
  * clamp to prevent accidental leakage of internal diagnostics or oversized
@@ -254,4 +263,4 @@ async function evaluateAndApplyPermission(check, context, request, reply, opts)
254
263
  return true;
255
264
  }
256
265
  //#endregion
257
- export { normalizeToDecision as a, evaluatePermissionDecision as i, applyPermissionResult as n, conjoinPolicyFilters as o, evaluateAndApplyPermission as r, applyAuthorizationDecision as t };
266
+ export { conjoinPolicyFilters as a, normalizeToDecision as i, evaluateAndApplyPermission as n, evaluatePermissionDecision as r, applyAuthorizationDecision as t };
@@ -1,6 +1,7 @@
1
- import { t as toRepositoryFilter } from "./repositoryFilter-Dz8k3S4P.mjs";
2
- import { o as conjoinPolicyFilters } from "./applyPermissionResult-Cf6zUCvb.mjs";
3
- import { i as compileAggRequest, t as adapterSupportsAggregate } from "./validate-Bk44F2yT.mjs";
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
2
+ import { a as conjoinPolicyFilters } from "./authorizationDecision-ChvUQGG1.mjs";
3
+ import { t as toRepositoryFilter } from "./repositoryFilter-f9eAfq_l.mjs";
4
+ import { i as compileAggRequest, t as adapterSupportsAggregate } from "./validate-_KbifpHF.mjs";
4
5
  //#region src/core/aggregation/buildHandler.ts
5
6
  /**
6
7
  * Framework-agnostic aggregation execution. Runs safety guards,
@@ -1,6 +1,7 @@
1
- import { n as CacheStats, r as CacheStore, t as CacheLogger } from "../interface-BGZCzOGL.mjs";
2
- import { a as QueryCacheConfig, i as QueryCache, n as CacheResult, r as CacheStatus, t as CacheEnvelope } from "../QueryCache-DOMT_iq7.mjs";
3
- import { i as queryCachePlugin, n as QueryCacheDefaults, r as QueryCachePluginOptions, t as CrossResourceRule } from "../queryCachePlugin-br4otiqF.mjs";
1
+
2
+ import { n as CacheStats, r as CacheStore, t as CacheLogger } from "../interface-BOk3YnTz.mjs";
3
+ import { a as QueryCacheConfig, i as QueryCache, n as CacheResult, r as CacheStatus, t as CacheEnvelope } from "../QueryCache-DFA-QrU9.mjs";
4
+ import { i as queryCachePlugin, n as QueryCacheDefaults, r as QueryCachePluginOptions, t as CrossResourceRule } from "../queryCachePlugin-BzqxconG.mjs";
4
5
  //#region src/cache/keys.d.ts
5
6
  /**
6
7
  * Cache Key Utilities
@@ -1,6 +1,7 @@
1
- import { i as versionKey, n as hashParams, r as tagVersionKey, t as buildQueryKey } from "../keys-Cd316u_y.mjs";
2
- import { t as MemoryCacheStore } from "../memory-CmnzXE5Z.mjs";
3
- import { r as QueryCache, t as queryCachePlugin } from "../queryCachePlugin-DSGuSVLW.mjs";
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
2
+ import { i as versionKey, n as hashParams, r as tagVersionKey, t as buildQueryKey } from "../keys-C0_pa1tY.mjs";
3
+ import { t as MemoryCacheStore } from "../memory-DR6wpa9F.mjs";
4
+ import { r as QueryCache, t as queryCachePlugin } from "../queryCachePlugin-BZr8v46E.mjs";
4
5
  //#region src/cache/redis.ts
5
6
  /**
6
7
  * Redis-backed cache store.
@@ -1,4 +1,5 @@
1
- import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
2
+ import { t as __exportAll } from "./rolldown-runtime-CUsjNX9R.mjs";
2
3
  import fp from "fastify-plugin";
3
4
  //#region src/plugins/caching.ts
4
5
  var caching_exports = /* @__PURE__ */ __exportAll({
@@ -1,6 +1,7 @@
1
- import { L as RequestWithExtras } from "../index-Q5gzEIWY.mjs";
2
- import { A as CleanupWriteFence, C as CleanupResult, D as CleanupRunStore, E as CleanupRunStatus, F as PurgeStrategyKind, I as PurgeVerificationSummary, L as VerificationCheck, M as PurgeActor, N as PurgeEvidence, O as CleanupRunTransitionPatch, P as PurgeResourceResult, R as VerificationResult, S as CleanupRecipe, T as CleanupRunCreateResult, _ as CleanupPermissions, a as CleanupEvidenceStore, b as CleanupPlanItem, c as CleanupInput, d as CleanupLease, f as CleanupLimits, g as CleanupPermissionCheck, h as CleanupOutcomeStatus, i as CleanupContext, j as DEFAULT_CLEANUP_LIMITS, k as CleanupStepResult, l as CleanupJob, m as CleanupManifest, n as CLEANUP_TERMINAL_STATUSES, o as CleanupExecutionContext, p as CleanupLogger, r as CleanupCancelRequest, s as CleanupFinalizationPayload, t as Availability, u as CleanupJobQueue, v as CleanupPlan, w as CleanupRun, x as CleanupProgressSummary, y as CleanupPlanDraft } from "../types-C_ZZRcD6.mjs";
3
- import { t as ArcModule } from "../types-D_n8L6VY.mjs";
1
+
2
+ import { L as RequestWithExtras } from "../index-CpzxqePp.mjs";
3
+ import { A as CleanupWriteFence, C as CleanupResult, D as CleanupRunStore, E as CleanupRunStatus, F as PurgeStrategyKind, I as PurgeVerificationSummary, L as VerificationCheck, M as PurgeActor, N as PurgeEvidence, O as CleanupRunTransitionPatch, P as PurgeResourceResult, R as VerificationResult, S as CleanupRecipe, T as CleanupRunCreateResult, _ as CleanupPermissions, a as CleanupEvidenceStore, b as CleanupPlanItem, c as CleanupInput, d as CleanupLease, f as CleanupLimits, g as CleanupPermissionCheck, h as CleanupOutcomeStatus, i as CleanupContext, j as DEFAULT_CLEANUP_LIMITS, k as CleanupStepResult, l as CleanupJob, m as CleanupManifest, n as CLEANUP_TERMINAL_STATUSES, o as CleanupExecutionContext, p as CleanupLogger, r as CleanupCancelRequest, s as CleanupFinalizationPayload, t as Availability, u as CleanupJobQueue, v as CleanupPlan, w as CleanupRun, x as CleanupProgressSummary, y as CleanupPlanDraft } from "../types-C4QE8qnm.mjs";
4
+ import { t as ArcModule } from "../types-CBgvkp8O.mjs";
4
5
  import { PurgeStrategyKind as PurgeStrategyKind$1 } from "@classytic/primitives/retention";
5
6
  import { canonicalJson } from "@classytic/primitives/canonical";
6
7
  import { CleanupStep } from "@classytic/repo-core/cleanup";
@@ -1,6 +1,7 @@
1
- import { g as getUserId } from "../types-CSyCxl2V.mjs";
2
- import { t as defineResource } from "../defineResource-CxWqDCAy.mjs";
3
- import { t as defineModule } from "../module-_-M7C5ES.mjs";
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
2
+ import { g as getUserId } from "../types-Cys0ko9Z.mjs";
3
+ import { t as defineResource } from "../defineResource-Bv6EtN1x.mjs";
4
+ import { t as defineModule } from "../module-0pFJA6YW.mjs";
4
5
  import { createPurgeEvidence } from "@classytic/primitives/retention";
5
6
  import { canonicalJson, sha256Hex } from "@classytic/primitives/canonical";
6
7
  //#region src/cleanup/errors.ts
@@ -1175,8 +1176,7 @@ function createDataCleanupModule(deps) {
1175
1176
  path: "/recipes",
1176
1177
  summary: "List available cleanup recipes",
1177
1178
  permissions: view,
1178
- raw: true,
1179
- handler: async (_req, reply) => {
1179
+ rawHandler: async (_req, reply) => {
1180
1180
  return reply.send({ recipes: registry.introspect() });
1181
1181
  }
1182
1182
  },
@@ -1185,9 +1185,8 @@ function createDataCleanupModule(deps) {
1185
1185
  path: "/preview",
1186
1186
  summary: "Preview a cleanup plan (no mutation)",
1187
1187
  permissions: view,
1188
- raw: true,
1189
1188
  schema: { body: previewBodySchema },
1190
- handler: async (req, reply) => {
1189
+ rawHandler: async (req, reply) => {
1191
1190
  const r = req;
1192
1191
  const body = req.body;
1193
1192
  const plan = await service.preview({
@@ -1204,9 +1203,8 @@ function createDataCleanupModule(deps) {
1204
1203
  path: "/runs",
1205
1204
  summary: "Execute a confirmed cleanup plan",
1206
1205
  permissions: execute,
1207
- raw: true,
1208
1206
  schema: { body: runsBodySchema },
1209
- handler: async (req, reply) => {
1207
+ rawHandler: async (req, reply) => {
1210
1208
  const r = req;
1211
1209
  const body = req.body;
1212
1210
  const run = await service.execute({
@@ -1226,9 +1224,8 @@ function createDataCleanupModule(deps) {
1226
1224
  path: "/runs/:id",
1227
1225
  summary: "Observe a cleanup run",
1228
1226
  permissions: view,
1229
- raw: true,
1230
1227
  schema: { params: runIdParamsSchema },
1231
- handler: async (req, reply) => {
1228
+ rawHandler: async (req, reply) => {
1232
1229
  const { id } = req.params;
1233
1230
  return reply.send(await service.getRun(id));
1234
1231
  }
@@ -1238,12 +1235,11 @@ function createDataCleanupModule(deps) {
1238
1235
  path: "/runs/:id/action",
1239
1236
  summary: "Cancel or retry a cleanup run",
1240
1237
  permissions: manage,
1241
- raw: true,
1242
1238
  schema: {
1243
1239
  params: runIdParamsSchema,
1244
1240
  body: actionBodySchema
1245
1241
  },
1246
- handler: async (req, reply) => {
1242
+ rawHandler: async (req, reply) => {
1247
1243
  const actionActor = resolveActor(req);
1248
1244
  const { id } = req.params;
1249
1245
  const { action, reason } = req.body;
@@ -1,4 +1,5 @@
1
- import { Nt as RateLimitConfig, V as ResourceDefinition, et as RouteSchemaOptions } from "../../index-Q5gzEIWY.mjs";
1
+
2
+ import { Nt as RateLimitConfig, V as ResourceDefinition, et as RouteSchemaOptions } from "../../index-CpzxqePp.mjs";
2
3
  //#region src/cli/commands/describe.d.ts
3
4
  interface DescribedResource {
4
5
  name: string;
@@ -1,5 +1,6 @@
1
- import { t as CRUD_OPERATIONS } from "../../constants-DNre0wRg.mjs";
2
- import { n as stringifyMeasureMap } from "../../ResourceRegistry-y9Hnypus.mjs";
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
2
+ import { t as CRUD_OPERATIONS } from "../../constants-D3Dv4LAV.mjs";
3
+ import { n as stringifyMeasureMap } from "../../ResourceRegistry-qq0mn2s9.mjs";
3
4
  import { resolve } from "node:path";
4
5
  import { pathToFileURL } from "node:url";
5
6
  //#region src/cli/commands/describe.ts
@@ -1,3 +1,4 @@
1
+
1
2
  //#region src/cli/commands/docs.d.ts
2
3
  /**
3
4
  * Arc CLI - Docs Command
@@ -1,5 +1,6 @@
1
- import { t as buildOpenApiSpec } from "../../openapi-B8Vkbxbn.mjs";
2
- import { t as loadResourcesFromEntry } from "../../loadResourcesFromEntry-kvGT6EcO.mjs";
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
2
+ import { t as buildOpenApiSpec } from "../../openapi-B2L4js1v.mjs";
3
+ import { t as loadResourcesFromEntry } from "../../loadResourcesFromEntry-BAjYZonx.mjs";
3
4
  import { dirname, resolve } from "node:path";
4
5
  import { mkdirSync, writeFileSync } from "node:fs";
5
6
  //#region src/cli/commands/docs.ts
@@ -1,3 +1,4 @@
1
+
1
2
  //#region src/cli/commands/doctor.d.ts
2
3
  /**
3
4
  * Arc CLI - Doctor Command
@@ -1,3 +1,4 @@
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
1
2
  import { dirname, join, parse, resolve } from "node:path";
2
3
  import { existsSync, readFileSync } from "node:fs";
3
4
  //#region src/cli/commands/doctor.ts
@@ -1,2 +1,3 @@
1
- import { n as generate, t as ArcProjectConfig } from "../../generate-BnsL9GBm.mjs";
1
+
2
+ import { n as generate, t as ArcProjectConfig } from "../../generate-DCGuEbqI.mjs";
2
3
  export { type ArcProjectConfig, generate };
@@ -1,2 +1,3 @@
1
- import { t as generate } from "../../generate-D0wZupBg.mjs";
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
2
+ import { t as generate } from "../../generate-EcA6ui4i.mjs";
2
3
  export { generate };
@@ -1,2 +1,3 @@
1
- import { a as ProjectConfig, i as PackageManager, n as DependencyManifest, r as InitOptions, t as init } from "../../init-BPEu8cs-.mjs";
1
+
2
+ import { a as ProjectConfig, i as PackageManager, n as DependencyManifest, r as InitOptions, t as init } from "../../init-Cscs4lab.mjs";
2
3
  export { type DependencyManifest, type InitOptions, type PackageManager, type ProjectConfig, init };
@@ -1,2 +1,3 @@
1
- import { t as init } from "../../init-tlRSt667.mjs";
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
2
+ import { t as init } from "../../init-BEiNZBsJ.mjs";
2
3
  export { init };
@@ -1,3 +1,4 @@
1
+
1
2
  //#region src/cli/commands/introspect.d.ts
2
3
  /**
3
4
  * Arc CLI - Introspect Command
@@ -1,4 +1,5 @@
1
- import { t as loadResourcesFromEntry } from "../../loadResourcesFromEntry-kvGT6EcO.mjs";
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
2
+ import { t as loadResourcesFromEntry } from "../../loadResourcesFromEntry-BAjYZonx.mjs";
2
3
  //#region src/cli/commands/introspect.ts
3
4
  function describePermission(value) {
4
5
  if (!value) return "none";
@@ -1,7 +1,8 @@
1
+
1
2
  import { describe } from "./commands/describe.mjs";
2
3
  import { exportDocs } from "./commands/docs.mjs";
3
4
  import { doctor } from "./commands/doctor.mjs";
4
- import { n as generate } from "../generate-BnsL9GBm.mjs";
5
- import { t as init } from "../init-BPEu8cs-.mjs";
5
+ import { n as generate } from "../generate-DCGuEbqI.mjs";
6
+ import { t as init } from "../init-Cscs4lab.mjs";
6
7
  import { introspect } from "./commands/introspect.mjs";
7
8
  export { describe, doctor, exportDocs, generate, init, introspect };
@@ -1,7 +1,8 @@
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
1
2
  import { describe } from "./commands/describe.mjs";
2
3
  import { exportDocs } from "./commands/docs.mjs";
3
4
  import { doctor } from "./commands/doctor.mjs";
4
- import { t as generate } from "../generate-D0wZupBg.mjs";
5
- import { t as init } from "../init-tlRSt667.mjs";
5
+ import { t as generate } from "../generate-EcA6ui4i.mjs";
6
+ import { t as init } from "../init-BEiNZBsJ.mjs";
6
7
  import { introspect } from "./commands/introspect.mjs";
7
8
  export { describe, doctor, exportDocs, generate, init, introspect };
@@ -1,3 +1,4 @@
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
1
2
  //#region src/constants.ts
2
3
  /**
3
4
  * Arc Framework Constants — Single Source of Truth
@@ -1,3 +1,4 @@
1
+
1
2
  import { AsyncLocalStorage } from "node:async_hooks";
2
3
  //#region src/context/requestContext.d.ts
3
4
  /**
@@ -1,3 +1,4 @@
1
- import { n as requestContext, t as getTraceHeaders } from "../requestContext-MrlJwECf.mjs";
2
- import { t as transactionContext } from "../transactionContext-PNdoyLLm.mjs";
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
2
+ import { n as requestContext, t as getTraceHeaders } from "../requestContext-2TxXOJ7T.mjs";
3
+ import { t as transactionContext } from "../transactionContext-dAfBVUrk.mjs";
3
4
  export { getTraceHeaders, requestContext, transactionContext };
@@ -1,3 +1,4 @@
1
- import { $t as SlugExt, An as ControllerConfigurableOptions, B as defineResource, Jt as BaseController, Mn as ListResult, Nn as BodySanitizer, Pn as BodySanitizerConfig, Qt as TreeMixin, V as ResourceDefinition, Xt as SoftDeleteMixin, Yt as SoftDeleteExt, Zt as TreeExt, an as QueryResolverConfig, ct as AggMeasureShorthand, dt as AggregationDateRangeRequirement, en as SlugMixin, ft as AggregationIndexHint, gt as AggregationsMap, ht as AggregationRateLimit, in as QueryResolver, jn as ControllerConstructionOptions, kn as BaseControllerOptions, lt as AggregationCacheConfig, mt as AggregationMaterializedResult, nn as BulkMixin, on as AccessControl, pt as AggregationMaterializedContext, rn as BaseCrudController, sn as AccessControlConfig, st as AggMeasureInput, tn as BulkExt, ut as AggregationConfig } from "../index-Q5gzEIWY.mjs";
2
- import { A as DEFAULT_ID_FIELD, B as MAX_FILTER_DEPTH, C as DefineActionConfig, D as defineAggregation, E as createPermissionMiddleware, F as DEFAULT_UPDATE_METHOD, G as RESERVED_QUERY_PARAMS, H as MAX_SEARCH_LENGTH, I as HOOK_OPERATIONS, K as SYSTEM_FIELDS, L as HOOK_PHASES, M as DEFAULT_MAX_LIMIT, N as DEFAULT_SORT, O as CRUD_OPERATIONS, P as DEFAULT_TENANT_FIELD, R as HookOperation, S as mergeResourceConfig, T as createCrudRouter, U as MUTATION_OPERATIONS, V as MAX_REGEX_LENGTH, W as MutationOperation, _ as getEntityQuery, a as formatValidationErrors, b as ResourceSeams, c as isFieldReadable, d as createRequestContext, f as getControllerContext, g as getEntityIdField, h as getEntityId, i as assertValidConfig, j as DEFAULT_LIMIT, k as CrudOperation, l as createCrudHandlers, m as sendControllerResponse, n as ValidateOptions, o as validateResourceConfig, p as getControllerScope, r as ValidationResult, s as collectReadBlockedFields, t as ConfigError, u as createFastifyHandler, v as defineResourceVariants, w as defineAction, x as SeamedResourceConfig, y as AdapterLike, z as HookPhase } from "../index-Cx7bro4R.mjs";
1
+
2
+ import { $t as TreeMixin, An as BaseControllerOptions, B as defineResource, Fn as BodySanitizerConfig, Mn as ControllerConstructionOptions, Nn as ListResult, Pn as BodySanitizer, Qt as TreeExt, V as ResourceDefinition, Xt as SoftDeleteExt, Yt as BaseController, Zt as SoftDeleteMixin, an as QueryResolver, cn as AccessControlConfig, ct as AggMeasureShorthand, dt as AggregationDateRangeRequirement, en as SlugExt, ft as AggregationIndexHint, gt as AggregationsMap, ht as AggregationRateLimit, in as BaseCrudController, jn as ControllerConfigurableOptions, lt as AggregationCacheConfig, mt as AggregationMaterializedResult, nn as BulkExt, on as QueryResolverConfig, pt as AggregationMaterializedContext, rn as BulkMixin, sn as AccessControl, st as AggMeasureInput, tn as SlugMixin, ut as AggregationConfig } from "../index-CpzxqePp.mjs";
3
+ import { A as DEFAULT_ID_FIELD, B as MAX_FILTER_DEPTH, C as DefineActionConfig, D as defineAggregation, E as createPermissionMiddleware, F as DEFAULT_UPDATE_METHOD, G as RESERVED_QUERY_PARAMS, H as MAX_SEARCH_LENGTH, I as HOOK_OPERATIONS, K as SYSTEM_FIELDS, L as HOOK_PHASES, M as DEFAULT_MAX_LIMIT, N as DEFAULT_SORT, O as CRUD_OPERATIONS, P as DEFAULT_TENANT_FIELD, R as HookOperation, S as mergeResourceConfig, T as createCrudRouter, U as MUTATION_OPERATIONS, V as MAX_REGEX_LENGTH, W as MutationOperation, _ as getEntityQuery, a as formatValidationErrors, b as ResourceSeams, c as isFieldReadable, d as createRequestContext, f as getControllerContext, g as getEntityIdField, h as getEntityId, i as assertValidConfig, j as DEFAULT_LIMIT, k as CrudOperation, l as createCrudHandlers, m as sendControllerResponse, n as ValidateOptions, o as validateResourceConfig, p as getControllerScope, r as ValidationResult, s as collectReadBlockedFields, t as ConfigError, u as createFastifyHandler, v as defineResourceVariants, w as defineAction, x as SeamedResourceConfig, y as AdapterLike, z as HookPhase } from "../index-Bc2ox8_U.mjs";
3
4
  export { AccessControl, type AccessControlConfig, type AdapterLike, type AggMeasureInput, type AggMeasureShorthand, type AggregationCacheConfig, type AggregationConfig, type AggregationDateRangeRequirement, type AggregationIndexHint, type AggregationMaterializedContext, type AggregationMaterializedResult, type AggregationRateLimit, type AggregationsMap, BaseController, type BaseControllerOptions, BaseCrudController, BodySanitizer, type BodySanitizerConfig, type BulkExt, BulkMixin, CRUD_OPERATIONS, type ConfigError, type ControllerConfigurableOptions, type ControllerConstructionOptions, CrudOperation, DEFAULT_ID_FIELD, DEFAULT_LIMIT, DEFAULT_MAX_LIMIT, DEFAULT_SORT, DEFAULT_TENANT_FIELD, DEFAULT_UPDATE_METHOD, type DefineActionConfig, HOOK_OPERATIONS, HOOK_PHASES, HookOperation, HookPhase, type ListResult, MAX_FILTER_DEPTH, MAX_REGEX_LENGTH, MAX_SEARCH_LENGTH, MUTATION_OPERATIONS, MutationOperation, QueryResolver, type QueryResolverConfig, RESERVED_QUERY_PARAMS, ResourceDefinition, type ResourceSeams, SYSTEM_FIELDS, type SeamedResourceConfig, type SlugExt, SlugMixin, type SoftDeleteExt, SoftDeleteMixin, type TreeExt, TreeMixin, type ValidateOptions, type ValidationResult, assertValidConfig, collectReadBlockedFields, createCrudHandlers, createCrudRouter, createFastifyHandler, createPermissionMiddleware, createRequestContext, defineAction, defineAggregation, defineResource, defineResourceVariants, formatValidationErrors, getControllerContext, getControllerScope, getEntityId, getEntityIdField, getEntityQuery, isFieldReadable, mergeResourceConfig, sendControllerResponse, validateResourceConfig };
@@ -1,7 +1,8 @@
1
- import { a as DEFAULT_SORT, c as HOOK_OPERATIONS, d as MAX_REGEX_LENGTH, f as MAX_SEARCH_LENGTH, h as SYSTEM_FIELDS, i as DEFAULT_MAX_LIMIT, l as HOOK_PHASES, m as RESERVED_QUERY_PARAMS, n as DEFAULT_ID_FIELD, o as DEFAULT_TENANT_FIELD, p as MUTATION_OPERATIONS, r as DEFAULT_LIMIT, s as DEFAULT_UPDATE_METHOD, t as CRUD_OPERATIONS, u as MAX_FILTER_DEPTH } from "../constants-DNre0wRg.mjs";
2
- import { a as BulkMixin, c as collectReadBlockedFields, f as AccessControl, i as SlugMixin, l as isFieldReadable, n as TreeMixin, o as BaseCrudController, r as SoftDeleteMixin, s as QueryResolver, t as BaseController, u as BodySanitizer } from "../BaseController-B5DwufbB.mjs";
3
- import { a as ResourceDefinition, i as validateResourceConfig, n as assertValidConfig, o as createCrudRouter, r as formatValidationErrors, s as createPermissionMiddleware, t as defineResource } from "../defineResource-CxWqDCAy.mjs";
4
- import { a as createFastifyHandler, c as getControllerScope, i as createCrudHandlers, l as sendControllerResponse, o as createRequestContext, s as getControllerContext } from "../pipeline-BJnpkY9i.mjs";
5
- import { t as defineAggregation } from "../defineAggregation-ufWjUwml.mjs";
6
- import { a as mergeResourceConfig, i as defineResourceVariants, n as getEntityIdField, o as defineAction, r as getEntityQuery, t as getEntityId } from "../core-poalJLvp.mjs";
1
+ /*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
2
+ import { a as DEFAULT_SORT, c as HOOK_OPERATIONS, d as MAX_REGEX_LENGTH, f as MAX_SEARCH_LENGTH, h as SYSTEM_FIELDS, i as DEFAULT_MAX_LIMIT, l as HOOK_PHASES, m as RESERVED_QUERY_PARAMS, n as DEFAULT_ID_FIELD, o as DEFAULT_TENANT_FIELD, p as MUTATION_OPERATIONS, r as DEFAULT_LIMIT, s as DEFAULT_UPDATE_METHOD, t as CRUD_OPERATIONS, u as MAX_FILTER_DEPTH } from "../constants-D3Dv4LAV.mjs";
3
+ import { a as BulkMixin, c as collectReadBlockedFields, f as AccessControl, i as SlugMixin, l as isFieldReadable, n as TreeMixin, o as BaseCrudController, r as SoftDeleteMixin, s as QueryResolver, t as BaseController, u as BodySanitizer } from "../BaseController-De7GqHck.mjs";
4
+ import { a as ResourceDefinition, i as validateResourceConfig, n as assertValidConfig, o as createCrudRouter, r as formatValidationErrors, s as createPermissionMiddleware, t as defineResource } from "../defineResource-Bv6EtN1x.mjs";
5
+ import { a as createFastifyHandler, c as getControllerScope, i as createCrudHandlers, l as sendControllerResponse, o as createRequestContext, s as getControllerContext } from "../pipeline-UPQFatit.mjs";
6
+ import { t as defineAggregation } from "../defineAggregation-DbPPS8RI.mjs";
7
+ import { a as mergeResourceConfig, i as defineResourceVariants, n as getEntityIdField, o as defineAction, r as getEntityQuery, t as getEntityId } from "../core-BGpIxINN.mjs";
7
8
  export { AccessControl, BaseController, BaseCrudController, BodySanitizer, BulkMixin, CRUD_OPERATIONS, DEFAULT_ID_FIELD, DEFAULT_LIMIT, DEFAULT_MAX_LIMIT, DEFAULT_SORT, DEFAULT_TENANT_FIELD, DEFAULT_UPDATE_METHOD, HOOK_OPERATIONS, HOOK_PHASES, MAX_FILTER_DEPTH, MAX_REGEX_LENGTH, MAX_SEARCH_LENGTH, MUTATION_OPERATIONS, QueryResolver, RESERVED_QUERY_PARAMS, ResourceDefinition, SYSTEM_FIELDS, SlugMixin, SoftDeleteMixin, TreeMixin, assertValidConfig, collectReadBlockedFields, createCrudHandlers, createCrudRouter, createFastifyHandler, createPermissionMiddleware, createRequestContext, defineAction, defineAggregation, defineResource, defineResourceVariants, formatValidationErrors, getControllerContext, getControllerScope, getEntityId, getEntityIdField, getEntityQuery, isFieldReadable, mergeResourceConfig, sendControllerResponse, validateResourceConfig };