permdock 0.3.1 → 0.5.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 (552) hide show
  1. package/README.md +37 -35
  2. package/dist/{openapi-schema--ARjyfQr.js → 2020-C9VN-x8c.js} +5 -132
  3. package/dist/a2a/index.d.ts +8 -6
  4. package/dist/a2a/index.js +21 -31
  5. package/dist/{adapter-context-mlWsVGGg.js → adapter-context-CRhqyzCk.js} +1 -1
  6. package/dist/adoption-scan-B4R5fnMU.js +107 -0
  7. package/dist/agent/index.d.ts +3 -0
  8. package/dist/agent/index.js +1 -0
  9. package/dist/ai-sdk/index.d.ts +18 -23
  10. package/dist/ai-sdk/index.js +38 -21
  11. package/dist/app-data-MuyzVqX8.js +60 -0
  12. package/dist/approval-header-CJACtHkv.js +23 -0
  13. package/dist/approval-prompt-Dg5LeAcT.js +62 -0
  14. package/dist/approval-prompt-Djo_PyZc.d.ts +57 -0
  15. package/dist/approvals/index.d.ts +5 -3
  16. package/dist/approvals/index.js +8 -5
  17. package/dist/approvals-DJ6Yd5z1.js +995 -0
  18. package/dist/{approvers-DT4AVyIg.js → approvers-CqPOLD-o.js} +1 -1
  19. package/dist/arazzo-B6lebmiQ.js +36 -0
  20. package/dist/{arazzo-BAgw9ap6.js → arazzo-BWhNF-k0.js} +24 -17
  21. package/dist/args-IIolxxKA.js +197 -0
  22. package/dist/astro/index.d.ts +43 -0
  23. package/dist/astro/index.js +27 -0
  24. package/dist/audience-Dg8XsRaO.js +55 -0
  25. package/dist/auth-DRLEizbL.js +178 -0
  26. package/dist/authzen/index.d.ts +26 -6
  27. package/dist/authzen/index.js +228 -75
  28. package/dist/automation-BMZPIVUM.d.ts +114 -0
  29. package/dist/automation-DVjOckjV.js +157 -0
  30. package/dist/better-auth/index.d.ts +8 -6
  31. package/dist/better-auth/index.js +11 -23
  32. package/dist/better-supabase/index.d.ts +438 -86
  33. package/dist/better-supabase/index.js +1027 -184
  34. package/dist/bind--9EFVYWF.d.ts +38 -0
  35. package/dist/{bind-CuzGytRf.js → bind-CZzhx-Vj.js} +22 -10
  36. package/dist/body-CH5of8Ne.js +10 -0
  37. package/dist/body-text-QcXok_SI.js +52 -0
  38. package/dist/build-instance-BMnAudHn.js +52 -0
  39. package/dist/{canonical-json-DemiK4Vp.js → canonical-json-BC8_nMTw.js} +6 -6
  40. package/dist/{capability-2kYTMWDv.d.ts → capability-BSslw1QV.d.ts} +44 -25
  41. package/dist/{capability-4qPdO9gk.js → capability-N1K9IpqS.js} +69 -42
  42. package/dist/casbin-Cr7RLtA3.js +30 -0
  43. package/dist/casbin-Dyu2gnUD.js +234 -0
  44. package/dist/casl-64gpT-8x.js +24 -0
  45. package/dist/casl-DjEDhTCP.js +299 -0
  46. package/dist/catalog/index.d.ts +74 -2
  47. package/dist/catalog/index.js +51 -2
  48. package/dist/catalog-BECMPrwc.js +100 -0
  49. package/dist/catalog-DjhMYYCq.js +1 -0
  50. package/dist/catalog-R_A__RsH.js +52 -0
  51. package/dist/{catalog-doc-DdGm82XT.js → catalog-doc-C9wjsfNY.js} +54 -25
  52. package/dist/catalog-fingerprint-CCP0-yQS.js +153 -0
  53. package/dist/chat/index.d.ts +2 -0
  54. package/dist/chat/index.js +224 -0
  55. package/dist/chat-sdk/index.d.ts +87 -0
  56. package/dist/chat-sdk/index.js +197 -0
  57. package/dist/claims-map-7oQ3ue4X.js +13 -0
  58. package/dist/claims-map-Ca-QX8C6.d.ts +32 -0
  59. package/dist/claude-agent/index.d.ts +7 -14
  60. package/dist/claude-agent/index.js +26 -30
  61. package/dist/clerk/index.d.ts +9 -8
  62. package/dist/clerk/index.js +15 -45
  63. package/dist/cli/bin.js +36 -17
  64. package/dist/cli/index.d.ts +20 -6
  65. package/dist/cli/index.js +164 -4
  66. package/dist/cloud/index.d.ts +102 -63
  67. package/dist/cloud/index.js +240 -347
  68. package/dist/cloud-CIoHNevm.js +87 -0
  69. package/dist/codemod-Bmj9dWMH.js +37 -0
  70. package/dist/codemod-Cxvvc70T.js +2084 -0
  71. package/dist/{collect-DSTE3ml9.js → collect-CrZJJnEF.js} +79 -17
  72. package/dist/collect-DloHbDVa.js +55 -0
  73. package/dist/collect-FlXJlhus.js +1 -0
  74. package/dist/command-L8EstFNm.js +6 -0
  75. package/dist/{compact-y6vfu2_f.js → compact-CAf557ZB.js} +11 -1
  76. package/dist/compile/index.d.ts +1 -1
  77. package/dist/compile/index.js +1 -2
  78. package/dist/{compile-Ba4blROR.js → compile-CMqMx_IN.js} +13 -9
  79. package/dist/{compile-BkRyBDBw.d.ts → compile-Ckm2HqBZ.d.ts} +5 -3
  80. package/dist/completion-BqhRBJD8.js +143 -0
  81. package/dist/config-B46rm9sc.js +26 -0
  82. package/dist/{config-BJiM-xAm.js → config-bs_kZeYq.js} +15 -10
  83. package/dist/{config-report-CdCgbRnV.js → config-report-DUgj62Ai.js} +17 -8
  84. package/dist/{connection-CU8MQxRi.js → connection-DjhIJSs2.js} +8 -6
  85. package/dist/constants-DcJABbLW.js +20 -0
  86. package/dist/{context-Bcy85rGi.js → context-bbFHR-0D.js} +16 -5
  87. package/dist/convex/index.d.ts +11 -10
  88. package/dist/convex/index.js +18 -18
  89. package/dist/create-0VZ7Pdiu.d.ts +107 -0
  90. package/dist/create-BDS7wc3y.d.ts +138 -0
  91. package/dist/create-BFfm17UA.d.ts +110 -0
  92. package/dist/create-BWRSXgOF.js +403 -0
  93. package/dist/create-C3b4B5eF.js +130 -0
  94. package/dist/create-DnrmLnLW.js +323 -0
  95. package/dist/{credential-8P81ff4u.js → credential-DM2um3ha.js} +153 -32
  96. package/dist/credentials-DPyHmYz5.js +74 -0
  97. package/dist/deciding-columns-Sq12mEA6.js +123 -0
  98. package/dist/delegation-DaXVdDhM.js +286 -0
  99. package/dist/delegation-input-FTxMK3ji.js +19 -0
  100. package/dist/delivery/index.d.ts +5 -0
  101. package/dist/delivery/index.js +5 -0
  102. package/dist/delivery-DCAgNyCn.js +499 -0
  103. package/dist/delivery-event-xX4obB8F.js +40 -0
  104. package/dist/denied-text-D8jDHgsl.d.ts +19 -0
  105. package/dist/{describe-DMYiCjJV.d.ts → describe-BZUsixiL.d.ts} +11 -2
  106. package/dist/{describe-B_gVZEVi.js → describe-BybMRY7A.js} +10 -5
  107. package/dist/device-BARQ8eYG.js +193 -0
  108. package/dist/diff-CxZo9pTq.js +37 -0
  109. package/dist/{diff-2VaeChzX.js → diff-DCePiN6M.js} +61 -55
  110. package/dist/doctor-CxiwSfqH.js +44 -0
  111. package/dist/doctor-DFjUxf2f.js +2361 -0
  112. package/dist/drizzle/index.d.ts +5 -3
  113. package/dist/drizzle/index.js +6 -14
  114. package/dist/elysia/index.d.ts +16 -13
  115. package/dist/elysia/index.js +14 -13
  116. package/dist/env-DJZrPjRi.js +8 -0
  117. package/dist/errors-BDUwg2qC.js +27 -0
  118. package/dist/{errors-Cz5zn0mW.js → errors-BKy0EfhN.js} +6 -10
  119. package/dist/errors-BWXBMaKK.d.ts +11 -0
  120. package/dist/{errors-DPdqI50v.d.ts → errors-C2PXIv4c.d.ts} +2 -2
  121. package/dist/errors-CWTY6uih.js +143 -0
  122. package/dist/evaluate-_R8QkWaf.js +1732 -0
  123. package/dist/evaluations-16UqqQ6W.d.ts +32 -0
  124. package/dist/{evaluations-tz6D9A2G.js → evaluations-DZ2CbV5k.js} +181 -32
  125. package/dist/eve/index.d.ts +12 -16
  126. package/dist/eve/index.js +23 -29
  127. package/dist/event-time-CsegxXxB.js +23 -0
  128. package/dist/expiry-D4_YKRKD.js +52 -0
  129. package/dist/express/index.d.ts +13 -10
  130. package/dist/express/index.js +14 -12
  131. package/dist/fastify/index.d.ts +26 -13
  132. package/dist/fastify/index.js +17 -36
  133. package/dist/fetch-adapter-g0ypLkID.js +120 -0
  134. package/dist/fetch-adapter-qKJBuRqy.d.ts +31 -0
  135. package/dist/fields-D9tPVUUS.js +203 -0
  136. package/dist/files-C5ZI27eV.js +124 -0
  137. package/dist/{files-DWUN9PzI.js → files-D_JIzUrP.js} +12 -3
  138. package/dist/{fixtures-ht28Cplr.js → fixtures-B7XrLeY7.js} +12 -12
  139. package/dist/flags-C3DktBDY.js +86 -0
  140. package/dist/{from-snapshot-CTLijvdm.js → from-snapshot-D2lZt4Dd.js} +78 -65
  141. package/dist/{generate-CH7ThJ14.js → generate-CNU1pIOo.js} +1 -3
  142. package/dist/grantee-Cn1HyUsI.js +254 -0
  143. package/dist/grantee-conditions-CcXf8hMM.js +271 -0
  144. package/dist/grantee-match-DHArqY82.js +142 -0
  145. package/dist/h3/index.d.ts +37 -0
  146. package/dist/h3/index.js +35 -0
  147. package/dist/headers-BIjfMaoC.js +8 -0
  148. package/dist/headers-CIbDTUTK.d.ts +7 -0
  149. package/dist/{helpers-H_KARDVC.js → helpers-DTcZOzhF.js} +47 -39
  150. package/dist/hono/index.d.ts +12 -9
  151. package/dist/hono/index.js +14 -13
  152. package/dist/{hosted-DJQw46hn.js → hosted-BZIAYvon.js} +64 -15
  153. package/dist/hosted-DBDX0M-P.d.ts +78 -0
  154. package/dist/{http-SO7qGttf.js → http-BBoKefeS.js} +35 -2
  155. package/dist/{http-DPuDaChb.d.ts → http-B_LphE5Y.d.ts} +1 -2
  156. package/dist/http-DXJ37RDA.js +46 -0
  157. package/dist/{http-BIhmLfCc.js → http-ujKm0JXE.js} +3 -26
  158. package/dist/{openapi-import-cmwetbzw.js → import-CNV7I2Dw.js} +30 -26
  159. package/dist/{rls-import-4lLW_pbb.js → import-DMmOG27O.js} +271 -128
  160. package/dist/index-BcHcPyIo.d.ts +110 -0
  161. package/dist/index-CaxrMD1A.d.ts +1 -0
  162. package/dist/index-Chrs5fQ-.d.ts +210 -0
  163. package/dist/index-CxGUswIC.d.ts +431 -0
  164. package/dist/index-D8EovfsP.d.ts +91 -0
  165. package/dist/index-DOVf7RJv.d.ts +900 -0
  166. package/dist/{index-C8z4RjQV.d.ts → index-SGdIQyzc.d.ts} +34 -16
  167. package/dist/index.d.ts +20 -14
  168. package/dist/index.js +33 -23
  169. package/dist/init-DeMYsnYJ.js +96 -0
  170. package/dist/init-GG6Jh8HD.js +95 -0
  171. package/dist/{instance-options-jARdwfPN.d.ts → instance-options-Omfd793B.d.ts} +2 -2
  172. package/dist/instance-snapshot-Cxq4ygFc.js +600 -0
  173. package/dist/instant-BluqDvyS.js +19 -0
  174. package/dist/internals-Dk8A8fX3.js +17 -0
  175. package/dist/{json-schema-BsAflUGW.js → json-schema-B-vAwlde.js} +46 -9
  176. package/dist/json-schema-CN_iLFH2.d.ts +40 -0
  177. package/dist/jwt/index.d.ts +18 -11
  178. package/dist/jwt/index.js +166 -145
  179. package/dist/{kernel-_RRHmnMY.js → kernel-5JatXyND.js} +120 -43
  180. package/dist/kysely/index.d.ts +5 -3
  181. package/dist/kysely/index.js +6 -14
  182. package/dist/{live-options-H2eG8dfJ.js → live-options-BaAFCIiu.js} +16 -3
  183. package/dist/load-BxEtwlBS.js +1 -0
  184. package/dist/{load-DhWEB9P1.js → load-DFS_ry0W.js} +31 -7
  185. package/dist/{load-jose-BL6LH4bL.js → load-jose-DZ4dnjri.js} +1 -4
  186. package/dist/login-Dfe5RlYk.js +68 -0
  187. package/dist/login-imhuwvn3.js +254 -0
  188. package/dist/manifest-C8IzW3Do.js +42 -0
  189. package/dist/manifest-CtKR3GXL.js +370 -0
  190. package/dist/manifest-json-CAGzls-C.js +9 -0
  191. package/dist/{manifest-uDS9y5de.d.ts → manifest-mx5ghSFM.d.ts} +9 -2
  192. package/dist/manifest-schema-C0kK_8V0.js +399 -0
  193. package/dist/{map-claims-Z4QZOiFF.js → map-claims-D3oRmTk0.js} +19 -25
  194. package/dist/{map-error-pgUWNNtG.js → map-error-TCAdw-eW.js} +5 -5
  195. package/dist/{markers-B0hYLvMD.js → markers-C6joDI3o.js} +8 -3
  196. package/dist/mcp/index.d.ts +36 -9
  197. package/dist/mcp/index.js +476 -448
  198. package/dist/{rls-migrate-CN4TlJTO.js → migrate-BShP7Vf4.js} +119 -20
  199. package/dist/nest/index.d.ts +12 -9
  200. package/dist/nest/index.js +20 -20
  201. package/dist/next/index.d.ts +40 -20
  202. package/dist/next/index.js +37 -39
  203. package/dist/next/plugin.d.ts +1 -1
  204. package/dist/next/plugin.js +2 -2
  205. package/dist/node/index.d.ts +10 -10
  206. package/dist/node/index.js +7 -9
  207. package/dist/ocsf-BFp-PZZA.js +126 -0
  208. package/dist/openai/index.d.ts +9 -16
  209. package/dist/openai/index.js +18 -25
  210. package/dist/openapi/index.d.ts +3 -3
  211. package/dist/openapi/index.js +1 -1
  212. package/dist/{openapi-BqRBvAng.js → openapi-B7HZ0f-r.js} +9 -12
  213. package/dist/{openapi-CqqEbHsL.js → openapi-DTaEmTSW.js} +23 -26
  214. package/dist/openapi-ahr8rHu3.js +138 -0
  215. package/dist/operation-findings-DgATDpvh.js +36 -0
  216. package/dist/operations-CxybZErY.d.ts +59 -0
  217. package/dist/orpc/index.d.ts +13 -10
  218. package/dist/orpc/index.js +23 -20
  219. package/dist/otel/index.d.ts +3 -2
  220. package/dist/otel/index.js +53 -27
  221. package/dist/output-Dyw8fyPF.js +88 -0
  222. package/dist/output-files-B3IZJksC.js +1 -0
  223. package/dist/output-files-DhRBBE4n.js +138 -0
  224. package/dist/{rls-fields-CZOMlwHl.js → ownership-BatFgAA4.js} +2393 -2349
  225. package/dist/{package-root-zGkxO3oN.js → package-root-Dk_ETdkp.js} +4 -3
  226. package/dist/{parse-BuyjxhZV.js → parse-Cxq0WxrA.js} +3 -3
  227. package/dist/{parse-local-manifest-BrMozJCo.js → parse-local-manifest-CVSs6J9I.js} +2 -4
  228. package/dist/{parse-local-manifest-JLnaBH0S.d.ts → parse-local-manifest-DgqtruPn.d.ts} +1 -1
  229. package/dist/parse-request-D_tUXG6M.js +26 -0
  230. package/dist/paths-DXSHAMIa.js +42 -0
  231. package/dist/pdp/index.d.ts +7 -3
  232. package/dist/pdp/index.js +47 -29
  233. package/dist/{peer-BOr_kJE1.js → peer-C8swJ2GH.js} +23 -4
  234. package/dist/peer-CRvC7Hg1.js +1 -0
  235. package/dist/permdock-B9JxkBwC.js +868 -0
  236. package/dist/permdock-D7eeLJER.d.ts +502 -0
  237. package/dist/permission-registry-Br4jSNVi.js +385 -0
  238. package/dist/permissions-B-wCP5ZC.js +30 -0
  239. package/dist/{permissions-RJrovw98.js → permissions-CZKiUfFM.js} +4 -3
  240. package/dist/{permissions-CDgvKG5L.d.ts → permissions-oEWfl-kl.d.ts} +1 -2
  241. package/dist/policies-CO1oOymN.js +295 -0
  242. package/dist/{policy-D2W7uv19.d.ts → policy-Czo4n3Hs.d.ts} +2 -2
  243. package/dist/policy-DLZJ5gAp.js +399 -0
  244. package/dist/policy-from-catalog-DzhEc3Y9.js +450 -0
  245. package/dist/policy-module-CTlwMvLI.js +89 -0
  246. package/dist/{policy-IB6yxpC3.d.ts → policy-types-DzwivBgR.d.ts} +939 -1057
  247. package/dist/postgrest-CW0IqC-U.js +566 -0
  248. package/dist/postgrest-NUqZT-RB.d.ts +100 -0
  249. package/dist/powersync-BHfuehf3.js +62 -0
  250. package/dist/powersync-CbzkqL_M.js +1 -0
  251. package/dist/{powersync-Dv1_aWF7.js → powersync-bYUDLOAO.js} +30 -32
  252. package/dist/preset/index.d.ts +146 -0
  253. package/dist/preset/index.js +1 -0
  254. package/dist/preset-DZdU0tne.js +1768 -0
  255. package/dist/principal-source-pHneukrx.js +103 -0
  256. package/dist/prisma/index.d.ts +6 -3
  257. package/dist/prisma/index.js +6 -12
  258. package/dist/{problem-B43ztKIm.js → problem-CTviyH5L.js} +18 -27
  259. package/dist/{problem-details-DX075l9V.d.ts → problem-details-DXlt-vks.d.ts} +1 -1
  260. package/dist/{problem-details-_AMOYz-w.js → problem-details-cn5X30gZ.js} +45 -42
  261. package/dist/problem-types-CJ2325SZ.js +5 -0
  262. package/dist/{prompt-CXYhLfsS.js → prompt-DfZLJLIn.js} +2 -2
  263. package/dist/protected-DEPHc2xV.d.ts +38 -0
  264. package/dist/{protected-utU-SLuy.js → protected-DfjY5mLA.js} +37 -8
  265. package/dist/{provider-CSQd7m92.js → provider-CC-u3bYP.js} +23 -10
  266. package/dist/{provider-DZY281jO.d.ts → provider-DMVt6yYn.d.ts} +1 -1
  267. package/dist/{provider-store-Cfbvo4DE.js → provider-store-B5Yrkhzr.js} +6 -3
  268. package/dist/pull-BgIfno6w.js +256 -0
  269. package/dist/pull-ByOks_Tg.js +1 -0
  270. package/dist/push-CmFVBOeI.js +116 -0
  271. package/dist/pushed-policy-BImMTTIM.d.ts +57 -0
  272. package/dist/pushed-policy-DobP7AHI.js +238 -0
  273. package/dist/react/index.d.ts +8 -8
  274. package/dist/react/index.js +6 -6
  275. package/dist/react/provider-client.d.ts +1 -1
  276. package/dist/react/provider-client.js +1 -2
  277. package/dist/react-native/index.d.ts +24 -63
  278. package/dist/react-native/index.js +45 -27
  279. package/dist/{refs-KYb4ntaz.js → refs-K6eWUJ0H.js} +1 -1
  280. package/dist/relation-walk-3OyDBF0S.js +186 -0
  281. package/dist/relations-BnCWnJGI.js +163 -0
  282. package/dist/renames-CGj7YwcQ.js +175 -0
  283. package/dist/{replay-CYyiLiwO.d.ts → replay-D7iKcLFe.d.ts} +1 -1
  284. package/dist/{replay-BsOyTrdV.js → replay-Du1tJjG7.js} +2 -1
  285. package/dist/request-context-BTRTG7OT.js +71 -0
  286. package/dist/request-context-C2_1lchh.d.ts +5 -0
  287. package/dist/request-schema-CMreVuFM.js +148 -0
  288. package/dist/resend/index.d.ts +126 -0
  289. package/dist/resend/index.js +379 -0
  290. package/dist/resource-relations-D_jw0BFx.js +243 -0
  291. package/dist/retire-CALjIQ7e.js +240 -0
  292. package/dist/{revocations-Cy06JNx2.d.ts → revocations-R07lFBnX.d.ts} +2 -0
  293. package/dist/rls-BA8an5Ap.js +336 -0
  294. package/dist/{rls-DiinlRML.js → rls-j6t43t7n.js} +1066 -1068
  295. package/dist/role-builder-CXbis5-X.js +623 -0
  296. package/dist/{rpc-DL9Sqvb1.js → rpc-aPyNi6tA.js} +18 -8
  297. package/dist/run-CNsApDpd.js +1 -0
  298. package/dist/run-DOfMtc9V.js +723 -0
  299. package/dist/run-ticket-BjhTOi6u.d.ts +124 -0
  300. package/dist/run-ticket-sxFI6LAk.js +337 -0
  301. package/dist/{runtime-CB8gQFvS.js → runtime-D3VTAiCA.js} +1 -1
  302. package/dist/{saas-DhpJjnBA.js → saas-FO-Q8oj0.js} +18 -15
  303. package/dist/scan-BOI5tJ-6.js +29 -0
  304. package/dist/{schema-D3MnDMxa.js → schema-B4v0Qrac.js} +106 -10
  305. package/dist/schema-yLuBWWsh.js +130 -0
  306. package/dist/scim/index.d.ts +2 -2
  307. package/dist/scim/index.js +1 -2
  308. package/dist/{scim-BFGBBAqR.js → scim-ClHtpyV3.js} +213 -87
  309. package/dist/{scopes-CVdPrWN-.js → scopes-CUPSjo9q.js} +20 -7
  310. package/dist/server/index.d.ts +13 -134
  311. package/dist/server/index.js +13 -10
  312. package/dist/server-DqCT4CgZ.js +453 -0
  313. package/dist/{create-B1d519XK.d.ts → server-types-BLd4MnBX.d.ts} +89 -70
  314. package/dist/{sha256-BO0swRXL.js → sha256-D9ihqmvd.js} +8 -1
  315. package/dist/shared-CD11nBbC.js +304 -0
  316. package/dist/{shared-DRu8VFVM.js → shared-DvvFzYXe.js} +8 -9
  317. package/dist/signals-D3NcTKUS.js +32 -0
  318. package/dist/sink-BEZSlMS_.js +957 -0
  319. package/dist/sink-Bj_lDUDq.d.ts +225 -0
  320. package/dist/{skills-Biq5uup3.js → skills-B6lVdD_W.js} +16 -8
  321. package/dist/skills-CTYwkl44.js +51 -0
  322. package/dist/snapshot-CXUWfsNy.js +269 -0
  323. package/dist/{snapshot-cache-D6jLelln.js → snapshot-cache-DZHQ0KF6.js} +11 -5
  324. package/dist/{snapshot-cache-B-LxUahj.d.ts → snapshot-cache-DqK9eDmM.d.ts} +7 -5
  325. package/dist/solid/index.d.ts +24 -25
  326. package/dist/solid/index.js +41 -11
  327. package/dist/solid-start/index.d.ts +52 -0
  328. package/dist/solid-start/index.js +49 -0
  329. package/dist/{sources-BdOYLw9j.d.ts → sources-BV9j0DeZ.d.ts} +11 -13
  330. package/dist/{sources-4p0-4xQm.js → sources-vs5dGOsS.js} +147 -142
  331. package/dist/sql-B5T1IL83.js +55 -0
  332. package/dist/src-DLfUWFAI.js +1851 -0
  333. package/dist/ssf/index.d.ts +4 -4
  334. package/dist/ssf/index.js +440 -106
  335. package/dist/standard-webhooks-6lg8v_is.d.ts +88 -0
  336. package/dist/standard-webhooks-DgFFD-Ga.js +228 -0
  337. package/dist/storage-C2bWdvJH.js +132 -0
  338. package/dist/{store-DMAWwAJV.js → store-4u_hxjWa.js} +42 -55
  339. package/dist/{store-options-ByhZq1jV.js → store-options-BqEakYRa.js} +38 -24
  340. package/dist/{stores-BT2pSCub.js → stores-BbsD4fAR.js} +7 -3
  341. package/dist/stores-ClZUgeoP.d.ts +30 -0
  342. package/dist/{stream-D1RXubw2.d.ts → stream-7-xmnf3U.d.ts} +2 -2
  343. package/dist/{stream-DDpvynSB.js → stream-CvdUS9V1.js} +10 -2
  344. package/dist/style-DiKWnAvn.js +1 -0
  345. package/dist/{style-CTm1AXDT.js → style-Uao76wO7.js} +3 -2
  346. package/dist/subject-BGoM5o8B.js +17 -0
  347. package/dist/{subject-settings-BwBmCdTR.js → subject-settings-CkEwrw3W.js} +23 -5
  348. package/dist/supabase/index.d.ts +23 -106
  349. package/dist/supabase/index.js +5 -4
  350. package/dist/supabase/middleware.d.ts +13 -6
  351. package/dist/supabase/middleware.js +16 -11
  352. package/dist/supabase-9pqI57pW.js +92 -0
  353. package/dist/{supabase-C0qESOa-.js → supabase-Dxlp8A94.js} +124 -247
  354. package/dist/supabase-hook-CXcGpHqq.js +1 -0
  355. package/dist/{supabase-hook-ntETYCQu.js → supabase-hook-DdDQhMlw.js} +1659 -819
  356. package/dist/{supautils-u8jXTGrt.js → supautils-B6HYL9eL.js} +2 -2
  357. package/dist/support-session-C6xJQYut.js +158 -0
  358. package/dist/svelte/Protected.svelte +11 -4
  359. package/dist/svelte/index.d.ts +7 -7
  360. package/dist/svelte/index.js +26 -12
  361. package/dist/svelte/runtime.d.ts +10 -3
  362. package/dist/svelte/runtime.js +4 -3
  363. package/dist/svelte/source.d.ts +7 -7
  364. package/dist/svelte/source.js +5 -5
  365. package/dist/sveltekit/index.d.ts +51 -0
  366. package/dist/sveltekit/index.js +27 -0
  367. package/dist/tanstack-start/index.d.ts +51 -0
  368. package/dist/tanstack-start/index.js +40 -0
  369. package/dist/target-Bw37TFNA.js +51 -0
  370. package/dist/{validity-uOp8UpYn.js → tenancy-DN2QAx9z.js} +6 -42
  371. package/dist/terminal/index.d.ts +11 -9
  372. package/dist/terminal/index.js +36 -316
  373. package/dist/testing/index.d.ts +391 -106
  374. package/dist/testing/index.js +4574 -1286
  375. package/dist/testing/saas/index.d.ts +9 -8
  376. package/dist/testing/saas/index.js +2 -2
  377. package/dist/testing/saas/permissions.d.ts +1 -1
  378. package/dist/testing/saas/permissions.js +1 -2
  379. package/dist/text-BMFRfBqc.js +8 -0
  380. package/dist/{text-diff-BdkkYSbi.js → text-diff-BQcUapOb.js} +1 -1
  381. package/dist/thenable-yD7SabqG.js +31 -0
  382. package/dist/time-DkWjdL98.js +71 -0
  383. package/dist/{token-CIWxJOCh.js → token-BLZcjQgt.js} +15 -6
  384. package/dist/tool-refusal-CMLN5xhn.js +41 -0
  385. package/dist/trpc/index.d.ts +12 -9
  386. package/dist/trpc/index.js +18 -17
  387. package/dist/{types-DbjRN55U.d.ts → types-5Ut_pbKy.d.ts} +141 -13
  388. package/dist/types-BNORmDM8.d.ts +172 -0
  389. package/dist/types-BjV-fqcA.d.ts +57 -0
  390. package/dist/{types-QCuYJh4q.d.ts → types-BqAKcRNW.d.ts} +2 -1
  391. package/dist/types-C8-KNsFf.d.ts +107 -0
  392. package/dist/{types-aqOHTHcp.d.ts → types-CCpc2Dcv.d.ts} +77 -17
  393. package/dist/{types-Dnemwd77.d.ts → types-CZTnPFzM.d.ts} +50 -11
  394. package/dist/{types-C97IskBw.d.ts → types-CdlxsYQh.d.ts} +23 -11
  395. package/dist/{types-DxiCGmmd.d.ts → types-ClZaWzfb.d.ts} +9 -6
  396. package/dist/types-DX0LaKTb.d.ts +157 -0
  397. package/dist/types-DiQjupG2.d.ts +332 -0
  398. package/dist/types-DqzsnlSA.js +67 -0
  399. package/dist/types-_sHy8BQf.d.ts +65 -0
  400. package/dist/types-fbZ7JEXr.d.ts +89 -0
  401. package/dist/types-tIgIeIKJ.d.ts +66 -0
  402. package/dist/unplugin/index.d.ts +1 -1
  403. package/dist/unplugin/index.js +2 -2
  404. package/dist/usage-CHOtwL19.js +1 -0
  405. package/dist/usage-DHtE8j4E.js +32 -0
  406. package/dist/{usage-ItS7nLcl.js → usage-T5mXq98v.js} +56 -13
  407. package/dist/{validation-error-Ba264OaJ.d.ts → validation-error-Bg5Tpluk.d.ts} +1 -1
  408. package/dist/{validation-error-CnjZ4t92.js → validation-error-ZfUHbKvf.js} +1 -1
  409. package/dist/validity-CZ7-y0Cj.js +79 -0
  410. package/dist/{verifier-BxBo6I44.js → verifier-DHuh-okk.js} +68 -21
  411. package/dist/verify-DbCL9bnB.js +1770 -0
  412. package/dist/{version-BvacVTZR.js → version-CEbQ5UeM.js} +4 -3
  413. package/dist/version-DXkYUISx.js +1 -0
  414. package/dist/{views-Soe7bGSC.js → views-DTIIO-oQ.js} +41 -2
  415. package/dist/{permissions-DttnqqxC.d.ts → vocabulary-D6lPdb4Z.d.ts} +120 -29
  416. package/dist/vue/index.d.ts +25 -21
  417. package/dist/vue/index.js +25 -9
  418. package/dist/waiter-BGUtGYoU.js +67 -0
  419. package/dist/waiter-CKy4MQSY.d.ts +36 -0
  420. package/dist/watch-Cb-NcaUw.js +1 -0
  421. package/dist/{watch-DVBJ9cBq.js → watch-CszoTJMq.js} +47 -8
  422. package/dist/webmcp/index.d.ts +2 -2
  423. package/dist/webmcp/index.js +13 -37
  424. package/dist/where-scope-Dv-WTP-w.js +306 -0
  425. package/dist/who-can-D0QoYbEb.js +364 -0
  426. package/dist/wire-delegation-Cv3W2eaM.js +36 -0
  427. package/dist/wire-denial-C7PaVYEM.js +27 -0
  428. package/dist/workflow/index.d.ts +5 -0
  429. package/dist/workflow/index.js +223 -0
  430. package/dist/workflow-sdk/index.d.ts +56 -0
  431. package/dist/workflow-sdk/index.js +78 -0
  432. package/dist/wrap-Bd1Tejur.d.ts +15 -0
  433. package/dist/wrap-gX61EtpB.js +27 -0
  434. package/package.json +140 -41
  435. package/schemas/access-event-v1.json +118 -0
  436. package/schemas/approval-request-v1.json +34 -1
  437. package/schemas/approval-signature-v1.json +94 -0
  438. package/schemas/automation-event-v1.json +113 -0
  439. package/schemas/capability-v1.json +84 -0
  440. package/schemas/catalog-event-v1.json +87 -0
  441. package/schemas/catalog-v1.json +129 -12
  442. package/schemas/cli-commands-v1.json +164 -0
  443. package/schemas/cli-result-v1.json +96 -0
  444. package/schemas/cloud-api-v1.json +5407 -0
  445. package/schemas/connector-v1.json +408 -0
  446. package/schemas/credential-event-v1.json +81 -0
  447. package/schemas/credential-v1.json +134 -0
  448. package/schemas/decision-event-v1.json +288 -0
  449. package/schemas/delivery-event-v1.json +117 -0
  450. package/schemas/directory-event-v1.json +85 -0
  451. package/schemas/evidence-export-v1.json +54 -0
  452. package/schemas/membership-event-v1.json +93 -0
  453. package/schemas/policy-v1.json +68 -0
  454. package/schemas/pushed-policy-v1.json +236 -0
  455. package/schemas/run-v1.json +162 -0
  456. package/schemas/snapshot-v1.json +138 -0
  457. package/schemas/supabase-claims-v1.json +4 -4
  458. package/schemas/supabase-manifest-v1.json +5 -1
  459. package/schemas/support-session-v1.json +111 -0
  460. package/skills/permdock/SKILL.md +16 -12
  461. package/skills/permdock-agents/SKILL.md +40 -23
  462. package/skills/permdock-agents/references/operations-automations-chat.md +221 -0
  463. package/skills/permdock-agents/references/runtimes.md +22 -18
  464. package/skills/permdock-approvals/SKILL.md +29 -13
  465. package/skills/permdock-approvals/references/delivery-and-waiters.md +172 -0
  466. package/skills/permdock-approvals/references/stores-and-resume.md +21 -7
  467. package/skills/permdock-audit/SKILL.md +3 -3
  468. package/skills/permdock-credentials/SKILL.md +5 -5
  469. package/skills/permdock-credentials/references/tokens-keys-links.md +19 -10
  470. package/skills/permdock-data/SKILL.md +6 -6
  471. package/skills/permdock-data/references/queries-and-rls.md +13 -8
  472. package/skills/permdock-data/references/relationships.md +3 -3
  473. package/skills/permdock-tenancy/SKILL.md +20 -7
  474. package/skills/permdock-tenancy/references/contacts-and-support-sessions.md +122 -0
  475. package/skills/permdock-tenancy/references/ownership-and-custom-roles.md +6 -4
  476. package/skills/permdock-wire/SKILL.md +18 -12
  477. package/skills/permdock-wire/references/adapters.md +146 -50
  478. package/skills/permdock-wire/references/policy-options.md +15 -6
  479. package/skills/permdock-wire/references/presets-and-recipes.md +58 -0
  480. package/dist/approvals-DbYAuNkG.js +0 -224
  481. package/dist/arazzo-C9chp3ST.js +0 -54
  482. package/dist/bind-C_ob3LKa.d.ts +0 -25
  483. package/dist/catalog-CRW5Mx_B.js +0 -2
  484. package/dist/catalog-CYj-mX2O.js +0 -48
  485. package/dist/catalog-DWF5cYqB.js +0 -55
  486. package/dist/cloud-CfwZ39Rl.js +0 -50
  487. package/dist/cloud-DWLXO2af.js +0 -118
  488. package/dist/collect-CHB22Sx4.js +0 -83
  489. package/dist/collect-DSWOk19R.js +0 -2
  490. package/dist/commands-BeaGNj_o.js +0 -97
  491. package/dist/config-ir40y8m0.js +0 -36
  492. package/dist/create-CMwIl-w2.js +0 -253
  493. package/dist/delegation-D8pUEuce.js +0 -103
  494. package/dist/diff-C9RDjjhs.js +0 -48
  495. package/dist/doctor-Djh6JDEk.js +0 -53
  496. package/dist/doctor-DvH0IQff.js +0 -1194
  497. package/dist/doctor-collect-CjdO0wQX.js +0 -665
  498. package/dist/duration-xK2jGFVc.js +0 -25
  499. package/dist/errors-CWfoNg9N.js +0 -47
  500. package/dist/errors-DRnGZHzF.js +0 -30
  501. package/dist/evaluation-items-CfCCejQd.js +0 -40
  502. package/dist/expiry-BoBJ8Tvc.js +0 -7
  503. package/dist/fields-BMl1RxoX.js +0 -26
  504. package/dist/grantee-Cv5Sogfv.js +0 -602
  505. package/dist/headers-BZSDieNT.js +0 -6
  506. package/dist/headers-Cf-zWvsO.d.ts +0 -6
  507. package/dist/ids-DC4V4CFu.js +0 -18
  508. package/dist/index-0nNqHspG.d.ts +0 -6
  509. package/dist/index-BNc7Wer_.d.ts +0 -483
  510. package/dist/index-C7Tw7MaW.d.ts +0 -201
  511. package/dist/instance-options-Dhhcnm3y.js +0 -22
  512. package/dist/load-DwJUafYN.js +0 -2
  513. package/dist/manifest-iaoBXHKc.js +0 -783
  514. package/dist/map-AcxK9o_D.js +0 -147
  515. package/dist/may-use-DndQ5tQ-.js +0 -77
  516. package/dist/openapi-CQTsgKoB.js +0 -164
  517. package/dist/permdock-CbgvLnuo.js +0 -3479
  518. package/dist/permissions-DVoF6dMt.js +0 -662
  519. package/dist/policy-xyWg7QdR.js +0 -1122
  520. package/dist/powersync-CrBX8hY6.js +0 -2
  521. package/dist/powersync-DE19b9dT.js +0 -62
  522. package/dist/protected-BdnIEFkY.d.ts +0 -27
  523. package/dist/protected-xAr24FEC.d.ts +0 -40
  524. package/dist/relations-cjOL01hZ.js +0 -505
  525. package/dist/rls-P-BeBx0n.js +0 -238
  526. package/dist/rls-graph-CHwx0V8q.js +0 -435
  527. package/dist/rls-ownership-DcYlZ09B.js +0 -843
  528. package/dist/rls-shared-Cewd_-zI.js +0 -495
  529. package/dist/rls-verify-CMv9H3wV.js +0 -746
  530. package/dist/run-BWc9qqvE.js +0 -174
  531. package/dist/server-DlZ28Oz5.js +0 -268
  532. package/dist/sink-B1fZzIMf.d.ts +0 -104
  533. package/dist/sink-Bd9PSyfq.js +0 -141
  534. package/dist/skills-C5CbhhpG.js +0 -56
  535. package/dist/snapshot-Enxd0n-s.js +0 -975
  536. package/dist/sql-xdg5f4Fi.js +0 -27
  537. package/dist/src-BDwEZWrZ.js +0 -568
  538. package/dist/store-jOBYpiXC.d.ts +0 -36
  539. package/dist/stores-C0IMQrGI.d.ts +0 -52
  540. package/dist/subject-C6dLxqHU.js +0 -24
  541. package/dist/supabase-config-Bj3iDH2I.js +0 -472
  542. package/dist/supabase-hook-gd3s8bxB.js +0 -2
  543. package/dist/supabase-s4o9s1O1.js +0 -83
  544. package/dist/thenable-okc2xDsj.js +0 -10
  545. package/dist/types-BnIEz1sU.d.ts +0 -48
  546. package/dist/types-Bvc4oWT6.d.ts +0 -9
  547. package/dist/types-CKNSyIf_.d.ts +0 -52
  548. package/dist/types-Cq_H8N_X.d.ts +0 -197
  549. package/dist/usage-B0YuTQRO.js +0 -42
  550. package/dist/usage-DorAJiU_.js +0 -2
  551. package/dist/vocabulary-DA8a8zif.d.ts +0 -56
  552. package/dist/watch-BwxLTYMZ.js +0 -2
