@ddwang/magnitude-core 0.3.1-ddwang.2 → 0.3.1-ddwang.21

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 (363) hide show
  1. package/dist/cli.cjs +2 -0
  2. package/dist/cli.cjs.map +1 -0
  3. package/dist/cli.d.cts +2 -0
  4. package/dist/cli.d.ts +2 -0
  5. package/dist/cli.mjs +1 -0
  6. package/dist/cli.mjs.map +1 -0
  7. package/dist/index.cjs +2704 -1522
  8. package/dist/index.cjs.map +1 -0
  9. package/dist/index.d.cts +188 -50
  10. package/dist/index.d.ts +1147 -23
  11. package/dist/index.mjs +2527 -1362
  12. package/dist/index.mjs.map +1 -0
  13. package/node_modules/patchright-core/README.md +3 -0
  14. package/node_modules/patchright-core/ThirdPartyNotices.txt +13 -0
  15. package/node_modules/patchright-core/bin/install_media_pack.ps1 +5 -0
  16. package/node_modules/patchright-core/bin/install_webkit_wsl.ps1 +33 -0
  17. package/node_modules/patchright-core/bin/reinstall_chrome_beta_linux.sh +42 -0
  18. package/node_modules/patchright-core/bin/reinstall_chrome_beta_mac.sh +13 -0
  19. package/node_modules/patchright-core/bin/reinstall_chrome_beta_win.ps1 +24 -0
  20. package/node_modules/patchright-core/bin/reinstall_chrome_stable_linux.sh +42 -0
  21. package/node_modules/patchright-core/bin/reinstall_chrome_stable_mac.sh +12 -0
  22. package/node_modules/patchright-core/bin/reinstall_chrome_stable_win.ps1 +24 -0
  23. package/node_modules/patchright-core/bin/reinstall_msedge_beta_linux.sh +48 -0
  24. package/node_modules/patchright-core/bin/reinstall_msedge_beta_mac.sh +11 -0
  25. package/node_modules/patchright-core/bin/reinstall_msedge_beta_win.ps1 +23 -0
  26. package/node_modules/patchright-core/bin/reinstall_msedge_dev_linux.sh +48 -0
  27. package/node_modules/patchright-core/bin/reinstall_msedge_dev_mac.sh +11 -0
  28. package/node_modules/patchright-core/bin/reinstall_msedge_dev_win.ps1 +23 -0
  29. package/node_modules/patchright-core/bin/reinstall_msedge_stable_linux.sh +48 -0
  30. package/node_modules/patchright-core/bin/reinstall_msedge_stable_mac.sh +11 -0
  31. package/node_modules/patchright-core/bin/reinstall_msedge_stable_win.ps1 +24 -0
  32. package/node_modules/patchright-core/browsers.json +52 -0
  33. package/node_modules/patchright-core/cli.js +22 -0
  34. package/node_modules/patchright-core/index.d.ts +17 -0
  35. package/node_modules/patchright-core/index.js +17 -0
  36. package/node_modules/patchright-core/index.mjs +28 -0
  37. package/node_modules/patchright-core/lib/bootstrap.js +149 -0
  38. package/node_modules/patchright-core/lib/coreBundle.js +80653 -0
  39. package/node_modules/patchright-core/lib/entry/cliDaemon.js +5 -0
  40. package/node_modules/patchright-core/lib/entry/dashboardApp.js +3 -0
  41. package/node_modules/patchright-core/lib/entry/mcp.js +10 -0
  42. package/node_modules/patchright-core/lib/entry/oopBrowserDownload.js +3 -0
  43. package/node_modules/patchright-core/lib/package.js +50 -0
  44. package/node_modules/patchright-core/lib/server/chromium/appIcon.png +0 -0
  45. package/node_modules/patchright-core/lib/server/electron/loader.js +112 -0
  46. package/node_modules/patchright-core/lib/serverRegistry.js +1939 -0
  47. package/node_modules/patchright-core/lib/serverRegistry.js.LICENSE +65 -0
  48. package/node_modules/patchright-core/lib/tools/cli-client/channelSessions.js +141 -0
  49. package/node_modules/patchright-core/lib/tools/cli-client/cli.js +7 -0
  50. package/node_modules/patchright-core/lib/tools/cli-client/help.json +808 -0
  51. package/node_modules/patchright-core/lib/tools/cli-client/minimist.js +128 -0
  52. package/node_modules/patchright-core/lib/tools/cli-client/output.js +352 -0
  53. package/node_modules/patchright-core/lib/tools/cli-client/program.js +422 -0
  54. package/node_modules/patchright-core/lib/tools/cli-client/registry.js +180 -0
  55. package/node_modules/patchright-core/lib/tools/cli-client/session.js +261 -0
  56. package/node_modules/patchright-core/lib/tools/dashboard/appIcon.png +0 -0
  57. package/node_modules/patchright-core/lib/tools/skills/playwright-cli/SKILL.md +493 -0
  58. package/node_modules/patchright-core/lib/tools/skills/playwright-cli/references/element-attributes.md +23 -0
  59. package/node_modules/patchright-core/lib/tools/skills/playwright-cli/references/playwright-tests.md +39 -0
  60. package/node_modules/patchright-core/lib/tools/skills/playwright-cli/references/pr-attachments.md +60 -0
  61. package/node_modules/patchright-core/lib/tools/skills/playwright-cli/references/request-mocking.md +87 -0
  62. package/node_modules/patchright-core/lib/tools/skills/playwright-cli/references/running-code.md +245 -0
  63. package/node_modules/patchright-core/lib/tools/skills/playwright-cli/references/session-management.md +227 -0
  64. package/node_modules/patchright-core/lib/tools/skills/playwright-cli/references/storage-state.md +275 -0
  65. package/node_modules/patchright-core/lib/tools/skills/playwright-cli/references/test-generation.md +433 -0
  66. package/node_modules/patchright-core/lib/tools/skills/playwright-cli/references/tracing.md +139 -0
  67. package/node_modules/patchright-core/lib/tools/skills/playwright-cli/references/video-recording.md +216 -0
  68. package/node_modules/patchright-core/lib/tools/skills/playwright-component-testing/SKILL.md +136 -0
  69. package/node_modules/patchright-core/lib/tools/skills/playwright-component-testing/references/gallery-spec.md +144 -0
  70. package/node_modules/patchright-core/lib/tools/skills/playwright-component-testing/references/migration.md +89 -0
  71. package/node_modules/patchright-core/lib/tools/skills/playwright-component-testing/references/react.md +69 -0
  72. package/node_modules/patchright-core/lib/tools/skills/playwright-component-testing/references/typing.md +173 -0
  73. package/node_modules/patchright-core/lib/tools/skills/playwright-component-testing/references/vue.md +77 -0
  74. package/node_modules/patchright-core/lib/tools/skills/playwright-trace/SKILL.md +174 -0
  75. package/node_modules/patchright-core/lib/tools/utils/extension.js +112 -0
  76. package/node_modules/patchright-core/lib/tools/utils/socketConnection.js +108 -0
  77. package/node_modules/patchright-core/lib/utilsBundle.js +86225 -0
  78. package/node_modules/patchright-core/lib/utilsBundle.js.LICENSE +1890 -0
  79. package/node_modules/patchright-core/lib/vite/dashboard/assets/codeMirrorModule--QdMvsKi.css +1 -0
  80. package/node_modules/patchright-core/lib/vite/dashboard/assets/codeMirrorModule-CQ8RZGBm.js +32 -0
  81. package/node_modules/patchright-core/lib/vite/dashboard/assets/codicon-DCmgc-ay.ttf +0 -0
  82. package/node_modules/patchright-core/lib/vite/dashboard/assets/firefox-1bWoP6pv.svg +1 -0
  83. package/node_modules/patchright-core/lib/vite/dashboard/assets/firefox-beta-k3eOH_eK.svg +1 -0
  84. package/node_modules/patchright-core/lib/vite/dashboard/assets/firefox-nightly-Cp5nfeDT.svg +1 -0
  85. package/node_modules/patchright-core/lib/vite/dashboard/assets/index-AwgwcYie.css +1 -0
  86. package/node_modules/patchright-core/lib/vite/dashboard/assets/index-hRvO4yU2.js +12 -0
  87. package/node_modules/patchright-core/lib/vite/dashboard/assets/safari-na3_-uQk.svg +1 -0
  88. package/node_modules/patchright-core/lib/vite/dashboard/index.html +29 -0
  89. package/node_modules/patchright-core/lib/vite/dashboard/playwright-logo.svg +24 -0
  90. package/node_modules/patchright-core/lib/vite/htmlReport/index.html +16 -0
  91. package/node_modules/patchright-core/lib/vite/htmlReport/report.css +2 -0
  92. package/node_modules/patchright-core/lib/vite/htmlReport/report.js +32 -0
  93. package/node_modules/patchright-core/lib/vite/recorder/assets/codeMirrorModule--QdMvsKi.css +1 -0
  94. package/node_modules/patchright-core/lib/vite/recorder/assets/codeMirrorModule-GBnsXk4c.js +32 -0
  95. package/node_modules/patchright-core/lib/vite/recorder/assets/codicon-DCmgc-ay.ttf +0 -0
  96. package/node_modules/patchright-core/lib/vite/recorder/assets/index-BZpYJZ-P.css +1 -0
  97. package/node_modules/patchright-core/lib/vite/recorder/assets/index-CVDOfo-j.js +129 -0
  98. package/node_modules/patchright-core/lib/vite/recorder/index.html +29 -0
  99. package/node_modules/patchright-core/lib/vite/recorder/playwright-logo.svg +9 -0
  100. package/node_modules/patchright-core/lib/vite/traceViewer/assets/codeMirrorModule-G79327TW.js +32 -0
  101. package/node_modules/patchright-core/lib/vite/traceViewer/assets/defaultSettingsView-D9EV0iaS.js +184 -0
  102. package/node_modules/patchright-core/lib/vite/traceViewer/assets/urlMatch-L3liM589.js +1 -0
  103. package/node_modules/patchright-core/lib/vite/traceViewer/assets/xtermModule-Al_u-Nk5.js +7 -0
  104. package/node_modules/patchright-core/lib/vite/traceViewer/codeMirrorModule.-QdMvsKi.css +1 -0
  105. package/node_modules/patchright-core/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
  106. package/node_modules/patchright-core/lib/vite/traceViewer/defaultSettingsView.C8BeHuxd.css +1 -0
  107. package/node_modules/patchright-core/lib/vite/traceViewer/index.B_TqY17P.css +1 -0
  108. package/node_modules/patchright-core/lib/vite/traceViewer/index.CMB2-c8e.js +1 -0
  109. package/node_modules/patchright-core/lib/vite/traceViewer/index.html +44 -0
  110. package/node_modules/patchright-core/lib/vite/traceViewer/manifest.webmanifest +16 -0
  111. package/node_modules/patchright-core/lib/vite/traceViewer/playwright-logo.svg +9 -0
  112. package/node_modules/patchright-core/lib/vite/traceViewer/snapshot.B_Jk1wbt.js +1 -0
  113. package/node_modules/patchright-core/lib/vite/traceViewer/snapshot.html +10 -0
  114. package/node_modules/patchright-core/lib/vite/traceViewer/sw.bundle.js +4 -0
  115. package/node_modules/patchright-core/lib/vite/traceViewer/uiMode.C3yLoy2G.js +5 -0
  116. package/node_modules/patchright-core/lib/vite/traceViewer/uiMode.CyMfwkXJ.css +1 -0
  117. package/node_modules/patchright-core/lib/vite/traceViewer/uiMode.html +18 -0
  118. package/node_modules/patchright-core/lib/vite/traceViewer/xtermModule.kHJ-D0s7.css +1 -0
  119. package/node_modules/patchright-core/lib/webp_codec.LICENSE +173 -0
  120. package/node_modules/patchright-core/lib/webp_codec.wasm +0 -0
  121. package/node_modules/patchright-core/lib/xdg-open +1267 -0
  122. package/node_modules/patchright-core/package.json +34 -0
  123. package/node_modules/patchright-core/types/protocol.d.ts +24776 -0
  124. package/node_modules/patchright-core/types/structs.d.ts +52 -0
  125. package/node_modules/patchright-core/types/types.d.ts +27167 -0
  126. package/node_modules/playwright/.bun-tag-91d746a6045e143f +0 -0
  127. package/node_modules/playwright/README.md +300 -0
  128. package/node_modules/playwright/ThirdPartyNotices.txt +14 -0
  129. package/node_modules/playwright/cli.js +19 -0
  130. package/node_modules/playwright/index.d.ts +17 -0
  131. package/node_modules/playwright/index.js +17 -0
  132. package/node_modules/playwright/index.mjs +18 -0
  133. package/node_modules/playwright/lib/agents/agentParser.js +89 -0
  134. package/node_modules/playwright/lib/agents/copilot-setup-steps.yml +34 -0
  135. package/node_modules/playwright/lib/agents/generateAgents.js +395 -0
  136. package/node_modules/playwright/lib/agents/playwright-test-coverage.prompt.md +31 -0
  137. package/node_modules/playwright/lib/agents/playwright-test-generate.prompt.md +8 -0
  138. package/node_modules/playwright/lib/agents/playwright-test-generator.agent.md +88 -0
  139. package/node_modules/playwright/lib/agents/playwright-test-heal.prompt.md +6 -0
  140. package/node_modules/playwright/lib/agents/playwright-test-healer.agent.md +56 -0
  141. package/node_modules/playwright/lib/agents/playwright-test-plan.prompt.md +9 -0
  142. package/node_modules/playwright/lib/agents/playwright-test-planner.agent.md +74 -0
  143. package/node_modules/playwright/lib/cli/reportActions.js +78 -0
  144. package/node_modules/playwright/lib/cli/testActions.js +217 -0
  145. package/node_modules/playwright/lib/common/index.js +2937 -0
  146. package/node_modules/playwright/lib/common/index.js.txt +33 -0
  147. package/node_modules/playwright/lib/errorContext.js +129 -0
  148. package/node_modules/playwright/lib/globals.js +58 -0
  149. package/node_modules/playwright/lib/index.js +827 -0
  150. package/node_modules/playwright/lib/isomorphic.js +260 -0
  151. package/node_modules/playwright/lib/isomorphic.js.txt +9 -0
  152. package/node_modules/playwright/lib/loader/loaderProcessEntry.js +34 -0
  153. package/node_modules/playwright/lib/loader/loaderProcessEntry.js.txt +9 -0
  154. package/node_modules/playwright/lib/matchers/expect.js +13496 -0
  155. package/node_modules/playwright/lib/matchers/expect.js.LICENSE +640 -0
  156. package/node_modules/playwright/lib/matchers/expect.js.txt +67 -0
  157. package/node_modules/playwright/lib/mcp/test/browserBackend.js +135 -0
  158. package/node_modules/playwright/lib/mcp/test/generatorTools.js +122 -0
  159. package/node_modules/playwright/lib/mcp/test/plannerTools.js +150 -0
  160. package/node_modules/playwright/lib/mcp/test/seed.js +82 -0
  161. package/node_modules/playwright/lib/mcp/test/streams.js +44 -0
  162. package/node_modules/playwright/lib/mcp/test/testBackend.js +99 -0
  163. package/node_modules/playwright/lib/mcp/test/testContext.js +306 -0
  164. package/node_modules/playwright/lib/mcp/test/testTool.js +30 -0
  165. package/node_modules/playwright/lib/mcp/test/testTools.js +98 -0
  166. package/node_modules/playwright/lib/package.js +47 -0
  167. package/node_modules/playwright/lib/program.js +242 -0
  168. package/node_modules/playwright/lib/runner/index.js +8721 -0
  169. package/node_modules/playwright/lib/runner/index.js.txt +62 -0
  170. package/node_modules/playwright/lib/transform/babelBundle.js +72490 -0
  171. package/node_modules/playwright/lib/transform/babelBundle.js.LICENSE +2384 -0
  172. package/node_modules/playwright/lib/transform/babelBundle.js.txt +328 -0
  173. package/node_modules/playwright/lib/transform/esmLoader.js +8213 -0
  174. package/node_modules/playwright/lib/transform/esmLoader.js.LICENSE +355 -0
  175. package/node_modules/playwright/lib/transform/esmLoader.js.txt +60 -0
  176. package/node_modules/playwright/lib/util.js +373 -0
  177. package/node_modules/playwright/lib/worker/workerProcessEntry.js +1860 -0
  178. package/node_modules/playwright/lib/worker/workerProcessEntry.js.txt +19 -0
  179. package/node_modules/playwright/package.json +50 -0
  180. package/node_modules/playwright/test.d.ts +18 -0
  181. package/node_modules/playwright/test.js +24 -0
  182. package/node_modules/playwright/test.mjs +35 -0
  183. package/node_modules/playwright/types/test.d.ts +11191 -0
  184. package/node_modules/playwright/types/testReporter.d.ts +950 -0
  185. package/package.json +21 -12
  186. package/dist/actions/desktopActions.d.ts +0 -58
  187. package/dist/actions/desktopActions.js +0 -155
  188. package/dist/actions/index.d.ts +0 -27
  189. package/dist/actions/index.js +0 -11
  190. package/dist/actions/memoryActions.d.ts +0 -9
  191. package/dist/actions/memoryActions.js +0 -34
  192. package/dist/actions/taskActions.d.ts +0 -8
  193. package/dist/actions/taskActions.js +0 -27
  194. package/dist/actions/types.d.ts +0 -35
  195. package/dist/actions/types.js +0 -5
  196. package/dist/actions/util.d.ts +0 -21
  197. package/dist/actions/util.js +0 -280
  198. package/dist/actions/webActions.d.ts +0 -87
  199. package/dist/actions/webActions.js +0 -214
  200. package/dist/actions/webActions.test.d.ts +0 -1
  201. package/dist/actions/webActions.test.js +0 -43
  202. package/dist/agent/browserAgent.d.ts +0 -31
  203. package/dist/agent/browserAgent.js +0 -136
  204. package/dist/agent/errors.d.ts +0 -22
  205. package/dist/agent/errors.js +0 -97
  206. package/dist/agent/index.d.ts +0 -64
  207. package/dist/agent/index.js +0 -505
  208. package/dist/agent/narrator.d.ts +0 -4
  209. package/dist/agent/narrator.js +0 -63
  210. package/dist/agent/pause.test.d.ts +0 -1
  211. package/dist/agent/pause.test.js +0 -194
  212. package/dist/ai/baml_client/async_client.d.ts +0 -64
  213. package/dist/ai/baml_client/async_client.js +0 -284
  214. package/dist/ai/baml_client/async_request.d.ts +0 -39
  215. package/dist/ai/baml_client/async_request.js +0 -134
  216. package/dist/ai/baml_client/config.d.ts +0 -11
  217. package/dist/ai/baml_client/config.js +0 -20
  218. package/dist/ai/baml_client/globals.d.ts +0 -16
  219. package/dist/ai/baml_client/globals.js +0 -37
  220. package/dist/ai/baml_client/index.d.ts +0 -17
  221. package/dist/ai/baml_client/index.js +0 -42
  222. package/dist/ai/baml_client/inlinedbaml.d.ts +0 -19
  223. package/dist/ai/baml_client/inlinedbaml.js +0 -31
  224. package/dist/ai/baml_client/parser.d.ts +0 -53
  225. package/dist/ai/baml_client/parser.js +0 -86
  226. package/dist/ai/baml_client/partial_types.d.ts +0 -61
  227. package/dist/ai/baml_client/partial_types.js +0 -10
  228. package/dist/ai/baml_client/sync_client.d.ts +0 -57
  229. package/dist/ai/baml_client/sync_client.js +0 -142
  230. package/dist/ai/baml_client/sync_request.d.ts +0 -37
  231. package/dist/ai/baml_client/sync_request.js +0 -134
  232. package/dist/ai/baml_client/tracing.d.ts +0 -16
  233. package/dist/ai/baml_client/tracing.js +0 -18
  234. package/dist/ai/baml_client/type_builder.d.ts +0 -40
  235. package/dist/ai/baml_client/type_builder.js +0 -120
  236. package/dist/ai/baml_client/types.d.ts +0 -69
  237. package/dist/ai/baml_client/types.js +0 -15
  238. package/dist/ai/baml_client/watchers.d.ts +0 -32
  239. package/dist/ai/baml_client/watchers.js +0 -50
  240. package/dist/ai/baseten.d.ts +0 -4
  241. package/dist/ai/baseten.js +0 -10
  242. package/dist/ai/claudeCode.d.ts +0 -1
  243. package/dist/ai/claudeCode.js +0 -186
  244. package/dist/ai/modelHarness.d.ts +0 -39
  245. package/dist/ai/modelHarness.js +0 -324
  246. package/dist/ai/modelResponseError.d.ts +0 -4
  247. package/dist/ai/modelResponseError.js +0 -8
  248. package/dist/ai/multiModelHarness.d.ts +0 -24
  249. package/dist/ai/multiModelHarness.js +0 -52
  250. package/dist/ai/plannerResponse.d.ts +0 -34
  251. package/dist/ai/plannerResponse.js +0 -96
  252. package/dist/ai/plannerResponse.test.d.ts +0 -1
  253. package/dist/ai/plannerResponse.test.js +0 -112
  254. package/dist/ai/structuredOutput.d.ts +0 -11
  255. package/dist/ai/structuredOutput.js +0 -94
  256. package/dist/ai/structuredOutput.test.d.ts +0 -1
  257. package/dist/ai/structuredOutput.test.js +0 -91
  258. package/dist/ai/types.d.ts +0 -119
  259. package/dist/ai/types.js +0 -5
  260. package/dist/ai/util.d.ts +0 -13
  261. package/dist/ai/util.js +0 -200
  262. package/dist/ai/util.test.d.ts +0 -1
  263. package/dist/ai/util.test.js +0 -95
  264. package/dist/cli.js +0 -3
  265. package/dist/common/actions.js +0 -14
  266. package/dist/common/events.d.ts +0 -17
  267. package/dist/common/events.js +0 -3
  268. package/dist/common/failure.d.ts +0 -68
  269. package/dist/common/failure.js +0 -1
  270. package/dist/common/index.d.ts +0 -3
  271. package/dist/common/index.js +0 -3
  272. package/dist/common/operation.d.ts +0 -31
  273. package/dist/common/operation.js +0 -102
  274. package/dist/common/operation.test.d.ts +0 -1
  275. package/dist/common/operation.test.js +0 -53
  276. package/dist/common/retry.d.ts +0 -16
  277. package/dist/common/retry.js +0 -35
  278. package/dist/common/util.d.ts +0 -23
  279. package/dist/common/util.js +0 -139
  280. package/dist/connectors/browserConnector.d.ts +0 -53
  281. package/dist/connectors/browserConnector.js +0 -290
  282. package/dist/connectors/desktopConnector.d.ts +0 -58
  283. package/dist/connectors/desktopConnector.js +0 -68
  284. package/dist/connectors/index.d.ts +0 -14
  285. package/dist/connectors/index.js +0 -2
  286. package/dist/index.js +0 -28
  287. package/dist/logger.d.ts +0 -3
  288. package/dist/logger.js +0 -15
  289. package/dist/memory/agentMemory.d.ts +0 -47
  290. package/dist/memory/agentMemory.js +0 -167
  291. package/dist/memory/agentMemory.test.d.ts +0 -1
  292. package/dist/memory/agentMemory.test.js +0 -150
  293. package/dist/memory/image.d.ts +0 -28
  294. package/dist/memory/image.js +0 -95
  295. package/dist/memory/image.test.d.ts +0 -1
  296. package/dist/memory/image.test.js +0 -46
  297. package/dist/memory/index.d.ts +0 -3
  298. package/dist/memory/index.js +0 -3
  299. package/dist/memory/masking.d.ts +0 -7
  300. package/dist/memory/masking.js +0 -141
  301. package/dist/memory/masking.test.d.ts +0 -1
  302. package/dist/memory/masking.test.js +0 -117
  303. package/dist/memory/notebook.d.ts +0 -58
  304. package/dist/memory/notebook.js +0 -75
  305. package/dist/memory/notebook.test.d.ts +0 -1
  306. package/dist/memory/notebook.test.js +0 -99
  307. package/dist/memory/observation.d.ts +0 -38
  308. package/dist/memory/observation.js +0 -79
  309. package/dist/memory/rendering/index.d.ts +0 -10
  310. package/dist/memory/rendering/index.js +0 -13
  311. package/dist/memory/rendering/renderJsonParts.d.ts +0 -3
  312. package/dist/memory/rendering/renderJsonParts.js +0 -115
  313. package/dist/memory/rendering/renderJsonParts.test.d.ts +0 -1
  314. package/dist/memory/rendering/renderJsonParts.test.js +0 -217
  315. package/dist/memory/rendering/renderXmlParts.d.ts +0 -7
  316. package/dist/memory/rendering/renderXmlParts.js +0 -127
  317. package/dist/memory/serde.d.ts +0 -20
  318. package/dist/memory/serde.js +0 -67
  319. package/dist/memory/serde.test.d.ts +0 -1
  320. package/dist/memory/serde.test.js +0 -64
  321. package/dist/memory/util.d.ts +0 -2
  322. package/dist/memory/util.js +0 -17
  323. package/dist/telemetry/events.d.ts +0 -9
  324. package/dist/telemetry/events.js +0 -80
  325. package/dist/telemetry/index.d.ts +0 -6
  326. package/dist/telemetry/index.js +0 -91
  327. package/dist/types.d.ts +0 -30
  328. package/dist/types.js +0 -1
  329. package/dist/util.d.ts +0 -1
  330. package/dist/util.js +0 -12
  331. package/dist/version.d.ts +0 -1
  332. package/dist/version.js +0 -3
  333. package/dist/web/browserProvider.d.ts +0 -24
  334. package/dist/web/browserProvider.js +0 -164
  335. package/dist/web/browserProvider.test.d.ts +0 -1
  336. package/dist/web/browserProvider.test.js +0 -44
  337. package/dist/web/harness.d.ts +0 -109
  338. package/dist/web/harness.js +0 -401
  339. package/dist/web/recovery.d.ts +0 -46
  340. package/dist/web/recovery.js +0 -137
  341. package/dist/web/recovery.test.d.ts +0 -1
  342. package/dist/web/recovery.test.js +0 -182
  343. package/dist/web/stability.d.ts +0 -57
  344. package/dist/web/stability.js +0 -323
  345. package/dist/web/tabs.d.ts +0 -58
  346. package/dist/web/tabs.js +0 -293
  347. package/dist/web/transformer.d.ts +0 -7
  348. package/dist/web/transformer.js +0 -41
  349. package/dist/web/types.d.ts +0 -37
  350. package/dist/web/types.js +0 -2
  351. package/dist/web/util.d.ts +0 -3
  352. package/dist/web/util.js +0 -81
  353. package/dist/web/visualizer/cursor.d.ts +0 -16
  354. package/dist/web/visualizer/cursor.js +0 -153
  355. package/dist/web/visualizer/index.d.ts +0 -22
  356. package/dist/web/visualizer/index.js +0 -47
  357. package/dist/web/visualizer/mouseEffects.d.ts +0 -18
  358. package/dist/web/visualizer/mouseEffects.js +0 -287
  359. package/dist/web/visualizer/typeEffects.d.ts +0 -10
  360. package/dist/web/visualizer/typeEffects.js +0 -190
  361. package/dist/web/zodReexport.test.d.ts +0 -1
  362. package/dist/web/zodReexport.test.js +0 -14
  363. /package/{dist/common/actions.d.ts → node_modules/patchright-core/.bun-tag-19f23bd68c84ec1f} +0 -0
