@engenty/wizards-runtime 0.0.0-stage → 0.7.5

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 (518) hide show
  1. package/LICENSE +110 -0
  2. package/README.md +214 -2
  3. package/apps/runtime/dist/agents/architect.js +444 -0
  4. package/apps/runtime/dist/agents/studio-assistant.js +883 -0
  5. package/apps/runtime/dist/agents/subscription.js +207 -0
  6. package/apps/runtime/dist/agents/thought.js +21 -0
  7. package/apps/runtime/dist/agents/website.js +480 -0
  8. package/apps/runtime/dist/app.js +359 -0
  9. package/apps/runtime/dist/apple/wizards-apple +0 -0
  10. package/apps/runtime/dist/assistant/browser.js +26 -0
  11. package/apps/runtime/dist/assistant/docs.js +158 -0
  12. package/apps/runtime/dist/assistant/knows.js +353 -0
  13. package/apps/runtime/dist/assistant/primer.js +26 -0
  14. package/apps/runtime/dist/assistant/runs.js +24 -0
  15. package/apps/runtime/dist/auth/account.js +175 -0
  16. package/apps/runtime/dist/auth/device.js +112 -0
  17. package/apps/runtime/dist/auth/index.js +358 -0
  18. package/apps/runtime/dist/auth/keys.js +55 -0
  19. package/apps/runtime/dist/auth/local-ticket.js +26 -0
  20. package/apps/runtime/dist/authoring/example.js +74 -0
  21. package/apps/runtime/dist/authoring/guide.js +433 -0
  22. package/apps/runtime/dist/authoring/ops.js +117 -0
  23. package/apps/runtime/dist/browser/fast/action-space.js +160 -0
  24. package/apps/runtime/dist/browser/fast/classifier.js +91 -0
  25. package/apps/runtime/dist/browser/fast/decide.js +171 -0
  26. package/apps/runtime/dist/browser/fast/driver.js +141 -0
  27. package/apps/runtime/dist/browser/fast/instructions.js +33 -0
  28. package/apps/runtime/dist/browser/fast/run.js +249 -0
  29. package/apps/runtime/dist/browser/fast/span-picker.js +153 -0
  30. package/apps/runtime/dist/browser/fast/text-helper.js +178 -0
  31. package/apps/runtime/dist/browser/snapshot.js +335 -0
  32. package/apps/runtime/dist/cli/account.js +385 -0
  33. package/apps/runtime/dist/cli/autostart.js +182 -0
  34. package/apps/runtime/dist/cli/autoupdate.js +221 -0
  35. package/apps/runtime/dist/cli/clients.js +44 -0
  36. package/apps/runtime/dist/cli/connect.js +540 -0
  37. package/apps/runtime/dist/cli/environment.js +93 -0
  38. package/apps/runtime/dist/cli/exec.js +45 -0
  39. package/apps/runtime/dist/cli/features.js +50 -0
  40. package/apps/runtime/dist/cli/home.js +88 -0
  41. package/apps/runtime/dist/cli/install-env.js +33 -0
  42. package/apps/runtime/dist/cli/machine.js +107 -0
  43. package/apps/runtime/dist/cli/main.js +222 -0
  44. package/apps/runtime/dist/cli/mcp.js +136 -0
  45. package/apps/runtime/dist/cli/menu.js +202 -0
  46. package/apps/runtime/dist/cli/processes.js +72 -0
  47. package/apps/runtime/dist/cli/report.js +66 -0
  48. package/apps/runtime/dist/cli/setup.js +335 -0
  49. package/apps/runtime/dist/cli/start.js +276 -0
  50. package/apps/runtime/dist/cli/status.js +203 -0
  51. package/apps/runtime/dist/cli/ui.js +59 -0
  52. package/apps/runtime/dist/cli/uninstall-main.js +20 -0
  53. package/apps/runtime/dist/cli/uninstall.js +231 -0
  54. package/apps/runtime/dist/cli/update.js +86 -0
  55. package/apps/runtime/dist/cli/validate.js +75 -0
  56. package/apps/runtime/dist/cli/versions.js +123 -0
  57. package/apps/runtime/dist/connectors/builtin.js +86 -0
  58. package/apps/runtime/dist/connectors/external.js +409 -0
  59. package/apps/runtime/dist/connectors/gmail.js +107 -0
  60. package/apps/runtime/dist/connectors/imap.js +261 -0
  61. package/apps/runtime/dist/connectors/index.js +325 -0
  62. package/apps/runtime/dist/connectors/mail.js +72 -0
  63. package/apps/runtime/dist/connectors/outlook.js +90 -0
  64. package/apps/runtime/dist/connectors/plugin-connections.js +343 -0
  65. package/apps/runtime/dist/connectors/via-account.js +65 -0
  66. package/apps/runtime/dist/credits/credits.js +100 -0
  67. package/apps/runtime/dist/credits/estimate.js +152 -0
  68. package/apps/runtime/dist/db/adopt.js +149 -0
  69. package/apps/runtime/dist/db/client.js +173 -0
  70. package/apps/runtime/dist/db/control-schema.js +133 -0
  71. package/apps/runtime/dist/db/migrations/control/0000_last_absorbing_man.sql +47 -0
  72. package/apps/runtime/dist/db/migrations/control/0001_gorgeous_nicolaos.sql +41 -0
  73. package/apps/runtime/dist/db/migrations/control/0002_secret_penance.sql +1 -0
  74. package/apps/runtime/dist/db/migrations/control/0003_nasty_mordo.sql +3 -0
  75. package/apps/runtime/dist/db/migrations/control/0004_breezy_eddie_brock.sql +6 -0
  76. package/apps/runtime/dist/db/migrations/control/0005_chilly_oracle.sql +1 -0
  77. package/apps/runtime/dist/db/migrations/control/0006_sleepy_mojo.sql +1 -0
  78. package/apps/runtime/dist/db/migrations/control/0007_common_the_hand.sql +15 -0
  79. package/apps/runtime/dist/db/migrations/control/0008_runner.sql +8 -0
  80. package/apps/runtime/dist/db/migrations/control/0009_plugin_claim.sql +9 -0
  81. package/apps/runtime/dist/db/migrations/control/0010_tan_snowbird.sql +6 -0
  82. package/apps/runtime/dist/db/migrations/control/meta/0000_snapshot.json +311 -0
  83. package/apps/runtime/dist/db/migrations/control/meta/0001_snapshot.json +599 -0
  84. package/apps/runtime/dist/db/migrations/control/meta/0002_snapshot.json +607 -0
  85. package/apps/runtime/dist/db/migrations/control/meta/0003_snapshot.json +311 -0
  86. package/apps/runtime/dist/db/migrations/control/meta/0004_snapshot.json +350 -0
  87. package/apps/runtime/dist/db/migrations/control/meta/0005_snapshot.json +358 -0
  88. package/apps/runtime/dist/db/migrations/control/meta/0006_snapshot.json +365 -0
  89. package/apps/runtime/dist/db/migrations/control/meta/0007_snapshot.json +460 -0
  90. package/apps/runtime/dist/db/migrations/control/meta/0008_snapshot.json +505 -0
  91. package/apps/runtime/dist/db/migrations/control/meta/0009_snapshot.json +561 -0
  92. package/apps/runtime/dist/db/migrations/control/meta/0010_snapshot.json +600 -0
  93. package/apps/runtime/dist/db/migrations/control/meta/_journal.json +83 -0
  94. package/apps/runtime/dist/db/migrations/tenant/0000_eminent_freak.sql +188 -0
  95. package/apps/runtime/dist/db/migrations/tenant/0001_salty_master_chief.sql +1 -0
  96. package/apps/runtime/dist/db/migrations/tenant/0002_cloudy_firebird.sql +1 -0
  97. package/apps/runtime/dist/db/migrations/tenant/0003_brown_warbound.sql +52 -0
  98. package/apps/runtime/dist/db/migrations/tenant/0004_romantic_nocturne.sql +6 -0
  99. package/apps/runtime/dist/db/migrations/tenant/0005_reflective_forgotten_one.sql +2 -0
  100. package/apps/runtime/dist/db/migrations/tenant/0006_hard_war_machine.sql +30 -0
  101. package/apps/runtime/dist/db/migrations/tenant/0007_space_data.sql +43 -0
  102. package/apps/runtime/dist/db/migrations/tenant/0008_run_event_note.sql +1 -0
  103. package/apps/runtime/dist/db/migrations/tenant/0009_knowledge.sql +104 -0
  104. package/apps/runtime/dist/db/migrations/tenant/0010_plugin_connection.sql +15 -0
  105. package/apps/runtime/dist/db/migrations/tenant/0011_runners.sql +2 -0
  106. package/apps/runtime/dist/db/migrations/tenant/0012_assistant_chat.sql +40 -0
  107. package/apps/runtime/dist/db/migrations/tenant/0013_run_origin.sql +1 -0
  108. package/apps/runtime/dist/db/migrations/tenant/0014_run_answer.sql +2 -0
  109. package/apps/runtime/dist/db/migrations/tenant/0015_device_calls.sql +13 -0
  110. package/apps/runtime/dist/db/migrations/tenant/0016_even_trish_tilby.sql +12 -0
  111. package/apps/runtime/dist/db/migrations/tenant/meta/0000_snapshot.json +1323 -0
  112. package/apps/runtime/dist/db/migrations/tenant/meta/0001_snapshot.json +1330 -0
  113. package/apps/runtime/dist/db/migrations/tenant/meta/0002_snapshot.json +1337 -0
  114. package/apps/runtime/dist/db/migrations/tenant/meta/0003_snapshot.json +1605 -0
  115. package/apps/runtime/dist/db/migrations/tenant/meta/0004_snapshot.json +1645 -0
  116. package/apps/runtime/dist/db/migrations/tenant/meta/0005_snapshot.json +1659 -0
  117. package/apps/runtime/dist/db/migrations/tenant/meta/0006_snapshot.json +1696 -0
  118. package/apps/runtime/dist/db/migrations/tenant/meta/0007_snapshot.json +2012 -0
  119. package/apps/runtime/dist/db/migrations/tenant/meta/0008_snapshot.json +2019 -0
  120. package/apps/runtime/dist/db/migrations/tenant/meta/0009_snapshot.json +2837 -0
  121. package/apps/runtime/dist/db/migrations/tenant/meta/0010_snapshot.json +2942 -0
  122. package/apps/runtime/dist/db/migrations/tenant/meta/0011_snapshot.json +2956 -0
  123. package/apps/runtime/dist/db/migrations/tenant/meta/0012_snapshot.json +3132 -0
  124. package/apps/runtime/dist/db/migrations/tenant/meta/0013_snapshot.json +3139 -0
  125. package/apps/runtime/dist/db/migrations/tenant/meta/0014_snapshot.json +3154 -0
  126. package/apps/runtime/dist/db/migrations/tenant/meta/0015_snapshot.json +3243 -0
  127. package/apps/runtime/dist/db/migrations/tenant/meta/0016_snapshot.json +3326 -0
  128. package/apps/runtime/dist/db/migrations/tenant/meta/_journal.json +125 -0
  129. package/apps/runtime/dist/db/schema.js +602 -0
  130. package/apps/runtime/dist/debug.js +196 -0
  131. package/apps/runtime/dist/docs/dev/index.md +41 -0
  132. package/apps/runtime/dist/docs/dev/meta.json +7 -0
  133. package/apps/runtime/dist/docs/dev/plugins/connections.md +74 -0
  134. package/apps/runtime/dist/docs/dev/plugins/events.md +89 -0
  135. package/apps/runtime/dist/docs/dev/plugins/examples.md +101 -0
  136. package/apps/runtime/dist/docs/dev/plugins/index.md +78 -0
  137. package/apps/runtime/dist/docs/dev/plugins/layout.md +90 -0
  138. package/apps/runtime/dist/docs/dev/plugins/meta.json +28 -0
  139. package/apps/runtime/dist/docs/dev/plugins/quick-start.md +94 -0
  140. package/apps/runtime/dist/docs/dev/plugins/reference.md +348 -0
  141. package/apps/runtime/dist/docs/dev/plugins/reloading.md +76 -0
  142. package/apps/runtime/dist/docs/dev/plugins/routes.md +185 -0
  143. package/apps/runtime/dist/docs/dev/plugins/runners.md +230 -0
  144. package/apps/runtime/dist/docs/dev/plugins/server.md +281 -0
  145. package/apps/runtime/dist/docs/dev/plugins/shipping.md +79 -0
  146. package/apps/runtime/dist/docs/dev/plugins/space.md +297 -0
  147. package/apps/runtime/dist/docs/dev/plugins/starters.md +70 -0
  148. package/apps/runtime/dist/docs/dev/plugins/studio.md +363 -0
  149. package/apps/runtime/dist/docs/dev/plugins/styling.md +129 -0
  150. package/apps/runtime/dist/docs/dev/plugins/tables.md +104 -0
  151. package/apps/runtime/dist/docs/dev/plugins/tools.md +139 -0
  152. package/apps/runtime/dist/docs/dev/wizard-format.md +125 -0
  153. package/apps/runtime/dist/docs/meta.json +3 -0
  154. package/apps/runtime/dist/docs/user/ai-apps.md +112 -0
  155. package/apps/runtime/dist/docs/user/assistant.md +77 -0
  156. package/apps/runtime/dist/docs/user/build-a-wizard.md +116 -0
  157. package/apps/runtime/dist/docs/user/command-line.md +83 -0
  158. package/apps/runtime/dist/docs/user/connectors.md +90 -0
  159. package/apps/runtime/dist/docs/user/create-account.md +52 -0
  160. package/apps/runtime/dist/docs/user/data.md +66 -0
  161. package/apps/runtime/dist/docs/user/first-start.md +60 -0
  162. package/apps/runtime/dist/docs/user/index.md +49 -0
  163. package/apps/runtime/dist/docs/user/install.md +123 -0
  164. package/apps/runtime/dist/docs/user/local-only.md +42 -0
  165. package/apps/runtime/dist/docs/user/meta.json +32 -0
  166. package/apps/runtime/dist/docs/user/models.md +156 -0
  167. package/apps/runtime/dist/docs/user/plugins.md +71 -0
  168. package/apps/runtime/dist/docs/user/run.md +98 -0
  169. package/apps/runtime/dist/docs/user/server.md +52 -0
  170. package/apps/runtime/dist/docs/user/space.md +126 -0
  171. package/apps/runtime/dist/docs/user/steps.md +220 -0
  172. package/apps/runtime/dist/docs/user/test-and-share.md +224 -0
  173. package/apps/runtime/dist/docs/user/troubleshooting.md +67 -0
  174. package/apps/runtime/dist/docs/user/wordpress.md +121 -0
  175. package/apps/runtime/dist/documents/parse.js +246 -0
  176. package/apps/runtime/dist/engenty/connections-external/build-connector.js +193 -0
  177. package/apps/runtime/dist/engenty/connections-external/errors.js +11 -0
  178. package/apps/runtime/dist/engenty/connections-external/import-service.js +270 -0
  179. package/apps/runtime/dist/engenty/connections-external/importer/classify.js +34 -0
  180. package/apps/runtime/dist/engenty/connections-external/importer/map-auth.js +185 -0
  181. package/apps/runtime/dist/engenty/connections-external/importer/normalize-mcp.js +63 -0
  182. package/apps/runtime/dist/engenty/connections-external/importer/normalize-openapi.js +130 -0
  183. package/apps/runtime/dist/engenty/connections-external/invoke/http-invoker.js +143 -0
  184. package/apps/runtime/dist/engenty/connections-external/invoke/mcp-client.js +143 -0
  185. package/apps/runtime/dist/engenty/connections-external/net/guarded-fetch.js +119 -0
  186. package/apps/runtime/dist/engenty/connections-external/oauth-dcr.js +88 -0
  187. package/apps/runtime/dist/engenty/connections-external/registry-client.js +336 -0
  188. package/apps/runtime/dist/engenty/connections-external/registry-source.js +82 -0
  189. package/apps/runtime/dist/engenty/connections-external/types.js +7 -0
  190. package/apps/runtime/dist/engenty/connections-github/connector.js +209 -0
  191. package/apps/runtime/dist/engenty/connections-google/connectors/calendar.js +381 -0
  192. package/apps/runtime/dist/engenty/connections-google/connectors/contacts.js +94 -0
  193. package/apps/runtime/dist/engenty/connections-google/connectors/drive.js +290 -0
  194. package/apps/runtime/dist/engenty/connections-google/connectors/gmail.js +567 -0
  195. package/apps/runtime/dist/engenty/connections-google/definitions.js +11 -0
  196. package/apps/runtime/dist/engenty/connections-google/shared.js +73 -0
  197. package/apps/runtime/dist/engenty/connections-hubspot/connector.js +140 -0
  198. package/apps/runtime/dist/engenty/connections-microsoft/action.js +17 -0
  199. package/apps/runtime/dist/engenty/connections-microsoft/graph.js +114 -0
  200. package/apps/runtime/dist/engenty/connections-microsoft/onedrive.js +286 -0
  201. package/apps/runtime/dist/engenty/connections-microsoft/outlook.js +492 -0
  202. package/apps/runtime/dist/engenty/connections-s3/s3.js +328 -0
  203. package/apps/runtime/dist/engenty/connections-sdk/files-capability.js +86 -0
  204. package/apps/runtime/dist/engenty/connections-sdk/oauth2.js +150 -0
  205. package/apps/runtime/dist/engenty/connections-sdk/registry.js +89 -0
  206. package/apps/runtime/dist/engenty/connections-sdk/storage-capability.js +84 -0
  207. package/apps/runtime/dist/engenty/connections-sdk/types.js +30 -0
  208. package/apps/runtime/dist/engenty/connections-slack/connector.js +360 -0
  209. package/apps/runtime/dist/engenty/csv-import/csv-matrix.js +178 -0
  210. package/apps/runtime/dist/engenty/csv-import/import-sources.js +87 -0
  211. package/apps/runtime/dist/engenty/csv-import/parse-csv.js +129 -0
  212. package/apps/runtime/dist/engenty/csv-import/serialize-csv.js +20 -0
  213. package/apps/runtime/dist/engenty/csv-import/types.js +1 -0
  214. package/apps/runtime/dist/engenty/csv-import/xlsx-workbook.js +159 -0
  215. package/apps/runtime/dist/engenty/doc-converter/interface.js +9 -0
  216. package/apps/runtime/dist/engenty/doc-converter/page-break.js +92 -0
  217. package/apps/runtime/dist/engenty/doc-converter/providers/local/index.js +72 -0
  218. package/apps/runtime/dist/engenty/document-scanner/schemas/classifier.js +30 -0
  219. package/apps/runtime/dist/engenty/document-scanner/schemas/index.js +4 -0
  220. package/apps/runtime/dist/engenty/document-scanner/schemas/invoice.js +73 -0
  221. package/apps/runtime/dist/engenty/document-scanner/schemas/receipt.js +63 -0
  222. package/apps/runtime/dist/engenty/document-scanner/schemas/shared.js +40 -0
  223. package/apps/runtime/dist/engenty/search-index/chunks.js +164 -0
  224. package/apps/runtime/dist/engenty/search-index/contracts.js +9 -0
  225. package/apps/runtime/dist/engenty/shims/connections-sdk.js +39 -0
  226. package/apps/runtime/dist/engenty/shims/plugin-sdk.js +1 -0
  227. package/apps/runtime/dist/engenty/shims/web-ingest.js +19 -0
  228. package/apps/runtime/dist/engenty/web-ingest/ssrf.js +277 -0
  229. package/apps/runtime/dist/engine/asks.js +82 -0
  230. package/apps/runtime/dist/engine/decide.js +82 -0
  231. package/apps/runtime/dist/engine/device.js +194 -0
  232. package/apps/runtime/dist/engine/events.js +128 -0
  233. package/apps/runtime/dist/engine/input.js +208 -0
  234. package/apps/runtime/dist/engine/owner.js +32 -0
  235. package/apps/runtime/dist/engine/prepare.js +90 -0
  236. package/apps/runtime/dist/engine/push.js +58 -0
  237. package/apps/runtime/dist/engine/requirements.js +355 -0
  238. package/apps/runtime/dist/engine/resources.js +198 -0
  239. package/apps/runtime/dist/engine/runner.js +970 -0
  240. package/apps/runtime/dist/engine/steps.js +1000 -0
  241. package/apps/runtime/dist/engine/surface.js +91 -0
  242. package/apps/runtime/dist/engine/template.js +240 -0
  243. package/apps/runtime/dist/engine/types.js +4 -0
  244. package/apps/runtime/dist/env.js +295 -0
  245. package/apps/runtime/dist/features.js +123 -0
  246. package/apps/runtime/dist/files/blobs.js +22 -0
  247. package/apps/runtime/dist/files/objects.js +86 -0
  248. package/apps/runtime/dist/files/storage.js +120 -0
  249. package/apps/runtime/dist/files/web-images.js +101 -0
  250. package/apps/runtime/dist/film/project.js +257 -0
  251. package/apps/runtime/dist/film/skills.js +91 -0
  252. package/apps/runtime/dist/film/sounds.js +122 -0
  253. package/apps/runtime/dist/film/step.js +289 -0
  254. package/apps/runtime/dist/film/tools.js +99 -0
  255. package/apps/runtime/dist/geocode.js +58 -0
  256. package/apps/runtime/dist/harness/antigravity.js +129 -0
  257. package/apps/runtime/dist/harness/apple.js +270 -0
  258. package/apps/runtime/dist/harness/claude.js +147 -0
  259. package/apps/runtime/dist/harness/codex.js +229 -0
  260. package/apps/runtime/dist/harness/cursor.js +93 -0
  261. package/apps/runtime/dist/harness/env.js +124 -0
  262. package/apps/runtime/dist/harness/index.js +95 -0
  263. package/apps/runtime/dist/harness/model.js +279 -0
  264. package/apps/runtime/dist/harness/prompt.js +121 -0
  265. package/apps/runtime/dist/harness/terminal.js +194 -0
  266. package/apps/runtime/dist/harness/types.js +7 -0
  267. package/apps/runtime/dist/index.js +113 -0
  268. package/apps/runtime/dist/limits.js +81 -0
  269. package/apps/runtime/dist/link-preview.js +60 -0
  270. package/apps/runtime/dist/log.js +106 -0
  271. package/apps/runtime/dist/manage.js +249 -0
  272. package/apps/runtime/dist/mcp/auth.js +161 -0
  273. package/apps/runtime/dist/mcp/bridge.js +59 -0
  274. package/apps/runtime/dist/mcp/flow-app.js +97 -0
  275. package/apps/runtime/dist/mcp/handler.js +54 -0
  276. package/apps/runtime/dist/mcp/scopes.js +14 -0
  277. package/apps/runtime/dist/mcp/seen.js +65 -0
  278. package/apps/runtime/dist/mcp/tools.js +572 -0
  279. package/apps/runtime/dist/media/conversation.js +167 -0
  280. package/apps/runtime/dist/media/ffmpeg.js +121 -0
  281. package/apps/runtime/dist/media/generate.js +120 -0
  282. package/apps/runtime/dist/media/marking.js +121 -0
  283. package/apps/runtime/dist/media/transcribe.js +198 -0
  284. package/apps/runtime/dist/model-errors.js +42 -0
  285. package/apps/runtime/dist/models.js +1164 -0
  286. package/apps/runtime/dist/plugin.js +61 -0
  287. package/apps/runtime/dist/plugins/channels.js +78 -0
  288. package/apps/runtime/dist/plugins/claims.js +56 -0
  289. package/apps/runtime/dist/plugins/discovery.js +155 -0
  290. package/apps/runtime/dist/plugins/events.js +63 -0
  291. package/apps/runtime/dist/plugins/jobs.js +64 -0
  292. package/apps/runtime/dist/plugins/loader.js +508 -0
  293. package/apps/runtime/dist/plugins/migrations.js +69 -0
  294. package/apps/runtime/dist/plugins/pro-keys.js +34 -0
  295. package/apps/runtime/dist/plugins/pro-state.js +83 -0
  296. package/apps/runtime/dist/plugins/pro.js +310 -0
  297. package/apps/runtime/dist/plugins/public.js +44 -0
  298. package/apps/runtime/dist/plugins/registry.js +122 -0
  299. package/apps/runtime/dist/plugins/runs.js +210 -0
  300. package/apps/runtime/dist/render/browser-path.js +54 -0
  301. package/apps/runtime/dist/render/chromium.js +98 -0
  302. package/apps/runtime/dist/render/convert.js +158 -0
  303. package/apps/runtime/dist/render/downloads.js +299 -0
  304. package/apps/runtime/dist/render/guard.js +25 -0
  305. package/apps/runtime/dist/render/shaped.js +137 -0
  306. package/apps/runtime/dist/routes/api.js +440 -0
  307. package/apps/runtime/dist/routes/debug.js +42 -0
  308. package/apps/runtime/dist/routes/delivery.js +90 -0
  309. package/apps/runtime/dist/routes/internal.js +81 -0
  310. package/apps/runtime/dist/routes/lang.js +25 -0
  311. package/apps/runtime/dist/routes/marketplace.js +43 -0
  312. package/apps/runtime/dist/routes/plugin-public.js +113 -0
  313. package/apps/runtime/dist/routes/plugins.js +212 -0
  314. package/apps/runtime/dist/routes/runs.js +1422 -0
  315. package/apps/runtime/dist/routes/studio.js +1629 -0
  316. package/apps/runtime/dist/routes/wizard-stream.js +30 -0
  317. package/apps/runtime/dist/running.js +39 -0
  318. package/apps/runtime/dist/sandbox/docker.js +75 -0
  319. package/apps/runtime/dist/sandbox/index.js +23 -0
  320. package/apps/runtime/dist/sandbox/types.js +1 -0
  321. package/apps/runtime/dist/secrets/crypto.js +28 -0
  322. package/apps/runtime/dist/secrets/signing.js +52 -0
  323. package/apps/runtime/dist/secrets/vault.js +59 -0
  324. package/apps/runtime/dist/services/access.js +88 -0
  325. package/apps/runtime/dist/services/api.js +248 -0
  326. package/apps/runtime/dist/services/architect.js +95 -0
  327. package/apps/runtime/dist/services/assistant-chats.js +311 -0
  328. package/apps/runtime/dist/services/brand.js +85 -0
  329. package/apps/runtime/dist/services/cloud.js +456 -0
  330. package/apps/runtime/dist/services/draft-events.js +27 -0
  331. package/apps/runtime/dist/services/engenty-shapes.js +71 -0
  332. package/apps/runtime/dist/services/errors.js +29 -0
  333. package/apps/runtime/dist/services/files.js +178 -0
  334. package/apps/runtime/dist/services/knowledge-model.js +559 -0
  335. package/apps/runtime/dist/services/knowledge.js +721 -0
  336. package/apps/runtime/dist/services/links.js +16 -0
  337. package/apps/runtime/dist/services/marketplace.js +492 -0
  338. package/apps/runtime/dist/services/onboarding.js +152 -0
  339. package/apps/runtime/dist/services/package-file.js +82 -0
  340. package/apps/runtime/dist/services/package.js +170 -0
  341. package/apps/runtime/dist/services/profile.js +51 -0
  342. package/apps/runtime/dist/services/project-files.js +439 -0
  343. package/apps/runtime/dist/services/project-index.js +707 -0
  344. package/apps/runtime/dist/services/projects.js +387 -0
  345. package/apps/runtime/dist/services/relevance.js +58 -0
  346. package/apps/runtime/dist/services/runners.js +178 -0
  347. package/apps/runtime/dist/services/runs.js +524 -0
  348. package/apps/runtime/dist/services/shares.js +130 -0
  349. package/apps/runtime/dist/services/site.js +270 -0
  350. package/apps/runtime/dist/services/space-categories.js +861 -0
  351. package/apps/runtime/dist/services/space-data.js +792 -0
  352. package/apps/runtime/dist/services/space-origin.js +207 -0
  353. package/apps/runtime/dist/services/spaces.js +656 -0
  354. package/apps/runtime/dist/services/translations.js +306 -0
  355. package/apps/runtime/dist/services/widgets.js +34 -0
  356. package/apps/runtime/dist/services/wizard-icon.js +157 -0
  357. package/apps/runtime/dist/services/wizards.js +420 -0
  358. package/apps/runtime/dist/settings.js +16 -0
  359. package/apps/runtime/dist/store/errors.js +4 -0
  360. package/apps/runtime/dist/store/index.js +299 -0
  361. package/apps/runtime/dist/store/shared-lists.js +123 -0
  362. package/apps/runtime/dist/tenants/control.js +238 -0
  363. package/apps/runtime/dist/tenants/tenant.js +26 -0
  364. package/apps/runtime/dist/texts.js +207 -0
  365. package/apps/runtime/dist/tools/browser.js +703 -0
  366. package/apps/runtime/dist/tools/connector.js +204 -0
  367. package/apps/runtime/dist/tools/index.js +291 -0
  368. package/apps/runtime/dist/tools/mail.js +104 -0
  369. package/apps/runtime/dist/tools/net-guard.js +170 -0
  370. package/apps/runtime/dist/tools/pages.js +81 -0
  371. package/apps/runtime/dist/tools/plugin.js +180 -0
  372. package/apps/runtime/dist/tools/project.js +154 -0
  373. package/apps/runtime/dist/tools/shared.js +69 -0
  374. package/apps/runtime/dist/tools/store.js +238 -0
  375. package/apps/runtime/dist/update.js +113 -0
  376. package/apps/runtime/dist/widgets/bundle.js +99 -0
  377. package/apps/runtime/dist/widgets/render.js +329 -0
  378. package/apps/runtime/dist/widgets/runtime.js +108 -0
  379. package/apps/runtime/dist/widgets/script.js +30 -0
  380. package/apps/runtime/dist/widgets/step.js +223 -0
  381. package/apps/web/dist/ai-labels/ai-black.svg +20 -0
  382. package/apps/web/dist/ai-labels/ai-generated-black.svg +31 -0
  383. package/apps/web/dist/ai-labels/ai-generated-white.svg +32 -0
  384. package/apps/web/dist/ai-labels/ai-modified-black.svg +30 -0
  385. package/apps/web/dist/ai-labels/ai-modified-white.svg +31 -0
  386. package/apps/web/dist/ai-labels/ai-white.svg +21 -0
  387. package/apps/web/dist/assets/AboutDialog-D4mvc-zu.js +1 -0
  388. package/apps/web/dist/assets/ChangelogDialog-DLqpJsF6.js +1 -0
  389. package/apps/web/dist/assets/ChatView-3laypRcE.js +10 -0
  390. package/apps/web/dist/assets/EditorPage-BalA5U2Y.js +3 -0
  391. package/apps/web/dist/assets/FlowPreview-CusP7ci9.js +1 -0
  392. package/apps/web/dist/assets/Harness-BrP-ENHg.css +1 -0
  393. package/apps/web/dist/assets/Harness-iYLtOLaK.js +16 -0
  394. package/apps/web/dist/assets/NewWizardChannels-CbwJ9A56.js +1 -0
  395. package/apps/web/dist/assets/NewWizardPage-BOBYiB9i.js +7 -0
  396. package/apps/web/dist/assets/OnboardingPage-CUwCiVIr.js +1 -0
  397. package/apps/web/dist/assets/ProjectPage-Bb16MdYG.js +1 -0
  398. package/apps/web/dist/assets/PublicRunner-BCt7Q6C-.js +1 -0
  399. package/apps/web/dist/assets/ReadOnly-kIHX2TEy.js +1 -0
  400. package/apps/web/dist/assets/RunDrawer-hZ9oeSXu.js +4 -0
  401. package/apps/web/dist/assets/RunnerView-DUS9fPmx.js +1 -0
  402. package/apps/web/dist/assets/SettingsPage-BzwR50fi.js +1 -0
  403. package/apps/web/dist/assets/SetupPage-gAp7rPxp.js +1 -0
  404. package/apps/web/dist/assets/SharePage-DqZWHva_.js +1 -0
  405. package/apps/web/dist/assets/changelog-DugmCNSf.js +1 -0
  406. package/apps/web/dist/assets/engenty-eXZ-EAwd.js +1 -0
  407. package/apps/web/dist/assets/esm-DXeMu8Lb.js +7 -0
  408. package/apps/web/dist/assets/fluffy-engenty-ClRou7yu.js +456 -0
  409. package/apps/web/dist/assets/index-AfUa8xKD.css +1 -0
  410. package/apps/web/dist/assets/index-C5Sm7tTR.js +14 -0
  411. package/apps/web/dist/assets/jsx-runtime-BNakU3Ej.js +1 -0
  412. package/apps/web/dist/assets/lock-R_CfU0Xo.js +1 -0
  413. package/apps/web/dist/assets/oss-credits-cZ9NUaLZ.js +1 -0
  414. package/apps/web/dist/assets/pdfmake-Cx9scTbD.js +228 -0
  415. package/apps/web/dist/assets/phone-CgrIS4_-.js +1 -0
  416. package/apps/web/dist/assets/preload-helper-CNEI7N0N.js +1 -0
  417. package/apps/web/dist/assets/qr-scanner-worker.min-CJaXo3yu.js +98 -0
  418. package/apps/web/dist/assets/qr-scanner.min-C_UI0gH-.js +1 -0
  419. package/apps/web/dist/assets/rolldown-runtime-hePW80VL.js +1 -0
  420. package/apps/web/dist/assets/settings-menu-2IMOOlLl.js +1 -0
  421. package/apps/web/dist/assets/ui-dzGvc3xk.js +137 -0
  422. package/apps/web/dist/assets/upload-BSuTilFF.js +1 -0
  423. package/apps/web/dist/assets/vfs_fonts-DllDSYt1.js +1 -0
  424. package/apps/web/dist/embed.js +266 -0
  425. package/apps/web/dist/favicon.svg +1 -0
  426. package/apps/web/dist/icons/apple-touch-icon.png +0 -0
  427. package/apps/web/dist/icons/icon-192.png +0 -0
  428. package/apps/web/dist/icons/icon-512.png +0 -0
  429. package/apps/web/dist/icons/icon-maskable-512.png +0 -0
  430. package/apps/web/dist/index.html +48 -0
  431. package/apps/web/dist/install.sh +577 -0
  432. package/apps/web/dist/manifest.webmanifest +21 -0
  433. package/apps/web/dist/mcp/flow.html +980 -0
  434. package/apps/web/dist/sw.js +15 -0
  435. package/bin/wizards.mjs +288 -0
  436. package/modules/README.md +15 -0
  437. package/node_modules/@engenty/wizards/dist/plugin/index.d.ts +1150 -0
  438. package/node_modules/@engenty/wizards/dist/plugin/index.js +4 -0
  439. package/node_modules/@engenty/wizards/dist/plugin/studio.d.ts +322 -0
  440. package/node_modules/@engenty/wizards/dist/plugin/studio.js +4 -0
  441. package/node_modules/@engenty/wizards/dist/plugin/thread.d.ts +174 -0
  442. package/node_modules/@engenty/wizards/dist/plugin/thread.js +821 -0
  443. package/node_modules/@engenty/wizards/package.json +11 -0
  444. package/node_modules/@engenty-wizards/shared/dist/assistant.d.ts +174 -0
  445. package/node_modules/@engenty-wizards/shared/dist/assistant.js +65 -0
  446. package/node_modules/@engenty-wizards/shared/dist/changes.d.ts +22 -0
  447. package/node_modules/@engenty-wizards/shared/dist/changes.js +61 -0
  448. package/node_modules/@engenty-wizards/shared/dist/connectors.d.ts +77 -0
  449. package/node_modules/@engenty-wizards/shared/dist/connectors.js +2 -0
  450. package/node_modules/@engenty-wizards/shared/dist/decision.d.ts +76 -0
  451. package/node_modules/@engenty-wizards/shared/dist/decision.js +147 -0
  452. package/node_modules/@engenty-wizards/shared/dist/definition.d.ts +2922 -0
  453. package/node_modules/@engenty-wizards/shared/dist/definition.js +1920 -0
  454. package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/columns-format.d.ts +5 -0
  455. package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/columns-format.js +132 -0
  456. package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/columns-value.d.ts +11 -0
  457. package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/columns-value.js +209 -0
  458. package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/columns.d.ts +532 -0
  459. package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/columns.js +217 -0
  460. package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/index.d.ts +3 -0
  461. package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/index.js +3 -0
  462. package/node_modules/@engenty-wizards/shared/dist/engenty/search-index/catalog-lexical.d.ts +14 -0
  463. package/node_modules/@engenty-wizards/shared/dist/engenty/search-index/catalog-lexical.js +166 -0
  464. package/node_modules/@engenty-wizards/shared/dist/engenty/search-index/catalog-rank.d.ts +33 -0
  465. package/node_modules/@engenty-wizards/shared/dist/engenty/search-index/catalog-rank.js +99 -0
  466. package/node_modules/@engenty-wizards/shared/dist/feature-flags.d.ts +78 -0
  467. package/node_modules/@engenty-wizards/shared/dist/feature-flags.js +70 -0
  468. package/node_modules/@engenty-wizards/shared/dist/features.d.ts +41 -0
  469. package/node_modules/@engenty-wizards/shared/dist/features.js +89 -0
  470. package/node_modules/@engenty-wizards/shared/dist/fit.d.ts +71 -0
  471. package/node_modules/@engenty-wizards/shared/dist/fit.js +382 -0
  472. package/node_modules/@engenty-wizards/shared/dist/json-schema.d.ts +14 -0
  473. package/node_modules/@engenty-wizards/shared/dist/json-schema.js +66 -0
  474. package/node_modules/@engenty-wizards/shared/dist/knowledge.d.ts +199 -0
  475. package/node_modules/@engenty-wizards/shared/dist/knowledge.js +68 -0
  476. package/node_modules/@engenty-wizards/shared/dist/marketplace-entry.d.ts +35 -0
  477. package/node_modules/@engenty-wizards/shared/dist/marketplace-entry.js +107 -0
  478. package/node_modules/@engenty-wizards/shared/dist/marketplace-search.d.ts +20 -0
  479. package/node_modules/@engenty-wizards/shared/dist/marketplace-search.js +136 -0
  480. package/node_modules/@engenty-wizards/shared/dist/marketplace.d.ts +227 -0
  481. package/node_modules/@engenty-wizards/shared/dist/marketplace.js +354 -0
  482. package/node_modules/@engenty-wizards/shared/dist/merge.d.ts +7 -0
  483. package/node_modules/@engenty-wizards/shared/dist/merge.js +40 -0
  484. package/node_modules/@engenty-wizards/shared/dist/numbers.d.ts +24 -0
  485. package/node_modules/@engenty-wizards/shared/dist/numbers.js +54 -0
  486. package/node_modules/@engenty-wizards/shared/dist/projects.d.ts +224 -0
  487. package/node_modules/@engenty-wizards/shared/dist/projects.js +319 -0
  488. package/node_modules/@engenty-wizards/shared/dist/providers.d.ts +101 -0
  489. package/node_modules/@engenty-wizards/shared/dist/providers.js +390 -0
  490. package/node_modules/@engenty-wizards/shared/dist/run.d.ts +680 -0
  491. package/node_modules/@engenty-wizards/shared/dist/run.js +620 -0
  492. package/node_modules/@engenty-wizards/shared/dist/runner-texts.d.ts +546 -0
  493. package/node_modules/@engenty-wizards/shared/dist/runner-texts.js +523 -0
  494. package/node_modules/@engenty-wizards/shared/dist/runners.d.ts +93 -0
  495. package/node_modules/@engenty-wizards/shared/dist/runners.js +146 -0
  496. package/node_modules/@engenty-wizards/shared/dist/shape.d.ts +102 -0
  497. package/node_modules/@engenty-wizards/shared/dist/shape.js +318 -0
  498. package/node_modules/@engenty-wizards/shared/dist/space-data.d.ts +89 -0
  499. package/node_modules/@engenty-wizards/shared/dist/space-data.js +47 -0
  500. package/node_modules/@engenty-wizards/shared/dist/store.d.ts +117 -0
  501. package/node_modules/@engenty-wizards/shared/dist/store.js +81 -0
  502. package/node_modules/@engenty-wizards/shared/dist/surface.d.ts +115 -0
  503. package/node_modules/@engenty-wizards/shared/dist/surface.js +442 -0
  504. package/node_modules/@engenty-wizards/shared/dist/texts.d.ts +45 -0
  505. package/node_modules/@engenty-wizards/shared/dist/texts.js +54 -0
  506. package/node_modules/@engenty-wizards/shared/dist/translation.d.ts +23 -0
  507. package/node_modules/@engenty-wizards/shared/dist/translation.js +154 -0
  508. package/node_modules/@engenty-wizards/shared/dist/wizard-package.d.ts +48 -0
  509. package/node_modules/@engenty-wizards/shared/dist/wizard-package.js +49 -0
  510. package/node_modules/@engenty-wizards/shared/dist/workspace.d.ts +16 -0
  511. package/node_modules/@engenty-wizards/shared/dist/workspace.js +51 -0
  512. package/node_modules/@engenty-wizards/shared/package.json +10 -0
  513. package/package.json +77 -4
  514. package/plugin/.claude-plugin/plugin.json +9 -0
  515. package/plugin/.mcp.json +8 -0
  516. package/plugin/commands/wizard.md +8 -0
  517. package/plugin/skills/build-wizard/SKILL.md +27 -0
  518. package/plugin/skills/use-wizard/SKILL.md +18 -0
