clawmini 0.0.7 → 0.0.9

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 (367) hide show
  1. package/.changeset/README.md +8 -0
  2. package/.changeset/config.json +14 -0
  3. package/.github/workflows/release.yml +49 -0
  4. package/CHANGELOG.md +36 -0
  5. package/README.md +5 -4
  6. package/dist/adapter-discord/index.d.mts.map +1 -1
  7. package/dist/adapter-discord/index.mjs +465 -282
  8. package/dist/adapter-discord/index.mjs.map +1 -1
  9. package/dist/adapter-google-chat/index.mjs +367 -243
  10. package/dist/adapter-google-chat/index.mjs.map +1 -1
  11. package/dist/cli/index.mjs +684 -24
  12. package/dist/cli/index.mjs.map +1 -1
  13. package/dist/cli/lite.mjs +43 -13
  14. package/dist/cli/lite.mjs.map +1 -1
  15. package/dist/cli/{propose-policy.mjs → manage-policies.mjs} +270 -47
  16. package/dist/cli/manage-policies.mjs.map +1 -0
  17. package/dist/cli/run-host.d.mts +1 -0
  18. package/dist/cli/run-host.mjs +3090 -0
  19. package/dist/cli/run-host.mjs.map +1 -0
  20. package/dist/config-CPFQIGdG.mjs +57 -0
  21. package/dist/config-CPFQIGdG.mjs.map +1 -0
  22. package/dist/config-Dvl-Pov4.mjs +76 -0
  23. package/dist/config-Dvl-Pov4.mjs.map +1 -0
  24. package/dist/daemon/index.d.mts.map +1 -1
  25. package/dist/daemon/index.mjs +970 -332
  26. package/dist/daemon/index.mjs.map +1 -1
  27. package/dist/supervisor-actions-CiW56eLi.mjs +843 -0
  28. package/dist/supervisor-actions-CiW56eLi.mjs.map +1 -0
  29. package/dist/turn-log-buffer-DRgW53gl.mjs +767 -0
  30. package/dist/turn-log-buffer-DRgW53gl.mjs.map +1 -0
  31. package/dist/web/_app/immutable/chunks/{Drm9vgeP.js → 3AZlWB6U.js} +1 -1
  32. package/dist/web/_app/immutable/chunks/BhRSsUCh.js +2 -0
  33. package/dist/web/_app/immutable/chunks/BiLeM2i1.js +1 -0
  34. package/{web/.svelte-kit/output/client/_app/immutable/chunks/CME08kGM.js → dist/web/_app/immutable/chunks/BmBj85Ll.js} +1 -1
  35. package/dist/web/_app/immutable/chunks/BrERcKAH.js +1 -0
  36. package/dist/web/_app/immutable/chunks/Bv9252RM.js +1 -0
  37. package/dist/web/_app/immutable/chunks/CIXNBPKi.js +1 -0
  38. package/dist/web/_app/immutable/chunks/DISKL3GN.js +2 -0
  39. package/dist/web/_app/immutable/chunks/{Zeh-C-mx.js → DcpaLzmX.js} +1 -1
  40. package/dist/web/_app/immutable/chunks/DnQ3vS13.js +1 -0
  41. package/dist/web/_app/immutable/chunks/KsloHTKS.js +1 -0
  42. package/{web/.svelte-kit/output/client/_app/immutable/chunks/Ck-be5J2.js → dist/web/_app/immutable/chunks/RsHsUj-8.js} +2 -2
  43. package/dist/web/_app/immutable/chunks/{G_zz-Gou.js → wpfV79dV.js} +1 -1
  44. package/dist/web/_app/immutable/entry/app.CIw1Qj0n.js +2 -0
  45. package/dist/web/_app/immutable/entry/start.Di0-Jhte.js +1 -0
  46. package/dist/web/_app/immutable/nodes/{0.CYS8iApT.js → 0.DYyUA1au.js} +1 -1
  47. package/dist/web/_app/immutable/nodes/1.D-3QEMMZ.js +1 -0
  48. package/dist/web/_app/immutable/nodes/{2.BnwnD1Ki.js → 2.4olHnH7U.js} +1 -1
  49. package/{web/.svelte-kit/output/client/_app/immutable/nodes/3.Dr0ot9sV.js → dist/web/_app/immutable/nodes/3.4w0bE-m2.js} +3 -3
  50. package/dist/web/_app/immutable/nodes/4.CZvjhVHt.js +60 -0
  51. package/dist/web/_app/immutable/nodes/{5.BBGQ_i84.js → 5.DLbPVJY2.js} +1 -1
  52. package/dist/web/_app/version.json +1 -1
  53. package/dist/web/index.html +12 -12
  54. package/dist/workspace-oWmVh5mi.mjs +1001 -0
  55. package/dist/workspace-oWmVh5mi.mjs.map +1 -0
  56. package/docs/23_adapter_slash_autocomplete/development_log.md +19 -0
  57. package/docs/23_adapter_slash_autocomplete/notes.md +18 -0
  58. package/docs/23_adapter_slash_autocomplete/prd.md +46 -0
  59. package/docs/23_adapter_slash_autocomplete/questions.md +6 -0
  60. package/docs/23_adapter_slash_autocomplete/tickets.md +21 -0
  61. package/docs/24_subagent_job_policy_fixes/development_log.md +22 -0
  62. package/docs/24_subagent_job_policy_fixes/notes.md +28 -0
  63. package/docs/24_subagent_job_policy_fixes/prd.md +59 -0
  64. package/docs/24_subagent_job_policy_fixes/questions.md +3 -0
  65. package/docs/24_subagent_job_policy_fixes/tickets.md +49 -0
  66. package/docs/25_e2e_test_improvements/development_log.md +30 -0
  67. package/docs/25_e2e_test_improvements/notes.md +29 -0
  68. package/docs/25_e2e_test_improvements/prd.md +43 -0
  69. package/docs/25_e2e_test_improvements/questions.md +12 -0
  70. package/docs/25_e2e_test_improvements/tickets-2.md +22 -0
  71. package/docs/25_e2e_test_improvements/tickets.md +22 -0
  72. package/docs/25_policy_cwd/development_log.md +30 -0
  73. package/docs/25_policy_cwd/notes.md +28 -0
  74. package/docs/25_policy_cwd/prd.md +77 -0
  75. package/docs/25_policy_cwd/questions.md +6 -0
  76. package/docs/25_policy_cwd/tickets.md +77 -0
  77. package/docs/CLI_REFERENCE.md +3 -1
  78. package/docs/PHILOSOPHY.md +35 -0
  79. package/docs/adapter-visibility/SPEC.md +461 -0
  80. package/docs/adapter-visibility/SPEC_v2.md +202 -0
  81. package/docs/auto-update/SPEC.md +344 -0
  82. package/docs/backups/SPEC.md +296 -0
  83. package/docs/backups/clawmini.gitignore +69 -0
  84. package/docs/guides/assets/clawmini-avatar.png +0 -0
  85. package/docs/guides/backups.md +332 -0
  86. package/docs/guides/discord_adapter_setup.md +1 -1
  87. package/docs/guides/google_chat_adapter_setup.md +81 -0
  88. package/docs/unified-startup/SPEC.md +203 -0
  89. package/e2e/_helpers/test-environment.test.ts +49 -0
  90. package/e2e/_helpers/test-environment.ts +548 -0
  91. package/e2e/adapters/_google-chat-fixtures.ts +340 -0
  92. package/{src/cli/e2e → e2e/adapters}/adapter-discord.test.ts +22 -23
  93. package/e2e/adapters/adapter-google-chat-downtime.test.ts +157 -0
  94. package/e2e/adapters/adapter-google-chat-inbound.test.ts +697 -0
  95. package/e2e/adapters/adapter-google-chat-outbound.test.ts +297 -0
  96. package/e2e/adapters/adapter-google-chat-roundtrip.test.ts +56 -0
  97. package/e2e/adapters/adapter-google-chat-threads.test.ts +1078 -0
  98. package/e2e/agents/custom-api-env.test.ts +80 -0
  99. package/e2e/agents/export-lite-func.test.ts +104 -0
  100. package/e2e/agents/fallbacks.test.ts +124 -0
  101. package/e2e/agents/interrupt.test.ts +50 -0
  102. package/e2e/agents/no-reply-necessary.test.ts +57 -0
  103. package/e2e/agents/session-timeout-subagents.test.ts +76 -0
  104. package/e2e/agents/subagent-authorization.test.ts +246 -0
  105. package/e2e/agents/subagent-env.test.ts +49 -0
  106. package/e2e/agents/subagent-lifecycle.test.ts +782 -0
  107. package/e2e/agents/subagents-depth.test.ts +47 -0
  108. package/e2e/cli/agents.test.ts +176 -0
  109. package/e2e/cli/auto-update.test.ts +741 -0
  110. package/e2e/cli/basic.test.ts +44 -0
  111. package/{src/cli/e2e → e2e/cli}/export-lite.test.ts +16 -12
  112. package/e2e/cli/init-gitignore.test.ts +86 -0
  113. package/e2e/cli/init.test.ts +76 -0
  114. package/e2e/cli/messages.test.ts +363 -0
  115. package/e2e/cli/serve.test.ts +76 -0
  116. package/{src/cli/e2e → e2e/cli}/skills.test.ts +11 -10
  117. package/{src/cli/e2e → e2e/daemon}/daemon.test.ts +57 -195
  118. package/e2e/jobs/agent-jobs.test.ts +216 -0
  119. package/e2e/jobs/cron.test.ts +64 -0
  120. package/e2e/jobs/restart.test.ts +108 -0
  121. package/e2e/policies/approval-session.test.ts +69 -0
  122. package/e2e/policies/auto-create-policies-file.test.ts +35 -0
  123. package/e2e/policies/builtin-manage-policies.test.ts +184 -0
  124. package/e2e/policies/builtin-run-host.test.ts +180 -0
  125. package/e2e/policies/environment-policies.test.ts +177 -0
  126. package/e2e/policies/manage-policies.test.ts +566 -0
  127. package/e2e/policies/output-size.test.ts +98 -0
  128. package/e2e/policies/policies-context-cwd.test.ts +160 -0
  129. package/e2e/policies/relative-script-path.test.ts +60 -0
  130. package/e2e/policies/requests-show.test.ts +135 -0
  131. package/e2e/policies/requests.test.ts +208 -0
  132. package/e2e/policies/slash-policies.test.ts +308 -0
  133. package/e2e/policies/startup-cleanup.test.ts +48 -0
  134. package/e2e/routers/session-timeout.test.ts +106 -0
  135. package/e2e/routers/slash-model.test.ts +152 -0
  136. package/e2e/routers/slash-new.test.ts +50 -0
  137. package/e2e/routers/slash-restart-adapter.test.ts +96 -0
  138. package/e2e/routers/slash-restart.test.ts +114 -0
  139. package/e2e/routers/slash-shutdown.test.ts +55 -0
  140. package/e2e/routers/slash-stop.test.ts +232 -0
  141. package/e2e/routers/slash-upgrade.test.ts +88 -0
  142. package/{src/cli/e2e → e2e/sandbox}/environments.test.ts +14 -13
  143. package/eslint.config.js +6 -0
  144. package/napkin.md +1 -1
  145. package/package.json +8 -3
  146. package/src/adapter-discord/commands.test.ts +42 -0
  147. package/src/adapter-discord/commands.ts +33 -0
  148. package/src/adapter-discord/config.ts +12 -0
  149. package/src/adapter-discord/forwarder.test.ts +499 -21
  150. package/src/adapter-discord/forwarder.ts +343 -124
  151. package/src/adapter-discord/inbound-cache.test.ts +47 -0
  152. package/src/adapter-discord/inbound-cache.ts +37 -0
  153. package/src/adapter-discord/index.test.ts +67 -2
  154. package/src/adapter-discord/index.ts +84 -216
  155. package/src/adapter-discord/interactions.test.ts +54 -3
  156. package/src/adapter-discord/interactions.ts +97 -53
  157. package/src/adapter-discord/processMessage.ts +239 -0
  158. package/src/adapter-discord/state.ts +1 -0
  159. package/src/adapter-google-chat/auth.test.ts +9 -5
  160. package/src/adapter-google-chat/auth.ts +29 -23
  161. package/src/adapter-google-chat/cards.ts +7 -2
  162. package/src/adapter-google-chat/client.test.ts +37 -2
  163. package/src/adapter-google-chat/client.ts +138 -38
  164. package/src/adapter-google-chat/config.ts +19 -0
  165. package/src/adapter-google-chat/forwarder.test.ts +81 -56
  166. package/src/adapter-google-chat/forwarder.ts +394 -185
  167. package/src/adapter-google-chat/inbound-cache.test.ts +61 -0
  168. package/src/adapter-google-chat/inbound-cache.ts +36 -0
  169. package/src/adapter-google-chat/state.test.ts +1 -0
  170. package/src/adapter-google-chat/state.ts +9 -1
  171. package/src/adapter-google-chat/subscriptions.ts +8 -6
  172. package/src/cli/builtin-policies.ts +44 -0
  173. package/src/cli/commands/agents.ts +59 -5
  174. package/src/cli/commands/down.ts +54 -2
  175. package/src/cli/commands/environments.ts +8 -2
  176. package/src/cli/commands/init.ts +31 -0
  177. package/src/cli/commands/logs.ts +116 -0
  178. package/src/cli/commands/policies.ts +6 -4
  179. package/src/cli/commands/serve.test.ts +67 -0
  180. package/src/cli/commands/serve.ts +284 -0
  181. package/src/cli/commands/up.ts +122 -2
  182. package/src/cli/commands/web-api/agents.ts +3 -2
  183. package/src/cli/index.ts +4 -0
  184. package/src/cli/install-detection.test.ts +72 -0
  185. package/src/cli/install-detection.ts +48 -0
  186. package/src/cli/lite.ts +54 -22
  187. package/src/cli/manage-policies-utils.ts +104 -0
  188. package/src/cli/manage-policies.ts +291 -0
  189. package/src/cli/run-host.ts +45 -0
  190. package/src/cli/supervisor-actions.ts +267 -0
  191. package/src/cli/supervisor-control.test.ts +129 -0
  192. package/src/cli/supervisor-control.ts +155 -0
  193. package/src/cli/supervisor-pid.ts +68 -0
  194. package/src/cli/supervisor.ts +277 -0
  195. package/src/daemon/agent/agent-context.ts +11 -11
  196. package/src/daemon/agent/agent-session.ts +8 -1
  197. package/src/daemon/agent/chat-logger.test.ts +78 -9
  198. package/src/daemon/agent/chat-logger.ts +25 -5
  199. package/src/daemon/agent/turn-registry.test.ts +89 -0
  200. package/src/daemon/agent/turn-registry.ts +94 -0
  201. package/src/daemon/agent/types.ts +2 -0
  202. package/src/daemon/api/agent-policy-endpoints.ts +263 -0
  203. package/src/daemon/api/agent-router.ts +47 -126
  204. package/src/daemon/api/index.test.ts +1 -0
  205. package/src/daemon/api/policy-request.test.ts +7 -5
  206. package/src/daemon/api/router-utils.ts +6 -5
  207. package/src/daemon/api/subagent-router.ts +110 -74
  208. package/src/daemon/api/subagent-utils.test.ts +60 -0
  209. package/src/daemon/api/subagent-utils.ts +113 -87
  210. package/src/daemon/api/user-router.ts +34 -8
  211. package/src/daemon/auth.ts +1 -0
  212. package/src/daemon/cron.test.ts +62 -4
  213. package/src/daemon/cron.ts +42 -16
  214. package/src/daemon/events.ts +65 -0
  215. package/src/daemon/index.ts +24 -1
  216. package/src/daemon/message-interruption.test.ts +1 -0
  217. package/src/daemon/message-jobs.test.ts +1 -0
  218. package/src/daemon/message.ts +78 -14
  219. package/src/daemon/observation.test.ts +26 -18
  220. package/src/daemon/pending-replies.test.ts +112 -0
  221. package/src/daemon/pending-replies.ts +162 -0
  222. package/src/daemon/policy-request-service.ts +3 -1
  223. package/src/daemon/policy-utils.test.ts +66 -1
  224. package/src/daemon/policy-utils.ts +126 -1
  225. package/src/daemon/request-store.ts +31 -0
  226. package/src/daemon/routers/session-timeout.ts +4 -0
  227. package/src/daemon/routers/slash-model.test.ts +344 -0
  228. package/src/daemon/routers/slash-model.ts +207 -0
  229. package/src/daemon/routers/slash-policies.test.ts +38 -32
  230. package/src/daemon/routers/slash-policies.ts +84 -33
  231. package/src/daemon/routers/slash-restart.test.ts +69 -0
  232. package/src/daemon/routers/slash-restart.ts +36 -0
  233. package/src/daemon/routers/slash-shutdown.test.ts +50 -0
  234. package/src/daemon/routers/slash-shutdown.ts +28 -0
  235. package/src/daemon/routers/slash-upgrade.test.ts +116 -0
  236. package/src/daemon/routers/slash-upgrade.ts +76 -0
  237. package/src/daemon/routers/types.ts +7 -0
  238. package/src/daemon/routers.ts +16 -0
  239. package/src/shared/adapters/blockquote.test.ts +28 -0
  240. package/src/shared/adapters/blockquote.ts +20 -0
  241. package/src/shared/adapters/filtering.test.ts +224 -10
  242. package/src/shared/adapters/filtering.ts +95 -7
  243. package/src/shared/adapters/inbound-cache.test.ts +48 -0
  244. package/src/shared/adapters/inbound-cache.ts +54 -0
  245. package/src/shared/adapters/turn-log-buffer.ts +266 -0
  246. package/src/shared/adapters/turn-log.test.ts +389 -0
  247. package/src/shared/adapters/turn-log.ts +357 -0
  248. package/src/shared/agent-utils.ts +12 -5
  249. package/src/shared/chats.test.ts +4 -0
  250. package/src/shared/chats.ts +9 -0
  251. package/src/shared/config.ts +16 -1
  252. package/src/shared/lite.ts +76 -2
  253. package/src/shared/policies.ts +26 -0
  254. package/src/shared/template-manifest.ts +267 -0
  255. package/src/shared/utils/shell.ts +61 -0
  256. package/src/shared/version.ts +34 -0
  257. package/src/shared/workspace.test.ts +217 -0
  258. package/src/shared/workspace.ts +626 -48
  259. package/templates/environments/cladding/allowlist-domain.mjs +125 -0
  260. package/templates/environments/cladding/env.json +21 -1
  261. package/templates/environments/cladding/run-with-network.mjs +54 -0
  262. package/templates/environments/macos-proxy/allowlist-domain.mjs +95 -0
  263. package/templates/environments/macos-proxy/env.json +8 -1
  264. package/templates/environments/macos-proxy/proxy.mjs +42 -13
  265. package/templates/gemini/template.json +5 -0
  266. package/templates/gemini-claw/template.json +13 -0
  267. package/templates/skills/clawmini-requests/SKILL.md +69 -10
  268. package/templates/skills/run-host/SKILL.md +51 -0
  269. package/templates/skills/skill-creator/SKILL.md +4 -3
  270. package/templates/skills/skill-creator/scripts/validate.sh +52 -0
  271. package/tsdown.config.ts +10 -1
  272. package/vitest.config.ts +2 -2
  273. package/web/.svelte-kit/ambient.d.ts +292 -176
  274. package/web/.svelte-kit/generated/server/internal.js +1 -1
  275. package/web/.svelte-kit/output/client/.vite/manifest.json +127 -137
  276. package/web/.svelte-kit/output/client/_app/immutable/chunks/{Drm9vgeP.js → 3AZlWB6U.js} +1 -1
  277. package/web/.svelte-kit/output/client/_app/immutable/chunks/BhRSsUCh.js +2 -0
  278. package/web/.svelte-kit/output/client/_app/immutable/chunks/BiLeM2i1.js +1 -0
  279. package/{dist/web/_app/immutable/chunks/CME08kGM.js → web/.svelte-kit/output/client/_app/immutable/chunks/BmBj85Ll.js} +1 -1
  280. package/web/.svelte-kit/output/client/_app/immutable/chunks/BrERcKAH.js +1 -0
  281. package/web/.svelte-kit/output/client/_app/immutable/chunks/Bv9252RM.js +1 -0
  282. package/web/.svelte-kit/output/client/_app/immutable/chunks/CIXNBPKi.js +1 -0
  283. package/web/.svelte-kit/output/client/_app/immutable/chunks/DISKL3GN.js +2 -0
  284. package/web/.svelte-kit/output/client/_app/immutable/chunks/{Zeh-C-mx.js → DcpaLzmX.js} +1 -1
  285. package/web/.svelte-kit/output/client/_app/immutable/chunks/DnQ3vS13.js +1 -0
  286. package/web/.svelte-kit/output/client/_app/immutable/chunks/KsloHTKS.js +1 -0
  287. package/{dist/web/_app/immutable/chunks/Ck-be5J2.js → web/.svelte-kit/output/client/_app/immutable/chunks/RsHsUj-8.js} +2 -2
  288. package/web/.svelte-kit/output/client/_app/immutable/chunks/{G_zz-Gou.js → wpfV79dV.js} +1 -1
  289. package/web/.svelte-kit/output/client/_app/immutable/entry/app.CIw1Qj0n.js +2 -0
  290. package/web/.svelte-kit/output/client/_app/immutable/entry/start.Di0-Jhte.js +1 -0
  291. package/web/.svelte-kit/output/client/_app/immutable/nodes/{0.CYS8iApT.js → 0.DYyUA1au.js} +1 -1
  292. package/web/.svelte-kit/output/client/_app/immutable/nodes/1.D-3QEMMZ.js +1 -0
  293. package/web/.svelte-kit/output/client/_app/immutable/nodes/{2.BnwnD1Ki.js → 2.4olHnH7U.js} +1 -1
  294. package/{dist/web/_app/immutable/nodes/3.Dr0ot9sV.js → web/.svelte-kit/output/client/_app/immutable/nodes/3.4w0bE-m2.js} +3 -3
  295. package/web/.svelte-kit/output/client/_app/immutable/nodes/4.CZvjhVHt.js +60 -0
  296. package/web/.svelte-kit/output/client/_app/immutable/nodes/{5.BBGQ_i84.js → 5.DLbPVJY2.js} +1 -1
  297. package/web/.svelte-kit/output/client/_app/version.json +1 -1
  298. package/web/.svelte-kit/output/server/.vite/manifest.json +12 -10
  299. package/web/.svelte-kit/output/server/chunks/Icon.js +1 -1
  300. package/web/.svelte-kit/output/server/chunks/client.js +1 -1
  301. package/web/.svelte-kit/output/server/chunks/exports.js +1 -1
  302. package/web/.svelte-kit/output/server/chunks/index-server.js +2 -1
  303. package/web/.svelte-kit/output/server/chunks/internal.js +1 -1
  304. package/web/.svelte-kit/output/server/chunks/render-context.js +77 -0
  305. package/web/.svelte-kit/output/server/chunks/root.js +739 -788
  306. package/web/.svelte-kit/output/server/chunks/shared.js +234 -21
  307. package/web/.svelte-kit/output/server/index.js +126 -90
  308. package/web/.svelte-kit/output/server/manifest-full.js +1 -1
  309. package/web/.svelte-kit/output/server/manifest.js +1 -1
  310. package/web/.svelte-kit/output/server/nodes/0.js +1 -1
  311. package/web/.svelte-kit/output/server/nodes/1.js +1 -1
  312. package/web/.svelte-kit/output/server/nodes/2.js +1 -1
  313. package/web/.svelte-kit/output/server/nodes/3.js +1 -1
  314. package/web/.svelte-kit/output/server/nodes/4.js +1 -1
  315. package/web/.svelte-kit/output/server/nodes/5.js +1 -1
  316. package/web/.svelte-kit/output/server/remote-entry.js +245 -81
  317. package/web/.svelte-kit/tsconfig.json +4 -1
  318. package/dist/cli/propose-policy.mjs.map +0 -1
  319. package/dist/lite-CBxOT1y5.mjs +0 -241
  320. package/dist/lite-CBxOT1y5.mjs.map +0 -1
  321. package/dist/routing-D8rTxtaV.mjs +0 -245
  322. package/dist/routing-D8rTxtaV.mjs.map +0 -1
  323. package/dist/web/_app/immutable/chunks/B6YN0Nuq.js +0 -1
  324. package/dist/web/_app/immutable/chunks/BmRlVmv6.js +0 -1
  325. package/dist/web/_app/immutable/chunks/CK9JZLaG.js +0 -2
  326. package/dist/web/_app/immutable/chunks/Ck3rYNON.js +0 -1
  327. package/dist/web/_app/immutable/chunks/DMtIqaiV.js +0 -2
  328. package/dist/web/_app/immutable/chunks/DhD271EB.js +0 -1
  329. package/dist/web/_app/immutable/chunks/DpuLqk8d.js +0 -1
  330. package/dist/web/_app/immutable/chunks/DsIToJCP.js +0 -1
  331. package/dist/web/_app/immutable/chunks/bBmtyQMj.js +0 -1
  332. package/dist/web/_app/immutable/entry/app.CJmSwntr.js +0 -2
  333. package/dist/web/_app/immutable/entry/start.ZpUrT2ak.js +0 -1
  334. package/dist/web/_app/immutable/nodes/1.Bli0Hqzn.js +0 -1
  335. package/dist/web/_app/immutable/nodes/4.oBhvQhcA.js +0 -60
  336. package/dist/workspace-BJmJBfKi.mjs +0 -456
  337. package/dist/workspace-BJmJBfKi.mjs.map +0 -1
  338. package/src/cli/e2e/agents.test.ts +0 -140
  339. package/src/cli/e2e/basic.test.ts +0 -43
  340. package/src/cli/e2e/cron.test.ts +0 -132
  341. package/src/cli/e2e/export-lite-func.test.ts +0 -206
  342. package/src/cli/e2e/fallbacks.test.ts +0 -175
  343. package/src/cli/e2e/init.test.ts +0 -77
  344. package/src/cli/e2e/messages.test.ts +0 -332
  345. package/src/cli/e2e/propose-policy.test.ts +0 -203
  346. package/src/cli/e2e/requests.test.ts +0 -180
  347. package/src/cli/e2e/session-timeout.test.ts +0 -192
  348. package/src/cli/e2e/slash-new.test.ts +0 -93
  349. package/src/cli/e2e/subagents.test.ts +0 -106
  350. package/src/cli/e2e/utils.ts +0 -66
  351. package/src/cli/propose-policy.ts +0 -91
  352. package/web/.svelte-kit/output/client/_app/immutable/chunks/B6YN0Nuq.js +0 -1
  353. package/web/.svelte-kit/output/client/_app/immutable/chunks/BmRlVmv6.js +0 -1
  354. package/web/.svelte-kit/output/client/_app/immutable/chunks/CK9JZLaG.js +0 -2
  355. package/web/.svelte-kit/output/client/_app/immutable/chunks/Ck3rYNON.js +0 -1
  356. package/web/.svelte-kit/output/client/_app/immutable/chunks/DMtIqaiV.js +0 -2
  357. package/web/.svelte-kit/output/client/_app/immutable/chunks/DhD271EB.js +0 -1
  358. package/web/.svelte-kit/output/client/_app/immutable/chunks/DpuLqk8d.js +0 -1
  359. package/web/.svelte-kit/output/client/_app/immutable/chunks/DsIToJCP.js +0 -1
  360. package/web/.svelte-kit/output/client/_app/immutable/chunks/bBmtyQMj.js +0 -1
  361. package/web/.svelte-kit/output/client/_app/immutable/entry/app.CJmSwntr.js +0 -2
  362. package/web/.svelte-kit/output/client/_app/immutable/entry/start.ZpUrT2ak.js +0 -1
  363. package/web/.svelte-kit/output/client/_app/immutable/nodes/1.Bli0Hqzn.js +0 -1
  364. package/web/.svelte-kit/output/client/_app/immutable/nodes/4.oBhvQhcA.js +0 -60
  365. package/web/.svelte-kit/output/server/chunks/false.js +0 -4
  366. /package/dist/cli/{propose-policy.d.mts → manage-policies.d.mts} +0 -0
  367. /package/{src/cli/e2e → e2e/_helpers}/global-setup.ts +0 -0
