mulmoclaude 0.6.4 → 0.7.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 (302) hide show
  1. package/bin/mulmoclaude.js +1 -1
  2. package/client/assets/{html2canvas-CDGcmOD3-XVrO-eyz.js → html2canvas-CDGcmOD3-CKJ6vKPo.js} +1 -1
  3. package/client/assets/{index-zZIqEbNX.js → index-BG_JJcKI.js} +193 -197
  4. package/client/assets/index-DCoo3kpR.css +2 -0
  5. package/client/assets/{index.es-DqtpmBm8-DHT6q10o.js → index.es-DqtpmBm8-DFXjJgCa.js} +1 -1
  6. package/client/assets/lib-Dpph7PBN.js +114 -0
  7. package/client/assets/marp-cCGismx0.js +3452 -0
  8. package/client/assets/schemas-DuYzyHQc.js +64 -0
  9. package/client/index.html +5 -4
  10. package/package.json +7 -5
  11. package/server/agent/backend/claude-code.ts +44 -10
  12. package/server/agent/backend/fake-echo.ts +5 -1
  13. package/server/agent/config.ts +49 -12
  14. package/server/agent/mcp-server.ts +13 -2
  15. package/server/agent/mcp-tools/handlePermission.ts +115 -0
  16. package/server/agent/mcp-tools/index.ts +2 -1
  17. package/server/agent/mcp-tools/x.ts +18 -2
  18. package/server/agent/prompt.ts +3 -45
  19. package/server/api/csrfGuard.ts +122 -32
  20. package/server/api/routes/collections.ts +320 -0
  21. package/server/api/routes/config.ts +45 -0
  22. package/server/api/routes/feeds.ts +70 -0
  23. package/server/api/routes/files.ts +167 -0
  24. package/server/api/routes/marp-themes.ts +15 -0
  25. package/server/api/routes/mulmo-script.ts +139 -0
  26. package/server/api/routes/pdf.ts +108 -0
  27. package/server/api/routes/plugins.ts +10 -0
  28. package/server/api/routes/shortcuts.ts +49 -0
  29. package/server/api/routes/wiki.ts +35 -0
  30. package/server/build/dispatcher.mjs +40 -22
  31. package/server/events/notifications.ts +14 -9
  32. package/server/index.ts +49 -14
  33. package/server/plugins/preset-list.ts +18 -10
  34. package/server/plugins/preset-loader.ts +11 -4
  35. package/server/prompts/index.ts +1 -3
  36. package/server/prompts/system/system.md +7 -2
  37. package/server/system/env.ts +14 -0
  38. package/server/utils/clientDir.ts +7 -0
  39. package/server/utils/files/index.ts +0 -2
  40. package/server/utils/files/shortcuts-io.ts +63 -0
  41. package/server/utils/slug.ts +3 -4
  42. package/server/workspace/billing-migration.ts +69 -0
  43. package/server/workspace/collections/delete.ts +186 -0
  44. package/server/workspace/collections/discovery.ts +730 -0
  45. package/server/workspace/collections/index.ts +23 -0
  46. package/server/workspace/collections/io.ts +287 -0
  47. package/server/workspace/collections/notifications.ts +404 -0
  48. package/server/workspace/collections/paths.ts +125 -0
  49. package/server/workspace/collections/spawn.ts +213 -0
  50. package/server/workspace/collections/templatePath.ts +36 -0
  51. package/server/workspace/collections/types.ts +334 -0
  52. package/server/workspace/collections/watcher.ts +398 -0
  53. package/server/workspace/feeds/engine.ts +135 -0
  54. package/server/workspace/feeds/fetch/httpClient.ts +127 -0
  55. package/server/workspace/feeds/fetch/rssParser.ts +117 -0
  56. package/server/workspace/feeds/index.ts +8 -0
  57. package/server/workspace/feeds/ingestTypes.ts +66 -0
  58. package/server/workspace/feeds/pathResolver.ts +74 -0
  59. package/server/workspace/feeds/paths.ts +30 -0
  60. package/server/workspace/feeds/projectItem.ts +92 -0
  61. package/server/workspace/feeds/registry.ts +43 -0
  62. package/server/workspace/feeds/retrievers/httpJson.ts +19 -0
  63. package/server/workspace/feeds/retrievers/index.ts +27 -0
  64. package/server/workspace/feeds/retrievers/registerAll.ts +5 -0
  65. package/server/workspace/feeds/retrievers/rss.ts +24 -0
  66. package/server/workspace/feeds/state.ts +55 -0
  67. package/server/workspace/helps/billing-clients-worklog.md +215 -0
  68. package/server/workspace/helps/billing-invoice.md +457 -0
  69. package/server/workspace/helps/collection-skills.md +664 -0
  70. package/server/workspace/helps/feeds.md +110 -0
  71. package/server/workspace/helps/index.md +9 -3
  72. package/server/workspace/helps/portfolio-tracker.md +211 -0
  73. package/server/workspace/helps/presentation-deck.md +828 -0
  74. package/server/workspace/helps/todo-collection.md +140 -0
  75. package/server/workspace/helps/vocabulary.md +106 -0
  76. package/server/workspace/hooks/handlers/skillBridge.ts +101 -40
  77. package/server/workspace/marp-themes.ts +46 -0
  78. package/server/workspace/paths.ts +46 -11
  79. package/server/workspace/skills-preset/mc-manage-skills/SKILL.md +13 -0
  80. package/server/workspace/skills-preset/mc-wiki-deep-lint/SKILL.md +108 -0
  81. package/server/workspace/skills-preset/mc-wiki-health-check/SKILL.md +61 -0
  82. package/server/workspace/skills-preset/mc-wiki-ingest/SKILL.md +182 -0
  83. package/server/workspace/skills-preset/mc-wiki-promote/SKILL.md +175 -0
  84. package/server/workspace/skills-preset.ts +376 -2
  85. package/server/workspace/wiki-pages/io.ts +34 -2
  86. package/server/workspace/workspace.ts +20 -1
  87. package/src/App.vue +70 -41
  88. package/src/components/BackendOfflineBanner.vue +56 -0
  89. package/src/components/ChatInput.vue +72 -6
  90. package/src/components/CollectionCalendarView.vue +243 -0
  91. package/src/components/CollectionDashboardView.vue +181 -0
  92. package/src/components/CollectionDayView.vue +308 -0
  93. package/src/components/CollectionEmbedView.vue +69 -0
  94. package/src/components/CollectionKanbanView.vue +196 -0
  95. package/src/components/CollectionRecordModal.vue +93 -0
  96. package/src/components/CollectionRecordPanel.vue +567 -0
  97. package/src/components/CollectionView.vue +1748 -0
  98. package/src/components/CollectionsIndexView.vue +152 -0
  99. package/src/components/ConfirmModal.vue +344 -0
  100. package/src/components/FeedsView.vue +225 -0
  101. package/src/components/FileContentRenderer.vue +122 -30
  102. package/src/components/FileTree.vue +218 -2
  103. package/src/components/FileTreePane.vue +2 -0
  104. package/src/components/FilesView.vue +95 -17
  105. package/src/components/PinToggle.vue +52 -0
  106. package/src/components/PluginLauncher.vue +97 -37
  107. package/src/components/RightSidebar.vue +74 -3
  108. package/src/components/RolesView.vue +1 -1
  109. package/src/components/SettingsModal.vue +146 -72
  110. package/src/components/SlashCommandMenu.vue +56 -0
  111. package/src/components/StackView.vue +128 -48
  112. package/src/components/collectionEmbed.ts +29 -0
  113. package/src/components/collectionTypes.ts +177 -0
  114. package/src/composables/collections/useCollectionRendering.ts +350 -0
  115. package/src/composables/useConfirm.ts +70 -0
  116. package/src/composables/useFileTree.ts +35 -3
  117. package/src/composables/useImeAwareEnter.ts +14 -0
  118. package/src/composables/usePdfDownload.ts +6 -1
  119. package/src/composables/useShortcuts.ts +163 -0
  120. package/src/composables/useSlashCommandMenu.ts +138 -0
  121. package/src/config/apiRoutes.ts +46 -13
  122. package/src/config/createFilePolicy.ts +82 -0
  123. package/src/config/roles.ts +46 -47
  124. package/src/config/systemFileDescriptors.ts +0 -30
  125. package/src/config/toolNames.ts +1 -5
  126. package/src/config/workspacePaths.ts +4 -9
  127. package/src/lang/de.ts +154 -221
  128. package/src/lang/en.ts +153 -218
  129. package/src/lang/es.ts +154 -219
  130. package/src/lang/fr.ts +155 -221
  131. package/src/lang/index.ts +55 -0
  132. package/src/lang/ja.ts +153 -219
  133. package/src/lang/ko.ts +153 -218
  134. package/src/lang/pt-BR.ts +154 -219
  135. package/src/lang/zh.ts +152 -218
  136. package/src/lib/vue-i18n.ts +15 -45
  137. package/src/lib/wiki-page/graph.ts +108 -0
  138. package/src/main.ts +2 -5
  139. package/src/plugins/_generated/metas.ts +2 -8
  140. package/src/plugins/_generated/registrations.ts +2 -4
  141. package/src/plugins/_generated/server-bindings.ts +5 -12
  142. package/src/plugins/manageSkills/View.vue +36 -68
  143. package/src/plugins/manageSkills/presetDetection.ts +25 -0
  144. package/src/plugins/markdown/MarpView.vue +301 -0
  145. package/src/plugins/markdown/Preview.vue +26 -3
  146. package/src/plugins/markdown/View.vue +230 -1
  147. package/src/plugins/markdown/definition.ts +21 -1
  148. package/src/plugins/presentCollection/Preview.vue +30 -0
  149. package/src/plugins/presentCollection/View.vue +78 -0
  150. package/src/plugins/presentCollection/definition.ts +30 -0
  151. package/src/plugins/presentCollection/index.ts +25 -0
  152. package/src/plugins/presentCollection/meta.ts +15 -0
  153. package/src/plugins/presentCollection/plugin.ts +39 -0
  154. package/src/plugins/presentCollection/types.ts +13 -0
  155. package/src/plugins/presentForm/View.vue +56 -6
  156. package/src/plugins/presentForm/types.ts +3 -3
  157. package/src/plugins/presentMulmoScript/View.vue +252 -5
  158. package/src/plugins/presentMulmoScript/helpers.ts +18 -0
  159. package/src/plugins/presentMulmoScript/meta.ts +11 -0
  160. package/src/plugins/scheduler/AutomationsView.vue +13 -11
  161. package/src/plugins/scheduler/automationsDefinition.ts +7 -10
  162. package/src/plugins/scheduler/automationsMeta.ts +27 -0
  163. package/src/plugins/scheduler/index.ts +19 -38
  164. package/src/plugins/wiki/View.vue +120 -27
  165. package/src/plugins/wiki/components/WikiGraphView.vue +75 -0
  166. package/src/plugins/wiki/components/WikiPageBody.vue +18 -0
  167. package/src/plugins/wiki/index.ts +6 -0
  168. package/src/plugins/wiki/route.ts +8 -1
  169. package/src/router/index.ts +31 -34
  170. package/src/router/pageRoutes.ts +2 -7
  171. package/src/tools/types.ts +4 -3
  172. package/src/types/notification.ts +5 -9
  173. package/src/types/session.ts +11 -0
  174. package/src/types/shortcuts.ts +37 -0
  175. package/src/utils/agent/eventDispatch.ts +4 -0
  176. package/src/utils/api.ts +47 -1
  177. package/src/utils/canvas/stackGrouping.ts +96 -0
  178. package/src/utils/chat/permalink.ts +20 -0
  179. package/src/utils/collections/actionVisible.ts +55 -0
  180. package/src/utils/collections/calendarGrid.ts +328 -0
  181. package/src/utils/collections/collectionViewMode.ts +42 -0
  182. package/src/utils/collections/derivedFormula.ts +364 -0
  183. package/src/utils/collections/draft.ts +160 -0
  184. package/src/utils/collections/enumColors.ts +130 -0
  185. package/src/utils/collections/itemLabel.ts +42 -0
  186. package/src/utils/confirmDelete.ts +13 -0
  187. package/src/utils/markdown/marpAspect.ts +28 -0
  188. package/src/utils/markdown/marpCustomSize.ts +120 -0
  189. package/src/utils/markdown/marpDetect.ts +15 -0
  190. package/src/utils/markdown/marpTheme.ts +109 -0
  191. package/src/utils/markdown/wikiEmbedHandlers.ts +1 -1
  192. package/src/utils/path/workspaceLinkRouter.ts +126 -9
  193. package/src/utils/session/sessionEntries.ts +1 -0
  194. package/src/utils/session/sessionFactory.ts +1 -0
  195. package/src/utils/session/sessionHelpers.ts +6 -1
  196. package/client/assets/index-CyBr8Mkr.css +0 -2
  197. package/server/api/routes/encore.ts +0 -55
  198. package/server/api/routes/news.ts +0 -133
  199. package/server/api/routes/sources.ts +0 -550
  200. package/server/encore/INVARIANTS.md +0 -272
  201. package/server/encore/boot.ts +0 -39
  202. package/server/encore/closure.ts +0 -36
  203. package/server/encore/cycle.ts +0 -276
  204. package/server/encore/dispatch.ts +0 -103
  205. package/server/encore/handlers/amend.ts +0 -99
  206. package/server/encore/handlers/appendNote.ts +0 -74
  207. package/server/encore/handlers/defineEncore.ts +0 -42
  208. package/server/encore/handlers/listTickets.ts +0 -107
  209. package/server/encore/handlers/markStepDone.ts +0 -41
  210. package/server/encore/handlers/markTargetSkipped.ts +0 -33
  211. package/server/encore/handlers/query.ts +0 -138
  212. package/server/encore/handlers/recordValues.ts +0 -44
  213. package/server/encore/handlers/resolveNotification.ts +0 -121
  214. package/server/encore/handlers/setup.ts +0 -81
  215. package/server/encore/handlers/shared.ts +0 -137
  216. package/server/encore/handlers/snooze.ts +0 -87
  217. package/server/encore/handlers/startObligationChat.ts +0 -64
  218. package/server/encore/handlers/startSetupChat.ts +0 -50
  219. package/server/encore/lock.ts +0 -61
  220. package/server/encore/notifier.ts +0 -123
  221. package/server/encore/obligation.ts +0 -25
  222. package/server/encore/paths.ts +0 -78
  223. package/server/encore/reconcile.ts +0 -661
  224. package/server/encore/tick.ts +0 -191
  225. package/server/encore/yaml-fm.ts +0 -63
  226. package/server/prompts/system/news-concierge.md +0 -24
  227. package/server/prompts/system/sources-context.md +0 -16
  228. package/server/utils/files/encore-io.ts +0 -111
  229. package/server/workspace/helps/encore-dsl.md +0 -482
  230. package/server/workspace/helps/sources.md +0 -42
  231. package/server/workspace/news/reader.ts +0 -247
  232. package/server/workspace/skills-preset/mc-manage-sources/SKILL.md +0 -106
  233. package/server/workspace/sources/arxivDiscovery.ts +0 -182
  234. package/server/workspace/sources/classifier.ts +0 -268
  235. package/server/workspace/sources/fetchers/arxiv.ts +0 -170
  236. package/server/workspace/sources/fetchers/github.ts +0 -106
  237. package/server/workspace/sources/fetchers/githubIssues.ts +0 -210
  238. package/server/workspace/sources/fetchers/githubReleases.ts +0 -186
  239. package/server/workspace/sources/fetchers/index.ts +0 -71
  240. package/server/workspace/sources/fetchers/registerAll.ts +0 -15
  241. package/server/workspace/sources/fetchers/rss.ts +0 -141
  242. package/server/workspace/sources/fetchers/rssParser.ts +0 -295
  243. package/server/workspace/sources/httpFetcher.ts +0 -230
  244. package/server/workspace/sources/interests.ts +0 -120
  245. package/server/workspace/sources/paths.ts +0 -110
  246. package/server/workspace/sources/pipeline/dedup.ts +0 -60
  247. package/server/workspace/sources/pipeline/fetch.ts +0 -182
  248. package/server/workspace/sources/pipeline/index.ts +0 -301
  249. package/server/workspace/sources/pipeline/notify.ts +0 -80
  250. package/server/workspace/sources/pipeline/plan.ts +0 -68
  251. package/server/workspace/sources/pipeline/summarize.ts +0 -189
  252. package/server/workspace/sources/pipeline/write.ts +0 -185
  253. package/server/workspace/sources/rateLimiter.ts +0 -148
  254. package/server/workspace/sources/registry.ts +0 -304
  255. package/server/workspace/sources/robots.ts +0 -271
  256. package/server/workspace/sources/sourceState.ts +0 -142
  257. package/server/workspace/sources/taxonomy.ts +0 -74
  258. package/server/workspace/sources/types.ts +0 -153
  259. package/server/workspace/sources/urls.ts +0 -112
  260. package/src/components/NewsView.vue +0 -267
  261. package/src/components/SourcesManager.vue +0 -915
  262. package/src/components/SourcesView.vue +0 -45
  263. package/src/components/TodoExplorer.vue +0 -423
  264. package/src/components/todo/TodoAddDialog.vue +0 -135
  265. package/src/components/todo/TodoEditDialog.vue +0 -51
  266. package/src/components/todo/TodoEditPanel.vue +0 -117
  267. package/src/components/todo/TodoKanbanView.vue +0 -290
  268. package/src/components/todo/TodoListView.vue +0 -88
  269. package/src/components/todo/TodoTableView.vue +0 -210
  270. package/src/composables/useNewsItems.ts +0 -38
  271. package/src/composables/useNewsReadState.ts +0 -75
  272. package/src/plugins/encore/EncoreDashboard.vue +0 -504
  273. package/src/plugins/encore/EncoreRedirect.vue +0 -116
  274. package/src/plugins/encore/View.vue +0 -36
  275. package/src/plugins/encore/defineEncoreDefinition.ts +0 -74
  276. package/src/plugins/encore/defineEncoreMeta.ts +0 -13
  277. package/src/plugins/encore/index.ts +0 -93
  278. package/src/plugins/encore/manageEncoreDefinition.ts +0 -100
  279. package/src/plugins/encore/manageEncoreMeta.ts +0 -36
  280. package/src/plugins/manageSource/Preview.vue +0 -33
  281. package/src/plugins/manageSource/View.vue +0 -13
  282. package/src/plugins/manageSource/definition.ts +0 -66
  283. package/src/plugins/manageSource/index.ts +0 -75
  284. package/src/plugins/manageSource/meta.ts +0 -21
  285. package/src/plugins/scheduler/CalendarView.vue +0 -23
  286. package/src/plugins/scheduler/Preview.vue +0 -73
  287. package/src/plugins/scheduler/View.vue +0 -608
  288. package/src/plugins/scheduler/calendarDefinition.ts +0 -47
  289. package/src/plugins/scheduler/calendarMeta.ts +0 -28
  290. package/src/plugins/scheduler/multiDayHelpers.ts +0 -95
  291. package/src/plugins/scheduler/viewModes.ts +0 -26
  292. package/src/types/encore-dsl/at-expression.ts +0 -120
  293. package/src/types/encore-dsl/at-resolver.ts +0 -32
  294. package/src/types/encore-dsl/cadence.ts +0 -289
  295. package/src/types/encore-dsl/schema.ts +0 -288
  296. package/src/utils/filesPreview/schedulerPreview.ts +0 -44
  297. package/src/utils/filesPreview/todoPreview.ts +0 -51
  298. package/src/utils/sources/filter.ts +0 -69
  299. /package/client/assets/{JsonEditor-D6WBWLoa.js → JsonEditor-C_RDoefj.js} +0 -0
  300. /package/client/assets/{chunk-D8eiyYIV-LcKZGJv5.js → chunk-D8eiyYIV-BY16KEZc.js} +0 -0
  301. /package/client/assets/{purify.es-Fx1Nqyry-Dwtk-9WZ.js → purify.es-Fx1Nqyry-BufT4RJl.js} +0 -0
  302. /package/client/assets/{typeof-DBp4T-Ny-CSr8wx1e.js → typeof-DBp4T-Ny-z2wCIsir.js} +0 -0