@@ -1,115 +0,0 @@
1
- import { Image } from "@/memory/image";
2
- import { Image as BamlImage } from '@boundaryml/baml';
3
- async function buildJsonPartsRecursive(data, partsList, indent, currentLevel = 0, isRoot = false) {
4
- if (data instanceof Image) {
5
- const bamlImg = await data.toBaml();
6
- if (bamlImg) {
7
- partsList.push(bamlImg);
8
- }
9
- return;
10
- }
11
- if (data instanceof BamlImage) {
12
- partsList.push(data);
13
- return;
14
- }
15
- if (data === null) {
16
- partsList.push('null');
17
- return;
18
- }
19
- if (data === undefined) {
20
- return; // Undefined values are omitted in JSON
21
- }
22
- if (typeof data === 'string') {
23
- if (isRoot) {
24
- partsList.push(data);
25
- }
26
- else {
27
- partsList.push(JSON.stringify(data));
28
- }
29
- return;
30
- }
31
- if (typeof data === 'number' || typeof data === 'boolean') {
32
- partsList.push(String(data));
33
- return;
34
- }
35
- const newline = indent > 0 ? '\n' : '';
36
- const spacing = indent > 0 ? ' '.repeat(currentLevel * indent) : '';
37
- const nextSpacing = indent > 0 ? ' '.repeat((currentLevel + 1) * indent) : '';
38
- if (Array.isArray(data)) {
39
- partsList.push('[');
40
- for (let index = 0; index < data.length; index++) {
41
- const item = data[index];
42
- if (item !== undefined) { // Skip undefined values in arrays
43
- if (index > 0) {
44
- partsList.push(',');
45
- }
46
- if (indent > 0) {
47
- partsList.push(newline + nextSpacing);
48
- }
49
- else if (index > 0) {
50
- partsList.push(' ');
51
- }
52
- await buildJsonPartsRecursive(item, partsList, indent, currentLevel + 1, false);
53
- }
54
- }
55
- if (data.length > 0 && indent > 0) {
56
- partsList.push(newline + spacing);
57
- }
58
- partsList.push(']');
59
- return;
60
- }
61
- if (typeof data === 'object' && data !== null) {
62
- partsList.push('{');
63
- const entries = Object.entries(data).filter(([, val]) => val !== undefined);
64
- for (let index = 0; index < entries.length; index++) {
65
- const [key, value] = entries[index];
66
- if (index > 0) {
67
- partsList.push(',');
68
- }
69
- if (indent > 0) {
70
- partsList.push(newline + nextSpacing);
71
- }
72
- else if (index > 0) {
73
- partsList.push(' ');
74
- }
75
- // Add the key
76
- partsList.push(JSON.stringify(key));
77
- partsList.push(': ');
78
- // Add the value
79
- await buildJsonPartsRecursive(value, partsList, indent, currentLevel + 1, false);
80
- }
81
- if (entries.length > 0 && indent > 0) {
82
- partsList.push(newline + spacing);
83
- }
84
- partsList.push('}');
85
- return;
86
- }
87
- throw new Error(`Object type not supported for JSON rendering: '${typeof data}'. Data: ${data}`);
88
- }
89
- export async function renderJsonParts(data, indent) {
90
- const rawList = [];
91
- await buildJsonPartsRecursive(data, rawList, indent, 0, true);
92
- // Merge adjacent strings
93
- if (rawList.length === 0) {
94
- return [];
95
- }
96
- const mergedList = [];
97
- let currentString = "";
98
- for (const item of rawList) {
99
- if (typeof item === 'string') {
100
- currentString += item;
101
- }
102
- else { // It's a BamlImage
103
- if (currentString.length > 0) {
104
- mergedList.push(currentString);
105
- }
106
- currentString = ""; // Reset accumulator
107
- mergedList.push(item); // Push the BamlImage
108
- }
109
- }
110
- // Add any trailing string
111
- if (currentString.length > 0) {
112
- mergedList.push(currentString);
113
- }
114
- return mergedList;
115
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,217 +0,0 @@
1
- import { describe, expect, test } from 'bun:test';
2
- import { renderJsonParts } from './renderJsonParts';
3
- import { Image } from '@/memory/image';
4
- import sharp from 'sharp';
5
- // Create a mock Image that will convert to BamlImage
6
- class MockImage extends Image {
7
- id;
8
- constructor(id) {
9
- super(sharp());
10
- this.id = id;
11
- }
12
- async toBaml() {
13
- // Return a mock BamlImage
14
- return {
15
- __mockBamlImage: true,
16
- id: this.id
17
- };
18
- }
19
- }
20
- describe('renderJsonParts', () => {
21
- test('renders primitive types correctly', async () => {
22
- expect(await renderJsonParts('hello', 0)).toEqual(['hello']);
23
- expect(await renderJsonParts(42, 0)).toEqual(['42']);
24
- expect(await renderJsonParts(true, 0)).toEqual(['true']);
25
- expect(await renderJsonParts(false, 0)).toEqual(['false']);
26
- expect(await renderJsonParts(null, 0)).toEqual(['null']);
27
- });
28
- test('renders root-level strings without quotes', async () => {
29
- expect(await renderJsonParts('CLICK THE UNICORN', 0)).toEqual(['CLICK THE UNICORN']);
30
- expect(await renderJsonParts('Hello World', 0)).toEqual(['Hello World']);
31
- expect(await renderJsonParts('{"already":"json"}', 0)).toEqual(['{"already":"json"}']);
32
- });
33
- test('properly quotes strings inside objects and arrays', async () => {
34
- // Strings in objects should be quoted
35
- expect(await renderJsonParts({ message: 'hello' }, 0)).toEqual(['{"message": "hello"}']);
36
- expect(await renderJsonParts({ name: 'John', city: 'NYC' }, 0)).toEqual(['{"name": "John", "city": "NYC"}']);
37
- // Strings in arrays should be quoted
38
- expect(await renderJsonParts(['apple', 'banana'], 0)).toEqual(['["apple", "banana"]']);
39
- expect(await renderJsonParts(['hello', 123, 'world'], 0)).toEqual(['["hello", 123, "world"]']);
40
- // Nested structures
41
- expect(await renderJsonParts({ items: ['a', 'b'], text: 'test' }, 0)).toEqual(['{"items": ["a", "b"], "text": "test"}']);
42
- });
43
- test('renders empty structures', async () => {
44
- expect(await renderJsonParts([], 0)).toEqual(['[]']);
45
- expect(await renderJsonParts({}, 0)).toEqual(['{}']);
46
- });
47
- test('renders simple arrays', async () => {
48
- expect(await renderJsonParts([1, 2, 3], 0)).toEqual(['[1, 2, 3]']);
49
- expect(await renderJsonParts(['a', 'b', 'c'], 0)).toEqual(['["a", "b", "c"]']);
50
- expect(await renderJsonParts([true, false, null], 0)).toEqual(['[true, false, null]']);
51
- });
52
- test('renders simple objects', async () => {
53
- expect(await renderJsonParts({ name: 'John', age: 30 }, 0)).toEqual(['{"name": "John", "age": 30}']);
54
- expect(await renderJsonParts({ a: 1, b: true, c: null }, 0)).toEqual(['{"a": 1, "b": true, "c": null}']);
55
- });
56
- test('handles undefined values correctly', async () => {
57
- // Undefined at root level returns empty array
58
- expect(await renderJsonParts(undefined, 0)).toEqual([]);
59
- // Undefined in arrays is skipped
60
- expect(await renderJsonParts([1, undefined, 3], 0)).toEqual(['[1, 3]']);
61
- // Undefined in objects is omitted
62
- expect(await renderJsonParts({ a: 1, b: undefined, c: 3 }, 0)).toEqual(['{"a": 1, "c": 3}']);
63
- });
64
- test('renders nested structures', async () => {
65
- const nested = {
66
- user: {
67
- name: 'Alice',
68
- scores: [95, 87, 92],
69
- active: true
70
- },
71
- metadata: {
72
- created: '2024-01-01',
73
- tags: ['important', 'verified']
74
- }
75
- };
76
- const result = await renderJsonParts(nested, 0);
77
- expect(result).toEqual(['{"user": {"name": "Alice", "scores": [95, 87, 92], "active": true}, "metadata": {"created": "2024-01-01", "tags": ["important", "verified"]}}']);
78
- });
79
- test('splits JSON around BamlImage in object', async () => {
80
- const mockImage = new MockImage('img1');
81
- const data = {
82
- title: 'Product',
83
- image: mockImage,
84
- price: 29.99
85
- };
86
- const result = await renderJsonParts(data, 0);
87
- expect(result.length).toBe(3);
88
- expect(result[0]).toBe('{"title": "Product", "image": ');
89
- expect(result[1]).toHaveProperty('__mockBamlImage', true);
90
- expect(result[2]).toBe(', "price": 29.99}');
91
- });
92
- test('splits JSON around multiple BamlImages in object', async () => {
93
- const mockImage1 = new MockImage('img1');
94
- const mockImage2 = new MockImage('img2');
95
- const data = {
96
- before: 'text',
97
- image1: mockImage1,
98
- middle: 'more text',
99
- image2: mockImage2,
100
- after: 'final'
101
- };
102
- const result = await renderJsonParts(data, 0);
103
- expect(result.length).toBe(5);
104
- expect(result[0]).toBe('{"before": "text", "image1": ');
105
- expect(result[1]).toHaveProperty('__mockBamlImage', true);
106
- expect(result[2]).toBe(', "middle": "more text", "image2": ');
107
- expect(result[3]).toHaveProperty('__mockBamlImage', true);
108
- expect(result[4]).toBe(', "after": "final"}');
109
- });
110
- test('splits JSON around BamlImage in array', async () => {
111
- const mockImage = new MockImage('img1');
112
- const data = ['start', mockImage, 'end'];
113
- const result = await renderJsonParts(data, 0);
114
- expect(result.length).toBe(3);
115
- expect(result[0]).toBe('["start", ');
116
- expect(result[1]).toHaveProperty('__mockBamlImage', true);
117
- expect(result[2]).toBe(', "end"]');
118
- });
119
- test('handles array with only BamlImages', async () => {
120
- const mockImage1 = new MockImage('img1');
121
- const mockImage2 = new MockImage('img2');
122
- const data = [mockImage1, mockImage2];
123
- const result = await renderJsonParts(data, 0);
124
- expect(result.length).toBe(5);
125
- expect(result[0]).toBe('[');
126
- expect(result[1]).toHaveProperty('__mockBamlImage', true);
127
- expect(result[2]).toBe(', ');
128
- expect(result[3]).toHaveProperty('__mockBamlImage', true);
129
- expect(result[4]).toBe(']');
130
- });
131
- test('handles nested structures with images', async () => {
132
- const mockImage = new MockImage('img1');
133
- const data = {
134
- user: {
135
- name: 'Bob',
136
- avatar: mockImage,
137
- settings: {
138
- theme: 'dark'
139
- }
140
- },
141
- posts: [
142
- { id: 1, image: mockImage, text: 'Hello' }
143
- ]
144
- };
145
- const result = await renderJsonParts(data, 0);
146
- // Should have multiple parts due to images
147
- expect(result.length).toBeGreaterThan(1);
148
- // First part should start with JSON
149
- expect(result[0]).toMatch(/^{"user": /);
150
- // Should contain the mock images
151
- const imageParts = result.filter(part => part && typeof part === 'object' && '__mockBamlImage' in part);
152
- expect(imageParts.length).toBe(2);
153
- });
154
- test('handles edge case with image as first array element', async () => {
155
- const mockImage = new MockImage('img1');
156
- const data = [mockImage, 'text'];
157
- const result = await renderJsonParts(data, 0);
158
- expect(result.length).toBe(3);
159
- expect(result[0]).toBe('[');
160
- expect(result[1]).toHaveProperty('__mockBamlImage', true);
161
- expect(result[2]).toBe(', "text"]');
162
- });
163
- test('handles edge case with image as last array element', async () => {
164
- const mockImage = new MockImage('img1');
165
- const data = ['text', mockImage];
166
- const result = await renderJsonParts(data, 0);
167
- expect(result.length).toBe(3);
168
- expect(result[0]).toBe('["text", ');
169
- expect(result[1]).toHaveProperty('__mockBamlImage', true);
170
- expect(result[2]).toBe(']');
171
- });
172
- test('properly escapes special characters in strings', async () => {
173
- const data = {
174
- quote: 'He said "Hello"',
175
- newline: 'Line 1\nLine 2',
176
- tab: 'Col1\tCol2',
177
- backslash: 'C:\\Users\\Path'
178
- };
179
- const result = await renderJsonParts(data, 0);
180
- expect(result[0]).toContain('\\"Hello\\"');
181
- expect(result[0]).toContain('\\n');
182
- expect(result[0]).toContain('\\t');
183
- expect(result[0]).toContain('\\\\');
184
- });
185
- test('renders with proper indentation when indent is 2', async () => {
186
- const data = {
187
- name: 'John',
188
- age: 30,
189
- hobbies: ['reading', 'coding']
190
- };
191
- const result = await renderJsonParts(data, 2);
192
- expect(result).toEqual(['{\n "name": "John",\n "age": 30,\n "hobbies": [\n "reading",\n "coding"\n ]\n}']);
193
- });
194
- test('renders with proper indentation when indent is 4', async () => {
195
- const data = {
196
- user: {
197
- name: 'Alice',
198
- active: true
199
- }
200
- };
201
- const result = await renderJsonParts(data, 4);
202
- expect(result).toEqual(['{\n "user": {\n "name": "Alice",\n "active": true\n }\n}']);
203
- });
204
- test('handles indentation with images', async () => {
205
- const mockImage = new MockImage('img1');
206
- const data = {
207
- title: 'Product',
208
- image: mockImage,
209
- price: 29.99
210
- };
211
- const result = await renderJsonParts(data, 2);
212
- expect(result.length).toBe(3);
213
- expect(result[0]).toBe('{\n "title": "Product",\n "image": ');
214
- expect(result[1]).toHaveProperty('__mockBamlImage', true);
215
- expect(result[2]).toBe(',\n "price": 29.99\n}');
216
- });
217
- });
@@ -1,7 +0,0 @@
1
- /**
2
- * Convert observations to form that can be passed as BAML context, rendered as a custom XML-like structure.
3
- */
4
- import { Image as BamlImage } from '@boundaryml/baml';
5
- import { RenderableContent } from '@/memory/observation';
6
- export type MultiMediaContentPart = BamlImage | string;
7
- export declare function renderXmlParts(data: RenderableContent): Promise<MultiMediaContentPart[]>;
@@ -1,127 +0,0 @@
1
- /**
2
- * Convert observations to form that can be passed as BAML context, rendered as a custom XML-like structure.
3
- */
4
- import { Image as BamlImage } from '@boundaryml/baml';
5
- import { Image } from '@/memory/image';
6
- //export type BamlRenderable = BamlImage | string;
7
- // export type BamlRenderable = {
8
- // role: ''
9
- // content: (BamlImage | string)[]
10
- // }
11
- async function buildXmlPartsRecursive(data, indentLevel, partsList, isInsideList = false) {
12
- const indent = ' '.repeat(indentLevel);
13
- if (data instanceof Image) {
14
- const bamlImg = await data.toBaml();
15
- if (bamlImg) {
16
- partsList.push(bamlImg);
17
- }
18
- return;
19
- }
20
- if (data instanceof BamlImage) {
21
- partsList.push(data);
22
- return;
23
- }
24
- if (typeof data === 'string' || typeof data === 'number' || typeof data === 'boolean' || data === null) {
25
- partsList.push(String(data)); // No XML escaping, direct string conversion
26
- return;
27
- }
28
- if (data === undefined) {
29
- return; // Undefined values are omitted
30
- }
31
- if (Array.isArray(data)) {
32
- // data.forEach(async (item, index) => {
33
- // await buildXmlPartsRecursive(item, indentLevel, partsList, true);
34
- // if (index < data.length - 1) {
35
- // partsList.push("\n");
36
- // }
37
- // });
38
- for (let index = 0; index < data.length; index++) {
39
- await buildXmlPartsRecursive(data[index], indentLevel, partsList, true);
40
- if (index < data.length - 1) {
41
- partsList.push("\n");
42
- }
43
- }
44
- return;
45
- }
46
- if (typeof data === 'object' && data !== null) {
47
- const objectEntries = Object.entries(data).filter(([, val]) => val !== undefined);
48
- objectEntries.forEach(async ([key, value], entryIndex) => {
49
- const tagName = key; // Use key directly as tag name
50
- const currentValueParts = [];
51
- await buildXmlPartsRecursive(value, indentLevel + 1, currentValueParts, false);
52
- // Merge adjacent strings in currentValueParts for easier analysis
53
- const mergedValueParts = [];
54
- let currentStr = "";
55
- for (const part of currentValueParts) {
56
- if (typeof part === 'string') {
57
- currentStr += part;
58
- }
59
- else {
60
- if (currentStr)
61
- mergedValueParts.push(currentStr);
62
- currentStr = "";
63
- mergedValueParts.push(part);
64
- }
65
- }
66
- if (currentStr)
67
- mergedValueParts.push(currentStr);
68
- // Apply styling rules
69
- if (mergedValueParts.length === 1 && mergedValueParts[0] instanceof BamlImage) {
70
- partsList.push(`${indent}<${tagName}>`);
71
- partsList.push(mergedValueParts[0]); // The BamlImage
72
- partsList.push(`</${tagName}>`);
73
- }
74
- else if (mergedValueParts.length === 1 && typeof mergedValueParts[0] === 'string') {
75
- const contentStr = mergedValueParts[0];
76
- if (contentStr.includes('\n')) {
77
- partsList.push(`${indent}<${tagName}>\n${contentStr}\n${indent}</${tagName}>`);
78
- }
79
- else {
80
- partsList.push(`${indent}<${tagName}>${contentStr}</${tagName}>`);
81
- }
82
- }
83
- else { // Empty content or multiple parts (complex/nested)
84
- partsList.push(`${indent}<${tagName}>\n`);
85
- mergedValueParts.forEach((part, partIdx) => {
86
- partsList.push(part);
87
- if (partIdx < mergedValueParts.length - 1) {
88
- partsList.push("\n");
89
- }
90
- });
91
- partsList.push(`\n${indent}</${tagName}>`);
92
- }
93
- if (entryIndex < objectEntries.length - 1) {
94
- partsList.push("\n"); // Newline between sibling XML elements
95
- }
96
- });
97
- return;
98
- }
99
- throw new Error(`Object type not supported for LLM context: ${typeof data}`);
100
- }
101
- export async function renderXmlParts(data) {
102
- const rawList = [];
103
- await buildXmlPartsRecursive(data, 0, rawList);
104
- // Merge adjacent strings
105
- if (rawList.length === 0) {
106
- return [];
107
- }
108
- const mergedList = [];
109
- let currentString = "";
110
- for (const item of rawList) {
111
- if (typeof item === 'string') {
112
- currentString += item;
113
- }
114
- else { // It's a BamlImage
115
- if (currentString.length > 0) {
116
- mergedList.push(currentString);
117
- }
118
- currentString = ""; // Reset accumulator
119
- mergedList.push(item); // Push the BamlImage
120
- }
121
- }
122
- // Add any trailing string
123
- if (currentString.length > 0) {
124
- mergedList.push(currentString);
125
- }
126
- return mergedList;
127
- }
@@ -1,20 +0,0 @@
1
- import { RenderableContent } from "./observation";
2
- export type StoredMedia = {
3
- type: 'media';
4
- format: string;
5
- storage: 'base64';
6
- base64: string;
7
- };
8
- export interface StoredPrimitive {
9
- type: 'primitive';
10
- content: string | boolean | number;
11
- }
12
- type MultiMediaPrimitive = StoredMedia | StoredPrimitive | undefined | null;
13
- type MultiMediaArray = Array<MultiMediaJson>;
14
- export type MultiMediaObject = {
15
- [key: string]: MultiMediaJson;
16
- };
17
- export type MultiMediaJson = MultiMediaPrimitive | MultiMediaArray | MultiMediaObject;
18
- export declare function observableDataToJson(data: RenderableContent): Promise<MultiMediaJson>;
19
- export declare function jsonToObservableData(data: MultiMediaJson): Promise<RenderableContent>;
20
- export {};
@@ -1,67 +0,0 @@
1
- import { Image } from './image';
2
- export async function observableDataToJson(data) {
3
- if (data instanceof Image) {
4
- return await data.toJson(); //return imageToJson(data);
5
- }
6
- if (typeof data === 'string' || typeof data === 'number' || typeof data === 'boolean') {
7
- return { type: "primitive", content: data };
8
- }
9
- if (data === undefined) {
10
- return undefined; // JSON.stringify will omit keys with this value or handle standalone undefined
11
- }
12
- if (data === null) {
13
- return null;
14
- }
15
- if (Array.isArray(data)) {
16
- // Filter out undefined items first, then map and process the rest.
17
- return Promise.all(data
18
- .filter(item => item !== undefined)
19
- .map(item => observableDataToJson(item)));
20
- }
21
- if (typeof data === 'object') { // Known not to be null or array here
22
- const entries = await Promise.all(Object.entries(data).map(async ([key, value]) => [key, await observableDataToJson(value)]));
23
- // fromEntries preserves own keys such as __proto__ as data properties.
24
- return Object.fromEntries(entries.filter(([, value]) => value !== undefined));
25
- }
26
- // Fallback for any unexpected data types not covered by ObservableData.
27
- // Returning undefined is consistent with how unrepresentable values are handled.
28
- return undefined;
29
- }
30
- // TODO: Implement deserialization, and actually leverage serde for logging stuff
31
- export async function jsonToObservableData(data) {
32
- // Handle null and undefined primitives
33
- if (data === null || data === undefined) {
34
- return data;
35
- }
36
- // Handle arrays by recursively converting each item
37
- if (Array.isArray(data)) {
38
- return Promise.all(data.map(item => jsonToObservableData(item)));
39
- }
40
- // Handle objects, which can be StoredMedia, StoredPrimitive, or a generic object
41
- if (typeof data === 'object') {
42
- // Check for our special typed objects
43
- if ('type' in data && typeof data.type === 'string') {
44
- switch (data.type) {
45
- case 'media':
46
- // Cast the object to StoredMedia and use the static `fromBase64` method.
47
- const media = data;
48
- if (media.storage === 'base64') {
49
- return Image.fromBase64(media.base64);
50
- }
51
- throw new Error(`Unsupported media storage type: ${media.storage}`);
52
- case 'primitive':
53
- // Unwrap the primitive value from its container object.
54
- return data.content;
55
- }
56
- }
57
- // Handle generic observable data object by recursively converting each property's value
58
- const keys = Object.keys(data);
59
- // Process all values concurrently for better performance
60
- const values = await Promise.all(keys.map(key => jsonToObservableData(data[key])));
61
- return Object.fromEntries(keys.map((key, index) => [key, values[index]]));
62
- }
63
- // According to the MultiMediaJson type definition, raw primitives (string, number, boolean)
64
- // are not valid at the top level and should be wrapped in a StoredPrimitive object.
65
- // Throw an error if we encounter them, as the input is malformed.
66
- throw new Error(`Invalid MultiMediaJson format: Unexpected primitive value '${data}'.`);
67
- }
@@ -1 +0,0 @@
1
- export {};
@@ -1,64 +0,0 @@
1
- import { expect, test } from 'bun:test';
2
- import sharp from 'sharp';
3
- import { AgentMemory } from './agentMemory';
4
- import { Image } from './image';
5
- import { maskObservations } from './masking';
6
- import { Observation } from './observation';
7
- import { jsonToObservableData, observableDataToJson } from './serde';
8
- const roundTrip = async (value) => jsonToObservableData(JSON.parse(JSON.stringify(await observableDataToJson(value))));
9
- test('nested objects, arrays, and falsy values survive an actual JSON round trip', async () => {
10
- const value = { count: 17, empty: '', nested: { label: 'fixture', values: [true, false, 0, null, { n: -2 }] } };
11
- expect(await roundTrip(value)).toEqual(value);
12
- expect(await roundTrip([value, 'text', 0, false, null])).toEqual([value, 'text', 0, false, null]);
13
- });
14
- test('undefined entries are omitted without losing null or empty values', async () => {
15
- expect(await roundTrip({ missing: undefined, empty: {}, nested: { absent: undefined, present: null }, values: [undefined, '', null] }))
16
- .toEqual({ empty: {}, nested: { present: null }, values: ['', null] });
17
- expect(await observableDataToJson(undefined)).toBeUndefined();
18
- expect(await jsonToObservableData(undefined)).toBeUndefined();
19
- });
20
- test('arbitrary own property names survive without changing object prototypes', async () => {
21
- const value = JSON.parse('{"__proto__":{"fixture":true},"constructor":{"prototype":{"n":2}},"a/b~c":false}');
22
- const saved = await observableDataToJson(value);
23
- const loaded = await roundTrip(value);
24
- for (const object of [saved, loaded]) {
25
- if (!object || typeof object !== 'object')
26
- throw new Error('Expected a saved/restored object');
27
- expect(Object.hasOwn(object, '__proto__')).toBe(true);
28
- expect(Object.getPrototypeOf(object)).toBe(Object.prototype);
29
- }
30
- expect(loaded).toEqual(value);
31
- expect(Object.hasOwn(Object.prototype, 'fixture')).toBe(false);
32
- });
33
- test('nested media is serialized before JSON encoding and restored as an Image', async () => {
34
- const screenshot = new Image(sharp({ create: { width: 2, height: 3, channels: 3, background: '#123456' } }).png());
35
- const value = { nested: { screenshot }, rows: [screenshot, { label: 'image fixture' }] };
36
- const saved = (await observableDataToJson(value));
37
- const loaded = await roundTrip(value);
38
- expect(loaded.nested.screenshot).toBeInstanceOf(Image);
39
- expect(await loaded.nested.screenshot.getDimensions()).toEqual({ width: 2, height: 3 });
40
- expect(await observableDataToJson(loaded)).toEqual(saved);
41
- });
42
- test('memory checkpoints retain structured observations and their metadata', async () => {
43
- const memory = new AgentMemory();
44
- memory.recordObservation(new Observation('connector:fixture', 'user', { a: [{ b: 4 }] }, { type: 'state', dedupe: true }, 123));
45
- const saved = JSON.parse(JSON.stringify(await memory.toJSON()));
46
- const restored = new AgentMemory();
47
- await restored.loadJSON(saved);
48
- expect(await restored.toJSON()).toEqual(saved);
49
- expect((await restored.toJSON()).observations[0].data).toEqual({ a: [{ b: { type: 'primitive', content: 4 } }] });
50
- });
51
- test('deduplication distinguishes different structured observation values', async () => {
52
- const observations = [1, 1, 2].map(value => Observation.fromConnector('fixture', { nested: { value } }, { type: 'state', dedupe: true }));
53
- expect(await observations[0].equals(observations[1])).toBe(true);
54
- expect(await observations[1].equals(observations[2])).toBe(false);
55
- expect(await maskObservations(observations)).toEqual([false, true, true]);
56
- });
57
- test('varied synthetic object keys and nested values round-trip independently of task content', async () => {
58
- let seed = 0xa173;
59
- for (let i = 0; i < 64; i++) {
60
- seed = (Math.imul(seed, 1664525) + 1013904223) >>> 0;
61
- const value = { [`field_${seed.toString(36)}_é`]: [{ count: seed, enabled: !!(seed % 2), nested: { value: `value-${i}` } }] };
62
- expect(await roundTrip(value)).toEqual(value);
63
- }
64
- });
@@ -1,2 +0,0 @@
1
- import { MultiMediaMessage } from '@/ai/baml_client';
2
- export declare function mergeMessages(messages: MultiMediaMessage[]): MultiMediaMessage[];
@@ -1,17 +0,0 @@
1
- export function mergeMessages(messages) {
2
- if (messages.length === 0)
3
- return [];
4
- const merged = [];
5
- let current = messages[0];
6
- for (let i = 1; i < messages.length; i++) {
7
- if (messages[i].role === current.role) {
8
- current.content.push(...messages[i].content);
9
- }
10
- else {
11
- merged.push(current);
12
- current = messages[i];
13
- }
14
- }
15
- merged.push(current);
16
- return merged;
17
- }
@@ -1,9 +0,0 @@
1
- import type { Agent } from "@/agent";
2
- import { LLMClientIdentifier } from "@/ai/types";
3
- export type UsageReport = {
4
- llm: LLMClientIdentifier;
5
- inputTokens: number;
6
- outputTokens: number;
7
- numCalls: number;
8
- }[];
9
- export declare function telemetrifyAgent(agent: Agent): void;