aigpu 0.3.1

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 (491) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +85 -0
  3. package/bin/aigpu.js +15 -0
  4. package/client.d.ts +15 -0
  5. package/dist/agent-tools.d.ts +61 -0
  6. package/dist/agent-tools.d.ts.map +1 -0
  7. package/dist/agent-tools.js +107 -0
  8. package/dist/agent-tools.js.map +1 -0
  9. package/dist/agent.d.ts +56 -0
  10. package/dist/agent.d.ts.map +1 -0
  11. package/dist/agent.js +243 -0
  12. package/dist/agent.js.map +1 -0
  13. package/dist/api-types.d.ts +56 -0
  14. package/dist/api-types.d.ts.map +1 -0
  15. package/dist/api-types.js +2 -0
  16. package/dist/api-types.js.map +1 -0
  17. package/dist/bind-cache.d.ts +19 -0
  18. package/dist/bind-cache.d.ts.map +1 -0
  19. package/dist/bind-cache.js +43 -0
  20. package/dist/bind-cache.js.map +1 -0
  21. package/dist/bundle.d.ts +30 -0
  22. package/dist/bundle.d.ts.map +1 -0
  23. package/dist/bundle.js +127 -0
  24. package/dist/bundle.js.map +1 -0
  25. package/dist/claim-validation-encode.d.ts +14 -0
  26. package/dist/claim-validation-encode.d.ts.map +1 -0
  27. package/dist/claim-validation-encode.js +28 -0
  28. package/dist/claim-validation-encode.js.map +1 -0
  29. package/dist/claim-validation.d.ts +73 -0
  30. package/dist/claim-validation.d.ts.map +1 -0
  31. package/dist/claim-validation.js +135 -0
  32. package/dist/claim-validation.js.map +1 -0
  33. package/dist/cli/bin/aigpu.js +101 -0
  34. package/dist/cli/lib/check/run.js +153 -0
  35. package/dist/cli/lib/docs/commands/cat.js +12 -0
  36. package/dist/cli/lib/docs/commands/find.js +180 -0
  37. package/dist/cli/lib/docs/commands/grep.js +49 -0
  38. package/dist/cli/lib/docs/commands/ls.js +41 -0
  39. package/dist/cli/lib/docs/commands/path.js +12 -0
  40. package/dist/cli/lib/docs/commands/resolve.js +41 -0
  41. package/dist/cli/lib/docs/commands/shared.js +13 -0
  42. package/dist/cli/lib/docs/commands/symbols.js +25 -0
  43. package/dist/cli/lib/docs/errors.js +8 -0
  44. package/dist/cli/lib/docs/generate/check-drift.js +61 -0
  45. package/dist/cli/lib/docs/generate/cli.js +12 -0
  46. package/dist/cli/lib/docs/generate/generate.js +113 -0
  47. package/dist/cli/lib/docs/generate/manifest.js +218 -0
  48. package/dist/cli/lib/docs/generate/skill.js +150 -0
  49. package/dist/cli/lib/docs/help.js +21 -0
  50. package/dist/cli/lib/docs/index.js +62 -0
  51. package/dist/cli/lib/docs/model.js +7 -0
  52. package/dist/cli/lib/docs/run.js +24 -0
  53. package/dist/cli/lib/docs/service.js +119 -0
  54. package/dist/cli/lib/doctor/run.js +236 -0
  55. package/dist/cli/lib/examples/errors.js +13 -0
  56. package/dist/cli/lib/examples/hashing.js +9 -0
  57. package/dist/cli/lib/examples/help.js +13 -0
  58. package/dist/cli/lib/examples/local-source.js +142 -0
  59. package/dist/cli/lib/examples/paths.js +12 -0
  60. package/dist/cli/lib/examples/pull.js +58 -0
  61. package/dist/cli/lib/examples/run.js +71 -0
  62. package/dist/cli/lib/examples/search.js +6 -0
  63. package/dist/cli/lib/examples/service.js +118 -0
  64. package/dist/cli/lib/generated/docs-manifest.generated.js +4758 -0
  65. package/dist/cli/lib/install-dawn/run.js +24 -0
  66. package/dist/cli/lib/install-software-renderer/run.js +17 -0
  67. package/dist/cli/lib/mcp/http.js +93 -0
  68. package/dist/cli/lib/mcp/server.js +258 -0
  69. package/dist/cli/lib/mcp/stdio.js +34 -0
  70. package/dist/cli/lib/snapshot/png.js +62 -0
  71. package/dist/cli/lib/snapshot/render.js +22 -0
  72. package/dist/cli/lib/snapshot/run.js +79 -0
  73. package/dist/cli/lib/snapshot/shaders.js +11 -0
  74. package/dist/cli/package.json +4 -0
  75. package/dist/client.d.ts +12 -0
  76. package/dist/client.d.ts.map +1 -0
  77. package/dist/client.js +2 -0
  78. package/dist/client.js.map +1 -0
  79. package/dist/clock.d.ts +26 -0
  80. package/dist/clock.d.ts.map +1 -0
  81. package/dist/clock.js +50 -0
  82. package/dist/clock.js.map +1 -0
  83. package/dist/compute.d.ts +41 -0
  84. package/dist/compute.d.ts.map +1 -0
  85. package/dist/compute.js +132 -0
  86. package/dist/compute.js.map +1 -0
  87. package/dist/core/render-bundle.d.ts +30 -0
  88. package/dist/core/render-bundle.d.ts.map +1 -0
  89. package/dist/core/render-bundle.js +39 -0
  90. package/dist/core/render-bundle.js.map +1 -0
  91. package/dist/core/storage-buffer.d.ts +81 -0
  92. package/dist/core/storage-buffer.d.ts.map +1 -0
  93. package/dist/core/storage-buffer.js +91 -0
  94. package/dist/core/storage-buffer.js.map +1 -0
  95. package/dist/core/structured-uniform.d.ts +33 -0
  96. package/dist/core/structured-uniform.d.ts.map +1 -0
  97. package/dist/core/structured-uniform.js +110 -0
  98. package/dist/core/structured-uniform.js.map +1 -0
  99. package/dist/core/uniform-pool-internals.d.ts +12 -0
  100. package/dist/core/uniform-pool-internals.d.ts.map +1 -0
  101. package/dist/core/uniform-pool-internals.js +24 -0
  102. package/dist/core/uniform-pool-internals.js.map +1 -0
  103. package/dist/core/uniform-pool-types.d.ts +22 -0
  104. package/dist/core/uniform-pool-types.d.ts.map +1 -0
  105. package/dist/core/uniform-pool-types.js +2 -0
  106. package/dist/core/uniform-pool-types.js.map +1 -0
  107. package/dist/core/uniform-pool.d.ts +22 -0
  108. package/dist/core/uniform-pool.d.ts.map +1 -0
  109. package/dist/core/uniform-pool.js +128 -0
  110. package/dist/core/uniform-pool.js.map +1 -0
  111. package/dist/core/uniform.d.ts +55 -0
  112. package/dist/core/uniform.d.ts.map +1 -0
  113. package/dist/core/uniform.js +64 -0
  114. package/dist/core/uniform.js.map +1 -0
  115. package/dist/core/wgsl-alignment.d.ts +24 -0
  116. package/dist/core/wgsl-alignment.d.ts.map +1 -0
  117. package/dist/core/wgsl-alignment.js +81 -0
  118. package/dist/core/wgsl-alignment.js.map +1 -0
  119. package/dist/core.d.ts +13 -0
  120. package/dist/core.d.ts.map +1 -0
  121. package/dist/core.js +7 -0
  122. package/dist/core.js.map +1 -0
  123. package/dist/dom.d.ts +37 -0
  124. package/dist/dom.d.ts.map +1 -0
  125. package/dist/dom.js +81 -0
  126. package/dist/dom.js.map +1 -0
  127. package/dist/draw-protocols.d.ts +36 -0
  128. package/dist/draw-protocols.d.ts.map +1 -0
  129. package/dist/draw-protocols.js +10 -0
  130. package/dist/draw-protocols.js.map +1 -0
  131. package/dist/draw.d.ts +248 -0
  132. package/dist/draw.d.ts.map +1 -0
  133. package/dist/draw.js +890 -0
  134. package/dist/draw.js.map +1 -0
  135. package/dist/effect.d.ts +53 -0
  136. package/dist/effect.d.ts.map +1 -0
  137. package/dist/effect.js +75 -0
  138. package/dist/effect.js.map +1 -0
  139. package/dist/entry-metadata.d.ts +16 -0
  140. package/dist/entry-metadata.d.ts.map +1 -0
  141. package/dist/entry-metadata.js +27 -0
  142. package/dist/entry-metadata.js.map +1 -0
  143. package/dist/errors.d.ts +96 -0
  144. package/dist/errors.d.ts.map +1 -0
  145. package/dist/errors.js +616 -0
  146. package/dist/errors.js.map +1 -0
  147. package/dist/frame-protocols.d.ts +107 -0
  148. package/dist/frame-protocols.d.ts.map +1 -0
  149. package/dist/frame-protocols.js +20 -0
  150. package/dist/frame-protocols.js.map +1 -0
  151. package/dist/frame-state.d.ts +32 -0
  152. package/dist/frame-state.d.ts.map +1 -0
  153. package/dist/frame-state.js +62 -0
  154. package/dist/frame-state.js.map +1 -0
  155. package/dist/frame.d.ts +127 -0
  156. package/dist/frame.d.ts.map +1 -0
  157. package/dist/frame.js +645 -0
  158. package/dist/frame.js.map +1 -0
  159. package/dist/group-claim.d.ts +9 -0
  160. package/dist/group-claim.d.ts.map +1 -0
  161. package/dist/group-claim.js +7 -0
  162. package/dist/group-claim.js.map +1 -0
  163. package/dist/index.d.ts +41 -0
  164. package/dist/index.d.ts.map +1 -0
  165. package/dist/index.js +27 -0
  166. package/dist/index.js.map +1 -0
  167. package/dist/indirect.d.ts +39 -0
  168. package/dist/indirect.d.ts.map +1 -0
  169. package/dist/indirect.js +61 -0
  170. package/dist/indirect.js.map +1 -0
  171. package/dist/init-from-device.d.ts +11 -0
  172. package/dist/init-from-device.d.ts.map +1 -0
  173. package/dist/init-from-device.js +56 -0
  174. package/dist/init-from-device.js.map +1 -0
  175. package/dist/init.d.ts +12 -0
  176. package/dist/init.d.ts.map +1 -0
  177. package/dist/init.js +7 -0
  178. package/dist/init.js.map +1 -0
  179. package/dist/kernel.d.ts +104 -0
  180. package/dist/kernel.d.ts.map +1 -0
  181. package/dist/kernel.js +151 -0
  182. package/dist/kernel.js.map +1 -0
  183. package/dist/lifecycle.d.ts +10 -0
  184. package/dist/lifecycle.d.ts.map +1 -0
  185. package/dist/lifecycle.js +21 -0
  186. package/dist/lifecycle.js.map +1 -0
  187. package/dist/live-kernel.d.ts +48 -0
  188. package/dist/live-kernel.d.ts.map +1 -0
  189. package/dist/live-kernel.js +67 -0
  190. package/dist/live-kernel.js.map +1 -0
  191. package/dist/mock.d.ts +42 -0
  192. package/dist/mock.d.ts.map +1 -0
  193. package/dist/mock.js +29 -0
  194. package/dist/mock.js.map +1 -0
  195. package/dist/node.d.ts +48 -0
  196. package/dist/node.d.ts.map +1 -0
  197. package/dist/node.js +36 -0
  198. package/dist/node.js.map +1 -0
  199. package/dist/ping-pong.d.ts +19 -0
  200. package/dist/ping-pong.d.ts.map +1 -0
  201. package/dist/ping-pong.js +67 -0
  202. package/dist/ping-pong.js.map +1 -0
  203. package/dist/pipeline-store.d.ts +89 -0
  204. package/dist/pipeline-store.d.ts.map +1 -0
  205. package/dist/pipeline-store.js +366 -0
  206. package/dist/pipeline-store.js.map +1 -0
  207. package/dist/query-ring.d.ts +91 -0
  208. package/dist/query-ring.d.ts.map +1 -0
  209. package/dist/query-ring.js +178 -0
  210. package/dist/query-ring.js.map +1 -0
  211. package/dist/render-service.d.ts +23 -0
  212. package/dist/render-service.d.ts.map +1 -0
  213. package/dist/render-service.js +37 -0
  214. package/dist/render-service.js.map +1 -0
  215. package/dist/sampler.d.ts +19 -0
  216. package/dist/sampler.d.ts.map +1 -0
  217. package/dist/sampler.js +46 -0
  218. package/dist/sampler.js.map +1 -0
  219. package/dist/scene/camera.d.ts +91 -0
  220. package/dist/scene/camera.d.ts.map +1 -0
  221. package/dist/scene/camera.js +221 -0
  222. package/dist/scene/camera.js.map +1 -0
  223. package/dist/scene/geometries.d.ts +26 -0
  224. package/dist/scene/geometries.d.ts.map +1 -0
  225. package/dist/scene/geometries.js +26 -0
  226. package/dist/scene/geometries.js.map +1 -0
  227. package/dist/scene/geometry-descriptor.d.ts +120 -0
  228. package/dist/scene/geometry-descriptor.d.ts.map +1 -0
  229. package/dist/scene/geometry-descriptor.js +378 -0
  230. package/dist/scene/geometry-descriptor.js.map +1 -0
  231. package/dist/scene/geometry-recipe.d.ts +41 -0
  232. package/dist/scene/geometry-recipe.d.ts.map +1 -0
  233. package/dist/scene/geometry-recipe.js +40 -0
  234. package/dist/scene/geometry-recipe.js.map +1 -0
  235. package/dist/scene/geometry-src/camera-math.d.ts +6 -0
  236. package/dist/scene/geometry-src/camera-math.d.ts.map +1 -0
  237. package/dist/scene/geometry-src/camera-math.js +47 -0
  238. package/dist/scene/geometry-src/camera-math.js.map +1 -0
  239. package/dist/scene/geometry-src/camera.d.ts +10 -0
  240. package/dist/scene/geometry-src/camera.d.ts.map +1 -0
  241. package/dist/scene/geometry-src/camera.js +2 -0
  242. package/dist/scene/geometry-src/camera.js.map +1 -0
  243. package/dist/scene/geometry-src/capsule-data.d.ts +10 -0
  244. package/dist/scene/geometry-src/capsule-data.d.ts.map +1 -0
  245. package/dist/scene/geometry-src/capsule-data.js +61 -0
  246. package/dist/scene/geometry-src/capsule-data.js.map +1 -0
  247. package/dist/scene/geometry-src/cone-data.d.ts +13 -0
  248. package/dist/scene/geometry-src/cone-data.d.ts.map +1 -0
  249. package/dist/scene/geometry-src/cone-data.js +52 -0
  250. package/dist/scene/geometry-src/cone-data.js.map +1 -0
  251. package/dist/scene/geometry-src/cylinder-data.d.ts +14 -0
  252. package/dist/scene/geometry-src/cylinder-data.d.ts.map +1 -0
  253. package/dist/scene/geometry-src/cylinder-data.js +58 -0
  254. package/dist/scene/geometry-src/cylinder-data.js.map +1 -0
  255. package/dist/scene/geometry-src/deg-to-rad.d.ts +2 -0
  256. package/dist/scene/geometry-src/deg-to-rad.d.ts.map +1 -0
  257. package/dist/scene/geometry-src/deg-to-rad.js +4 -0
  258. package/dist/scene/geometry-src/deg-to-rad.js.map +1 -0
  259. package/dist/scene/geometry-src/disk-data.d.ts +12 -0
  260. package/dist/scene/geometry-src/disk-data.d.ts.map +1 -0
  261. package/dist/scene/geometry-src/disk-data.js +21 -0
  262. package/dist/scene/geometry-src/disk-data.js.map +1 -0
  263. package/dist/scene/geometry-src/errors.d.ts +3 -0
  264. package/dist/scene/geometry-src/errors.d.ts.map +1 -0
  265. package/dist/scene/geometry-src/errors.js +5 -0
  266. package/dist/scene/geometry-src/errors.js.map +1 -0
  267. package/dist/scene/geometry-src/icosphere-data.d.ts +8 -0
  268. package/dist/scene/geometry-src/icosphere-data.d.ts.map +1 -0
  269. package/dist/scene/geometry-src/icosphere-data.js +58 -0
  270. package/dist/scene/geometry-src/icosphere-data.js.map +1 -0
  271. package/dist/scene/geometry-src/index.d.ts +36 -0
  272. package/dist/scene/geometry-src/index.d.ts.map +1 -0
  273. package/dist/scene/geometry-src/index.js +21 -0
  274. package/dist/scene/geometry-src/index.js.map +1 -0
  275. package/dist/scene/geometry-src/mesh-box.d.ts +8 -0
  276. package/dist/scene/geometry-src/mesh-box.d.ts.map +1 -0
  277. package/dist/scene/geometry-src/mesh-box.js +57 -0
  278. package/dist/scene/geometry-src/mesh-box.js.map +1 -0
  279. package/dist/scene/geometry-src/mesh-cache.d.ts +4 -0
  280. package/dist/scene/geometry-src/mesh-cache.d.ts.map +1 -0
  281. package/dist/scene/geometry-src/mesh-cache.js +14 -0
  282. package/dist/scene/geometry-src/mesh-cache.js.map +1 -0
  283. package/dist/scene/geometry-src/mesh-capsule.d.ts +14 -0
  284. package/dist/scene/geometry-src/mesh-capsule.d.ts.map +1 -0
  285. package/dist/scene/geometry-src/mesh-capsule.js +52 -0
  286. package/dist/scene/geometry-src/mesh-capsule.js.map +1 -0
  287. package/dist/scene/geometry-src/mesh-cone.d.ts +16 -0
  288. package/dist/scene/geometry-src/mesh-cone.d.ts.map +1 -0
  289. package/dist/scene/geometry-src/mesh-cone.js +54 -0
  290. package/dist/scene/geometry-src/mesh-cone.js.map +1 -0
  291. package/dist/scene/geometry-src/mesh-cylinder.d.ts +18 -0
  292. package/dist/scene/geometry-src/mesh-cylinder.d.ts.map +1 -0
  293. package/dist/scene/geometry-src/mesh-cylinder.js +67 -0
  294. package/dist/scene/geometry-src/mesh-cylinder.js.map +1 -0
  295. package/dist/scene/geometry-src/mesh-disk.d.ts +11 -0
  296. package/dist/scene/geometry-src/mesh-disk.d.ts.map +1 -0
  297. package/dist/scene/geometry-src/mesh-disk.js +45 -0
  298. package/dist/scene/geometry-src/mesh-disk.js.map +1 -0
  299. package/dist/scene/geometry-src/mesh-dodecahedron.d.ts +4 -0
  300. package/dist/scene/geometry-src/mesh-dodecahedron.d.ts.map +1 -0
  301. package/dist/scene/geometry-src/mesh-dodecahedron.js +10 -0
  302. package/dist/scene/geometry-src/mesh-dodecahedron.js.map +1 -0
  303. package/dist/scene/geometry-src/mesh-fullscreen-quad.d.ts +7 -0
  304. package/dist/scene/geometry-src/mesh-fullscreen-quad.d.ts.map +1 -0
  305. package/dist/scene/geometry-src/mesh-fullscreen-quad.js +39 -0
  306. package/dist/scene/geometry-src/mesh-fullscreen-quad.js.map +1 -0
  307. package/dist/scene/geometry-src/mesh-icosahedron.d.ts +4 -0
  308. package/dist/scene/geometry-src/mesh-icosahedron.d.ts.map +1 -0
  309. package/dist/scene/geometry-src/mesh-icosahedron.js +10 -0
  310. package/dist/scene/geometry-src/mesh-icosahedron.js.map +1 -0
  311. package/dist/scene/geometry-src/mesh-icosphere.d.ts +11 -0
  312. package/dist/scene/geometry-src/mesh-icosphere.d.ts.map +1 -0
  313. package/dist/scene/geometry-src/mesh-icosphere.js +47 -0
  314. package/dist/scene/geometry-src/mesh-icosphere.js.map +1 -0
  315. package/dist/scene/geometry-src/mesh-octahedron.d.ts +4 -0
  316. package/dist/scene/geometry-src/mesh-octahedron.d.ts.map +1 -0
  317. package/dist/scene/geometry-src/mesh-octahedron.js +10 -0
  318. package/dist/scene/geometry-src/mesh-octahedron.js.map +1 -0
  319. package/dist/scene/geometry-src/mesh-plane.d.ts +13 -0
  320. package/dist/scene/geometry-src/mesh-plane.d.ts.map +1 -0
  321. package/dist/scene/geometry-src/mesh-plane.js +51 -0
  322. package/dist/scene/geometry-src/mesh-plane.js.map +1 -0
  323. package/dist/scene/geometry-src/mesh-ring.d.ts +12 -0
  324. package/dist/scene/geometry-src/mesh-ring.d.ts.map +1 -0
  325. package/dist/scene/geometry-src/mesh-ring.js +47 -0
  326. package/dist/scene/geometry-src/mesh-ring.js.map +1 -0
  327. package/dist/scene/geometry-src/mesh-sphere.d.ts +10 -0
  328. package/dist/scene/geometry-src/mesh-sphere.d.ts.map +1 -0
  329. package/dist/scene/geometry-src/mesh-sphere.js +51 -0
  330. package/dist/scene/geometry-src/mesh-sphere.js.map +1 -0
  331. package/dist/scene/geometry-src/mesh-tetrahedron.d.ts +5 -0
  332. package/dist/scene/geometry-src/mesh-tetrahedron.d.ts.map +1 -0
  333. package/dist/scene/geometry-src/mesh-tetrahedron.js +10 -0
  334. package/dist/scene/geometry-src/mesh-tetrahedron.js.map +1 -0
  335. package/dist/scene/geometry-src/mesh-torus.d.ts +17 -0
  336. package/dist/scene/geometry-src/mesh-torus.d.ts.map +1 -0
  337. package/dist/scene/geometry-src/mesh-torus.js +56 -0
  338. package/dist/scene/geometry-src/mesh-torus.js.map +1 -0
  339. package/dist/scene/geometry-src/mesh-types.d.ts +38 -0
  340. package/dist/scene/geometry-src/mesh-types.d.ts.map +1 -0
  341. package/dist/scene/geometry-src/mesh-types.js +2 -0
  342. package/dist/scene/geometry-src/mesh-types.js.map +1 -0
  343. package/dist/scene/geometry-src/mesh.d.ts +61 -0
  344. package/dist/scene/geometry-src/mesh.d.ts.map +1 -0
  345. package/dist/scene/geometry-src/mesh.js +49 -0
  346. package/dist/scene/geometry-src/mesh.js.map +1 -0
  347. package/dist/scene/geometry-src/orthographic-camera.d.ts +14 -0
  348. package/dist/scene/geometry-src/orthographic-camera.d.ts.map +1 -0
  349. package/dist/scene/geometry-src/orthographic-camera.js +9 -0
  350. package/dist/scene/geometry-src/orthographic-camera.js.map +1 -0
  351. package/dist/scene/geometry-src/perspective-camera.d.ts +12 -0
  352. package/dist/scene/geometry-src/perspective-camera.d.ts.map +1 -0
  353. package/dist/scene/geometry-src/perspective-camera.js +9 -0
  354. package/dist/scene/geometry-src/perspective-camera.js.map +1 -0
  355. package/dist/scene/geometry-src/plane-data.d.ts +12 -0
  356. package/dist/scene/geometry-src/plane-data.d.ts.map +1 -0
  357. package/dist/scene/geometry-src/plane-data.js +25 -0
  358. package/dist/scene/geometry-src/plane-data.js.map +1 -0
  359. package/dist/scene/geometry-src/polyhedron-data.d.ts +7 -0
  360. package/dist/scene/geometry-src/polyhedron-data.d.ts.map +1 -0
  361. package/dist/scene/geometry-src/polyhedron-data.js +42 -0
  362. package/dist/scene/geometry-src/polyhedron-data.js.map +1 -0
  363. package/dist/scene/geometry-src/polyhedron-mesh.d.ts +10 -0
  364. package/dist/scene/geometry-src/polyhedron-mesh.d.ts.map +1 -0
  365. package/dist/scene/geometry-src/polyhedron-mesh.js +37 -0
  366. package/dist/scene/geometry-src/polyhedron-mesh.js.map +1 -0
  367. package/dist/scene/geometry-src/polyhedron-seeds.d.ts +6 -0
  368. package/dist/scene/geometry-src/polyhedron-seeds.d.ts.map +1 -0
  369. package/dist/scene/geometry-src/polyhedron-seeds.js +51 -0
  370. package/dist/scene/geometry-src/polyhedron-seeds.js.map +1 -0
  371. package/dist/scene/geometry-src/primitive-data-utils.d.ts +9 -0
  372. package/dist/scene/geometry-src/primitive-data-utils.d.ts.map +1 -0
  373. package/dist/scene/geometry-src/primitive-data-utils.js +36 -0
  374. package/dist/scene/geometry-src/primitive-data-utils.js.map +1 -0
  375. package/dist/scene/geometry-src/ring-data.d.ts +13 -0
  376. package/dist/scene/geometry-src/ring-data.d.ts.map +1 -0
  377. package/dist/scene/geometry-src/ring-data.js +24 -0
  378. package/dist/scene/geometry-src/ring-data.js.map +1 -0
  379. package/dist/scene/geometry-src/sphere-data.d.ts +11 -0
  380. package/dist/scene/geometry-src/sphere-data.d.ts.map +1 -0
  381. package/dist/scene/geometry-src/sphere-data.js +31 -0
  382. package/dist/scene/geometry-src/sphere-data.js.map +1 -0
  383. package/dist/scene/geometry-src/srgb.d.ts +5 -0
  384. package/dist/scene/geometry-src/srgb.d.ts.map +1 -0
  385. package/dist/scene/geometry-src/srgb.js +23 -0
  386. package/dist/scene/geometry-src/srgb.js.map +1 -0
  387. package/dist/scene/geometry-src/torus-data.d.ts +11 -0
  388. package/dist/scene/geometry-src/torus-data.d.ts.map +1 -0
  389. package/dist/scene/geometry-src/torus-data.js +38 -0
  390. package/dist/scene/geometry-src/torus-data.js.map +1 -0
  391. package/dist/scene/geometry-src/vertex-layout.d.ts +2 -0
  392. package/dist/scene/geometry-src/vertex-layout.d.ts.map +1 -0
  393. package/dist/scene/geometry-src/vertex-layout.js +2 -0
  394. package/dist/scene/geometry-src/vertex-layout.js.map +1 -0
  395. package/dist/scene/geometry.d.ts +70 -0
  396. package/dist/scene/geometry.d.ts.map +1 -0
  397. package/dist/scene/geometry.js +71 -0
  398. package/dist/scene/geometry.js.map +1 -0
  399. package/dist/scene/orbit.d.ts +9 -0
  400. package/dist/scene/orbit.d.ts.map +1 -0
  401. package/dist/scene/orbit.js +15 -0
  402. package/dist/scene/orbit.js.map +1 -0
  403. package/dist/scene/tree/errors.d.ts +4 -0
  404. package/dist/scene/tree/errors.d.ts.map +1 -0
  405. package/dist/scene/tree/errors.js +19 -0
  406. package/dist/scene/tree/errors.js.map +1 -0
  407. package/dist/scene/tree/light.d.ts +42 -0
  408. package/dist/scene/tree/light.d.ts.map +1 -0
  409. package/dist/scene/tree/light.js +102 -0
  410. package/dist/scene/tree/light.js.map +1 -0
  411. package/dist/scene/tree/material.d.ts +79 -0
  412. package/dist/scene/tree/material.d.ts.map +1 -0
  413. package/dist/scene/tree/material.js +117 -0
  414. package/dist/scene/tree/material.js.map +1 -0
  415. package/dist/scene/tree/math.d.ts +26 -0
  416. package/dist/scene/tree/math.d.ts.map +1 -0
  417. package/dist/scene/tree/math.js +217 -0
  418. package/dist/scene/tree/math.js.map +1 -0
  419. package/dist/scene/tree/mesh-node.d.ts +17 -0
  420. package/dist/scene/tree/mesh-node.d.ts.map +1 -0
  421. package/dist/scene/tree/mesh-node.js +24 -0
  422. package/dist/scene/tree/mesh-node.js.map +1 -0
  423. package/dist/scene/tree/node.d.ts +70 -0
  424. package/dist/scene/tree/node.d.ts.map +1 -0
  425. package/dist/scene/tree/node.js +220 -0
  426. package/dist/scene/tree/node.js.map +1 -0
  427. package/dist/scene/tree/orbit-controls.d.ts +69 -0
  428. package/dist/scene/tree/orbit-controls.d.ts.map +1 -0
  429. package/dist/scene/tree/orbit-controls.js +226 -0
  430. package/dist/scene/tree/orbit-controls.js.map +1 -0
  431. package/dist/scene.d.ts +21 -0
  432. package/dist/scene.d.ts.map +1 -0
  433. package/dist/scene.js +11 -0
  434. package/dist/scene.js.map +1 -0
  435. package/dist/set-core.d.ts +50 -0
  436. package/dist/set-core.d.ts.map +1 -0
  437. package/dist/set-core.js +268 -0
  438. package/dist/set-core.js.map +1 -0
  439. package/dist/set-layouts.d.ts +20 -0
  440. package/dist/set-layouts.d.ts.map +1 -0
  441. package/dist/set-layouts.js +103 -0
  442. package/dist/set-layouts.js.map +1 -0
  443. package/dist/set-packing.d.ts +4 -0
  444. package/dist/set-packing.d.ts.map +1 -0
  445. package/dist/set-packing.js +82 -0
  446. package/dist/set-packing.js.map +1 -0
  447. package/dist/set-resources.d.ts +20 -0
  448. package/dist/set-resources.d.ts.map +1 -0
  449. package/dist/set-resources.js +140 -0
  450. package/dist/set-resources.js.map +1 -0
  451. package/dist/shader-source.d.ts +4 -0
  452. package/dist/shader-source.d.ts.map +1 -0
  453. package/dist/shader-source.js +21 -0
  454. package/dist/shader-source.js.map +1 -0
  455. package/dist/storage.d.ts +38 -0
  456. package/dist/storage.d.ts.map +1 -0
  457. package/dist/storage.js +76 -0
  458. package/dist/storage.js.map +1 -0
  459. package/dist/surface.d.ts +89 -0
  460. package/dist/surface.d.ts.map +1 -0
  461. package/dist/surface.js +243 -0
  462. package/dist/surface.js.map +1 -0
  463. package/dist/target-offscreen.d.ts +41 -0
  464. package/dist/target-offscreen.d.ts.map +1 -0
  465. package/dist/target-offscreen.js +115 -0
  466. package/dist/target-offscreen.js.map +1 -0
  467. package/dist/target-utils.d.ts +37 -0
  468. package/dist/target-utils.d.ts.map +1 -0
  469. package/dist/target-utils.js +103 -0
  470. package/dist/target-utils.js.map +1 -0
  471. package/dist/target.d.ts +65 -0
  472. package/dist/target.d.ts.map +1 -0
  473. package/dist/target.js +2 -0
  474. package/dist/target.js.map +1 -0
  475. package/dist/timer.d.ts +78 -0
  476. package/dist/timer.d.ts.map +1 -0
  477. package/dist/timer.js +261 -0
  478. package/dist/timer.js.map +1 -0
  479. package/dist/uniforms-layout.d.ts +8 -0
  480. package/dist/uniforms-layout.d.ts.map +1 -0
  481. package/dist/uniforms-layout.js +84 -0
  482. package/dist/uniforms-layout.js.map +1 -0
  483. package/dist/uniforms.d.ts +43 -0
  484. package/dist/uniforms.d.ts.map +1 -0
  485. package/dist/uniforms.js +176 -0
  486. package/dist/uniforms.js.map +1 -0
  487. package/dist/visibility.d.ts +118 -0
  488. package/dist/visibility.d.ts.map +1 -0
  489. package/dist/visibility.js +290 -0
  490. package/dist/visibility.js.map +1 -0
  491. package/package.json +131 -0
