@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,154 @@
1
+ /**
2
+ * A wizard translated for its viewer, on request: what the person reads is written in their
3
+ * language, what the wizard runs on stays as the author wrote it. Never translated: ids,
4
+ * branches and their statements, the instructions of AI steps, `{{…}}` placeholders, and the
5
+ * values of choices — a choice shows a translated label and keeps its value.
6
+ */
7
+ /** Fields whose `options` are choices the person reads (a slot's are dates, written by the runner). */
8
+ function choiceField(field) {
9
+ return field.kind === "select" || field.kind === "multiselect";
10
+ }
11
+ /** Every text of a definition the person reads, with the way to write it back. */
12
+ function visitTexts(def, visit, choices) {
13
+ visit(def.title, (t) => {
14
+ def.title = t;
15
+ });
16
+ visit(def.description, (t) => {
17
+ def.description = t;
18
+ });
19
+ visit(def.intro, (t) => {
20
+ def.intro = t;
21
+ });
22
+ for (const list of def.lists ?? []) {
23
+ visit(list.title, (t) => {
24
+ list.title = t;
25
+ });
26
+ visit(list.description, (t) => {
27
+ list.description = t;
28
+ });
29
+ for (const column of list.columns ?? []) {
30
+ visit(column.name, (t) => {
31
+ column.name = t;
32
+ });
33
+ const options = ("format" in column
34
+ ? column.format
35
+ : undefined)?.options;
36
+ for (const option of options ?? []) {
37
+ visit(option.label, (t) => {
38
+ option.label = t;
39
+ });
40
+ }
41
+ }
42
+ }
43
+ for (const connection of def.connections ?? []) {
44
+ visit(connection.title, (t) => {
45
+ connection.title = t;
46
+ });
47
+ visit(connection.description, (t) => {
48
+ connection.description = t;
49
+ });
50
+ }
51
+ for (const step of def.steps) {
52
+ visit(step.title, (t) => {
53
+ step.title = t;
54
+ });
55
+ visit(step.description, (t) => {
56
+ step.description = t;
57
+ });
58
+ if ("working" in step) {
59
+ visit(step.working, (t) => {
60
+ step.working = t;
61
+ });
62
+ }
63
+ // What an AI step's output fields hold: the headings a review and the result show them under.
64
+ if (step.type === "agent") {
65
+ for (const field of step.output?.fields ?? []) {
66
+ visit(field.description, (t) => {
67
+ field.description = t;
68
+ });
69
+ }
70
+ }
71
+ if (step.type === "page") {
72
+ visit(step.cta, (t) => {
73
+ step.cta = t;
74
+ });
75
+ for (const field of step.fields) {
76
+ visit(field.label, (t) => {
77
+ field.label = t;
78
+ });
79
+ visit(field.help, (t) => {
80
+ field.help = t;
81
+ });
82
+ visit(field.placeholder, (t) => {
83
+ field.placeholder = t;
84
+ });
85
+ for (const column of field.columns ?? []) {
86
+ visit(column.label, (t) => {
87
+ column.label = t;
88
+ });
89
+ }
90
+ if (choiceField(field)) {
91
+ for (const option of field.options ?? []) {
92
+ choices(option, () => undefined);
93
+ }
94
+ }
95
+ }
96
+ }
97
+ if (step.type === "result") {
98
+ visit(step.message, (t) => {
99
+ step.message = t;
100
+ });
101
+ for (const deliverable of step.deliverables) {
102
+ visit(deliverable.label, (t) => {
103
+ deliverable.label = t;
104
+ });
105
+ }
106
+ }
107
+ }
108
+ }
109
+ /** The texts of a definition the person reads, each once, in the order they appear. */
110
+ export function wizardTexts(def) {
111
+ const seen = new Set();
112
+ const add = (text) => {
113
+ if (text?.trim()) {
114
+ seen.add(text);
115
+ }
116
+ };
117
+ visitTexts(structuredClone(def), add, add);
118
+ return [...seen];
119
+ }
120
+ /** `{{…}}` placeholders and `{name}` gaps: what a translation keeps exactly. */
121
+ const KEPT = /\{\{[^}]*\}\}|\{\w+\}/g;
122
+ /** Whether a translated text keeps every placeholder and gap of its original, no more, no fewer. */
123
+ export function keepsPlaceholders(original, translated) {
124
+ const of = (text) => (text.match(KEPT) ?? []).sort().join("\u0000");
125
+ return of(original) === of(translated);
126
+ }
127
+ /** The texts of a definition a translation does not have yet. */
128
+ export function missingTexts(def, memory) {
129
+ return wizardTexts(def).filter((text) => !memory[text]);
130
+ }
131
+ /**
132
+ * The definition in the viewer's language: a copy with every text the memory has written in,
133
+ * and the labels of the choices beside it (`labels[value]`), the values untouched.
134
+ */
135
+ export function translateDefinition(def, memory) {
136
+ const copy = structuredClone(def);
137
+ const labels = {};
138
+ visitTexts(copy, (text, write) => {
139
+ const entry = text ? memory[text] : undefined;
140
+ if (entry) {
141
+ write(entry.text);
142
+ }
143
+ }, (value) => {
144
+ const entry = value ? memory[value] : undefined;
145
+ if (value && entry) {
146
+ labels[value] = entry.text;
147
+ }
148
+ });
149
+ return { def: copy, labels };
150
+ }
151
+ /** Whether every text of the memory came from the author, or some from a model. */
152
+ export function machineTranslated(memory, def) {
153
+ return wizardTexts(def).some((text) => memory[text]?.by !== "author");
154
+ }
@@ -0,0 +1,48 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * A wizard as a file, `<title>.wizard`: a zip with `wizard.json` — the definition and what it
4
+ * needs from its project — and the workspace under `files/`. What belongs to people (runs, lists, connected
5
+ * accounts) and to the project (brand, credentials) stays where it is.
6
+ */
7
+ export declare const PACKAGE_FORMAT = "engenty-wizard";
8
+ export declare const PACKAGE_MANIFEST = "wizard.json";
9
+ export declare const PACKAGE_FILES = "files/";
10
+ export declare const PACKAGE_EXTENSION = ".wizard";
11
+ /** A type of its own: under `application/zip` a browser may save the file as `.zip`. */
12
+ export declare const PACKAGE_MIME = "application/vnd.engenty.wizard+zip";
13
+ /** The workspace's 25 MB, with room for the manifest and the zip's own overhead. */
14
+ export declare const PACKAGE_MAX_BYTES = 30000000;
15
+ /**
16
+ * Where the JSON Schemas of both are published (the docs site's public folder, written by
17
+ * `pnpm schema`, answered at engenty.ai/schema/…). One folder per definition version: a breaking
18
+ * change adds the next and keeps the old. The package's schema holds the definition's, so it sits
19
+ * beside it.
20
+ */
21
+ export declare const SCHEMA_BASE_URL: string;
22
+ export declare const WIZARD_SCHEMA_URL: string;
23
+ export declare const PACKAGE_SCHEMA_URL: string;
24
+ export declare const manifestSchema: z.ZodObject<{
25
+ $schema: z.ZodOptional<z.ZodString>;
26
+ format: z.ZodLiteral<"engenty-wizard">;
27
+ version: z.ZodLiteral<1>;
28
+ exportedAt: z.ZodOptional<z.ZodString>;
29
+ definition: z.ZodUnknown;
30
+ connectors: z.ZodDefault<z.ZodArray<z.ZodObject<{
31
+ id: z.ZodString;
32
+ name: z.ZodString;
33
+ domain: z.ZodOptional<z.ZodString>;
34
+ sourceKind: z.ZodOptional<z.ZodEnum<{
35
+ mcp: "mcp";
36
+ openapi: "openapi";
37
+ }>>;
38
+ }, z.core.$strip>>>;
39
+ mcpServers: z.ZodDefault<z.ZodArray<z.ZodObject<{
40
+ id: z.ZodString;
41
+ name: z.ZodString;
42
+ }, z.core.$strip>>>;
43
+ knowledge: z.ZodOptional<z.ZodObject<{
44
+ pages: z.ZodNumber;
45
+ truncated: z.ZodBoolean;
46
+ }, z.core.$strip>>;
47
+ }, z.core.$strip>;
48
+ export type Manifest = z.infer<typeof manifestSchema>;
@@ -0,0 +1,49 @@
1
+ import { z } from "zod";
2
+ import { DEFINITION_VERSION } from "./definition.js";
3
+ /**
4
+ * A wizard as a file, `<title>.wizard`: a zip with `wizard.json` — the definition and what it
5
+ * needs from its project — and the workspace under `files/`. What belongs to people (runs, lists, connected
6
+ * accounts) and to the project (brand, credentials) stays where it is.
7
+ */
8
+ export const PACKAGE_FORMAT = "engenty-wizard";
9
+ export const PACKAGE_MANIFEST = "wizard.json";
10
+ export const PACKAGE_FILES = "files/";
11
+ export const PACKAGE_EXTENSION = ".wizard";
12
+ /** A type of its own: under `application/zip` a browser may save the file as `.zip`. */
13
+ export const PACKAGE_MIME = "application/vnd.engenty.wizard+zip";
14
+ /** The workspace's 25 MB, with room for the manifest and the zip's own overhead. */
15
+ export const PACKAGE_MAX_BYTES = 30_000_000;
16
+ /**
17
+ * Where the JSON Schemas of both are published (the docs site's public folder, written by
18
+ * `pnpm schema`, answered at engenty.ai/schema/…). One folder per definition version: a breaking
19
+ * change adds the next and keeps the old. The package's schema holds the definition's, so it sits
20
+ * beside it.
21
+ */
22
+ export const SCHEMA_BASE_URL = `https://engenty.ai/schema/v${DEFINITION_VERSION}`;
23
+ export const WIZARD_SCHEMA_URL = `${SCHEMA_BASE_URL}/wizard.json`;
24
+ export const PACKAGE_SCHEMA_URL = `${SCHEMA_BASE_URL}/wizard-package.json`;
25
+ export const manifestSchema = z.object({
26
+ /** The JSON Schema an editor checks the file against; the app does not read it. */
27
+ $schema: z.string().optional(),
28
+ format: z.literal(PACKAGE_FORMAT),
29
+ version: z.literal(1),
30
+ exportedAt: z.string().optional(),
31
+ definition: z.unknown(),
32
+ /** Imported connectors the wizard's connections name. No address: one pasted by hand can hold a secret. */
33
+ connectors: z
34
+ .array(z.object({
35
+ id: z.string().max(60),
36
+ name: z.string().max(120),
37
+ domain: z.string().max(253).optional(),
38
+ sourceKind: z.enum(["openapi", "mcp"]).optional(),
39
+ }))
40
+ .max(50)
41
+ .default([]),
42
+ /** Project MCP servers the wizard's steps name — by name only, their address and headers are credentials. */
43
+ mcpServers: z
44
+ .array(z.object({ id: z.string().max(31), name: z.string().max(60) }))
45
+ .max(10)
46
+ .default([]),
47
+ /** The project's pages under `files/knowledge/`, when they were asked for: how many, and whether the cap cut some. */
48
+ knowledge: z.object({ pages: z.number().int(), truncated: z.boolean() }).optional(),
49
+ });
@@ -0,0 +1,16 @@
1
+ /** A file in a wizard's workspace. The content lives in the blob store under its hash. */
2
+ export interface WorkspaceFile {
3
+ path: string;
4
+ hash: string;
5
+ mime: string;
6
+ size: number;
7
+ }
8
+ export declare const WORKSPACE_LIMITS: {
9
+ fileBytes: number;
10
+ totalBytes: number;
11
+ files: number;
12
+ };
13
+ /** Relative, forward slashes, no `..`, no hidden files. Returns the normalised path or null. */
14
+ export declare function cleanPath(raw: string): string | null;
15
+ export declare function mimeForPath(path: string): string;
16
+ export declare function isTextMime(mime: string): boolean;
@@ -0,0 +1,51 @@
1
+ export const WORKSPACE_LIMITS = {
2
+ fileBytes: 5_000_000,
3
+ totalBytes: 25_000_000,
4
+ files: 200,
5
+ };
6
+ const PATH_RE = /^[A-Za-z0-9_-][A-Za-z0-9_.-]*(\/[A-Za-z0-9_-][A-Za-z0-9_.-]*)*$/;
7
+ /** Relative, forward slashes, no `..`, no hidden files. Returns the normalised path or null. */
8
+ export function cleanPath(raw) {
9
+ const path = raw.trim().replace(/^\.?\/+/, "");
10
+ if (path.length > 200 || !PATH_RE.test(path) || path.split("/").some((p) => p === "..")) {
11
+ return null;
12
+ }
13
+ return path;
14
+ }
15
+ const MIME_BY_EXT = {
16
+ html: "text/html",
17
+ htm: "text/html",
18
+ js: "text/javascript",
19
+ mjs: "text/javascript",
20
+ css: "text/css",
21
+ json: "application/json",
22
+ geojson: "application/geo+json",
23
+ csv: "text/csv",
24
+ txt: "text/plain",
25
+ md: "text/markdown",
26
+ svg: "image/svg+xml",
27
+ png: "image/png",
28
+ jpg: "image/jpeg",
29
+ jpeg: "image/jpeg",
30
+ webp: "image/webp",
31
+ gif: "image/gif",
32
+ woff: "font/woff",
33
+ woff2: "font/woff2",
34
+ ttf: "font/ttf",
35
+ otf: "font/otf",
36
+ mp3: "audio/mpeg",
37
+ wav: "audio/wav",
38
+ mp4: "video/mp4",
39
+ webm: "video/webm",
40
+ pdf: "application/pdf",
41
+ };
42
+ export function mimeForPath(path) {
43
+ const ext = path.split(".").pop()?.toLowerCase() ?? "";
44
+ return MIME_BY_EXT[ext] ?? "application/octet-stream";
45
+ }
46
+ export function isTextMime(mime) {
47
+ return (mime.startsWith("text/") ||
48
+ mime === "application/json" ||
49
+ mime === "application/geo+json" ||
50
+ mime === "image/svg+xml");
51
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "name": "@engenty-wizards/shared",
3
+ "version": "0.1.0",
4
+ "license": "FSL-1.1-MIT",
5
+ "type": "module",
6
+ "exports": {
7
+ "./engenty/data-tables": "./dist/engenty/data-tables/index.js",
8
+ "./*": "./dist/*.js"
9
+ }
10
+ }
package/package.json CHANGED
@@ -1,6 +1,79 @@
1
1
  {
2
2
  "name": "@engenty/wizards-runtime",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.7.5",
4
+ "description": "Make a wish. Get your wizard. It guides you step by step. Let AI do the work. Runs on your machine, on the AI subscription you already have. The runtime, which `npx wizards` installs.",
5
+ "license": "FSL-1.1-MIT",
6
+ "homepage": "https://engenty.ai",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/engenty/wizards.git"
10
+ },
11
+ "type": "module",
12
+ "bin": {
13
+ "wizards": "bin/wizards.mjs"
14
+ },
15
+ "engines": {
16
+ "node": ">=24.11"
17
+ },
18
+ "os": [
19
+ "darwin",
20
+ "linux"
21
+ ],
22
+ "files": [
23
+ "apps",
24
+ "bin",
25
+ "modules",
26
+ "plugin"
27
+ ],
28
+ "dependencies": {
29
+ "@ai-sdk/anthropic": "4.0.54",
30
+ "@ai-sdk/elevenlabs": "3.0.42",
31
+ "@ai-sdk/fal": "3.0.42",
32
+ "@ai-sdk/gateway": "4.0.82",
33
+ "@ai-sdk/google": "4.0.72",
34
+ "@ai-sdk/openai": "4.0.67",
35
+ "@ai-sdk/replicate": "3.0.42",
36
+ "@clack/prompts": "1.8.1",
37
+ "@engenty-wizards/shared": "0.1.0",
38
+ "@engenty/wizards": "0.1.0",
39
+ "@executor-js/plugin-openapi": "1.6.10",
40
+ "@hono/node-server": "2.1.3",
41
+ "@libsql/client": "0.18.0",
42
+ "@mastra/core": "1.77.0",
43
+ "@mastra/docker": "0.8.0",
44
+ "@mastra/mcp": "2.4.0",
45
+ "@modelcontextprotocol/client": "2.2.0",
46
+ "@modelcontextprotocol/ext-apps": "2.0.3",
47
+ "@modelcontextprotocol/server": "2.2.0",
48
+ "@napi-rs/canvas": "0.1.80",
49
+ "@turbodocx/html-to-docx": "1.23.1",
50
+ "ai": "7.0.102",
51
+ "aws4fetch": "1.0.20",
52
+ "drizzle-orm": "0.45.3",
53
+ "effect": "4.0.0-beta.59",
54
+ "exceljs": "4.4.0",
55
+ "fast-xml-parser": "5.11.2",
56
+ "fflate": "0.8.3",
57
+ "hono": "4.13.12",
58
+ "imapflow": "2.2.1",
59
+ "jiti": "2.7.0",
60
+ "jose": "6.2.12",
61
+ "mammoth": "1.13.0",
62
+ "marked": "18.0.14",
63
+ "nanoid": "5.1.16",
64
+ "pdf-parse": "2.4.5",
65
+ "playwright-core": "1.63.0",
66
+ "postal-mime": "4.0.2",
67
+ "rfc6902": "5.3.0",
68
+ "turndown": "7.2.4",
69
+ "undici": "7.30.0",
70
+ "zod": "4.6.5"
71
+ },
72
+ "optionalDependencies": {
73
+ "node-pty": "1.1.0"
74
+ },
75
+ "bundleDependencies": [
76
+ "@engenty/wizards",
77
+ "@engenty-wizards/shared"
78
+ ]
79
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "engenty-wizards",
3
+ "displayName": "engenty wizards",
4
+ "version": "{{VERSION}}",
5
+ "description": "Build page-by-page AI wizards that people open on a shared link — designed, tested and published from Claude Code — and run your published ones right in the chat.",
6
+ "author": { "name": "engenty" },
7
+ "homepage": "{{APP_URL}}",
8
+ "keywords": ["wizards", "forms", "ai-workflows", "mcp"]
9
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "engenty-wizards": {
4
+ "type": "http",
5
+ "url": "{{APP_URL}}/api/mcp"
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,8 @@
1
+ ---
2
+ description: Build an engenty wizard from a description
3
+ argument-hint: <what the wizard should do>
4
+ ---
5
+
6
+ Build an engenty wizard for this: $ARGUMENTS
7
+
8
+ Use the build-wizard skill: read the authoring guide, start from the closest starter, create the wizard, fix every issue, run one test with realistic answers, and give me the studio link. Do not publish unless I ask.
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: build-wizard
3
+ description: Build or change an engenty wizard — a page-by-page AI flow that people open on a shared link (questions, research, texts, images, video, documents, dashboards, writes into other systems). Use when the user wants such a wizard, a guided form with AI steps, or wants to change, test or publish one.
4
+ ---
5
+
6
+ # Build an engenty wizard
7
+
8
+ You work with the `engenty-wizards` MCP tools. The person you talk to is the ADMIN; the people who later open the wizard's link are END USERS.
9
+
10
+ 1. **Read the guide first.** Call `get_authoring_guide` once per conversation. It holds the JSON schema, the design rules and the project's connected systems. Follow it.
11
+ 2. **Start from an example.** `list_starters`, then `get_starter` for the closest one. For an existing wizard, use `list_wizards` and `get_wizard`.
12
+ 3. **Write it.**
13
+ - Use `create_wizard` with the full definition and a short `note` in the admin's language. The admin sees that note in the studio.
14
+ - Change it with `edit_wizard` ops (`set_meta`, `upsert_step`, `remove_step`, `move_step`). Pass the `revision` you last read as `baseRevision`.
15
+ - Keep going until `issues` is empty. On `revision_conflict`, call `get_wizard` again and redo your change on top. The admin may be editing in the studio at the same time.
16
+ 4. **Test it.**
17
+ - `start_test_run` takes realistic `answers`: field id → value, for every page. Then call `get_test_run` with `waitSeconds: 45` until the status is no longer `running`.
18
+ - Read the outputs and open the download links. Fix what is weak, then test again.
19
+ - Test runs spend the admin's credits: short copy with an image costs about 15, research about 150, an 8-second video about 250. Ask before running video or heavy research more than once.
20
+ 5. **Hand over.** Give the admin the `studioUrl`; the studio shows the wizard as a diagram and updates live while you edit. Publish with `publish_wizard` only when the admin asks. Then share the `shareUrl`.
21
+
22
+ Design rules the guide expands on:
23
+ - Few pages with 1–5 questions each, phrased in plain words.
24
+ - Put a review step before anything expensive and before the result.
25
+ - Totals come from an `items` field with VAT, never from a model.
26
+ - Facts come from `web_search` and `web_fetch` before anything is written.
27
+ - Write every text in the admin's language.
@@ -0,0 +1,18 @@
1
+ ---
2
+ name: use-wizard
3
+ description: Run one of the person's published engenty wizards here in the chat — a social post with an image, a research briefing, an offer, a video ad … page by page, with its review and its downloads. Use when the person wants something one of their wizards makes, names a wizard, or asks what their wizards can do.
4
+ ---
5
+
6
+ # Use an engenty wizard
7
+
8
+ You work with the `engenty-wizards` MCP tools. The person you talk to runs the wizard; their answers fill its pages.
9
+
10
+ 1. **Find it.** `list_wizards` lists the person's wizards; only `published` ones run. `show_wizard` only when the person wants to see a wizard before running it: apps that show MCP Apps show it as it greets a person, with its flow one click away.
11
+ 2. **Start it.** `run_wizard` straight away; apps that show MCP Apps show the wizard itself, page by page, and the person may answer there. What the person already said for the first page goes in with `answer_page`, using the field ids in `waitingFor`. Runs spend credits like any run of the wizard.
12
+ 3. **Follow `waitingFor`.**
13
+ - `page`: ask for the fields with `inChat: true`, in the person's words, then `answer_page`. Fields with `inChat: false` (files, recordings, signatures, line items) need the run page: hand over `browserUrl`.
14
+ - `review`: show the outputs (texts, image links), then `review_step`: accept, or regenerate one with the person's note.
15
+ - `ask`: a step wants to change something in a connected account. Ask the person, then `answer_ask` with `allow` or `skip`. A sign-in happens on the run page (`browserUrl`).
16
+ - Nothing, status `running`: `get_run` with `waitSeconds: 45`, again until it changes.
17
+ 4. **In a widget.** When the app shows the run as a widget, the person may answer there instead of in the chat. Call `get_run` before you ask again, so you never ask for a page that is already answered.
18
+ 5. **Hand over.** When the status is `done`, give the outputs and their download links (valid one hour). `failed`: say what went wrong; `control_run` with `retry` tries the step again.