@poolzin/pool-bot 2026.1.38 → 2026.2.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 (336) hide show
  1. package/assets/chrome-extension/README.md +3 -3
  2. package/assets/chrome-extension/background.js +5 -5
  3. package/assets/chrome-extension/manifest.json +3 -3
  4. package/assets/chrome-extension/options.html +4 -4
  5. package/assets/chrome-extension/options.js +1 -1
  6. package/dist/acp/client.js +3 -3
  7. package/dist/acp/types.js +1 -1
  8. package/dist/agents/agent-paths.js +3 -3
  9. package/dist/agents/auth-profiles/paths.js +3 -3
  10. package/dist/agents/cli-runner/helpers.js +1 -1
  11. package/dist/agents/cli-runner.js +2 -2
  12. package/dist/agents/cloudflare-ai-gateway.js +31 -0
  13. package/dist/agents/compaction.js +16 -2
  14. package/dist/agents/context-window-guard.js +13 -10
  15. package/dist/agents/context.js +4 -4
  16. package/dist/agents/docs-path.js +1 -1
  17. package/dist/agents/minimax-vlm.js +1 -1
  18. package/dist/agents/model-auth.js +12 -1
  19. package/dist/agents/model-catalog.js +4 -4
  20. package/dist/agents/model-selection.js +10 -4
  21. package/dist/agents/models-config.js +3 -3
  22. package/dist/agents/models-config.providers.js +147 -39
  23. package/dist/agents/pi-embedded-helpers/openai.js +1 -1
  24. package/dist/agents/pi-embedded-runner/compact.js +8 -8
  25. package/dist/agents/pi-embedded-runner/model.js +2 -2
  26. package/dist/agents/pi-embedded-runner/run/attempt.js +6 -6
  27. package/dist/agents/pi-embedded-runner/run.js +4 -4
  28. package/dist/agents/pi-embedded-runner/tool-result-truncation.js +275 -0
  29. package/dist/agents/pi-embedded-runner/utils.js +1 -1
  30. package/dist/agents/pi-model-discovery.js +10 -0
  31. package/dist/agents/pi-tool-definition-adapter.js +50 -9
  32. package/dist/agents/pi-tools.before-tool-call.js +67 -0
  33. package/dist/agents/pi-tools.js +10 -5
  34. package/dist/agents/pi-tools.read.js +2 -2
  35. package/dist/agents/session-file-repair.js +83 -0
  36. package/dist/agents/session-transcript-repair.js +68 -0
  37. package/dist/agents/skills/frontmatter.js +1 -1
  38. package/dist/agents/skills/workspace.js +2 -2
  39. package/dist/agents/system-prompt.js +28 -4
  40. package/dist/agents/together-models.js +127 -0
  41. package/dist/agents/tool-images.js +1 -1
  42. package/dist/agents/tool-policy.js +1 -1
  43. package/dist/agents/tools/browser-tool.js +3 -3
  44. package/dist/agents/tools/image-tool.js +2 -2
  45. package/dist/agents/tools/memory-tool.js +94 -7
  46. package/dist/agents/tools/web-search.js +1 -1
  47. package/dist/agents/workspace.js +1 -5
  48. package/dist/auto-reply/commands-registry.data.js +1 -1
  49. package/dist/auto-reply/reply/commands-context-report.js +2 -2
  50. package/dist/auto-reply/reply/commands-session.js +2 -2
  51. package/dist/auto-reply/reply/get-reply-run.js +14 -4
  52. package/dist/auto-reply/reply/groups.js +1 -1
  53. package/dist/auto-reply/reply/inbound-context.js +4 -0
  54. package/dist/auto-reply/reply/inbound-meta.js +130 -0
  55. package/dist/auto-reply/reply/untrusted-context.js +15 -0
  56. package/dist/auto-reply/status.js +1 -1
  57. package/dist/browser/client-fetch.js +1 -1
  58. package/dist/browser/config.js +1 -1
  59. package/dist/browser/extension-relay.js +3 -3
  60. package/dist/browser/server-context.js +2 -2
  61. package/dist/build-info.json +3 -3
  62. package/dist/canvas-host/a2ui.js +3 -3
  63. package/dist/channels/plugins/agent-tools/whatsapp-login.js +1 -17
  64. package/dist/channels/plugins/catalog.js +2 -2
  65. package/dist/channels/plugins/onboarding/imessage.js +1 -1
  66. package/dist/channels/plugins/onboarding/signal.js +1 -1
  67. package/dist/channels/plugins/onboarding/slack.js +4 -4
  68. package/dist/channels/plugins/onboarding/whatsapp.js +3 -3
  69. package/dist/channels/plugins/pairing-message.js +1 -1
  70. package/dist/cli/browser-cli-extension.js +2 -2
  71. package/dist/cli/docs-cli.js +1 -1
  72. package/dist/cli/gateway-cli/dev.js +1 -1
  73. package/dist/cli/memory-cli.js +25 -15
  74. package/dist/cli/nodes-cli/register.canvas.js +1 -1
  75. package/dist/cli/plugins-cli.js +1 -1
  76. package/dist/cli/run-main.js +2 -2
  77. package/dist/cli/security-cli.js +1 -1
  78. package/dist/cli/tagline.js +1 -1
  79. package/dist/cli/update-cli.js +4 -4
  80. package/dist/cli/webhooks-cli.js +5 -5
  81. package/dist/commands/agents.commands.add.js +1 -1
  82. package/dist/commands/auth-choice.apply.api-providers.js +305 -17
  83. package/dist/commands/auth-choice.apply.js +4 -1
  84. package/dist/commands/auth-choice.apply.plugin-provider.js +2 -2
  85. package/dist/commands/auth-choice.apply.xai.js +63 -0
  86. package/dist/commands/auth-choice.preferred-provider.js +7 -1
  87. package/dist/commands/configure.wizard.js +1 -1
  88. package/dist/commands/dashboard.js +1 -1
  89. package/dist/commands/docs.js +1 -1
  90. package/dist/commands/doctor-gateway-services.js +3 -3
  91. package/dist/commands/doctor-state-integrity.js +2 -14
  92. package/dist/commands/doctor-update.js +3 -3
  93. package/dist/commands/doctor.js +1 -1
  94. package/dist/commands/models/list.probe.js +2 -2
  95. package/dist/commands/models/list.registry.js +4 -4
  96. package/dist/commands/models/list.status-command.js +2 -2
  97. package/dist/commands/onboard-auth.config-core.js +366 -28
  98. package/dist/commands/onboard-auth.credentials.js +71 -9
  99. package/dist/commands/onboard-auth.js +3 -3
  100. package/dist/commands/onboard-auth.models.js +26 -24
  101. package/dist/commands/onboard-non-interactive/local/auth-choice.js +140 -6
  102. package/dist/commands/status-all/report-lines.js +1 -1
  103. package/dist/commands/status.command.js +1 -1
  104. package/dist/commands/uninstall.js +3 -3
  105. package/dist/compat/legacy-names.js +1 -1
  106. package/dist/config/io.js +3 -3
  107. package/dist/config/schema.js +1 -1
  108. package/dist/config/types.js +0 -1
  109. package/dist/config/types.memory.js +1 -0
  110. package/dist/config/version.js +4 -4
  111. package/dist/config/zod-schema.js +0 -6
  112. package/dist/daemon/constants.js +7 -7
  113. package/dist/daemon/inspect.js +6 -6
  114. package/dist/daemon/systemd-unit.js +1 -1
  115. package/dist/discord/monitor/message-handler.process.js +6 -4
  116. package/dist/gateway/client.js +0 -14
  117. package/dist/gateway/live-image-probe.js +1 -66
  118. package/dist/gateway/openai-http.js +2 -2
  119. package/dist/gateway/openresponses-http.js +4 -4
  120. package/dist/gateway/server-discovery.js +2 -2
  121. package/dist/gateway/server-http.js +1 -1
  122. package/dist/gateway/server.impl.js +2 -6
  123. package/dist/hooks/frontmatter.js +1 -1
  124. package/dist/hooks/hooks-status.js +1 -1
  125. package/dist/hooks/install.js +2 -2
  126. package/dist/hooks/loader.js +1 -1
  127. package/dist/hooks/workspace.js +3 -3
  128. package/dist/index.js +2 -2
  129. package/dist/infra/bonjour.js +3 -3
  130. package/dist/infra/path-env.js +3 -3
  131. package/dist/infra/provider-usage.fetch.minimax.js +1 -1
  132. package/dist/infra/restart.js +1 -1
  133. package/dist/infra/tailscale.js +1 -1
  134. package/dist/macos/relay.js +2 -2
  135. package/dist/media/input-files.js +1 -1
  136. package/dist/media/mime.js +4 -0
  137. package/dist/media/png-encode.js +74 -0
  138. package/dist/media-understanding/providers/image.js +2 -2
  139. package/dist/memory/backend-config.js +207 -0
  140. package/dist/memory/embeddings.js +1 -1
  141. package/dist/memory/index.js +0 -5
  142. package/dist/memory/manager.js +3 -25
  143. package/dist/memory/types.js +1 -0
  144. package/dist/node-host/runner.js +2 -2
  145. package/dist/pairing/pairing-messages.js +1 -1
  146. package/dist/plugins/discovery.js +1 -1
  147. package/dist/plugins/install.js +2 -2
  148. package/dist/plugins/update.js +1 -1
  149. package/dist/security/audit.js +2 -2
  150. package/dist/shared/text/reasoning-tags.js +52 -7
  151. package/dist/slack/monitor/message-handler/prepare.js +10 -4
  152. package/dist/slack/monitor/slash.js +10 -4
  153. package/dist/tailscale/detect.js +146 -0
  154. package/dist/telegram/bot-message-context.js +1 -1
  155. package/dist/test-helpers/workspace.js +11 -0
  156. package/dist/test-utils/channel-plugins.js +82 -0
  157. package/dist/test-utils/ports.js +73 -0
  158. package/dist/utils/shell-argv.js +61 -0
  159. package/dist/utils.js +10 -0
  160. package/dist/web/qr-image.js +1 -61
  161. package/dist/wizard/onboarding.finalize.js +7 -7
  162. package/dist/wizard/onboarding.js +3 -3
  163. package/docs/RELEASE_WORKFOTS_COMPARISON.md +3 -3
  164. package/docs/_config.yml +2 -2
  165. package/docs/_layouts/default.html +9 -9
  166. package/docs/concepts/typebox.md +1 -1
  167. package/docs/docs.json +1 -1
  168. package/docs/northflank.mdx +7 -7
  169. package/docs/railway.mdx +3 -3
  170. package/docs/render.mdx +5 -5
  171. package/docs/start/lore.md +2 -2
  172. package/extensions/bluebubbles/index.ts +2 -2
  173. package/extensions/bluebubbles/package.json +1 -1
  174. package/extensions/bluebubbles/src/accounts.ts +8 -8
  175. package/extensions/bluebubbles/src/actions.test.ts +22 -22
  176. package/extensions/bluebubbles/src/actions.ts +5 -5
  177. package/extensions/bluebubbles/src/attachments.ts +2 -2
  178. package/extensions/bluebubbles/src/channel.ts +16 -16
  179. package/extensions/bluebubbles/src/chat.ts +2 -2
  180. package/extensions/bluebubbles/src/media-send.ts +2 -2
  181. package/extensions/bluebubbles/src/monitor.test.ts +46 -46
  182. package/extensions/bluebubbles/src/monitor.ts +5 -5
  183. package/extensions/bluebubbles/src/onboarding.ts +7 -7
  184. package/extensions/bluebubbles/src/reactions.ts +2 -2
  185. package/extensions/bluebubbles/src/send.ts +2 -2
  186. package/extensions/copilot-proxy/README.md +1 -1
  187. package/extensions/copilot-proxy/package.json +1 -1
  188. package/extensions/diagnostics-otel/index.ts +2 -2
  189. package/extensions/diagnostics-otel/package.json +1 -1
  190. package/extensions/diagnostics-otel/src/service.ts +3 -3
  191. package/extensions/discord/index.ts +2 -2
  192. package/extensions/discord/package.json +1 -1
  193. package/extensions/google-antigravity-auth/README.md +1 -1
  194. package/extensions/google-antigravity-auth/index.ts +1 -1
  195. package/extensions/google-antigravity-auth/package.json +1 -1
  196. package/extensions/google-gemini-cli-auth/README.md +1 -1
  197. package/extensions/google-gemini-cli-auth/oauth.ts +1 -1
  198. package/extensions/google-gemini-cli-auth/package.json +1 -1
  199. package/extensions/googlechat/index.ts +3 -3
  200. package/extensions/googlechat/package.json +1 -1
  201. package/extensions/googlechat/src/accounts.ts +8 -8
  202. package/extensions/googlechat/src/actions.ts +6 -6
  203. package/extensions/googlechat/src/channel.ts +21 -21
  204. package/extensions/googlechat/src/monitor.ts +8 -8
  205. package/extensions/googlechat/src/onboarding.ts +10 -10
  206. package/extensions/imessage/index.ts +2 -2
  207. package/extensions/imessage/package.json +1 -1
  208. package/extensions/line/index.ts +2 -2
  209. package/extensions/line/package.json +1 -1
  210. package/extensions/line/src/card-command.ts +2 -2
  211. package/extensions/line/src/channel.logout.test.ts +4 -4
  212. package/extensions/line/src/channel.sendPayload.test.ts +8 -8
  213. package/extensions/line/src/channel.ts +3 -3
  214. package/extensions/llm-task/README.md +3 -3
  215. package/extensions/llm-task/index.ts +2 -2
  216. package/extensions/llm-task/package.json +1 -1
  217. package/extensions/llm-task/src/llm-task-tool.ts +4 -4
  218. package/extensions/lobster/README.md +6 -6
  219. package/extensions/lobster/index.ts +2 -2
  220. package/extensions/lobster/src/lobster-tool.test.ts +4 -4
  221. package/extensions/lobster/src/lobster-tool.ts +2 -2
  222. package/extensions/matrix/index.ts +2 -2
  223. package/extensions/matrix/package.json +1 -1
  224. package/extensions/matrix/src/matrix/client/config.ts +1 -1
  225. package/extensions/matrix/src/matrix/monitor/handler.ts +1 -1
  226. package/extensions/matrix/src/onboarding.ts +1 -1
  227. package/extensions/mattermost/index.ts +2 -2
  228. package/extensions/mattermost/package.json +1 -1
  229. package/extensions/mattermost/src/mattermost/accounts.ts +8 -8
  230. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +5 -5
  231. package/extensions/mattermost/src/mattermost/monitor.ts +2 -2
  232. package/extensions/mattermost/src/onboarding-helpers.ts +3 -3
  233. package/extensions/mattermost/src/onboarding.ts +2 -2
  234. package/extensions/memory-core/index.ts +2 -2
  235. package/extensions/memory-core/package.json +1 -4
  236. package/extensions/memory-lancedb/index.ts +3 -3
  237. package/extensions/memory-lancedb/package.json +1 -1
  238. package/extensions/msteams/index.ts +2 -2
  239. package/extensions/msteams/package.json +1 -1
  240. package/extensions/msteams/src/channel.directory.test.ts +2 -2
  241. package/extensions/msteams/src/channel.ts +2 -2
  242. package/extensions/msteams/src/graph-upload.ts +4 -4
  243. package/extensions/msteams/src/monitor-handler.ts +2 -2
  244. package/extensions/msteams/src/monitor.ts +2 -2
  245. package/extensions/msteams/src/onboarding.ts +9 -9
  246. package/extensions/msteams/src/reply-dispatcher.ts +2 -2
  247. package/extensions/msteams/src/send-context.ts +2 -2
  248. package/extensions/msteams/src/send.ts +4 -4
  249. package/extensions/nextcloud-talk/index.ts +2 -2
  250. package/extensions/nextcloud-talk/package.json +1 -1
  251. package/extensions/nextcloud-talk/src/channel.ts +7 -7
  252. package/extensions/nextcloud-talk/src/inbound.ts +7 -7
  253. package/extensions/nextcloud-talk/src/onboarding.ts +1 -1
  254. package/extensions/nostr/README.md +2 -2
  255. package/extensions/nostr/index.ts +5 -5
  256. package/extensions/nostr/package.json +1 -1
  257. package/extensions/nostr/src/types.ts +4 -4
  258. package/extensions/open-prose/index.ts +2 -2
  259. package/extensions/qwen-portal-auth/README.md +1 -1
  260. package/extensions/signal/index.ts +2 -2
  261. package/extensions/signal/package.json +1 -1
  262. package/extensions/slack/index.ts +2 -2
  263. package/extensions/slack/package.json +1 -1
  264. package/extensions/telegram/index.ts +2 -2
  265. package/extensions/telegram/package.json +1 -1
  266. package/extensions/telegram/src/channel.ts +2 -2
  267. package/extensions/tlon/README.md +2 -2
  268. package/extensions/tlon/index.ts +2 -2
  269. package/extensions/tlon/package.json +1 -1
  270. package/extensions/tlon/src/channel.ts +13 -13
  271. package/extensions/tlon/src/monitor/index.ts +3 -3
  272. package/extensions/tlon/src/onboarding.ts +3 -3
  273. package/extensions/tlon/src/types.ts +3 -3
  274. package/extensions/twitch/README.md +1 -1
  275. package/extensions/twitch/index.ts +2 -2
  276. package/extensions/twitch/package.json +1 -1
  277. package/extensions/twitch/src/config.ts +3 -3
  278. package/extensions/twitch/src/monitor.ts +3 -3
  279. package/extensions/twitch/src/onboarding.ts +9 -9
  280. package/extensions/twitch/src/outbound.test.ts +2 -2
  281. package/extensions/twitch/src/plugin.test.ts +2 -2
  282. package/extensions/twitch/src/plugin.ts +8 -8
  283. package/extensions/twitch/src/send.test.ts +2 -2
  284. package/extensions/twitch/src/send.ts +4 -4
  285. package/extensions/twitch/src/token.test.ts +8 -8
  286. package/extensions/twitch/src/token.ts +3 -3
  287. package/extensions/twitch/src/twitch-client.ts +3 -3
  288. package/extensions/twitch/src/types.ts +3 -3
  289. package/extensions/twitch/src/utils/markdown.ts +1 -1
  290. package/extensions/voice-call/README.md +3 -3
  291. package/extensions/voice-call/package.json +1 -1
  292. package/extensions/voice-call/src/core-bridge.ts +2 -2
  293. package/extensions/voice-call/src/response-generator.ts +1 -1
  294. package/extensions/whatsapp/index.ts +2 -2
  295. package/extensions/whatsapp/package.json +1 -1
  296. package/extensions/zalo/README.md +1 -1
  297. package/extensions/zalo/index.ts +2 -2
  298. package/extensions/zalo/package.json +1 -1
  299. package/extensions/zalo/src/accounts.ts +8 -8
  300. package/extensions/zalo/src/actions.ts +4 -4
  301. package/extensions/zalo/src/channel.directory.test.ts +2 -2
  302. package/extensions/zalo/src/channel.ts +18 -18
  303. package/extensions/zalo/src/monitor.ts +9 -9
  304. package/extensions/zalo/src/monitor.webhook.test.ts +2 -2
  305. package/extensions/zalo/src/onboarding.ts +24 -24
  306. package/extensions/zalo/src/send.ts +2 -2
  307. package/extensions/zalouser/README.md +2 -2
  308. package/extensions/zalouser/index.ts +2 -2
  309. package/extensions/zalouser/package.json +1 -1
  310. package/extensions/zalouser/src/accounts.ts +9 -9
  311. package/extensions/zalouser/src/channel.ts +24 -24
  312. package/extensions/zalouser/src/monitor.ts +4 -4
  313. package/extensions/zalouser/src/onboarding.ts +28 -28
  314. package/package.json +13 -250
  315. package/skills/nano-banana-pro/scripts/generate_image.py +1 -1
  316. package/skills/tmux/scripts/find-sessions.sh +1 -1
  317. package/CHANGELOG.md +0 -200
  318. package/README-header.png +0 -0
  319. package/git-hooks/pre-commit +0 -4
  320. package/scripts/format-staged.js +0 -148
  321. package/scripts/postinstall.js +0 -300
  322. package/scripts/setup-git-hooks.js +0 -96
  323. package/skills/webgpu-threejs-tsl/REFERENCE.md +0 -283
  324. package/skills/webgpu-threejs-tsl/SKILL.md +0 -91
  325. package/skills/webgpu-threejs-tsl/docs/compute-shaders.md +0 -404
  326. package/skills/webgpu-threejs-tsl/docs/core-concepts.md +0 -453
  327. package/skills/webgpu-threejs-tsl/docs/materials.md +0 -353
  328. package/skills/webgpu-threejs-tsl/docs/post-processing.md +0 -434
  329. package/skills/webgpu-threejs-tsl/docs/wgsl-integration.md +0 -324
  330. package/skills/webgpu-threejs-tsl/examples/basic-setup.js +0 -87
  331. package/skills/webgpu-threejs-tsl/examples/custom-material.js +0 -170
  332. package/skills/webgpu-threejs-tsl/examples/earth-shader.js +0 -292
  333. package/skills/webgpu-threejs-tsl/examples/particle-system.js +0 -259
  334. package/skills/webgpu-threejs-tsl/examples/post-processing.js +0 -199
  335. package/skills/webgpu-threejs-tsl/templates/compute-shader.js +0 -305
  336. package/skills/webgpu-threejs-tsl/templates/webgpu-project.js +0 -276