@@ -1,9 +1,9 @@
1
1
  import { get_request_store, with_request_store } from "@sveltejs/kit/internal/server";
2
2
  import { parse } from "devalue";
3
3
  import { error, json } from "@sveltejs/kit";
4
- import { u as stringify_remote_arg, M as MUTATIVE_METHODS, v as create_field_proxy, w as normalize_issue, x as set_nested_value, y as flatten_issues, z as deep_set, k as stringify, f as create_remote_key, h as handle_error_and_jsonify } from "./chunks/shared.js";
4
+ import { x as stringify_remote_arg, j as create_remote_key, y as unfriendly_hydratable, e as noop, l as stringify, M as MUTATIVE_METHODS, z as create_field_proxy, A as normalize_issue, B as set_nested_value, C as flatten_issues, D as deep_set, h as handle_error_and_jsonify, p as parse_remote_arg } from "./chunks/shared.js";
5
5
  import { ValidationError, HttpError, SvelteKitError } from "@sveltejs/kit/internal";
6
- import { B as BROWSER } from "./chunks/false.js";
6
+ import { B as BROWSER } from "./chunks/render-context.js";
7
7
  import { b as base, c as app_dir, p as prerendering } from "./chunks/environment.js";
8
8
  function create_validator(validate_or_fn, maybe_fn) {
9
9
  if (!maybe_fn) {
@@ -36,10 +36,22 @@ function create_validator(validate_or_fn, maybe_fn) {
36
36
  'Invalid validator passed to remote function. Expected "unchecked" or a Standard Schema (https://standardschema.dev)'
37
37
  );
38
38
  }
39
- async function get_response(info, arg, state, get_result) {
39
+ async function get_response(internals, arg, state, get_result) {
40
40
  await 0;
41
- const cache = get_cache(info, state);
42
- return cache[stringify_remote_arg(arg, state.transport)] ??= get_result();
41
+ const cache = get_cache(internals, state);
42
+ const key = stringify_remote_arg(arg, state.transport);
43
+ const entry = cache[key] ??= {
44
+ serialize: false,
45
+ data: get_result()
46
+ };
47
+ entry.serialize ||= !!state.is_in_universal_load;
48
+ if (state.is_in_render && internals.id) {
49
+ const remote_key = create_remote_key(internals.id, key);
50
+ Promise.resolve(entry.data).then((value) => {
51
+ void unfriendly_hydratable(remote_key, () => stringify(value, state.transport));
52
+ }).catch(noop);
53
+ }
54
+ return entry.data;
43
55
  }
44
56
  function parse_remote_response(data, transport) {
45
57
  const revivers = {};
@@ -85,11 +97,11 @@ async function run_remote_function(event, state, allow_cookies, get_input, fn) {
85
97
  const input = await with_request_store(store, get_input);
86
98
  return with_request_store(store, () => fn(input));
87
99
  }
88
- function get_cache(info, state = get_request_store().state) {
89
- let cache = state.remote_data?.get(info);
100
+ function get_cache(internals, state = get_request_store().state) {
101
+ let cache = state.remote.data?.get(internals);
90
102
  if (cache === void 0) {
91
103
  cache = {};
92
- (state.remote_data ??= /* @__PURE__ */ new Map()).set(info, cache);
104
+ (state.remote.data ??= /* @__PURE__ */ new Map()).set(internals, cache);
93
105
  }
94
106
  return cache;
95
107
  }
@@ -100,13 +112,17 @@ function command(validate_or_fn, maybe_fn) {
100
112
  const __ = { type: "command", id: "", name: "" };
101
113
  const wrapper = (arg) => {
102
114
  const { event, state } = get_request_store();
103
- if (!state.allows_commands) {
104
- const disallowed_method = !MUTATIVE_METHODS.includes(event.request.method);
115
+ if (!MUTATIVE_METHODS.includes(event.request.method)) {
116
+ throw new Error(
117
+ `Cannot call a command (\`${__.name}(${maybe_fn ? "..." : ""})\`) from a ${event.request.method} handler`
118
+ );
119
+ }
120
+ if (state.is_in_render) {
105
121
  throw new Error(
106
- `Cannot call a command (\`${__.name}(${maybe_fn ? "..." : ""})\`) ${disallowed_method ? `from a ${event.request.method} handler or ` : ""}during server-side rendering`
122
+ `Cannot call a command (\`${__.name}(${maybe_fn ? "..." : ""})\`) during server-side rendering`
107
123
  );
108
124
  }
109
- state.refreshes ??= {};
125
+ state.remote.refreshes ??= {};
110
126
  const promise = Promise.resolve(
111
127
  run_remote_function(event, state, true, () => validate(arg), fn)
112
128
  );
@@ -157,7 +173,7 @@ function form(validate_or_fn, maybe_fn) {
157
173
  if (validated !== void 0) {
158
174
  data = validated.value;
159
175
  }
160
- state.refreshes ??= {};
176
+ state.remote.refreshes ??= {};
161
177
  const issue = create_issues();
162
178
  try {
163
179
  output.result = await run_remote_function(
@@ -176,7 +192,7 @@ function form(validate_or_fn, maybe_fn) {
176
192
  }
177
193
  }
178
194
  if (!event.isRemoteRequest) {
179
- get_cache(__, state)[""] ??= output;
195
+ get_cache(__, state)[""] ??= { serialize: true, data: output };
180
196
  }
181
197
  return output;
182
198
  }
@@ -190,29 +206,29 @@ function form(validate_or_fn, maybe_fn) {
190
206
  get() {
191
207
  return create_field_proxy(
192
208
  {},
193
- () => get_cache(__)?.[""]?.input ?? {},
209
+ () => get_cache(__)?.[""]?.data?.input ?? {},
194
210
  (path, value) => {
195
211
  const cache = get_cache(__);
196
- const data = cache[""];
197
- if (data?.submission) {
212
+ const entry = cache[""];
213
+ if (entry?.data?.submission) {
198
214
  return;
199
215
  }
200
216
  if (path.length === 0) {
201
- (cache[""] ??= {}).input = value;
217
+ (cache[""] ??= { serialize: true, data: {} }).data.input = value;
202
218
  return;
203
219
  }
204
- const input = data?.input ?? {};
220
+ const input = entry?.data?.input ?? {};
205
221
  deep_set(input, path.map(String), value);
206
- (cache[""] ??= {}).input = input;
222
+ (cache[""] ??= { serialize: true, data: {} }).data.input = input;
207
223
  },
208
- () => flatten_issues(get_cache(__)?.[""]?.issues ?? [])
224
+ () => flatten_issues(get_cache(__)?.[""]?.data?.issues ?? [])
209
225
  );
210
226
  }
211
227
  });
212
228
  Object.defineProperty(instance, "result", {
213
229
  get() {
214
230
  try {
215
- return get_cache(__)?.[""]?.result;
231
+ return get_cache(__)?.[""]?.data?.result;
216
232
  } catch {
217
233
  return void 0;
218
234
  }
@@ -236,12 +252,12 @@ function form(validate_or_fn, maybe_fn) {
236
252
  value: (key2) => {
237
253
  const { state } = get_request_store();
238
254
  const cache_key = __.id + "|" + JSON.stringify(key2);
239
- let instance2 = (state.form_instances ??= /* @__PURE__ */ new Map()).get(cache_key);
255
+ let instance2 = (state.remote.forms ??= /* @__PURE__ */ new Map()).get(cache_key);
240
256
  if (!instance2) {
241
257
  instance2 = create_instance(key2);
242
258
  instance2.__.id = `${__.id}/${encodeURIComponent(JSON.stringify(key2))}`;
243
259
  instance2.__.name = __.name;
244
- state.form_instances.set(cache_key, instance2);
260
+ state.remote.forms.set(cache_key, instance2);
245
261
  }
246
262
  return instance2;
247
263
  }
@@ -341,8 +357,9 @@ function prerender(validate_or_fn, fn_or_options, maybe_options) {
341
357
  return await get_response(__, arg, state, async () => {
342
358
  const key = stringify_remote_arg(arg, state.transport);
343
359
  const cache = get_cache(__, state);
344
- const promise3 = cache[key] ??= fetch(new URL(url, event.url.origin).href).then(
345
- async (response) => {
360
+ const promise3 = (cache[key] ??= {
361
+ serialize: true,
362
+ data: fetch(new URL(url, event.url.origin).href).then(async (response) => {
346
363
  if (!response.ok) {
347
364
  throw new Error("Prerendered response not found");
348
365
  }
@@ -351,8 +368,8 @@ function prerender(validate_or_fn, fn_or_options, maybe_options) {
351
368
  error(prerendered.status, prerendered.error);
352
369
  }
353
370
  return prerendered.result;
354
- }
355
- );
371
+ })
372
+ }).data;
356
373
  return parse_remote_response(await promise3, state.transport);
357
374
  });
358
375
  } catch {
@@ -383,8 +400,7 @@ function prerender(validate_or_fn, fn_or_options, maybe_options) {
383
400
  }
384
401
  return result;
385
402
  })();
386
- promise.catch(() => {
387
- });
403
+ promise.catch(noop);
388
404
  return (
389
405
  /** @type {RemoteResource<Output>} */
390
406
  promise
@@ -397,7 +413,7 @@ function prerender(validate_or_fn, fn_or_options, maybe_options) {
397
413
  function query(validate_or_fn, maybe_fn) {
398
414
  const fn = maybe_fn ?? validate_or_fn;
399
415
  const validate = create_validator(validate_or_fn, maybe_fn);
400
- const __ = { type: "query", id: "", name: "" };
416
+ const __ = { type: "query", id: "", name: "", validate };
401
417
  const wrapper = (arg) => {
402
418
  if (prerendering) {
403
419
  throw new Error(
@@ -405,28 +421,30 @@ function query(validate_or_fn, maybe_fn) {
405
421
  );
406
422
  }
407
423
  const { event, state } = get_request_store();
408
- const get_remote_function_result = () => run_remote_function(event, state, false, () => validate(arg), fn);
409
- const promise = get_response(__, arg, state, get_remote_function_result);
410
- promise.catch(() => {
411
- });
412
- promise.set = (value) => update_refresh_value(get_refresh_context(__, "set", arg), value);
413
- promise.refresh = () => {
414
- const refresh_context = get_refresh_context(__, "refresh", arg);
415
- const is_immediate_refresh = !refresh_context.cache[refresh_context.cache_key];
416
- const value = is_immediate_refresh ? promise : get_remote_function_result();
417
- return update_refresh_value(refresh_context, value, is_immediate_refresh);
418
- };
419
- promise.withOverride = () => {
420
- throw new Error(`Cannot call '${__.name}.withOverride()' on the server`);
421
- };
422
- return (
423
- /** @type {RemoteQuery<Output>} */
424
- promise
424
+ const is_validated = is_validated_argument(__, state, arg);
425
+ return create_query_resource(
426
+ __,
427
+ arg,
428
+ state,
429
+ () => run_remote_function(event, state, false, () => is_validated ? arg : validate(arg), fn)
425
430
  );
426
431
  };
427
432
  Object.defineProperty(wrapper, "__", { value: __ });
428
433
  return wrapper;
429
434
  }
435
+ function is_validated_argument(__, state, arg) {
436
+ return state.remote.validated?.get(__.id)?.has(arg) ?? false;
437
+ }
438
+ function mark_argument_validated(__, state, arg) {
439
+ const validated = state.remote.validated ??= /* @__PURE__ */ new Map();
440
+ let validated_args = validated.get(__.id);
441
+ if (!validated_args) {
442
+ validated_args = /* @__PURE__ */ new Set();
443
+ validated.set(__.id, validated_args);
444
+ }
445
+ validated_args.add(arg);
446
+ return arg;
447
+ }
430
448
  // @__NO_SIDE_EFFECTS__
431
449
  function batch(validate_or_fn, maybe_fn) {
432
450
  const fn = maybe_fn ?? validate_or_fn;
@@ -447,7 +465,8 @@ function batch(validate_or_fn, maybe_fn) {
447
465
  return Promise.all(
448
466
  input.map(async (arg, i) => {
449
467
  try {
450
- return { type: "result", data: get_result(arg, i) };
468
+ const data = get_result(arg, i);
469
+ return { type: "result", data: stringify(data, state.transport) };
451
470
  } catch (error2) {
452
471
  return {
453
472
  type: "error",
@@ -461,7 +480,7 @@ function batch(validate_or_fn, maybe_fn) {
461
480
  );
462
481
  }
463
482
  };
464
- let batching = { args: [], resolvers: [] };
483
+ let batching = /* @__PURE__ */ new Map();
465
484
  const wrapper = (arg) => {
466
485
  if (prerendering) {
467
486
  throw new Error(
@@ -469,64 +488,112 @@ function batch(validate_or_fn, maybe_fn) {
469
488
  );
470
489
  }
471
490
  const { event, state } = get_request_store();
472
- const get_remote_function_result = () => {
491
+ return create_query_resource(__, arg, state, () => {
473
492
  return new Promise((resolve, reject) => {
474
- batching.args.push(arg);
475
- batching.resolvers.push({ resolve, reject });
476
- if (batching.args.length > 1) return;
493
+ const key = stringify_remote_arg(arg, state.transport);
494
+ const entry = batching.get(key);
495
+ if (entry) {
496
+ entry.resolvers.push({ resolve, reject });
497
+ return;
498
+ }
499
+ batching.set(key, {
500
+ arg,
501
+ resolvers: [{ resolve, reject }]
502
+ });
503
+ if (batching.size > 1) return;
477
504
  setTimeout(async () => {
478
505
  const batched = batching;
479
- batching = { args: [], resolvers: [] };
506
+ batching = /* @__PURE__ */ new Map();
507
+ const entries = Array.from(batched.values());
508
+ const args = entries.map((entry2) => entry2.arg);
480
509
  try {
481
510
  return await run_remote_function(
482
511
  event,
483
512
  state,
484
513
  false,
485
- async () => Promise.all(batched.args.map(validate)),
514
+ async () => Promise.all(args.map(validate)),
486
515
  async (input) => {
487
516
  const get_result = await fn(input);
488
- for (let i = 0; i < batched.resolvers.length; i++) {
517
+ for (let i = 0; i < entries.length; i++) {
489
518
  try {
490
- batched.resolvers[i].resolve(get_result(input[i], i));
519
+ const result = get_result(input[i], i);
520
+ for (const resolver of entries[i].resolvers) {
521
+ resolver.resolve(result);
522
+ }
491
523
  } catch (error2) {
492
- batched.resolvers[i].reject(error2);
524
+ for (const resolver of entries[i].resolvers) {
525
+ resolver.reject(error2);
526
+ }
493
527
  }
494
528
  }
495
529
  }
496
530
  );
497
531
  } catch (error2) {
498
- for (const resolver of batched.resolvers) {
499
- resolver.reject(error2);
532
+ for (const entry2 of batched.values()) {
533
+ for (const resolver of entry2.resolvers) {
534
+ resolver.reject(error2);
535
+ }
500
536
  }
501
537
  }
502
538
  }, 0);
503
539
  });
504
- };
505
- const promise = get_response(__, arg, state, get_remote_function_result);
506
- promise.catch(() => {
507
540
  });
508
- promise.set = (value) => update_refresh_value(get_refresh_context(__, "set", arg), value);
509
- promise.refresh = () => {
541
+ };
542
+ Object.defineProperty(wrapper, "__", { value: __ });
543
+ return wrapper;
544
+ }
545
+ function create_query_resource(__, arg, state, fn) {
546
+ let promise = null;
547
+ const get_promise = () => {
548
+ return promise ??= get_response(__, arg, state, fn);
549
+ };
550
+ return {
551
+ /** @type {Promise<any>['catch']} */
552
+ catch(onrejected) {
553
+ return get_promise().catch(onrejected);
554
+ },
555
+ current: void 0,
556
+ error: void 0,
557
+ /** @type {Promise<any>['finally']} */
558
+ finally(onfinally) {
559
+ return get_promise().finally(onfinally);
560
+ },
561
+ loading: true,
562
+ ready: false,
563
+ refresh() {
510
564
  const refresh_context = get_refresh_context(__, "refresh", arg);
511
565
  const is_immediate_refresh = !refresh_context.cache[refresh_context.cache_key];
512
- const value = is_immediate_refresh ? promise : get_remote_function_result();
566
+ const value = is_immediate_refresh ? get_promise() : fn();
513
567
  return update_refresh_value(refresh_context, value, is_immediate_refresh);
514
- };
515
- promise.withOverride = () => {
568
+ },
569
+ run() {
570
+ if (!state.is_in_universal_load) {
571
+ throw new Error(
572
+ "On the server, .run() can only be called in universal `load` functions. Anywhere else, just await the query directly"
573
+ );
574
+ }
575
+ return get_response(__, arg, state, fn);
576
+ },
577
+ /** @param {any} value */
578
+ set(value) {
579
+ return update_refresh_value(get_refresh_context(__, "set", arg), value);
580
+ },
581
+ /** @type {Promise<any>['then']} */
582
+ then(onfulfilled, onrejected) {
583
+ return get_promise().then(onfulfilled, onrejected);
584
+ },
585
+ withOverride() {
516
586
  throw new Error(`Cannot call '${__.name}.withOverride()' on the server`);
517
- };
518
- return (
519
- /** @type {RemoteQuery<Output>} */
520
- promise
521
- );
587
+ },
588
+ get [Symbol.toStringTag]() {
589
+ return "QueryResource";
590
+ }
522
591
  };
523
- Object.defineProperty(wrapper, "__", { value: __ });
524
- return wrapper;
525
592
  }
526
593
  Object.defineProperty(query, "batch", { value: batch, enumerable: true });
527
594
  function get_refresh_context(__, action, arg) {
528
595
  const { state } = get_request_store();
529
- const { refreshes } = state;
596
+ const { refreshes } = state.remote;
530
597
  if (!refreshes) {
531
598
  const name = __.type === "query_batch" ? `query.batch '${__.name}'` : `query '${__.name}'`;
532
599
  throw new Error(
@@ -541,17 +608,114 @@ function get_refresh_context(__, action, arg) {
541
608
  function update_refresh_value({ __, refreshes, refreshes_key, cache, cache_key }, value, is_immediate_refresh = false) {
542
609
  const promise = Promise.resolve(value);
543
610
  if (!is_immediate_refresh) {
544
- cache[cache_key] = promise;
611
+ cache[cache_key] = { serialize: true, data: promise };
545
612
  }
546
613
  if (__.id) {
547
614
  refreshes[refreshes_key] = promise;
548
615
  }
549
- return promise.then(() => {
550
- });
616
+ return promise.then(noop, noop);
617
+ }
618
+ function requested(query2, limit = Infinity) {
619
+ const { state } = get_request_store();
620
+ const internals = (
621
+ /** @type {RemoteQueryInternals | undefined} */
622
+ /** @type {any} */
623
+ query2.__
624
+ );
625
+ if (!internals || internals.type !== "query") {
626
+ throw new Error("requested(...) expects a query function created with query(...)");
627
+ }
628
+ const requested2 = state.remote.requested;
629
+ const payloads = requested2?.get(internals.id) ?? [];
630
+ const refreshes = state.remote.refreshes ??= {};
631
+ const [selected, skipped] = split_limit(payloads, limit);
632
+ const record_failure = (payload, error2) => {
633
+ const promise = Promise.reject(error2);
634
+ promise.catch(noop);
635
+ const key = create_remote_key(internals.id, payload);
636
+ refreshes[key] = promise;
637
+ };
638
+ for (const payload of skipped) {
639
+ record_failure(
640
+ payload,
641
+ new Error(
642
+ `Requested refresh was rejected because it exceeded requested(${internals.name}, ${limit}) limit`
643
+ )
644
+ );
645
+ }
646
+ return {
647
+ *[Symbol.iterator]() {
648
+ for (const payload of selected) {
649
+ try {
650
+ const parsed = parse_remote_arg(payload, state.transport);
651
+ const validated = internals.validate(parsed);
652
+ if (is_thenable(validated)) {
653
+ throw new Error(
654
+ // TODO improve
655
+ `requested(${internals.name}, ${limit}) cannot be used with synchronous iteration because the query validator is async. Use \`for await ... of\` instead`
656
+ );
657
+ }
658
+ yield mark_argument_validated(internals, state, validated);
659
+ } catch (error2) {
660
+ record_failure(payload, error2);
661
+ continue;
662
+ }
663
+ }
664
+ },
665
+ async *[Symbol.asyncIterator]() {
666
+ yield* race_all(selected, async (payload) => {
667
+ try {
668
+ const parsed = parse_remote_arg(payload, state.transport);
669
+ const validated = await internals.validate(parsed);
670
+ return mark_argument_validated(internals, state, validated);
671
+ } catch (error2) {
672
+ record_failure(payload, error2);
673
+ throw new Error(`Skipping ${internals.name}(${payload})`, { cause: error2 });
674
+ }
675
+ });
676
+ },
677
+ async refreshAll() {
678
+ for await (const arg of this) {
679
+ void query2(arg).refresh();
680
+ }
681
+ }
682
+ };
683
+ }
684
+ function split_limit(array, limit) {
685
+ if (limit === Infinity) {
686
+ return [array, []];
687
+ }
688
+ if (!Number.isInteger(limit) || limit < 0) {
689
+ throw new Error("Limit must be a non-negative integer or Infinity");
690
+ }
691
+ return [array.slice(0, limit), array.slice(limit)];
692
+ }
693
+ function is_thenable(value) {
694
+ return !!value && (typeof value === "object" || typeof value === "function") && "then" in value;
695
+ }
696
+ async function* race_all(array, fn) {
697
+ const pending = /* @__PURE__ */ new Set();
698
+ for (const value of array) {
699
+ const promise = Promise.resolve(fn(value)).then((result) => ({
700
+ promise,
701
+ value: result
702
+ }));
703
+ promise.catch(noop);
704
+ pending.add(promise);
705
+ }
706
+ while (pending.size > 0) {
707
+ try {
708
+ const { promise, value } = await Promise.race(pending);
709
+ pending.delete(promise);
710
+ yield value;
711
+ } catch {
712
+ }
713
+ }
551
714
  }
552
715
  export {
553
716
  command,
554
717
  form,
555
718
  prerender,
556
- query
719
+ query,
720
+ requested
557
721
  };
@@ -37,7 +37,10 @@
37
37
  "moduleResolution": "bundler",
38
38
  "module": "esnext",
39
39
  "noEmit": true,
40
- "target": "esnext"
40
+ "target": "esnext",
41
+ "types": [
42
+ "node"
43
+ ]
41
44
  },
42
45
  "include": [
43
46
  "ambient.d.ts",