@@ -0,0 +1,4 @@
1
+ /** Types the factory; it does nothing else. */
2
+ export function definePlugin(factory) {
3
+ return factory;
4
+ }
@@ -0,0 +1,322 @@
1
+ import type { ComponentType, ReactNode } from "react";
2
+ /**
3
+ * What the studio hands a plugin's studio half: the built `client.js` the studio loads after
4
+ * sign-in. Its default export registers pages, entries of the app bar, sections of the settings
5
+ * and of the space page, parts of the space page, and cards of the space assistant's chat. React, the router and the
6
+ * studio's own components come from the studio (docs/content/dev/plugins), so the page a plugin
7
+ * draws is part of the same app.
8
+ */
9
+ export type StudioLang = "de" | "en";
10
+ /** A plugin's words. `de` is the source: a key missing in `en` shows the German. */
11
+ export type StudioMessages = Record<StudioLang, Record<string, string>>;
12
+ type Icon = ComponentType<{
13
+ className?: string;
14
+ }>;
15
+ export interface StudioPage {
16
+ /** An address of the studio: `/contacts`, `/contacts/:id`. */
17
+ path: string;
18
+ component: ComponentType;
19
+ /** The page lays out columns of its own and takes the screen's width. */
20
+ wide?: boolean;
21
+ }
22
+ /** An icon in the app bar that opens a page. */
23
+ export interface StudioNavEntry {
24
+ to: string;
25
+ /** A function: the language can change while the studio is open. */
26
+ label: () => string;
27
+ icon: Icon;
28
+ }
29
+ export interface StudioSettingsSection {
30
+ /** Its address is `/settings/<id>`. */
31
+ id: string;
32
+ label: () => string;
33
+ icon: Icon;
34
+ component: ComponentType;
35
+ /** The user menu links to it directly. */
36
+ menu?: boolean;
37
+ }
38
+ /**
39
+ * The parts of the space page: `info` (who the space is, its logos, colours, assets and facts),
40
+ * `knowledge` (its documents and what its steps search), `data` (what its wizards keep) and
41
+ * `results` (what its runs produced).
42
+ */
43
+ export type StudioSpaceGroup = "info" | "knowledge" | "data" | "results";
44
+ /**
45
+ * A section of the space page, in one of its parts, below the part's own sections. The studio
46
+ * draws its heading and hint above it, and its entry in the part's menu under the plugin's name;
47
+ * the component draws the rest, usually a `Card`.
48
+ */
49
+ export interface StudioSpaceSection {
50
+ /** Its anchor: `/space/<group>#<id>`. Unique on the whole space page. */
51
+ id: string;
52
+ /** The part it stands in; `knowledge` when left out. */
53
+ group?: StudioSpaceGroup;
54
+ label: () => string;
55
+ /** One line under the heading: what the section is for. */
56
+ hint?: () => string;
57
+ component: ComponentType;
58
+ }
59
+ /**
60
+ * A part of the space page of the plugin's own, beside Info & brand, Knowledge, Data and
61
+ * Results: an entry in the parts' menu and a page at `/space/<id>`. The component draws the
62
+ * whole part; `useSpaceMenu` fills the part's menu with what it draws.
63
+ */
64
+ export interface StudioSpacePart {
65
+ /** Its address: `/space/<id>`. Lower case, digits and `-`; never one of the studio's parts. */
66
+ id: string;
67
+ label: () => string;
68
+ icon: Icon;
69
+ /** The part it follows in the menu; after `data` when left out. */
70
+ after?: Exclude<StudioSpaceGroup, "results">;
71
+ component: ComponentType;
72
+ }
73
+ /** An entry of a plugin part's menu: it jumps to the element with that id. */
74
+ export interface StudioSpaceMenuEntry {
75
+ id: string;
76
+ label: string;
77
+ icon?: Icon;
78
+ }
79
+ /** What a runner's section of the share dialog is handed: the wizard the dialog is about. */
80
+ export interface StudioShareSectionProps {
81
+ wizard: {
82
+ id: string;
83
+ title: string;
84
+ };
85
+ }
86
+ /**
87
+ * A runner's own settings for a wizard, in the share dialog's settings while the runner is on:
88
+ * the keyword that picks it, say. Its address and link the dialog shows itself, from the
89
+ * runner's `address`. One per runner.
90
+ */
91
+ export interface StudioShareSection {
92
+ /** The runner's id, as the server half registered it. */
93
+ runner: string;
94
+ component: ComponentType<StudioShareSectionProps>;
95
+ }
96
+ /** What a runner's setup in the share dialog is handed. */
97
+ export interface StudioShareSetupProps {
98
+ wizard: {
99
+ id: string;
100
+ title: string;
101
+ };
102
+ /**
103
+ * The buttons at the foot of the dialog, where the dialog's own are: render it anywhere in the
104
+ * setup, its children land there.
105
+ */
106
+ Actions: ComponentType<{
107
+ children: ReactNode;
108
+ }>;
109
+ /**
110
+ * Back to the dialog's main view, its rows asked again; with a banner on top that says how it
111
+ * went. `tone`: `done` (set up, green) or `waiting` (asked for, plain).
112
+ */
113
+ done(banner?: {
114
+ title: string;
115
+ text?: string;
116
+ tone?: "done" | "waiting";
117
+ }): void;
118
+ }
119
+ /** What a runner's banner on the share dialog is handed. */
120
+ export interface StudioShareNoticeProps {
121
+ wizard: {
122
+ id: string;
123
+ title: string;
124
+ };
125
+ /** Opens the runner's setup in the dialog. */
126
+ open(): void;
127
+ }
128
+ /**
129
+ * A runner's setup inside the share dialog: what "Einrichten" in its row opens, a view of the
130
+ * dialog with a back arrow, of the dialog's height. Without one, "Einrichten" goes to the
131
+ * plugin's settings section. One per runner.
132
+ */
133
+ export interface StudioShareSetup {
134
+ /** The runner's id, as the server half registered it. */
135
+ runner: string;
136
+ /** The view's title: "SMS einrichten". A function: the language can change. */
137
+ title: () => string;
138
+ component: ComponentType<StudioShareSetupProps>;
139
+ /**
140
+ * A banner above the dialog's rows while the runner has news (its number is there), drawn
141
+ * by the plugin; it draws nothing while it has none. The dialog shows the first runner's that
142
+ * is on.
143
+ */
144
+ notice?: ComponentType<StudioShareNoticeProps>;
145
+ }
146
+ /** What a card in the assistant's chat is handed. */
147
+ export interface StudioAssistantCardProps<T = unknown> {
148
+ /** What the assistant tool returned. */
149
+ data: T;
150
+ /** Sends a message to the assistant, as if the person typed it: "Übernehmen". */
151
+ send(message: string): void;
152
+ }
153
+ /**
154
+ * Draws the result of a tool of the space assistant inside its chat: a tool the server half
155
+ * registered with `card: true`.
156
+ */
157
+ export interface StudioAssistantCard {
158
+ /** The tool's name, as the server half registered it. */
159
+ tool: string;
160
+ component: ComponentType<StudioAssistantCardProps<any>>;
161
+ }
162
+ /** A space's brand as Info & brand has it: what a plugin draws in its look. */
163
+ export interface StudioBrand {
164
+ /** The title end users see. */
165
+ name: string;
166
+ /** The colours in order: the first is the accent. */
167
+ colors: {
168
+ name: string;
169
+ value: string;
170
+ }[];
171
+ /** The fonts, each with what it is for ("Headings") and the weights the brand uses. */
172
+ fonts: {
173
+ family: string;
174
+ role: string;
175
+ weights: number[];
176
+ }[];
177
+ }
178
+ /** The space the studio shows: what all its wizards share. */
179
+ export interface StudioSpace {
180
+ id: string;
181
+ /** What the switcher calls it. */
182
+ name: string;
183
+ /** Synced from a local install, or on a runtime where nothing is built: shown, not changed. */
184
+ readOnly: boolean;
185
+ brand: StudioBrand;
186
+ }
187
+ /** A row under the assistant's hello: a question the person asks with one click. */
188
+ export interface StudioAssistantSuggestion {
189
+ label: string;
190
+ /** What is sent; the label where left out. */
191
+ message?: string;
192
+ /** Put into the field to finish ("The loafer costs … now") instead of sent at once. */
193
+ fill?: boolean;
194
+ }
195
+ /** The studio's assistant on a plugin's page: what it says before the first message. */
196
+ export interface StudioAssistantProps {
197
+ title?: string;
198
+ hello?: string;
199
+ /** The input's placeholder: an example of what to ask. */
200
+ placeholder?: string;
201
+ /** Up to three questions under the hello. */
202
+ suggestions?: StudioAssistantSuggestion[];
203
+ /** The assistant changed something: read the page's data again. */
204
+ onChanged?: () => void;
205
+ }
206
+ /**
207
+ * What a plugin's page shows, for the assistant: it goes up with every message, beside the
208
+ * page's address and title. At most 16 KiB together.
209
+ */
210
+ export interface StudioAssistantPage extends StudioAssistantProps {
211
+ /** An item the page has open. */
212
+ open?: {
213
+ kind: string;
214
+ id?: string;
215
+ label: string;
216
+ };
217
+ /** Ids of what the person picked. */
218
+ selection?: string[];
219
+ /** A line on what the page holds: "12 products · 3 without a price". */
220
+ summary?: string;
221
+ /** Fields of the page with their values. */
222
+ fields?: {
223
+ id: string;
224
+ label: string;
225
+ value: unknown;
226
+ }[];
227
+ /** A page of full-height tables: the assistant starts small here. */
228
+ compact?: boolean;
229
+ }
230
+ /** A tool the assistant may run in the page: the shop's "filter the products". */
231
+ export interface StudioAssistantTool {
232
+ /** What it does, for the model. */
233
+ description: string;
234
+ /** Its arguments as JSON Schema (`{ type: "object", properties: { … } }`). */
235
+ parameters?: Record<string, unknown>;
236
+ }
237
+ export interface StudioMe {
238
+ user: {
239
+ id: string;
240
+ name: string;
241
+ email: string;
242
+ };
243
+ tenant: {
244
+ id: string;
245
+ role: "owner" | "admin" | "member";
246
+ };
247
+ /** `managed`: signed in at the Manage-App. `local`: the runtime runs alone. */
248
+ mode: "managed" | "local";
249
+ }
250
+ export interface StudioPluginContext {
251
+ plugin: {
252
+ id: string;
253
+ name: string;
254
+ version: string;
255
+ };
256
+ registerPage(page: StudioPage): void;
257
+ registerNav(entry: StudioNavEntry): void;
258
+ registerSettingsSection(section: StudioSettingsSection): void;
259
+ registerSpaceSection(section: StudioSpaceSection): void;
260
+ registerSpacePart(part: StudioSpacePart): void;
261
+ registerShareSection(section: StudioShareSection): void;
262
+ registerShareSetup(setup: StudioShareSetup): void;
263
+ registerAssistantCard(card: StudioAssistantCard): void;
264
+ /**
265
+ * A hook: the space the studio shows, `null` while it has none. A component that calls it draws
266
+ * again when the person picks another space.
267
+ */
268
+ useSpace(): StudioSpace | null;
269
+ /**
270
+ * A hook for a plugin's space part: the entries of the part's menu, each jumping to the element
271
+ * of its id in what the part draws. The menu marks the one in view.
272
+ */
273
+ useSpaceMenu(entries: StudioSpaceMenuEntry[]): void;
274
+ /**
275
+ * A hook: where the page stands, as the trail after the logo in the top bar ("Termine /
276
+ * Kalender"), said there instead of a heading of the page's own. Set while the page is shown.
277
+ */
278
+ useCrumbs(items: {
279
+ label: string;
280
+ to?: string;
281
+ }[]): void;
282
+ /**
283
+ * The studio's assistant stands on every page; on a plugin's page this tells it what to say
284
+ * there (title, hello, suggestions, placeholder) and what to read again when it changed
285
+ * something. It talks from the plugin's page: it gets what the server half's
286
+ * `registerAssistantContext` says and uses the plugin's assistant tools first. Place it once,
287
+ * anywhere in the page; it draws nothing.
288
+ */
289
+ Assistant: ComponentType<StudioAssistantProps>;
290
+ /**
291
+ * A hook: what the page shows, for the assistant — an open item, a selection, a summary,
292
+ * fields — and its words. Data may change on every render; it is read when the person sends.
293
+ */
294
+ useAssistantPage(page: StudioAssistantPage): void;
295
+ /**
296
+ * A hook: a tool the assistant may run in the page while it is shown. Its name is prefixed
297
+ * with the plugin's id (`shop_filter_products`). `run` gets the arguments and returns what the
298
+ * assistant learns; it may change what the page shows, never save.
299
+ */
300
+ useAssistantTool(name: string, tool: StudioAssistantTool, run: (args: Record<string, unknown>) => unknown | Promise<unknown>): void;
301
+ i18n: {
302
+ /** Takes the plugin's words and gives the function that reads them in the language in effect. */
303
+ register<M extends StudioMessages>(messages: M): (key: keyof M["de"] & string, vars?: Record<string, string | number>) => string;
304
+ lang(): StudioLang;
305
+ };
306
+ /** The plugin's own routes: `get("/")` asks `/api/studio/plugins/<id>/`. */
307
+ api: {
308
+ get<T>(path: string): Promise<T>;
309
+ post<T>(path: string, body?: unknown): Promise<T>;
310
+ put<T>(path: string, body?: unknown): Promise<T>;
311
+ patch<T>(path: string, body?: unknown): Promise<T>;
312
+ del<T>(path: string): Promise<T>;
313
+ };
314
+ /** The signed-in person. */
315
+ me(): StudioMe;
316
+ /** Something to undo when the plugin reloads. */
317
+ onUnload(dispose: () => void): void;
318
+ }
319
+ export type StudioPlugin = (studio: StudioPluginContext) => void;
320
+ /** Types the plugin; it does nothing else. */
321
+ export declare function defineStudioPlugin(plugin: StudioPlugin): StudioPlugin;
322
+ export {};
@@ -0,0 +1,4 @@
1
+ /** Types the plugin; it does nothing else. */
2
+ export function defineStudioPlugin(plugin) {
3
+ return plugin;
4
+ }
@@ -0,0 +1,174 @@
1
+ import type { PluginRuns } from "./index.js";
2
+ /**
3
+ * A thread door: a wizard run in a messenger's thread, one message at a time. The door holds
4
+ * the conversation (which field is asked, what a reply means, when a page is sent, when the
5
+ * screen takes over, what is sent at the end); a channel plugin brings the surface (how a
6
+ * question is drawn there, how a file is fetched) and the plumbing (the webhook, the thread
7
+ * rows, the keywords). WhatsApp and SMS are two surfaces of the same door.
8
+ */
9
+ export type ThreadLang = "de" | "en";
10
+ /** What the person sent, as every channel can say it. */
11
+ export interface ThreadInbound {
12
+ id: string;
13
+ /** The person's address on the channel: a number, an account. */
14
+ from: string;
15
+ name?: string | null;
16
+ at: number;
17
+ kind: "text" | "reply" | "image" | "document" | "video" | "audio" | "location" | "other";
18
+ text?: string;
19
+ /** The id of the option the person tapped, where the channel has buttons. */
20
+ replyId?: string;
21
+ replyTitle?: string;
22
+ media?: {
23
+ id: string;
24
+ mime: string;
25
+ filename?: string;
26
+ caption?: string;
27
+ };
28
+ location?: {
29
+ lat: number;
30
+ lng: number;
31
+ name?: string;
32
+ address?: string;
33
+ };
34
+ }
35
+ export interface ThreadOption {
36
+ id: string;
37
+ title: string;
38
+ /** Of a multiple choice: picked already. */
39
+ picked?: boolean;
40
+ }
41
+ /** What the door says; the surface draws it as the channel allows. */
42
+ export type ThreadPrompt = {
43
+ kind: "text";
44
+ text: string;
45
+ }
46
+ /** A question with options: buttons, a list, or numbered lines — the surface decides. A typed number or title counts as a tap. */
47
+ | {
48
+ kind: "choice";
49
+ text: string;
50
+ options: ThreadOption[];
51
+ multiple?: boolean;
52
+ button: string;
53
+ } | {
54
+ kind: "location";
55
+ text: string;
56
+ } | {
57
+ kind: "link";
58
+ text: string;
59
+ url: string;
60
+ label: string;
61
+ } | {
62
+ kind: "media";
63
+ media: "image" | "document" | "video" | "audio";
64
+ url: string;
65
+ caption?: string;
66
+ filename?: string;
67
+ };
68
+ export interface ThreadWizard {
69
+ wizardId: string;
70
+ token: string;
71
+ title: string;
72
+ lang: ThreadLang;
73
+ /** The word that starts it in the thread. */
74
+ keyword: string;
75
+ }
76
+ export interface ThreadPageDraft {
77
+ step: string;
78
+ values: Record<string, unknown>;
79
+ /** The field the last question was about. */
80
+ asking: string | null;
81
+ /** A multiple choice so far, and the files of a field that takes several. */
82
+ picks: string[];
83
+ files: string[];
84
+ }
85
+ export interface ThreadState {
86
+ lang: ThreadLang;
87
+ wizardId: string | null;
88
+ page: ThreadPageDraft | null;
89
+ /** At a review: which output to make again, then what should change. */
90
+ awaiting: "target" | "note" | null;
91
+ target: string | null;
92
+ /** What was said once already: "working on X", the review, the question, the link to the screen. */
93
+ said: string | null;
94
+ delivered: boolean;
95
+ /** The options of the last question, so a typed number or title counts as a tap. */
96
+ choices: ThreadOption[] | null;
97
+ }
98
+ export interface Thread {
99
+ /** The person's address on the channel. */
100
+ id: string;
101
+ name: string | null;
102
+ runId: string | null;
103
+ state: ThreadState;
104
+ lastInboundAt: number;
105
+ lastMessageId: string | null;
106
+ }
107
+ export declare const freshThreadState: (lang?: ThreadLang) => ThreadState;
108
+ export interface ThreadSurface {
109
+ /** The runner's id: kept on the run, and the person's channel. */
110
+ runner: string;
111
+ /** The field kinds the surface asks itself; any other on a page hands the page to the screen. */
112
+ asks: Iterable<string>;
113
+ send(thread: Thread, prompt: ThreadPrompt): Promise<void>;
114
+ /** A file the person sent, by what the inbound named. Without it, files hand off. */
115
+ media?(ref: NonNullable<ThreadInbound["media"]>): Promise<{
116
+ data: Uint8Array;
117
+ mime: string;
118
+ }>;
119
+ /** Whether something may be sent now with nobody having written (a messenger's window). Default: yes. */
120
+ mayDeliver?(thread: Thread): boolean;
121
+ /** When it may not: the link by other means (a template). True when something went out. */
122
+ reach?(thread: Thread, url: string): Promise<boolean>;
123
+ }
124
+ export interface ThreadDoorOptions {
125
+ runs: PluginRuns;
126
+ surface: ThreadSurface;
127
+ /** The wizards the door may start: the ones switched on, with their keywords. */
128
+ offered(): Promise<ThreadWizard[]>;
129
+ /** Keep hearing the run, and call `resume` for the thread when it changes. */
130
+ watch(thread: Thread): void;
131
+ unwatch(runId: string): void;
132
+ log: {
133
+ warn(...args: unknown[]): void;
134
+ };
135
+ }
136
+ /** `24.12.2026`, `24/12/26` or an ISO date, as the page's date input gives it. */
137
+ export declare function toIso(text: string): string | null;
138
+ /** Cut to a length, with an ellipsis where something was cut. */
139
+ export declare function clipText(text: string, max: number): string;
140
+ export declare class ThreadDoor {
141
+ private readonly o;
142
+ private readonly asks;
143
+ constructor(o: ThreadDoorOptions);
144
+ /** A message of the person arrived. The caller keeps the thread before and after. */
145
+ inbound(thread: Thread, given: ThreadInbound): Promise<void>;
146
+ /** The run changed while nobody wrote: a step ended, the page was filled on the screen. */
147
+ resume(thread: Thread): Promise<void>;
148
+ /** A typed number or the words of an option of the last question count as a tap on it. */
149
+ private asTap;
150
+ private report;
151
+ private start;
152
+ private stop;
153
+ private menu;
154
+ /** Where the run stands, and what to do about it. `msg`: what the person just sent, if anything. */
155
+ private step;
156
+ /** The run moved on after a command: wait a little for it, then look again. */
157
+ private after;
158
+ private page;
159
+ /** The question for a field, with the options it takes. `hint` first: what was wrong. */
160
+ private askField;
161
+ /** What the message means for the field: its value, a second try with a hint, or more to come. */
162
+ private take;
163
+ private upload;
164
+ private transcribe;
165
+ private review;
166
+ private ask;
167
+ /** The link to the run page, for what the thread cannot do. */
168
+ private handoff;
169
+ /** One output as a thread can carry it: text, pictures, documents, the picture of a widget. */
170
+ private sendOutput;
171
+ /** The run reached its end: what it made, then the link to all of it. */
172
+ private deliver;
173
+ private send;
174
+ }