@@ -0,0 +1,64 @@
1
+ var e;function t(e,t,n){function r(n,r){if(n._zod||Object.defineProperty(n,`_zod`,{value:{def:r,constr:o,traits:new Set},enumerable:!1}),n._zod.traits.has(e))return;n._zod.traits.add(e),t(n,r);let i=o.prototype,a=Object.keys(i);for(let e=0;e<a.length;e++){let t=a[e];t in n||(n[t]=i[t].bind(n))}}let i=n?.Parent??Object;class a extends i{}Object.defineProperty(a,`name`,{value:e});function o(e){var t;let i=n?.Parent?new a:this;r(i,e),(t=i._zod).deferred??(t.deferred=[]);for(let e of i._zod.deferred)e();return i}return Object.defineProperty(o,`init`,{value:r}),Object.defineProperty(o,Symbol.hasInstance,{value:t=>n?.Parent&&t instanceof n.Parent?!0:t?._zod?.traits?.has(e)}),Object.defineProperty(o,`name`,{value:e}),o}var n=class extends Error{constructor(){super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`)}},r=class extends Error{constructor(e){super(`Encountered unidirectional transform during encode: ${e}`),this.name=`ZodEncodeError`}};(e=globalThis).__zod_globalConfig??(e.__zod_globalConfig={});var i=globalThis.__zod_globalConfig;function a(e){return e&&Object.assign(i,e),i}function o(e){let t=Object.values(e).filter(e=>typeof e==`number`);return Object.entries(e).filter(([e,n])=>t.indexOf(+e)===-1).map(([e,t])=>t)}function s(e,t){return typeof t==`bigint`?t.toString():t}function c(e){return{get value(){{let t=e();return Object.defineProperty(this,`value`,{value:t}),t}throw Error(`cached value already set`)}}}function l(e){return e==null}function u(e){let t=+!!e.startsWith(`^`),n=e.endsWith(`$`)?e.length-1:e.length;return e.slice(t,n)}function d(e,t){let n=e/t,r=Math.round(n),i=2**-52*Math.max(Math.abs(n),1);return Math.abs(n-r)<i?0:n-r}var f=Symbol(`evaluating`);function p(e,t,n){let r;Object.defineProperty(e,t,{get(){if(r!==f)return r===void 0&&(r=f,r=n()),r},set(n){Object.defineProperty(e,t,{value:n})},configurable:!0})}function m(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function h(...e){let t={};for(let n of e)Object.assign(t,Object.getOwnPropertyDescriptors(n));return Object.defineProperties({},t)}function ee(e){return JSON.stringify(e)}function te(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,``).replace(/[\s_-]+/g,`-`).replace(/^-+|-+$/g,``)}var ne=`captureStackTrace`in Error?Error.captureStackTrace:(...e)=>{};function g(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var re=c(()=>{if(i.jitless||typeof navigator<`u`&&navigator?.userAgent?.includes(`Cloudflare`))return!1;try{return Function(``),!0}catch{return!1}});function _(e){if(g(e)===!1)return!1;let t=e.constructor;if(t===void 0||typeof t!=`function`)return!0;let n=t.prototype;return!(g(n)===!1||Object.prototype.hasOwnProperty.call(n,`isPrototypeOf`)===!1)}function ie(e){return _(e)?{...e}:Array.isArray(e)?[...e]:e instanceof Map?new Map(e):e instanceof Set?new Set(e):e}var ae=new Set([`string`,`number`,`symbol`]);function v(e){return e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}function y(e,t,n){let r=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(r._zod.parent=e),r}function b(e){let t=e;if(!t)return{};if(typeof t==`string`)return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error==`string`?{...t,error:()=>t.error}:t}function oe(e){return Object.keys(e).filter(t=>e[t]._zod.optin===`optional`&&e[t]._zod.optout===`optional`)}var se={safeint:[-(2**53-1),2**53-1],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function ce(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.pick() cannot be used on object schemas containing refinements`);return y(e,h(e._zod.def,{get shape(){let e={};for(let r in t){if(!(r in n.shape))throw Error(`Unrecognized key: "${r}"`);t[r]&&(e[r]=n.shape[r])}return m(this,`shape`,e),e},checks:[]}))}function le(e,t){let n=e._zod.def,r=n.checks;if(r&&r.length>0)throw Error(`.omit() cannot be used on object schemas containing refinements`);return y(e,h(e._zod.def,{get shape(){let r={...e._zod.def.shape};for(let e in t){if(!(e in n.shape))throw Error(`Unrecognized key: "${e}"`);t[e]&&delete r[e]}return m(this,`shape`,r),r},checks:[]}))}function ue(e,t){if(!_(t))throw Error(`Invalid input to extend: expected a plain object`);let n=e._zod.def.checks;if(n&&n.length>0){let n=e._zod.def.shape;for(let e in t)if(Object.getOwnPropertyDescriptor(n,e)!==void 0)throw Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}return y(e,h(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return m(this,`shape`,n),n}}))}function de(e,t){if(!_(t))throw Error(`Invalid input to safeExtend: expected a plain object`);return y(e,h(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t};return m(this,`shape`,n),n}}))}function fe(e,t){if(e._zod.def.checks?.length)throw Error(`.merge() cannot be used on object schemas containing refinements. Use .safeExtend() instead.`);return y(e,h(e._zod.def,{get shape(){let n={...e._zod.def.shape,...t._zod.def.shape};return m(this,`shape`,n),n},get catchall(){return t._zod.def.catchall},checks:t._zod.def.checks??[]}))}function pe(e,t,n){let r=t._zod.def.checks;if(r&&r.length>0)throw Error(`.partial() cannot be used on object schemas containing refinements`);return y(t,h(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in r))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t])}else for(let t in r)i[t]=e?new e({type:`optional`,innerType:r[t]}):r[t];return m(this,`shape`,i),i},checks:[]}))}function me(e,t,n){return y(t,h(t._zod.def,{get shape(){let r=t._zod.def.shape,i={...r};if(n)for(let t in n){if(!(t in i))throw Error(`Unrecognized key: "${t}"`);n[t]&&(i[t]=new e({type:`nonoptional`,innerType:r[t]}))}else for(let t in r)i[t]=new e({type:`nonoptional`,innerType:r[t]});return m(this,`shape`,i),i}}))}function x(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function he(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue===!1)return!0;return!1}function S(e,t){return t.map(t=>{var n;return(n=t).path??(n.path=[]),t.path.unshift(e),t})}function C(e){return typeof e==`string`?e:e?.message}function w(e,t,n){let r=e.message?e.message:C(e.inst?._zod.def?.error?.(e))??C(t?.error?.(e))??C(n.customError?.(e))??C(n.localeError?.(e))??`Invalid input`,{inst:i,continue:a,input:o,...s}=e;return s.path??=[],s.message=r,t?.reportInput&&(s.input=o),s}function T(e){return Array.isArray(e)?`array`:typeof e==`string`?`string`:`unknown`}function E(...e){let[t,n,r]=e;return typeof t==`string`?{message:t,code:`custom`,input:n,inst:r}:{...t}}var ge=(e,t)=>{e.name=`$ZodError`,Object.defineProperty(e,`_zod`,{value:e._zod,enumerable:!1}),Object.defineProperty(e,`issues`,{value:t,enumerable:!1}),e.message=JSON.stringify(t,s,2),Object.defineProperty(e,`toString`,{value:()=>e.message,enumerable:!1})},_e=t(`$ZodError`,ge),ve=t(`$ZodError`,ge,{Parent:Error});function ye(e,t=e=>e.message){let n={},r=[];for(let i of e.issues)i.path.length>0?(n[i.path[0]]=n[i.path[0]]||[],n[i.path[0]].push(t(i))):r.push(t(i));return{formErrors:r,fieldErrors:n}}function be(e,t=e=>e.message){let n={_errors:[]},r=(e,i=[])=>{for(let a of e.issues)if(a.code===`invalid_union`&&a.errors.length)a.errors.map(e=>r({issues:e},[...i,...a.path]));else if(a.code===`invalid_key`)r({issues:a.issues},[...i,...a.path]);else if(a.code===`invalid_element`)r({issues:a.issues},[...i,...a.path]);else{let e=[...i,...a.path];if(e.length===0)n._errors.push(t(a));else{let r=n,i=0;for(;i<e.length;){let n=e[i];i===e.length-1?(r[n]=r[n]||{_errors:[]},r[n]._errors.push(t(a))):r[n]=r[n]||{_errors:[]},r=r[n],i++}}}};return r(e),n}var D=e=>(t,r,i,o)=>{let s=i?{...i,async:!1}:{async:!1},c=t._zod.run({value:r,issues:[]},s);if(c instanceof Promise)throw new n;if(c.issues.length){let t=new(o?.Err??e)(c.issues.map(e=>w(e,s,a())));throw ne(t,o?.callee),t}return c.value},O=e=>async(t,n,r,i)=>{let o=r?{...r,async:!0}:{async:!0},s=t._zod.run({value:n,issues:[]},o);if(s instanceof Promise&&(s=await s),s.issues.length){let t=new(i?.Err??e)(s.issues.map(e=>w(e,o,a())));throw ne(t,i?.callee),t}return s.value},k=e=>(t,r,i)=>{let o=i?{...i,async:!1}:{async:!1},s=t._zod.run({value:r,issues:[]},o);if(s instanceof Promise)throw new n;return s.issues.length?{success:!1,error:new(e??_e)(s.issues.map(e=>w(e,o,a())))}:{success:!0,data:s.value}},xe=k(ve),A=e=>async(t,n,r)=>{let i=r?{...r,async:!0}:{async:!0},o=t._zod.run({value:n,issues:[]},i);return o instanceof Promise&&(o=await o),o.issues.length?{success:!1,error:new e(o.issues.map(e=>w(e,i,a())))}:{success:!0,data:o.value}},Se=A(ve),Ce=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return D(e)(t,n,i)},we=e=>(t,n,r)=>D(e)(t,n,r),Te=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return O(e)(t,n,i)},Ee=e=>async(t,n,r)=>O(e)(t,n,r),De=e=>(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return k(e)(t,n,i)},Oe=e=>(t,n,r)=>k(e)(t,n,r),ke=e=>async(t,n,r)=>{let i=r?{...r,direction:`backward`}:{direction:`backward`};return A(e)(t,n,i)},Ae=e=>async(t,n,r)=>A(e)(t,n,r),je=/^[cC][0-9a-z]{6,}$/,Me=/^[0-9a-z]+$/,Ne=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,Pe=/^[0-9a-vA-V]{20}$/,Fe=/^[A-Za-z0-9]{27}$/,Ie=/^[a-zA-Z0-9_-]{21}$/,Le=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Re=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,ze=e=>e?RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Be=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,Ve=`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`;function He(){return new RegExp(Ve,`u`)}var Ue=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,We=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,Ge=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Ke=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,qe=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,Je=/^[A-Za-z0-9_-]*$/,Ye=/^https?$/,Xe=/^\+[1-9]\d{6,14}$/,Ze=`(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))`,Qe=RegExp(`^${Ze}$`);function $e(e){let t=`(?:[01]\\d|2[0-3]):[0-5]\\d`;return typeof e.precision==`number`?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function et(e){return RegExp(`^${$e(e)}$`)}function tt(e){let t=$e({precision:e.precision}),n=[`Z`];e.local&&n.push(``),e.offset&&n.push(`([+-](?:[01]\\d|2[0-3]):[0-5]\\d)`);let r=`${t}(?:${n.join(`|`)})`;return RegExp(`^${Ze}T(?:${r})$`)}var nt=e=>{let t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??``}}`:`[\\s\\S]*`;return RegExp(`^${t}$`)},rt=/^-?\d+$/,it=/^-?\d+(?:\.\d+)?$/,at=/^(?:true|false)$/i,ot=/^[^A-Z]*$/,st=/^[^a-z]*$/,j=t(`$ZodCheck`,(e,t)=>{var n;e._zod??={},e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),ct={number:`number`,bigint:`bigint`,object:`date`},lt=t(`$ZodCheckLessThan`,(e,t)=>{j.init(e,t);let n=ct[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.maximum:n.exclusiveMaximum)??1/0;t.value<r&&(t.inclusive?n.maximum=t.value:n.exclusiveMaximum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value<=t.value:r.value<t.value)||r.issues.push({origin:n,code:`too_big`,maximum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),ut=t(`$ZodCheckGreaterThan`,(e,t)=>{j.init(e,t);let n=ct[typeof t.value];e._zod.onattach.push(e=>{let n=e._zod.bag,r=(t.inclusive?n.minimum:n.exclusiveMinimum)??-1/0;t.value>r&&(t.inclusive?n.minimum=t.value:n.exclusiveMinimum=t.value)}),e._zod.check=r=>{(t.inclusive?r.value>=t.value:r.value>t.value)||r.issues.push({origin:n,code:`too_small`,minimum:typeof t.value==`object`?t.value.getTime():t.value,input:r.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),dt=t(`$ZodCheckMultipleOf`,(e,t)=>{j.init(e,t),e._zod.onattach.push(e=>{var n;(n=e._zod.bag).multipleOf??(n.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw Error(`Cannot mix number and bigint in multiple_of check.`);(typeof n.value==`bigint`?n.value%t.value===BigInt(0):d(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:`not_multiple_of`,divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),ft=t(`$ZodCheckNumberFormat`,(e,t)=>{j.init(e,t),t.format=t.format||`float64`;let n=t.format?.includes(`int`),r=n?`int`:`number`,[i,a]=se[t.format];e._zod.onattach.push(e=>{let r=e._zod.bag;r.format=t.format,r.minimum=i,r.maximum=a,n&&(r.pattern=rt)}),e._zod.check=o=>{let s=o.value;if(n){if(!Number.isInteger(s)){o.issues.push({expected:r,format:t.format,code:`invalid_type`,continue:!1,input:s,inst:e});return}if(!Number.isSafeInteger(s)){s>0?o.issues.push({input:s,code:`too_big`,maximum:2**53-1,note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort}):o.issues.push({input:s,code:`too_small`,minimum:-(2**53-1),note:`Integers must be within the safe integer range.`,inst:e,origin:r,inclusive:!0,continue:!t.abort});return}}s<i&&o.issues.push({origin:`number`,input:s,code:`too_small`,minimum:i,inclusive:!0,inst:e,continue:!t.abort}),s>a&&o.issues.push({origin:`number`,input:s,code:`too_big`,maximum:a,inclusive:!0,inst:e,continue:!t.abort})}}),pt=t(`$ZodCheckMaxLength`,(e,t)=>{var n;j.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!l(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.maximum??1/0;t.maximum<n&&(e._zod.bag.maximum=t.maximum)}),e._zod.check=n=>{let r=n.value;if(r.length<=t.maximum)return;let i=T(r);n.issues.push({origin:i,code:`too_big`,maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),mt=t(`$ZodCheckMinLength`,(e,t)=>{var n;j.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!l(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag.minimum??-1/0;t.minimum>n&&(e._zod.bag.minimum=t.minimum)}),e._zod.check=n=>{let r=n.value;if(r.length>=t.minimum)return;let i=T(r);n.issues.push({origin:i,code:`too_small`,minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),ht=t(`$ZodCheckLengthEquals`,(e,t)=>{var n;j.init(e,t),(n=e._zod.def).when??(n.when=e=>{let t=e.value;return!l(t)&&t.length!==void 0}),e._zod.onattach.push(e=>{let n=e._zod.bag;n.minimum=t.length,n.maximum=t.length,n.length=t.length}),e._zod.check=n=>{let r=n.value,i=r.length;if(i===t.length)return;let a=T(r),o=i>t.length;n.issues.push({origin:a,...o?{code:`too_big`,maximum:t.length}:{code:`too_small`,minimum:t.length},inclusive:!0,exact:!0,input:n.value,inst:e,continue:!t.abort})}}),M=t(`$ZodCheckStringFormat`,(e,t)=>{var n,r;j.init(e,t),e._zod.onattach.push(e=>{let n=e._zod.bag;n.format=t.format,t.pattern&&(n.patterns??=new Set,n.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:t.format,input:n.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(r=e._zod).check??(r.check=()=>{})}),gt=t(`$ZodCheckRegex`,(e,t)=>{M.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:`string`,code:`invalid_format`,format:`regex`,input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),_t=t(`$ZodCheckLowerCase`,(e,t)=>{t.pattern??=ot,M.init(e,t)}),vt=t(`$ZodCheckUpperCase`,(e,t)=>{t.pattern??=st,M.init(e,t)}),yt=t(`$ZodCheckIncludes`,(e,t)=>{j.init(e,t);let n=v(t.includes),r=new RegExp(typeof t.position==`number`?`^.{${t.position}}${n}`:n);t.pattern=r,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(r)}),e._zod.check=n=>{n.value.includes(t.includes,t.position)||n.issues.push({origin:`string`,code:`invalid_format`,format:`includes`,includes:t.includes,input:n.value,inst:e,continue:!t.abort})}}),bt=t(`$ZodCheckStartsWith`,(e,t)=>{j.init(e,t);let n=RegExp(`^${v(t.prefix)}.*`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.startsWith(t.prefix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`starts_with`,prefix:t.prefix,input:n.value,inst:e,continue:!t.abort})}}),xt=t(`$ZodCheckEndsWith`,(e,t)=>{j.init(e,t);let n=RegExp(`.*${v(t.suffix)}$`);t.pattern??=n,e._zod.onattach.push(e=>{let t=e._zod.bag;t.patterns??=new Set,t.patterns.add(n)}),e._zod.check=n=>{n.value.endsWith(t.suffix)||n.issues.push({origin:`string`,code:`invalid_format`,format:`ends_with`,suffix:t.suffix,input:n.value,inst:e,continue:!t.abort})}}),St=t(`$ZodCheckOverwrite`,(e,t)=>{j.init(e,t),e._zod.check=e=>{e.value=t.tx(e.value)}}),Ct=class{constructor(e=[]){this.content=[],this.indent=0,this&&(this.args=e)}indented(e){this.indent+=1,e(this),--this.indent}write(e){if(typeof e==`function`){e(this,{execution:`sync`}),e(this,{execution:`async`});return}let t=e.split(`
2
+ `).filter(e=>e),n=Math.min(...t.map(e=>e.length-e.trimStart().length)),r=t.map(e=>e.slice(n)).map(e=>` `.repeat(this.indent*2)+e);for(let e of r)this.content.push(e)}compile(){let e=Function,t=this?.args,n=[...(this?.content??[``]).map(e=>` ${e}`)];return new e(...t,n.join(`
3
+ `))}},wt={major:4,minor:4,patch:3},N=t(`$ZodType`,(e,t)=>{var r;e??={},e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=wt;let i=[...e._zod.def.checks??[]];e._zod.traits.has(`$ZodCheck`)&&i.unshift(e);for(let t of i)for(let n of t._zod.onattach)n(e);if(i.length===0)(r=e._zod).deferred??(r.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{let t=(e,t,r)=>{let i=x(e),a;for(let o of t){if(o._zod.def.when){if(he(e)||!o._zod.def.when(e))continue}else if(i)continue;let t=e.issues.length,s=o._zod.check(e);if(s instanceof Promise&&r?.async===!1)throw new n;if(a||s instanceof Promise)a=(a??Promise.resolve()).then(async()=>{await s,e.issues.length!==t&&(i||=x(e,t))});else{if(e.issues.length===t)continue;i||=x(e,t)}}return a?a.then(()=>e):e},r=(r,a,o)=>{if(x(r))return r.aborted=!0,r;let s=t(a,i,o);if(s instanceof Promise){if(o.async===!1)throw new n;return s.then(t=>e._zod.parse(t,o))}return e._zod.parse(s,o)};e._zod.run=(a,o)=>{if(o.skipChecks)return e._zod.parse(a,o);if(o.direction===`backward`){let t=e._zod.parse({value:a.value,issues:[]},{...o,skipChecks:!0});return t instanceof Promise?t.then(e=>r(e,a,o)):r(t,a,o)}let s=e._zod.parse(a,o);if(s instanceof Promise){if(o.async===!1)throw new n;return s.then(e=>t(e,i,o))}return t(s,i,o)}}p(e,`~standard`,()=>({validate:t=>{try{let n=xe(e,t);return n.success?{value:n.data}:{issues:n.error?.issues}}catch{return Se(e,t).then(e=>e.success?{value:e.data}:{issues:e.error?.issues})}},vendor:`zod`,version:1}))}),P=t(`$ZodString`,(e,t)=>{N.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??nt(e._zod.bag),e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value==`string`||n.issues.push({expected:`string`,code:`invalid_type`,input:n.value,inst:e}),n}}),F=t(`$ZodStringFormat`,(e,t)=>{M.init(e,t),P.init(e,t)}),Tt=t(`$ZodGUID`,(e,t)=>{t.pattern??=Re,F.init(e,t)}),Et=t(`$ZodUUID`,(e,t)=>{if(t.version){let e={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(e===void 0)throw Error(`Invalid UUID version: "${t.version}"`);t.pattern??=ze(e)}else t.pattern??=ze();F.init(e,t)}),Dt=t(`$ZodEmail`,(e,t)=>{t.pattern??=Be,F.init(e,t)}),Ot=t(`$ZodURL`,(e,t)=>{F.init(e,t),e._zod.check=n=>{try{let r=n.value.trim();if(!t.normalize&&t.protocol?.source===Ye.source&&!/^https?:\/\//i.test(r)){n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid URL format`,input:n.value,inst:e,continue:!t.abort});return}let i=new URL(r);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(i.hostname)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid hostname`,pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(i.protocol.endsWith(`:`)?i.protocol.slice(0,-1):i.protocol)||n.issues.push({code:`invalid_format`,format:`url`,note:`Invalid protocol`,pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),t.normalize?n.value=i.href:n.value=r;return}catch{n.issues.push({code:`invalid_format`,format:`url`,input:n.value,inst:e,continue:!t.abort})}}}),kt=t(`$ZodEmoji`,(e,t)=>{t.pattern??=He(),F.init(e,t)}),At=t(`$ZodNanoID`,(e,t)=>{t.pattern??=Ie,F.init(e,t)}),jt=t(`$ZodCUID`,(e,t)=>{t.pattern??=je,F.init(e,t)}),Mt=t(`$ZodCUID2`,(e,t)=>{t.pattern??=Me,F.init(e,t)}),Nt=t(`$ZodULID`,(e,t)=>{t.pattern??=Ne,F.init(e,t)}),Pt=t(`$ZodXID`,(e,t)=>{t.pattern??=Pe,F.init(e,t)}),Ft=t(`$ZodKSUID`,(e,t)=>{t.pattern??=Fe,F.init(e,t)}),It=t(`$ZodISODateTime`,(e,t)=>{t.pattern??=tt(t),F.init(e,t)}),Lt=t(`$ZodISODate`,(e,t)=>{t.pattern??=Qe,F.init(e,t)}),Rt=t(`$ZodISOTime`,(e,t)=>{t.pattern??=et(t),F.init(e,t)}),zt=t(`$ZodISODuration`,(e,t)=>{t.pattern??=Le,F.init(e,t)}),Bt=t(`$ZodIPv4`,(e,t)=>{t.pattern??=Ue,F.init(e,t),e._zod.bag.format=`ipv4`}),Vt=t(`$ZodIPv6`,(e,t)=>{t.pattern??=We,F.init(e,t),e._zod.bag.format=`ipv6`,e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:`invalid_format`,format:`ipv6`,input:n.value,inst:e,continue:!t.abort})}}}),Ht=t(`$ZodCIDRv4`,(e,t)=>{t.pattern??=Ge,F.init(e,t)}),Ut=t(`$ZodCIDRv6`,(e,t)=>{t.pattern??=Ke,F.init(e,t),e._zod.check=n=>{let r=n.value.split(`/`);try{if(r.length!==2)throw Error();let[e,t]=r;if(!t)throw Error();let n=Number(t);if(`${n}`!==t||n<0||n>128)throw Error();new URL(`http://[${e}]`)}catch{n.issues.push({code:`invalid_format`,format:`cidrv6`,input:n.value,inst:e,continue:!t.abort})}}});function Wt(e){if(e===``)return!0;if(/\s/.test(e)||e.length%4!=0)return!1;try{return atob(e),!0}catch{return!1}}var Gt=t(`$ZodBase64`,(e,t)=>{t.pattern??=qe,F.init(e,t),e._zod.bag.contentEncoding=`base64`,e._zod.check=n=>{Wt(n.value)||n.issues.push({code:`invalid_format`,format:`base64`,input:n.value,inst:e,continue:!t.abort})}});function Kt(e){if(!Je.test(e))return!1;let t=e.replace(/[-_]/g,e=>e===`-`?`+`:`/`);return Wt(t.padEnd(Math.ceil(t.length/4)*4,`=`))}var qt=t(`$ZodBase64URL`,(e,t)=>{t.pattern??=Je,F.init(e,t),e._zod.bag.contentEncoding=`base64url`,e._zod.check=n=>{Kt(n.value)||n.issues.push({code:`invalid_format`,format:`base64url`,input:n.value,inst:e,continue:!t.abort})}}),Jt=t(`$ZodE164`,(e,t)=>{t.pattern??=Xe,F.init(e,t)});function Yt(e,t=null){try{let n=e.split(`.`);if(n.length!==3)return!1;let[r]=n;if(!r)return!1;let i=JSON.parse(atob(r));return!(`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&(!(`alg`in i)||i.alg!==t))}catch{return!1}}var Xt=t(`$ZodJWT`,(e,t)=>{F.init(e,t),e._zod.check=n=>{Yt(n.value,t.alg)||n.issues.push({code:`invalid_format`,format:`jwt`,input:n.value,inst:e,continue:!t.abort})}}),Zt=t(`$ZodNumber`,(e,t)=>{N.init(e,t),e._zod.pattern=e._zod.bag.pattern??it,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}let i=n.value;if(typeof i==`number`&&!Number.isNaN(i)&&Number.isFinite(i))return n;let a=typeof i==`number`?Number.isNaN(i)?`NaN`:Number.isFinite(i)?void 0:`Infinity`:void 0;return n.issues.push({expected:`number`,code:`invalid_type`,input:i,inst:e,...a?{received:a}:{}}),n}}),Qt=t(`$ZodNumberFormat`,(e,t)=>{ft.init(e,t),Zt.init(e,t)}),$t=t(`$ZodBoolean`,(e,t)=>{N.init(e,t),e._zod.pattern=at,e._zod.parse=(n,r)=>{if(t.coerce)try{n.value=!!n.value}catch{}let i=n.value;return typeof i==`boolean`||n.issues.push({expected:`boolean`,code:`invalid_type`,input:i,inst:e}),n}}),en=t(`$ZodAny`,(e,t)=>{N.init(e,t),e._zod.parse=e=>e}),tn=t(`$ZodUnknown`,(e,t)=>{N.init(e,t),e._zod.parse=e=>e}),nn=t(`$ZodNever`,(e,t)=>{N.init(e,t),e._zod.parse=(t,n)=>(t.issues.push({expected:`never`,code:`invalid_type`,input:t.value,inst:e}),t)});function rn(e,t,n){e.issues.length&&t.issues.push(...S(n,e.issues)),t.value[n]=e.value}var an=t(`$ZodArray`,(e,t)=>{N.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!Array.isArray(i))return n.issues.push({expected:`array`,code:`invalid_type`,input:i,inst:e}),n;n.value=Array(i.length);let a=[];for(let e=0;e<i.length;e++){let o=i[e],s=t.element._zod.run({value:o,issues:[]},r);s instanceof Promise?a.push(s.then(t=>rn(t,n,e))):rn(s,n,e)}return a.length?Promise.all(a).then(()=>n):n}});function I(e,t,n,r,i,a){let o=n in r;if(e.issues.length){if(i&&a&&!o)return;t.issues.push(...S(n,e.issues))}if(!o&&!i){e.issues.length||t.issues.push({code:`invalid_type`,expected:`nonoptional`,input:void 0,path:[n]});return}e.value===void 0?o&&(t.value[n]=void 0):t.value[n]=e.value}function on(e){let t=Object.keys(e.shape);for(let n of t)if(!e.shape?.[n]?._zod?.traits?.has(`$ZodType`))throw Error(`Invalid element at key "${n}": expected a Zod schema`);let n=oe(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function sn(e,t,n,r,i,a){let o=[],s=i.keySet,c=i.catchall._zod,l=c.def.type,u=c.optin===`optional`,d=c.optout===`optional`;for(let i in t){if(i===`__proto__`||s.has(i))continue;if(l===`never`){o.push(i);continue}let a=c.run({value:t[i],issues:[]},r);a instanceof Promise?e.push(a.then(e=>I(e,n,i,t,u,d))):I(a,n,i,t,u,d)}return o.length&&n.issues.push({code:`unrecognized_keys`,keys:o,input:t,inst:a}),e.length?Promise.all(e).then(()=>n):n}var cn=t(`$ZodObject`,(e,t)=>{if(N.init(e,t),!Object.getOwnPropertyDescriptor(t,`shape`)?.get){let e=t.shape;Object.defineProperty(t,`shape`,{get:()=>{let n={...e};return Object.defineProperty(t,`shape`,{value:n}),n}})}let n=c(()=>on(t));p(e._zod,`propValues`,()=>{let e=t.shape,n={};for(let t in e){let r=e[t]._zod;if(r.values){n[t]??(n[t]=new Set);for(let e of r.values)n[t].add(e)}}return n});let r=g,i=t.catchall,a;e._zod.parse=(t,o)=>{a??=n.value;let s=t.value;if(!r(s))return t.issues.push({expected:`object`,code:`invalid_type`,input:s,inst:e}),t;t.value={};let c=[],l=a.shape;for(let e of a.keys){let n=l[e],r=n._zod.optin===`optional`,i=n._zod.optout===`optional`,a=n._zod.run({value:s[e],issues:[]},o);a instanceof Promise?c.push(a.then(n=>I(n,t,e,s,r,i))):I(a,t,e,s,r,i)}return i?sn(c,s,t,o,n.value,e):c.length?Promise.all(c).then(()=>t):t}}),ln=t(`$ZodObjectJIT`,(e,t)=>{cn.init(e,t);let n=e._zod.parse,r=c(()=>on(t)),a=e=>{let t=new Ct([`shape`,`payload`,`ctx`]),n=r.value,i=e=>{let t=ee(e);return`shape[${t}]._zod.run({ value: input[${t}], issues: [] }, ctx)`};t.write(`const input = payload.value;`);let a=Object.create(null),o=0;for(let e of n.keys)a[e]=`key_${o++}`;t.write(`const newResult = {};`);for(let r of n.keys){let n=a[r],o=ee(r),s=e[r],c=s?._zod?.optin===`optional`,l=s?._zod?.optout===`optional`;t.write(`const ${n} = ${i(r)};`),c&&l?t.write(`
4
+ if (${n}.issues.length) {
5
+ if (${o} in input) {
6
+ payload.issues = payload.issues.concat(${n}.issues.map(iss => ({
7
+ ...iss,
8
+ path: iss.path ? [${o}, ...iss.path] : [${o}]
9
+ })));
10
+ }
11
+ }
12
+
13
+ if (${n}.value === undefined) {
14
+ if (${o} in input) {
15
+ newResult[${o}] = undefined;
16
+ }
17
+ } else {
18
+ newResult[${o}] = ${n}.value;
19
+ }
20
+
21
+ `):c?t.write(`
22
+ if (${n}.issues.length) {
23
+ payload.issues = payload.issues.concat(${n}.issues.map(iss => ({
24
+ ...iss,
25
+ path: iss.path ? [${o}, ...iss.path] : [${o}]
26
+ })));
27
+ }
28
+
29
+ if (${n}.value === undefined) {
30
+ if (${o} in input) {
31
+ newResult[${o}] = undefined;
32
+ }
33
+ } else {
34
+ newResult[${o}] = ${n}.value;
35
+ }
36
+
37
+ `):t.write(`
38
+ const ${n}_present = ${o} in input;
39
+ if (${n}.issues.length) {
40
+ payload.issues = payload.issues.concat(${n}.issues.map(iss => ({
41
+ ...iss,
42
+ path: iss.path ? [${o}, ...iss.path] : [${o}]
43
+ })));
44
+ }
45
+ if (!${n}_present && !${n}.issues.length) {
46
+ payload.issues.push({
47
+ code: "invalid_type",
48
+ expected: "nonoptional",
49
+ input: undefined,
50
+ path: [${o}]
51
+ });
52
+ }
53
+
54
+ if (${n}_present) {
55
+ if (${n}.value === undefined) {
56
+ newResult[${o}] = undefined;
57
+ } else {
58
+ newResult[${o}] = ${n}.value;
59
+ }
60
+ }
61
+
62
+ `)}t.write(`payload.value = newResult;`),t.write(`return payload;`);let s=t.compile();return(t,n)=>s(e,t,n)},o,s=g,l=!i.jitless,u=l&&re.value,d=t.catchall,f;e._zod.parse=(i,c)=>{f??=r.value;let p=i.value;return s(p)?l&&u&&c?.async===!1&&c.jitless!==!0?(o||=a(t.shape),i=o(i,c),d?sn([],p,i,c,f,e):i):n(i,c):(i.issues.push({expected:`object`,code:`invalid_type`,input:p,inst:e}),i)}});function un(e,t,n,r){for(let n of e)if(n.issues.length===0)return t.value=n.value,t;let i=e.filter(e=>!x(e));return i.length===1?(t.value=i[0].value,i[0]):(t.issues.push({code:`invalid_union`,input:t.value,inst:n,errors:e.map(e=>e.issues.map(e=>w(e,r,a())))}),t)}var dn=t(`$ZodUnion`,(e,t)=>{N.init(e,t),p(e._zod,`optin`,()=>t.options.some(e=>e._zod.optin===`optional`)?`optional`:void 0),p(e._zod,`optout`,()=>t.options.some(e=>e._zod.optout===`optional`)?`optional`:void 0),p(e._zod,`values`,()=>{if(t.options.every(e=>e._zod.values))return new Set(t.options.flatMap(e=>Array.from(e._zod.values)))}),p(e._zod,`pattern`,()=>{if(t.options.every(e=>e._zod.pattern)){let e=t.options.map(e=>e._zod.pattern);return RegExp(`^(${e.map(e=>u(e.source)).join(`|`)})$`)}});let n=t.options.length===1?t.options[0]._zod.run:null;e._zod.parse=(r,i)=>{if(n)return n(r,i);let a=!1,o=[];for(let e of t.options){let t=e._zod.run({value:r.value,issues:[]},i);if(t instanceof Promise)o.push(t),a=!0;else{if(t.issues.length===0)return t;o.push(t)}}return a?Promise.all(o).then(t=>un(t,r,e,i)):un(o,r,e,i)}}),fn=t(`$ZodDiscriminatedUnion`,(e,t)=>{t.inclusive=!1,dn.init(e,t);let n=e._zod.parse;p(e._zod,`propValues`,()=>{let e={};for(let n of t.options){let r=n._zod.propValues;if(!r||Object.keys(r).length===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(n)}"`);for(let[t,n]of Object.entries(r)){e[t]||(e[t]=new Set);for(let r of n)e[t].add(r)}}return e});let r=c(()=>{let e=t.options,n=new Map;for(let r of e){let e=r._zod.propValues?.[t.discriminator];if(!e||e.size===0)throw Error(`Invalid discriminated union option at index "${t.options.indexOf(r)}"`);for(let t of e){if(n.has(t))throw Error(`Duplicate discriminator value "${String(t)}"`);n.set(t,r)}}return n});e._zod.parse=(i,a)=>{let o=i.value;if(!g(o))return i.issues.push({code:`invalid_type`,expected:`object`,input:o,inst:e}),i;let s=r.value.get(o?.[t.discriminator]);return s?s._zod.run(i,a):t.unionFallback||a.direction===`backward`?n(i,a):(i.issues.push({code:`invalid_union`,errors:[],note:`No matching discriminator`,discriminator:t.discriminator,options:Array.from(r.value.keys()),input:o,path:[t.discriminator],inst:e}),i)}}),pn=t(`$ZodIntersection`,(e,t)=>{N.init(e,t),e._zod.parse=(e,n)=>{let r=e.value,i=t.left._zod.run({value:r,issues:[]},n),a=t.right._zod.run({value:r,issues:[]},n);return i instanceof Promise||a instanceof Promise?Promise.all([i,a]).then(([t,n])=>mn(e,t,n)):mn(e,i,a)}});function L(e,t){if(e===t||e instanceof Date&&t instanceof Date&&+e==+t)return{valid:!0,data:e};if(_(e)&&_(t)){let n=Object.keys(t),r=Object.keys(e).filter(e=>n.indexOf(e)!==-1),i={...e,...t};for(let n of r){let r=L(e[n],t[n]);if(!r.valid)return{valid:!1,mergeErrorPath:[n,...r.mergeErrorPath]};i[n]=r.data}return{valid:!0,data:i}}if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return{valid:!1,mergeErrorPath:[]};let n=[];for(let r=0;r<e.length;r++){let i=e[r],a=t[r],o=L(i,a);if(!o.valid)return{valid:!1,mergeErrorPath:[r,...o.mergeErrorPath]};n.push(o.data)}return{valid:!0,data:n}}return{valid:!1,mergeErrorPath:[]}}function mn(e,t,n){let r=new Map,i;for(let n of t.issues)if(n.code===`unrecognized_keys`){i??=n;for(let e of n.keys)r.has(e)||r.set(e,{}),r.get(e).l=!0}else e.issues.push(n);for(let t of n.issues)if(t.code===`unrecognized_keys`)for(let e of t.keys)r.has(e)||r.set(e,{}),r.get(e).r=!0;else e.issues.push(t);let a=[...r].filter(([,e])=>e.l&&e.r).map(([e])=>e);if(a.length&&i&&e.issues.push({...i,keys:a}),x(e))return e;let o=L(t.value,n.value);if(!o.valid)throw Error(`Unmergable intersection. Error path: ${JSON.stringify(o.mergeErrorPath)}`);return e.value=o.data,e}var hn=t(`$ZodTuple`,(e,t)=>{N.init(e,t);let n=t.items;e._zod.parse=(r,i)=>{let a=r.value;if(!Array.isArray(a))return r.issues.push({input:a,inst:e,expected:`tuple`,code:`invalid_type`}),r;r.value=[];let o=[],s=gn(n,`optin`),c=gn(n,`optout`);if(!t.rest){if(a.length<s)return r.issues.push({code:`too_small`,minimum:s,inclusive:!0,input:a,inst:e,origin:`array`}),r;a.length>n.length&&r.issues.push({code:`too_big`,maximum:n.length,inclusive:!0,input:a,inst:e,origin:`array`})}let l=Array(n.length);for(let e=0;e<n.length;e++){let t=n[e]._zod.run({value:a[e],issues:[]},i);t instanceof Promise?o.push(t.then(t=>{l[e]=t})):l[e]=t}if(t.rest){let e=n.length-1,s=a.slice(n.length);for(let n of s){e++;let a=t.rest._zod.run({value:n,issues:[]},i);a instanceof Promise?o.push(a.then(t=>_n(t,r,e))):_n(a,r,e)}}return o.length?Promise.all(o).then(()=>vn(l,r,n,a,c)):vn(l,r,n,a,c)}});function gn(e,t){for(let n=e.length-1;n>=0;n--)if(e[n]._zod[t]!==`optional`)return n+1;return 0}function _n(e,t,n){e.issues.length&&t.issues.push(...S(n,e.issues)),t.value[n]=e.value}function vn(e,t,n,r,i){for(let a=0;a<n.length;a++){let n=e[a],o=a<r.length;if(n.issues.length){if(!o&&a>=i){t.value.length=a;break}t.issues.push(...S(a,n.issues))}t.value[a]=n.value}for(let e=t.value.length-1;e>=r.length&&n[e]._zod.optout===`optional`&&t.value[e]===void 0;e--)t.value.length=e;return t}var yn=t(`$ZodRecord`,(e,t)=>{N.init(e,t),e._zod.parse=(n,r)=>{let i=n.value;if(!_(i))return n.issues.push({expected:`record`,code:`invalid_type`,input:i,inst:e}),n;let o=[],s=t.keyType._zod.values;if(s){n.value={};let c=new Set;for(let l of s)if(typeof l==`string`||typeof l==`number`||typeof l==`symbol`){c.add(typeof l==`number`?l.toString():l);let s=t.keyType._zod.run({value:l,issues:[]},r);if(s instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(s.issues.length){n.issues.push({code:`invalid_key`,origin:`record`,issues:s.issues.map(e=>w(e,r,a())),input:l,path:[l],inst:e});continue}let u=s.value,d=t.valueType._zod.run({value:i[l],issues:[]},r);d instanceof Promise?o.push(d.then(e=>{e.issues.length&&n.issues.push(...S(l,e.issues)),n.value[u]=e.value})):(d.issues.length&&n.issues.push(...S(l,d.issues)),n.value[u]=d.value)}let l;for(let e in i)c.has(e)||(l??=[],l.push(e));l&&l.length>0&&n.issues.push({code:`unrecognized_keys`,input:i,inst:e,keys:l})}else{n.value={};for(let s of Reflect.ownKeys(i)){if(s===`__proto__`||!Object.prototype.propertyIsEnumerable.call(i,s))continue;let c=t.keyType._zod.run({value:s,issues:[]},r);if(c instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);if(typeof s==`string`&&it.test(s)&&c.issues.length){let e=t.keyType._zod.run({value:Number(s),issues:[]},r);if(e instanceof Promise)throw Error(`Async schemas not supported in object keys currently`);e.issues.length===0&&(c=e)}if(c.issues.length){t.mode===`loose`?n.value[s]=i[s]:n.issues.push({code:`invalid_key`,origin:`record`,issues:c.issues.map(e=>w(e,r,a())),input:s,path:[s],inst:e});continue}let l=t.valueType._zod.run({value:i[s],issues:[]},r);l instanceof Promise?o.push(l.then(e=>{e.issues.length&&n.issues.push(...S(s,e.issues)),n.value[c.value]=e.value})):(l.issues.length&&n.issues.push(...S(s,l.issues)),n.value[c.value]=l.value)}}return o.length?Promise.all(o).then(()=>n):n}}),bn=t(`$ZodEnum`,(e,t)=>{N.init(e,t);let n=o(t.entries),r=new Set(n);e._zod.values=r,e._zod.pattern=RegExp(`^(${n.filter(e=>ae.has(typeof e)).map(e=>typeof e==`string`?v(e):e.toString()).join(`|`)})$`),e._zod.parse=(t,i)=>{let a=t.value;return r.has(a)||t.issues.push({code:`invalid_value`,values:n,input:a,inst:e}),t}}),xn=t(`$ZodLiteral`,(e,t)=>{if(N.init(e,t),t.values.length===0)throw Error(`Cannot create literal schema with no valid values`);let n=new Set(t.values);e._zod.values=n,e._zod.pattern=RegExp(`^(${t.values.map(e=>typeof e==`string`?v(e):e?v(e.toString()):String(e)).join(`|`)})$`),e._zod.parse=(r,i)=>{let a=r.value;return n.has(a)||r.issues.push({code:`invalid_value`,values:t.values,input:a,inst:e}),r}}),Sn=t(`$ZodTransform`,(e,t)=>{N.init(e,t),e._zod.optin=`optional`,e._zod.parse=(i,a)=>{if(a.direction===`backward`)throw new r(e.constructor.name);let o=t.transform(i.value,i);if(a.async)return(o instanceof Promise?o:Promise.resolve(o)).then(e=>(i.value=e,i.fallback=!0,i));if(o instanceof Promise)throw new n;return i.value=o,i.fallback=!0,i}});function Cn(e,t){return t===void 0&&(e.issues.length||e.fallback)?{issues:[],value:void 0}:e}var wn=t(`$ZodOptional`,(e,t)=>{N.init(e,t),e._zod.optin=`optional`,e._zod.optout=`optional`,p(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,void 0]):void 0),p(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${u(e.source)})?$`):void 0}),e._zod.parse=(e,n)=>{if(t.innerType._zod.optin===`optional`){let r=e.value,i=t.innerType._zod.run(e,n);return i instanceof Promise?i.then(e=>Cn(e,r)):Cn(i,r)}return e.value===void 0?e:t.innerType._zod.run(e,n)}}),Tn=t(`$ZodExactOptional`,(e,t)=>{wn.init(e,t),p(e._zod,`values`,()=>t.innerType._zod.values),p(e._zod,`pattern`,()=>t.innerType._zod.pattern),e._zod.parse=(e,n)=>t.innerType._zod.run(e,n)}),En=t(`$ZodNullable`,(e,t)=>{N.init(e,t),p(e._zod,`optin`,()=>t.innerType._zod.optin),p(e._zod,`optout`,()=>t.innerType._zod.optout),p(e._zod,`pattern`,()=>{let e=t.innerType._zod.pattern;return e?RegExp(`^(${u(e.source)}|null)$`):void 0}),p(e._zod,`values`,()=>t.innerType._zod.values?new Set([...t.innerType._zod.values,null]):void 0),e._zod.parse=(e,n)=>e.value===null?e:t.innerType._zod.run(e,n)}),Dn=t(`$ZodDefault`,(e,t)=>{N.init(e,t),e._zod.optin=`optional`,p(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);if(e.value===void 0)return e.value=t.defaultValue,e;let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(e=>On(e,t)):On(r,t)}});function On(e,t){return e.value===void 0&&(e.value=t.defaultValue),e}var kn=t(`$ZodPrefault`,(e,t)=>{N.init(e,t),e._zod.optin=`optional`,p(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>(n.direction===`backward`||e.value===void 0&&(e.value=t.defaultValue),t.innerType._zod.run(e,n))}),An=t(`$ZodNonOptional`,(e,t)=>{N.init(e,t),p(e._zod,`values`,()=>{let e=t.innerType._zod.values;return e?new Set([...e].filter(e=>e!==void 0)):void 0}),e._zod.parse=(n,r)=>{let i=t.innerType._zod.run(n,r);return i instanceof Promise?i.then(t=>jn(t,e)):jn(i,e)}});function jn(e,t){return!e.issues.length&&e.value===void 0&&e.issues.push({code:`invalid_type`,expected:`nonoptional`,input:e.value,inst:t}),e}var Mn=t(`$ZodCatch`,(e,t)=>{N.init(e,t),e._zod.optin=`optional`,p(e._zod,`optout`,()=>t.innerType._zod.optout),p(e._zod,`values`,()=>t.innerType._zod.values),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(r=>(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>w(e,n,a()))},input:e.value}),e.issues=[],e.fallback=!0),e)):(e.value=r.value,r.issues.length&&(e.value=t.catchValue({...e,error:{issues:r.issues.map(e=>w(e,n,a()))},input:e.value}),e.issues=[],e.fallback=!0),e)}}),Nn=t(`$ZodPipe`,(e,t)=>{N.init(e,t),p(e._zod,`values`,()=>t.in._zod.values),p(e._zod,`optin`,()=>t.in._zod.optin),p(e._zod,`optout`,()=>t.out._zod.optout),p(e._zod,`propValues`,()=>t.in._zod.propValues),e._zod.parse=(e,n)=>{if(n.direction===`backward`){let r=t.out._zod.run(e,n);return r instanceof Promise?r.then(e=>R(e,t.in,n)):R(r,t.in,n)}let r=t.in._zod.run(e,n);return r instanceof Promise?r.then(e=>R(e,t.out,n)):R(r,t.out,n)}});function R(e,t,n){return e.issues.length?(e.aborted=!0,e):t._zod.run({value:e.value,issues:e.issues,fallback:e.fallback},n)}var Pn=t(`$ZodReadonly`,(e,t)=>{N.init(e,t),p(e._zod,`propValues`,()=>t.innerType._zod.propValues),p(e._zod,`values`,()=>t.innerType._zod.values),p(e._zod,`optin`,()=>t.innerType?._zod?.optin),p(e._zod,`optout`,()=>t.innerType?._zod?.optout),e._zod.parse=(e,n)=>{if(n.direction===`backward`)return t.innerType._zod.run(e,n);let r=t.innerType._zod.run(e,n);return r instanceof Promise?r.then(Fn):Fn(r)}});function Fn(e){return e.value=Object.freeze(e.value),e}var In=t(`$ZodLazy`,(e,t)=>{N.init(e,t),p(e._zod,`innerType`,()=>{let e=t;return e._cachedInner||=t.getter(),e._cachedInner}),p(e._zod,`pattern`,()=>e._zod.innerType?._zod?.pattern),p(e._zod,`propValues`,()=>e._zod.innerType?._zod?.propValues),p(e._zod,`optin`,()=>e._zod.innerType?._zod?.optin??void 0),p(e._zod,`optout`,()=>e._zod.innerType?._zod?.optout??void 0),e._zod.parse=(t,n)=>e._zod.innerType._zod.run(t,n)}),Ln=t(`$ZodCustom`,(e,t)=>{j.init(e,t),N.init(e,t),e._zod.parse=(e,t)=>e,e._zod.check=n=>{let r=n.value,i=t.fn(r);if(i instanceof Promise)return i.then(t=>Rn(t,n,r,e));Rn(i,n,r,e)}});function Rn(e,t,n,r){if(!e){let e={code:`custom`,input:n,inst:r,path:[...r._zod.def.path??[]],continue:!r._zod.def.abort};r._zod.def.params&&(e.params=r._zod.def.params),t.issues.push(E(e))}}var zn,Bn=class{constructor(){this._map=new WeakMap,this._idmap=new Map}add(e,...t){let n=t[0];return this._map.set(e,n),n&&typeof n==`object`&&`id`in n&&this._idmap.set(n.id,e),this}clear(){return this._map=new WeakMap,this._idmap=new Map,this}remove(e){let t=this._map.get(e);return t&&typeof t==`object`&&`id`in t&&this._idmap.delete(t.id),this._map.delete(e),this}get(e){let t=e._zod.parent;if(t){let n={...this.get(t)??{}};delete n.id;let r={...n,...this._map.get(e)};return Object.keys(r).length?r:void 0}return this._map.get(e)}has(e){return this._map.has(e)}};function Vn(){return new Bn}(zn=globalThis).__zod_globalRegistry??(zn.__zod_globalRegistry=Vn());var z=globalThis.__zod_globalRegistry;function Hn(e,t){return new e({type:`string`,...b(t)})}function Un(e,t){return new e({type:`string`,format:`email`,check:`string_format`,abort:!1,...b(t)})}function Wn(e,t){return new e({type:`string`,format:`guid`,check:`string_format`,abort:!1,...b(t)})}function Gn(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,...b(t)})}function Kn(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v4`,...b(t)})}function qn(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v6`,...b(t)})}function Jn(e,t){return new e({type:`string`,format:`uuid`,check:`string_format`,abort:!1,version:`v7`,...b(t)})}function Yn(e,t){return new e({type:`string`,format:`url`,check:`string_format`,abort:!1,...b(t)})}function Xn(e,t){return new e({type:`string`,format:`emoji`,check:`string_format`,abort:!1,...b(t)})}function Zn(e,t){return new e({type:`string`,format:`nanoid`,check:`string_format`,abort:!1,...b(t)})}function Qn(e,t){return new e({type:`string`,format:`cuid`,check:`string_format`,abort:!1,...b(t)})}function $n(e,t){return new e({type:`string`,format:`cuid2`,check:`string_format`,abort:!1,...b(t)})}function er(e,t){return new e({type:`string`,format:`ulid`,check:`string_format`,abort:!1,...b(t)})}function tr(e,t){return new e({type:`string`,format:`xid`,check:`string_format`,abort:!1,...b(t)})}function nr(e,t){return new e({type:`string`,format:`ksuid`,check:`string_format`,abort:!1,...b(t)})}function rr(e,t){return new e({type:`string`,format:`ipv4`,check:`string_format`,abort:!1,...b(t)})}function ir(e,t){return new e({type:`string`,format:`ipv6`,check:`string_format`,abort:!1,...b(t)})}function ar(e,t){return new e({type:`string`,format:`cidrv4`,check:`string_format`,abort:!1,...b(t)})}function or(e,t){return new e({type:`string`,format:`cidrv6`,check:`string_format`,abort:!1,...b(t)})}function sr(e,t){return new e({type:`string`,format:`base64`,check:`string_format`,abort:!1,...b(t)})}function cr(e,t){return new e({type:`string`,format:`base64url`,check:`string_format`,abort:!1,...b(t)})}function lr(e,t){return new e({type:`string`,format:`e164`,check:`string_format`,abort:!1,...b(t)})}function ur(e,t){return new e({type:`string`,format:`jwt`,check:`string_format`,abort:!1,...b(t)})}function dr(e,t){return new e({type:`string`,format:`datetime`,check:`string_format`,offset:!1,local:!1,precision:null,...b(t)})}function fr(e,t){return new e({type:`string`,format:`date`,check:`string_format`,...b(t)})}function pr(e,t){return new e({type:`string`,format:`time`,check:`string_format`,precision:null,...b(t)})}function mr(e,t){return new e({type:`string`,format:`duration`,check:`string_format`,...b(t)})}function hr(e,t){return new e({type:`number`,checks:[],...b(t)})}function gr(e,t){return new e({type:`number`,check:`number_format`,abort:!1,format:`safeint`,...b(t)})}function _r(e,t){return new e({type:`boolean`,...b(t)})}function vr(e){return new e({type:`any`})}function yr(e){return new e({type:`unknown`})}function br(e,t){return new e({type:`never`,...b(t)})}function xr(e,t){return new lt({check:`less_than`,...b(t),value:e,inclusive:!1})}function B(e,t){return new lt({check:`less_than`,...b(t),value:e,inclusive:!0})}function Sr(e,t){return new ut({check:`greater_than`,...b(t),value:e,inclusive:!1})}function V(e,t){return new ut({check:`greater_than`,...b(t),value:e,inclusive:!0})}function Cr(e,t){return new dt({check:`multiple_of`,...b(t),value:e})}function wr(e,t){return new pt({check:`max_length`,...b(t),maximum:e})}function H(e,t){return new mt({check:`min_length`,...b(t),minimum:e})}function Tr(e,t){return new ht({check:`length_equals`,...b(t),length:e})}function Er(e,t){return new gt({check:`string_format`,format:`regex`,...b(t),pattern:e})}function Dr(e){return new _t({check:`string_format`,format:`lowercase`,...b(e)})}function Or(e){return new vt({check:`string_format`,format:`uppercase`,...b(e)})}function kr(e,t){return new yt({check:`string_format`,format:`includes`,...b(t),includes:e})}function Ar(e,t){return new bt({check:`string_format`,format:`starts_with`,...b(t),prefix:e})}function jr(e,t){return new xt({check:`string_format`,format:`ends_with`,...b(t),suffix:e})}function U(e){return new St({check:`overwrite`,tx:e})}function Mr(e){return U(t=>t.normalize(e))}function Nr(){return U(e=>e.trim())}function Pr(){return U(e=>e.toLowerCase())}function Fr(){return U(e=>e.toUpperCase())}function Ir(){return U(e=>te(e))}function Lr(e,t,n){return new e({type:`array`,element:t,...b(n)})}function Rr(e,t,n){return new e({type:`custom`,check:`custom`,fn:t,...b(n)})}function zr(e,t){let n=Br(t=>(t.addIssue=e=>{if(typeof e==`string`)t.issues.push(E(e,t.value,n._zod.def));else{let r=e;r.fatal&&(r.continue=!1),r.code??=`custom`,r.input??=t.value,r.inst??=n,r.continue??=!n._zod.def.abort,t.issues.push(E(r))}},e(t.value,t)),t);return n}function Br(e,t){let n=new j({check:`custom`,...b(t)});return n._zod.check=e,n}function Vr(e){let t=e?.target??`draft-2020-12`;return t===`draft-4`&&(t=`draft-04`),t===`draft-7`&&(t=`draft-07`),{processors:e.processors??{},metadataRegistry:e?.metadata??z,target:t,unrepresentable:e?.unrepresentable??`throw`,override:e?.override??(()=>{}),io:e?.io??`output`,counter:0,seen:new Map,cycles:e?.cycles??`ref`,reused:e?.reused??`inline`,external:e?.external??void 0}}function W(e,t,n={path:[],schemaPath:[]}){var r;let i=e._zod.def,a=t.seen.get(e);if(a)return a.count++,n.schemaPath.includes(e)&&(a.cycle=n.path),a.schema;let o={schema:{},count:1,cycle:void 0,path:n.path};t.seen.set(e,o);let s=e._zod.toJSONSchema?.();if(s)o.schema=s;else{let r={...n,schemaPath:[...n.schemaPath,e],path:n.path};if(e._zod.processJSONSchema)e._zod.processJSONSchema(t,o.schema,r);else{let n=o.schema,a=t.processors[i.type];if(!a)throw Error(`[toJSONSchema]: Non-representable type encountered: ${i.type}`);a(e,t,n,r)}let a=e._zod.parent;a&&(o.ref||=a,W(a,t,r),t.seen.get(a).isParent=!0)}let c=t.metadataRegistry.get(e);return c&&Object.assign(o.schema,c),t.io===`input`&&G(e)&&(delete o.schema.examples,delete o.schema.default),t.io===`input`&&`_prefault`in o.schema&&((r=o.schema).default??(r.default=o.schema._prefault)),delete o.schema._prefault,t.seen.get(e).schema}function Hr(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=new Map;for(let t of e.seen.entries()){let n=e.metadataRegistry.get(t[0])?.id;if(n){let e=r.get(n);if(e&&e!==t[0])throw Error(`Duplicate schema id "${n}" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);r.set(n,t[0])}}let i=t=>{let r=e.target===`draft-2020-12`?`$defs`:`definitions`;if(e.external){let n=e.external.registry.get(t[0])?.id,i=e.external.uri??(e=>e);if(n)return{ref:i(n)};let a=t[1].defId??t[1].schema.id??`schema${e.counter++}`;return t[1].defId=a,{defId:a,ref:`${i(`__shared`)}#/${r}/${a}`}}if(t[1]===n)return{ref:`#`};let i=`#/${r}/`,a=t[1].schema.id??`__schema${e.counter++}`;return{defId:a,ref:i+a}},a=e=>{if(e[1].schema.$ref)return;let t=e[1],{ref:n,defId:r}=i(e);t.def={...t.schema},r&&(t.defId=r);let a=t.schema;for(let e in a)delete a[e];a.$ref=n};if(e.cycles===`throw`)for(let t of e.seen.entries()){let e=t[1];if(e.cycle)throw Error(`Cycle detected: #/${e.cycle?.join(`/`)}/<root>
63
+
64
+ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.`)}for(let n of e.seen.entries()){let r=n[1];if(t===n[0]){a(n);continue}if(e.external){let r=e.external.registry.get(n[0])?.id;if(t!==n[0]&&r){a(n);continue}}if(e.metadataRegistry.get(n[0])?.id){a(n);continue}if(r.cycle){a(n);continue}if(r.count>1&&e.reused===`ref`){a(n);continue}}}function Ur(e,t){let n=e.seen.get(t);if(!n)throw Error(`Unprocessed schema. This is a bug in Zod.`);let r=t=>{let n=e.seen.get(t);if(n.ref===null)return;let i=n.def??n.schema,a={...i},o=n.ref;if(n.ref=null,o){r(o);let n=e.seen.get(o),s=n.schema;if(s.$ref&&(e.target===`draft-07`||e.target===`draft-04`||e.target===`openapi-3.0`)?(i.allOf=i.allOf??[],i.allOf.push(s)):Object.assign(i,s),Object.assign(i,a),t._zod.parent===o)for(let e in i)e===`$ref`||e===`allOf`||e in a||delete i[e];if(s.$ref&&n.def)for(let e in i)e===`$ref`||e===`allOf`||e in n.def&&JSON.stringify(i[e])===JSON.stringify(n.def[e])&&delete i[e]}let s=t._zod.parent;if(s&&s!==o){r(s);let t=e.seen.get(s);if(t?.schema.$ref&&(i.$ref=t.schema.$ref,t.def))for(let e in i)e===`$ref`||e===`allOf`||e in t.def&&JSON.stringify(i[e])===JSON.stringify(t.def[e])&&delete i[e]}e.override({zodSchema:t,jsonSchema:i,path:n.path??[]})};for(let t of[...e.seen.entries()].reverse())r(t[0]);let i={};if(e.target===`draft-2020-12`?i.$schema=`https://json-schema.org/draft/2020-12/schema`:e.target===`draft-07`?i.$schema=`http://json-schema.org/draft-07/schema#`:e.target===`draft-04`?i.$schema=`http://json-schema.org/draft-04/schema#`:e.target,e.external?.uri){let n=e.external.registry.get(t)?.id;if(!n)throw Error("Schema is missing an `id` property");i.$id=e.external.uri(n)}Object.assign(i,n.def??n.schema);let a=e.metadataRegistry.get(t)?.id;a!==void 0&&i.id===a&&delete i.id;let o=e.external?.defs??{};for(let t of e.seen.entries()){let e=t[1];e.def&&e.defId&&(e.def.id===e.defId&&delete e.def.id,o[e.defId]=e.def)}e.external||Object.keys(o).length>0&&(e.target===`draft-2020-12`?i.$defs=o:i.definitions=o);try{let n=JSON.parse(JSON.stringify(i));return Object.defineProperty(n,`~standard`,{value:{...t[`~standard`],jsonSchema:{input:K(t,`input`,e.processors),output:K(t,`output`,e.processors)}},enumerable:!1,writable:!1}),n}catch{throw Error(`Error converting schema to JSON.`)}}function G(e,t){let n=t??{seen:new Set};if(n.seen.has(e))return!1;n.seen.add(e);let r=e._zod.def;if(r.type===`transform`)return!0;if(r.type===`array`)return G(r.element,n);if(r.type===`set`)return G(r.valueType,n);if(r.type===`lazy`)return G(r.getter(),n);if(r.type===`promise`||r.type===`optional`||r.type===`nonoptional`||r.type===`nullable`||r.type===`readonly`||r.type===`default`||r.type===`prefault`)return G(r.innerType,n);if(r.type===`intersection`)return G(r.left,n)||G(r.right,n);if(r.type===`record`||r.type===`map`)return G(r.keyType,n)||G(r.valueType,n);if(r.type===`pipe`)return e._zod.traits.has(`$ZodCodec`)?!0:G(r.in,n)||G(r.out,n);if(r.type===`object`){for(let e in r.shape)if(G(r.shape[e],n))return!0;return!1}if(r.type===`union`){for(let e of r.options)if(G(e,n))return!0;return!1}if(r.type===`tuple`){for(let e of r.items)if(G(e,n))return!0;return!!(r.rest&&G(r.rest,n))}return!1}var Wr=(e,t={})=>n=>{let r=Vr({...n,processors:t});return W(e,r),Hr(r,e),Ur(r,e)},K=(e,t,n={})=>r=>{let{libraryOptions:i,target:a}=r??{},o=Vr({...i??{},target:a,io:t,processors:n});return W(e,o),Hr(o,e),Ur(o,e)},Gr={guid:`uuid`,url:`uri`,datetime:`date-time`,json_string:`json-string`,regex:``},Kr=(e,t,n,r)=>{let i=n;i.type=`string`;let{minimum:a,maximum:o,format:s,patterns:c,contentEncoding:l}=e._zod.bag;if(typeof a==`number`&&(i.minLength=a),typeof o==`number`&&(i.maxLength=o),s&&(i.format=Gr[s]??s,i.format===``&&delete i.format,s===`time`&&delete i.format),l&&(i.contentEncoding=l),c&&c.size>0){let e=[...c];e.length===1?i.pattern=e[0].source:e.length>1&&(i.allOf=[...e.map(e=>({...t.target===`draft-07`||t.target===`draft-04`||t.target===`openapi-3.0`?{type:`string`}:{},pattern:e.source}))])}},qr=(e,t,n,r)=>{let i=n,{minimum:a,maximum:o,format:s,multipleOf:c,exclusiveMaximum:l,exclusiveMinimum:u}=e._zod.bag;typeof s==`string`&&s.includes(`int`)?i.type=`integer`:i.type=`number`;let d=typeof u==`number`&&u>=(a??-1/0),f=typeof l==`number`&&l<=(o??1/0),p=t.target===`draft-04`||t.target===`openapi-3.0`;d?p?(i.minimum=u,i.exclusiveMinimum=!0):i.exclusiveMinimum=u:typeof a==`number`&&(i.minimum=a),f?p?(i.maximum=l,i.exclusiveMaximum=!0):i.exclusiveMaximum=l:typeof o==`number`&&(i.maximum=o),typeof c==`number`&&(i.multipleOf=c)},Jr=(e,t,n,r)=>{n.type=`boolean`},Yr=(e,t,n,r)=>{n.not={}},Xr=(e,t,n,r)=>{let i=e._zod.def,a=o(i.entries);a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),n.enum=a},Zr=(e,t,n,r)=>{let i=e._zod.def,a=[];for(let e of i.values)if(e===void 0){if(t.unrepresentable===`throw`)throw Error("Literal `undefined` cannot be represented in JSON Schema")}else if(typeof e==`bigint`){if(t.unrepresentable===`throw`)throw Error(`BigInt literals cannot be represented in JSON Schema`);a.push(Number(e))}else a.push(e);if(a.length!==0)if(a.length===1){let e=a[0];n.type=e===null?`null`:typeof e,t.target===`draft-04`||t.target===`openapi-3.0`?n.enum=[e]:n.const=e}else a.every(e=>typeof e==`number`)&&(n.type=`number`),a.every(e=>typeof e==`string`)&&(n.type=`string`),a.every(e=>typeof e==`boolean`)&&(n.type=`boolean`),a.every(e=>e===null)&&(n.type=`null`),n.enum=a},Qr=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Custom types cannot be represented in JSON Schema`)},$r=(e,t,n,r)=>{if(t.unrepresentable===`throw`)throw Error(`Transforms cannot be represented in JSON Schema`)},ei=(e,t,n,r)=>{let i=n,a=e._zod.def,{minimum:o,maximum:s}=e._zod.bag;typeof o==`number`&&(i.minItems=o),typeof s==`number`&&(i.maxItems=s),i.type=`array`,i.items=W(a.element,t,{...r,path:[...r.path,`items`]})},ti=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`,i.properties={};let o=a.shape;for(let e in o)i.properties[e]=W(o[e],t,{...r,path:[...r.path,`properties`,e]});let s=new Set(Object.keys(o)),c=new Set([...s].filter(e=>{let n=a.shape[e]._zod;return t.io===`input`?n.optin===void 0:n.optout===void 0}));c.size>0&&(i.required=Array.from(c)),a.catchall?._zod.def.type===`never`?i.additionalProperties=!1:a.catchall?a.catchall&&(i.additionalProperties=W(a.catchall,t,{...r,path:[...r.path,`additionalProperties`]})):t.io===`output`&&(i.additionalProperties=!1)},ni=(e,t,n,r)=>{let i=e._zod.def,a=i.inclusive===!1,o=i.options.map((e,n)=>W(e,t,{...r,path:[...r.path,a?`oneOf`:`anyOf`,n]}));a?n.oneOf=o:n.anyOf=o},ri=(e,t,n,r)=>{let i=e._zod.def,a=W(i.left,t,{...r,path:[...r.path,`allOf`,0]}),o=W(i.right,t,{...r,path:[...r.path,`allOf`,1]}),s=e=>`allOf`in e&&Object.keys(e).length===1;n.allOf=[...s(a)?a.allOf:[a],...s(o)?o.allOf:[o]]},ii=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`array`;let o=t.target===`draft-2020-12`?`prefixItems`:`items`,s=t.target===`draft-2020-12`||t.target===`openapi-3.0`?`items`:`additionalItems`,c=a.items.map((e,n)=>W(e,t,{...r,path:[...r.path,o,n]})),l=a.rest?W(a.rest,t,{...r,path:[...r.path,s,...t.target===`openapi-3.0`?[a.items.length]:[]]}):null;t.target===`draft-2020-12`?(i.prefixItems=c,l&&(i.items=l)):t.target===`openapi-3.0`?(i.items={anyOf:c},l&&i.items.anyOf.push(l),i.minItems=c.length,l||(i.maxItems=c.length)):(i.items=c,l&&(i.additionalItems=l));let{minimum:u,maximum:d}=e._zod.bag;typeof u==`number`&&(i.minItems=u),typeof d==`number`&&(i.maxItems=d)},ai=(e,t,n,r)=>{let i=n,a=e._zod.def;i.type=`object`;let o=a.keyType,s=o._zod.bag?.patterns;if(a.mode===`loose`&&s&&s.size>0){let e=W(a.valueType,t,{...r,path:[...r.path,`patternProperties`,`*`]});i.patternProperties={};for(let t of s)i.patternProperties[t.source]=e}else (t.target===`draft-07`||t.target===`draft-2020-12`)&&(i.propertyNames=W(a.keyType,t,{...r,path:[...r.path,`propertyNames`]})),i.additionalProperties=W(a.valueType,t,{...r,path:[...r.path,`additionalProperties`]});let c=o._zod.values;if(c){let e=[...c].filter(e=>typeof e==`string`||typeof e==`number`);e.length>0&&(i.required=e)}},oi=(e,t,n,r)=>{let i=e._zod.def,a=W(i.innerType,t,r),o=t.seen.get(e);t.target===`openapi-3.0`?(o.ref=i.innerType,n.nullable=!0):n.anyOf=[a,{type:`null`}]},si=(e,t,n,r)=>{let i=e._zod.def;W(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},ci=(e,t,n,r)=>{let i=e._zod.def;W(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.default=JSON.parse(JSON.stringify(i.defaultValue))},li=(e,t,n,r)=>{let i=e._zod.def;W(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,t.io===`input`&&(n._prefault=JSON.parse(JSON.stringify(i.defaultValue)))},ui=(e,t,n,r)=>{let i=e._zod.def;W(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType;let o;try{o=i.catchValue(void 0)}catch{throw Error(`Dynamic catch values are not supported in JSON Schema`)}n.default=o},di=(e,t,n,r)=>{let i=e._zod.def,a=i.in._zod.traits.has(`$ZodTransform`),o=t.io===`input`?a?i.out:i.in:i.out;W(o,t,r);let s=t.seen.get(e);s.ref=o},fi=(e,t,n,r)=>{let i=e._zod.def;W(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType,n.readOnly=!0},pi=(e,t,n,r)=>{let i=e._zod.def;W(i.innerType,t,r);let a=t.seen.get(e);a.ref=i.innerType},mi=(e,t,n,r)=>{let i=e._zod.innerType;W(i,t,r);let a=t.seen.get(e);a.ref=i},hi=t(`ZodISODateTime`,(e,t)=>{It.init(e,t),X.init(e,t)});function gi(e){return dr(hi,e)}var _i=t(`ZodISODate`,(e,t)=>{Lt.init(e,t),X.init(e,t)});function vi(e){return fr(_i,e)}var yi=t(`ZodISOTime`,(e,t)=>{Rt.init(e,t),X.init(e,t)});function bi(e){return pr(yi,e)}var xi=t(`ZodISODuration`,(e,t)=>{zt.init(e,t),X.init(e,t)});function Si(e){return mr(xi,e)}var q=t(`ZodError`,(e,t)=>{_e.init(e,t),e.name=`ZodError`,Object.defineProperties(e,{format:{value:t=>be(e,t)},flatten:{value:t=>ye(e,t)},addIssue:{value:t=>{e.issues.push(t),e.message=JSON.stringify(e.issues,s,2)}},addIssues:{value:t=>{e.issues.push(...t),e.message=JSON.stringify(e.issues,s,2)}},isEmpty:{get(){return e.issues.length===0}}})},{Parent:Error}),Ci=D(q),wi=O(q),Ti=k(q),Ei=A(q),Di=Ce(q),Oi=we(q),ki=Te(q),Ai=Ee(q),ji=De(q),Mi=Oe(q),Ni=ke(q),Pi=Ae(q),Fi=new WeakMap;function J(e,t,n){let r=Object.getPrototypeOf(e),i=Fi.get(r);if(i||(i=new Set,Fi.set(r,i)),!i.has(t)){i.add(t);for(let e in n){let t=n[e];Object.defineProperty(r,e,{configurable:!0,enumerable:!1,get(){let n=t.bind(this);return Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:n}),n},set(t){Object.defineProperty(this,e,{configurable:!0,writable:!0,enumerable:!0,value:t})}})}}}var Y=t(`ZodType`,(e,t)=>(N.init(e,t),Object.assign(e[`~standard`],{jsonSchema:{input:K(e,`input`),output:K(e,`output`)}}),e.toJSONSchema=Wr(e,{}),e.def=t,e.type=t.type,Object.defineProperty(e,`_def`,{value:t}),e.parse=(t,n)=>Ci(e,t,n,{callee:e.parse}),e.safeParse=(t,n)=>Ti(e,t,n),e.parseAsync=async(t,n)=>wi(e,t,n,{callee:e.parseAsync}),e.safeParseAsync=async(t,n)=>Ei(e,t,n),e.spa=e.safeParseAsync,e.encode=(t,n)=>Di(e,t,n),e.decode=(t,n)=>Oi(e,t,n),e.encodeAsync=async(t,n)=>ki(e,t,n),e.decodeAsync=async(t,n)=>Ai(e,t,n),e.safeEncode=(t,n)=>ji(e,t,n),e.safeDecode=(t,n)=>Mi(e,t,n),e.safeEncodeAsync=async(t,n)=>Ni(e,t,n),e.safeDecodeAsync=async(t,n)=>Pi(e,t,n),J(e,`ZodType`,{check(...e){let t=this.def;return this.clone(h(t,{checks:[...t.checks??[],...e.map(e=>typeof e==`function`?{_zod:{check:e,def:{check:`custom`},onattach:[]}}:e)]}),{parent:!0})},with(...e){return this.check(...e)},clone(e,t){return y(this,e,t)},brand(){return this},register(e,t){return e.add(this,t),this},refine(e,t){return this.check(to(e,t))},superRefine(e,t){return this.check(no(e,t))},overwrite(e){return this.check(U(e))},optional(){return Fa(this)},exactOptional(){return La(this)},nullable(){return za(this)},nullish(){return Fa(za(this))},nonoptional(e){return Ga(this,e)},array(){return ga(this)},or(e){return ba([this,e])},and(e){return wa(this,e)},transform(e){return Ya(this,Na(e))},default(e){return Va(this,e)},prefault(e){return Ua(this,e)},catch(e){return qa(this,e)},pipe(e){return Ya(this,e)},readonly(){return Za(this)},describe(e){let t=this.clone();return z.add(t,{description:e}),t},meta(...e){if(e.length===0)return z.get(this);let t=this.clone();return z.add(t,e[0]),t},isOptional(){return this.safeParse(void 0).success},isNullable(){return this.safeParse(null).success},apply(e){return e(this)}}),Object.defineProperty(e,`description`,{get(){return z.get(e)?.description},configurable:!0}),e)),Ii=t(`_ZodString`,(e,t)=>{P.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Kr(e,t,n,r);let n=e._zod.bag;e.format=n.format??null,e.minLength=n.minimum??null,e.maxLength=n.maximum??null,J(e,`_ZodString`,{regex(...e){return this.check(Er(...e))},includes(...e){return this.check(kr(...e))},startsWith(...e){return this.check(Ar(...e))},endsWith(...e){return this.check(jr(...e))},min(...e){return this.check(H(...e))},max(...e){return this.check(wr(...e))},length(...e){return this.check(Tr(...e))},nonempty(...e){return this.check(H(1,...e))},lowercase(e){return this.check(Dr(e))},uppercase(e){return this.check(Or(e))},trim(){return this.check(Nr())},normalize(...e){return this.check(Mr(...e))},toLowerCase(){return this.check(Pr())},toUpperCase(){return this.check(Fr())},slugify(){return this.check(Ir())}})}),Li=t(`ZodString`,(e,t)=>{P.init(e,t),Ii.init(e,t),e.email=t=>e.check(Un(zi,t)),e.url=t=>e.check(Yn(Vi,t)),e.jwt=t=>e.check(ur(ra,t)),e.emoji=t=>e.check(Xn(Ui,t)),e.guid=t=>e.check(Wn(Bi,t)),e.uuid=t=>e.check(Gn(Z,t)),e.uuidv4=t=>e.check(Kn(Z,t)),e.uuidv6=t=>e.check(qn(Z,t)),e.uuidv7=t=>e.check(Jn(Z,t)),e.nanoid=t=>e.check(Zn(Wi,t)),e.guid=t=>e.check(Wn(Bi,t)),e.cuid=t=>e.check(Qn(Gi,t)),e.cuid2=t=>e.check($n(Ki,t)),e.ulid=t=>e.check(er(qi,t)),e.base64=t=>e.check(sr(ea,t)),e.base64url=t=>e.check(cr(ta,t)),e.xid=t=>e.check(tr(Ji,t)),e.ksuid=t=>e.check(nr(Yi,t)),e.ipv4=t=>e.check(rr(Xi,t)),e.ipv6=t=>e.check(ir(Zi,t)),e.cidrv4=t=>e.check(ar(Qi,t)),e.cidrv6=t=>e.check(or($i,t)),e.e164=t=>e.check(lr(na,t)),e.datetime=t=>e.check(gi(t)),e.date=t=>e.check(vi(t)),e.time=t=>e.check(bi(t)),e.duration=t=>e.check(Si(t))});function Ri(e){return Hn(Li,e)}var X=t(`ZodStringFormat`,(e,t)=>{F.init(e,t),Ii.init(e,t)}),zi=t(`ZodEmail`,(e,t)=>{Dt.init(e,t),X.init(e,t)}),Bi=t(`ZodGUID`,(e,t)=>{Tt.init(e,t),X.init(e,t)}),Z=t(`ZodUUID`,(e,t)=>{Et.init(e,t),X.init(e,t)}),Vi=t(`ZodURL`,(e,t)=>{Ot.init(e,t),X.init(e,t)});function Hi(e){return Yn(Vi,e)}var Ui=t(`ZodEmoji`,(e,t)=>{kt.init(e,t),X.init(e,t)}),Wi=t(`ZodNanoID`,(e,t)=>{At.init(e,t),X.init(e,t)}),Gi=t(`ZodCUID`,(e,t)=>{jt.init(e,t),X.init(e,t)}),Ki=t(`ZodCUID2`,(e,t)=>{Mt.init(e,t),X.init(e,t)}),qi=t(`ZodULID`,(e,t)=>{Nt.init(e,t),X.init(e,t)}),Ji=t(`ZodXID`,(e,t)=>{Pt.init(e,t),X.init(e,t)}),Yi=t(`ZodKSUID`,(e,t)=>{Ft.init(e,t),X.init(e,t)}),Xi=t(`ZodIPv4`,(e,t)=>{Bt.init(e,t),X.init(e,t)}),Zi=t(`ZodIPv6`,(e,t)=>{Vt.init(e,t),X.init(e,t)}),Qi=t(`ZodCIDRv4`,(e,t)=>{Ht.init(e,t),X.init(e,t)}),$i=t(`ZodCIDRv6`,(e,t)=>{Ut.init(e,t),X.init(e,t)}),ea=t(`ZodBase64`,(e,t)=>{Gt.init(e,t),X.init(e,t)}),ta=t(`ZodBase64URL`,(e,t)=>{qt.init(e,t),X.init(e,t)}),na=t(`ZodE164`,(e,t)=>{Jt.init(e,t),X.init(e,t)}),ra=t(`ZodJWT`,(e,t)=>{Xt.init(e,t),X.init(e,t)}),ia=t(`ZodNumber`,(e,t)=>{Zt.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>qr(e,t,n,r),J(e,`ZodNumber`,{gt(e,t){return this.check(Sr(e,t))},gte(e,t){return this.check(V(e,t))},min(e,t){return this.check(V(e,t))},lt(e,t){return this.check(xr(e,t))},lte(e,t){return this.check(B(e,t))},max(e,t){return this.check(B(e,t))},int(e){return this.check(sa(e))},safe(e){return this.check(sa(e))},positive(e){return this.check(Sr(0,e))},nonnegative(e){return this.check(V(0,e))},negative(e){return this.check(xr(0,e))},nonpositive(e){return this.check(B(0,e))},multipleOf(e,t){return this.check(Cr(e,t))},step(e,t){return this.check(Cr(e,t))},finite(){return this}});let n=e._zod.bag;e.minValue=Math.max(n.minimum??-1/0,n.exclusiveMinimum??-1/0)??null,e.maxValue=Math.min(n.maximum??1/0,n.exclusiveMaximum??1/0)??null,e.isInt=(n.format??``).includes(`int`)||Number.isSafeInteger(n.multipleOf??.5),e.isFinite=!0,e.format=n.format??null});function aa(e){return hr(ia,e)}var oa=t(`ZodNumberFormat`,(e,t)=>{Qt.init(e,t),ia.init(e,t)});function sa(e){return gr(oa,e)}var ca=t(`ZodBoolean`,(e,t)=>{$t.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Jr(e,t,n,r)});function la(e){return _r(ca,e)}var ua=t(`ZodAny`,(e,t)=>{en.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function da(){return vr(ua)}var fa=t(`ZodUnknown`,(e,t)=>{tn.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(e,t,n)=>void 0});function Q(){return yr(fa)}var pa=t(`ZodNever`,(e,t)=>{nn.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Yr(e,t,n,r)});function ma(e){return br(pa,e)}var ha=t(`ZodArray`,(e,t)=>{an.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ei(e,t,n,r),e.element=t.element,J(e,`ZodArray`,{min(e,t){return this.check(H(e,t))},nonempty(e){return this.check(H(1,e))},max(e,t){return this.check(wr(e,t))},length(e,t){return this.check(Tr(e,t))},unwrap(){return this.element}})});function ga(e,t){return Lr(ha,e,t)}var _a=t(`ZodObject`,(e,t)=>{ln.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ti(e,t,n,r),p(e,`shape`,()=>t.shape),J(e,`ZodObject`,{keyof(){return ka(Object.keys(this._zod.def.shape))},catchall(e){return this.clone({...this._zod.def,catchall:e})},passthrough(){return this.clone({...this._zod.def,catchall:Q()})},loose(){return this.clone({...this._zod.def,catchall:Q()})},strict(){return this.clone({...this._zod.def,catchall:ma()})},strip(){return this.clone({...this._zod.def,catchall:void 0})},extend(e){return ue(this,e)},safeExtend(e){return de(this,e)},merge(e){return fe(this,e)},pick(e){return ce(this,e)},omit(e){return le(this,e)},partial(...e){return pe(Pa,this,e[0])},required(...e){return me(Wa,this,e[0])}})});function va(e,t){return new _a({type:`object`,shape:e??{},...b(t)})}var ya=t(`ZodUnion`,(e,t)=>{dn.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ni(e,t,n,r),e.options=t.options});function ba(e,t){return new ya({type:`union`,options:e,...b(t)})}var xa=t(`ZodDiscriminatedUnion`,(e,t)=>{ya.init(e,t),fn.init(e,t)});function Sa(e,t,n){return new xa({type:`union`,options:t,discriminator:e,...b(n)})}var Ca=t(`ZodIntersection`,(e,t)=>{pn.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ri(e,t,n,r)});function wa(e,t){return new Ca({type:`intersection`,left:e,right:t})}var Ta=t(`ZodTuple`,(e,t)=>{hn.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ii(e,t,n,r),e.rest=t=>e.clone({...e._zod.def,rest:t})});function Ea(e,t,n){let r=t instanceof N;return new Ta({type:`tuple`,items:e,rest:r?t:null,...b(r?n:t)})}var Da=t(`ZodRecord`,(e,t)=>{yn.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ai(e,t,n,r),e.keyType=t.keyType,e.valueType=t.valueType});function Oa(e,t,n){return!t||!t._zod?new Da({type:`record`,keyType:Ri(),valueType:e,...b(t)}):new Da({type:`record`,keyType:e,valueType:t,...b(n)})}var $=t(`ZodEnum`,(e,t)=>{bn.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Xr(e,t,n,r),e.enum=t.entries,e.options=Object.values(t.entries);let n=new Set(Object.keys(t.entries));e.extract=(e,r)=>{let i={};for(let r of e)if(n.has(r))i[r]=t.entries[r];else throw Error(`Key ${r} not found in enum`);return new $({...t,checks:[],...b(r),entries:i})},e.exclude=(e,r)=>{let i={...t.entries};for(let t of e)if(n.has(t))delete i[t];else throw Error(`Key ${t} not found in enum`);return new $({...t,checks:[],...b(r),entries:i})}});function ka(e,t){return new $({type:`enum`,entries:Array.isArray(e)?Object.fromEntries(e.map(e=>[e,e])):e,...b(t)})}var Aa=t(`ZodLiteral`,(e,t)=>{xn.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Zr(e,t,n,r),e.values=new Set(t.values),Object.defineProperty(e,`value`,{get(){if(t.values.length>1)throw Error("This schema contains multiple valid literal values. Use `.values` instead.");return t.values[0]}})});function ja(e,t){return new Aa({type:`literal`,values:Array.isArray(e)?e:[e],...b(t)})}var Ma=t(`ZodTransform`,(e,t)=>{Sn.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>$r(e,t,n,r),e._zod.parse=(n,i)=>{if(i.direction===`backward`)throw new r(e.constructor.name);n.addIssue=r=>{if(typeof r==`string`)n.issues.push(E(r,n.value,t));else{let t=r;t.fatal&&(t.continue=!1),t.code??=`custom`,t.input??=n.value,t.inst??=e,n.issues.push(E(t))}};let a=t.transform(n.value,n);return a instanceof Promise?a.then(e=>(n.value=e,n.fallback=!0,n)):(n.value=a,n.fallback=!0,n)}});function Na(e){return new Ma({type:`transform`,transform:e})}var Pa=t(`ZodOptional`,(e,t)=>{wn.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>pi(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Fa(e){return new Pa({type:`optional`,innerType:e})}var Ia=t(`ZodExactOptional`,(e,t)=>{Tn.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>pi(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function La(e){return new Ia({type:`optional`,innerType:e})}var Ra=t(`ZodNullable`,(e,t)=>{En.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>oi(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function za(e){return new Ra({type:`nullable`,innerType:e})}var Ba=t(`ZodDefault`,(e,t)=>{Dn.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ci(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeDefault=e.unwrap});function Va(e,t){return new Ba({type:`default`,innerType:e,get defaultValue(){return typeof t==`function`?t():ie(t)}})}var Ha=t(`ZodPrefault`,(e,t)=>{kn.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>li(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Ua(e,t){return new Ha({type:`prefault`,innerType:e,get defaultValue(){return typeof t==`function`?t():ie(t)}})}var Wa=t(`ZodNonOptional`,(e,t)=>{An.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>si(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Ga(e,t){return new Wa({type:`nonoptional`,innerType:e,...b(t)})}var Ka=t(`ZodCatch`,(e,t)=>{Mn.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>ui(e,t,n,r),e.unwrap=()=>e._zod.def.innerType,e.removeCatch=e.unwrap});function qa(e,t){return new Ka({type:`catch`,innerType:e,catchValue:typeof t==`function`?t:()=>t})}var Ja=t(`ZodPipe`,(e,t)=>{Nn.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>di(e,t,n,r),e.in=t.in,e.out=t.out});function Ya(e,t){return new Ja({type:`pipe`,in:e,out:t})}var Xa=t(`ZodReadonly`,(e,t)=>{Pn.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>fi(e,t,n,r),e.unwrap=()=>e._zod.def.innerType});function Za(e){return new Xa({type:`readonly`,innerType:e})}var Qa=t(`ZodLazy`,(e,t)=>{In.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>mi(e,t,n,r),e.unwrap=()=>e._zod.def.getter()});function $a(e){return new Qa({type:`lazy`,getter:e})}var eo=t(`ZodCustom`,(e,t)=>{Ln.init(e,t),Y.init(e,t),e._zod.processJSONSchema=(t,n,r)=>Qr(e,t,n,r)});function to(e,t={}){return Rr(eo,e,t)}function no(e,t){return zr(e,t)}export{Sa as a,aa as c,Ri as d,Ea as f,Hi as h,la as i,va as l,Q as m,da as n,$a as o,ba as p,ga as r,ja as s,ka as t,Oa as u};
package/client/index.html CHANGED
@@ -43,14 +43,15 @@
43
43
  }
44
44
  }
45
45
  </script>
46
- <script type="module" crossorigin src="/assets/index-zZIqEbNX.js"></script>
46
+ <script type="module" crossorigin src="/assets/index-BG_JJcKI.js"></script>
47
47
  <link rel="modulepreload" crossorigin href="/assets/_plugin-vue_export-helper-BOai-rQB.js">
48
48
  <link rel="modulepreload" crossorigin href="/assets/vue.runtime.esm-bundler-BTyIdNAI.js">
49
- <link rel="modulepreload" crossorigin href="/assets/chunk-D8eiyYIV-LcKZGJv5.js">
50
- <link rel="modulepreload" crossorigin href="/assets/typeof-DBp4T-Ny-CSr8wx1e.js">
49
+ <link rel="modulepreload" crossorigin href="/assets/chunk-D8eiyYIV-BY16KEZc.js">
50
+ <link rel="modulepreload" crossorigin href="/assets/typeof-DBp4T-Ny-z2wCIsir.js">
51
51
  <link rel="modulepreload" crossorigin href="/assets/vue-i18n-CQbxVmNs.js">
52
52
  <link rel="modulepreload" crossorigin href="/assets/vue-D4w8THF_.js">
53
- <link rel="stylesheet" crossorigin href="/assets/index-CyBr8Mkr.css">
53
+ <link rel="modulepreload" crossorigin href="/assets/schemas-DuYzyHQc.js">
54
+ <link rel="stylesheet" crossorigin href="/assets/index-DCoo3kpR.css">
54
55
  </head>
55
56
  <body>
56
57
  <div id="app"></div>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mulmoclaude",
3
- "version": "0.6.4",
3
+ "version": "0.7.0",
4
4
  "description": "MulmoClaude — GUI-chat with Claude Code + long-term memory. One command to start.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -23,15 +23,17 @@
23
23
  "@google/genai": "^2.2.0",
24
24
  "@gui-chat-plugin/browse": "^0.4.0",
25
25
  "@gui-chat-plugin/camera": "^0.4.1",
26
- "@gui-chat-plugin/google-map": "^0.4.0",
26
+ "@gui-chat-plugin/google-map": "^0.5.0",
27
27
  "@gui-chat-plugin/mindmap": "^0.4.1",
28
28
  "@gui-chat-plugin/present3d": "^0.4.1",
29
+ "@marp-team/marp-core": "^4.3.0",
29
30
  "@mulmobridge/chat-service": "^0.1.2",
30
31
  "@mulmobridge/client": "^0.1.4",
31
32
  "@mulmobridge/protocol": "^0.1.4",
32
- "@mulmocast/types": "^2.6.15",
33
+ "@mulmocast/types": "^2.6.18",
33
34
  "@mulmochat-plugin/quiz": "0.4.3",
34
35
  "@mulmochat-plugin/ui-image": "^0.4.0",
36
+ "@mulmoclaude/spotify-plugin": "^0.1.0",
35
37
  "@receptron/task-scheduler": "^0.1.0",
36
38
  "cors": "^2.8.6",
37
39
  "dotenv": "^17.4.2",
@@ -43,14 +45,14 @@
43
45
  "js-yaml": "^4.1.1",
44
46
  "mammoth": "^1.12.0",
45
47
  "marked": "^18.0.4",
46
- "mulmocast": "^2.6.15",
48
+ "mulmocast": "^2.6.18",
47
49
  "puppeteer": "^25.0.3",
48
50
  "socket.io": "^4.8.3",
49
51
  "socket.io-client": "^4.8.3",
50
52
  "tsx": "^4.22.3",
51
53
  "uuid": "^14.0.0",
52
54
  "which": "^6",
53
- "ws": "^8.20.1",
55
+ "ws": "^8.21.0",
54
56
  "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz",
55
57
  "zod": "^4.4.3"
56
58
  },
@@ -81,7 +81,40 @@ function createMcpTracker() {
81
81
  };
82
82
  }
83
83
 
84
- async function* readAgentEvents(proc: ClaudeProc): AsyncGenerator<AgentEvent> {
84
+ // Exit codes the claude CLI reports when it is terminated by one of the
85
+ // signals our abort handler sends: 128 + signal number (SIGTERM=15 → 143,
86
+ // SIGKILL=9 → 137). Node also reports a null code with `signal` set when a
87
+ // signal kills the process directly without the CLI's own handler running.
88
+ const ABORT_EXIT_CODES = new Set([143, 137]);
89
+ const ABORT_SIGNALS = new Set<string>(["SIGTERM", "SIGKILL"]);
90
+
91
+ // A non-zero exit caused by our own abort (stop button → proc.kill()) is
92
+ // expected, not a failure — surfacing it as an error event makes a deliberate
93
+ // stop look like a crash. Suppress it ONLY when we actually aborted AND the
94
+ // exit is signal-shaped, so a genuine crash that happens to coincide with a
95
+ // stop click still surfaces its real error.
96
+ export function isAbortCausedExit(exitCode: number | null, signal: string | null, abortSignal?: AbortSignal): boolean {
97
+ if (!abortSignal?.aborted) return false;
98
+ if (signal !== null && ABORT_SIGNALS.has(signal)) return true;
99
+ return exitCode !== null && ABORT_EXIT_CODES.has(exitCode);
100
+ }
101
+
102
+ // Build the error event for a finished claude process, or null when nothing
103
+ // should surface (clean exit, or a deliberate abort). exitCode is null when a
104
+ // signal — not a code — ended the process, so name the signal in that case
105
+ // rather than emitting "claude exited with code null".
106
+ export function buildExitErrorEvent(
107
+ exitCode: number | null,
108
+ signal: string | null,
109
+ abortSignal: AbortSignal | undefined,
110
+ stderrOutput: string,
111
+ ): { type: typeof EVENT_TYPES.error; message: string } | null {
112
+ if (exitCode === 0 || isAbortCausedExit(exitCode, signal, abortSignal)) return null;
113
+ const exitSummary = exitCode !== null ? `claude exited with code ${exitCode}` : `claude terminated by signal ${signal ?? "unknown"}`;
114
+ return { type: EVENT_TYPES.error, message: stderrOutput || exitSummary };
115
+ }
116
+
117
+ async function* readAgentEvents(proc: ClaudeProc, abortSignal?: AbortSignal): AsyncGenerator<AgentEvent> {
85
118
  let stderrOutput = "";
86
119
  let stderrBuffer = "";
87
120
  proc.stderr.on("data", (chunk: Buffer) => {
@@ -107,6 +140,11 @@ async function* readAgentEvents(proc: ClaudeProc): AsyncGenerator<AgentEvent> {
107
140
  // "MCP invoked but consistently failing" pattern.
108
141
  const mcpFailureMonitor = createMcpFailureMonitor();
109
142
 
143
+ // Attach the close listener BEFORE draining stdout. The `close` event
144
+ // can fire on the same tick stdout ends; registering it only after the
145
+ // read loop risks missing it and hanging on the await below.
146
+ const closed = new Promise<{ code: number | null; signal: string | null }>((resolve) => proc.on("close", (code, sig) => resolve({ code, signal: sig })));
147
+
110
148
  let buffer = "";
111
149
  for await (const chunk of proc.stdout) {
112
150
  buffer += (chunk as Buffer).toString();
@@ -129,18 +167,14 @@ async function* readAgentEvents(proc: ClaudeProc): AsyncGenerator<AgentEvent> {
129
167
  }
130
168
  }
131
169
 
132
- const exitCode = await new Promise<number>((resolve) => proc.on("close", resolve));
170
+ const { code: exitCode, signal } = await closed;
133
171
 
134
172
  if (stderrBuffer.trim()) log.error("agent-stderr", stderrBuffer);
135
- log.info("agent", "claude exited", { exitCode });
173
+ log.info("agent", "claude exited", { exitCode, signal });
136
174
  mcpTracker.logIfSuspicious();
137
175
 
138
- if (exitCode !== 0) {
139
- yield {
140
- type: EVENT_TYPES.error,
141
- message: stderrOutput || `claude exited with code ${exitCode}`,
142
- };
143
- }
176
+ const errorEvent = buildExitErrorEvent(exitCode, signal, abortSignal, stderrOutput);
177
+ if (errorEvent) yield errorEvent;
144
178
  }
145
179
 
146
180
  async function* runClaudeAgent(input: AgentInput): AsyncGenerator<AgentEvent> {
@@ -197,7 +231,7 @@ async function* runClaudeAgent(input: AgentInput): AsyncGenerator<AgentEvent> {
197
231
  input.abortSignal?.addEventListener("abort", onAbort, { once: true });
198
232
 
199
233
  try {
200
- yield* readAgentEvents(proc);
234
+ yield* readAgentEvents(proc, input.abortSignal);
201
235
  } finally {
202
236
  input.abortSignal?.removeEventListener("abort", onAbort);
203
237
  if (!proc.killed) proc.kill();
@@ -94,7 +94,11 @@ async function defaultResponse(input: AgentInput): Promise<FakeResponse> {
94
94
  return { error: "fake-echo forced error for the e2e-live error-banner canary" };
95
95
  }
96
96
 
97
- const slashMatch = input.message.trim().match(/^\/([a-z0-9][a-z0-9-]*)$/i);
97
+ // Match a leading `/<skill>` command, with or without trailing
98
+ // arguments (e.g. the collection Chat button seeds
99
+ // `/<slug> <message>`). Only the skill name drives the seeded
100
+ // reply — any args are for the real LLM and are ignored here.
101
+ const slashMatch = input.message.trim().match(/^\/([a-z0-9][a-z0-9-]*)(?:\s|$)/i);
98
102
  if (slashMatch) {
99
103
  const skillReply = await replyFromSeededSkill(input.workspacePath, slashMatch[1]);
100
104
  if (skillReply !== null) return { text: skillReply };
@@ -21,9 +21,32 @@ export const CONTAINER_WORKSPACE_PATH = "/home/node/mulmoclaude";
21
21
  // `Skill({skill:"…"})` call — the harness errors with
22
22
  // `Execute skill: <name>` and the model falls back to Glob+Read.
23
23
  // Bare `Skill` (no parens) permits all skills. See
24
- // plans/fix-skill-tool-allowlist.md.
24
+ // plans/done/fix-skill-tool-allowlist.md.
25
25
  const BASE_ALLOWED_TOOLS = ["Bash", "Read", "Write", "Edit", "Glob", "Grep", "WebFetch", "WebSearch", "Skill"];
26
26
 
27
+ // Pre-allow every tool published by Anthropic's claude.ai account-
28
+ // level connectors so the agent can call them without firing a
29
+ // per-tool "Claude requested permission to use ..." prompt mid-turn
30
+ // inside MulmoClaude. The user still controls connector enable /
31
+ // disable via `claude` interactive `/mcp`; this list is purely a
32
+ // permission-prompt suppressor.
33
+ //
34
+ // Format: per-server shorthand `mcp__<server>`. The CLI expands it
35
+ // to every tool that server publishes. We avoid `~/.claude.json`
36
+ // reads (Docker-fragile, invasive) and avoid the
37
+ // `mcp__claude_ai_*` cross-server glob (not a documented
38
+ // --allowedTools shape — undefined behaviour even if CLI accepts the
39
+ // syntax).
40
+ //
41
+ // Maintenance: when the user enables a new Anthropic connector that
42
+ // MulmoClaude should pre-allow (GitHub / Notion / Linear / Atlassian
43
+ // / Sentry / Cloudflare / etc. — Anthropic keeps adding), append a
44
+ // `mcp__claude_ai_<DisplayName>` entry here. The server-id mapping
45
+ // is `display name with [\s.] → _` (e.g. `claude.ai Google Drive` →
46
+ // `mcp__claude_ai_Google_Drive`). Confirm the live spelling via
47
+ // `claude mcp list` before adding.
48
+ const CLAUDE_AI_CONNECTOR_SERVERS = ["mcp__claude_ai_Gmail", "mcp__claude_ai_Google_Calendar", "mcp__claude_ai_Google_Drive", "mcp__claude_ai_Slack"];
49
+
27
50
  /** Tool names the agent is allowed to call this session. Drives
28
51
  * `PLUGIN_NAMES` env (the MCP child's filter) and the CLI's
29
52
  * `--allowedTools` arg. Static GUI / MCP plugins are gated by
@@ -283,7 +306,7 @@ export function buildCliArgs(params: CliArgsParams): string[] {
283
306
  // Claude's tool registry seems to require wildcard for runtime
284
307
  // discovery; specific names alone register permissions but not
285
308
  // the tool's existence.
286
- const allowedTools = [...BASE_ALLOWED_TOOLS, ...extraAllowedTools, "mcp__mulmoclaude", ...mcpToolNames];
309
+ const allowedTools = [...BASE_ALLOWED_TOOLS, ...extraAllowedTools, "mcp__mulmoclaude", ...CLAUDE_AI_CONNECTOR_SERVERS, ...mcpToolNames];
287
310
 
288
311
  // stream-json input mode: the user message is streamed through
289
312
  // stdin (see `writeUserMessage` in server/agent.ts) rather than
@@ -312,16 +335,30 @@ export function buildCliArgs(params: CliArgsParams): string[] {
312
335
 
313
336
  if (mcpConfigPath) {
314
337
  args.push("--mcp-config", mcpConfigPath);
315
- // Without `--strict-mcp-config`, Claude Code 2.1.x merges in
316
- // claude.ai account-level integrations (Canva / Gmail / Drive
317
- // / Calendar) AND our local `--mcp-config` and observed in
318
- // practice (#1043 C-2 follow-up debug session) the merge silently
319
- // drops the local mulmoclaude server entirely, so its tools
320
- // never reach the agent's registry. With `--strict`, the local
321
- // file is the only source exactly what the parent server
322
- // intends, since mulmoclaude itself is the broker for all the
323
- // GUI plugin tools.
324
- args.push("--strict-mcp-config");
338
+ // We DELIBERATELY do NOT pass `--strict-mcp-config`. The flag is
339
+ // additive by default ("Load MCP servers from JSON files"); the
340
+ // strict variant restricts the session to only our file and
341
+ // hides any claude.ai connectors (Gmail / Calendar / Drive /
342
+ // Slack) the user has wired up via `claude` interactive `/mcp`.
343
+ //
344
+ // We previously DID pass `--strict` as a workaround for a
345
+ // #1043 C-2 finding that the merge silently dropped the local
346
+ // mulmoclaude broker. Re-verified on CLI 2.1.163 (#1617): both
347
+ // layers now coexist in the session's `init.mcp_servers` array
348
+ // and the local broker's full 12-tool surface remains callable.
349
+ // Removing the workaround unlocks the user's already-authorised
350
+ // claude.ai connectors inside MulmoClaude for free, no per-
351
+ // connector mcp.json hand-rolling required.
352
+ //
353
+ // Permission hook for `behavior:"ask"` checks. Gated on
354
+ // `mcpConfigPath` because the handler tool (`handlePermission`)
355
+ // lives inside our MCP server — without `--mcp-config` the CLI
356
+ // can't resolve `mcp__mulmoclaude__handlePermission` and refuses
357
+ // to start (Codex review on PR #1560). In a no-MCP session the
358
+ // CLI's default ask handling stays in place; AskUserQuestion's
359
+ // leak (#1499) only manifests once tools are wired up, so the
360
+ // hook is correctly tied to the MCP-config presence.
361
+ args.push("--permission-prompt-tool", "mcp__mulmoclaude__handlePermission");
325
362
  }
326
363
 
327
364
  if (effortLevel) {
@@ -125,7 +125,18 @@ const ALL_TOOLS: Record<string, ToolDef> = {
125
125
  ...Object.fromEntries(PLUGIN_DEFS.map((def) => [def.name, fromPackage(def, TOOL_ENDPOINTS[def.name])])),
126
126
  };
127
127
 
128
- let activeNames: string[] = [...PLUGIN_NAMES];
128
+ // Host-internal MCP tools the CLI invokes directly via flags
129
+ // (currently: `--permission-prompt-tool mcp__mulmoclaude__handlePermission`,
130
+ // see buildCliArgs + #1499). NOT gated by `role.availablePlugins`
131
+ // — they're infrastructure, not LLM-facing surfaces. Filtered against
132
+ // ALL_TOOLS before use so a typo here can't crash the server.
133
+ const ALWAYS_ON_INTERNAL_TOOL_NAMES = ["handlePermission"] as const;
134
+
135
+ function expandActiveNames(base: readonly string[]): string[] {
136
+ return [...base, ...ALWAYS_ON_INTERNAL_TOOL_NAMES];
137
+ }
138
+
139
+ let activeNames: string[] = expandActiveNames(PLUGIN_NAMES);
129
140
  let tools: ToolDef[] = activeNames.map((name) => ALL_TOOLS[name]).filter(Boolean);
130
141
 
131
142
  // Static collision floor — both the GUI plugin set (`MCP_PLUGIN_NAMES`)
@@ -170,7 +181,7 @@ const runtimeReady: Promise<void> = (async () => {
170
181
  // intersection is now: ALL_TOOLS includes both static + runtime
171
182
  // entries, but only the names PLUGIN_NAMES authorises become live
172
183
  // tools.
173
- activeNames = [...PLUGIN_NAMES];
184
+ activeNames = expandActiveNames(PLUGIN_NAMES);
174
185
  tools = activeNames.map((name) => ALL_TOOLS[name]).filter(Boolean);
175
186
  } catch (err) {
176
187
  process.stderr.write(`[mcp-server] runtime plugin load failed; static tools only: ${String(err)}\n`);
@@ -0,0 +1,115 @@
1
+ // Permission-prompt-tool handler — wired via the Claude CLI's
2
+ // `--permission-prompt-tool mcp__mulmoclaude__handlePermission`
3
+ // flag in `buildCliArgs`. Whenever a built-in CLI tool's own
4
+ // `checkPermissions()` returns `behavior: "ask"` (i.e. it wants
5
+ // to gate on the user), the CLI calls this tool instead of
6
+ // surfacing an interactive prompt — which is what we need
7
+ // because MulmoClaude drives the CLI in headless stream-json
8
+ // mode with no TTY for the user to answer on.
9
+ //
10
+ // The CLI expects a JSON-encoded permission decision wrapped in
11
+ // a single MCP text block. We return the decision as a string;
12
+ // the MCP bridge in `mcp-server.ts` already wraps tool-handler
13
+ // strings as `{type:"text", text:<str>}`, which matches the
14
+ // CLI's expected shape.
15
+ //
16
+ // Decision shape (per the Claude Code 2.1.x CLI):
17
+ // { behavior: "allow", updatedInput: <object> }
18
+ // { behavior: "deny", message: <string> }
19
+ //
20
+ // Current policy:
21
+ // - `AskUserQuestion` is denied with a presentForm-redirect
22
+ // message. The CLI's built-in AskUserQuestion has no UI
23
+ // surface here — without this handler the CLI would echo
24
+ // the literal permission message `"Answer questions?"`
25
+ // back to the LLM as the tool result, which the model
26
+ // misreads as "the user skipped the question". See #1499.
27
+ // - **Every other ask-mode permission check is denied** with
28
+ // a "no headless consent path" message. Auto-allowing them
29
+ // would silently bypass the per-call consent the CLI tool
30
+ // intentionally requested (Codex security review on PR
31
+ // #1560: "removes per-call consent semantics for tools
32
+ // that intentionally escalate to behavior:'ask'"). The
33
+ // deny message tells the LLM the tool needs explicit user
34
+ // approval that isn't available in this surface, so the
35
+ // model picks a non-ask alternative (Read instead of a
36
+ // Bash needing approval, etc.) or asks the user to redo
37
+ // the request more concretely. The role's `--allowedTools`
38
+ // remains the authoritative allow gate; this handler is
39
+ // ONLY for ask-mode hooks.
40
+
41
+ import type { McpTool, McpToolContext } from "./index.js";
42
+ import { log } from "../../system/logger/index.js";
43
+
44
+ const TOOL_NAME = "handlePermission";
45
+
46
+ // Match the literal name the Claude Code CLI emits in `tool_name`
47
+ // for the built-in clarifying-question tool. Exported so tests can
48
+ // pin against the same constant rather than a duplicated string.
49
+ export const ASK_USER_QUESTION_TOOL_NAME = "AskUserQuestion";
50
+
51
+ const DENY_ASK_USER_QUESTION_MESSAGE =
52
+ "AskUserQuestion is not supported in MulmoClaude — use the `presentForm` tool to collect the user's answer. " +
53
+ "Build a small form with the same prompt and choices (radio for one-of, checkbox for many-of, text/textarea for free-form) and call presentForm with it. " +
54
+ "Do not re-call AskUserQuestion; it will be denied again.";
55
+
56
+ function buildDenyGenericMessage(toolName: string): string {
57
+ return (
58
+ `The CLI built-in tool '${toolName}' asked the host for per-call user permission, but MulmoClaude runs the CLI in headless mode and has no consent prompt for it. ` +
59
+ `Try a non-ask alternative for the same goal (e.g. read the file with Read instead of running a Bash command that needs approval), ` +
60
+ `or summarise the situation to the user in plain text and let them re-issue the request with a more concrete instruction. ` +
61
+ `Do not retry '${toolName}' with the same arguments; the host will deny it again.`
62
+ );
63
+ }
64
+
65
+ interface PermissionInput {
66
+ tool_name?: unknown;
67
+ input?: unknown;
68
+ }
69
+
70
+ function buildDenyResponse(message: string): string {
71
+ return JSON.stringify({ behavior: "deny", message });
72
+ }
73
+
74
+ export const handlePermission: McpTool = {
75
+ definition: {
76
+ name: TOOL_NAME,
77
+ description:
78
+ "Internal: permission decision hook called by the Claude Code CLI for tools whose `checkPermissions()` returns `behavior:'ask'`. Not for LLM use — the host wires it via `--permission-prompt-tool` and the CLI invokes it on every ask-mode permission check.",
79
+ inputSchema: {
80
+ type: "object",
81
+ properties: {
82
+ tool_name: {
83
+ type: "string",
84
+ description: "Name of the tool the CLI is asking permission for (e.g. 'AskUserQuestion').",
85
+ },
86
+ input: {
87
+ type: "object",
88
+ description: "Original argument object the LLM passed to the tool.",
89
+ },
90
+ },
91
+ required: ["tool_name", "input"],
92
+ },
93
+ },
94
+
95
+ // Internal-only tool: don't surface it to the LLM via the
96
+ // role's allowedTools / system prompt. The CLI calls it
97
+ // directly through the `--permission-prompt-tool` flag.
98
+
99
+ async handler(args: Record<string, unknown>, __ctx?: McpToolContext): Promise<string> {
100
+ const raw = args as PermissionInput;
101
+ const toolName = typeof raw.tool_name === "string" ? raw.tool_name : "";
102
+
103
+ if (toolName === ASK_USER_QUESTION_TOOL_NAME) {
104
+ log.info("mcp/handlePermission", "deny AskUserQuestion — instruct LLM to use presentForm");
105
+ return buildDenyResponse(DENY_ASK_USER_QUESTION_MESSAGE);
106
+ }
107
+
108
+ // Deny-by-default for every other ask-mode check. Auto-allow
109
+ // would silently bypass the per-call consent the tool itself
110
+ // requested — see the policy block at the top of the file.
111
+ const safeName = toolName.length > 0 ? toolName : "<unknown>";
112
+ log.info("mcp/handlePermission", "deny ask-mode tool — no headless consent surface", { toolName: safeName });
113
+ return buildDenyResponse(buildDenyGenericMessage(safeName));
114
+ },
115
+ };