@appinternalleads/ui 0.3.0 → 0.4.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 (988) hide show
  1. package/dist/cjs/agent/AgentComponent.js +1 -1
  2. package/dist/cjs/agent/AgentComponent.js.map +1 -1
  3. package/dist/cjs/agent/base.js +25 -0
  4. package/dist/cjs/agent/base.js.map +1 -0
  5. package/dist/cjs/agent/catalog.js +0 -32
  6. package/dist/cjs/agent/catalog.js.map +1 -1
  7. package/dist/cjs/agent/core.js +22 -20
  8. package/dist/cjs/agent/core.js.map +1 -1
  9. package/dist/cjs/agent/index.js +6 -5
  10. package/dist/cjs/agent/index.js.map +1 -1
  11. package/dist/cjs/agent/manifests.js +81 -1
  12. package/dist/cjs/agent/manifests.js.map +1 -1
  13. package/dist/cjs/agent/result.js +6 -0
  14. package/dist/cjs/agent/result.js.map +1 -1
  15. package/dist/cjs/agent/search/document.js +50 -0
  16. package/dist/cjs/agent/search/document.js.map +1 -0
  17. package/dist/cjs/agent/search/embedding.js +107 -0
  18. package/dist/cjs/agent/search/embedding.js.map +1 -0
  19. package/dist/cjs/agent/search/index.js +25 -0
  20. package/dist/cjs/agent/search/index.js.map +1 -0
  21. package/dist/cjs/agent/search/lexical.js +28 -0
  22. package/dist/cjs/agent/search/lexical.js.map +1 -0
  23. package/dist/cjs/agent/search/normalize.js +15 -0
  24. package/dist/cjs/agent/search/normalize.js.map +1 -0
  25. package/dist/cjs/agent/search/search.js +123 -0
  26. package/dist/cjs/agent/search/search.js.map +1 -0
  27. package/dist/cjs/agent/search/searchIndex.js +120 -0
  28. package/dist/cjs/agent/search/searchIndex.js.map +1 -0
  29. package/dist/cjs/agent/search/types.js +8 -0
  30. package/dist/cjs/agent/search/types.js.map +1 -0
  31. package/dist/cjs/agent/search/weights.js +34 -0
  32. package/dist/cjs/agent/search/weights.js.map +1 -0
  33. package/dist/cjs/agent/search/wordvectors.json +1 -0
  34. package/dist/cjs/components/catalog.js +18 -0
  35. package/dist/cjs/components/catalog.js.map +1 -1
  36. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.js +21 -0
  37. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.js.map +1 -0
  38. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.types.js +6 -0
  39. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.types.js.map +1 -0
  40. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.web.js +89 -0
  41. package/dist/cjs/components/onboarding/animated-status/AnimatedStage.web.js.map +1 -0
  42. package/dist/cjs/components/onboarding/animated-status/AnimatedStatusView.js +62 -0
  43. package/dist/cjs/components/onboarding/animated-status/AnimatedStatusView.js.map +1 -0
  44. package/dist/cjs/components/onboarding/animated-status/AnimatedStill.js +20 -0
  45. package/dist/cjs/components/onboarding/animated-status/AnimatedStill.js.map +1 -0
  46. package/dist/cjs/components/onboarding/animated-status/contract.js +87 -0
  47. package/dist/cjs/components/onboarding/animated-status/contract.js.map +1 -0
  48. package/dist/cjs/components/onboarding/animated-status/engine.js +40 -0
  49. package/dist/cjs/components/onboarding/animated-status/engine.js.map +1 -0
  50. package/dist/cjs/components/onboarding/animated-status/index.js +20 -0
  51. package/dist/cjs/components/onboarding/animated-status/index.js.map +1 -0
  52. package/dist/cjs/components/onboarding/animated-status/presets.json +126 -0
  53. package/dist/cjs/components/onboarding/animated-status/riv.js +7 -0
  54. package/dist/cjs/components/onboarding/animated-status/riv.js.map +1 -0
  55. package/dist/cjs/components/onboarding/index.js +4 -0
  56. package/dist/cjs/components/onboarding/index.js.map +1 -1
  57. package/dist/cjs/components/onboarding/presets.js +90 -84
  58. package/dist/cjs/components/onboarding/presets.js.map +1 -1
  59. package/dist/cjs/components/onboarding/receipt-printer/ReceiptStage.js +43 -6
  60. package/dist/cjs/components/onboarding/receipt-printer/ReceiptStage.js.map +1 -1
  61. package/dist/cjs/components/onboarding/send-completion/SendCompletionView.js +111 -0
  62. package/dist/cjs/components/onboarding/send-completion/SendCompletionView.js.map +1 -0
  63. package/dist/cjs/components/onboarding/send-completion/SendStage.js +37 -0
  64. package/dist/cjs/components/onboarding/send-completion/SendStage.js.map +1 -0
  65. package/dist/cjs/components/onboarding/send-completion/SendStage.types.js +6 -0
  66. package/dist/cjs/components/onboarding/send-completion/SendStage.types.js.map +1 -0
  67. package/dist/cjs/components/onboarding/send-completion/SendStage.web.js +107 -0
  68. package/dist/cjs/components/onboarding/send-completion/SendStage.web.js.map +1 -0
  69. package/dist/cjs/components/onboarding/send-completion/SendStill.js +17 -0
  70. package/dist/cjs/components/onboarding/send-completion/SendStill.js.map +1 -0
  71. package/dist/cjs/components/onboarding/send-completion/contract.js +83 -0
  72. package/dist/cjs/components/onboarding/send-completion/contract.js.map +1 -0
  73. package/dist/cjs/components/onboarding/send-completion/engine.js +32 -0
  74. package/dist/cjs/components/onboarding/send-completion/engine.js.map +1 -0
  75. package/dist/cjs/components/onboarding/send-completion/index.js +22 -0
  76. package/dist/cjs/components/onboarding/send-completion/index.js.map +1 -0
  77. package/dist/cjs/components/onboarding/send-completion/presets.json +132 -0
  78. package/dist/cjs/components/onboarding/send-completion/riv.js +7 -0
  79. package/dist/cjs/components/onboarding/send-completion/riv.js.map +1 -0
  80. package/dist/cjs/components/onboarding/shared/actions-data.js +2 -0
  81. package/dist/cjs/components/onboarding/shared/actions-data.js.map +1 -1
  82. package/dist/cjs/components/onboarding/shared/configColor.js +76 -0
  83. package/dist/cjs/components/onboarding/shared/configColor.js.map +1 -0
  84. package/dist/cjs/components/onboarding/shared/contract.js +4 -0
  85. package/dist/cjs/components/onboarding/shared/contract.js.map +1 -1
  86. package/dist/cjs/components/onboarding/shared/describe.js +1 -1
  87. package/dist/cjs/components/onboarding/shared/describe.js.map +1 -1
  88. package/dist/cjs/components/onboarding/shared/mock.js +2 -0
  89. package/dist/cjs/components/onboarding/shared/mock.js.map +1 -1
  90. package/dist/cjs/components/onboarding/views.js +8 -0
  91. package/dist/cjs/components/onboarding/views.js.map +1 -1
  92. package/dist/cjs/index.js +1 -1
  93. package/dist/cjs/index.js.map +1 -1
  94. package/dist/cjs/motion/MotionPlayer.js +42 -0
  95. package/dist/cjs/motion/MotionPlayer.js.map +1 -0
  96. package/dist/cjs/motion/agent.js +323 -0
  97. package/dist/cjs/motion/agent.js.map +1 -0
  98. package/dist/cjs/motion/cat/Cat.js +79 -0
  99. package/dist/cjs/motion/cat/Cat.js.map +1 -0
  100. package/dist/cjs/motion/cat/animation.js +204 -0
  101. package/dist/cjs/motion/cat/animation.js.map +1 -0
  102. package/dist/cjs/motion/cat/art.generated.js +37 -0
  103. package/dist/cjs/motion/cat/art.generated.js.map +1 -0
  104. package/dist/cjs/motion/cat/config.js +136 -0
  105. package/dist/cjs/motion/cat/config.js.map +1 -0
  106. package/dist/cjs/motion/cat/index.js +75 -0
  107. package/dist/cjs/motion/cat/index.js.map +1 -0
  108. package/dist/cjs/motion/cat/rig.js +99 -0
  109. package/dist/cjs/motion/cat/rig.js.map +1 -0
  110. package/dist/cjs/motion/cat/scene.js +148 -0
  111. package/dist/cjs/motion/cat/scene.js.map +1 -0
  112. package/dist/cjs/motion/configurable/config.js +477 -0
  113. package/dist/cjs/motion/configurable/config.js.map +1 -0
  114. package/dist/cjs/motion/configurable/controls.js +44 -0
  115. package/dist/cjs/motion/configurable/controls.js.map +1 -0
  116. package/dist/cjs/motion/easing.js +62 -0
  117. package/dist/cjs/motion/easing.js.map +1 -0
  118. package/dist/cjs/motion/fit.js +12 -0
  119. package/dist/cjs/motion/fit.js.map +1 -0
  120. package/dist/cjs/motion/index.js +101 -0
  121. package/dist/cjs/motion/index.js.map +1 -0
  122. package/dist/cjs/motion/neon/GlowRenderer.js +18 -0
  123. package/dist/cjs/motion/neon/GlowRenderer.js.map +1 -0
  124. package/dist/cjs/motion/neon/NeonCanvas.js +97 -0
  125. package/dist/cjs/motion/neon/NeonCanvas.js.map +1 -0
  126. package/dist/cjs/motion/neon/NeonText.js +108 -0
  127. package/dist/cjs/motion/neon/NeonText.js.map +1 -0
  128. package/dist/cjs/motion/neon/NeonTextFrame.js +36 -0
  129. package/dist/cjs/motion/neon/NeonTextFrame.js.map +1 -0
  130. package/dist/cjs/motion/neon/artwork.js +102 -0
  131. package/dist/cjs/motion/neon/artwork.js.map +1 -0
  132. package/dist/cjs/motion/neon/audio.js +165 -0
  133. package/dist/cjs/motion/neon/audio.js.map +1 -0
  134. package/dist/cjs/motion/neon/config.js +334 -0
  135. package/dist/cjs/motion/neon/config.js.map +1 -0
  136. package/dist/cjs/motion/neon/flicker.js +196 -0
  137. package/dist/cjs/motion/neon/flicker.js.map +1 -0
  138. package/dist/cjs/motion/neon/fonts.js +52 -0
  139. package/dist/cjs/motion/neon/fonts.js.map +1 -0
  140. package/dist/cjs/motion/neon/frame.js +24 -0
  141. package/dist/cjs/motion/neon/frame.js.map +1 -0
  142. package/dist/cjs/motion/neon/glitch.js +114 -0
  143. package/dist/cjs/motion/neon/glitch.js.map +1 -0
  144. package/dist/cjs/motion/neon/index.js +119 -0
  145. package/dist/cjs/motion/neon/index.js.map +1 -0
  146. package/dist/cjs/motion/neon/layers.js +68 -0
  147. package/dist/cjs/motion/neon/layers.js.map +1 -0
  148. package/dist/cjs/motion/neon/material.js +56 -0
  149. package/dist/cjs/motion/neon/material.js.map +1 -0
  150. package/dist/cjs/motion/neon/random.js +43 -0
  151. package/dist/cjs/motion/neon/random.js.map +1 -0
  152. package/dist/cjs/motion/neon/scene.js +549 -0
  153. package/dist/cjs/motion/neon/scene.js.map +1 -0
  154. package/dist/cjs/motion/neon/synth.js +213 -0
  155. package/dist/cjs/motion/neon/synth.js.map +1 -0
  156. package/dist/cjs/motion/neon/typography.js +81 -0
  157. package/dist/cjs/motion/neon/typography.js.map +1 -0
  158. package/dist/cjs/motion/neon/wall.js +113 -0
  159. package/dist/cjs/motion/neon/wall.js.map +1 -0
  160. package/dist/cjs/motion/paperfold/PaperFold.js +40 -0
  161. package/dist/cjs/motion/paperfold/PaperFold.js.map +1 -0
  162. package/dist/cjs/motion/paperfold/PaperFoldFrame.js +290 -0
  163. package/dist/cjs/motion/paperfold/PaperFoldFrame.js.map +1 -0
  164. package/dist/cjs/motion/paperfold/PaperFoldPlayer.js +59 -0
  165. package/dist/cjs/motion/paperfold/PaperFoldPlayer.js.map +1 -0
  166. package/dist/cjs/motion/paperfold/art.js +388 -0
  167. package/dist/cjs/motion/paperfold/art.js.map +1 -0
  168. package/dist/cjs/motion/paperfold/config.js +103 -0
  169. package/dist/cjs/motion/paperfold/config.js.map +1 -0
  170. package/dist/cjs/motion/paperfold/controls.js +493 -0
  171. package/dist/cjs/motion/paperfold/controls.js.map +1 -0
  172. package/dist/cjs/motion/paperfold/engine.js +722 -0
  173. package/dist/cjs/motion/paperfold/engine.js.map +1 -0
  174. package/dist/cjs/motion/paperfold/fonts.js +25 -0
  175. package/dist/cjs/motion/paperfold/fonts.js.map +1 -0
  176. package/dist/cjs/motion/paperfold/index.js +113 -0
  177. package/dist/cjs/motion/paperfold/index.js.map +1 -0
  178. package/dist/cjs/motion/paperfold/manipulate.js +170 -0
  179. package/dist/cjs/motion/paperfold/manipulate.js.map +1 -0
  180. package/dist/cjs/motion/paperfold/presets.js +119 -0
  181. package/dist/cjs/motion/paperfold/presets.js.map +1 -0
  182. package/dist/cjs/motion/paperfold/template.js +40 -0
  183. package/dist/cjs/motion/paperfold/template.js.map +1 -0
  184. package/dist/cjs/motion/player.js +203 -0
  185. package/dist/cjs/motion/player.js.map +1 -0
  186. package/dist/cjs/motion/promo/PromoFrame.js +293 -0
  187. package/dist/cjs/motion/promo/PromoFrame.js.map +1 -0
  188. package/dist/cjs/motion/promo/PromoShowcasePlayer.js +59 -0
  189. package/dist/cjs/motion/promo/PromoShowcasePlayer.js.map +1 -0
  190. package/dist/cjs/motion/promo/config.js +565 -0
  191. package/dist/cjs/motion/promo/config.js.map +1 -0
  192. package/dist/cjs/motion/promo/controls.js +571 -0
  193. package/dist/cjs/motion/promo/controls.js.map +1 -0
  194. package/dist/cjs/motion/promo/easing.js +35 -0
  195. package/dist/cjs/motion/promo/easing.js.map +1 -0
  196. package/dist/cjs/motion/promo/engine.js +567 -0
  197. package/dist/cjs/motion/promo/engine.js.map +1 -0
  198. package/dist/cjs/motion/promo/fonts.js +20 -0
  199. package/dist/cjs/motion/promo/fonts.js.map +1 -0
  200. package/dist/cjs/motion/promo/icons.js +29 -0
  201. package/dist/cjs/motion/promo/icons.js.map +1 -0
  202. package/dist/cjs/motion/promo/index.js +73 -0
  203. package/dist/cjs/motion/promo/index.js.map +1 -0
  204. package/dist/cjs/motion/promo/presets.js +44 -0
  205. package/dist/cjs/motion/promo/presets.js.map +1 -0
  206. package/dist/cjs/motion/promo/template.js +38 -0
  207. package/dist/cjs/motion/promo/template.js.map +1 -0
  208. package/dist/cjs/motion/replication2/Replication2Player.js +93 -0
  209. package/dist/cjs/motion/replication2/Replication2Player.js.map +1 -0
  210. package/dist/cjs/motion/replication2/config.js +352 -0
  211. package/dist/cjs/motion/replication2/config.js.map +1 -0
  212. package/dist/cjs/motion/replication2/controls.js +286 -0
  213. package/dist/cjs/motion/replication2/controls.js.map +1 -0
  214. package/dist/cjs/motion/replication2/driver.js +68 -0
  215. package/dist/cjs/motion/replication2/driver.js.map +1 -0
  216. package/dist/cjs/motion/replication2/easing.js +97 -0
  217. package/dist/cjs/motion/replication2/easing.js.map +1 -0
  218. package/dist/cjs/motion/replication2/engine.js +481 -0
  219. package/dist/cjs/motion/replication2/engine.js.map +1 -0
  220. package/dist/cjs/motion/replication2/html.js +88 -0
  221. package/dist/cjs/motion/replication2/html.js.map +1 -0
  222. package/dist/cjs/motion/replication2/index.js +61 -0
  223. package/dist/cjs/motion/replication2/index.js.map +1 -0
  224. package/dist/cjs/motion/replication2/measure.js +30 -0
  225. package/dist/cjs/motion/replication2/measure.js.map +1 -0
  226. package/dist/cjs/motion/replication2/metrics.js +10 -0
  227. package/dist/cjs/motion/replication2/metrics.js.map +1 -0
  228. package/dist/cjs/motion/replication2/presets.js +67 -0
  229. package/dist/cjs/motion/replication2/presets.js.map +1 -0
  230. package/dist/cjs/motion/replication2/riv.js +7 -0
  231. package/dist/cjs/motion/replication2/riv.js.map +1 -0
  232. package/dist/cjs/motion/replication2/rive-contract.js +158 -0
  233. package/dist/cjs/motion/replication2/rive-contract.js.map +1 -0
  234. package/dist/cjs/motion/replication2/template.js +35 -0
  235. package/dist/cjs/motion/replication2/template.js.map +1 -0
  236. package/dist/cjs/motion/sample.js +149 -0
  237. package/dist/cjs/motion/sample.js.map +1 -0
  238. package/dist/cjs/motion/templates/hey-template.js +1552 -0
  239. package/dist/cjs/motion/templates/hey-template.js.map +1 -0
  240. package/dist/cjs/motion/templates/index.js +22 -0
  241. package/dist/cjs/motion/templates/index.js.map +1 -0
  242. package/dist/cjs/motion/templates/word-motion.js +1165 -0
  243. package/dist/cjs/motion/templates/word-motion.js.map +1 -0
  244. package/dist/cjs/motion/types.js +3 -0
  245. package/dist/cjs/motion/types.js.map +1 -0
  246. package/dist/cjs/motion/typesurface/TypeSurfaceCanvas.js +62 -0
  247. package/dist/cjs/motion/typesurface/TypeSurfaceCanvas.js.map +1 -0
  248. package/dist/cjs/motion/typesurface/art.js +861 -0
  249. package/dist/cjs/motion/typesurface/art.js.map +1 -0
  250. package/dist/cjs/motion/typesurface/config.js +269 -0
  251. package/dist/cjs/motion/typesurface/config.js.map +1 -0
  252. package/dist/cjs/motion/typesurface/engine.js +607 -0
  253. package/dist/cjs/motion/typesurface/engine.js.map +1 -0
  254. package/dist/cjs/motion/typesurface/fonts.js +45 -0
  255. package/dist/cjs/motion/typesurface/fonts.js.map +1 -0
  256. package/dist/cjs/motion/typesurface/index.js +72 -0
  257. package/dist/cjs/motion/typesurface/index.js.map +1 -0
  258. package/dist/cjs/motion/typesurface/layout.js +130 -0
  259. package/dist/cjs/motion/typesurface/layout.js.map +1 -0
  260. package/dist/cjs/motion/typesurface/ops.js +175 -0
  261. package/dist/cjs/motion/typesurface/ops.js.map +1 -0
  262. package/dist/cjs/motion/typesurface/presets.js +192 -0
  263. package/dist/cjs/motion/typesurface/presets.js.map +1 -0
  264. package/dist/cjs/motion/typesurface/renderer.js +672 -0
  265. package/dist/cjs/motion/typesurface/renderer.js.map +1 -0
  266. package/dist/cjs/motion/typesurface/shaders.js +300 -0
  267. package/dist/cjs/motion/typesurface/shaders.js.map +1 -0
  268. package/dist/cjs/motion/typesurface/surfaces.js +156 -0
  269. package/dist/cjs/motion/typesurface/surfaces.js.map +1 -0
  270. package/dist/cjs/motion/typesurface/text.js +34 -0
  271. package/dist/cjs/motion/typesurface/text.js.map +1 -0
  272. package/dist/cjs/motion/typesurface/timeline.js +64 -0
  273. package/dist/cjs/motion/typesurface/timeline.js.map +1 -0
  274. package/dist/cjs/motion/validate.js +89 -0
  275. package/dist/cjs/motion/validate.js.map +1 -0
  276. package/dist/cjs/native/RiveReceiptStage.js +9 -150
  277. package/dist/cjs/native/RiveReceiptStage.js.map +1 -1
  278. package/dist/cjs/native/riveReceiptStageFactory.js +162 -0
  279. package/dist/cjs/native/riveReceiptStageFactory.js.map +1 -0
  280. package/dist/cjs/tokens/stage.js +10 -0
  281. package/dist/cjs/tokens/stage.js.map +1 -0
  282. package/dist/esm/agent/AgentComponent.js +1 -1
  283. package/dist/esm/agent/AgentComponent.js.map +1 -1
  284. package/dist/esm/agent/base.d.ts +11 -0
  285. package/dist/esm/agent/base.d.ts.map +1 -0
  286. package/dist/esm/agent/base.js +11 -0
  287. package/dist/esm/agent/base.js.map +1 -0
  288. package/dist/esm/agent/catalog.d.ts +0 -8
  289. package/dist/esm/agent/catalog.d.ts.map +1 -1
  290. package/dist/esm/agent/catalog.js +0 -31
  291. package/dist/esm/agent/catalog.js.map +1 -1
  292. package/dist/esm/agent/core.d.ts +6 -7
  293. package/dist/esm/agent/core.d.ts.map +1 -1
  294. package/dist/esm/agent/core.js +6 -7
  295. package/dist/esm/agent/core.js.map +1 -1
  296. package/dist/esm/agent/index.d.ts +6 -5
  297. package/dist/esm/agent/index.d.ts.map +1 -1
  298. package/dist/esm/agent/index.js +6 -5
  299. package/dist/esm/agent/index.js.map +1 -1
  300. package/dist/esm/agent/manifests.d.ts.map +1 -1
  301. package/dist/esm/agent/manifests.js +81 -1
  302. package/dist/esm/agent/manifests.js.map +1 -1
  303. package/dist/esm/agent/result.d.ts.map +1 -1
  304. package/dist/esm/agent/result.js +6 -0
  305. package/dist/esm/agent/result.js.map +1 -1
  306. package/dist/esm/agent/search/document.d.ts +6 -0
  307. package/dist/esm/agent/search/document.d.ts.map +1 -0
  308. package/dist/esm/agent/search/document.js +46 -0
  309. package/dist/esm/agent/search/document.js.map +1 -0
  310. package/dist/esm/agent/search/embedding.d.ts +31 -0
  311. package/dist/esm/agent/search/embedding.d.ts.map +1 -0
  312. package/dist/esm/agent/search/embedding.js +103 -0
  313. package/dist/esm/agent/search/embedding.js.map +1 -0
  314. package/dist/esm/agent/search/index.d.ts +10 -0
  315. package/dist/esm/agent/search/index.d.ts.map +1 -0
  316. package/dist/esm/agent/search/index.js +17 -0
  317. package/dist/esm/agent/search/index.js.map +1 -0
  318. package/dist/esm/agent/search/lexical.d.ts +3 -0
  319. package/dist/esm/agent/search/lexical.d.ts.map +1 -0
  320. package/dist/esm/agent/search/lexical.js +25 -0
  321. package/dist/esm/agent/search/lexical.js.map +1 -0
  322. package/dist/esm/agent/search/normalize.d.ts +13 -0
  323. package/dist/esm/agent/search/normalize.d.ts.map +1 -0
  324. package/dist/esm/agent/search/normalize.js +12 -0
  325. package/dist/esm/agent/search/normalize.js.map +1 -0
  326. package/dist/esm/agent/search/search.d.ts +42 -0
  327. package/dist/esm/agent/search/search.d.ts.map +1 -0
  328. package/dist/esm/agent/search/search.js +119 -0
  329. package/dist/esm/agent/search/search.js.map +1 -0
  330. package/dist/esm/agent/search/searchIndex.d.ts +42 -0
  331. package/dist/esm/agent/search/searchIndex.d.ts.map +1 -0
  332. package/dist/esm/agent/search/searchIndex.js +114 -0
  333. package/dist/esm/agent/search/searchIndex.js.map +1 -0
  334. package/dist/esm/agent/search/types.d.ts +67 -0
  335. package/dist/esm/agent/search/types.d.ts.map +1 -0
  336. package/dist/esm/agent/search/types.js +7 -0
  337. package/dist/esm/agent/search/types.js.map +1 -0
  338. package/dist/esm/agent/search/weights.d.ts +22 -0
  339. package/dist/esm/agent/search/weights.d.ts.map +1 -0
  340. package/dist/esm/agent/search/weights.js +31 -0
  341. package/dist/esm/agent/search/weights.js.map +1 -0
  342. package/dist/esm/agent/search/wordvectors.json +1 -0
  343. package/dist/esm/agent/types.d.ts +1 -1
  344. package/dist/esm/agent/types.d.ts.map +1 -1
  345. package/dist/esm/components/catalog.d.ts +1 -1
  346. package/dist/esm/components/catalog.d.ts.map +1 -1
  347. package/dist/esm/components/catalog.js +18 -0
  348. package/dist/esm/components/catalog.js.map +1 -1
  349. package/dist/esm/components/onboarding/animated-status/AnimatedStage.d.ts +9 -0
  350. package/dist/esm/components/onboarding/animated-status/AnimatedStage.d.ts.map +1 -0
  351. package/dist/esm/components/onboarding/animated-status/AnimatedStage.js +18 -0
  352. package/dist/esm/components/onboarding/animated-status/AnimatedStage.js.map +1 -0
  353. package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.d.ts +31 -0
  354. package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.d.ts.map +1 -0
  355. package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.js +3 -0
  356. package/dist/esm/components/onboarding/animated-status/AnimatedStage.types.js.map +1 -0
  357. package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.d.ts +4 -0
  358. package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.d.ts.map +1 -0
  359. package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.js +86 -0
  360. package/dist/esm/components/onboarding/animated-status/AnimatedStage.web.js.map +1 -0
  361. package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.d.ts +32 -0
  362. package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.d.ts.map +1 -0
  363. package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.js +59 -0
  364. package/dist/esm/components/onboarding/animated-status/AnimatedStatusView.js.map +1 -0
  365. package/dist/esm/components/onboarding/animated-status/AnimatedStill.d.ts +8 -0
  366. package/dist/esm/components/onboarding/animated-status/AnimatedStill.d.ts.map +1 -0
  367. package/dist/esm/components/onboarding/animated-status/AnimatedStill.js +17 -0
  368. package/dist/esm/components/onboarding/animated-status/AnimatedStill.js.map +1 -0
  369. package/dist/esm/components/onboarding/animated-status/contract.d.ts +61 -0
  370. package/dist/esm/components/onboarding/animated-status/contract.d.ts.map +1 -0
  371. package/dist/esm/components/onboarding/animated-status/contract.js +78 -0
  372. package/dist/esm/components/onboarding/animated-status/contract.js.map +1 -0
  373. package/dist/esm/components/onboarding/animated-status/engine.d.ts +24 -0
  374. package/dist/esm/components/onboarding/animated-status/engine.d.ts.map +1 -0
  375. package/dist/esm/components/onboarding/animated-status/engine.js +32 -0
  376. package/dist/esm/components/onboarding/animated-status/engine.js.map +1 -0
  377. package/dist/esm/components/onboarding/animated-status/index.d.ts +5 -0
  378. package/dist/esm/components/onboarding/animated-status/index.d.ts.map +1 -0
  379. package/dist/esm/components/onboarding/animated-status/index.js +4 -0
  380. package/dist/esm/components/onboarding/animated-status/index.js.map +1 -0
  381. package/dist/esm/components/onboarding/animated-status/presets.json +126 -0
  382. package/dist/esm/components/onboarding/animated-status/riv.d.ts +3 -0
  383. package/dist/esm/components/onboarding/animated-status/riv.d.ts.map +1 -0
  384. package/dist/esm/components/onboarding/animated-status/riv.js +4 -0
  385. package/dist/esm/components/onboarding/animated-status/riv.js.map +1 -0
  386. package/dist/esm/components/onboarding/index.d.ts +2 -0
  387. package/dist/esm/components/onboarding/index.d.ts.map +1 -1
  388. package/dist/esm/components/onboarding/index.js +4 -0
  389. package/dist/esm/components/onboarding/index.js.map +1 -1
  390. package/dist/esm/components/onboarding/presets.d.ts.map +1 -1
  391. package/dist/esm/components/onboarding/presets.js +6 -0
  392. package/dist/esm/components/onboarding/presets.js.map +1 -1
  393. package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.d.ts +4 -6
  394. package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.d.ts.map +1 -1
  395. package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.js +42 -6
  396. package/dist/esm/components/onboarding/receipt-printer/ReceiptStage.js.map +1 -1
  397. package/dist/esm/components/onboarding/send-completion/SendCompletionView.d.ts +47 -0
  398. package/dist/esm/components/onboarding/send-completion/SendCompletionView.d.ts.map +1 -0
  399. package/dist/esm/components/onboarding/send-completion/SendCompletionView.js +108 -0
  400. package/dist/esm/components/onboarding/send-completion/SendCompletionView.js.map +1 -0
  401. package/dist/esm/components/onboarding/send-completion/SendStage.d.ts +9 -0
  402. package/dist/esm/components/onboarding/send-completion/SendStage.d.ts.map +1 -0
  403. package/dist/esm/components/onboarding/send-completion/SendStage.js +34 -0
  404. package/dist/esm/components/onboarding/send-completion/SendStage.js.map +1 -0
  405. package/dist/esm/components/onboarding/send-completion/SendStage.types.d.ts +33 -0
  406. package/dist/esm/components/onboarding/send-completion/SendStage.types.d.ts.map +1 -0
  407. package/dist/esm/components/onboarding/send-completion/SendStage.types.js +3 -0
  408. package/dist/esm/components/onboarding/send-completion/SendStage.types.js.map +1 -0
  409. package/dist/esm/components/onboarding/send-completion/SendStage.web.d.ts +4 -0
  410. package/dist/esm/components/onboarding/send-completion/SendStage.web.d.ts.map +1 -0
  411. package/dist/esm/components/onboarding/send-completion/SendStage.web.js +104 -0
  412. package/dist/esm/components/onboarding/send-completion/SendStage.web.js.map +1 -0
  413. package/dist/esm/components/onboarding/send-completion/SendStill.d.ts +11 -0
  414. package/dist/esm/components/onboarding/send-completion/SendStill.d.ts.map +1 -0
  415. package/dist/esm/components/onboarding/send-completion/SendStill.js +14 -0
  416. package/dist/esm/components/onboarding/send-completion/SendStill.js.map +1 -0
  417. package/dist/esm/components/onboarding/send-completion/contract.d.ts +99 -0
  418. package/dist/esm/components/onboarding/send-completion/contract.d.ts.map +1 -0
  419. package/dist/esm/components/onboarding/send-completion/contract.js +76 -0
  420. package/dist/esm/components/onboarding/send-completion/contract.js.map +1 -0
  421. package/dist/esm/components/onboarding/send-completion/engine.d.ts +20 -0
  422. package/dist/esm/components/onboarding/send-completion/engine.d.ts.map +1 -0
  423. package/dist/esm/components/onboarding/send-completion/engine.js +28 -0
  424. package/dist/esm/components/onboarding/send-completion/engine.js.map +1 -0
  425. package/dist/esm/components/onboarding/send-completion/index.d.ts +6 -0
  426. package/dist/esm/components/onboarding/send-completion/index.d.ts.map +1 -0
  427. package/dist/esm/components/onboarding/send-completion/index.js +6 -0
  428. package/dist/esm/components/onboarding/send-completion/index.js.map +1 -0
  429. package/dist/esm/components/onboarding/send-completion/presets.json +132 -0
  430. package/dist/esm/components/onboarding/send-completion/riv.d.ts +3 -0
  431. package/dist/esm/components/onboarding/send-completion/riv.d.ts.map +1 -0
  432. package/dist/esm/components/onboarding/send-completion/riv.js +4 -0
  433. package/dist/esm/components/onboarding/send-completion/riv.js.map +1 -0
  434. package/dist/esm/components/onboarding/shared/actions-data.d.ts.map +1 -1
  435. package/dist/esm/components/onboarding/shared/actions-data.js +2 -0
  436. package/dist/esm/components/onboarding/shared/actions-data.js.map +1 -1
  437. package/dist/esm/components/onboarding/shared/configColor.d.ts +29 -0
  438. package/dist/esm/components/onboarding/shared/configColor.d.ts.map +1 -0
  439. package/dist/esm/components/onboarding/shared/configColor.js +69 -0
  440. package/dist/esm/components/onboarding/shared/configColor.js.map +1 -0
  441. package/dist/esm/components/onboarding/shared/contract.d.ts +1 -1
  442. package/dist/esm/components/onboarding/shared/contract.d.ts.map +1 -1
  443. package/dist/esm/components/onboarding/shared/contract.js +4 -0
  444. package/dist/esm/components/onboarding/shared/contract.js.map +1 -1
  445. package/dist/esm/components/onboarding/shared/describe.d.ts.map +1 -1
  446. package/dist/esm/components/onboarding/shared/describe.js +1 -1
  447. package/dist/esm/components/onboarding/shared/describe.js.map +1 -1
  448. package/dist/esm/components/onboarding/shared/mock.d.ts +2 -0
  449. package/dist/esm/components/onboarding/shared/mock.d.ts.map +1 -1
  450. package/dist/esm/components/onboarding/shared/mock.js +2 -0
  451. package/dist/esm/components/onboarding/shared/mock.js.map +1 -1
  452. package/dist/esm/components/onboarding/views.d.ts.map +1 -1
  453. package/dist/esm/components/onboarding/views.js +8 -0
  454. package/dist/esm/components/onboarding/views.js.map +1 -1
  455. package/dist/esm/index.js +1 -1
  456. package/dist/esm/index.js.map +1 -1
  457. package/dist/esm/motion/MotionPlayer.d.ts +22 -0
  458. package/dist/esm/motion/MotionPlayer.d.ts.map +1 -0
  459. package/dist/esm/motion/MotionPlayer.js +39 -0
  460. package/dist/esm/motion/MotionPlayer.js.map +1 -0
  461. package/dist/esm/motion/agent.d.ts +146 -0
  462. package/dist/esm/motion/agent.d.ts.map +1 -0
  463. package/dist/esm/motion/agent.js +278 -0
  464. package/dist/esm/motion/agent.js.map +1 -0
  465. package/dist/esm/motion/cat/Cat.d.ts +43 -0
  466. package/dist/esm/motion/cat/Cat.d.ts.map +1 -0
  467. package/dist/esm/motion/cat/Cat.js +74 -0
  468. package/dist/esm/motion/cat/Cat.js.map +1 -0
  469. package/dist/esm/motion/cat/animation.d.ts +86 -0
  470. package/dist/esm/motion/cat/animation.d.ts.map +1 -0
  471. package/dist/esm/motion/cat/animation.js +193 -0
  472. package/dist/esm/motion/cat/animation.js.map +1 -0
  473. package/dist/esm/motion/cat/art.generated.d.ts +53 -0
  474. package/dist/esm/motion/cat/art.generated.d.ts.map +1 -0
  475. package/dist/esm/motion/cat/art.generated.js +34 -0
  476. package/dist/esm/motion/cat/art.generated.js.map +1 -0
  477. package/dist/esm/motion/cat/config.d.ts +103 -0
  478. package/dist/esm/motion/cat/config.d.ts.map +1 -0
  479. package/dist/esm/motion/cat/config.js +129 -0
  480. package/dist/esm/motion/cat/config.js.map +1 -0
  481. package/dist/esm/motion/cat/index.d.ts +13 -0
  482. package/dist/esm/motion/cat/index.d.ts.map +1 -0
  483. package/dist/esm/motion/cat/index.js +13 -0
  484. package/dist/esm/motion/cat/index.js.map +1 -0
  485. package/dist/esm/motion/cat/rig.d.ts +44 -0
  486. package/dist/esm/motion/cat/rig.d.ts.map +1 -0
  487. package/dist/esm/motion/cat/rig.js +86 -0
  488. package/dist/esm/motion/cat/rig.js.map +1 -0
  489. package/dist/esm/motion/cat/scene.d.ts +66 -0
  490. package/dist/esm/motion/cat/scene.d.ts.map +1 -0
  491. package/dist/esm/motion/cat/scene.js +137 -0
  492. package/dist/esm/motion/cat/scene.js.map +1 -0
  493. package/dist/esm/motion/configurable/config.d.ts +80 -0
  494. package/dist/esm/motion/configurable/config.d.ts.map +1 -0
  495. package/dist/esm/motion/configurable/config.js +468 -0
  496. package/dist/esm/motion/configurable/config.js.map +1 -0
  497. package/dist/esm/motion/configurable/controls.d.ts +74 -0
  498. package/dist/esm/motion/configurable/controls.d.ts.map +1 -0
  499. package/dist/esm/motion/configurable/controls.js +38 -0
  500. package/dist/esm/motion/configurable/controls.js.map +1 -0
  501. package/dist/esm/motion/easing.d.ts +4 -0
  502. package/dist/esm/motion/easing.d.ts.map +1 -0
  503. package/dist/esm/motion/easing.js +58 -0
  504. package/dist/esm/motion/easing.js.map +1 -0
  505. package/dist/esm/motion/fit.d.ts +8 -0
  506. package/dist/esm/motion/fit.d.ts.map +1 -0
  507. package/dist/esm/motion/fit.js +8 -0
  508. package/dist/esm/motion/fit.js.map +1 -0
  509. package/dist/esm/motion/index.d.ts +27 -0
  510. package/dist/esm/motion/index.d.ts.map +1 -0
  511. package/dist/esm/motion/index.js +21 -0
  512. package/dist/esm/motion/index.js.map +1 -0
  513. package/dist/esm/motion/neon/GlowRenderer.d.ts +31 -0
  514. package/dist/esm/motion/neon/GlowRenderer.d.ts.map +1 -0
  515. package/dist/esm/motion/neon/GlowRenderer.js +14 -0
  516. package/dist/esm/motion/neon/GlowRenderer.js.map +1 -0
  517. package/dist/esm/motion/neon/NeonCanvas.d.ts +42 -0
  518. package/dist/esm/motion/neon/NeonCanvas.d.ts.map +1 -0
  519. package/dist/esm/motion/neon/NeonCanvas.js +92 -0
  520. package/dist/esm/motion/neon/NeonCanvas.js.map +1 -0
  521. package/dist/esm/motion/neon/NeonText.d.ts +26 -0
  522. package/dist/esm/motion/neon/NeonText.d.ts.map +1 -0
  523. package/dist/esm/motion/neon/NeonText.js +103 -0
  524. package/dist/esm/motion/neon/NeonText.js.map +1 -0
  525. package/dist/esm/motion/neon/NeonTextFrame.d.ts +29 -0
  526. package/dist/esm/motion/neon/NeonTextFrame.d.ts.map +1 -0
  527. package/dist/esm/motion/neon/NeonTextFrame.js +33 -0
  528. package/dist/esm/motion/neon/NeonTextFrame.js.map +1 -0
  529. package/dist/esm/motion/neon/artwork.d.ts +29 -0
  530. package/dist/esm/motion/neon/artwork.d.ts.map +1 -0
  531. package/dist/esm/motion/neon/artwork.js +98 -0
  532. package/dist/esm/motion/neon/artwork.js.map +1 -0
  533. package/dist/esm/motion/neon/audio.d.ts +49 -0
  534. package/dist/esm/motion/neon/audio.d.ts.map +1 -0
  535. package/dist/esm/motion/neon/audio.js +161 -0
  536. package/dist/esm/motion/neon/audio.js.map +1 -0
  537. package/dist/esm/motion/neon/config.d.ts +319 -0
  538. package/dist/esm/motion/neon/config.d.ts.map +1 -0
  539. package/dist/esm/motion/neon/config.js +319 -0
  540. package/dist/esm/motion/neon/config.js.map +1 -0
  541. package/dist/esm/motion/neon/flicker.d.ts +82 -0
  542. package/dist/esm/motion/neon/flicker.d.ts.map +1 -0
  543. package/dist/esm/motion/neon/flicker.js +187 -0
  544. package/dist/esm/motion/neon/flicker.js.map +1 -0
  545. package/dist/esm/motion/neon/fonts.d.ts +29 -0
  546. package/dist/esm/motion/neon/fonts.d.ts.map +1 -0
  547. package/dist/esm/motion/neon/fonts.js +47 -0
  548. package/dist/esm/motion/neon/fonts.js.map +1 -0
  549. package/dist/esm/motion/neon/frame.d.ts +22 -0
  550. package/dist/esm/motion/neon/frame.d.ts.map +1 -0
  551. package/dist/esm/motion/neon/frame.js +20 -0
  552. package/dist/esm/motion/neon/frame.js.map +1 -0
  553. package/dist/esm/motion/neon/glitch.d.ts +64 -0
  554. package/dist/esm/motion/neon/glitch.d.ts.map +1 -0
  555. package/dist/esm/motion/neon/glitch.js +108 -0
  556. package/dist/esm/motion/neon/glitch.js.map +1 -0
  557. package/dist/esm/motion/neon/index.d.ts +29 -0
  558. package/dist/esm/motion/neon/index.d.ts.map +1 -0
  559. package/dist/esm/motion/neon/index.js +28 -0
  560. package/dist/esm/motion/neon/index.js.map +1 -0
  561. package/dist/esm/motion/neon/layers.d.ts +56 -0
  562. package/dist/esm/motion/neon/layers.d.ts.map +1 -0
  563. package/dist/esm/motion/neon/layers.js +64 -0
  564. package/dist/esm/motion/neon/layers.js.map +1 -0
  565. package/dist/esm/motion/neon/material.d.ts +68 -0
  566. package/dist/esm/motion/neon/material.d.ts.map +1 -0
  567. package/dist/esm/motion/neon/material.js +51 -0
  568. package/dist/esm/motion/neon/material.js.map +1 -0
  569. package/dist/esm/motion/neon/random.d.ts +15 -0
  570. package/dist/esm/motion/neon/random.d.ts.map +1 -0
  571. package/dist/esm/motion/neon/random.js +37 -0
  572. package/dist/esm/motion/neon/random.js.map +1 -0
  573. package/dist/esm/motion/neon/scene.d.ts +255 -0
  574. package/dist/esm/motion/neon/scene.d.ts.map +1 -0
  575. package/dist/esm/motion/neon/scene.js +532 -0
  576. package/dist/esm/motion/neon/scene.js.map +1 -0
  577. package/dist/esm/motion/neon/synth.d.ts +18 -0
  578. package/dist/esm/motion/neon/synth.d.ts.map +1 -0
  579. package/dist/esm/motion/neon/synth.js +208 -0
  580. package/dist/esm/motion/neon/synth.js.map +1 -0
  581. package/dist/esm/motion/neon/typography.d.ts +53 -0
  582. package/dist/esm/motion/neon/typography.d.ts.map +1 -0
  583. package/dist/esm/motion/neon/typography.js +74 -0
  584. package/dist/esm/motion/neon/typography.js.map +1 -0
  585. package/dist/esm/motion/neon/wall.d.ts +62 -0
  586. package/dist/esm/motion/neon/wall.d.ts.map +1 -0
  587. package/dist/esm/motion/neon/wall.js +106 -0
  588. package/dist/esm/motion/neon/wall.js.map +1 -0
  589. package/dist/esm/motion/paperfold/PaperFold.d.ts +36 -0
  590. package/dist/esm/motion/paperfold/PaperFold.d.ts.map +1 -0
  591. package/dist/esm/motion/paperfold/PaperFold.js +37 -0
  592. package/dist/esm/motion/paperfold/PaperFold.js.map +1 -0
  593. package/dist/esm/motion/paperfold/PaperFoldFrame.d.ts +39 -0
  594. package/dist/esm/motion/paperfold/PaperFoldFrame.d.ts.map +1 -0
  595. package/dist/esm/motion/paperfold/PaperFoldFrame.js +283 -0
  596. package/dist/esm/motion/paperfold/PaperFoldFrame.js.map +1 -0
  597. package/dist/esm/motion/paperfold/PaperFoldPlayer.d.ts +27 -0
  598. package/dist/esm/motion/paperfold/PaperFoldPlayer.d.ts.map +1 -0
  599. package/dist/esm/motion/paperfold/PaperFoldPlayer.js +56 -0
  600. package/dist/esm/motion/paperfold/PaperFoldPlayer.js.map +1 -0
  601. package/dist/esm/motion/paperfold/art.d.ts +148 -0
  602. package/dist/esm/motion/paperfold/art.d.ts.map +1 -0
  603. package/dist/esm/motion/paperfold/art.js +374 -0
  604. package/dist/esm/motion/paperfold/art.js.map +1 -0
  605. package/dist/esm/motion/paperfold/config.d.ts +47 -0
  606. package/dist/esm/motion/paperfold/config.d.ts.map +1 -0
  607. package/dist/esm/motion/paperfold/config.js +96 -0
  608. package/dist/esm/motion/paperfold/config.js.map +1 -0
  609. package/dist/esm/motion/paperfold/controls.d.ts +57 -0
  610. package/dist/esm/motion/paperfold/controls.d.ts.map +1 -0
  611. package/dist/esm/motion/paperfold/controls.js +506 -0
  612. package/dist/esm/motion/paperfold/controls.js.map +1 -0
  613. package/dist/esm/motion/paperfold/engine.d.ts +397 -0
  614. package/dist/esm/motion/paperfold/engine.d.ts.map +1 -0
  615. package/dist/esm/motion/paperfold/engine.js +699 -0
  616. package/dist/esm/motion/paperfold/engine.js.map +1 -0
  617. package/dist/esm/motion/paperfold/fonts.d.ts +3 -0
  618. package/dist/esm/motion/paperfold/fonts.d.ts.map +1 -0
  619. package/dist/esm/motion/paperfold/fonts.js +21 -0
  620. package/dist/esm/motion/paperfold/fonts.js.map +1 -0
  621. package/dist/esm/motion/paperfold/index.d.ts +17 -0
  622. package/dist/esm/motion/paperfold/index.d.ts.map +1 -0
  623. package/dist/esm/motion/paperfold/index.js +17 -0
  624. package/dist/esm/motion/paperfold/index.js.map +1 -0
  625. package/dist/esm/motion/paperfold/manipulate.d.ts +59 -0
  626. package/dist/esm/motion/paperfold/manipulate.d.ts.map +1 -0
  627. package/dist/esm/motion/paperfold/manipulate.js +161 -0
  628. package/dist/esm/motion/paperfold/manipulate.js.map +1 -0
  629. package/dist/esm/motion/paperfold/presets.d.ts +9 -0
  630. package/dist/esm/motion/paperfold/presets.d.ts.map +1 -0
  631. package/dist/esm/motion/paperfold/presets.js +115 -0
  632. package/dist/esm/motion/paperfold/presets.js.map +1 -0
  633. package/dist/esm/motion/paperfold/template.d.ts +3 -0
  634. package/dist/esm/motion/paperfold/template.d.ts.map +1 -0
  635. package/dist/esm/motion/paperfold/template.js +37 -0
  636. package/dist/esm/motion/paperfold/template.js.map +1 -0
  637. package/dist/esm/motion/player.d.ts +35 -0
  638. package/dist/esm/motion/player.d.ts.map +1 -0
  639. package/dist/esm/motion/player.js +197 -0
  640. package/dist/esm/motion/player.js.map +1 -0
  641. package/dist/esm/motion/promo/PromoFrame.d.ts +31 -0
  642. package/dist/esm/motion/promo/PromoFrame.d.ts.map +1 -0
  643. package/dist/esm/motion/promo/PromoFrame.js +288 -0
  644. package/dist/esm/motion/promo/PromoFrame.js.map +1 -0
  645. package/dist/esm/motion/promo/PromoShowcasePlayer.d.ts +25 -0
  646. package/dist/esm/motion/promo/PromoShowcasePlayer.d.ts.map +1 -0
  647. package/dist/esm/motion/promo/PromoShowcasePlayer.js +56 -0
  648. package/dist/esm/motion/promo/PromoShowcasePlayer.js.map +1 -0
  649. package/dist/esm/motion/promo/config.d.ts +91 -0
  650. package/dist/esm/motion/promo/config.d.ts.map +1 -0
  651. package/dist/esm/motion/promo/config.js +550 -0
  652. package/dist/esm/motion/promo/config.js.map +1 -0
  653. package/dist/esm/motion/promo/controls.d.ts +86 -0
  654. package/dist/esm/motion/promo/controls.d.ts.map +1 -0
  655. package/dist/esm/motion/promo/controls.js +567 -0
  656. package/dist/esm/motion/promo/controls.js.map +1 -0
  657. package/dist/esm/motion/promo/easing.d.ts +3 -0
  658. package/dist/esm/motion/promo/easing.d.ts.map +1 -0
  659. package/dist/esm/motion/promo/easing.js +32 -0
  660. package/dist/esm/motion/promo/easing.js.map +1 -0
  661. package/dist/esm/motion/promo/engine.d.ts +205 -0
  662. package/dist/esm/motion/promo/engine.d.ts.map +1 -0
  663. package/dist/esm/motion/promo/engine.js +551 -0
  664. package/dist/esm/motion/promo/engine.js.map +1 -0
  665. package/dist/esm/motion/promo/fonts.d.ts +7 -0
  666. package/dist/esm/motion/promo/fonts.d.ts.map +1 -0
  667. package/dist/esm/motion/promo/fonts.js +16 -0
  668. package/dist/esm/motion/promo/fonts.js.map +1 -0
  669. package/dist/esm/motion/promo/icons.d.ts +7 -0
  670. package/dist/esm/motion/promo/icons.d.ts.map +1 -0
  671. package/dist/esm/motion/promo/icons.js +26 -0
  672. package/dist/esm/motion/promo/icons.js.map +1 -0
  673. package/dist/esm/motion/promo/index.d.ts +15 -0
  674. package/dist/esm/motion/promo/index.d.ts.map +1 -0
  675. package/dist/esm/motion/promo/index.js +15 -0
  676. package/dist/esm/motion/promo/index.js.map +1 -0
  677. package/dist/esm/motion/promo/presets.d.ts +13 -0
  678. package/dist/esm/motion/promo/presets.d.ts.map +1 -0
  679. package/dist/esm/motion/promo/presets.js +40 -0
  680. package/dist/esm/motion/promo/presets.js.map +1 -0
  681. package/dist/esm/motion/promo/template.d.ts +8 -0
  682. package/dist/esm/motion/promo/template.d.ts.map +1 -0
  683. package/dist/esm/motion/promo/template.js +35 -0
  684. package/dist/esm/motion/promo/template.js.map +1 -0
  685. package/dist/esm/motion/replication2/Replication2Player.d.ts +26 -0
  686. package/dist/esm/motion/replication2/Replication2Player.d.ts.map +1 -0
  687. package/dist/esm/motion/replication2/Replication2Player.js +90 -0
  688. package/dist/esm/motion/replication2/Replication2Player.js.map +1 -0
  689. package/dist/esm/motion/replication2/config.d.ts +78 -0
  690. package/dist/esm/motion/replication2/config.d.ts.map +1 -0
  691. package/dist/esm/motion/replication2/config.js +341 -0
  692. package/dist/esm/motion/replication2/config.js.map +1 -0
  693. package/dist/esm/motion/replication2/controls.d.ts +70 -0
  694. package/dist/esm/motion/replication2/controls.d.ts.map +1 -0
  695. package/dist/esm/motion/replication2/controls.js +283 -0
  696. package/dist/esm/motion/replication2/controls.js.map +1 -0
  697. package/dist/esm/motion/replication2/driver.d.ts +23 -0
  698. package/dist/esm/motion/replication2/driver.d.ts.map +1 -0
  699. package/dist/esm/motion/replication2/driver.js +65 -0
  700. package/dist/esm/motion/replication2/driver.js.map +1 -0
  701. package/dist/esm/motion/replication2/easing.d.ts +19 -0
  702. package/dist/esm/motion/replication2/easing.d.ts.map +1 -0
  703. package/dist/esm/motion/replication2/easing.js +92 -0
  704. package/dist/esm/motion/replication2/easing.js.map +1 -0
  705. package/dist/esm/motion/replication2/engine.d.ts +236 -0
  706. package/dist/esm/motion/replication2/engine.d.ts.map +1 -0
  707. package/dist/esm/motion/replication2/engine.js +470 -0
  708. package/dist/esm/motion/replication2/engine.js.map +1 -0
  709. package/dist/esm/motion/replication2/html.d.ts +30 -0
  710. package/dist/esm/motion/replication2/html.d.ts.map +1 -0
  711. package/dist/esm/motion/replication2/html.js +83 -0
  712. package/dist/esm/motion/replication2/html.js.map +1 -0
  713. package/dist/esm/motion/replication2/index.d.ts +15 -0
  714. package/dist/esm/motion/replication2/index.d.ts.map +1 -0
  715. package/dist/esm/motion/replication2/index.js +15 -0
  716. package/dist/esm/motion/replication2/index.js.map +1 -0
  717. package/dist/esm/motion/replication2/measure.d.ts +3 -0
  718. package/dist/esm/motion/replication2/measure.d.ts.map +1 -0
  719. package/dist/esm/motion/replication2/measure.js +27 -0
  720. package/dist/esm/motion/replication2/measure.js.map +1 -0
  721. package/dist/esm/motion/replication2/metrics.d.ts +6 -0
  722. package/dist/esm/motion/replication2/metrics.d.ts.map +1 -0
  723. package/dist/esm/motion/replication2/metrics.js +7 -0
  724. package/dist/esm/motion/replication2/metrics.js.map +1 -0
  725. package/dist/esm/motion/replication2/presets.d.ts +13 -0
  726. package/dist/esm/motion/replication2/presets.d.ts.map +1 -0
  727. package/dist/esm/motion/replication2/presets.js +63 -0
  728. package/dist/esm/motion/replication2/presets.js.map +1 -0
  729. package/dist/esm/motion/replication2/riv.d.ts +3 -0
  730. package/dist/esm/motion/replication2/riv.d.ts.map +1 -0
  731. package/dist/esm/motion/replication2/riv.js +4 -0
  732. package/dist/esm/motion/replication2/riv.js.map +1 -0
  733. package/dist/esm/motion/replication2/rive-contract.d.ts +27 -0
  734. package/dist/esm/motion/replication2/rive-contract.d.ts.map +1 -0
  735. package/dist/esm/motion/replication2/rive-contract.js +153 -0
  736. package/dist/esm/motion/replication2/rive-contract.js.map +1 -0
  737. package/dist/esm/motion/replication2/template.d.ts +8 -0
  738. package/dist/esm/motion/replication2/template.d.ts.map +1 -0
  739. package/dist/esm/motion/replication2/template.js +32 -0
  740. package/dist/esm/motion/replication2/template.js.map +1 -0
  741. package/dist/esm/motion/sample.d.ts +61 -0
  742. package/dist/esm/motion/sample.d.ts.map +1 -0
  743. package/dist/esm/motion/sample.js +138 -0
  744. package/dist/esm/motion/sample.js.map +1 -0
  745. package/dist/esm/motion/templates/hey-template.d.ts +3 -0
  746. package/dist/esm/motion/templates/hey-template.d.ts.map +1 -0
  747. package/dist/esm/motion/templates/hey-template.js +1549 -0
  748. package/dist/esm/motion/templates/hey-template.js.map +1 -0
  749. package/dist/esm/motion/templates/index.d.ts +22 -0
  750. package/dist/esm/motion/templates/index.d.ts.map +1 -0
  751. package/dist/esm/motion/templates/index.js +15 -0
  752. package/dist/esm/motion/templates/index.js.map +1 -0
  753. package/dist/esm/motion/templates/word-motion.d.ts +3 -0
  754. package/dist/esm/motion/templates/word-motion.d.ts.map +1 -0
  755. package/dist/esm/motion/templates/word-motion.js +1162 -0
  756. package/dist/esm/motion/templates/word-motion.js.map +1 -0
  757. package/dist/esm/motion/types.d.ts +192 -0
  758. package/dist/esm/motion/types.d.ts.map +1 -0
  759. package/dist/esm/motion/types.js +2 -0
  760. package/dist/esm/motion/types.js.map +1 -0
  761. package/dist/esm/motion/typesurface/TypeSurfaceCanvas.d.ts +22 -0
  762. package/dist/esm/motion/typesurface/TypeSurfaceCanvas.d.ts.map +1 -0
  763. package/dist/esm/motion/typesurface/TypeSurfaceCanvas.js +58 -0
  764. package/dist/esm/motion/typesurface/TypeSurfaceCanvas.js.map +1 -0
  765. package/dist/esm/motion/typesurface/art.d.ts +21 -0
  766. package/dist/esm/motion/typesurface/art.d.ts.map +1 -0
  767. package/dist/esm/motion/typesurface/art.js +854 -0
  768. package/dist/esm/motion/typesurface/art.js.map +1 -0
  769. package/dist/esm/motion/typesurface/config.d.ts +273 -0
  770. package/dist/esm/motion/typesurface/config.d.ts.map +1 -0
  771. package/dist/esm/motion/typesurface/config.js +260 -0
  772. package/dist/esm/motion/typesurface/config.js.map +1 -0
  773. package/dist/esm/motion/typesurface/engine.d.ts +94 -0
  774. package/dist/esm/motion/typesurface/engine.d.ts.map +1 -0
  775. package/dist/esm/motion/typesurface/engine.js +603 -0
  776. package/dist/esm/motion/typesurface/engine.js.map +1 -0
  777. package/dist/esm/motion/typesurface/fonts.d.ts +25 -0
  778. package/dist/esm/motion/typesurface/fonts.d.ts.map +1 -0
  779. package/dist/esm/motion/typesurface/fonts.js +40 -0
  780. package/dist/esm/motion/typesurface/fonts.js.map +1 -0
  781. package/dist/esm/motion/typesurface/index.d.ts +17 -0
  782. package/dist/esm/motion/typesurface/index.d.ts.map +1 -0
  783. package/dist/esm/motion/typesurface/index.js +17 -0
  784. package/dist/esm/motion/typesurface/index.js.map +1 -0
  785. package/dist/esm/motion/typesurface/layout.d.ts +57 -0
  786. package/dist/esm/motion/typesurface/layout.d.ts.map +1 -0
  787. package/dist/esm/motion/typesurface/layout.js +122 -0
  788. package/dist/esm/motion/typesurface/layout.js.map +1 -0
  789. package/dist/esm/motion/typesurface/ops.d.ts +70 -0
  790. package/dist/esm/motion/typesurface/ops.d.ts.map +1 -0
  791. package/dist/esm/motion/typesurface/ops.js +164 -0
  792. package/dist/esm/motion/typesurface/ops.js.map +1 -0
  793. package/dist/esm/motion/typesurface/presets.d.ts +33 -0
  794. package/dist/esm/motion/typesurface/presets.d.ts.map +1 -0
  795. package/dist/esm/motion/typesurface/presets.js +185 -0
  796. package/dist/esm/motion/typesurface/presets.js.map +1 -0
  797. package/dist/esm/motion/typesurface/renderer.d.ts +78 -0
  798. package/dist/esm/motion/typesurface/renderer.d.ts.map +1 -0
  799. package/dist/esm/motion/typesurface/renderer.js +666 -0
  800. package/dist/esm/motion/typesurface/renderer.js.map +1 -0
  801. package/dist/esm/motion/typesurface/shaders.d.ts +17 -0
  802. package/dist/esm/motion/typesurface/shaders.d.ts.map +1 -0
  803. package/dist/esm/motion/typesurface/shaders.js +297 -0
  804. package/dist/esm/motion/typesurface/shaders.js.map +1 -0
  805. package/dist/esm/motion/typesurface/surfaces.d.ts +81 -0
  806. package/dist/esm/motion/typesurface/surfaces.d.ts.map +1 -0
  807. package/dist/esm/motion/typesurface/surfaces.js +149 -0
  808. package/dist/esm/motion/typesurface/surfaces.js.map +1 -0
  809. package/dist/esm/motion/typesurface/text.d.ts +17 -0
  810. package/dist/esm/motion/typesurface/text.d.ts.map +1 -0
  811. package/dist/esm/motion/typesurface/text.js +28 -0
  812. package/dist/esm/motion/typesurface/text.js.map +1 -0
  813. package/dist/esm/motion/typesurface/timeline.d.ts +15 -0
  814. package/dist/esm/motion/typesurface/timeline.d.ts.map +1 -0
  815. package/dist/esm/motion/typesurface/timeline.js +57 -0
  816. package/dist/esm/motion/typesurface/timeline.js.map +1 -0
  817. package/dist/esm/motion/validate.d.ts +22 -0
  818. package/dist/esm/motion/validate.d.ts.map +1 -0
  819. package/dist/esm/motion/validate.js +84 -0
  820. package/dist/esm/motion/validate.js.map +1 -0
  821. package/dist/esm/native/RiveReceiptStage.d.ts +25 -2
  822. package/dist/esm/native/RiveReceiptStage.d.ts.map +1 -1
  823. package/dist/esm/native/RiveReceiptStage.js +7 -148
  824. package/dist/esm/native/RiveReceiptStage.js.map +1 -1
  825. package/dist/esm/native/riveReceiptStageFactory.d.ts +26 -0
  826. package/dist/esm/native/riveReceiptStageFactory.d.ts.map +1 -0
  827. package/dist/esm/native/riveReceiptStageFactory.js +159 -0
  828. package/dist/esm/native/riveReceiptStageFactory.js.map +1 -0
  829. package/dist/esm/tokens/stage.d.ts +7 -0
  830. package/dist/esm/tokens/stage.d.ts.map +1 -0
  831. package/dist/esm/tokens/stage.js +7 -0
  832. package/dist/esm/tokens/stage.js.map +1 -0
  833. package/package.json +36 -1
  834. package/spec/examples/components/onboarding/animated-status/case1.json +42 -0
  835. package/spec/examples/components/onboarding/animated-status/case2.json +42 -0
  836. package/spec/examples/components/onboarding/animated-status/case3.json +42 -0
  837. package/spec/examples/components/onboarding/animated-status/case4.json +42 -0
  838. package/spec/examples/components/onboarding/animated-status/case5.json +42 -0
  839. package/spec/examples/components/onboarding/send-completion/case1.json +48 -0
  840. package/spec/examples/components/onboarding/send-completion/case2.json +48 -0
  841. package/spec/examples/components/onboarding/send-completion/case3.json +48 -0
  842. package/spec/examples/components/onboarding/send-completion/case4.json +48 -0
  843. package/spec/examples/components/onboarding/send-completion/case5.json +48 -0
  844. package/spec/families/onboarding.schema.json +610 -1
  845. package/src/agent/AgentComponent.tsx +1 -1
  846. package/src/agent/base.ts +17 -0
  847. package/src/agent/catalog.ts +0 -32
  848. package/src/agent/core.ts +6 -14
  849. package/src/agent/index.ts +6 -5
  850. package/src/agent/manifests.ts +83 -1
  851. package/src/agent/result.ts +6 -0
  852. package/src/agent/search/document.ts +46 -0
  853. package/src/agent/search/embedding.ts +95 -0
  854. package/src/agent/search/index.ts +20 -0
  855. package/src/agent/search/lexical.ts +25 -0
  856. package/src/agent/search/normalize.ts +17 -0
  857. package/src/agent/search/search.ts +148 -0
  858. package/src/agent/search/searchIndex.ts +107 -0
  859. package/src/agent/search/types.ts +68 -0
  860. package/src/agent/search/weights.ts +32 -0
  861. package/src/agent/types.ts +1 -1
  862. package/src/components/catalog.ts +21 -1
  863. package/src/components/onboarding/animated-status/AnimatedStage.tsx +18 -0
  864. package/src/components/onboarding/animated-status/AnimatedStage.types.ts +30 -0
  865. package/src/components/onboarding/animated-status/AnimatedStage.web.tsx +99 -0
  866. package/src/components/onboarding/animated-status/AnimatedStatusView.tsx +109 -0
  867. package/src/components/onboarding/animated-status/AnimatedStill.tsx +23 -0
  868. package/src/components/onboarding/animated-status/contract.ts +105 -0
  869. package/src/components/onboarding/animated-status/engine.ts +49 -0
  870. package/src/components/onboarding/animated-status/index.ts +8 -0
  871. package/src/components/onboarding/animated-status/presets.json +126 -0
  872. package/src/components/onboarding/animated-status/riv.ts +4 -0
  873. package/src/components/onboarding/index.ts +4 -0
  874. package/src/components/onboarding/presets.ts +6 -0
  875. package/src/components/onboarding/receipt-printer/ReceiptStage.tsx +46 -7
  876. package/src/components/onboarding/send-completion/SendCompletionView.tsx +164 -0
  877. package/src/components/onboarding/send-completion/SendStage.tsx +27 -0
  878. package/src/components/onboarding/send-completion/SendStage.types.ts +32 -0
  879. package/src/components/onboarding/send-completion/SendStage.web.tsx +116 -0
  880. package/src/components/onboarding/send-completion/SendStill.tsx +19 -0
  881. package/src/components/onboarding/send-completion/contract.ts +127 -0
  882. package/src/components/onboarding/send-completion/engine.ts +37 -0
  883. package/src/components/onboarding/send-completion/index.ts +10 -0
  884. package/src/components/onboarding/send-completion/presets.json +132 -0
  885. package/src/components/onboarding/send-completion/riv.ts +4 -0
  886. package/src/components/onboarding/shared/actions-data.ts +2 -0
  887. package/src/components/onboarding/shared/configColor.ts +72 -0
  888. package/src/components/onboarding/shared/contract.ts +4 -0
  889. package/src/components/onboarding/shared/describe.ts +1 -1
  890. package/src/components/onboarding/shared/mock.ts +2 -0
  891. package/src/components/onboarding/views.ts +8 -0
  892. package/src/index.ts +1 -1
  893. package/src/motion/MotionPlayer.tsx +62 -0
  894. package/src/motion/agent.ts +288 -0
  895. package/src/motion/cat/Cat.tsx +118 -0
  896. package/src/motion/cat/animation.ts +206 -0
  897. package/src/motion/cat/art.generated.ts +44 -0
  898. package/src/motion/cat/config.ts +186 -0
  899. package/src/motion/cat/index.ts +26 -0
  900. package/src/motion/cat/rig.ts +102 -0
  901. package/src/motion/cat/scene.ts +181 -0
  902. package/src/motion/configurable/config.ts +420 -0
  903. package/src/motion/configurable/controls.ts +93 -0
  904. package/src/motion/easing.ts +55 -0
  905. package/src/motion/fit.ts +8 -0
  906. package/src/motion/index.ts +29 -0
  907. package/src/motion/neon/GlowRenderer.tsx +83 -0
  908. package/src/motion/neon/NeonCanvas.tsx +175 -0
  909. package/src/motion/neon/NeonText.tsx +113 -0
  910. package/src/motion/neon/NeonTextFrame.tsx +67 -0
  911. package/src/motion/neon/artwork.ts +95 -0
  912. package/src/motion/neon/audio.ts +162 -0
  913. package/src/motion/neon/config.ts +484 -0
  914. package/src/motion/neon/flicker.ts +225 -0
  915. package/src/motion/neon/fonts.ts +76 -0
  916. package/src/motion/neon/frame.ts +34 -0
  917. package/src/motion/neon/glitch.ts +142 -0
  918. package/src/motion/neon/index.ts +41 -0
  919. package/src/motion/neon/layers.tsx +209 -0
  920. package/src/motion/neon/material.ts +88 -0
  921. package/src/motion/neon/random.ts +40 -0
  922. package/src/motion/neon/scene.ts +610 -0
  923. package/src/motion/neon/synth.ts +188 -0
  924. package/src/motion/neon/typography.ts +102 -0
  925. package/src/motion/neon/wall.ts +157 -0
  926. package/src/motion/paperfold/PaperFold.tsx +45 -0
  927. package/src/motion/paperfold/PaperFoldFrame.tsx +576 -0
  928. package/src/motion/paperfold/PaperFoldPlayer.tsx +80 -0
  929. package/src/motion/paperfold/art.ts +455 -0
  930. package/src/motion/paperfold/config.ts +98 -0
  931. package/src/motion/paperfold/controls.ts +557 -0
  932. package/src/motion/paperfold/engine.ts +852 -0
  933. package/src/motion/paperfold/fonts.ts +21 -0
  934. package/src/motion/paperfold/index.ts +30 -0
  935. package/src/motion/paperfold/manipulate.ts +188 -0
  936. package/src/motion/paperfold/presets.ts +117 -0
  937. package/src/motion/paperfold/template.ts +38 -0
  938. package/src/motion/player.ts +207 -0
  939. package/src/motion/promo/PromoFrame.tsx +501 -0
  940. package/src/motion/promo/PromoShowcasePlayer.tsx +78 -0
  941. package/src/motion/promo/config.ts +479 -0
  942. package/src/motion/promo/controls.ts +643 -0
  943. package/src/motion/promo/easing.ts +36 -0
  944. package/src/motion/promo/engine.ts +587 -0
  945. package/src/motion/promo/fonts.ts +16 -0
  946. package/src/motion/promo/icons.tsx +29 -0
  947. package/src/motion/promo/index.ts +24 -0
  948. package/src/motion/promo/presets.ts +40 -0
  949. package/src/motion/promo/template.ts +36 -0
  950. package/src/motion/replication2/Replication2Player.tsx +115 -0
  951. package/src/motion/replication2/config.ts +323 -0
  952. package/src/motion/replication2/controls.ts +336 -0
  953. package/src/motion/replication2/driver.ts +92 -0
  954. package/src/motion/replication2/easing.ts +88 -0
  955. package/src/motion/replication2/engine.ts +539 -0
  956. package/src/motion/replication2/html.ts +87 -0
  957. package/src/motion/replication2/index.ts +14 -0
  958. package/src/motion/replication2/measure.ts +28 -0
  959. package/src/motion/replication2/metrics.ts +7 -0
  960. package/src/motion/replication2/presets.ts +63 -0
  961. package/src/motion/replication2/riv.ts +4 -0
  962. package/src/motion/replication2/rive-contract.ts +165 -0
  963. package/src/motion/replication2/template.ts +33 -0
  964. package/src/motion/sample.ts +173 -0
  965. package/src/motion/templates/hey-template.ts +1553 -0
  966. package/src/motion/templates/index.ts +17 -0
  967. package/src/motion/templates/word-motion.ts +1166 -0
  968. package/src/motion/types.ts +162 -0
  969. package/src/motion/typesurface/TypeSurfaceCanvas.tsx +73 -0
  970. package/src/motion/typesurface/art.ts +639 -0
  971. package/src/motion/typesurface/config.ts +486 -0
  972. package/src/motion/typesurface/engine.ts +586 -0
  973. package/src/motion/typesurface/fonts.ts +63 -0
  974. package/src/motion/typesurface/index.ts +16 -0
  975. package/src/motion/typesurface/layout.ts +133 -0
  976. package/src/motion/typesurface/ops.ts +196 -0
  977. package/src/motion/typesurface/presets.ts +199 -0
  978. package/src/motion/typesurface/renderer.ts +579 -0
  979. package/src/motion/typesurface/shaders.ts +303 -0
  980. package/src/motion/typesurface/surfaces.ts +223 -0
  981. package/src/motion/typesurface/text.ts +35 -0
  982. package/src/motion/typesurface/timeline.ts +58 -0
  983. package/src/motion/validate.ts +101 -0
  984. package/src/native/RiveReceiptStage.tsx +8 -155
  985. package/src/native/riveReceiptStageFactory.tsx +175 -0
  986. package/src/tokens/stage.ts +6 -0
  987. package/tools/ask/dist/components.mjs +7221 -44
  988. package/tools/ask/mcp.mjs +80 -1
