@theoremjs/studio 0.0.0-stage → 0.3.2

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 (473) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +295 -2
  3. package/agreement.d.ts +14 -0
  4. package/agreement.js +80 -0
  5. package/asks.d.ts +47 -0
  6. package/asks.js +54 -0
  7. package/browser-connection.d.ts +49 -0
  8. package/browser-connection.js +215 -0
  9. package/browser-engine.d.ts +11 -0
  10. package/browser-engine.js +11 -0
  11. package/browser-execution.d.ts +6 -0
  12. package/browser-execution.js +18 -0
  13. package/browser-live.d.ts +4 -0
  14. package/browser-live.js +132 -0
  15. package/browser-transport.d.ts +33 -0
  16. package/browser-transport.js +229 -0
  17. package/browser.d.ts +4 -0
  18. package/browser.js +4 -0
  19. package/canonical.d.ts +10 -0
  20. package/canonical.js +25 -0
  21. package/compile-workspace.d.ts +28 -0
  22. package/compile-workspace.js +295 -0
  23. package/compile.d.ts +65 -0
  24. package/compile.js +1605 -0
  25. package/concierge-demo.d.ts +17 -0
  26. package/concierge-demo.js +1230 -0
  27. package/conversation-key.d.ts +5 -0
  28. package/conversation-key.js +10 -0
  29. package/decision-example-images.d.ts +30 -0
  30. package/decision-example-images.js +30 -0
  31. package/deno.json +3 -0
  32. package/draft.d.ts +407 -0
  33. package/draft.js +505 -0
  34. package/editors.d.ts +29 -0
  35. package/editors.js +51 -0
  36. package/example-embedding-files.d.ts +11 -0
  37. package/example-embedding-files.js +20 -0
  38. package/example.d.ts +36 -0
  39. package/example.js +357 -0
  40. package/guardrail-probe.d.ts +100 -0
  41. package/guardrail-probe.js +722 -0
  42. package/held-credentials.d.ts +28 -0
  43. package/held-credentials.js +87 -0
  44. package/installed.mjs +40 -0
  45. package/lent-keys.d.ts +122 -0
  46. package/lent-keys.js +47 -0
  47. package/line-diff.d.ts +15 -0
  48. package/line-diff.js +41 -0
  49. package/live-connection.d.ts +22 -0
  50. package/live-connection.js +27 -0
  51. package/live-session-bridge.d.ts +15 -0
  52. package/live-session-bridge.js +202 -0
  53. package/map-line.d.ts +19 -0
  54. package/map-line.js +42 -0
  55. package/map.d.ts +154 -0
  56. package/map.js +525 -0
  57. package/media-accept.d.ts +19 -0
  58. package/media-accept.js +65 -0
  59. package/mod.d.ts +39 -0
  60. package/mod.js +33 -0
  61. package/origins.d.ts +52 -0
  62. package/origins.js +165 -0
  63. package/package.json +85 -4
  64. package/page/assets/Banner-BISz3nXA.js +2 -0
  65. package/page/assets/BottomSheet-BwfBDtje.js +1 -0
  66. package/page/assets/Card-Lp-0P5eL.js +1 -0
  67. package/page/assets/CardWall-CBRLdDZW.js +1 -0
  68. package/page/assets/Center-nHS1JSux.js +1 -0
  69. package/page/assets/CheckboxInput-Cj5pk-KI.js +2 -0
  70. package/page/assets/CodeBlock-C7XJ4ioE.js +51 -0
  71. package/page/assets/CollapsibleGroup-N7_SOjbm.js +2 -0
  72. package/page/assets/ContextMenu-CBu9H-9H.js +2 -0
  73. package/page/assets/DateInput-BGrQ5tPC.js +1 -0
  74. package/page/assets/Dialog-DELWQo-v.js +1 -0
  75. package/page/assets/EmptyState-C8W4JKBZ.js +1 -0
  76. package/page/assets/HoverCard-D1Y1ltWQ.js +1 -0
  77. package/page/assets/Icon-JrysT8aU.js +3 -0
  78. package/page/assets/IconAlertTriangle-BqAEqqdU.js +1 -0
  79. package/page/assets/IconButton-DlOGzJIX.js +1 -0
  80. package/page/assets/IconEye-BB5aY-wQ.js +1 -0
  81. package/page/assets/IconFileText-6zOFKKrF.js +1 -0
  82. package/page/assets/IconSearch-BTx66a40.js +1 -0
  83. package/page/assets/IconShield-DDOh7Gr5.js +1 -0
  84. package/page/assets/ItemSwipeLayer-Ckn4X6h9.js +1 -0
  85. package/page/assets/PaneState-BvA2tLQg.js +1 -0
  86. package/page/assets/PaneState-eUzUkNE8.css +1 -0
  87. package/page/assets/ScrollableArea-Ckugdj1N.js +1 -0
  88. package/page/assets/Section-DJ97F7QE.js +1 -0
  89. package/page/assets/SegmentedControlItem-h-aaXzyS.js +1 -0
  90. package/page/assets/SidePanel-BL32abk8.js +1 -0
  91. package/page/assets/StackItem-CQviqAfM.js +1 -0
  92. package/page/assets/Text-bum6zWWx.js +2 -0
  93. package/page/assets/TimestampHoverCard-DQIG0RZF.js +1 -0
  94. package/page/assets/ToolResultCharts-CgshSv9Q.js +1 -0
  95. package/page/assets/Tooltip-BH9xiRMl.js +1 -0
  96. package/page/assets/TraceInspector-_yZiz05W.js +1 -0
  97. package/page/assets/TraceOverview-BPO-HIYK.js +57 -0
  98. package/page/assets/VStack-CkVMcNiK.js +1 -0
  99. package/page/assets/_virtual_studio-type-sources-ByxqQaOG.js +12936 -0
  100. package/page/assets/arrive-DvbqpeRS.js +1 -0
  101. package/page/assets/browser-engine-CYq9DQAM.js +9 -0
  102. package/page/assets/browser-transport-D-2jDYe7.js +47 -0
  103. package/page/assets/codicon-DF1abBS2.ttf +0 -0
  104. package/page/assets/compile-egress-BSxOdX4K.js +23 -0
  105. package/page/assets/container.stylex-BmOi-8DQ.js +1 -0
  106. package/page/assets/createReactComponent-CZwsv6DD.js +1 -0
  107. package/page/assets/decision-example-images-CZGr7YIT.js +1 -0
  108. package/page/assets/devWarning-DxuplmRl.js +1 -0
  109. package/page/assets/editor-DjpsE8to.css +1 -0
  110. package/page/assets/editor.api-Cd3ViPQa.js +908 -0
  111. package/page/assets/editor.worker-6GY8RhDc.js +1 -0
  112. package/page/assets/editor.worker-BmdWdrHZ.js +33 -0
  113. package/page/assets/editors-BJX_S59A.js +1 -0
  114. package/page/assets/egress-automata-B5ZGE1mT.js +1 -0
  115. package/page/assets/embedding-space-view-CfQBPDxD.js +140 -0
  116. package/page/assets/encode-files-Bc3HJyAh.js +1 -0
  117. package/page/assets/export-agent-C3yyzXH8.js +43 -0
  118. package/page/assets/figtree-latin-400-normal-BD4aNku5.woff +0 -0
  119. package/page/assets/figtree-latin-400-normal-g7Dtegnw.woff2 +0 -0
  120. package/page/assets/figtree-latin-500-normal-BWnGEVsr.woff2 +0 -0
  121. package/page/assets/figtree-latin-500-normal-B_yy1phn.woff +0 -0
  122. package/page/assets/figtree-latin-600-normal-BM_oTo4n.woff +0 -0
  123. package/page/assets/figtree-latin-600-normal-Cv_xCTDl.woff2 +0 -0
  124. package/page/assets/figtree-latin-700-normal-BCCt2T1q.woff +0 -0
  125. package/page/assets/figtree-latin-700-normal-th6qEP7c.woff2 +0 -0
  126. package/page/assets/focusOutline.stylex-BT0kfa4t.js +1 -0
  127. package/page/assets/focusableSelector-DXZeMU85.js +1 -0
  128. package/page/assets/groupStyles-C7Ter7zC.js +1 -0
  129. package/page/assets/guardrail-tester-Gut5xK4a.js +9 -0
  130. package/page/assets/host-patterns-C9RMP16Q.js +1 -0
  131. package/page/assets/index-CvvmFKgS.js +105 -0
  132. package/page/assets/index-DOaHlqBo.css +1 -0
  133. package/page/assets/isRtlElement-BG33-k_H.js +1 -0
  134. package/page/assets/labels-provider-4TIWDvsE.js +3 -0
  135. package/page/assets/lent-keys-C32ems-I.js +1 -0
  136. package/page/assets/live-ingress-lDUGPwth.js +1 -0
  137. package/page/assets/live-messages-CnkL4GWi.js +1 -0
  138. package/page/assets/mergeProps-ptS-gIMz.js +1 -0
  139. package/page/assets/padding.stylex-B76907Zf.js +1 -0
  140. package/page/assets/preload-helper-DpV6A1kQ.js +1 -0
  141. package/page/assets/reader-BOCCYaRp.js +7 -0
  142. package/page/assets/register-CDgivxvX.js +2 -0
  143. package/page/assets/rolldown-runtime-hePW80VL.js +1 -0
  144. package/page/assets/schemas-BQ9Jydzb.js +56 -0
  145. package/page/assets/shaped-data-BcarWqd5.js +16 -0
  146. package/page/assets/sharedResizeObserver-4U9Xq5Oq.js +1 -0
  147. package/page/assets/stub-DhdcU_Ew.js +471 -0
  148. package/page/assets/studio-code-pane-C_SAbcOa.js +8 -0
  149. package/page/assets/studio-console-DZwlEsvr.js +3 -0
  150. package/page/assets/studio-decision-B0FnCAXA.js +1 -0
  151. package/page/assets/studio-embedding-CmA51HVo.js +2 -0
  152. package/page/assets/studio-host-console-By7hqu2l.js +2 -0
  153. package/page/assets/studio-live-BrcVQcyV.js +1 -0
  154. package/page/assets/studio-map-B_xSia-z.js +1 -0
  155. package/page/assets/studio-map-Bb06Tw1F.css +1 -0
  156. package/page/assets/studio-monaco-CbKf90i6.css +1 -0
  157. package/page/assets/studio-monaco-xfyfezQS.js +34 -0
  158. package/page/assets/studio-ts.worker-B-EXG4Sv.js +67741 -0
  159. package/page/assets/studio-ts.worker-BXtW3z-O.js +1 -0
  160. package/page/assets/studio-type-checker-BOvxudki.js +23 -0
  161. package/page/assets/themeProps-3IqahpCr.js +1 -0
  162. package/page/assets/tokens.stylex-DkHf0P9C.js +1 -0
  163. package/page/assets/tool-schema-idaOe2nI.js +18 -0
  164. package/page/assets/trace-patterns-DnYJa0nI.js +1 -0
  165. package/page/assets/trace-record-C3zNksA_.js +1 -0
  166. package/page/assets/trace-schema-9CdEyG6Q.js +1 -0
  167. package/page/assets/tree-DqyAMsbI.js +3 -0
  168. package/page/assets/turn-client-Du3Um3Mg.js +2 -0
  169. package/page/assets/types-BhfXQCLx.js +1 -0
  170. package/page/assets/typescript-20GgZ8PJ.js +1 -0
  171. package/page/assets/use-one-call-Hcs8YBp1.js +1 -0
  172. package/page/assets/useAdaptivePresentation-BzmPCddb.js +1 -0
  173. package/page/assets/useClipboard-BgGRxRMJ.js +1 -0
  174. package/page/assets/useContainerReveal-BFy8N_QU.js +1 -0
  175. package/page/assets/useDevWarning-Z9SoixOP.js +1 -0
  176. package/page/assets/useLayerDismissal-B_G7IWpC.js +1 -0
  177. package/page/assets/useMediaQuery-BCT0NUeZ.js +1 -0
  178. package/page/assets/useScrollLock-Dyf6PHJt.js +1 -0
  179. package/page/assets/useScrollableArea-0NzdiBCq.js +1 -0
  180. package/page/assets/useTooltip-CJM_xhLB.js +1 -0
  181. package/page/assets/workspace-DZALqEDX.js +1 -0
  182. package/page/assets/zip-DTcEfps6.js +1 -0
  183. package/page/index.html +90 -0
  184. package/page.mjs +49 -0
  185. package/people.d.ts +87 -0
  186. package/people.js +110 -0
  187. package/policy.d.ts +43 -0
  188. package/policy.js +102 -0
  189. package/ports.d.mts +32 -0
  190. package/ports.mjs +85 -0
  191. package/probe-battery.d.ts +13 -0
  192. package/probe-battery.js +404 -0
  193. package/providers.d.ts +149 -0
  194. package/providers.js +306 -0
  195. package/read-source.d.ts +48 -0
  196. package/read-source.js +1301 -0
  197. package/read-steps.d.ts +23 -0
  198. package/read-steps.js +2 -0
  199. package/reader.d.ts +11 -0
  200. package/reader.js +11 -0
  201. package/registrations.d.ts +83 -0
  202. package/registrations.js +1 -0
  203. package/requirements.d.ts +22 -0
  204. package/requirements.js +38 -0
  205. package/run-payload-core.d.ts +28 -0
  206. package/run-payload-core.js +123 -0
  207. package/run-payload.d.ts +32 -0
  208. package/run-payload.js +26 -0
  209. package/runtime-scope.d.ts +84 -0
  210. package/runtime-scope.js +308 -0
  211. package/runtime.d.ts +84 -0
  212. package/runtime.js +387 -0
  213. package/section-notes.d.ts +33 -0
  214. package/section-notes.js +38 -0
  215. package/serve-page.mjs +96 -0
  216. package/server/draft-decide.d.ts +72 -0
  217. package/server/draft-decide.js +111 -0
  218. package/server/draft-embedding.d.ts +3 -0
  219. package/server/draft-embedding.js +35 -0
  220. package/server/draft-handler.d.ts +82 -0
  221. package/server/draft-handler.js +213 -0
  222. package/server/draft-probe.d.ts +14 -0
  223. package/server/draft-probe.js +61 -0
  224. package/server/draft-replies.d.ts +22 -0
  225. package/server/draft-replies.js +46 -0
  226. package/server/edited-session.d.ts +28 -0
  227. package/server/edited-session.js +83 -0
  228. package/server/edits.d.ts +38 -0
  229. package/server/edits.js +195 -0
  230. package/server/handler.d.ts +133 -0
  231. package/server/handler.js +598 -0
  232. package/server/lent-draft.d.ts +19 -0
  233. package/server/lent-draft.js +23 -0
  234. package/server/live.d.ts +15 -0
  235. package/server/live.js +96 -0
  236. package/server/open-editor.d.ts +63 -0
  237. package/server/open-editor.js +115 -0
  238. package/server/origins.d.ts +18 -0
  239. package/server/origins.js +330 -0
  240. package/server/project-source.d.ts +208 -0
  241. package/server/project-source.js +1042 -0
  242. package/server/project.d.ts +22 -0
  243. package/server/project.js +56 -0
  244. package/server/run-traces.d.ts +20 -0
  245. package/server/run-traces.js +96 -0
  246. package/server/save-new.d.ts +29 -0
  247. package/server/save-new.js +514 -0
  248. package/server/save-plan.d.ts +46 -0
  249. package/server/save-plan.js +1134 -0
  250. package/server/save-remove.d.ts +21 -0
  251. package/server/save-remove.js +528 -0
  252. package/server/save-session.d.ts +96 -0
  253. package/server/save-session.js +418 -0
  254. package/server/save-wire.d.ts +235 -0
  255. package/server/save-wire.js +8 -0
  256. package/server/save.d.ts +52 -0
  257. package/server/save.js +209 -0
  258. package/server/serve.d.ts +23 -0
  259. package/server/serve.js +413 -0
  260. package/server/test-connection.d.ts +17 -0
  261. package/server/test-connection.js +362 -0
  262. package/server/test-key.d.ts +2 -0
  263. package/server/test-key.js +83 -0
  264. package/server/watch.d.ts +28 -0
  265. package/server/watch.js +93 -0
  266. package/server/zod-edit.d.ts +74 -0
  267. package/server/zod-edit.js +558 -0
  268. package/server.d.ts +8 -0
  269. package/server.js +8 -0
  270. package/setups.mjs +170 -0
  271. package/shared-carry.d.ts +114 -0
  272. package/shared-carry.js +523 -0
  273. package/shared-settings.d.ts +34 -0
  274. package/shared-settings.js +70 -0
  275. package/source.d.ts +75 -0
  276. package/source.js +414 -0
  277. package/start.mjs +169 -0
  278. package/stream-lines.d.ts +9 -0
  279. package/stream-lines.js +27 -0
  280. package/stub.d.ts +6 -0
  281. package/stub.js +33 -0
  282. package/surface.d.ts +53 -0
  283. package/surface.js +631 -0
  284. package/system-markup.d.ts +20 -0
  285. package/system-markup.js +51 -0
  286. package/tool-schema.d.ts +23 -0
  287. package/tool-schema.js +69 -0
  288. package/tools.d.ts +16 -0
  289. package/tools.js +91 -0
  290. package/traces.d.ts +24 -0
  291. package/traces.js +29 -0
  292. package/transport.d.ts +57 -0
  293. package/transport.js +187 -0
  294. package/tree.d.ts +32 -0
  295. package/tree.js +83 -0
  296. package/types.d.ts +62 -0
  297. package/types.js +6 -0
  298. package/ui/acting-as-button.d.ts +2 -0
  299. package/ui/acting-as-button.js +16 -0
  300. package/ui/add-provider.d.ts +13 -0
  301. package/ui/add-provider.js +20 -0
  302. package/ui/boot-mark.css +53 -0
  303. package/ui/boot-mark.d.ts +19 -0
  304. package/ui/boot-mark.js +128 -0
  305. package/ui/boot-paint.d.ts +8 -0
  306. package/ui/boot-paint.js +8 -0
  307. package/ui/brand-icons.d.ts +57 -0
  308. package/ui/brand-icons.js +148 -0
  309. package/ui/built/theme.css +830 -0
  310. package/ui/built/theme.css.d.ts +9 -0
  311. package/ui/built/theorem-studio.d.ts +13 -0
  312. package/ui/built/theorem-studio.js +705 -0
  313. package/ui/built/theorem-studio.variants.d.ts +28 -0
  314. package/ui/code/monaco-contributions.d.ts +45 -0
  315. package/ui/code/studio-code.d.ts +7 -0
  316. package/ui/code/studio-code.js +253 -0
  317. package/ui/code/studio-monaco.d.ts +44 -0
  318. package/ui/code/studio-monaco.js +48 -0
  319. package/ui/code/studio-ts.worker.d.ts +1 -0
  320. package/ui/code/studio-ts.worker.js +16 -0
  321. package/ui/code/studio-type-checker.d.ts +12 -0
  322. package/ui/code/studio-type-checker.js +308 -0
  323. package/ui/code/studio-type-sources.d.ts +26 -0
  324. package/ui/confirm-write.d.ts +12 -0
  325. package/ui/confirm-write.js +45 -0
  326. package/ui/diff-block.d.ts +21 -0
  327. package/ui/diff-block.js +17 -0
  328. package/ui/figtree.css +59 -0
  329. package/ui/file-place.d.ts +4 -0
  330. package/ui/file-place.js +26 -0
  331. package/ui/guardrail-tester.d.ts +18 -0
  332. package/ui/guardrail-tester.js +248 -0
  333. package/ui/inspector-context.d.ts +119 -0
  334. package/ui/inspector-context.js +84 -0
  335. package/ui/inspector.d.ts +247 -0
  336. package/ui/inspector.js +284 -0
  337. package/ui/lib/acting-as.d.ts +25 -0
  338. package/ui/lib/acting-as.js +90 -0
  339. package/ui/lib/boot-sequence.d.ts +32 -0
  340. package/ui/lib/boot-sequence.js +57 -0
  341. package/ui/lib/export-agent.d.ts +11 -0
  342. package/ui/lib/export-agent.js +335 -0
  343. package/ui/lib/facet-icons.d.ts +20 -0
  344. package/ui/lib/facet-icons.js +21 -0
  345. package/ui/lib/panel-motion.d.ts +8 -0
  346. package/ui/lib/panel-motion.js +74 -0
  347. package/ui/lib/project-address.d.ts +14 -0
  348. package/ui/lib/project-address.js +24 -0
  349. package/ui/lib/project-starting.d.ts +13 -0
  350. package/ui/lib/project-starting.js +30 -0
  351. package/ui/lib/project-traces.d.ts +17 -0
  352. package/ui/lib/project-traces.js +54 -0
  353. package/ui/lib/read-map.d.ts +30 -0
  354. package/ui/lib/read-map.js +173 -0
  355. package/ui/lib/read-progress.d.ts +14 -0
  356. package/ui/lib/read-progress.js +12 -0
  357. package/ui/lib/refusal-lines.d.ts +3 -0
  358. package/ui/lib/refusal-lines.js +8 -0
  359. package/ui/lib/studio-activity.d.ts +5 -0
  360. package/ui/lib/studio-activity.js +17 -0
  361. package/ui/lib/studio-console.d.ts +27 -0
  362. package/ui/lib/studio-console.js +9 -0
  363. package/ui/lib/studio-conversation.d.ts +20 -0
  364. package/ui/lib/studio-conversation.js +130 -0
  365. package/ui/lib/studio-examples.d.ts +31 -0
  366. package/ui/lib/studio-examples.js +25 -0
  367. package/ui/lib/studio-labels.d.ts +6 -0
  368. package/ui/lib/studio-labels.js +13 -0
  369. package/ui/lib/studio-map-kept.d.ts +17 -0
  370. package/ui/lib/studio-map-kept.js +48 -0
  371. package/ui/lib/studio-open.d.ts +22 -0
  372. package/ui/lib/studio-open.js +54 -0
  373. package/ui/lib/studio-page.d.ts +33 -0
  374. package/ui/lib/studio-page.js +121 -0
  375. package/ui/lib/studio-prefs.d.ts +26 -0
  376. package/ui/lib/studio-prefs.js +87 -0
  377. package/ui/lib/studio-project.d.ts +106 -0
  378. package/ui/lib/studio-project.js +177 -0
  379. package/ui/lib/studio-restore.d.ts +49 -0
  380. package/ui/lib/studio-restore.js +251 -0
  381. package/ui/lib/studio-run-open.d.ts +15 -0
  382. package/ui/lib/studio-run-open.js +16 -0
  383. package/ui/lib/studio-session.d.ts +34 -0
  384. package/ui/lib/studio-session.js +17 -0
  385. package/ui/lib/studio-settings.d.ts +15 -0
  386. package/ui/lib/studio-settings.js +48 -0
  387. package/ui/lib/studio-store.d.ts +64 -0
  388. package/ui/lib/studio-store.js +391 -0
  389. package/ui/lib/studio-watch.d.ts +12 -0
  390. package/ui/lib/studio-watch.js +27 -0
  391. package/ui/lib/tab-fills.d.ts +6 -0
  392. package/ui/lib/tab-fills.js +14 -0
  393. package/ui/lib/tool-credentials.d.ts +3 -0
  394. package/ui/lib/tool-credentials.js +23 -0
  395. package/ui/lib/tool-probe.d.ts +19 -0
  396. package/ui/lib/tool-probe.js +104 -0
  397. package/ui/lib/type-icons.d.ts +35 -0
  398. package/ui/lib/type-icons.js +38 -0
  399. package/ui/lib/when-idle.d.ts +5 -0
  400. package/ui/lib/when-idle.js +14 -0
  401. package/ui/lib/zip.d.ts +5 -0
  402. package/ui/lib/zip.js +8 -0
  403. package/ui/map-token.css +11 -0
  404. package/ui/map-token.d.ts +17 -0
  405. package/ui/map-token.js +29 -0
  406. package/ui/mcp-icon.d.ts +6 -0
  407. package/ui/mcp-icon.js +8 -0
  408. package/ui/motion.css +113 -0
  409. package/ui/pan.d.ts +32 -0
  410. package/ui/pan.js +90 -0
  411. package/ui/profile-editor.d.ts +33 -0
  412. package/ui/profile-editor.js +2638 -0
  413. package/ui/provider-editor.d.ts +15 -0
  414. package/ui/provider-editor.js +92 -0
  415. package/ui/read-map.css +48 -0
  416. package/ui/read-map.d.ts +7 -0
  417. package/ui/read-map.js +163 -0
  418. package/ui/refusal-detail.d.ts +4 -0
  419. package/ui/refusal-detail.js +21 -0
  420. package/ui/shared-change.d.ts +9 -0
  421. package/ui/shared-change.js +28 -0
  422. package/ui/shell-motion.css +121 -0
  423. package/ui/shell-motion.d.ts +73 -0
  424. package/ui/shell-motion.js +194 -0
  425. package/ui/studio-code-pane.d.ts +19 -0
  426. package/ui/studio-code-pane.js +44 -0
  427. package/ui/studio-compare.d.ts +80 -0
  428. package/ui/studio-compare.js +326 -0
  429. package/ui/studio-conflicts.d.ts +17 -0
  430. package/ui/studio-conflicts.js +87 -0
  431. package/ui/studio-connection.d.ts +64 -0
  432. package/ui/studio-connection.js +286 -0
  433. package/ui/studio-decision.d.ts +6 -0
  434. package/ui/studio-decision.js +49 -0
  435. package/ui/studio-embedding.d.ts +6 -0
  436. package/ui/studio-embedding.js +30 -0
  437. package/ui/studio-host-console.d.ts +6 -0
  438. package/ui/studio-host-console.js +17 -0
  439. package/ui/studio-host.d.ts +73 -0
  440. package/ui/studio-host.js +12 -0
  441. package/ui/studio-live.d.ts +17 -0
  442. package/ui/studio-live.js +26 -0
  443. package/ui/studio-map.css +273 -0
  444. package/ui/studio-map.d.ts +17 -0
  445. package/ui/studio-map.js +397 -0
  446. package/ui/studio-nav.d.ts +24 -0
  447. package/ui/studio-nav.js +17 -0
  448. package/ui/studio-no-project.d.ts +5 -0
  449. package/ui/studio-no-project.js +9 -0
  450. package/ui/studio-run.css +76 -0
  451. package/ui/studio-run.d.ts +14 -0
  452. package/ui/studio-run.js +119 -0
  453. package/ui/studio-runner.d.ts +45 -0
  454. package/ui/studio-runner.js +187 -0
  455. package/ui/studio-save.d.ts +49 -0
  456. package/ui/studio-save.js +307 -0
  457. package/ui/studio-screen.d.ts +61 -0
  458. package/ui/studio-screen.js +2078 -0
  459. package/ui/studio-settings.d.ts +31 -0
  460. package/ui/studio-settings.js +288 -0
  461. package/ui/studio-shell.css +27 -0
  462. package/ui/studio-shell.d.ts +43 -0
  463. package/ui/studio-shell.js +87 -0
  464. package/ui/studio-theme.d.ts +7 -0
  465. package/ui/studio-theme.js +94 -0
  466. package/ui/studio.css +427 -0
  467. package/ui/theorem-mark.css +84 -0
  468. package/ui/theorem-mark.d.ts +22 -0
  469. package/ui/theorem-mark.js +21 -0
  470. package/vite.d.mts +30 -0
  471. package/vite.mjs +277 -0
  472. package/workspace.d.ts +230 -0
  473. package/workspace.js +1054 -0