@@ -0,0 +1,723 @@
1
+ import { i as dateAt } from "./time-DkWjdL98.js";
2
+ import { a as describeError, l as problemOf, n as CliError, r as cliProblem, s as kindOfCode } from "./errors-CWTY6uih.js";
3
+ import { s as cliVersion } from "./version-CEbQ5UeM.js";
4
+ import { a as resolveCwd, i as readConfig } from "./config-bs_kZeYq.js";
5
+ import { t as beforeFirst } from "./text-BMFRfBqc.js";
6
+ import { a as suggestion, i as parseLeaf, n as flagSpellings, o as GLOBAL_FLAGS, r as parseFlags } from "./args-IIolxxKA.js";
7
+ import { r as progressReporter, t as redact } from "./credentials-DPyHmYz5.js";
8
+ import { a as resolve, i as leaves, n as ROOT, r as SECTIONS, t as DOCS_BASE } from "./manifest-CtKR3GXL.js";
9
+ import { t as createStyle } from "./style-Uao76wO7.js";
10
+ import { a as sarifLog, i as githubAnnotations, n as envelope, t as dataOf } from "./output-Dyw8fyPF.js";
11
+ import { i as renameMessage, r as flagRename, t as COMMAND_MOVES } from "./renames-CGj7YwcQ.js";
12
+ import { stripVTControlCharacters } from "node:util";
13
+ import { existsSync, statSync } from "node:fs";
14
+ import { createHash } from "node:crypto";
15
+ //#region src/cli/core/agent.ts
16
+ function set(env, name) {
17
+ const value = env[name];
18
+ return value !== void 0 && value !== "";
19
+ }
20
+ /**
21
+ * The AI agent running the CLI, from the variables `@vercel/detect-agent`
22
+ * reads, in its order. `CURSOR_TRACE_ID` is also set in Cursor's own
23
+ * terminal, so it counts only when stdout is not a TTY.
24
+ */
25
+ function detectAgent(env, probe) {
26
+ const named = env["AI_AGENT"]?.trim();
27
+ if (named !== void 0 && named !== "") return {
28
+ isAgent: true,
29
+ name: named === "github-copilot-cli" ? "github-copilot" : named
30
+ };
31
+ if (set(env, "CURSOR_TRACE_ID") && !probe.stdoutIsTty) return {
32
+ isAgent: true,
33
+ name: "cursor"
34
+ };
35
+ if (set(env, "CURSOR_AGENT") || env["CURSOR_EXTENSION_HOST_ROLE"] === "agent-exec") return {
36
+ isAgent: true,
37
+ name: "cursor-cli"
38
+ };
39
+ if (set(env, "GEMINI_CLI")) return {
40
+ isAgent: true,
41
+ name: "gemini"
42
+ };
43
+ if (set(env, "CODEX_SANDBOX") || set(env, "CODEX_CI") || set(env, "CODEX_THREAD_ID")) return {
44
+ isAgent: true,
45
+ name: "codex"
46
+ };
47
+ if (set(env, "ANTIGRAVITY_AGENT")) return {
48
+ isAgent: true,
49
+ name: "antigravity"
50
+ };
51
+ if (set(env, "AUGMENT_AGENT")) return {
52
+ isAgent: true,
53
+ name: "augment-cli"
54
+ };
55
+ if (set(env, "OPENCODE_CLIENT")) return {
56
+ isAgent: true,
57
+ name: "opencode"
58
+ };
59
+ if (set(env, "CLAUDECODE") || set(env, "CLAUDE_CODE")) return {
60
+ isAgent: true,
61
+ name: set(env, "CLAUDE_CODE_IS_COWORK") ? "cowork" : "claude"
62
+ };
63
+ if (set(env, "REPL_ID")) return {
64
+ isAgent: true,
65
+ name: "replit"
66
+ };
67
+ if (set(env, "COPILOT_MODEL") || set(env, "COPILOT_ALLOW_ALL") || set(env, "COPILOT_GITHUB_TOKEN")) return {
68
+ isAgent: true,
69
+ name: "github-copilot"
70
+ };
71
+ if (probe.exists("/opt/.devin")) return {
72
+ isAgent: true,
73
+ name: "devin"
74
+ };
75
+ return { isAgent: false };
76
+ }
77
+ const MODES = {
78
+ yes: "yes",
79
+ "1": "yes",
80
+ true: "yes",
81
+ no: "no",
82
+ "0": "no",
83
+ false: "no",
84
+ auto: "auto"
85
+ };
86
+ function modeOf(value, source) {
87
+ if (value === void 0 || value === "") return;
88
+ const key = value.trim().toLowerCase();
89
+ const mode = Object.hasOwn(MODES, key) ? MODES[key] : void 0;
90
+ if (mode === void 0) throw new CliError("usage", `${source} takes auto, yes or no, got '${value}'`, {
91
+ code: "invalid_value",
92
+ extensions: source.startsWith("--") ? { flag: source } : {}
93
+ });
94
+ return mode;
95
+ }
96
+ /**
97
+ * `--agent`, then `PERMDOCK_AGENT`, then detection. An unknown value is a
98
+ * usage error, so a typo never leaves an agent with prompts it cannot answer.
99
+ */
100
+ function agentMode(flag, env, probe) {
101
+ const mode = flag === void 0 ? modeOf(env["PERMDOCK_AGENT"], "PERMDOCK_AGENT") ?? "auto" : modeOf(flag, "--agent") ?? "auto";
102
+ switch (mode) {
103
+ case "yes": return true;
104
+ case "no": return false;
105
+ case "auto": return detectAgent(env, probe).isAgent;
106
+ default: return mode;
107
+ }
108
+ }
109
+ //#endregion
110
+ //#region src/cli/core/consent.ts
111
+ /**
112
+ * The reasons a run needs consent: it edits files the project owns, it
113
+ * publishes to the Cloud, or `--force` overwrites files PermDock did not
114
+ * write. A `--dry-run` or `--check` run writes nothing and needs none.
115
+ */
116
+ function consentReasons(effects, flags) {
117
+ if (flags["dry-run"] === true || flags["check"] === true) return [];
118
+ const reasons = [];
119
+ if (effects.includes("rewrite")) reasons.push("rewrite");
120
+ if (effects.includes("cloud:write")) reasons.push("cloud:write");
121
+ if (flags["force"] === true && effects.includes("files")) reasons.push("overwrite");
122
+ return reasons;
123
+ }
124
+ /** A token as the shell reads it back unchanged. */
125
+ function quote(token) {
126
+ return /^[\w@%+=:,./-]+$/u.test(token) ? token : `'${token.replaceAll("'", String.raw`'\''`)}'`;
127
+ }
128
+ /**
129
+ * The argv as a command line to run again, `--confirm` dropped. Secrets
130
+ * only arrive through `--*-stdin` flags, so the line holds none.
131
+ */
132
+ function replayArgv(argv) {
133
+ const out = [];
134
+ for (let i = 0; i < argv.length; i += 1) {
135
+ const token = argv[i] ?? "";
136
+ if ((token.startsWith("--") ? token.slice(2).split("=", 1)[0] : void 0) === "confirm") {
137
+ i += token.includes("=") ? 0 : 1;
138
+ continue;
139
+ }
140
+ out.push(token);
141
+ }
142
+ return out;
143
+ }
144
+ /**
145
+ * A short token bound to what the person agrees to, the directory and the
146
+ * command line. Hex, because a base64url token may start with `-` and parse
147
+ * as a flag. 16 characters, as better-supabase's.
148
+ */
149
+ function consentToken(reasons, argv, cwd) {
150
+ return createHash("sha256").update(JSON.stringify([
151
+ reasons,
152
+ cwd,
153
+ ...argv
154
+ ])).digest("hex").slice(0, 16);
155
+ }
156
+ const REASON_TEXT = {
157
+ rewrite: "edits files the project owns",
158
+ "cloud:write": "publishes to PermDock Cloud",
159
+ overwrite: "overwrites files with --force"
160
+ };
161
+ /** The `consent_required` result an agent gets until it passes the token. */
162
+ function consentRequired(command, reasons, argv, token) {
163
+ return new CliError("action", `permdock ${command} ${reasons.map((reason) => REASON_TEXT[reason]).join(" and ")}. Ask the person to agree, then run it again with --confirm ${token}`, {
164
+ code: "consent_required",
165
+ extensions: {
166
+ reasons,
167
+ token
168
+ },
169
+ next: [{
170
+ when: "after the person agrees",
171
+ command: [
172
+ "permdock",
173
+ ...argv.map(quote),
174
+ "--confirm",
175
+ token
176
+ ].join(" ")
177
+ }]
178
+ });
179
+ }
180
+ //#endregion
181
+ //#region src/cli/core/help.ts
182
+ const CLI_COMMANDS_SCHEMA = "https://permdock.com/schemas/cli-commands-v1.json";
183
+ function flagLabel(name, flag) {
184
+ const alias = flag.alias === void 0 ? "" : `-${flag.alias}, `;
185
+ if (flag.type === "boolean") return `${alias}--${name}`;
186
+ return `${alias}--${name} <${flag.type === "enum" ? flag.valueHint ?? flag.options.join("|") : flag.valueHint ?? "value"}>`;
187
+ }
188
+ function flagText(flag) {
189
+ const text = notedText(flag);
190
+ return flag.type === "enum" && flag.valueHint !== void 0 ? `${text}; one of ${flag.options.join(", ")}` : text;
191
+ }
192
+ function notedText(flag) {
193
+ const notes = [];
194
+ if (flag.type !== "boolean" && flag.repeatable === true) notes.push("repeatable");
195
+ if (flag.type === "enum" && flag.default !== void 0) notes.push(`default ${flag.default}`);
196
+ return notes.length === 0 ? flag.description : `${flag.description} (${notes.join(", ")})`;
197
+ }
198
+ function table(rows, style) {
199
+ const width = Math.max(0, ...rows.map(([left]) => left.length));
200
+ return rows.map(([left, right]) => ` ${style.paint("cyan", left.padEnd(width))} ${right}`);
201
+ }
202
+ function flagRows(flags) {
203
+ const rows = [];
204
+ for (const [name, flag] of Object.entries(flags)) {
205
+ if (flag.hidden === true) continue;
206
+ rows.push([flagLabel(name, flag), flagText(flag)]);
207
+ if (flag.type === "boolean" && flag.negativeDescription !== void 0) rows.push([`--no-${name}`, flag.negativeDescription]);
208
+ }
209
+ return rows;
210
+ }
211
+ function positionalUsage(positionals) {
212
+ return positionals.map((item) => {
213
+ const name = `${item.name}${item.variadic === true ? "..." : ""}`;
214
+ return item.required === true ? `<${name}>` : `[${name}]`;
215
+ }).join(" ");
216
+ }
217
+ function visible(entries) {
218
+ return entries.filter((entry) => entry.kind === "group" || entry.hidden !== true);
219
+ }
220
+ function rootHelp(color) {
221
+ const style = createStyle(color);
222
+ const lines = [
223
+ `${style.paint("bold", "permdock")} ${cliVersion()}: ${ROOT.summary}`,
224
+ "",
225
+ `${style.paint("bold", "Usage")} permdock <command> [flags]`
226
+ ];
227
+ for (const section of SECTIONS) lines.push("", style.paint("bold", section.title), ...table(visible(section.entries).map((entry) => [entry.name, entry.summary]), style));
228
+ lines.push("", style.paint("bold", "Global flags"), ...table([...flagRows(GLOBAL_FLAGS), ["-v, --version", "Print the permdock version"]], style), "", `Run permdock <command> --help for its flags. Docs: ${DOCS_BASE}`);
229
+ return `${lines.join("\n")}\n`;
230
+ }
231
+ function groupHelp(path, group, color) {
232
+ const style = createStyle(color);
233
+ const name = `permdock ${path.join(" ")}`;
234
+ const rows = visible(group.children).map((child) => [`${path.join(" ")} ${child.name}`, child.summary]);
235
+ return `${[
236
+ `${style.paint("bold", name)}: ${group.summary}`,
237
+ "",
238
+ `${style.paint("bold", "Usage")} ${name} <command> [flags]`,
239
+ "",
240
+ style.paint("bold", "Commands"),
241
+ ...table(rows, style),
242
+ "",
243
+ `Run ${name} <command> --help for its flags. Docs: ${DOCS_BASE}/${group.docs}`
244
+ ].join("\n")}\n`;
245
+ }
246
+ function leafHelp(path, entry, leaf, color) {
247
+ const style = createStyle(color);
248
+ const name = `permdock ${path.join(" ")}`;
249
+ const positionals = positionalUsage(leaf.positionals ?? []);
250
+ const lines = [
251
+ `${style.paint("bold", name)}: ${entry.summary}`,
252
+ "",
253
+ `${style.paint("bold", "Usage")} ${name}${positionals === "" ? "" : ` ${positionals}`} [flags]`
254
+ ];
255
+ const args = leaf.positionals ?? [];
256
+ if (args.length > 0) lines.push("", style.paint("bold", "Arguments"), ...table(args.map((item) => [item.name, item.description]), style));
257
+ const rows = flagRows(leaf.flags);
258
+ if (rows.length > 0) lines.push("", style.paint("bold", "Flags"), ...table(rows, style));
259
+ lines.push("", style.paint("bold", "Global flags"), ` ${Object.keys(GLOBAL_FLAGS).map((flag) => `--${flag}`).join(" ")}; see permdock --help`);
260
+ if (entry.examples.length > 0) lines.push("", style.paint("bold", "Examples"), ...entry.examples.map((example) => ` ${example}`));
261
+ lines.push("", `${style.paint("bold", "Side effects")} ${entry.effects.length === 0 ? "none: reads only" : entry.effects.join(", ")}`, `${style.paint("bold", "Docs")} ${DOCS_BASE}/${entry.docs}`);
262
+ return `${lines.join("\n")}\n`;
263
+ }
264
+ function flagJson(name, flag) {
265
+ return {
266
+ name,
267
+ type: flag.type,
268
+ description: flag.description,
269
+ ...flag.alias === void 0 ? {} : { aliases: [flag.alias] },
270
+ ...flag.type === "enum" ? { choices: flag.options } : {},
271
+ ...flag.type !== "string" && flag.default !== void 0 ? { default: flag.default } : {},
272
+ ...flag.type !== "boolean" && flag.repeatable === true ? { list: true } : {},
273
+ ...flag.type === "string" && flag.valueHint !== void 0 ? { valueHint: flag.valueHint } : {}
274
+ };
275
+ }
276
+ function flagsJson(flags) {
277
+ return Object.entries(flags).filter(([, flag]) => flag.hidden !== true).map(([name, flag]) => flagJson(name, flag));
278
+ }
279
+ /** One leaf as `cli-commands-v1` describes it. */
280
+ function leafJson(path, entry, leaf) {
281
+ return {
282
+ name: path.at(-1) ?? "",
283
+ path: path.join(" "),
284
+ description: entry.summary,
285
+ docs: `${DOCS_BASE}/${entry.docs}`,
286
+ examples: entry.examples,
287
+ effects: entry.effects,
288
+ config: entry.config,
289
+ arguments: (leaf.positionals ?? []).map((item) => ({
290
+ name: item.name,
291
+ description: item.description,
292
+ required: item.required === true,
293
+ variadic: item.variadic === true
294
+ })),
295
+ options: flagsJson(leaf.flags)
296
+ };
297
+ }
298
+ function document(commands) {
299
+ return {
300
+ $schema: CLI_COMMANDS_SCHEMA,
301
+ name: "permdock",
302
+ version: cliVersion(),
303
+ options: flagsJson(GLOBAL_FLAGS),
304
+ commands
305
+ };
306
+ }
307
+ /** `<command> --help --json`: the `cli-commands-v1` document with that command only. */
308
+ function leafDocument(path, entry, leaf) {
309
+ return document([leafJson(path, entry, leaf)]);
310
+ }
311
+ /** `--help --json`: the commands under `path` in the `cli-commands-v1` format. */
312
+ async function commandsJson(path, group) {
313
+ const listed = leaves(group, path).filter((item) => item.entry.hidden !== true);
314
+ return document(await Promise.all(listed.map(async (item) => leafJson(item.path, item.entry, await item.entry.load()))));
315
+ }
316
+ //#endregion
317
+ //#region src/cli/core/run.ts
318
+ const NO_CONFIG = {
319
+ config: {},
320
+ warnings: [],
321
+ file: void 0
322
+ };
323
+ /** Takes the global flags out of argv, wherever they sit before `--`. */
324
+ function extractGlobals(argv) {
325
+ const end = argv.indexOf("--");
326
+ const before = end === -1 ? argv : argv.slice(0, end);
327
+ const after = end === -1 ? [] : argv.slice(end);
328
+ const spellings = /* @__PURE__ */ new Map();
329
+ for (const [name, flag] of Object.entries(GLOBAL_FLAGS)) {
330
+ spellings.set(`--${name}`, name);
331
+ if (flag.type === "boolean") spellings.set(`--no-${name}`, name);
332
+ if ("alias" in flag) spellings.set(`-${flag.alias}`, name);
333
+ }
334
+ const taken = [];
335
+ const rest = [];
336
+ for (let i = 0; i < before.length; i += 1) {
337
+ const token = before[i] ?? "";
338
+ const spelling = beforeFirst(token, "=");
339
+ const name = token.startsWith("-") ? spellings.get(spelling) : void 0;
340
+ if (name === void 0) {
341
+ rest.push(token);
342
+ continue;
343
+ }
344
+ taken.push(token);
345
+ const flag = GLOBAL_FLAGS[name];
346
+ const next = before[i + 1];
347
+ if (flag !== void 0 && flag.type !== "boolean" && !token.includes("=") && next !== void 0 && (next === "-" || !next.startsWith("-"))) {
348
+ taken.push(next);
349
+ i += 1;
350
+ }
351
+ }
352
+ const lenient = {
353
+ ...GLOBAL_FLAGS,
354
+ format: {
355
+ type: "string",
356
+ description: ""
357
+ },
358
+ agent: {
359
+ type: "string",
360
+ description: ""
361
+ }
362
+ };
363
+ const parsed = parseFlags("permdock", taken, lenient).values;
364
+ const text = (key) => {
365
+ const value = parsed.get(key);
366
+ return typeof value === "string" ? value : void 0;
367
+ };
368
+ const flag = (key) => {
369
+ const value = parsed.get(key);
370
+ return typeof value === "boolean" ? value : void 0;
371
+ };
372
+ const cwd = text("cwd");
373
+ const config = text("config");
374
+ const json = flag("json");
375
+ const format = text("format");
376
+ const agent = text("agent");
377
+ const confirm = text("confirm");
378
+ return {
379
+ globals: {
380
+ ...cwd === void 0 ? {} : { cwd },
381
+ ...config === void 0 ? {} : { config },
382
+ ...json === void 0 ? {} : { json },
383
+ ...format === void 0 ? {} : { format },
384
+ ...agent === void 0 ? {} : { agent },
385
+ ...confirm === void 0 ? {} : { confirm },
386
+ yes: flag("yes") === true,
387
+ debug: flag("debug") === true,
388
+ color: flag("color") !== false,
389
+ help: flag("help") === true
390
+ },
391
+ rest: [...rest, ...after]
392
+ };
393
+ }
394
+ function isDirectory(path) {
395
+ try {
396
+ return statSync(path).isDirectory();
397
+ } catch {
398
+ return false;
399
+ }
400
+ }
401
+ function lined(text) {
402
+ return text === "" || text.endsWith("\n") ? text : `${text}\n`;
403
+ }
404
+ /**
405
+ * The step that answers an `input_required` error without its own `next`:
406
+ * the same command line with each missing flag or positional filled by a
407
+ * placeholder the caller replaces.
408
+ */
409
+ function missingInputNext(argv, error) {
410
+ const missing = error.extensions["missing"];
411
+ if (error.code !== "input_required" || !Array.isArray(missing) || !missing.every((item) => typeof item === "string")) return;
412
+ const filled = missing.flatMap((item) => item.startsWith("--") ? [item, `<${item.slice(2)}>`] : [item]);
413
+ return [{
414
+ when: "with the values the user gives",
415
+ command: [
416
+ "permdock",
417
+ ...argv.map(quote),
418
+ ...filled
419
+ ].join(" ")
420
+ }];
421
+ }
422
+ /** The `--flag` tokens before `--`, as typed without a value. */
423
+ function typedFlags(argv) {
424
+ const end = argv.indexOf("--");
425
+ return (end === -1 ? argv : argv.slice(0, end)).filter((token) => token.startsWith("--")).map((token) => beforeFirst(token, "="));
426
+ }
427
+ async function run(argv, options) {
428
+ const stdoutChunks = [];
429
+ const stderrChunks = [];
430
+ const io = options?.io ?? {
431
+ stdout: (text) => {
432
+ stdoutChunks.push(text);
433
+ },
434
+ stderr: (text) => {
435
+ stderrChunks.push(text);
436
+ }
437
+ };
438
+ const secrets = /* @__PURE__ */ new Set();
439
+ const writeOut = (text) => {
440
+ const line = redact(lined(text), secrets);
441
+ io.stdout(line);
442
+ if (options?.io !== void 0) stdoutChunks.push(line);
443
+ };
444
+ const writeErrRaw = (raw) => {
445
+ const text = redact(raw, secrets);
446
+ io.stderr(text);
447
+ if (options?.io !== void 0) stderrChunks.push(text);
448
+ };
449
+ const writeErr = (text) => {
450
+ writeErrRaw(lined(text));
451
+ };
452
+ const done = (code) => ({
453
+ code,
454
+ stdout: stdoutChunks.join(""),
455
+ stderr: stderrChunks.join("")
456
+ });
457
+ const first = argv[0];
458
+ if (argv.length === 1 && (first === "--version" || first === "-v")) {
459
+ writeOut(cliVersion());
460
+ return done(0);
461
+ }
462
+ const env = io.env ?? process.env;
463
+ const { globals, rest } = extractGlobals(argv);
464
+ let agentProblem;
465
+ let agent = false;
466
+ try {
467
+ agent = agentMode(globals.agent, io.env ?? {}, {
468
+ stdoutIsTty: io.stdoutIsTty === true,
469
+ exists: existsSync
470
+ });
471
+ } catch (error) {
472
+ if (!(error instanceof CliError)) throw error;
473
+ agentProblem = error;
474
+ }
475
+ const color = io.color === true && globals.color;
476
+ const errStyle = createStyle(io.errColor === true && globals.color);
477
+ const plain = (text) => color ? text : stripVTControlCharacters(text);
478
+ const trace = (message) => {
479
+ if (globals.debug) writeErr(errStyle.paint("dim", `debug: ${message}`));
480
+ };
481
+ const helpWord = rest[0] === "help";
482
+ const resolved = resolve(helpWord ? rest.slice(1) : rest);
483
+ const command = resolved.path.join(" ");
484
+ const askedHelp = globals.help || helpWord;
485
+ const agentJson = agent && globals.json !== false && !(resolved.kind === "leaf" && resolved.entry.shellOutput === true);
486
+ const formatOf = () => {
487
+ const given = globals.format;
488
+ if (given === void 0) return globals.json === true || agentJson ? "json" : "text";
489
+ if (given === "text" || given === "json" || given === "github" || given === "sarif") {
490
+ if (globals.json === true && given !== "json") return cliProblem("usage", `--json and --format ${given} ask for different output; pick one`, command === "" ? void 0 : command, { code: "invalid_value" });
491
+ return given;
492
+ }
493
+ if (resolved.kind === "leaf") {
494
+ const rename = flagRename(command, "--format");
495
+ if (rename !== void 0) return cliProblem("usage", renameMessage(command, rename), command, {
496
+ code: "flag_renamed",
497
+ extensions: {
498
+ flag: "--format",
499
+ replacement: rename.to
500
+ }
501
+ });
502
+ }
503
+ return cliProblem("usage", `--format '${given}' is not one of text, json, github, sarif.${suggestion(given, [
504
+ "text",
505
+ "json",
506
+ "github",
507
+ "sarif"
508
+ ])}`, command === "" ? void 0 : command, { code: "invalid_value" });
509
+ };
510
+ const formatOrProblem = formatOf();
511
+ const format = typeof formatOrProblem === "string" ? formatOrProblem : globals.json === true || agentJson ? "json" : "text";
512
+ const json = format === "json";
513
+ const helpJson = globals.json === true || globals.format === "json";
514
+ const emitProblem = (problem, next) => {
515
+ if (json) writeOut(JSON.stringify(envelope({
516
+ status: problem.exitCode === 3 ? "action_required" : "error",
517
+ error: problem,
518
+ ...next === void 0 ? {} : { next }
519
+ }), null, 2));
520
+ else {
521
+ writeErr(problem.detail);
522
+ for (const step of next ?? []) writeErr(` ${step.when}: ${step.command}`);
523
+ }
524
+ return done(problem.exitCode);
525
+ };
526
+ const fail = (error) => {
527
+ if (globals.debug && error instanceof Error) {
528
+ writeErr(errStyle.paint("dim", error.stack ?? error.message));
529
+ if (error.cause !== void 0) writeErr(errStyle.paint("dim", `cause: ${describeError(error.cause)}`));
530
+ }
531
+ return emitProblem(problemOf(error, command === "" ? void 0 : command), error instanceof CliError ? error.next ?? (json ? missingInputNext(argv, error) : void 0) : void 0);
532
+ };
533
+ if (typeof formatOrProblem !== "string") return emitProblem(formatOrProblem);
534
+ if (agentProblem !== void 0) return fail(agentProblem);
535
+ if (resolved.kind === "group") {
536
+ if (resolved.unknown !== void 0) {
537
+ const names = resolved.entry.children.filter((child) => child.kind === "group" || child.hidden !== true).map((child) => child.name);
538
+ const where = command === "" ? "permdock" : `permdock ${command}`;
539
+ return fail(new CliError("usage", `unknown command '${resolved.unknown}' for ${where}.${suggestion(resolved.unknown, names)} Commands: ${names.join(", ")}.`, { code: "unknown_command" }));
540
+ }
541
+ if (askedHelp) {
542
+ if (helpJson) {
543
+ writeOut(JSON.stringify(await commandsJson(resolved.path, resolved.entry), null, 2));
544
+ return done(0);
545
+ }
546
+ writeOut(plain(resolved.path.length === 0 ? rootHelp(color) : groupHelp(resolved.path, resolved.entry, color)));
547
+ return done(0);
548
+ }
549
+ return bareGroup(resolved.path, resolved.entry, rest);
550
+ }
551
+ if (askedHelp) {
552
+ const leaf = await resolved.entry.load();
553
+ if (helpJson) {
554
+ writeOut(JSON.stringify(leafDocument(resolved.path, resolved.entry, leaf), null, 2));
555
+ return done(0);
556
+ }
557
+ writeOut(plain(leafHelp(resolved.path, resolved.entry, leaf, color)));
558
+ return done(0);
559
+ }
560
+ return runLeaf(resolved.path, resolved.entry, resolved.rest);
561
+ function bareGroup(path, group, tokens) {
562
+ const name = path.join(" ");
563
+ const moved = COMMAND_MOVES.find((move) => move.from === name);
564
+ if (moved !== void 0 && tokens.some((token) => token.startsWith("-"))) return fail(new CliError("usage", `permdock ${name} needs a command since 0.5.0: permdock ${moved.to}`, {
565
+ code: "command_moved",
566
+ extensions: { replacement: `permdock ${moved.to}` }
567
+ }));
568
+ const help = path.length === 0 ? rootHelp(false) : groupHelp(path, group, false);
569
+ if (json) return emitProblem(cliProblem("usage", `permdock${name === "" ? "" : ` ${name}`} needs a command`, name === "" ? void 0 : name, {
570
+ code: "usage",
571
+ extensions: { choices: { "<command>": group.children.filter((child) => child.kind === "group" || child.hidden !== true).map((child) => child.name) } }
572
+ }));
573
+ writeErr(help);
574
+ return done(2);
575
+ }
576
+ async function runLeaf(path, entry, tokens) {
577
+ const name = path.join(" ");
578
+ if ((format === "github" || format === "sarif") && entry.findings !== true) return fail(new CliError("usage", `--format ${format} renders findings, and permdock ${name} reports none; use text or json`, { code: "invalid_value" }));
579
+ if (globals.cwd === "") return fail(new CliError("usage", "--cwd needs a directory", { code: "invalid_value" }));
580
+ const cwd = resolveCwd(globals.cwd, options?.cwd ?? process.cwd());
581
+ if (!isDirectory(cwd)) return fail(new CliError("usage", `--cwd ${cwd} is not a directory`, { code: "invalid_value" }));
582
+ let leaf;
583
+ let input;
584
+ try {
585
+ leaf = await entry.load();
586
+ } catch (error) {
587
+ return fail(error);
588
+ }
589
+ const declared = new Set(flagSpellings(leaf.flags));
590
+ for (const flag of typedFlags(tokens)) {
591
+ const rename = declared.has(flag) ? void 0 : flagRename(name, flag);
592
+ if (rename !== void 0) return fail(new CliError("usage", renameMessage(name, rename), {
593
+ code: "flag_renamed",
594
+ extensions: {
595
+ flag,
596
+ ...rename.to === void 0 ? {} : { replacement: rename.to }
597
+ }
598
+ }));
599
+ }
600
+ try {
601
+ input = parseLeaf(name, tokens, leaf.flags, leaf.positionals);
602
+ } catch (error) {
603
+ return fail(error);
604
+ }
605
+ if (agent) {
606
+ const reasons = consentReasons(entry.effects, input.flags);
607
+ if (reasons.length > 0) {
608
+ const replay = [
609
+ ...replayArgv([...path, ...tokens]),
610
+ ...globals.cwd === void 0 ? [] : ["--cwd", globals.cwd],
611
+ ...globals.config === void 0 ? [] : ["--config", globals.config]
612
+ ];
613
+ const token = consentToken(reasons, replay, cwd);
614
+ if (globals.confirm !== token) return fail(consentRequired(name, reasons, replay, token));
615
+ }
616
+ }
617
+ trace(`${name}: agent mode ${agent ? "on" : "off"}, ${format} output, cwd ${cwd}`);
618
+ let loaded = NO_CONFIG;
619
+ if (entry.config || globals.config !== void 0) {
620
+ try {
621
+ loaded = await readConfig(cwd, globals.config);
622
+ } catch (error) {
623
+ return fail(error);
624
+ }
625
+ trace(loaded.file === void 0 ? "config file: none found" : `config file: ${loaded.file}`);
626
+ if (name !== "config") for (const warning of loaded.warnings) writeErr(errStyle.paint("yellow", `permdock: warning: ${warning}`));
627
+ }
628
+ const signal = io.signal ?? new AbortController().signal;
629
+ const interactive = io.interactive === true && !json && !globals.yes && !agent && format === "text";
630
+ const ctx = {
631
+ command: name,
632
+ cwd,
633
+ config: loaded.config,
634
+ ...globals.config === void 0 ? {} : { configFile: globals.config },
635
+ ...loaded.file === void 0 ? {} : { configPath: loaded.file },
636
+ configWarnings: loaded.warnings,
637
+ io: {
638
+ ...io,
639
+ stdout: writeOut,
640
+ stderr: writeErr
641
+ },
642
+ env,
643
+ now: io.now?.() ?? dateAt(),
644
+ json,
645
+ format,
646
+ color,
647
+ errStyle,
648
+ interactive,
649
+ agent,
650
+ yes: globals.yes,
651
+ debug: globals.debug,
652
+ signal,
653
+ argv: [...path, ...tokens],
654
+ addSecret: (value) => {
655
+ secrets.add(value);
656
+ },
657
+ log: writeErr,
658
+ trace,
659
+ progress: progressReporter({
660
+ write: writeErrRaw,
661
+ tty: io.stderrIsTty === true && !agent,
662
+ style: errStyle
663
+ })
664
+ };
665
+ let result;
666
+ try {
667
+ result = await leaf.run(ctx, input);
668
+ } catch (error) {
669
+ return fail(error);
670
+ }
671
+ trace(`${name}: exit ${String(result.code)}`);
672
+ return render(name, result);
673
+ }
674
+ function render(name, result) {
675
+ if (result.streamed === true) return done(result.code);
676
+ if (format === "github" || format === "sarif") {
677
+ const findings = result.findings ?? [];
678
+ writeOut(format === "github" ? githubAnnotations(findings) || "" : sarifLog(name, findings));
679
+ return done(result.code);
680
+ }
681
+ if (json) {
682
+ const parsed = dataOf(result.output);
683
+ const data = result.data ?? parsed;
684
+ if (result.code === 0) {
685
+ writeOut(JSON.stringify(envelope({
686
+ status: "success",
687
+ ...data === void 0 ? {} : { data },
688
+ ...result.next === void 0 ? {} : { next: result.next }
689
+ }), null, 2));
690
+ return done(0);
691
+ }
692
+ const kind = kindOfCode(result.code);
693
+ const report = result.data !== void 0 || isReport(data) ? data : void 0;
694
+ const problem = cliProblem(kind, problemDetail(result.output, parsed), name, { exitCode: result.code });
695
+ writeOut(JSON.stringify(envelope({
696
+ status: problem.exitCode === 3 ? "action_required" : "error",
697
+ ...report === void 0 ? {} : { data: report },
698
+ error: problem
699
+ }), null, 2));
700
+ return done(result.code);
701
+ }
702
+ const text = plain(result.output);
703
+ if (text !== "") {
704
+ if (result.code === 0 || result.code === 1) writeOut(text);
705
+ else writeErr(text);
706
+ }
707
+ return done(result.code);
708
+ }
709
+ }
710
+ /** A JSON report object, as opposed to text wrapped as `{ message }`. */
711
+ function isReport(data) {
712
+ return typeof data === "object" && data !== null && !(Object.keys(data).length === 1 && "message" in data);
713
+ }
714
+ function problemDetail(output, data) {
715
+ if (!isReport(data)) return output.trim();
716
+ if (typeof data === "object" && data !== null) {
717
+ const detail = Reflect.get(data, "detail");
718
+ if (typeof detail === "string") return detail;
719
+ }
720
+ return "The command reported a problem; see data";
721
+ }
722
+ //#endregion
723
+ export { run as t };