package/src/agent/core.ts CHANGED
@@ -1,16 +1,8 @@
1
1
  /**
2
- * **The agent component contract, without React** — `@appinternalleads/ui/agent`. Search, describe,
3
- * `render/1` validation and `result/1`: what a backend or an MCP server needs, and all of it runs in
4
- * plain Node. The renderer, `AgentComponent`, is in the main entry. `docs/AGENT-COMPONENT-CONTRACT.md`.
2
+ * **`@appinternalleads/ui/agent` — the agent contract, with search, without React.** Search,
3
+ * describe, `render/1` validation and `result/1`: what a backend or an MCP server needs, all of it in
4
+ * plain Node. `searchComponents` lives only here (and its word-vector table with it); the renderer,
5
+ * `AgentComponent`, is in the main entry. `docs/AGENT-COMPONENT-CONTRACT.md`.
5
6
  */
6
- export {
7
- AGENT_COMPONENTS, agentAvailability, describeComponent, isAgentComponent, listAgentComponents, searchComponents,
8
- } from './catalog';
9
- export { validateRenderRequest } from './validate';
10
- export { RESULT_EVENTS, makeResult } from './result';
11
- export {
12
- CAPABILITY_SCHEMA, RENDER_SCHEMA, RESULT_SCHEMA,
13
- type AgentButtonAction, type AgentCapability, type CapabilityAction, type CapabilityCard, type CapabilityEvent, type CapabilityKind,
14
- type CopySpec as AgentCopySpec, type DataOrigin, type FieldSpec as AgentFieldSpec, type IssueCode, type IssueLayer, type Owner as AgentOwner,
15
- type RenderCheck, type RenderIssue, type RenderPreview, type RenderRequest, type RenderResult, type Section as AgentSection,
16
- } from './types';
7
+ export * from './base';
8
+ export { searchComponents } from './search';
@@ -1,9 +1,10 @@
1
1
  /**
2
- * **The agent component contract** — `docs/AGENT-COMPONENT-CONTRACT.md`.
2
+ * **The agent contract, as the main entry carries it** — for the app that renders: `AgentComponent`,
3
+ * `AGENT_RENDERABLE`, and the small React-free contract they use (describe, validate, results).
3
4
  *
4
- * search → describe → build a `render/1` → `validateRenderRequest` → `<AgentComponent>` → `result/1`.
5
- * Everything but `AgentComponent` is pure and serialisable, and is also its own entry point —
6
- * `@appinternalleads/ui/agent` (`./core`) — so a server or an MCP tool can use it without React.
5
+ * Not `searchComponents`: component search belongs to the agent, and its word-vector table must not
6
+ * reach an app's bundle. Import it from `@appinternalleads/ui/agent`. `tests/agent/boundary.test.ts`
7
+ * holds this line on the built package.
7
8
  */