@@ -1,453 +0,0 @@
1
- # TSL Core Concepts
2
-
3
- ## Types and Constructors
4
-
5
- ### Scalar Types
6
- ```javascript
7
- import { float, int, uint, bool } from 'three/tsl';
8
-
9
- const f = float(1.0);
10
- const i = int(42);
11
- const u = uint(100);
12
- const b = bool(true);
13
- ```
14
-
15
- ### Vector Types
16
- ```javascript
17
- import { vec2, vec3, vec4, color } from 'three/tsl';
18
-
19
- const v2 = vec2(1.0, 2.0);
20
- const v3 = vec3(1.0, 2.0, 3.0);
21
- const v4 = vec4(1.0, 2.0, 3.0, 1.0);
22
-
23
- // Color (RGB, accepts hex or components)
24
- const c = color(0xff0000); // Red
25
- const c2 = color(1, 0.5, 0); // Orange
26
- ```
27
-
28
- ### Matrix Types
29
- ```javascript
30
- import { mat2, mat3, mat4 } from 'three/tsl';
31
-
32
- const m3 = mat3();
33
- const m4 = mat4();
34
- ```
35
-
36
- ### Type Conversion
37
- ```javascript
38
- const v = vec3(1, 2, 3);
39
- const v4 = v.toVec4(1.0); // vec4(1, 2, 3, 1)
40
- const f = int(42).toFloat(); // 42.0
41
- const c = v.toColor(); // Convert to color
42
- ```
43
-
44
- ## Vector Swizzling
45
-
46
- Access and reorder vector components using standard notation:
47
-
48
- ```javascript
49
- const v = vec3(1.0, 2.0, 3.0);
50
-
51
- // Single component access
52
- v.x // 1.0
53
- v.y // 2.0
54
- v.z // 3.0
55
-
56
- // Multiple components
57
- v.xy // vec2(1.0, 2.0)
58
- v.xyz // vec3(1.0, 2.0, 3.0)
59
-
60
- // Reorder components
61
- v.zyx // vec3(3.0, 2.0, 1.0)
62
- v.xxy // vec3(1.0, 1.0, 2.0)
63
- v.rrr // vec3(1.0, 1.0, 1.0) - same as xxx
64
-
65
- // Alternative accessors (all equivalent)
66
- v.xyz // position
67
- v.rgb // color
68
- v.stp // texture coordinates
69
- ```
70
-
71
- ## Uniforms
72
-
73
- Uniforms pass values from JavaScript to shaders:
74
-
75
- ```javascript
76
- import { uniform } from 'three/tsl';
77
- import * as THREE from 'three/webgpu';
78
-
79
- // Create uniforms
80
- const myColor = uniform(new THREE.Color(0x0066ff));
81
- const myFloat = uniform(0.5);
82
- const myVec3 = uniform(new THREE.Vector3(1, 2, 3));
83
-
84
- // Update at runtime
85
- myColor.value.set(0xff0000);
86
- myFloat.value = 0.8;
87
- myVec3.value.set(4, 5, 6);
88
-
89
- // Use in material
90
- material.colorNode = myColor;
91
- ```
92
-
93
- ### Auto-Updating Uniforms
94
-
95
- ```javascript
96
- // Update every frame
97
- const animatedValue = uniform(0).onFrameUpdate((frame) => {
98
- return Math.sin(frame.time);
99
- });
100
-
101
- // Update per object render
102
- const perObjectValue = uniform(0).onObjectUpdate((object) => {
103
- return object.userData.customValue;
104
- });
105
-
106
- // Update once per render cycle
107
- const renderValue = uniform(0).onRenderUpdate((state) => {
108
- return state.delta;
109
- });
110
- ```
111
-
112
- ## Operators
113
-
114
- ### Arithmetic
115
- ```javascript
116
- // Method chaining (preferred)
117
- const result = a.add(b).mul(c).sub(d).div(e);
118
-
119
- // Individual operations
120
- a.add(b) // a + b
121
- a.sub(b) // a - b
122
- a.mul(b) // a * b
123
- a.div(b) // a / b
124
- a.mod(b) // a % b
125
- a.negate() // -a
126
- ```
127
-
128
- ### Comparison
129
- ```javascript
130
- a.equal(b) // a == b
131
- a.notEqual(b) // a != b
132
- a.lessThan(b) // a < b
133
- a.greaterThan(b) // a > b
134
- a.lessThanEqual(b) // a <= b
135
- a.greaterThanEqual(b) // a >= b
136
- ```
137
-
138
- ### Logical
139
- ```javascript
140
- a.and(b) // a && b
141
- a.or(b) // a || b
142
- a.not() // !a
143
- a.xor(b) // a ^ b
144
- ```
145
-
146
- ### Bitwise
147
- ```javascript
148
- a.bitAnd(b) // a & b
149
- a.bitOr(b) // a | b
150
- a.bitXor(b) // a ^ b
151
- a.bitNot() // ~a
152
- a.shiftLeft(n) // a << n
153
- a.shiftRight(n) // a >> n
154
- ```
155
-
156
- ### Assignment (for variables)
157
- ```javascript
158
- const v = vec3(0).toVar(); // Create mutable variable
159
-
160
- v.assign(vec3(1, 2, 3)); // v = vec3(1, 2, 3)
161
- v.addAssign(vec3(1)); // v += vec3(1)
162
- v.subAssign(vec3(1)); // v -= vec3(1)
163
- v.mulAssign(2.0); // v *= 2.0
164
- v.divAssign(2.0); // v /= 2.0
165
- ```
166
-
167
- ## Variables
168
-
169
- ### Mutable Variables
170
- ```javascript
171
- // Create mutable variable with toVar()
172
- const myVar = vec3(1, 0, 0).toVar();
173
- myVar.assign(vec3(0, 1, 0));
174
- myVar.addAssign(vec3(0, 0, 1));
175
-
176
- // Name the variable (useful for debugging)
177
- const named = vec3(0).toVar('myPosition');
178
- ```
179
-
180
- ### Constants
181
- ```javascript
182
- // Create compile-time constant
183
- const PI_HALF = float(Math.PI / 2).toConst();
184
- ```
185
-
186
- ### Properties (named values for shader stages)
187
- ```javascript
188
- import { property } from 'three/tsl';
189
-
190
- // Create named property
191
- const myProp = property('vec3', 'customColor');
192
- myProp.assign(vec3(1, 0, 0));
193
- ```
194
-
195
- ## Control Flow
196
-
197
- ### Conditionals
198
-
199
- ```javascript
200
- import { If, select } from 'three/tsl';
201
-
202
- // If-ElseIf-Else
203
- const result = vec3(0).toVar();
204
-
205
- If(value.greaterThan(0.5), () => {
206
- result.assign(vec3(1, 0, 0)); // Red
207
- }).ElseIf(value.greaterThan(0.25), () => {
208
- result.assign(vec3(0, 1, 0)); // Green
209
- }).Else(() => {
210
- result.assign(vec3(0, 0, 1)); // Blue
211
- });
212
-
213
- // Ternary operator (select)
214
- const color = select(
215
- condition, // if true
216
- vec3(1, 0, 0), // return this
217
- vec3(0, 0, 1) // else return this
218
- );
219
- ```
220
-
221
- ### Switch-Case
222
-
223
- ```javascript
224
- import { Switch } from 'three/tsl';
225
-
226
- const col = vec3(0).toVar();
227
-
228
- Switch(intValue)
229
- .Case(0, () => { col.assign(color(1, 0, 0)); })
230
- .Case(1, () => { col.assign(color(0, 1, 0)); })
231
- .Case(2, () => { col.assign(color(0, 0, 1)); })
232
- .Default(() => { col.assign(color(1, 1, 1)); });
233
- ```
234
-
235
- ### Loops
236
-
237
- ```javascript
238
- import { Loop, Break, Continue } from 'three/tsl';
239
-
240
- // Simple loop (0 to 9)
241
- const sum = float(0).toVar();
242
- Loop(10, ({ i }) => {
243
- sum.addAssign(float(i));
244
- });
245
-
246
- // Ranged loop with options
247
- Loop({ start: int(0), end: int(count), type: 'int' }, ({ i }) => {
248
- // Loop body
249
- });
250
-
251
- // Nested loops
252
- Loop(width, height, ({ i, j }) => {
253
- // i = outer loop index
254
- // j = inner loop index
255
- });
256
-
257
- // Loop control
258
- Loop(100, ({ i }) => {
259
- If(shouldStop, () => {
260
- Break(); // Exit loop
261
- });
262
- If(shouldSkip, () => {
263
- Continue(); // Skip to next iteration
264
- });
265
- });
266
- ```
267
-
268
- ### Flow Control
269
-
270
- ```javascript
271
- import { Discard, Return } from 'three/tsl';
272
-
273
- // Discard fragment (make transparent)
274
- If(alpha.lessThan(0.5), () => {
275
- Discard();
276
- });
277
-
278
- // Return from function
279
- const myFn = Fn(() => {
280
- If(condition, () => {
281
- Return(vec3(1, 0, 0));
282
- });
283
- return vec3(0, 0, 1);
284
- });
285
- ```
286
-
287
- ## Custom Functions with Fn()
288
-
289
- ### Basic Function
290
- ```javascript
291
- import { Fn } from 'three/tsl';
292
-
293
- const addVectors = Fn(([a, b]) => {
294
- return a.add(b);
295
- });
296
-
297
- // Usage
298
- const result = addVectors(vec3(1, 0, 0), vec3(0, 1, 0));
299
- ```
300
-
301
- ### Default Parameters
302
- ```javascript
303
- const oscillate = Fn(([frequency = 1.0, amplitude = 1.0]) => {
304
- return time.mul(frequency).sin().mul(amplitude);
305
- });
306
-
307
- // Call variations
308
- oscillate(); // Uses defaults
309
- oscillate(2.0); // frequency = 2.0
310
- oscillate(2.0, 0.5); // frequency = 2.0, amplitude = 0.5
311
- ```
312
-
313
- ### Named Parameters (Object Style)
314
- ```javascript
315
- const createGradient = Fn(({ colorA = vec3(0), colorB = vec3(1), t = 0.5 }) => {
316
- return mix(colorA, colorB, t);
317
- });
318
-
319
- // Call with named parameters
320
- createGradient({ colorA: vec3(1, 0, 0), t: uv().x });
321
- ```
322
-
323
- ### Function with Context
324
- ```javascript
325
- // Access shader context
326
- const customShader = Fn(({ material, geometry, object }) => {
327
- if (material.userData.customColor) {
328
- return uniform(material.userData.customColor);
329
- }
330
- return vec3(1);
331
- });
332
- ```
333
-
334
- ## Time and Animation
335
-
336
- ```javascript
337
- import { time, deltaTime } from 'three/tsl';
338
-
339
- // time - seconds since start
340
- const rotation = time.mul(0.5); // Half rotation per second
341
-
342
- // deltaTime - time since last frame
343
- const velocity = speed.mul(deltaTime);
344
- ```
345
-
346
- ### Oscillators
347
-
348
- ```javascript
349
- import { oscSine, oscSquare, oscTriangle, oscSawtooth } from 'three/tsl';
350
-
351
- // All oscillators return 0-1 range
352
- oscSine(time) // Smooth sine wave
353
- oscSquare(time) // Square wave (0 or 1)
354
- oscTriangle(time) // Triangle wave
355
- oscSawtooth(time) // Sawtooth wave
356
-
357
- // Custom frequency
358
- oscSine(time.mul(2.0)) // 2Hz oscillation
359
- ```
360
-
361
- ## Math Functions
362
-
363
- ### Basic Math
364
- ```javascript
365
- import { abs, sign, floor, ceil, fract, mod, min, max, clamp } from 'three/tsl';
366
-
367
- abs(x) // Absolute value
368
- sign(x) // -1, 0, or 1
369
- floor(x) // Round down
370
- ceil(x) // Round up
371
- fract(x) // Fractional part (x - floor(x))
372
- mod(x, y) // Modulo
373
- min(x, y) // Minimum
374
- max(x, y) // Maximum
375
- clamp(x, 0, 1) // Clamp to range
376
- ```
377
-
378
- ### Trigonometry
379
- ```javascript
380
- import { sin, cos, tan, asin, acos, atan, atan2 } from 'three/tsl';
381
-
382
- sin(x)
383
- cos(x)
384
- tan(x)
385
- asin(x)
386
- acos(x)
387
- atan(x)
388
- atan2(y, x)
389
- ```
390
-
391
- ### Exponential
392
- ```javascript
393
- import { pow, exp, log, sqrt, inverseSqrt } from 'three/tsl';
394
-
395
- pow(x, 2.0) // x^2
396
- exp(x) // e^x
397
- log(x) // Natural log
398
- sqrt(x) // Square root
399
- inverseSqrt(x) // 1 / sqrt(x)
400
- ```
401
-
402
- ### Interpolation
403
- ```javascript
404
- import { mix, step, smoothstep } from 'three/tsl';
405
-
406
- mix(a, b, 0.5) // Linear interpolation
407
- step(0.5, x) // 0 if x < 0.5, else 1
408
- smoothstep(0.0, 1.0, x) // Smooth 0-1 transition
409
- ```
410
-
411
- ### Vector Math
412
- ```javascript
413
- import { length, distance, dot, cross, normalize, reflect, refract } from 'three/tsl';
414
-
415
- length(v) // Vector length
416
- distance(a, b) // Distance between points
417
- dot(a, b) // Dot product
418
- cross(a, b) // Cross product (vec3 only)
419
- normalize(v) // Unit vector
420
- reflect(incident, normal)
421
- refract(incident, normal, eta)
422
- ```
423
-
424
- ### Constants
425
- ```javascript
426
- import { PI, TWO_PI, HALF_PI, EPSILON } from 'three/tsl';
427
-
428
- PI // 3.14159...
429
- TWO_PI // 6.28318...
430
- HALF_PI // 1.57079...
431
- EPSILON // Very small number
432
- ```
433
-
434
- ## Utility Functions
435
-
436
- ```javascript
437
- import { hash, checker, remap, range, rotate } from 'three/tsl';
438
-
439
- // Pseudo-random hash
440
- hash(seed) // Returns 0-1
441
-
442
- // Checkerboard pattern
443
- checker(uv()) // Returns 0 or 1
444
-
445
- // Remap value from one range to another
446
- remap(x, 0, 1, -1, 1) // Map 0-1 to -1 to 1
447
-
448
- // Generate value in range
449
- range(min, max) // Random in range (per instance)
450
-
451
- // Rotate 2D vector
452
- rotate(vec2(1, 0), angle)
453
- ```