@songsid/agend 2.3.2 → 2.3.3-beta.10

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 (393) hide show
  1. package/dist/agent-cli-instructions.md +2 -2
  2. package/dist/agent-cli.js +13 -112
  3. package/dist/agent-cli.js.map +1 -1
  4. package/dist/agent-endpoint.d.ts +0 -1
  5. package/dist/agent-endpoint.js +1 -9
  6. package/dist/agent-endpoint.js.map +1 -1
  7. package/dist/agent-whats-new.d.ts +23 -5
  8. package/dist/agent-whats-new.js +58 -40
  9. package/dist/agent-whats-new.js.map +1 -1
  10. package/dist/auth-api.d.ts +0 -7
  11. package/dist/auth-api.js +1 -15
  12. package/dist/auth-api.js.map +1 -1
  13. package/dist/authority/authority-state.js +1 -1
  14. package/dist/authority/authority-state.js.map +1 -1
  15. package/dist/authority/web-authority.d.ts +9 -4
  16. package/dist/authority/web-authority.js +10 -5
  17. package/dist/authority/web-authority.js.map +1 -1
  18. package/dist/backend/antigravity.js +6 -1
  19. package/dist/backend/antigravity.js.map +1 -1
  20. package/dist/backend/claude-code.d.ts +20 -1
  21. package/dist/backend/claude-code.js +54 -29
  22. package/dist/backend/claude-code.js.map +1 -1
  23. package/dist/backend/claude-transcript-errors.d.ts +18 -0
  24. package/dist/backend/claude-transcript-errors.js +19 -0
  25. package/dist/backend/claude-transcript-errors.js.map +1 -0
  26. package/dist/backend/codex-session-lookup.d.ts +16 -3
  27. package/dist/backend/codex-session-lookup.js +45 -11
  28. package/dist/backend/codex-session-lookup.js.map +1 -1
  29. package/dist/backend/codex.d.ts +16 -0
  30. package/dist/backend/codex.js +184 -35
  31. package/dist/backend/codex.js.map +1 -1
  32. package/dist/backend/grok.js +58 -12
  33. package/dist/backend/grok.js.map +1 -1
  34. package/dist/backend/kiro-reconcile-store.js +8 -1
  35. package/dist/backend/kiro-reconcile-store.js.map +1 -1
  36. package/dist/backend/kiro.d.ts +0 -5
  37. package/dist/backend/kiro.js +2 -10
  38. package/dist/backend/kiro.js.map +1 -1
  39. package/dist/backend/muse.js +2 -1
  40. package/dist/backend/muse.js.map +1 -1
  41. package/dist/backend/types.d.ts +53 -4
  42. package/dist/backend/types.js.map +1 -1
  43. package/dist/bundled-skills.d.ts +4 -6
  44. package/dist/bundled-skills.js +10 -14
  45. package/dist/bundled-skills.js.map +1 -1
  46. package/dist/channel/adapters/discord.js +60 -17
  47. package/dist/channel/adapters/discord.js.map +1 -1
  48. package/dist/channel/mcp-server.js +5 -5
  49. package/dist/channel/mcp-server.js.map +1 -1
  50. package/dist/channel/mcp-tools.d.ts +1 -3
  51. package/dist/channel/mcp-tools.js +4 -58
  52. package/dist/channel/mcp-tools.js.map +1 -1
  53. package/dist/classic-channel-manager.d.ts +4 -1
  54. package/dist/classic-channel-manager.js +21 -7
  55. package/dist/classic-channel-manager.js.map +1 -1
  56. package/dist/cli.js +23 -6
  57. package/dist/cli.js.map +1 -1
  58. package/dist/config-history.d.ts +50 -0
  59. package/dist/config-history.js +263 -0
  60. package/dist/config-history.js.map +1 -0
  61. package/dist/config-validator.js +10 -8
  62. package/dist/config-validator.js.map +1 -1
  63. package/dist/config.d.ts +3 -0
  64. package/dist/config.js +11 -4
  65. package/dist/config.js.map +1 -1
  66. package/dist/cross-instance-envelope.d.ts +10 -5
  67. package/dist/cross-instance-envelope.js +20 -17
  68. package/dist/cross-instance-envelope.js.map +1 -1
  69. package/dist/daemon.d.ts +130 -64
  70. package/dist/daemon.js +603 -428
  71. package/dist/daemon.js.map +1 -1
  72. package/dist/daily-summary.d.ts +8 -1
  73. package/dist/daily-summary.js +8 -5
  74. package/dist/daily-summary.js.map +1 -1
  75. package/dist/dashboard-live.d.ts +1 -1
  76. package/dist/dashboard-live.js +3 -3
  77. package/dist/dashboard-live.js.map +1 -1
  78. package/dist/dashboard-permissions.d.ts +1 -1
  79. package/dist/dashboard-permissions.js +1 -3
  80. package/dist/dashboard-permissions.js.map +1 -1
  81. package/dist/delivery-outbox.d.ts +31 -22
  82. package/dist/delivery-outbox.js +119 -161
  83. package/dist/delivery-outbox.js.map +1 -1
  84. package/dist/delivery-outbox.test.js +10 -25
  85. package/dist/delivery-outbox.test.js.map +1 -1
  86. package/dist/doctor.d.ts +4 -0
  87. package/dist/doctor.js +16 -1
  88. package/dist/doctor.js.map +1 -1
  89. package/dist/fleet-level-config.js +1 -1
  90. package/dist/fleet-level-config.js.map +1 -1
  91. package/dist/fleet-manager.d.ts +74 -66
  92. package/dist/fleet-manager.js +285 -414
  93. package/dist/fleet-manager.js.map +1 -1
  94. package/dist/fleet-process-handlers.d.ts +5 -0
  95. package/dist/fleet-process-handlers.js +21 -0
  96. package/dist/fleet-process-handlers.js.map +1 -1
  97. package/dist/fleet-service-owner.d.ts +11 -0
  98. package/dist/fleet-service-owner.js +3 -0
  99. package/dist/fleet-service-owner.js.map +1 -0
  100. package/dist/general-knowledge/skills/credential-profiles/SKILL.md +11 -1
  101. package/dist/general-knowledge/skills/delegation-playbook/SKILL.md +1 -1
  102. package/dist/general-knowledge/skills/fleet-restart/SKILL.md +1 -1
  103. package/dist/general-knowledge/skills/session-management/SKILL.md +7 -1
  104. package/dist/general-knowledge/skills/web-appearance/SKILL.md +13 -204
  105. package/dist/general-knowledge/skills/web-dashboard/SKILL.md +30 -68
  106. package/dist/instance-lifecycle.d.ts +19 -0
  107. package/dist/instance-lifecycle.js +73 -15
  108. package/dist/instance-lifecycle.js.map +1 -1
  109. package/dist/instructions.js +6 -7
  110. package/dist/instructions.js.map +1 -1
  111. package/dist/kiro-reconcile.js +3 -3
  112. package/dist/kiro-reconcile.js.map +1 -1
  113. package/dist/locale.js +96 -58
  114. package/dist/locale.js.map +1 -1
  115. package/dist/log-service.js +1 -1
  116. package/dist/log-service.js.map +1 -1
  117. package/dist/needs-you-hub.d.ts +1 -0
  118. package/dist/needs-you-hub.js +6 -3
  119. package/dist/needs-you-hub.js.map +1 -1
  120. package/dist/needs-you-live.d.ts +3 -1
  121. package/dist/needs-you-live.js +24 -2
  122. package/dist/needs-you-live.js.map +1 -1
  123. package/dist/needs-you.d.ts +13 -2
  124. package/dist/needs-you.js +11 -1
  125. package/dist/needs-you.js.map +1 -1
  126. package/dist/notify-socket.d.ts +10 -0
  127. package/dist/notify-socket.js +45 -0
  128. package/dist/notify-socket.js.map +1 -0
  129. package/dist/outbound-handlers.js +20 -8
  130. package/dist/outbound-handlers.js.map +1 -1
  131. package/dist/outbound-schemas.d.ts +0 -62
  132. package/dist/outbound-schemas.js +4 -43
  133. package/dist/outbound-schemas.js.map +1 -1
  134. package/dist/parked-notices.d.ts +87 -0
  135. package/dist/parked-notices.js +194 -0
  136. package/dist/parked-notices.js.map +1 -0
  137. package/dist/public-link-progress.d.ts +5 -2
  138. package/dist/public-link-progress.js +4 -3
  139. package/dist/public-link-progress.js.map +1 -1
  140. package/dist/public-web-gateway.js +0 -9
  141. package/dist/public-web-gateway.js.map +1 -1
  142. package/dist/public-web-link.d.ts +12 -0
  143. package/dist/public-web-link.js +29 -5
  144. package/dist/public-web-link.js.map +1 -1
  145. package/dist/quota-notice.d.ts +23 -0
  146. package/dist/quota-notice.js +22 -0
  147. package/dist/quota-notice.js.map +1 -0
  148. package/dist/scheduler/task-board.d.ts +17 -25
  149. package/dist/scheduler/task-board.js +29 -39
  150. package/dist/scheduler/task-board.js.map +1 -1
  151. package/dist/sd-notify.d.ts +23 -15
  152. package/dist/sd-notify.js +88 -29
  153. package/dist/sd-notify.js.map +1 -1
  154. package/dist/search/search-docs.d.ts +1 -1
  155. package/dist/search/search-docs.js +2 -2
  156. package/dist/search/search-docs.js.map +1 -1
  157. package/dist/settings-api.d.ts +16 -1
  158. package/dist/settings-api.js +56 -16
  159. package/dist/settings-api.js.map +1 -1
  160. package/dist/settings-change.js +3 -1
  161. package/dist/settings-change.js.map +1 -1
  162. package/dist/settings-confirmation.d.ts +17 -3
  163. package/dist/settings-confirmation.js +8 -5
  164. package/dist/settings-confirmation.js.map +1 -1
  165. package/dist/settings-effect.js +0 -2
  166. package/dist/settings-effect.js.map +1 -1
  167. package/dist/settings-http-confirmation.js +31 -1
  168. package/dist/settings-http-confirmation.js.map +1 -1
  169. package/dist/setup-wizard.d.ts +3 -0
  170. package/dist/setup-wizard.js +4 -2
  171. package/dist/setup-wizard.js.map +1 -1
  172. package/dist/task-board-waker.d.ts +43 -1
  173. package/dist/task-board-waker.js +121 -9
  174. package/dist/task-board-waker.js.map +1 -1
  175. package/dist/tmux-control.d.ts +1 -1
  176. package/dist/tmux-control.js +3 -2
  177. package/dist/tmux-control.js.map +1 -1
  178. package/dist/tmux-manager.js +18 -16
  179. package/dist/tmux-manager.js.map +1 -1
  180. package/dist/tmux-read.d.ts +2 -0
  181. package/dist/tmux-read.js +7 -1
  182. package/dist/tmux-read.js.map +1 -1
  183. package/dist/tool-permissions.js +3 -10
  184. package/dist/tool-permissions.js.map +1 -1
  185. package/dist/topic-commands.d.ts +29 -7
  186. package/dist/topic-commands.js +97 -37
  187. package/dist/topic-commands.js.map +1 -1
  188. package/dist/transcript-monitor.d.ts +7 -0
  189. package/dist/transcript-monitor.js +48 -3
  190. package/dist/transcript-monitor.js.map +1 -1
  191. package/dist/tunnel/cloudflared.d.ts +5 -0
  192. package/dist/tunnel/cloudflared.js +32 -1
  193. package/dist/tunnel/cloudflared.js.map +1 -1
  194. package/dist/tunnel/named-diagnostics.d.ts +2 -1
  195. package/dist/tunnel/named-diagnostics.js +4 -1
  196. package/dist/tunnel/named-diagnostics.js.map +1 -1
  197. package/dist/tunnel/named-link-test.d.ts +90 -0
  198. package/dist/tunnel/named-link-test.js +270 -0
  199. package/dist/tunnel/named-link-test.js.map +1 -0
  200. package/dist/tunnel/purpose-lane.d.ts +3 -1
  201. package/dist/tunnel/purpose-lane.js +2 -0
  202. package/dist/tunnel/purpose-lane.js.map +1 -1
  203. package/dist/types.d.ts +9 -11
  204. package/dist/ui/chat-ambient.js +4 -4
  205. package/dist/ui/chat-commands.js +3 -2
  206. package/dist/ui/chat-store.js +4 -1
  207. package/dist/ui/chat-strings.js +12 -46
  208. package/dist/ui/chat-thread.js +51 -59
  209. package/dist/ui/fleet-office-skin.js +37 -14
  210. package/dist/ui/fleet-office.js +31 -7
  211. package/dist/ui/html-attachment.js +22 -8
  212. package/dist/ui/panel-chat.js +21 -50
  213. package/dist/ui/panel-log.js +2 -2
  214. package/dist/ui/panel-needs.js +11 -9
  215. package/dist/ui/panel-settings.js +5 -3
  216. package/dist/ui/preview-panel.js +12 -21
  217. package/dist/ui/preview.js +10 -3
  218. package/dist/ui/search-dialog.js +30 -14
  219. package/dist/ui/settings-appearance.js +3 -37
  220. package/dist/ui/settings-confirm.js +18 -0
  221. package/dist/ui/settings-guests.js +13 -4
  222. package/dist/ui/settings-learn.js +1 -1
  223. package/dist/ui/settings-mods.js +5 -12
  224. package/dist/ui/settings-named-test.js +144 -0
  225. package/dist/ui/settings-registry.js +0 -2
  226. package/dist/ui/settings-strings.js +16 -16
  227. package/dist/ui/settings-web-authority.js +4 -3
  228. package/dist/ui/shared/app-i18n.js +15 -4
  229. package/dist/ui/shared/app-needs.js +5 -1
  230. package/dist/ui/shared/app-prefs.js +17 -17
  231. package/dist/ui/shared/app-shell.js +47 -9
  232. package/dist/ui/shared/app-store.js +6 -2
  233. package/dist/ui/shared/app.css +33 -39
  234. package/dist/ui/shared/app.js +5 -4
  235. package/dist/ui/shared/instance-nav.js +9 -9
  236. package/dist/ui/shared/instance-switch.js +8 -2
  237. package/dist/ui/shared/panel-view.js +22 -8
  238. package/dist/ui/shared/view-strings.js +6 -0
  239. package/dist/ui/shared/web-authorize.js +35 -13
  240. package/dist/update-check.d.ts +13 -4
  241. package/dist/update-check.js +17 -4
  242. package/dist/update-check.js.map +1 -1
  243. package/dist/usage/usage-api.d.ts +3 -0
  244. package/dist/usage/usage-api.js +5 -1
  245. package/dist/usage/usage-api.js.map +1 -1
  246. package/dist/view-api.d.ts +2 -0
  247. package/dist/view-api.js +64 -0
  248. package/dist/view-api.js.map +1 -1
  249. package/dist/web-api.d.ts +9 -17
  250. package/dist/web-api.js +257 -371
  251. package/dist/web-api.js.map +1 -1
  252. package/dist/web-appearance-tools.d.ts +0 -2
  253. package/dist/web-appearance-tools.js +2 -5
  254. package/dist/web-appearance-tools.js.map +1 -1
  255. package/dist/web-appearance-view.d.ts +0 -6
  256. package/dist/web-appearance-view.js +0 -1
  257. package/dist/web-appearance-view.js.map +1 -1
  258. package/dist/web-appearance.d.ts +14 -7
  259. package/dist/web-appearance.js +5 -6
  260. package/dist/web-appearance.js.map +1 -1
  261. package/dist/web-asset-parts.d.ts +1 -17
  262. package/dist/web-asset-parts.js +1 -15
  263. package/dist/web-asset-parts.js.map +1 -1
  264. package/dist/web-auth.js +1 -7
  265. package/dist/web-auth.js.map +1 -1
  266. package/dist/web-chat-history.d.ts +3 -7
  267. package/dist/web-chat-history.js +10 -17
  268. package/dist/web-chat-history.js.map +1 -1
  269. package/dist/web-commands.d.ts +9 -1
  270. package/dist/web-commands.js +13 -0
  271. package/dist/web-commands.js.map +1 -1
  272. package/dist/web-experimental.d.ts +3 -8
  273. package/dist/web-experimental.js +9 -33
  274. package/dist/web-experimental.js.map +1 -1
  275. package/dist/web-guest-access.d.ts +40 -2
  276. package/dist/web-guest-access.js +50 -14
  277. package/dist/web-guest-access.js.map +1 -1
  278. package/dist/web-mod-bundle.d.ts +2 -45
  279. package/dist/web-mod-bundle.js +15 -63
  280. package/dist/web-mod-bundle.js.map +1 -1
  281. package/dist/web-mod-store.d.ts +3 -48
  282. package/dist/web-mod-store.js +30 -97
  283. package/dist/web-mod-store.js.map +1 -1
  284. package/dist/web-prefs.d.ts +13 -0
  285. package/dist/web-prefs.js +38 -0
  286. package/dist/web-prefs.js.map +1 -1
  287. package/dist/web-preview.d.ts +6 -13
  288. package/dist/web-preview.js +12 -23
  289. package/dist/web-preview.js.map +1 -1
  290. package/dist/web-session.d.ts +11 -3
  291. package/dist/web-session.js +22 -11
  292. package/dist/web-session.js.map +1 -1
  293. package/dist/web-settings-patch.d.ts +1 -1
  294. package/dist/web-settings-patch.js +9 -7
  295. package/dist/web-settings-patch.js.map +1 -1
  296. package/dist/web-settings-tools.d.ts +0 -13
  297. package/dist/web-settings-tools.js +12 -84
  298. package/dist/web-settings-tools.js.map +1 -1
  299. package/dist/workflow-templates/default.md +2 -2
  300. package/dist/working-recovery.d.ts +0 -2
  301. package/dist/working-recovery.js +2 -23
  302. package/dist/working-recovery.js.map +1 -1
  303. package/launcher/agend-install.cjs +7 -1
  304. package/launcher/fleet-service-owner.cjs +150 -0
  305. package/package.json +1 -1
  306. package/dist/general-knowledge/skills/web-appearance/SKILL.canvas-worker-off.md +0 -376
  307. package/dist/general-knowledge/skills/web-dashboard/SKILL.canvas-worker-off.md +0 -673
  308. package/dist/task-board-summary.d.ts +0 -101
  309. package/dist/task-board-summary.js +0 -177
  310. package/dist/task-board-summary.js.map +0 -1
  311. package/dist/ui/app-effects.js +0 -251
  312. package/dist/ui/chat-effect-posters.js +0 -42
  313. package/dist/ui/chat-effects.js +0 -167
  314. package/dist/ui/effect-trial-controller.js +0 -124
  315. package/dist/ui/effect-trial-offer.js +0 -2
  316. package/dist/ui/effect-trial-panel.js +0 -40
  317. package/dist/ui/effects-waker.js +0 -2
  318. package/dist/ui/settings-effects.js +0 -202
  319. package/dist/ui/settings-owner-effects.js +0 -82
  320. package/dist/ui/shared/effect-app-runtime.js +0 -299
  321. package/dist/ui/shared/effect-baseline.js +0 -64
  322. package/dist/ui/shared/effect-chat-runtime.js +0 -162
  323. package/dist/ui/shared/effect-cursor.js +0 -126
  324. package/dist/ui/shared/effect-display-metadata.js +0 -39
  325. package/dist/ui/shared/effect-frame.js +0 -146
  326. package/dist/ui/shared/effect-geometry.js +0 -137
  327. package/dist/ui/shared/effect-host-style.js +0 -10
  328. package/dist/ui/shared/effect-owner-regions.js +0 -74
  329. package/dist/ui/shared/effect-owner-source.js +0 -122
  330. package/dist/ui/shared/effect-policy.js +0 -151
  331. package/dist/ui/shared/effect-poster-reader.js +0 -98
  332. package/dist/ui/shared/effect-posters.js +0 -117
  333. package/dist/ui/shared/effect-profiler.js +0 -184
  334. package/dist/ui/shared/effect-profiles.js +0 -65
  335. package/dist/ui/shared/effect-registry.js +0 -545
  336. package/dist/ui/shared/effect-runtime-loader.js +0 -236
  337. package/dist/ui/shared/effect-safety.js +0 -153
  338. package/dist/ui/shared/effect-stock-snapshot.js +0 -43
  339. package/dist/ui/shared/effect-stock-trust.js +0 -217
  340. package/dist/ui/shared/effect-trial-shadow.js +0 -62
  341. package/dist/ui/shared/effect-trial-source.js +0 -103
  342. package/dist/ui/shared/effect-trial-stage.js +0 -170
  343. package/dist/ui/shared/effect-trial.css +0 -40
  344. package/dist/ui/shared/feature-flags.js +0 -127
  345. package/dist/ui/shared/owner-effect-prefs.js +0 -117
  346. package/dist/upgrade-notices.d.ts +0 -17
  347. package/dist/upgrade-notices.js +0 -93
  348. package/dist/upgrade-notices.js.map +0 -1
  349. package/dist/web-effect-bootstrap.d.ts +0 -12
  350. package/dist/web-effect-bootstrap.js +0 -49
  351. package/dist/web-effect-bootstrap.js.map +0 -1
  352. package/dist/web-effect-bundle.d.ts +0 -28
  353. package/dist/web-effect-bundle.js +0 -171
  354. package/dist/web-effect-bundle.js.map +0 -1
  355. package/dist/web-effect-canonical.d.ts +0 -8
  356. package/dist/web-effect-canonical.js +0 -27
  357. package/dist/web-effect-canonical.js.map +0 -1
  358. package/dist/web-effect-library.d.ts +0 -114
  359. package/dist/web-effect-library.js +0 -530
  360. package/dist/web-effect-library.js.map +0 -1
  361. package/dist/web-effect-playback.d.ts +0 -30
  362. package/dist/web-effect-playback.js +0 -71
  363. package/dist/web-effect-playback.js.map +0 -1
  364. package/dist/web-effect-poster.d.ts +0 -8
  365. package/dist/web-effect-poster.js +0 -52
  366. package/dist/web-effect-poster.js.map +0 -1
  367. package/dist/web-effect-profiles.d.ts +0 -118
  368. package/dist/web-effect-profiles.js +0 -181
  369. package/dist/web-effect-profiles.js.map +0 -1
  370. package/dist/web-effect-service.d.ts +0 -93
  371. package/dist/web-effect-service.js +0 -335
  372. package/dist/web-effect-service.js.map +0 -1
  373. package/dist/web-effect-tools.d.ts +0 -48
  374. package/dist/web-effect-tools.js +0 -129
  375. package/dist/web-effect-tools.js.map +0 -1
  376. package/dist/web-effect-trials.d.ts +0 -86
  377. package/dist/web-effect-trials.js +0 -204
  378. package/dist/web-effect-trials.js.map +0 -1
  379. package/dist/web-effect-upload.d.ts +0 -27
  380. package/dist/web-effect-upload.js +0 -185
  381. package/dist/web-effect-upload.js.map +0 -1
  382. package/dist/web-effect-worker.d.ts +0 -8
  383. package/dist/web-effect-worker.js +0 -170
  384. package/dist/web-effect-worker.js.map +0 -1
  385. package/dist/web-effect.d.ts +0 -103
  386. package/dist/web-effect.js +0 -153
  387. package/dist/web-effect.js.map +0 -1
  388. package/dist/web-experimental-http.d.ts +0 -2
  389. package/dist/web-experimental-http.js +0 -12
  390. package/dist/web-experimental-http.js.map +0 -1
  391. package/dist/web-mod-agent.d.ts +0 -50
  392. package/dist/web-mod-agent.js +0 -207
  393. package/dist/web-mod-agent.js.map +0 -1