package/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Vercel, Inc. (original vgpu portions)
4
+ Copyright (c) 2026 AIGpu contributors (fork and modifications)
5
+
6
+ Permission is hereby granted, free of charge, to any person obtaining a copy
7
+ of this software and associated documentation files (the "Software"), to deal
8
+ in the Software without restriction, including without limitation the rights
9
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
+ copies of the Software, and to permit persons to whom the Software is
11
+ furnished to do so, subject to the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be included in all
14
+ copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,85 @@
1
+ # aigpu
2
+
3
+ AIGpu is an MIT-licensed TypeScript runtime for **GPU animations for AI agents**. It provides a small WebGPU API, typed WGSL modules, a deterministic mock, and an explicit bridge from orchestration state to pixels. It does not call a model, require an API key, or depend on a hosted control plane.
4
+
5
+ ## Install
6
+
7
+ ```sh
8
+ pnpm add aigpu
9
+ pnpm add -D @webgpu/types
10
+ ```
11
+
12
+ ## Agent animation
13
+
14
+ ```ts
15
+ import { agentAnimation, clock, frameLoop, init, surface } from "aigpu";
16
+
17
+ const gpu = await init();
18
+ const output = surface(gpu, document.querySelector("canvas")!);
19
+ const animation = agentAnimation(gpu, {
20
+ label: "researcher",
21
+ initial: { status: "thinking", progress: 0.1 },
22
+ });
23
+ const time = clock(gpu);
24
+
25
+ frameLoop(gpu, (frame) => {
26
+ animation.tick(time.time);
27
+ frame.pass(output, animation.effect);
28
+ });
29
+
30
+ // Connect this to your own local model, queue, WebSocket, or event bus.
31
+ animation.set({ status: "working", progress: 0.72, activity: 0.9 });
32
+ ```
33
+
34
+ The built-in states are `idle`, `thinking`, `working`, `waiting`, `success`, and `error`. `progress` and `activity` are normalized to `[0, 1]`; colors are RGBA tuples. `animation.state` is a defensive snapshot, `reset()` restores the initial state, and `tick()` accepts an external clock for deterministic renders.
35
+
36
+ ## Framework-agnostic mounting
37
+
38
+ Use `mountAgentCanvas()` or `mountAgentCanvasSelector()` for plain HTML/JavaScript. Optional lifecycle adapters are published separately as `@aigpu/react`, `@aigpu/vue`, and `@aigpu/svelte`; each delegates to the same `ready`/`set`/`resize`/`destroy` controller without adding a framework dependency to this package.
39
+
40
+ For multi-agent state, import `createAgentStore`, `createAgentRegistry`, `recordAgentEvents`, and `replayAgentEvents` from `aigpu/tools`. These utilities are UI-, GPU-, transport-, and provider-agnostic.
41
+
42
+ ## Core runtime
43
+
44
+ ```ts
45
+ import { draw, frame, init, target } from "aigpu/node";
46
+
47
+ const gpu = await init();
48
+ const output = target(gpu, { size: [256, 256], format: "rgba8unorm" });
49
+ const triangle = draw(gpu, { shader: triangleShader });
50
+ frame(gpu, (current) => current.pass(output, triangle));
51
+ const pixels = await output.read();
52
+ gpu.dispose();
53
+ ```
54
+
55
+ The same API runs in the browser, headless Node through open Dawn bindings, and `aigpu/mock` for deterministic tests.
56
+
57
+ ## WGSL and tooling
58
+
59
+ WGSL modules are plain text modules with typed imports and exports. Use `@aigpu/wgsl/loader-vite` or `@aigpu/wgsl/loader-webpack` with an open-source bundler, or use `@aigpu/wgsl/runtime` directly from Node. The bundled `@aigpu/cli` provides offline docs, shader checks, local example search/copy, diagnostics, and MCP stdio.
60
+
61
+ ```sh
62
+ npx aigpu docs cat agentAnimation
63
+ npx aigpu examples search "webgpu"
64
+ npx aigpu examples pull agent-cockpit --out ./agent-cockpit
65
+ npx aigpu check ./agent.wgsl --require-validation
66
+ npx aigpu mcp
67
+ ```
68
+
69
+ For the full reference, run `npx aigpu docs find <query>`. The catalog is read from the checkout's `examples/` directory or `AIGPU_EXAMPLES_DIR`; no network request is made.
70
+
71
+ ## Development
72
+
73
+ ```sh
74
+ pnpm install
75
+ pnpm build
76
+ pnpm typecheck
77
+ pnpm test:fast
78
+ pnpm check:skill-drift
79
+ ```
80
+
81
+ See the repository [CONTRIBUTING.md](https://github.com/hautlys/AIGpu/blob/main/CONTRIBUTING.md) for the local workflow.
82
+
83
+ ## License and provenance
84
+
85
+ AIGpu is distributed under the MIT license. The repository preserves the original upstream copyright notice for the portions inherited from `vgpu` and identifies the fork changes in `NOTICE.md`.
package/bin/aigpu.js ADDED
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ import { existsSync } from "node:fs";
3
+
4
+ const cliUrl = new URL("../dist/cli/bin/aigpu.js", import.meta.url);
5
+
6
+ if (!existsSync(cliUrl)) {
7
+ process.stderr.write("aigpu CLI is not built. Run `pnpm build` before using it from a workspace checkout.\n");
8
+ process.exit(1);
9
+ }
10
+
11
+ const { runCli } = await import(cliUrl.href);
12
+ const result = await Promise.resolve(runCli(process.argv.slice(2)));
13
+ if (result.stdout) process.stdout.write(result.stdout);
14
+ if (result.stderr) process.stderr.write(result.stderr);
15
+ process.exitCode = result.code;
package/client.d.ts ADDED
@@ -0,0 +1,15 @@
1
+ /// <reference types="@webgpu/types" />
2
+
3
+ declare module "aigpu/client" {
4
+ export interface AIGPUClientEnvironment {
5
+ readonly gpu?: GPU;
6
+ }
7
+
8
+ export { wgslVitePlugin } from "@aigpu/wgsl/loader-vite";
9
+ export type { ViteLoadResult, WgslVitePluginOptions } from "@aigpu/wgsl/loader-vite";
10
+ }
11
+
12
+ declare module "*.wgsl" {
13
+ const source: { readonly version: 1; readonly wgsl: string };
14
+ export default source;
15
+ }
@@ -0,0 +1,61 @@
1
+ import type { AgentAnimationPatch, AgentAnimationState, AgentStatus } from "./agent.ts";
2
+ export type AgentEventType = "state" | "reset" | "progress" | "status";
3
+ export interface AgentEvent {
4
+ readonly agentId?: string;
5
+ readonly type: AgentEventType;
6
+ readonly patch?: AgentAnimationPatch;
7
+ readonly at?: number;
8
+ readonly metadata?: Readonly<Record<string, unknown>>;
9
+ }
10
+ export interface AgentStoreSnapshot {
11
+ readonly revision: number;
12
+ readonly state: AgentAnimationPatch;
13
+ }
14
+ export type AgentStoreListener = (snapshot: AgentStoreSnapshot, event: AgentEvent) => void;
15
+ export interface AgentStore {
16
+ readonly snapshot: AgentStoreSnapshot;
17
+ set(patch: AgentAnimationPatch, metadata?: Readonly<Record<string, unknown>>): this;
18
+ dispatch(event: AgentEvent): this;
19
+ reset(metadata?: Readonly<Record<string, unknown>>): this;
20
+ subscribe(listener: AgentStoreListener): () => void;
21
+ toJSON(): string;
22
+ }
23
+ /** Pure state bridge for any UI, transport, store, worker, or agent orchestrator. */
24
+ export declare function createAgentStore(initial?: AgentAnimationPatch): AgentStore;
25
+ export interface AgentRegistrySnapshot {
26
+ readonly revision: number;
27
+ readonly agents: Readonly<Record<string, AgentStoreSnapshot>>;
28
+ }
29
+ export interface AgentRegistry {
30
+ readonly snapshot: AgentRegistrySnapshot;
31
+ readonly ids: readonly string[];
32
+ ensure(id: string, initial?: AgentAnimationPatch): AgentStore;
33
+ get(id: string): AgentStore | undefined;
34
+ remove(id: string): boolean;
35
+ subscribe(listener: (snapshot: AgentRegistrySnapshot, event: AgentEvent) => void): () => void;
36
+ }
37
+ /** Multi-agent state registry with stable IDs and one subscription for dashboards. */
38
+ export declare function createAgentRegistry(): AgentRegistry;
39
+ export interface AgentEventRecorder {
40
+ readonly events: readonly AgentEvent[];
41
+ stop(): void;
42
+ clear(): void;
43
+ toJSON(pretty?: boolean): string;
44
+ }
45
+ /** Records a source of serializable agent events; works with any subscribe/unsubscribe contract. */
46
+ export declare function recordAgentEvents(subscribe: (listener: (event: AgentEvent) => void) => () => void, options?: {
47
+ readonly now?: () => number;
48
+ }): AgentEventRecorder;
49
+ export interface AgentReplay {
50
+ play(): void;
51
+ pause(): void;
52
+ stop(): void;
53
+ }
54
+ /** Replays events using an injected scheduler, making timelines testable and UI-independent. */
55
+ export declare function replayAgentEvents(events: readonly AgentEvent[], deliver: (event: AgentEvent) => void, options?: {
56
+ readonly speed?: number;
57
+ readonly setTimeout?: (cb: () => void, delay: number) => unknown;
58
+ readonly clearTimeout?: (handle: unknown) => void;
59
+ }): AgentReplay;
60
+ export type { AgentAnimationState, AgentStatus };
61
+ //# sourceMappingURL=agent-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-tools.d.ts","sourceRoot":"","sources":["../src/agent-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAExF,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEvE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;AAE3F,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,GAAG,CAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IACpF,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAClC,KAAK,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAC1D,SAAS,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAAC;IACpD,MAAM,IAAI,MAAM,CAAC;CAClB;AAED,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,mBAAwB,GAAG,UAAU,CAyB9E;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IACzC,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,UAAU,CAAC;IAC9D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;IACxC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,qBAAqB,EAAE,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC/F;AAED,sFAAsF;AACtF,wBAAgB,mBAAmB,IAAI,aAAa,CAuBnD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CAClC;AAED,oGAAoG;AACpG,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,KAAK,MAAM,IAAI,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GAAG,kBAAkB,CAKrK;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;CACd;AAED,gGAAgG;AAChG,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EAAE,OAAO,GAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;CAAO,GAAG,WAAW,CAqBlR;AAQD,YAAY,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,107 @@
1
+ /** Pure state bridge for any UI, transport, store, worker, or agent orchestrator. */
2
+ export function createAgentStore(initial = {}) {
3
+ let state = freezePatch(initial);
4
+ let revision = 0;
5
+ const listeners = new Set();
6
+ const notify = (event) => {
7
+ const snapshot = { revision, state: freezePatch(state) };
8
+ for (const listener of [...listeners])
9
+ listener(snapshot, event);
10
+ };
11
+ const apply = (patch, event) => {
12
+ state = freezePatch({ ...state, ...patch, colors: patch.colors ? { ...(state.colors ?? {}), ...patch.colors } : state.colors });
13
+ revision += 1;
14
+ notify(event);
15
+ };
16
+ return {
17
+ get snapshot() { return { revision, state: freezePatch(state) }; },
18
+ set(patch, metadata) { apply(patch, { type: "state", patch, metadata }); return this; },
19
+ dispatch(event) {
20
+ if (event.type === "reset") {
21
+ state = freezePatch(initial);
22
+ revision += 1;
23
+ notify(event);
24
+ }
25
+ else if (event.patch)
26
+ apply(event.patch, event);
27
+ return this;
28
+ },
29
+ reset(metadata) { return this.dispatch({ type: "reset", metadata }); },
30
+ subscribe(listener) { listeners.add(listener); return () => listeners.delete(listener); },
31
+ toJSON() { return JSON.stringify({ revision, state }); },
32
+ };
33
+ }
34
+ /** Multi-agent state registry with stable IDs and one subscription for dashboards. */
35
+ export function createAgentRegistry() {
36
+ const stores = new Map();
37
+ const listeners = new Set();
38
+ let revision = 0;
39
+ const snapshot = () => ({ revision, agents: Object.fromEntries([...stores].map(([id, store]) => [id, store.snapshot])) });
40
+ const emit = (event) => { revision += 1; for (const listener of [...listeners])
41
+ listener(snapshot(), event); };
42
+ return {
43
+ get snapshot() { return snapshot(); },
44
+ get ids() { return [...stores.keys()]; },
45
+ ensure(id, initial = {}) {
46
+ if (!validId(id))
47
+ throw new TypeError("Agent IDs must be non-empty strings without control characters");
48
+ const existing = stores.get(id);
49
+ if (existing)
50
+ return existing;
51
+ const store = createAgentStore(initial);
52
+ store.subscribe((_next, event) => emit({ ...event, agentId: id }));
53
+ stores.set(id, store);
54
+ emit({ type: "state", agentId: id, patch: initial });
55
+ return store;
56
+ },
57
+ get: (id) => stores.get(id),
58
+ remove(id) { const removed = stores.delete(id); if (removed)
59
+ emit({ type: "reset", agentId: id }); return removed; },
60
+ subscribe(listener) { listeners.add(listener); return () => listeners.delete(listener); },
61
+ };
62
+ }
63
+ /** Records a source of serializable agent events; works with any subscribe/unsubscribe contract. */
64
+ export function recordAgentEvents(subscribe, options = {}) {
65
+ const events = [];
66
+ const now = options.now ?? (() => Date.now());
67
+ const unsubscribe = subscribe((event) => { events.push({ ...event, at: event.at ?? now() }); });
68
+ return { events, stop() { unsubscribe(); }, clear() { events.length = 0; }, toJSON(pretty = false) { return JSON.stringify(events, null, pretty ? 2 : 0); } };
69
+ }
70
+ /** Replays events using an injected scheduler, making timelines testable and UI-independent. */
71
+ export function replayAgentEvents(events, deliver, options = {}) {
72
+ const speed = options.speed ?? 1;
73
+ if (!(speed > 0) || !Number.isFinite(speed))
74
+ throw new TypeError("replay speed must be a finite number greater than zero");
75
+ const schedule = options.setTimeout ?? ((cb, delay) => globalThis.setTimeout(cb, delay));
76
+ const cancel = options.clearTimeout ?? ((handle) => globalThis.clearTimeout(handle));
77
+ let index = 0;
78
+ let handle;
79
+ let playing = false;
80
+ const next = () => {
81
+ if (!playing || index >= events.length) {
82
+ playing = false;
83
+ return;
84
+ }
85
+ const event = events[index++];
86
+ deliver(event);
87
+ const current = event.at ?? 0;
88
+ const following = events[index]?.at ?? current;
89
+ handle = schedule(next, Math.max(0, (following - current) / speed));
90
+ };
91
+ return {
92
+ play() { if (!playing) {
93
+ playing = true;
94
+ next();
95
+ } },
96
+ pause() { playing = false; if (handle !== undefined)
97
+ cancel(handle); handle = undefined; },
98
+ stop() { playing = false; if (handle !== undefined)
99
+ cancel(handle); handle = undefined; index = 0; },
100
+ };
101
+ }
102
+ function validId(id) { return typeof id === "string" && id.trim().length > 0 && !/[\u0000-\u001F\u007F]/u.test(id); }
103
+ function freezePatch(patch) {
104
+ const colors = patch.colors ? Object.freeze({ ...patch.colors }) : patch.colors;
105
+ return Object.freeze({ ...patch, ...(colors ? { colors } : {}) });
106
+ }
107
+ //# sourceMappingURL=agent-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-tools.js","sourceRoot":"","sources":["../src/agent-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import { type Effect } from "./effect.ts";
2
+ import type { Gpu } from "./kernel.ts";
3
+ /** Visual states understood by the built-in agent animation shader. */
4
+ export type AgentStatus = "idle" | "thinking" | "working" | "waiting" | "success" | "error";
5
+ export type AgentColor = readonly [number, number, number, number];
6
+ export interface AgentColors {
7
+ readonly accent: AgentColor;
8
+ readonly secondary: AgentColor;
9
+ readonly background: AgentColor;
10
+ }
11
+ export interface AgentAnimationState {
12
+ readonly status: AgentStatus;
13
+ readonly progress: number;
14
+ readonly activity: number;
15
+ readonly phase: number;
16
+ readonly speed: number;
17
+ readonly colors: AgentColors;
18
+ }
19
+ export interface AgentAnimationPatch {
20
+ readonly status?: AgentStatus;
21
+ /** Normalized task completion from 0 to 1. */
22
+ readonly progress?: number;
23
+ /** Normalized live activity from 0 to 1. */
24
+ readonly activity?: number;
25
+ /** Extra phase offset in radians. */
26
+ readonly phase?: number;
27
+ /** Pulse speed multiplier. */
28
+ readonly speed?: number;
29
+ readonly colors?: Partial<AgentColors>;
30
+ }
31
+ export interface AgentAnimationOptions {
32
+ readonly label?: string;
33
+ readonly initial?: AgentAnimationPatch;
34
+ readonly colors?: Partial<AgentColors>;
35
+ }
36
+ export interface AgentAnimation {
37
+ /** The fullscreen Effect to pass to frame.pass(). */
38
+ readonly effect: Effect;
39
+ /** A defensive snapshot of the current state. */
40
+ readonly state: AgentAnimationState;
41
+ /** Apply only the state fields that changed. */
42
+ set(patch: AgentAnimationPatch): this;
43
+ /** Feed the shader clock from aigpu's clock, an XR loop, or another ticker. */
44
+ tick(timeSeconds: number): this;
45
+ /** Return to the state supplied at construction time. */
46
+ reset(): this;
47
+ }
48
+ /**
49
+ * Fullscreen GPU animation for an AI agent. AIGpu does not own the agent or call a model:
50
+ * set() is the only bridge from orchestration state to the shader.
51
+ */
52
+ export declare function agentAnimation(gpu: Gpu, options?: AgentAnimationOptions): AgentAnimation;
53
+ /** Stable numeric mapping used by custom shaders that consume the same status vocabulary. */
54
+ export declare function agentStatusIndex(status: AgentStatus): number;
55
+ export declare const AGENT_ANIMATION_SHADER = "\nstruct AgentParams {\n time: f32,\n progress: f32,\n activity: f32,\n status: f32,\n phase: f32,\n speed: f32,\n pad: vec2f,\n accent: vec4f,\n secondary: vec4f,\n background: vec4f,\n}\n\n@group(0) @binding(0) var<uniform> params: AgentParams;\n\nconst TAU: f32 = 6.28318530718;\n\n@fragment\nfn main(@location(0) uv: vec2f) -> @location(0) vec4f {\n let p = uv - vec2f(0.5);\n let distance = length(p);\n let angle = atan2(p.y, p.x);\n let normalizedAngle = fract(angle / TAU + 1.0);\n let statusPulse = 0.65 + 0.35 * sin(params.time * params.speed + params.phase);\n let activity = max(params.activity, 0.08);\n let radius = 0.205 + activity * 0.035;\n let core = 1.0 - smoothstep(radius - 0.025, radius, distance);\n let ringDistance = abs(distance - radius - 0.055 - statusPulse * 0.018);\n let ring = 1.0 - smoothstep(0.012, 0.035, ringDistance);\n let progressArc = select(0.0, 1.0, normalizedAngle <= params.progress);\n let arcDistance = abs(distance - radius - 0.055);\n let arc = progressArc * (1.0 - smoothstep(0.012, 0.03, arcDistance));\n let haloDistance = abs(distance - radius - 0.11 - statusPulse * 0.025);\n let halo = (1.0 - smoothstep(0.01, 0.08, haloDistance)) * (0.25 + activity * 0.35);\n let grain = fract(sin(dot(uv + params.phase, vec2f(12.9898, 78.233))) * 43758.5453);\n let glow = core * (0.75 + statusPulse * 0.25) + ring * 0.45 + halo * 0.3;\n let mixed = params.secondary.rgb * (0.45 + halo) + params.background.rgb * (1.0 - halo) + params.accent.rgb * glow;\n let progressColor = mix(mixed, params.accent.rgb, arc);\n let grainAmount = (grain - 0.5) * 0.012;\n return vec4f(max(progressColor + vec3f(grainAmount), vec3f(0.0)), 1.0);\n}\n";
56
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAEvC,uEAAuE;AACvE,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAE5F,MAAM,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,qCAAqC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,8BAA8B;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iDAAiD;IACjD,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAC;IACpC,gDAAgD;IAChD,GAAG,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACtC,+EAA+E;IAC/E,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,yDAAyD;IACzD,KAAK,IAAI,IAAI,CAAC;CACf;AA4CD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,GAAE,qBAA0B,GAAG,cAAc,CA8C5F;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAG5D;AA2HD,eAAO,MAAM,sBAAsB,6qDA0ClC,CAAC"}
package/dist/agent.js ADDED
@@ -0,0 +1,243 @@
1
+ import { effect } from "./effect.js";
2
+ const STATUS_INDEX = {
3
+ idle: 0,
4
+ thinking: 1,
5
+ working: 2,
6
+ waiting: 3,
7
+ success: 4,
8
+ error: 5,
9
+ };
10
+ const PALETTES = {
11
+ idle: {
12
+ accent: [0.36, 0.53, 0.9, 1],
13
+ secondary: [0.1, 0.16, 0.34, 1],
14
+ background: [0.008, 0.014, 0.04, 1],
15
+ },
16
+ thinking: {
17
+ accent: [0.55, 0.7, 1, 1],
18
+ secondary: [0.18, 0.25, 0.62, 1],
19
+ background: [0.012, 0.018, 0.075, 1],
20
+ },
21
+ working: {
22
+ accent: [0.35, 0.95, 1, 1],
23
+ secondary: [0.06, 0.38, 0.65, 1],
24
+ background: [0.005, 0.028, 0.06, 1],
25
+ },
26
+ waiting: {
27
+ accent: [1, 0.72, 0.28, 1],
28
+ secondary: [0.65, 0.23, 0.06, 1],
29
+ background: [0.055, 0.022, 0.006, 1],
30
+ },
31
+ success: {
32
+ accent: [0.3, 1, 0.55, 1],
33
+ secondary: [0.04, 0.42, 0.2, 1],
34
+ background: [0.004, 0.035, 0.018, 1],
35
+ },
36
+ error: {
37
+ accent: [1, 0.32, 0.4, 1],
38
+ secondary: [0.58, 0.06, 0.12, 1],
39
+ background: [0.055, 0.006, 0.014, 1],
40
+ },
41
+ };
42
+ /**
43
+ * Fullscreen GPU animation for an AI agent. AIGpu does not own the agent or call a model:
44
+ * set() is the only bridge from orchestration state to the shader.
45
+ */
46
+ export function agentAnimation(gpu, options = {}) {
47
+ const initial = normalizePatch(options.initial ?? {});
48
+ const initialColors = mergeColors(PALETTES[initial.status], options.colors, initial.colors);
49
+ const state = {
50
+ status: initial.status,
51
+ progress: initial.progress,
52
+ activity: initial.activity,
53
+ phase: initial.phase,
54
+ speed: initial.speed,
55
+ colors: initialColors,
56
+ time: 0,
57
+ };
58
+ const initialSnapshot = snapshot(state);
59
+ const visual = effect(gpu, AGENT_ANIMATION_SHADER, {
60
+ label: options.label ?? "agent-animation",
61
+ set: uniforms(state),
62
+ });
63
+ return {
64
+ effect: visual,
65
+ get state() { return snapshot(state); },
66
+ set(patch) {
67
+ applyPatch(state, patch);
68
+ visual.set(uniforms(state));
69
+ return this;
70
+ },
71
+ tick(timeSeconds) {
72
+ if (typeof timeSeconds !== "number" || !Number.isFinite(timeSeconds)) {
73
+ throw new TypeError("agentAnimation.tick() expects a finite number of seconds");
74
+ }
75
+ state.time = Math.max(0, timeSeconds);
76
+ visual.set({ params: { time: state.time } });
77
+ return this;
78
+ },
79
+ reset() {
80
+ state.status = initialSnapshot.status;
81
+ state.progress = initialSnapshot.progress;
82
+ state.activity = initialSnapshot.activity;
83
+ state.phase = initialSnapshot.phase;
84
+ state.speed = initialSnapshot.speed;
85
+ state.colors = cloneColors(initialSnapshot.colors);
86
+ state.time = 0;
87
+ visual.set(uniforms(state));
88
+ return this;
89
+ },
90
+ };
91
+ }
92
+ /** Stable numeric mapping used by custom shaders that consume the same status vocabulary. */
93
+ export function agentStatusIndex(status) {
94
+ if (!Object.hasOwn(STATUS_INDEX, status))
95
+ throw new TypeError(`Unknown agent status: ${String(status)}`);
96
+ return STATUS_INDEX[status];
97
+ }
98
+ const DEFAULT_STATE = {
99
+ status: "idle",
100
+ progress: 0,
101
+ activity: 0,
102
+ phase: 0,
103
+ speed: 1,
104
+ colors: PALETTES.idle,
105
+ };
106
+ function normalizePatch(patch) {
107
+ const status = patch.status ?? DEFAULT_STATE.status;
108
+ agentStatusIndex(status);
109
+ return {
110
+ status,
111
+ progress: normalized(patch.progress ?? DEFAULT_STATE.progress, "progress"),
112
+ activity: normalized(patch.activity ?? DEFAULT_STATE.activity, "activity"),
113
+ phase: finite(patch.phase ?? DEFAULT_STATE.phase, "phase"),
114
+ speed: nonNegative(patch.speed ?? DEFAULT_STATE.speed, "speed"),
115
+ colors: patch.colors,
116
+ };
117
+ }
118
+ function applyPatch(state, patch) {
119
+ const normalizedPatch = normalizePatch({
120
+ status: patch.status ?? state.status,
121
+ progress: patch.progress ?? state.progress,
122
+ activity: patch.activity ?? state.activity,
123
+ phase: patch.phase ?? state.phase,
124
+ speed: patch.speed ?? state.speed,
125
+ colors: patch.colors,
126
+ });
127
+ const statusChanged = normalizedPatch.status !== state.status;
128
+ state.status = normalizedPatch.status;
129
+ state.progress = normalizedPatch.progress;
130
+ state.activity = normalizedPatch.activity;
131
+ state.phase = normalizedPatch.phase;
132
+ state.speed = normalizedPatch.speed;
133
+ state.colors = mergeColors(statusChanged ? PALETTES[state.status] : state.colors, patch.colors, undefined);
134
+ }
135
+ function uniforms(state) {
136
+ return {
137
+ params: {
138
+ time: state.time,
139
+ progress: state.progress,
140
+ activity: state.activity,
141
+ status: agentStatusIndex(state.status),
142
+ phase: state.phase,
143
+ speed: state.speed,
144
+ pad: [0, 0],
145
+ accent: state.colors.accent,
146
+ secondary: state.colors.secondary,
147
+ background: state.colors.background,
148
+ },
149
+ };
150
+ }
151
+ function snapshot(state) {
152
+ return {
153
+ status: state.status,
154
+ progress: state.progress,
155
+ activity: state.activity,
156
+ phase: state.phase,
157
+ speed: state.speed,
158
+ colors: cloneColors(state.colors),
159
+ };
160
+ }
161
+ function mergeColors(base, ...patches) {
162
+ const result = { accent: base.accent, secondary: base.secondary, background: base.background };
163
+ for (const patch of patches) {
164
+ if (!patch)
165
+ continue;
166
+ for (const key of ["accent", "secondary", "background"]) {
167
+ if (patch[key] !== undefined)
168
+ result[key] = color(patch[key], `colors.${key}`);
169
+ }
170
+ }
171
+ return result;
172
+ }
173
+ function cloneColors(colors) {
174
+ return {
175
+ accent: [...colors.accent],
176
+ secondary: [...colors.secondary],
177
+ background: [...colors.background],
178
+ };
179
+ }
180
+ function color(value, name) {
181
+ if ((value.length !== 3 && value.length !== 4) || value.some((channel) => typeof channel !== "number" || !Number.isFinite(channel) || channel < 0 || channel > 1)) {
182
+ throw new TypeError(`${name} must contain 3 or 4 finite numbers in the [0, 1] range`);
183
+ }
184
+ return [value[0], value[1], value[2], value[3] ?? 1];
185
+ }
186
+ function normalized(value, name) {
187
+ return clamp(finite(value, name), 0, 1);
188
+ }
189
+ function nonNegative(value, name) {
190
+ return Math.max(0, finite(value, name));
191
+ }
192
+ function finite(value, name) {
193
+ if (typeof value !== "number" || !Number.isFinite(value))
194
+ throw new TypeError(`${name} must be a finite number`);
195
+ return value;
196
+ }
197
+ function clamp(value, min, max) {
198
+ return Math.min(max, Math.max(min, value));
199
+ }
200
+ export const AGENT_ANIMATION_SHADER = /* wgsl */ `
201
+ struct AgentParams {
202
+ time: f32,
203
+ progress: f32,
204
+ activity: f32,
205
+ status: f32,
206
+ phase: f32,
207
+ speed: f32,
208
+ pad: vec2f,
209
+ accent: vec4f,
210
+ secondary: vec4f,
211
+ background: vec4f,
212
+ }
213
+
214
+ @group(0) @binding(0) var<uniform> params: AgentParams;
215
+
216
+ const TAU: f32 = 6.28318530718;
217
+
218
+ @fragment
219
+ fn main(@location(0) uv: vec2f) -> @location(0) vec4f {
220
+ let p = uv - vec2f(0.5);
221
+ let distance = length(p);
222
+ let angle = atan2(p.y, p.x);
223
+ let normalizedAngle = fract(angle / TAU + 1.0);
224
+ let statusPulse = 0.65 + 0.35 * sin(params.time * params.speed + params.phase);
225
+ let activity = max(params.activity, 0.08);
226
+ let radius = 0.205 + activity * 0.035;
227
+ let core = 1.0 - smoothstep(radius - 0.025, radius, distance);
228
+ let ringDistance = abs(distance - radius - 0.055 - statusPulse * 0.018);
229
+ let ring = 1.0 - smoothstep(0.012, 0.035, ringDistance);
230
+ let progressArc = select(0.0, 1.0, normalizedAngle <= params.progress);
231
+ let arcDistance = abs(distance - radius - 0.055);
232
+ let arc = progressArc * (1.0 - smoothstep(0.012, 0.03, arcDistance));
233
+ let haloDistance = abs(distance - radius - 0.11 - statusPulse * 0.025);
234
+ let halo = (1.0 - smoothstep(0.01, 0.08, haloDistance)) * (0.25 + activity * 0.35);
235
+ let grain = fract(sin(dot(uv + params.phase, vec2f(12.9898, 78.233))) * 43758.5453);
236
+ let glow = core * (0.75 + statusPulse * 0.25) + ring * 0.45 + halo * 0.3;
237
+ let mixed = params.secondary.rgb * (0.45 + halo) + params.background.rgb * (1.0 - halo) + params.accent.rgb * glow;
238
+ let progressColor = mix(mixed, params.accent.rgb, arc);
239
+ let grainAmount = (grain - 0.5) * 0.012;
240
+ return vec4f(max(progressColor + vec3f(grainAmount), vec3f(0.0)), 1.0);
241
+ }
242
+ `;
243
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}