package/browser.js ADDED
@@ -0,0 +1,4 @@
1
+ export { KNOWN_GEMINI_EMBEDDING_MODELS, KNOWN_OPENROUTER_EMBEDDING_MODELS, keyKind, listLocalStudioModels, listProviderModels, localStudioConfig, STUDIO_KEY_SLOT_CAP, studioKeySlots, studioVault, } from "./browser-connection.js";
2
+ export { browserStudioLiveConnection } from "./browser-live.js";
3
+ export { createBrowserStudioDecisionTransport, createBrowserStudioEmbeddingTransport, createBrowserStudioHostTransport, createBrowserStudioTransport, } from "./browser-transport.js";
4
+ export { attachStudioLiveSession } from "./live-session-bridge.js";
package/canonical.d.ts ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Values compared as text, whatever order their settings are held in. A file's reading, a merge
3
+ * and the page each build the same agent or tool with its settings in a different order, and
4
+ * that is not a difference. On its own so the page and the project's load, which read no source,
5
+ * do not load the TypeScript the Save plan reads source with.
6
+ *
7
+ * @module
8
+ */
9
+ /** `value` with every object's keys in order and nothing undefined, as text: equal values give equal text. */
10
+ export declare function canonical(value: unknown): string;
package/canonical.js ADDED
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Values compared as text, whatever order their settings are held in. A file's reading, a merge
3
+ * and the page each build the same agent or tool with its settings in a different order, and
4
+ * that is not a difference. On its own so the page and the project's load, which read no source,
5
+ * do not load the TypeScript the Save plan reads source with.
6
+ *
7
+ * @module
8
+ */
9
+ function isRecord(value) {
10
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
11
+ }
12
+ /** `value` with every object's keys in order and nothing undefined, as text: equal values give equal text. */
13
+ export function canonical(value) {
14
+ const ordered = (item) => {
15
+ if (Array.isArray(item))
16
+ return item.map(ordered);
17
+ if (!isRecord(item))
18
+ return item;
19
+ const keys = Object.keys(item)
20
+ .filter((key) => item[key] !== undefined)
21
+ .sort();
22
+ return Object.fromEntries(keys.map((key) => [key, ordered(item[key])]));
23
+ };
24
+ return JSON.stringify(ordered(value)) ?? 'undefined';
25
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Compiles every agent of a workspace and orders them so each is registered
3
+ * after the agents it names: the ones its agent tools run and the one that
4
+ * summarises for it. Issues land on the node of the agent or tool at fault.
5
+ */
6
+ import { type CompiledStudio, type StudioIssue } from './compile.ts';
7
+ import type { StudioRunsOn } from './lent-keys.ts';
8
+ import type { StudioDependency } from './runtime-scope.ts';
9
+ import { type StudioWorkspace } from './workspace.ts';
10
+ export interface CompiledWorkspace {
11
+ /** Each agent after the agents it names: the order a scope registers them in. */
12
+ agents: CompiledStudio[];
13
+ }
14
+ export type WorkspaceCompileResult = ({
15
+ ok: true;
16
+ } & CompiledWorkspace) | {
17
+ ok: false;
18
+ issues: StudioIssue[];
19
+ };
20
+ /** Every issue across the workspace is reported, each once. */
21
+ export declare function compileWorkspace(workspace: StudioWorkspace, on: StudioRunsOn): WorkspaceCompileResult;
22
+ /**
23
+ * The agent `agentId`, with the agents it needs as its dependencies, each after
24
+ * the ones it names: what a run registers. `undefined` when no compiled agent has that id.
25
+ */
26
+ export declare function workspaceRunAgent(compiled: CompiledWorkspace, agentId: string): (CompiledStudio & {
27
+ dependencies: StudioDependency[];
28
+ }) | undefined;
@@ -0,0 +1,295 @@
1
+ /**
2
+ * Compiles every agent of a workspace and orders them so each is registered
3
+ * after the agents it names: the ones its agent tools run and the one that
4
+ * summarises for it. Issues land on the node of the agent or tool at fault.
5
+ */
6
+ import { createKernelRegistry, defineProfile, TheoremError, z } from '@theoremjs/agents';
7
+ import { agentToolInputSchema, compileStudio, uncompiled, } from "./compile.js";
8
+ import { kernelDefinition, providerProblems, registerStudioProvider } from "./providers.js";
9
+ import { registerDefined } from "./tools.js";
10
+ import { modelBindingNodeId, providerNodeId, toolSpecNodeId } from "./tree.js";
11
+ import { agentDraft, agentNodeId, scopedNodeId, } from "./workspace.js";
12
+ /** The agents an agent tool can run, and the one type that can summarise. */
13
+ const CALLABLE_TYPES = new Set(['text', 'image', 'speech']);
14
+ function references(workspace) {
15
+ const tools = new Map(workspace.toolSpecs.map((tool) => [tool.key, tool]));
16
+ return workspace.agents.flatMap((agent) => [
17
+ ...agent.tools.allow.flatMap((key) => {
18
+ const tool = tools.get(key);
19
+ return tool?.toolType === 'agent' && tool.agentKey
20
+ ? [{ from: agent, to: tool.agentKey, nodeId: toolSpecNodeId(key), field: 'agentKey' }]
21
+ : [];
22
+ }),
23
+ ...agent.modelBindings.flatMap((binding) => binding.compactTiming && binding.compactWith
24
+ ? [
25
+ {
26
+ from: agent,
27
+ to: binding.compactWith,
28
+ nodeId: agentNodeId(agent.key, modelBindingNodeId(binding.key)),
29
+ field: 'compactWith',
30
+ },
31
+ ]
32
+ : []),
33
+ ]);
34
+ }
35
+ /** Each agent's key, to the keys of the agents it names. */
36
+ function namedBy(workspace, refs) {
37
+ const named = new Map(workspace.agents.map((agent) => [agent.key, new Set()]));
38
+ for (const ref of refs)
39
+ if (named.has(ref.to))
40
+ named.get(ref.from.key)?.add(ref.to);
41
+ return named;
42
+ }
43
+ /** The agents from `start` to `end`, each naming the next; undefined when `start` never reaches `end`. */
44
+ function chain(named, start, end) {
45
+ // Each agent reached, to the one it was reached from.
46
+ const via = new Map([[start, undefined]]);
47
+ const queue = [start];
48
+ for (let key = queue.shift(); key !== undefined; key = queue.shift()) {
49
+ if (key === end) {
50
+ const path = [];
51
+ for (let at = key; at !== undefined; at = via.get(at))
52
+ path.unshift(at);
53
+ return path;
54
+ }
55
+ for (const next of named.get(key) ?? []) {
56
+ if (!via.has(next)) {
57
+ via.set(next, key);
58
+ queue.push(next);
59
+ }
60
+ }
61
+ }
62
+ return undefined;
63
+ }
64
+ /**
65
+ * Where a reference closes a circle, what it is and how to break it. Each agent
66
+ * must be set up after the agents it names, so a circle has no first one.
67
+ */
68
+ function circleMessage(ref, path, idOf) {
69
+ const from = `'${idOf(ref.from.key) ?? ''}'`;
70
+ const to = `'${idOf(ref.to) ?? ''}'`;
71
+ if (ref.from.key === ref.to) {
72
+ return ref.field === 'agentKey'
73
+ ? `${from} has this tool on, and the tool runs ${from} itself. Choose another agent for it to run, or turn it off for ${from}.`
74
+ : `${from} can't summarise its own conversation. Choose another text agent.`;
75
+ }
76
+ const circle = [ref.from.key, ...path].map((key) => idOf(key) ?? '').join(' → ');
77
+ return ref.field === 'agentKey'
78
+ ? `${from} has this tool on, and it runs ${to}, which leads back to ${from} (${circle}). Agents can't run each other in a circle: turn this tool off for ${from}, or remove the way back.`
79
+ : `${to} summarises for ${from}, and ${to} leads back to ${from} (${circle}). Agents can't run each other in a circle: choose another agent to summarise, or remove the way back.`;
80
+ }
81
+ /** Agents in workspace order, each after the agents it names; the rest are in a loop. */
82
+ function registrationOrder(workspace, named) {
83
+ const done = new Set();
84
+ const ordered = [];
85
+ let progressed = true;
86
+ while (progressed) {
87
+ progressed = false;
88
+ for (const agent of workspace.agents) {
89
+ if (done.has(agent.key))
90
+ continue;
91
+ if ([...(named.get(agent.key) ?? [])].every((key) => done.has(key))) {
92
+ done.add(agent.key);
93
+ ordered.push(agent);
94
+ progressed = true;
95
+ }
96
+ }
97
+ }
98
+ return { ordered, looped: workspace.agents.filter((agent) => !done.has(agent.key)) };
99
+ }
100
+ /** An id two agents share, or a tool name two tools share, is an issue on each after the first. */
101
+ function reportDuplicates(workspace, report) {
102
+ const ids = new Set();
103
+ for (const agent of workspace.agents) {
104
+ const id = agent.identity.agentId.trim();
105
+ if (id && ids.has(id)) {
106
+ report({
107
+ nodeId: agentNodeId(agent.key),
108
+ message: `Another agent has the id '${id}'.`,
109
+ field: 'agentId',
110
+ });
111
+ }
112
+ ids.add(id);
113
+ }
114
+ const names = new Set();
115
+ for (const tool of workspace.toolSpecs) {
116
+ const name = tool.toolName.trim();
117
+ if (name && names.has(name)) {
118
+ report({
119
+ nodeId: toolSpecNodeId(tool.key),
120
+ message: `Tool name '${name}' is used twice.`,
121
+ field: 'toolName',
122
+ });
123
+ }
124
+ names.add(name);
125
+ }
126
+ const providers = new Set();
127
+ for (const provider of workspace.providers) {
128
+ if (provider.id && providers.has(provider.id)) {
129
+ report({
130
+ nodeId: providerNodeId(provider.id),
131
+ message: `Another provider has the id '${provider.id}'.`,
132
+ field: 'id',
133
+ });
134
+ }
135
+ providers.add(provider.id);
136
+ }
137
+ }
138
+ /** Why the agent a reference names can't do its job; undefined when it can, or isn't set up. */
139
+ function wrongTypeMessage(ref, target) {
140
+ const type = target?.identity.profileType;
141
+ if (!target || !type)
142
+ return undefined;
143
+ const id = target.identity.agentId.trim();
144
+ if (ref.field === 'agentKey' && !CALLABLE_TYPES.has(type)) {
145
+ return `'${id}' is a ${type} agent. An agent tool runs a text, image, or speech agent.`;
146
+ }
147
+ if (ref.field === 'compactWith' && type !== 'text') {
148
+ return `'${id}' is a ${type} agent. Only a text agent summarises.`;
149
+ }
150
+ return undefined;
151
+ }
152
+ /** Each agent's own compile, in registration order; an agent's issues land under its node. */
153
+ function compileAgents(workspace, agents, on, agentIdOf, report) {
154
+ const agentInputOf = (key) => {
155
+ const called = agentDraft(workspace, key);
156
+ return called && agentToolInputSchema(called);
157
+ };
158
+ const compiled = [];
159
+ for (const agent of agents) {
160
+ const draft = agentDraft(workspace, agent.key);
161
+ const result = draft && compileStudio(draft, on, agentIdOf, agentInputOf);
162
+ if (!result)
163
+ continue;
164
+ if (result.ok) {
165
+ const { ok: _ok, ...rest } = result;
166
+ compiled.push({ key: agent.key, agent: rest });
167
+ continue;
168
+ }
169
+ for (const issue of result.issues) {
170
+ report({ ...issue, nodeId: scopedNodeId(agent.key, issue.nodeId) });
171
+ }
172
+ }
173
+ return compiled;
174
+ }
175
+ /**
176
+ * The kernel's own rules across the workspace, such as an agent tool's agent that can stop on a
177
+ * gate: the first provider or agent the kernel's registry refuses, as an issue on it. The registry holds the
178
+ * workspace's providers as they are now, so an agent is checked against what it would run on.
179
+ */
180
+ function kernelIssue(workspace, compiled) {
181
+ const registry = createKernelRegistry();
182
+ // why: a project's own definition is the project's; the server checks its agents when it opens.
183
+ const own = new Set();
184
+ for (const provider of workspace.providers) {
185
+ if (!kernelDefinition(provider.definition)) {
186
+ own.add(provider.id);
187
+ continue;
188
+ }
189
+ try {
190
+ registerStudioProvider(registry.providers, provider);
191
+ }
192
+ catch (err) {
193
+ const message = err instanceof z.ZodError
194
+ ? err.issues[0]?.message
195
+ : err instanceof TheoremError
196
+ ? err.message
197
+ : undefined;
198
+ if (message === undefined)
199
+ throw err;
200
+ return { nodeId: providerNodeId(provider.id), message };
201
+ }
202
+ }
203
+ for (const { key, agent } of compiled) {
204
+ const { profile } = agent;
205
+ if (profile.type !== 'host' &&
206
+ Object.values(profile.models).some((binding) => own.has(binding.provider)))
207
+ continue;
208
+ try {
209
+ registerDefined(registry, defineProfile(uncompiled(agent.profile)), agent.customTools, agent.structured);
210
+ }
211
+ catch (err) {
212
+ if (!(err instanceof TheoremError))
213
+ throw err;
214
+ return { nodeId: agentNodeId(key), message: err.message };
215
+ }
216
+ }
217
+ return undefined;
218
+ }
219
+ /** Every issue across the workspace is reported, each once. */
220
+ export function compileWorkspace(workspace, on) {
221
+ const issues = new Map();
222
+ const report = (issue) => {
223
+ issues.set(JSON.stringify([issue.nodeId, issue.field, issue.index, issue.message]), issue);
224
+ };
225
+ const byKey = new Map(workspace.agents.map((agent) => [agent.key, agent]));
226
+ const agentIdOf = (key) => byKey.get(key)?.identity.agentId.trim();
227
+ reportDuplicates(workspace, report);
228
+ for (const provider of workspace.providers) {
229
+ for (const problem of providerProblems(provider)) {
230
+ report({ nodeId: providerNodeId(provider.id), ...problem });
231
+ }
232
+ }
233
+ const refs = references(workspace);
234
+ for (const ref of refs) {
235
+ const message = wrongTypeMessage(ref, byKey.get(ref.to));
236
+ if (message)
237
+ report({ nodeId: ref.nodeId, message, field: ref.field });
238
+ }
239
+ const named = namedBy(workspace, refs);
240
+ const { ordered, looped } = registrationOrder(workspace, named);
241
+ // Each reference that closes a circle is an issue on the field that holds it.
242
+ for (const ref of refs) {
243
+ const path = chain(named, ref.to, ref.from.key);
244
+ if (path)
245
+ report({
246
+ nodeId: ref.nodeId,
247
+ field: ref.field,
248
+ message: circleMessage(ref, path, agentIdOf),
249
+ });
250
+ }
251
+ const compiled = compileAgents(workspace, [...ordered, ...looped], on, agentIdOf, report);
252
+ if (issues.size)
253
+ return { ok: false, issues: [...issues.values()] };
254
+ const refused = kernelIssue(workspace, compiled);
255
+ if (refused)
256
+ return { ok: false, issues: [refused] };
257
+ return { ok: true, agents: compiled.map(({ agent }) => agent) };
258
+ }
259
+ /**
260
+ * The agent `agentId`, with the agents it needs as its dependencies, each after
261
+ * the ones it names: what a run registers. `undefined` when no compiled agent has that id.
262
+ */
263
+ export function workspaceRunAgent(compiled, agentId) {
264
+ const byId = new Map(compiled.agents.map((agent) => [agent.agentId, agent]));
265
+ const chatted = byId.get(agentId);
266
+ if (!chatted)
267
+ return undefined;
268
+ const needed = new Set();
269
+ const visit = (id) => {
270
+ const agent = byId.get(id);
271
+ if (!agent || needed.has(id))
272
+ return;
273
+ needed.add(id);
274
+ for (const named of namedAgents(agent))
275
+ visit(named);
276
+ };
277
+ for (const named of namedAgents(chatted))
278
+ visit(named);
279
+ needed.delete(agentId);
280
+ const dependencies = compiled.agents
281
+ .filter((agent) => needed.has(agent.agentId))
282
+ .map(({ profile, customTools, structured }) => ({
283
+ profile,
284
+ customTools,
285
+ ...(structured ? { structured } : {}),
286
+ }));
287
+ return { ...chatted, dependencies };
288
+ }
289
+ /** The agent ids a compiled agent names: its agent tools' and its compaction's. */
290
+ function namedAgents(agent) {
291
+ const tools = agent.customTools.flatMap((tool) => (tool.type === 'agent' ? [tool.profile] : []));
292
+ const models = 'models' in agent.profile ? Object.values(agent.profile.models) : [];
293
+ const compactors = models.flatMap((binding) => binding.compaction?.profile ? [binding.compaction.profile] : []);
294
+ return [...tools, ...compactors];
295
+ }
package/compile.d.ts ADDED
@@ -0,0 +1,65 @@
1
+ import { type DecisionAsset, type DecisionQuestion, type ImageProfileDefinition, type LiveProfileDefinition, type ProfileGuardrailsSpec, type SpeechProfileDefinition, type TextProfileDefinition } from '@theoremjs/agents';
2
+ import { type DecisionProfileDefinition, type EmbeddingProfileDefinition, type HostProfileDefinition, type ProfileDefinition } from '@theoremjs/agents/kernel';
3
+ import type { GuardrailsDraft, StudioDraft } from './draft.ts';
4
+ import type { StudioRunsOn } from './lent-keys.ts';
5
+ import { type StudioProvider } from './providers.ts';
6
+ import type { StructuredRegistration, ToolRegistration } from './registrations.ts';
7
+ export type StudioProfileDefinition = TextProfileDefinition | ImageProfileDefinition | SpeechProfileDefinition | LiveProfileDefinition | DecisionProfileDefinition | EmbeddingProfileDefinition | HostProfileDefinition;
8
+ /** A profile that runs a model turn: every studio type but decision and host. */
9
+ export type StudioTurnProfileDefinition = Exclude<StudioProfileDefinition, DecisionProfileDefinition | HostProfileDefinition>;
10
+ /**
11
+ * `field` is the draft key at fault on that node (e.g. `handle`, `defaultEffort`) and `index`
12
+ * the list entry; issues about the node as a whole have neither.
13
+ */
14
+ export interface StudioIssue {
15
+ nodeId: string;
16
+ message: string;
17
+ field?: string;
18
+ index?: number;
19
+ }
20
+ export interface CompiledStudio {
21
+ agentId: string;
22
+ profile: StudioProfileDefinition;
23
+ customTools: ToolRegistration[];
24
+ structured?: StructuredRegistration;
25
+ /** A decision's questions, by id. */
26
+ questions?: Record<string, DecisionQuestion>;
27
+ /** The pictures every decision sends, by the reference its questions write. */
28
+ images?: Record<string, DecisionAsset>;
29
+ /** The providers its models can name, each with its adapter. */
30
+ providers: readonly StudioProvider[];
31
+ }
32
+ export type StudioCompileResult = ({
33
+ ok: true;
34
+ } & CompiledStudio) | {
35
+ ok: false;
36
+ issues: StudioIssue[];
37
+ };
38
+ /**
39
+ * The agent id another agent of the workspace has, by its draft key; `undefined` when
40
+ * none has that key. A single draft names no other agent.
41
+ */
42
+ export type AgentIdOf = (key: string) => string | undefined;
43
+ /**
44
+ * What a tool that runs another agent of the workspace takes, by that agent's draft key;
45
+ * `undefined` when none has that key or an agent tool can't run it.
46
+ */
47
+ export type AgentToolInputOf = (key: string) => Record<string, unknown> | undefined;
48
+ /** What a tool that runs this draft's agent takes, as the kernel derives it from the agent's inputs. */
49
+ export declare function agentToolInputSchema(draft: StudioDraft): Record<string, unknown> | undefined;
50
+ /** Why these headers can't be saved, when one of them looks like a credential. */
51
+ export declare function credentialHeaderProblem(headers: Record<string, string> | undefined): string | undefined;
52
+ /**
53
+ * Why a tool's URL can't be saved, when a query parameter in it looks like a credential. A masked
54
+ * one is the project's own; a new one goes under Auth, which can send an API key in the URL.
55
+ */
56
+ export declare function credentialUrlProblem(url: string | undefined): string | undefined;
57
+ /** The network guardrail `guardrails` compiles to, which a draft's runs keep to: what a connection test sends. */
58
+ export declare function draftNetwork(guardrails: GuardrailsDraft): ProfileGuardrailsSpec['network'];
59
+ /** `profile` as it can be defined here, before the run's server compiles its patterns. */
60
+ export declare function uncompiled<P extends ProfileDefinition>(profile: P): P;
61
+ /**
62
+ * Every issue is reported, not just the first. `agentIdOf` and `agentInputOf` resolve the
63
+ * agents a workspace draft names.
64
+ */
65
+ export declare function compileStudio(draft: StudioDraft, on: StudioRunsOn, agentIdOf?: AgentIdOf, agentInputOf?: AgentToolInputOf): StudioCompileResult;