8
- export * from './core';
9
+ export * from './base';
9
10
  export { AgentComponent, AGENT_RENDERABLE, type AgentComponentProps } from './AgentComponent';
@@ -5,6 +5,8 @@ import { FIELD_KEY, RECEIPT_MAX_AMOUNT, RECEIPT_MAX_FIELDS, RECEIPT_MAX_ITEMS, R
5
5
  import { HEATMAP_REVEALS } from '../components/onboarding/activity-heatmap/contract';
6
6
  import { FEED_BLOCK_KINDS } from '../components/onboarding/expandable-feed/contract';
7
7
  import { MAX_SLIDES } from '../components/onboarding/carousel/contract';
8
+ import { SEND_COMPLETION_ICONS, SEND_COMPLETION_LIMITS } from '../components/onboarding/send-completion/contract';
9
+ import { COLOR_FORMATS, COLOR_HINT, COLOR_PATTERN } from '../components/onboarding/shared/configColor';
8
10
  import { bool, json, list, map, num, obj, text } from './spec';
9
11
  import type { AgentCapability, CapabilityAction, CapabilityCard, CapabilityEvent, CopySpec, FieldSpec } from './types';
10
12
 
@@ -531,4 +533,84 @@ const completion: NewManifest = {
531
533
  system: ['partialStats', 'successStats', 'partialItems', 'successItems', 'demoSkipped', 'ship'],
532
534
  };
533
535
 
534
- export const NEW_MANIFESTS: readonly NewManifest[] = [receiptPrinter, budgetTracker, activityHeatmap, criteriaSpider, expandableFeed, fallback, seatAllocation, carousel, completion];
536
+ const colour = (c: OnboardingComponent, key: string, what: string) =>
537
+ text(`${what} A colour: ${COLOR_FORMATS}.`, {
538
+ format: 'color', pattern: COLOR_PATTERN.source, patternHint: COLOR_HINT, default: base(c)[key], owners: ['agent', 'builder', 'developer'],
539
+ });
540
+ const sendCompletion: NewManifest = {
541
+ family: 'new',
542
+ component: 'send-completion',
543
+ name: 'Send Completion',
544
+ kind: 'interactive',
545
+ purpose: 'A single send button that shows the send happening: pressed, its icon launches, the button becomes a check, and a pill confirms ("Sent!") — once the host\'s send has really succeeded.',
546
+ signals: ['send button', 'sent', 'submit', 'submitted', 'send button', 'confirm', 'upload', 'save', 'message sent', 'done button', 'send animation', 'success animation'],
547
+ useWhen: [
548
+ 'One action the person triggers — send, submit, upload, confirm, save — whose success should be shown as it happens.',
549
+ 'The host can run the action (the send operation) and say whether it succeeded.',
550
+ ],
551
+ avoidWhen: [
552
+ 'A form with fields to fill — this is the one button, not the form.',
553
+ 'Making a receipt, invoice or document to send someone — that is the document\'s own component; this is only the button that sends.',
554
+ 'Several steps or a summary of what was set up — use completion.',
555
+ 'Progress over time (percent, many items) — the circle only waits, it does not count.',
556
+ ],
557
+ related: [
558
+ { component: 'completion', distinction: 'Completion summarises a finished flow; Send Completion is the one press that finishes it.' },
559
+ ],
560
+ states: [
561
+ { state: 'idle', description: 'The button, ready; the tap cue shows first when behavior.showTapCue.' },
562
+ { state: 'sending', description: 'Pressed: the host\'s send runs while the icon flies; the circle waits (breathing) for it.' },
563
+ { state: 'sent', description: 'The send succeeded: the check and the completed label. This is the task\'s result, not just the animation\'s end.' },
564
+ { state: 'failed', description: 'The send failed: the button returns and an alert says why; pressing again retries.' },
565
+ ...LOAD_STATES,
566
+ ],
567
+ actions: [
568
+ { id: 'send', description: 'The person presses the button (or Enter / Space on it). Runs the host\'s send operation.', hostOperation: true },
569
+ { id: 'reset', description: 'Brings the button back, after sent or failed.' },
570
+ ],
571
+ events: [
572
+ { event: 'sendStarted', description: 'The person pressed the button; the send is running.', data: '{}' },
573
+ { event: 'sent', description: 'The send succeeded and "Sent!" is showing.', data: '{}' },
574
+ { event: 'reset', description: 'The person pressed Reset.', data: '{}' },
575
+ { event: 'statusChanged', description: 'Playback moved on.', data: '{ status: "idle" | "pressed" | "launching" | "transforming" | "sent" }' },
576
+ ],
577
+ requiresInput: false,
578
+ rules: [
579
+ 'data.label is what the button does (Send, Submit, Upload…); data.completedLabel what it says when done (Sent!, Submitted!…). Each at most 3 words and 16 characters: longer text shrinks inside the fixed button.',
580
+ 'The motion, its timing and the layout are fixed: there are no keys for them.',
581
+ '"sent" is reported only after the host\'s send operation succeeds; a failure never shows the check.',
582
+ 'behavior.loop is decorative: it replays forever and never calls the host\'s send.',
583
+ ],
584
+ askFor: {
585
+ label: 'What does the button do — Send, Submit, Upload, Save?',
586
+ },
587
+ data: {
588
+ label: text('What the button says: the action (Send, Submit, Upload, Confirm, Save…).', { required: true, maxLength: SEND_COMPLETION_LIMITS.label.chars, origin: 'invent' }),
589
+ completedLabel: text('What the pill says once it is done (Sent!, Submitted!, Uploaded…).', { required: true, maxLength: SEND_COMPLETION_LIMITS.completedLabel.chars, origin: 'invent' }),
590
+ },
591
+ behavior: {
592
+ showTapCue: bool('Show "TAP/CLICK" and a fingertip before the press.', { default: base('send-completion').showTapCue, owners: ['agent', 'builder', 'developer'] }),
593
+ autoplay: bool('Press on its own as soon as it shows (and run the send).', { default: false, owners: ['agent', 'builder', 'developer'] }),
594
+ loop: bool('Replay forever as a decoration; the host\'s send is never called.', { default: false, owners: ['agent', 'builder', 'developer'] }),
595
+ },
596
+ presentation: {
597
+ ...presentation('send-completion'),
598
+ backgroundColor: colour('send-completion', 'backgroundColor', 'Behind everything.'),
599
+ buttonColor: colour('send-completion', 'buttonColor', 'The button, the circle and the pill.'),
600
+ textColor: colour('send-completion', 'textColor', 'The button\'s label.'),
601
+ iconColor: colour('send-completion', 'iconColor', 'The icon while it sits in the button.'),
602
+ completionColor: colour('send-completion', 'completionColor', 'The check and the completed label.'),
603
+ trailColor: colour('send-completion', 'trailColor', 'The icon in flight, its trail and the tap cue.'),
604
+ sendIcon: text('The icon the button carries and launches.', { enum: SEND_COMPLETION_ICONS, default: base('send-completion').sendIcon, owners: ['agent', 'builder', 'developer'] }),
605
+ iconScale: num('The icon\'s size (1 is the design\'s).', { min: SEND_COMPLETION_LIMITS.iconScale[0], max: SEND_COMPLETION_LIMITS.iconScale[1], default: 1, owners: ['agent', 'builder', 'developer'] }),
606
+ cornerRadius: num('The button\'s corner radius, in points.', { min: SEND_COMPLETION_LIMITS.cornerRadius[0], max: SEND_COMPLETION_LIMITS.cornerRadius[1], default: base('send-completion').cornerRadius, owners: ['agent', 'builder', 'developer'] }),
607
+ width: num('The animation\'s widest, in points; it keeps 4:3 and shrinks with its container.', { min: SEND_COMPLETION_LIMITS.width[0], max: SEND_COMPLETION_LIMITS.width[1], default: base('send-completion').width, owners: ['agent', 'builder', 'developer'] }),
608
+ },
609
+ system: ['ship'],
610
+ copyExtra: {
611
+ ...HEADER,
612
+ tapHint: { maxLength: SEND_COMPLETION_LIMITS.tapHint.chars },
613
+ },
614
+ };
615
+
616
+ export const NEW_MANIFESTS: readonly NewManifest[] = [receiptPrinter, budgetTracker, activityHeatmap, criteriaSpider, expandableFeed, fallback, seatAllocation, carousel, completion, sendCompletion];
@@ -40,6 +40,12 @@ export const RESULT_EVENTS: Record<string, Record<string, [string, Mapper]>> = {
40
40
  onContinue: ['continued', (() => ({})) as Mapper],
41
41
  onFinishLater: ['finishLater', (() => ({})) as Mapper],
42
42
  },
43
+ 'send-completion': {
44
+ onSend: ['sendStarted', (() => ({})) as Mapper],
45
+ onSent: ['sent', (() => ({})) as Mapper],
46
+ onReset: ['reset', (() => ({})) as Mapper],
47
+ onStatusChange: ['statusChanged', ((status: string) => ({ status })) as Mapper],
48
+ },
43
49
  directory: { onSelect: ['selected', ((id: string) => ({ id })) as Mapper] },
44
50
  checklist: { onChange: ['changed', ((checklist: unknown, change: unknown) => ({ checklist, change })) as Mapper] },
45
51
  'threshold-flow': {
@@ -0,0 +1,46 @@
1
+ import type { AgentCapability, FieldSpec } from '../types';
2
+ import type { FieldType, SearchDocument } from './types';
3
+
4
+ /**
5
+ * **A component's search document, derived from its capability.** It says what problem the
6
+ * component solves — purpose, when to use it, its selection signals, its case studies' scenarios,
7
+ * what a person can do with it, what it shows and what it reports — and, separately, what it is not
8
+ * for (`avoidWhen`). Nothing is written for search alone, so a new approved component is searchable
9
+ * the moment it has a capability. No source, no implementation, no runtime values.
10
+ */
11
+
12
+ /** "…statement over time — use budget-tracker or a list." → "…statement over time": the pointer to another component is advice, not meaning. */
13
+ function ownMeaning(text: string, ids: readonly string[]): string {
14
+ let t = text.replace(/\s[—–-]+\s*use\s.*$/i, '').replace(/:\s*use\s.*$/i, '');
15
+ for (const id of ids) t = t.split(id).join(' ');
16
+ return t.replace(/\s+/g, ' ').trim();
17
+ }
18
+
19
+ const describeData = (key: string, spec: FieldSpec): string => {
20
+ const words = key.replace(/([a-z])([A-Z])/g, '$1 $2').toLowerCase();
21
+ return `${words}: ${spec.description}`;
22
+ };
23
+
24
+ export function searchDocumentOf(c: AgentCapability, order: number, allIds: readonly string[]): SearchDocument {
25
+ const positive: { type: FieldType; text: string }[] = [];
26
+ const add = (type: FieldType, text: string | undefined) => { const t = text && ownMeaning(text, allIds); if (t) positive.push({ type, text: t }); };
27
+ add('name', c.name);
28
+ add('purpose', c.purpose);
29
+ c.signals.forEach(s => add('signal', s));
30
+ c.useWhen.forEach(s => add('useWhen', s));
31
+ c.presets.forEach(p => add('scenario', `${p.title}. ${p.scenario}`));
32
+ c.actions.forEach(a => add('action', a.description));
33
+ c.states.forEach(s => add('state', s.description));
34
+ c.events.forEach(e => add('event', e.description));
35
+ for (const [k, spec] of Object.entries(c.data)) add('data', describeData(k, spec));
36
+ const negative = c.avoidWhen.map(t => ownMeaning(t, allIds)).filter(Boolean).map(text => ({ text }));
37
+ return { component: c.component, order, positive, negative };
38
+ }
39
+
40
+ /** FNV-1a over the documents: the catalogue's search version. Any change to what search reads changes it. */
41
+ export function versionOf(value: unknown): string {
42
+ const s = JSON.stringify(value);
43
+ let h = 0x811c9dc5;
44
+ for (let i = 0; i < s.length; i++) { h ^= s.charCodeAt(i); h = Math.imul(h, 0x01000193); }
45
+ return (h >>> 0).toString(16).padStart(8, '0');
46
+ }
@@ -0,0 +1,95 @@
1
+ import type { EmbeddingProvider } from './types';
2
+
3
+ /**
4
+ * **Embedding providers.** The search asks a provider for vectors and nothing else, so the one
5
+ * below — pretrained word vectors shipped in the package, no network — can be replaced by a hosted
6
+ * model without touching retrieval or ranking.
7
+ */
8
+
9
+ /** `bits`: 8 — int8 per value; 4 — two values per byte, each stored as value + 8 (−7…7). */
10
+ export type WordVectorTable = { dims: number; count: number; words: string; data: string; bits?: 4 | 8 };
11
+
12
+ const bytesOf = (b64: string): Uint8Array => {
13
+ if (typeof Buffer !== 'undefined') { const b = Buffer.from(b64, 'base64'); return new Uint8Array(b.buffer, b.byteOffset, b.length); }
14
+ const bin = atob(b64); const out = new Uint8Array(bin.length);
15
+ for (let i = 0; i < bin.length; i++) out[i] = bin.charCodeAt(i);
16
+ return out;
17
+ };
18
+ /* One signed value per entry, whatever the storage. Only directions matter (vectors are averaged and normalised), so no rescaling. */
19
+ function decode(t: WordVectorTable): Int8Array {
20
+ const bytes = bytesOf(t.data);
21
+ if (t.bits !== 4) return new Int8Array(bytes.buffer, bytes.byteOffset, bytes.length);
22
+ const out = new Int8Array(t.count * t.dims);
23
+ for (let i = 0; i < out.length; i++) out[i] = ((bytes[i >> 1]! >> ((i & 1) * 4)) & 15) - 8;
24
+ return out;
25
+ }
26
+
27
+ const unit = (v: Float32Array): Float32Array => {
28
+ let n = 0; for (const x of v) n += x * x;
29
+ n = Math.sqrt(n);
30
+ if (n > 0) for (let i = 0; i < v.length; i++) v[i]! /= n;
31
+ return v;
32
+ };
33
+
34
+ /**
35
+ * **Word vectors, averaged — offline and deterministic.** A text's vector is the average of its
36
+ * words' vectors, each weighted by how rare the word is (Arora et al.'s smooth inverse frequency,
37
+ * with the table's frequency order standing in for counts), so "the" counts for almost nothing and
38
+ * "receipt" for a lot. A word the table lacks is tried without a plural or tense ending; failing
39
+ * that it is skipped (lexical matching still sees it).
40
+ */
41
+ export function createWordVectorProvider(table: WordVectorTable, opts: { smoothing?: number } = {}): EmbeddingProvider {
42
+ let index: Map<string, number> | null = null;
43
+ let data: Int8Array | null = null;
44
+ const a = opts.smoothing ?? 1e-3;
45
+ /* Zipf: a word's share of text ∝ 1 / rank. H is the normaliser for the table's size. */
46
+ const H = Math.log(table.count) + 0.5772;
47
+ const load = () => {
48
+ if (index) return;
49
+ index = new Map(table.words.split(' ').map((w, i) => [w, i]));
50
+ data = decode(table);
51
+ };
52
+ const lookup = (w: string): number | undefined => {
53
+ const m = index!;
54
+ return m.get(w) ?? m.get(w.replace(/'s$/, '')) ?? m.get(w.replace(/ies$/, 'y')) ?? m.get(w.replace(/s$/, ''))
55
+ ?? m.get(w.replace(/ing$/, '')) ?? m.get(w.replace(/ing$/, 'e')) ?? m.get(w.replace(/ed$/, '')) ?? m.get(w.replace(/d$/, ''));
56
+ };
57
+ return {
58
+ id: `word-vectors:${table.dims}x${table.count}x${table.bits ?? 8}bit:sif-${a}`,
59
+ embed(texts) {
60
+ load();
61
+ return texts.map(text => {
62
+ const v = new Float32Array(table.dims);
63
+ for (const raw of text.toLowerCase().split(/[^\p{L}']+/u)) {
64
+ if (!raw) continue;
65
+ const r = lookup(raw);
66
+ if (r === undefined) continue;
67
+ const p = 1 / ((r + 1) * H);
68
+ const w = a / (a + p);
69
+ const off = r * table.dims;
70
+ for (let d = 0; d < table.dims; d++) v[d]! += w * data![off + d]!;
71
+ }
72
+ return unit(v);
73
+ });
74
+ },
75
+ };
76
+ }
77
+
78
+ /**
79
+ * **For tests: deterministic vectors, no model.** Each word hashes to a few dimensions, so equal words
80
+ * give equal vectors and different words mostly do not. It proves the machinery — indexing, ranking,
81
+ * filtering, fallback — not semantic quality.
82
+ */
83
+ export function createFakeEmbeddingProvider(dims = 64): EmbeddingProvider {
84
+ const hash = (s: string, seed: number) => { let h = 0x811c9dc5 ^ seed; for (let i = 0; i < s.length; i++) { h ^= s.charCodeAt(i); h = Math.imul(h, 0x01000193); } return h >>> 0; };
85
+ return {
86
+ id: `fake:${dims}`,
87
+ embed(texts) {
88
+ return texts.map(t => {
89
+ const v = new Float32Array(dims);
90
+ for (const w of t.toLowerCase().split(/[^\p{L}\p{N}]+/u)) if (w) for (let s = 0; s < 3; s++) v[hash(w, s) % dims]! += (hash(w, s + 7) & 1) ? 1 : -1;
91
+ return unit(v);
92
+ });
93
+ },
94
+ };
95
+ }
@@ -0,0 +1,20 @@
1
+ import { createWordVectorProvider, type WordVectorTable } from './embedding';
2
+ import { createComponentSearch, type SearchCard } from './search';
3
+ import type { SearchOptions } from './types';
4
+ import { DEFAULT_WEIGHTS } from './weights';
5
+ import table from './wordvectors.json';
6
+
7
+ /**
8
+ * **`searchComponents` — the package's one search.** The MCP tool and the site's API call this; the
9
+ * hybrid engine behind it (`search.ts`) uses the offline word-vector provider shipped with the
10
+ * package, so it needs no network and gives the same answer every time.
11
+ */
12
+ const engine = createComponentSearch({ provider: createWordVectorProvider(table as WordVectorTable), weights: DEFAULT_WEIGHTS });
13
+
14
+ /** Intent → candidate cards, best first. `options.available` is the host's policy: only those components may be offered. */
15
+ export function searchComponents(query: string, limit = 5, options?: SearchOptions): SearchCard[] {
16
+ return engine.search(query, limit, options);
17
+ }
18
+
19
+ /** Development only: why each component scored what it did. Not part of the agent's result. */
20
+ export const explainSearch = (query: string, options?: SearchOptions) => engine.explain(query, options);
@@ -0,0 +1,25 @@
1
+ import type { AgentCapability } from '../types';
2
+
3
+ /**
4
+ * **Lexical scoring — the search as it shipped in 0.3.0, unchanged.** Whole selection-signal phrases
5
+ * in the request count most, then shared words with the signals, the name and purpose, then when to
6
+ * use it. It is one input to the hybrid ranking, and on its own it is the fallback whenever semantic
7
+ * retrieval is unavailable.
8
+ */
9
+ const STOP = new Set('a an the of for to and or in on at by with my me i we our you your it is are be this that these those can could would should please make create show give get want need some any what how which who when from as into about'.split(' '));
10
+ const stem = (w: string) => w.replace(/(ies)$/, 'y').replace(/(ing|ed|es|s)$/, '');
11
+ const words = (s: string) => s.toLowerCase().replace(/[^\p{L}\p{N}\s'-]/gu, ' ').split(/[\s'-]+/).filter(w => w.length > 1 && !STOP.has(w)).map(stem);
12
+
13
+ export function lexicalScore(c: AgentCapability, query: string): number {
14
+ const q = ` ${query.toLowerCase().replace(/[^\p{L}\p{N}\s]/gu, ' ').replace(/\s+/g, ' ')} `;
15
+ const qw = new Set(words(query));
16
+ let score = 0;
17
+ for (const s of c.signals) {
18
+ const phrase = ` ${s.toLowerCase().replace(/[^\p{L}\p{N}\s]/gu, ' ').replace(/\s+/g, ' ')} `;
19
+ if (q.includes(phrase)) score += 6 + 2 * (phrase.trim().split(' ').length - 1);
20
+ else score += words(s).filter(w => qw.has(w)).length * 2;
21
+ }
22
+ score += words(`${c.name} ${c.purpose}`).filter(w => qw.has(w)).length;
23
+ score += new Set(words(c.useWhen.join(' ')).filter(w => qw.has(w))).size * 0.5;
24
+ return score;
25
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * **Query normalisation** — whitespace, case, obvious punctuation and repeated words. Nothing that
3
+ * changes meaning: no synonyms, no spelling rewrites. The original stays available for lexical
4
+ * phrase matching and for debugging.
5
+ */
6
+ export type NormalizedQuery = { original: string; text: string; tokens: string[]; empty: boolean };
7
+
8
+ export function normalizeQuery(query: unknown): NormalizedQuery {
9
+ const original = typeof query === 'string' ? query : '';
10
+ const text = original.toLowerCase().normalize('NFKC').replace(/[^\p{L}\p{N}\s'-]/gu, ' ').replace(/\s+/g, ' ').trim();
11
+ const tokens: string[] = [];
12
+ for (const t of text.split(/[\s-]+/)) {
13
+ const w = t.replace(/^'+|'+$/g, '');
14
+ if (w && tokens[tokens.length - 1] !== w) tokens.push(w);
15
+ }
16
+ return { original, text: tokens.join(' '), tokens, empty: tokens.length === 0 };
17
+ }
@@ -0,0 +1,148 @@
1
+ import { AGENT_COMPONENTS, describeComponent, isAgentComponent } from '../catalog';
2
+ import type { AgentCapability, CapabilityCard } from '../types';
3
+ import { searchDocumentOf } from './document';
4
+ import { SearchIndex, cosine, indexVersion, type Centring, type IndexedDocument } from './searchIndex';
5
+ import { lexicalScore } from './lexical';
6
+ import { normalizeQuery, type NormalizedQuery } from './normalize';
7
+ import type { EmbeddingProvider, ScoreBreakdown, SearchDocument, SearchOptions, SearchWeights } from './types';
8
+
9
+ /**
10
+ * **Component search: intent → candidates.**
11
+ *
12
+ * normalizeQuery → retrieveCandidates (semantic + lexical) → applyEligibility → rankCandidates → cards
13
+ *
14
+ * Semantic similarity comes from an `EmbeddingProvider` over each component's search document
15
+ * (`document.ts`, derived from its capability); lexical similarity is 0.3.0's scorer. If semantic
16
+ * retrieval is unavailable — no provider, an index that fails to build, a query with no known
17
+ * words — the ranking is exactly the lexical one. Eligibility (approved, and allowed by the host)
18
+ * is applied after retrieval and is authoritative: relevance never makes a component usable.
19
+ * Ties break on catalogue order, so the same query and catalogue give the same list.
20
+ */
21
+
22
+ export type SearchCard = CapabilityCard & { score: number };
23
+
24
+ export type ComponentSearch = {
25
+ search(query: string, limit?: number, options?: SearchOptions): SearchCard[];
26
+ /** Development: every component's scores, best first — never part of the agent's result. */
27
+ explain(query: string, options?: SearchOptions): ScoreBreakdown[] & { mode: 'hybrid' | 'lexical'; version: string };
28
+ /** The index in use (null when searching lexically). */
29
+ index(): SearchIndex | null;
30
+ };
31
+
32
+ const round = (x: number) => Math.round(x * 1000) / 1000;
33
+ const cardOf = (c: AgentCapability): CapabilityCard => ({ component: c.component, name: c.name, kind: c.kind, purpose: c.purpose, signals: c.signals });
34
+
35
+ /** The approved catalogue, in order, and its search documents — derived once per module. */
36
+ let catalogCache: { caps: AgentCapability[]; docs: SearchDocument[] } | null = null;
37
+ export function searchCatalog(): { caps: AgentCapability[]; docs: SearchDocument[] } {
38
+ if (!catalogCache) {
39
+ const caps = AGENT_COMPONENTS.map(id => describeComponent(id)!);
40
+ catalogCache = { caps, docs: caps.map((c, i) => searchDocumentOf(c, i, AGENT_COMPONENTS)) };
41
+ }
42
+ return catalogCache;
43
+ }
44
+
45
+ export function createComponentSearch(opts: {
46
+ provider?: EmbeddingProvider | null;
47
+ weights: SearchWeights;
48
+ /** Where the documents come from — the approved catalogue by default. */
49
+ catalog?: () => { caps: AgentCapability[]; docs: SearchDocument[] };
50
+ }): ComponentSearch {
51
+ const catalog = opts.catalog ?? searchCatalog;
52
+ const w = opts.weights;
53
+ let built: SearchIndex | null = null;
54
+ let failed: string | null = null;
55
+
56
+ /* The index for the catalogue as it is now — rebuilt whenever its version (documents + provider) changes. */
57
+ const indexFor = (docs: readonly SearchDocument[]): SearchIndex | null => {
58
+ const provider = opts.provider;
59
+ if (!provider) return null;
60
+ const version = indexVersion(docs, provider);
61
+ if (built?.version === version) return built;
62
+ if (failed === version) return null;
63
+ try {
64
+ built = new SearchIndex(provider, version).build(docs);
65
+ return built;
66
+ } catch {
67
+ failed = version;
68
+ built = null;
69
+ return null;
70
+ }
71
+ };
72
+
73
+ const queryVector = (q: NormalizedQuery, index: SearchIndex): Float32Array | null => {
74
+ try {
75
+ const v = index.provider.embed([q.text])[0];
76
+ if (!v || v.length !== index.mean?.length || !v.some(x => x !== 0) || v.some(x => !Number.isFinite(x))) return null;
77
+ return v;
78
+ } catch { return null; }
79
+ };
80
+
81
+ function retrieveCandidates(q: NormalizedQuery) {
82
+ const { caps, docs } = catalog();
83
+ const index = q.empty ? null : indexFor(docs);
84
+ const qv = index ? queryVector(q, index) : null;
85
+ const centring = { mean: w.centre !== 'none' ? index?.mean ?? null : null, principal: w.centre === 'pc' ? index?.principal ?? null : null };
86
+ return {
87
+ mode: (qv ? 'hybrid' : 'lexical') as 'hybrid' | 'lexical',
88
+ version: index?.version ?? '',
89
+ candidates: caps.map((c, order) => {
90
+ const lexical = q.empty ? 0 : lexicalScore(c, q.original);
91
+ if (!qv || !index) return { cap: c, order, lexical, semantic: null as number | null, negative: null as number | null };
92
+ const e = index.entries.get(c.component);
93
+ if (!e) return { cap: c, order, lexical, semantic: null, negative: null };
94
+ const { pos, posMax } = fieldScore(qv, e, centring);
95
+ const neg = e.negative.length ? Math.max(...e.negative.map(n => cosine(qv, n, centring))) : 0;
96
+ return { cap: c, order, lexical, semantic: pos - w.negative * Math.max(0, neg - posMax), negative: neg };
97
+ }),
98
+ };
99
+ }
100
+
101
+ /* How close a query vector is to a component: the mean of its `topK` closest fields (weighted by kind), and the closest one. */
102
+ function fieldScore(qv: Float32Array, e: IndexedDocument, centring: Centring) {
103
+ const sims = e.positive.filter(p => w.fields[p.type] > 0).map(p => { const raw = cosine(qv, p.vector, centring); return { raw, weighted: w.fields[p.type] * raw }; });
104
+ const top = sims.map(x => x.weighted).sort((a, b) => b - a).slice(0, w.topK);
105
+ return { pos: top.length ? top.reduce((a, b) => a + b, 0) / top.length : 0, posMax: sims.length ? Math.max(...sims.map(x => x.raw)) : 0 };
106
+ }
107
+
108
+ const applyEligibility = <T extends { cap: AgentCapability }>(list: T[], options: SearchOptions = {}) => list.map(x => ({
109
+ ...x,
110
+ availability: isAgentComponent(x.cap.component) && (!options.available || options.available.includes(x.cap.component)) ? 1 : 0,
111
+ metadata: !options.kinds || options.kinds.includes(x.cap.kind) ? 1 : 0,
112
+ }));
113
+
114
+ function rankCandidates(query: string, options?: SearchOptions) {
115
+ const q = normalizeQuery(query);
116
+ const r = retrieveCandidates(q);
117
+ const scored = applyEligibility(r.candidates, options).map(x => ({
118
+ ...x,
119
+ final: r.mode === 'lexical' || x.semantic === null
120
+ ? x.lexical
121
+ : w.semantic * x.semantic + w.lexical * (x.lexical / (x.lexical + w.lexicalHalf)),
122
+ }));
123
+ scored.sort((a, b) => b.final - a.final || a.order - b.order);
124
+ return { ...r, scored };
125
+ }
126
+
127
+ return {
128
+ search(query, limit = 5, options) {
129
+ const r = rankCandidates(query, options);
130
+ const eligible = r.scored.filter(x => x.availability && x.metadata);
131
+ const kept = r.mode === 'lexical'
132
+ ? eligible.filter(x => x.final > 0)
133
+ : (() => { const best = eligible[0]?.final ?? 0; return eligible.filter(x => x.final >= w.minScore && (best <= 0 || x.final >= best * w.relative)); })();
134
+ return kept.slice(0, Math.max(0, limit)).map(x => ({ ...cardOf(x.cap), score: round(x.final) }));
135
+ },
136
+ explain(query, options) {
137
+ const r = rankCandidates(query, options);
138
+ const out = r.scored.map(x => ({
139
+ component: x.cap.component, semantic: x.semantic === null ? null : round(x.semantic), negative: x.negative === null ? null : round(x.negative),
140
+ lexical: round(x.lexical), metadata: x.metadata, availability: x.availability, final: round(x.final),
141
+ })) as ScoreBreakdown[] & { mode: 'hybrid' | 'lexical'; version: string };
142
+ out.mode = r.mode;
143
+ out.version = r.version;
144
+ return out;
145
+ },
146
+ index: () => indexFor(catalog().docs),
147
+ };
148
+ }
@@ -0,0 +1,107 @@
1
+ import { versionOf } from './document';
2
+ import type { EmbeddingProvider, FieldType, SearchDocument } from './types';
3
+
4
+ /**
5
+ * **The search index — derived, rebuildable, never the source of truth.** Each component's document
6
+ * fields as vectors, plus the catalogue mean (for centring). Its `version` is the documents' hash
7
+ * plus the provider's id: if the catalogue or the model changes, the version does, and a cached
8
+ * index for the old one is never served (`indexFor`).
9
+ */
10
+ export type IndexedDocument = {
11
+ component: string;
12
+ order: number;
13
+ positive: { type: FieldType; vector: Float32Array }[];
14
+ negative: Float32Array[];
15
+ };
16
+
17
+ export class SearchIndex {
18
+ readonly entries = new Map<string, IndexedDocument>();
19
+ mean: Float32Array | null = null;
20
+ /** The first principal component of the (centred) document vectors — the direction every text shares most (SIF's common-component removal). */
21
+ principal: Float32Array | null = null;
22
+ constructor(readonly provider: EmbeddingProvider, public version: string) {}
23
+
24
+ /** Throw away everything and index these documents. */
25
+ build(docs: readonly SearchDocument[]): this {
26
+ this.entries.clear();
27
+ for (const d of docs) this.put(d);
28
+ this.version = indexVersion(docs, this.provider);
29
+ return this.recentre();
30
+ }
31
+
32
+
33
+ /** Add or replace one component. */
34
+ upsert(doc: SearchDocument, allDocs?: readonly SearchDocument[]): this {
35
+ this.put(doc);
36
+ if (allDocs) this.version = indexVersion(allDocs, this.provider);
37
+ return this.recentre();
38
+ }
39
+
40
+ remove(component: string, allDocs?: readonly SearchDocument[]): this {
41
+ this.entries.delete(component);
42
+ if (allDocs) this.version = indexVersion(allDocs, this.provider);
43
+ return this.recentre();
44
+ }
45
+
46
+ private put(d: SearchDocument) {
47
+ const vectors = this.provider.embed([...d.positive.map(p => p.text), ...d.negative.map(n => n.text)]);
48
+ if (vectors.length !== d.positive.length + d.negative.length) throw new Error(`${this.provider.id} returned ${vectors.length} vectors for ${d.component}`);
49
+ this.entries.set(d.component, {
50
+ component: d.component,
51
+ order: d.order,
52
+ positive: d.positive.map((p, i) => ({ type: p.type, vector: vectors[i]! })),
53
+ negative: vectors.slice(d.positive.length),
54
+ });
55
+ }
56
+
57
+ /** The mean of every positive field vector: what all documents share, subtracted before comparing when centring. */
58
+ private recentre(): this {
59
+ let sum: Float32Array | null = null; let n = 0;
60
+ for (const e of this.entries.values()) for (const p of e.positive) {
61
+ sum ??= new Float32Array(p.vector.length);
62
+ for (let i = 0; i < sum.length; i++) sum[i]! += p.vector[i]!;
63
+ n++;
64
+ }
65
+ if (sum && n) for (let i = 0; i < sum.length; i++) sum[i]! /= n;
66
+ this.mean = sum;
67
+ this.principal = sum ? firstComponent([...this.entries.values()].flatMap(e => e.positive.map(p => p.vector)), sum) : null;
68
+ return this;
69
+ }
70
+ }
71
+
72
+ export const indexVersion = (docs: readonly SearchDocument[], provider: EmbeddingProvider) => `${versionOf(docs)}:${provider.id}`;
73
+
74
+ /** Power iteration — deterministic start, fixed iterations. */
75
+ function firstComponent(vectors: Float32Array[], mean: Float32Array): Float32Array {
76
+ const d = mean.length;
77
+ let u = new Float32Array(d).fill(1 / Math.sqrt(d));
78
+ for (let it = 0; it < 30; it++) {
79
+ const next = new Float32Array(d);
80
+ for (const v of vectors) {
81
+ let dot = 0; for (let i = 0; i < d; i++) dot += (v[i]! - mean[i]!) * u[i]!;
82
+ for (let i = 0; i < d; i++) next[i]! += dot * (v[i]! - mean[i]!);
83
+ }
84
+ let n = 0; for (const x of next) n += x * x; n = Math.sqrt(n) || 1;
85
+ for (let i = 0; i < d; i++) next[i]! /= n;
86
+ u = next;
87
+ }
88
+ return u;
89
+ }
90
+
91
+ /** What is compared: the vector less the shared mean and, if given, less its projection on the shared direction. */
92
+ export type Centring = { mean: Float32Array | null; principal: Float32Array | null };
93
+ function centred(v: Float32Array, c: Centring): Float32Array {
94
+ if (!c.mean && !c.principal) return v;
95
+ const out = new Float32Array(v.length);
96
+ for (let i = 0; i < v.length; i++) out[i] = v[i]! - (c.mean ? c.mean[i]! : 0);
97
+ if (c.principal) { let dot = 0; for (let i = 0; i < v.length; i++) dot += out[i]! * c.principal[i]!; for (let i = 0; i < v.length; i++) out[i]! -= dot * c.principal[i]!; }
98
+ return out;
99
+ }
100
+
101
+ /** Cosine similarity after centring. */
102
+ export function cosine(a: Float32Array, b: Float32Array, c: Centring = { mean: null, principal: null }): number {
103
+ const x = centred(a, c), y = centred(b, c);
104
+ let dot = 0, na = 0, nb = 0;
105
+ for (let i = 0; i < x.length; i++) { dot += x[i]! * y[i]!; na += x[i]! * x[i]!; nb += y[i]! * y[i]!; }
106
+ return na && nb ? dot / Math.sqrt(na * nb) : 0;
107
+ }