@@ -1,170 +0,0 @@
1
- /** #1629: trusted bootstrap sources; uploaded JS runs only in a dedicated Worker, never a DOM realm. */
2
- export const EFFECT_MAX_BYTES = 1024 * 1024;
3
- export const EFFECT_MAX_PIXELS = 8 * 1024 * 1024;
4
- // Shared by the trusted document and Worker. Closed signals only; no content-bearing fields are read.
5
- export const EFFECT_SIGNAL_CHECK = String.raw `
6
- function signal(d, instance) {
7
- if (!d || Object.getPrototypeOf(d) !== Object.prototype || d.v !== 1 || !Number.isFinite(d.ts) || d.ts < 0) return false;
8
- var keys = {state:['state'],reply:[],mention:[],theme:['mode'],env:['width','height','dpr','quality'],pointer:['kind','x','y','buttons']};
9
- if (!Object.prototype.hasOwnProperty.call(keys,d.type)) return false;
10
- var exact = ['v','type','ts'].concat(keys[d.type]);
11
- if (['state','reply','mention'].indexOf(d.type) >= 0 && Object.prototype.hasOwnProperty.call(d,'instance')) {
12
- if (typeof instance !== 'string' || d.instance !== instance) return false;
13
- exact.push('instance');
14
- }
15
- if (d.type === 'pointer') for (var key of ['dx','dy']) if (Object.prototype.hasOwnProperty.call(d,key)) {
16
- if (!Number.isFinite(d[key]) || Math.abs(d[key]) > 10000) return false;
17
- exact.push(key);
18
- }
19
- if (Object.keys(d).sort().join(',') !== exact.sort().join(',')) return false;
20
- switch (d.type) {
21
- case 'state': return ['idle','working','needs_you','stopped'].indexOf(d.state) >= 0;
22
- case 'reply': case 'mention': return true;
23
- case 'theme': return ['light','dark'].indexOf(d.mode) >= 0;
24
- case 'env': return Number.isInteger(d.width) && d.width >= 1 && d.width <= 4096 && Number.isInteger(d.height) && d.height >= 1 && d.height <= 4096 && d.width*d.height <= 8388608 && Number.isFinite(d.dpr) && d.dpr >= 0.5 && d.dpr <= 3 && ['normal','low'].indexOf(d.quality) >= 0;
25
- case 'pointer': return ['move','down','up','click','wheel'].indexOf(d.kind) >= 0 && Number.isFinite(d.x) && d.x >= 0 && d.x <= 4096 && Number.isFinite(d.y) && d.y >= 0 && d.y <= 4096 && Number.isInteger(d.buttons) && d.buttons >= 0 && d.buttons <= 31;
26
- }
27
- return false;
28
- }
29
- `;
30
- /** The private port never reaches user callbacks, including through poisoned native getters/schedulers. */
31
- export function effectWorkerSource() {
32
- return `"use strict";
33
- (function () {
34
- ${EFFECT_SIGNAL_CHECK}
35
- var defer = self.setTimeout.bind(self), load = self.importScripts.bind(self), end = self.close.bind(self), now = performance.now.bind(performance);
36
- var read = Function.prototype.call.bind(Object.getOwnPropertyDescriptor(MessageEvent.prototype,'data').get);
37
- var raf = typeof self.requestAnimationFrame === 'function' ? self.requestAnimationFrame.bind(self) : null;
38
- var initialized = false;
39
- function init(event) {
40
- if (initialized) return;
41
- var d = read(event);
42
- if (!d || !d.port || !d.canvas || typeof d.codeUrl !== 'string') return;
43
- initialized = true;
44
- self.removeEventListener('message',init);
45
- var port = d.port, post = port.postMessage.bind(port), callbacks = Object.create(null), ready = false;
46
- var assets = Object.create(null);
47
- d.assets.forEach(function (asset) { assets[asset.name] = asset.bitmap; });
48
- var api = Object.freeze({
49
- canvas: d.canvas,
50
- params: Object.freeze(d.params),
51
- asset: function (name) { return Object.prototype.hasOwnProperty.call(assets,name) ? assets[name] : undefined; },
52
- on: function (kind,fn) {
53
- if (['state','reply','mention','theme','env','pointer'].indexOf(kind) < 0 || typeof fn !== 'function') return;
54
- if (!callbacks[kind]) callbacks[kind] = [];
55
- if (callbacks[kind].length < 32) callbacks[kind].push(fn);
56
- },
57
- frame: function (fn) {
58
- if (typeof fn !== 'function') return;
59
- if (raf) { try { return raf(fn); } catch (_) {} }
60
- return defer(function () { fn(now()); },16);
61
- },
62
- ready: function () { if (!ready) { ready = true; post({type:'ready'}); } }
63
- });
64
- Object.defineProperty(self,'agend',{value:api,writable:false,configurable:false});
65
- // Defence in depth against nested workers; termination and host budgets remain required.
66
- ['Worker','SharedWorker','importScripts','RTCPeerConnection','webkitRTCPeerConnection'].forEach(function (key) {
67
- try { Object.defineProperty(self,key,{value:undefined,writable:false,configurable:false}); } catch (_) {}
68
- });
69
- port.addEventListener('message',function (event) {
70
- var payload = read(event);
71
- if (!signal(payload,d.instance)) return;
72
- defer(function () {
73
- var listeners = (callbacks[payload.type] || []).slice();
74
- listeners.forEach(function (fn) { try { fn(payload); } catch (_) {} });
75
- },0);
76
- });
77
- port.start();
78
- // Separate script/global: never concatenate user code into a trusted lexical scope.
79
- defer(function () { try { load(d.codeUrl); } catch (_) { end(); } },0);
80
- }
81
- self.addEventListener('message',init);
82
- })();`;
83
- }
84
- function literal(value) {
85
- return JSON.stringify(value).replace(/</g, "\\u003c").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
86
- }
87
- /** No HTML input exists. The document realm contains only this shim and its single canvas. */
88
- export function buildCanvasEffectShim(bootId, origins, sameListener = false) {
89
- const source = String.raw `(function () {
90
- "use strict";
91
- ${EFFECT_SIGNAL_CHECK}
92
- var BOOT=${literal(bootId)}, ORIGINS=${sameListener ? "[new URL(window.location.href).origin]" : literal([...origins])}, MAX=${EFFECT_MAX_BYTES}, PIXELS=${EFFECT_MAX_PIXELS};
93
- var WORKER=${literal(effectWorkerSource())};
94
- var done=false, active=true, worker=null, host=null, link=null, urls=[], bitmaps=[], deadline=null, expires=null;
95
- var defer=window.setTimeout.bind(window), cancel=window.clearTimeout.bind(window), now=performance.now.bind(performance);
96
- var read=Function.prototype.call.bind(Object.getOwnPropertyDescriptor(MessageEvent.prototype,'data').get);
97
- function plain(d) { return !!d && Object.getPrototypeOf(d) === Object.prototype; }
98
- function bytes(s) { try { return new TextEncoder().encode(s).length; } catch (_) { return Infinity; } }
99
- function stop() {
100
- if (!active) return;
101
- active=false;
102
- if (deadline !== null) cancel(deadline);
103
- if (worker) worker.terminate();
104
- if (host) host.close();
105
- if (link) link.close();
106
- urls.forEach(function (url) { URL.revokeObjectURL(url); });
107
- bitmaps.forEach(function (bitmap) { try { bitmap.close(); } catch (_) {} });
108
- }
109
- window.addEventListener('pagehide',stop,{once:true});
110
- async function render(event) {
111
- if (done || !active || event.source !== window.parent || event.origin === 'null' || ORIGINS.indexOf(event.origin) < 0) return;
112
- var d=read(event);
113
- if (!plain(d) || Object.keys(d).sort().join(',') !== 'assets,ch,code,dpr,height,instance,params,type,v,width' || d.v !== 1 || d.type !== 'render') return;
114
- if (typeof d.ch !== 'string' || !/^[0-9a-f]{16,64}$/.test(d.ch) || typeof d.code !== 'string' || bytes(d.code) > MAX) return;
115
- if (d.instance !== null && (typeof d.instance !== 'string' || d.instance.length < 1 || d.instance.length > 128)) return;
116
- if (!signal({v:1,type:'env',ts:0,width:d.width,height:d.height,dpr:d.dpr,quality:'normal'},d.instance)) return;
117
- if (!plain(d.params) || Object.keys(d.params).length > 16 || !Array.isArray(d.assets) || d.assets.length > 16) return;
118
- var names=new Set();
119
- if (!Object.keys(d.params).every(function (key) {
120
- var value=d.params[key];
121
- return /^[a-z][a-z0-9_]{0,31}$/.test(key) && (typeof value === 'boolean' || typeof value === 'number' && Number.isFinite(value) || typeof value === 'string' && value.length <= 128);
122
- })) return;
123
- var size=bytes(d.code)+bytes(JSON.stringify(d.params));
124
- if (Object.keys(d.assets).length !== d.assets.length) return;
125
- if (!d.assets.every(function (asset) {
126
- if (!plain(asset) || Object.keys(asset).sort().join(',') !== 'bytes,mime,name' || typeof asset.name !== 'string' || !/^assets\/[a-z0-9][a-z0-9_-]{0,63}\.(png|jpe?g|webp|gif)$/.test(asset.name) || names.has(asset.name)) return false;
127
- if (['image/png','image/jpeg','image/webp','image/gif'].indexOf(asset.mime) < 0 || !(asset.bytes instanceof Uint8Array)) return false;
128
- names.add(asset.name);size+=asset.bytes.byteLength;return true;
129
- }) || size > MAX) return;
130
- if (!event.ports || event.ports.length !== 1) return;
131
- var port=event.ports[0];
132
- if (!port || typeof port.postMessage !== 'function' || typeof port.addEventListener !== 'function' || typeof port.start !== 'function' || typeof port.close !== 'function') return;
133
- done=true;host=port;window.removeEventListener('message',render);
134
- expires=now()+10000;deadline=defer(stop,10000);
135
- try {
136
- if (typeof Worker !== 'function' || typeof OffscreenCanvas !== 'function' || typeof createImageBitmap !== 'function' || typeof HTMLCanvasElement.prototype.transferControlToOffscreen !== 'function') { stop();return; }
137
- var assets=[], pixels=0;
138
- for (var asset of d.assets) {
139
- var bitmap=await createImageBitmap(new Blob([asset.bytes],{type:asset.mime}));
140
- if (!active || now() >= expires) { bitmap.close();stop();return; }
141
- bitmaps.push(bitmap);
142
- if (bitmap.width < 1 || bitmap.height < 1 || bitmap.width > 4096 || bitmap.height > 4096 || bitmap.width*bitmap.height > PIXELS) { stop();return; }
143
- pixels+=bitmap.width*bitmap.height;if(pixels > PIXELS) { stop();return; }
144
- assets.push({name:asset.name,bitmap:bitmap});
145
- }
146
- if (!active || now() >= expires) { stop();return; }
147
- var canvas=document.querySelector('canvas');canvas.width=d.width;canvas.height=d.height;
148
- var offscreen=canvas.transferControlToOffscreen();
149
- var codeUrl=URL.createObjectURL(new Blob([d.code],{type:'text/javascript'}));urls.push(codeUrl);
150
- var workerUrl=URL.createObjectURL(new Blob([WORKER],{type:'text/javascript'}));urls.push(workerUrl);
151
- worker=new Worker(workerUrl);var channel=new MessageChannel();link=channel.port1;
152
- var ready=false, post=port.postMessage.bind(port);
153
- // No diagnostic, cost, pong, command or error message is forwarded to the host.
154
- link.addEventListener('message',function (event) {
155
- var value=read(event);
156
- if (active && !ready && now() >= expires) { stop();return; }
157
- if (!active || ready || !plain(value) || Object.keys(value).join(',') !== 'type' || value.type !== 'ready') return;
158
- ready=true;cancel(deadline);deadline=null;post({type:'ready'});
159
- });link.start();
160
- worker.addEventListener('error',stop);worker.addEventListener('messageerror',stop);
161
- port.addEventListener('message',function (event) { var payload=read(event);if (active && signal(payload,d.instance)) link.postMessage(payload); });port.start();
162
- worker.postMessage({port:channel.port2,canvas:offscreen,assets:assets,params:d.params,instance:d.instance,codeUrl:codeUrl},[channel.port2,offscreen].concat(bitmaps));
163
- } catch (_) { stop(); }
164
- }
165
- window.addEventListener('message',render);
166
- window.parent.postMessage({v:1,type:'ready',ch:null,boot:BOOT},'*');
167
- })();`;
168
- return `<!doctype html><html><head><meta charset="utf-8"><title>Effect</title><style>html,body{margin:0;width:100%;height:100%;overflow:hidden}canvas{display:block;width:100%;height:100%}</style></head><body><canvas></canvas><script>${source}</script></body></html>`;
169
- }
170
- //# sourceMappingURL=web-effect-worker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web-effect-worker.js","sourceRoot":"","sources":["../src/web-effect-worker.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAEjD,sGAAsG;AACtG,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;CAwB5C,CAAC;AAEF,2GAA2G;AAC3G,MAAM,UAAU,kBAAkB;IAChC,OAAO;;IAEL,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgDjB,CAAC;AACP,CAAC;AAED,SAAS,OAAO,CAAC,KAAc;IAC7B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACpH,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,OAA0B,EAAE,YAAY,GAAG,KAAK;IACpG,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAA;;IAEvB,mBAAmB;aACV,OAAO,CAAC,MAAM,CAAC,aAAa,YAAY,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,SAAS,gBAAgB,YAAY,iBAAiB;eAC/J,OAAO,CAAC,kBAAkB,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA0EtC,CAAC;IACL,OAAO,oOAAoO,MAAM,yBAAyB,CAAC;AAC7Q,CAAC"}
@@ -1,103 +0,0 @@
1
- /** CW1 effect manifests are metadata, never placement authority. Widgets are host-rendered elsewhere. */
2
- import { z } from "zod";
3
- export declare const WEB_EFFECT_ID: RegExp;
4
- export declare const WEB_EFFECT_REGIONS: readonly ["chat", "sidebar", "header", "page", "box"];
5
- export declare const WEB_EFFECT_WANTS: readonly ["pointer", "state", "reply", "mention", "theme"];
6
- declare const manifest: z.ZodObject<{
7
- v: z.ZodLiteral<1>;
8
- kind: z.ZodDefault<z.ZodLiteral<"effect">>;
9
- runtime: z.ZodLiteral<"canvas-worker-v1">;
10
- worker: z.ZodLiteral<"worker.js">;
11
- name: z.ZodString;
12
- title: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
13
- description: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>>;
14
- poster: z.ZodOptional<z.ZodLiteral<"poster.png">>;
15
- regions: z.ZodArray<z.ZodEnum<{
16
- box: "box";
17
- chat: "chat";
18
- header: "header";
19
- page: "page";
20
- sidebar: "sidebar";
21
- }>>;
22
- layer: z.ZodEnum<{
23
- behind: "behind";
24
- front: "front";
25
- }>;
26
- box: z.ZodOptional<z.ZodObject<{
27
- anchor: z.ZodEnum<{
28
- "bottom-left": "bottom-left";
29
- "bottom-right": "bottom-right";
30
- center: "center";
31
- "top-left": "top-left";
32
- "top-right": "top-right";
33
- }>;
34
- width: z.ZodNumber;
35
- height: z.ZodNumber;
36
- offset: z.ZodNumber;
37
- }, z.core.$strict>>;
38
- cursor: z.ZodOptional<z.ZodObject<{
39
- hotspot: z.ZodTuple<[z.ZodNumber, z.ZodNumber], null>;
40
- }, z.core.$strict>>;
41
- wants: z.ZodArray<z.ZodEnum<{
42
- mention: "mention";
43
- pointer: "pointer";
44
- reply: "reply";
45
- state: "state";
46
- theme: "theme";
47
- }>>;
48
- params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
49
- type: z.ZodLiteral<"number">;
50
- min: z.ZodNumber;
51
- max: z.ZodNumber;
52
- step: z.ZodOptional<z.ZodNumber>;
53
- default: z.ZodNumber;
54
- }, z.core.$strict>, z.ZodObject<{
55
- type: z.ZodLiteral<"int">;
56
- min: z.ZodNumber;
57
- max: z.ZodNumber;
58
- default: z.ZodNumber;
59
- }, z.core.$strict>, z.ZodObject<{
60
- type: z.ZodLiteral<"bool">;
61
- default: z.ZodBoolean;
62
- }, z.core.$strict>, z.ZodObject<{
63
- type: z.ZodLiteral<"enum">;
64
- values: z.ZodArray<z.ZodString>;
65
- default: z.ZodString;
66
- }, z.core.$strict>, z.ZodObject<{
67
- type: z.ZodLiteral<"color">;
68
- default: z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>;
69
- }, z.core.$strict>], "type">>>;
70
- }, z.core.$strict>;
71
- export type WebEffectManifest = z.infer<typeof manifest>;
72
- export type EffectParamValue = string | number | boolean;
73
- export declare function parseWebEffectManifest(value: unknown): {
74
- ok: true;
75
- manifest: WebEffectManifest;
76
- } | {
77
- ok: false;
78
- error: "invalid_manifest";
79
- };
80
- /**
81
- * #2017: whether an effect can be placed in a chat — its manifest's regions include `chat` (else it is saved but never
82
- * plays there). Only a NEW chat placement is checked (agent tool, person's route, a mod's theme.effects); an older one
83
- * stays as it is (filtered at run time) and can be removed. A non-chat effect stays a valid upload and personal choice.
84
- */
85
- export declare function chatCompatible(manifest: {
86
- regions?: readonly string[];
87
- }): boolean;
88
- /** #2017: the same test on an effect's files (its effect.json), for a mod export: an unreadable manifest is not chat. */
89
- export declare function filesPlayInChat(files: ReadonlyMap<string, Uint8Array>): boolean;
90
- export declare const EFFECT_REGION: Readonly<{
91
- error: "effect_region";
92
- message: string;
93
- }>;
94
- /** Defaults and overrides are resolved together before a placement or mod commit can write. */
95
- export declare function resolveEffectParams(input: WebEffectManifest, overrides?: unknown): {
96
- ok: true;
97
- values: Record<string, EffectParamValue>;
98
- overrides: Record<string, EffectParamValue>;
99
- } | {
100
- ok: false;
101
- error: "invalid_params";
102
- };
103
- export {};
@@ -1,153 +0,0 @@
1
- /** CW1 effect manifests are metadata, never placement authority. Widgets are host-rendered elsewhere. */
2
- import { z } from "zod";
3
- import { canonicalText } from "./web-theme.js";
4
- export const WEB_EFFECT_ID = /^[0-9a-f]{32}$/;
5
- export const WEB_EFFECT_REGIONS = ["chat", "sidebar", "header", "page", "box"];
6
- export const WEB_EFFECT_WANTS = ["pointer", "state", "reply", "mention", "theme"];
7
- const slug = z.string().regex(/^[a-z0-9][a-z0-9-]{0,31}$/);
8
- function text(max, min) {
9
- return z.string().max(max * 10).transform((value, ctx) => {
10
- const result = min === 0 && value === "" ? "" : canonicalText(value, Math.max(1, min), max);
11
- if (result === null) {
12
- ctx.addIssue({ code: "custom", message: "Invalid display text" });
13
- return z.NEVER;
14
- }
15
- return result;
16
- });
17
- }
18
- const finite = z.number().finite().min(-1e9).max(1e9);
19
- const numeric = z.strictObject({ type: z.literal("number"), min: finite, max: finite, step: z.number().finite().positive().max(2e9).optional(), default: finite });
20
- const integer = z.strictObject({ type: z.literal("int"), min: finite.int(), max: finite.int(), default: finite.int() });
21
- const param = z.discriminatedUnion("type", [
22
- numeric, integer, z.strictObject({ type: z.literal("bool"), default: z.boolean() }),
23
- z.strictObject({ type: z.literal("enum"), values: z.array(slug).min(1).max(16), default: slug }),
24
- z.strictObject({ type: z.literal("color"), default: z.string().regex(/^#[0-9a-fA-F]{6}$/).transform(value => value.toLowerCase()) }),
25
- ]).refine(d => {
26
- if (d.type === "enum")
27
- return new Set(d.values).size === d.values.length && d.values.includes(d.default);
28
- if (d.type === "number" || d.type === "int")
29
- return d.min <= d.max && d.default >= d.min && d.default <= d.max && (d.type !== "number" || d.step === undefined || aligned(d.default, d.min, d.step));
30
- return true;
31
- });
32
- function aligned(value, min, step) {
33
- const distance = (value - min) / step;
34
- return Number.isFinite(distance) && Math.abs(distance - Math.round(distance)) <= 1e-8;
35
- }
36
- const manifest = z.strictObject({
37
- v: z.literal(1), kind: z.literal("effect").default("effect"), runtime: z.literal("canvas-worker-v1"), worker: z.literal("worker.js"),
38
- name: slug, title: text(40, 1), description: text(200, 0).optional(), poster: z.literal("poster.png").optional(),
39
- regions: z.array(z.enum(WEB_EFFECT_REGIONS)).min(1).max(5).refine(v => new Set(v).size === v.length),
40
- layer: z.enum(["behind", "front"]),
41
- box: z.strictObject({ anchor: z.enum(["top-left", "top-right", "bottom-left", "bottom-right", "center"]), width: z.number().int().min(32).max(480), height: z.number().int().min(32).max(480), offset: z.number().int().min(0).max(64) }).optional(),
42
- cursor: z.strictObject({ hotspot: z.tuple([z.number().int().min(0).max(63), z.number().int().min(0).max(63)]) }).optional(),
43
- wants: z.array(z.enum(WEB_EFFECT_WANTS)).max(5).refine(v => new Set(v).size === v.length),
44
- params: z.record(z.string().regex(/^[a-z][a-z0-9_]{0,31}$/), param).refine(v => Object.keys(v).length <= 16).optional(),
45
- });
46
- /** Bounded data only. Do not invoke getters or interpret unreadable values as an absent field. */
47
- function plainData(value) {
48
- const pending = [{ value, depth: 0 }];
49
- let nodes = 0;
50
- while (pending.length) {
51
- const { value, depth } = pending.pop();
52
- if (++nodes > 1024 || depth > 8)
53
- return false;
54
- if (value === null || typeof value === "string" || typeof value === "boolean")
55
- continue;
56
- if (typeof value === "number") {
57
- if (!Number.isFinite(value))
58
- return false;
59
- continue;
60
- }
61
- if (typeof value !== "object")
62
- return false;
63
- const array = Array.isArray(value), proto = Object.getPrototypeOf(value);
64
- if (array ? proto !== Array.prototype : proto !== Object.prototype && proto !== null)
65
- return false;
66
- const keys = Reflect.ownKeys(value);
67
- if (keys.length > 33 || array && value.length > 32)
68
- return false;
69
- for (const key of keys) {
70
- if (typeof key !== "string")
71
- return false;
72
- if (array && key === "length")
73
- continue;
74
- const field = Object.getOwnPropertyDescriptor(value, key);
75
- if (!("value" in field))
76
- return false;
77
- pending.push({ value: field.value, depth: depth + 1 });
78
- }
79
- }
80
- return true;
81
- }
82
- export function parseWebEffectManifest(value) {
83
- try {
84
- if (!plainData(value))
85
- return { ok: false, error: "invalid_manifest" };
86
- const result = manifest.safeParse(value);
87
- return result.success ? { ok: true, manifest: result.data } : { ok: false, error: "invalid_manifest" };
88
- }
89
- catch {
90
- return { ok: false, error: "invalid_manifest" };
91
- }
92
- }
93
- /**
94
- * #2017: whether an effect can be placed in a chat — its manifest's regions include `chat` (else it is saved but never
95
- * plays there). Only a NEW chat placement is checked (agent tool, person's route, a mod's theme.effects); an older one
96
- * stays as it is (filtered at run time) and can be removed. A non-chat effect stays a valid upload and personal choice.
97
- */
98
- export function chatCompatible(manifest) {
99
- return Array.isArray(manifest.regions) && manifest.regions.includes("chat");
100
- }
101
- /** #2017: the same test on an effect's files (its effect.json), for a mod export: an unreadable manifest is not chat. */
102
- export function filesPlayInChat(files) {
103
- const raw = files.get("effect.json");
104
- if (!raw)
105
- return false;
106
- try {
107
- return chatCompatible(JSON.parse(Buffer.from(raw).toString("utf8")));
108
- }
109
- catch {
110
- return false;
111
- }
112
- }
113
- export const EFFECT_REGION = Object.freeze({ error: "effect_region", message: "This effect's regions do not include chat." });
114
- /** Defaults and overrides are resolved together before a placement or mod commit can write. */
115
- export function resolveEffectParams(input, overrides = {}) {
116
- try {
117
- if (!plainData(overrides) || !overrides || Array.isArray(overrides) || typeof overrides !== "object")
118
- return { ok: false, error: "invalid_params" };
119
- const schema = input.params ?? {};
120
- for (const key of Object.keys(overrides))
121
- if (!Object.hasOwn(schema, key))
122
- return { ok: false, error: "invalid_params" };
123
- const values = Object.create(null), changed = Object.create(null);
124
- for (const [name, d] of Object.entries(schema)) {
125
- let value = Object.hasOwn(overrides, name) ? overrides[name] : d.default;
126
- if (d.type === "number" || d.type === "int") {
127
- if (typeof value !== "number" || !Number.isFinite(value) || value < d.min || value > d.max || d.type === "int" && !Number.isSafeInteger(value) || d.type === "number" && d.step !== undefined && !aligned(value, d.min, d.step))
128
- return { ok: false, error: "invalid_params" };
129
- }
130
- else if (d.type === "bool") {
131
- if (typeof value !== "boolean")
132
- return { ok: false, error: "invalid_params" };
133
- }
134
- else if (d.type === "enum") {
135
- if (typeof value !== "string" || !d.values.includes(value))
136
- return { ok: false, error: "invalid_params" };
137
- }
138
- else {
139
- if (typeof value !== "string" || !/^#[0-9a-fA-F]{6}$/.test(value))
140
- return { ok: false, error: "invalid_params" };
141
- value = value.toLowerCase();
142
- }
143
- values[name] = value;
144
- if (value !== d.default)
145
- changed[name] = value;
146
- }
147
- return { ok: true, values, overrides: changed };
148
- }
149
- catch {
150
- return { ok: false, error: "invalid_params" };
151
- }
152
- }
153
- //# sourceMappingURL=web-effect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web-effect.js","sourceRoot":"","sources":["../src/web-effect.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- /** #2275: the CW-only network graph. Shared ambient/motion, themes, widgets and CSS are deliberately absent. */
2
- export declare function isCanvasWorkerHttpPath(path: string): boolean;
@@ -1,12 +0,0 @@
1
- /** #2275: the CW-only network graph. Shared ambient/motion, themes, widgets and CSS are deliberately absent. */
2
- export function isCanvasWorkerHttpPath(path) {
3
- if (path === "/effect-bootstrap" || path.startsWith("/effect-bootstrap/"))
4
- return true;
5
- if (/^\/ui\/(?:effects|effect-posters|effect-trials)(?:\/|$)/.test(path))
6
- return true;
7
- if (!path.startsWith("/assets/") && !path.startsWith("/ui/js/"))
8
- return false;
9
- const name = path.slice(path.lastIndexOf("/") + 1);
10
- return /^(?:effect-|effects-waker\.|app-effects\.|chat-effects\.|chat-effect-posters\.|settings-effects\.|settings-owner-effects\.|owner-effect-prefs\.)/.test(name);
11
- }
12
- //# sourceMappingURL=web-experimental-http.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"web-experimental-http.js","sourceRoot":"","sources":["../src/web-experimental-http.ts"],"names":[],"mappings":"AAAA,gHAAgH;AAChH,MAAM,UAAU,sBAAsB,CAAC,IAAY;IACjD,IAAI,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;QAAE,OAAO,IAAI,CAAC;IACvF,IAAI,yDAAyD,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtF,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IAC9E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,OAAO,kJAAkJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvK,CAAC"}
@@ -1,50 +0,0 @@
1
- import { type AppearanceLimiter } from "./web-appearance-policy.js";
2
- import { type ModContext } from "./web-mod-bundle.js";
3
- import type { ModStore } from "./web-mod-store.js";
4
- import type { ThemeStore } from "./web-theme-store.js";
5
- /** An exported mod that fits one message is sent whole; a larger one is fetched in parts (as a preview is). */
6
- export declare const MOD_INLINE_BYTES: number;
7
- export declare const MOD_IDLE_MS = 60000;
8
- type Answer = Record<string, unknown>;
9
- export interface AgentModsDeps {
10
- themes: ThemeStore;
11
- mods: ModStore;
12
- limiter: AppearanceLimiter;
13
- webConfig: () => {
14
- themes?: {
15
- agent_edit?: boolean;
16
- };
17
- } | undefined | null;
18
- context: () => ModContext;
19
- /**
20
- * r4-5c: an effect as this agent may read it (its own, or one a person shared) — never a person's private effect,
21
- * even one placed on its instance: that is not the agent's to carry away. Null: not readable by it (or no library).
22
- */
23
- readOwnEffect?: (instance: string, id: string) => {
24
- name: string;
25
- files: ReadonlyMap<string, Uint8Array>;
26
- } | null;
27
- /** A muted status line in the agent's own web chat (#1672's notice lane). */
28
- notice: (instance: string, text: string) => void;
29
- changed: () => void;
30
- clock?: () => number;
31
- }
32
- export declare class AgentMods {
33
- private readonly deps;
34
- private readonly built;
35
- private readonly uploads;
36
- constructor(deps: AgentModsDeps);
37
- private now;
38
- handle(instance: string, tool: string, args: Answer): Answer;
39
- /** export_web_mod: the caller's own look, as a bundle file. */
40
- private exportMod;
41
- private exportPart;
42
- /** Why the caller may not propose now, or null: the fleet switch, a person's lock (uploads are not counted: the user's decision). */
43
- private refusal;
44
- /** propose_web_mod: the bytes the daemon or agend-agent read on the agent's side — whole, or in parts. */
45
- private propose;
46
- private finish;
47
- /** An instance was removed. */
48
- forget(instance: string): void;
49
- }
50
- export {};