@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,139 @@
1
+ ---
2
+ title: Tools
3
+ description: A tool an AI step can call – how to register it, how a wizard lists it, and what the model sees.
4
+ version: 0.5.0
5
+ ---
6
+
7
+ A tool is a function an AI step may call while it works. The model decides when, from the
8
+ tool’s description.
9
+
10
+ ```ts
11
+ server.registerTool({
12
+ name: "lookup",
13
+ title: "Contacts",
14
+ description:
15
+ "Looks a person up by email among the people who ran a wizard of this space before.",
16
+ inputSchema: z.object({ email: z.string().email() }),
17
+ execute: async ({ email }) => {
18
+ const [found] = await db()
19
+ .select()
20
+ .from(person)
21
+ .where(eq(person.email, email.toLowerCase()));
22
+ return found ? { known: true, name: found.name, lastWizard: found.wizard } : { known: false };
23
+ },
24
+ });
25
+ ```
26
+
27
+ | Field | |
28
+ |---|---|
29
+ | `name` | Lower case, digits and `_`, starting with a letter, at most 40 characters. Unique in the plugin, its [space tools](./space.md#a-block-for-every-ai-step) included |
30
+ | `title` | What the editor calls it. Default: the name |
31
+ | `description` | For the model: what the tool does and when to use it. The assistant reads it too when it builds a wizard |
32
+ | `inputSchema` | A zod schema. `.describe()` on a field tells the model what to put there |
33
+ | `execute(input, step)` | Returns what the model gets back: anything that can be JSON |
34
+
35
+ ## Names
36
+
37
+ | Where | The tool is called |
38
+ |---|---|
39
+ | A step’s `tools` in a wizard | `contacts.lookup`: `<plugin id>.<tool name>` |
40
+ | The model | `contacts_lookup`. A `-` in the plugin’s id becomes `_`: `run-log.recent` is `run_log_recent` |
41
+ | The editor | Its `title` |
42
+
43
+ ## What `execute` knows
44
+
45
+ The second argument is the step that calls the tool:
46
+
47
+ | | |
48
+ |---|---|
49
+ | `step.runId`, `step.stepId` | The run and the step |
50
+ | `step.tenantId` | The tenant |
51
+ | `step.space` | `{ id, name }`: the space of the step’s wizard |
52
+ | `step.project` | The same as `step.space`, by its older name |
53
+ | `step.wizard` | `{ id, title }` |
54
+ | `step.mode` | `"test"` for a test run from the studio, else `"live"`. Keep what a test run makes apart, such as a booking or a message to someone outside |
55
+ | `step.signal` | Aborted when the run is cancelled. Pass it to `fetch` |
56
+ | `step.emit(message)` | Tells the person what the step is doing right now |
57
+
58
+ `server.getTenantDb()` inside `execute` is the database of the tenant the run belongs to.
59
+
60
+ ```ts
61
+ execute: async ({ url }, step) => {
62
+ await step.emit("Asking the price list …");
63
+ const response = await fetch(url, { signal: step.signal });
64
+ return response.json();
65
+ },
66
+ ```
67
+
68
+ ## Errors
69
+
70
+ An error thrown in `execute` does not fail the step. The model gets `{ "error": "<message>" }`
71
+ as the tool’s result, with the first 400 characters of the message, and can try again or work
72
+ around it. Throw errors whose message says what was wrong with the input.
73
+
74
+ ## In a wizard
75
+
76
+ A step lists the tool beside the built-in ones:
77
+
78
+ ```json
79
+ "tools": ["web_search", "contacts.lookup"]
80
+ ```
81
+
82
+ - The editor offers the tools of the tenant’s plugins in every AI step.
83
+ - The assistant and the MCP authoring guide list them with their descriptions.
84
+ - A draft with a step that lists a tool this tenant does not have shows an issue.
85
+ - A run fails at the step that names such a tool, with “This step needs the tool “…”. The
86
+ plugin “…” isn’t installed here.” A wizard that uses a plugin’s tool runs only where that
87
+ plugin is installed. Keep that in mind before you publish a wizard to the cloud or export it.
88
+ - The model has to call the tools. Apple Intelligence on a Mac calls none: a step whose class it
89
+ answers (Classifier, Standard) runs from its prompt alone. A step that needs the tool runs on
90
+ High, or a [call without a model](#called-without-a-model) does the job.
91
+
92
+ ### Called without a model
93
+
94
+ Where a step only fetches data and hands it on unchanged, it can call the tool itself: no model
95
+ picks the tool, and no model copies its answer.
96
+
97
+ ```json
98
+ {
99
+ "id": "known",
100
+ "type": "agent",
101
+ "title": "Known contact",
102
+ "call": {
103
+ "tool": "contacts.lookup",
104
+ "input": { "email": "{{steps.ask.email}}" }
105
+ },
106
+ "output": {
107
+ "format": "json",
108
+ "fields": [
109
+ { "id": "known", "kind": "yesno" },
110
+ { "id": "name", "kind": "text" }
111
+ ]
112
+ }
113
+ }
114
+ ```
115
+
116
+ - The tool’s answer is the step’s json output, as it is. An answer that is not an object (a
117
+ list, a text) is kept as `{ "result": … }`. `output.fields` name the keys later steps read,
118
+ so the editor and the checks know them.
119
+ - String inputs are templates. A template that fills in to a number or to `true`/`false` is
120
+ passed as one, and an empty one is left out. The input is checked against the tool’s schema.
121
+ - What the tool throws, or an answer that is only `{ "error": … }`, is the step’s error. A tool
122
+ this tenant does not have fails the step too.
123
+ - It costs no credits and answers as fast as the tool: the free times of a calendar in under a
124
+ second instead of half a minute.
125
+
126
+ ## While a step runs
127
+
128
+ A step that is running keeps the tools it started with. When a plugin loads again, the change
129
+ reaches the next step.
130
+
131
+ ## Write a good tool
132
+
133
+ - One job per tool. Two small tools are easier for a model to choose between than one with a
134
+ `mode` field.
135
+ - Describe the result as well as the input: “returns the working days as a number”.
136
+ - Return data, not prose. The step writes the sentences.
137
+ - Bound what it returns: a `limit` with a maximum, the newest 50 rows.
138
+ - A tool that changes something outside says so in its description. There is no
139
+ ask-the-person-first for plugin tools: the step runs them without asking.
@@ -0,0 +1,125 @@
1
+ ---
2
+ title: The wizard format
3
+ description: A wizard as JSON and as a .wizard file, its JSON Schema, and checking it with wizards validate.
4
+ version: 0.5.13
5
+ ---
6
+
7
+ A wizard is one JSON document, its **definition**. The studio exports it as a `.wizard` file
8
+ and imports one back. You can write either by hand or with a tool, check it in your editor
9
+ against a JSON Schema, and check it completely with `wizards validate`.
10
+
11
+ The code that defines the format and checks it is also under the
12
+ [MIT licence](https://github.com/engenty/wizards/blob/main/packages/shared/LICENSE-MIT), so any
13
+ tool may read and write wizards.
14
+
15
+ ## The definition
16
+
17
+ ```json
18
+ {
19
+ "$schema": "https://engenty.ai/schema/v1/wizard.json",
20
+ "version": 1,
21
+ "title": "Create an invoice",
22
+ "description": "A finished invoice from a few details.",
23
+ "avatar": "round",
24
+ "lang": "en",
25
+ "steps": [ … ]
26
+ }
27
+ ```
28
+
29
+ `steps` run from top to bottom, and the last one is always a `result` step. The schema below
30
+ lists the step types and their fields. The studio’s MCP tool `get_authoring_guide` explains them
31
+ with a complete example.
32
+
33
+ `lang` is the language the wizard speaks to people, as a two-letter code: `en`, `de`, `it`, `fr`
34
+ and so on. The schema checks the shape of the code; `wizards validate` and the studio check that
35
+ it names a real language. It sets the runner’s own words and how numbers and dates are written.
36
+ Without it, the language is read from the wizard’s own words, and English is the default where
37
+ they are not clearly German.
38
+
39
+ `version` is the definition’s version. It changes only with a breaking change; the schemas of
40
+ each version stay online in their own folder (`/schema/v1/`, `/schema/v2/`, …).
41
+
42
+ ## The `.wizard` file
43
+
44
+ The file is a zip with two things in it:
45
+
46
+ | Path | What it holds |
47
+ |---|---|
48
+ | `wizard.json` | The manifest: the definition, plus what the wizard needs from its space |
49
+ | `files/…` | The wizard’s workspace: widget pages, templates, images. At most 200 files and 25 MB |
50
+ | `files/knowledge/…` | Only when the export was asked for it: the space’s Knowledge pages as Markdown files, one per page, with its title in front. A website runs the wizard with them, without the space |
51
+
52
+ ```json
53
+ {
54
+ "$schema": "https://engenty.ai/schema/v1/wizard-package.json",
55
+ "format": "engenty-wizard",
56
+ "version": 1,
57
+ "definition": { … },
58
+ "connectors": [{ "id": "billomat", "name": "Billomat", "domain": "billomat.com" }],
59
+ "mcpServers": [{ "id": "notion", "name": "Notion" }]
60
+ }
61
+ ```
62
+
63
+ `connectors` and `mcpServers` (the space’s connected systems) name what the wizard’s steps use
64
+ from its space, without addresses or credentials. When the space you import into lacks one, the
65
+ import says so.
66
+
67
+ `knowledge` (`{ "pages": 12, "truncated": false }`) is there when the export took the space’s
68
+ pages along. It says how many there are and whether the cap of about 2 MB left some out. The
69
+ share dialog’s website package does this with “Take the knowledge along”.
70
+
71
+ The import also takes a `wizard.json` on its own, or a definition on its own.
72
+ The file’s media type is `application/vnd.engenty.wizard+zip`.
73
+
74
+ ## JSON Schema
75
+
76
+ | For | Schema |
77
+ |---|---|
78
+ | A definition | [`https://engenty.ai/schema/v1/wizard.json`](https://engenty.ai/schema/v1/wizard.json) |
79
+ | `wizard.json` in a package | [`https://engenty.ai/schema/v1/wizard-package.json`](https://engenty.ai/schema/v1/wizard-package.json) |
80
+
81
+ Put the address under `"$schema"`, and editors such as VS Code complete keys and mark mistakes
82
+ as you type. The studio’s export writes it into every `wizard.json`.
83
+
84
+ The schemas are written from the code that reads wizards, so they match it. They are stricter
85
+ in one way: a key the app does not know is an error. The app would drop such a key without a
86
+ word.
87
+
88
+ `wizards validate` checks what a JSON Schema cannot say: unique ids, steps and fields that refer
89
+ to each other, templates that name answers that exist by then, and files in the workspace.
90
+
91
+ ## `wizards validate`
92
+
93
+ ```bash
94
+ wizards validate invoice.wizard
95
+ ```
96
+
97
+ It checks a wizard the way the studio’s import does, without a running studio and without an
98
+ account. It takes any number of paths:
99
+
100
+ | Path | Read as |
101
+ |---|---|
102
+ | `invoice.wizard` | A package |
103
+ | `invoice/` or `invoice/wizard.json` | An unpacked package, its workspace under `invoice/files/` |
104
+ | `invoice.json` | A definition on its own, or a `wizard.json` |
105
+
106
+ ```text
107
+ ✗ invoice.json 2 issues
108
+ The last step must be a result step.
109
+ "{{nope}}" refers to a field that is not asked before "g".
110
+ ```
111
+
112
+ A wizard without issues gets a ✓ with its number of steps and files. `--json` prints the
113
+ results as JSON. The exit code is `0` when every wizard is fine, `1` when one has issues and `2`
114
+ when no path was given. That is enough for a check in CI:
115
+
116
+ ```bash
117
+ npx wizards validate wizards/*.wizard
118
+ ```
119
+
120
+ `npx wizards` installs engenty wizards into `~/.engenty/wizards` first, the first time. To check
121
+ without an install, on Node.js 24.11 or newer, run the runtime from npm directly:
122
+ `npx -p @engenty/wizards-runtime wizards validate wizards/*.wizard`.
123
+
124
+ The import checks what belongs to the space, because only the space has it: its connectors and
125
+ their actions, its connected systems (MCP servers) and its plugins’ tools.
@@ -0,0 +1,3 @@
1
+ {
2
+ "pages": ["user", "dev"]
3
+ }
@@ -0,0 +1,112 @@
1
+ ---
2
+ title: AI apps
3
+ description: Run and build your wizards inside Claude Desktop, Cursor, Codex and other AI apps.
4
+ version: 0.5.0
5
+ ---
6
+
7
+ Settings → Integrate brings your wizards to where you work. engenty wizards is an MCP server: an
8
+ AI app that adds it gets the tools to find, run and build wizards. Under “Share”, the same page
9
+ has the WordPress plugin: see [WordPress](./wordpress.md).
10
+
11
+ ## What an app can do
12
+
13
+ | In the chat | How |
14
+ |---|---|
15
+ | Run a wizard | “Start one of my engenty wizards.” The app asks the wizard’s questions, shows the review and hands over the downloads. Only published wizards run |
16
+ | See the wizard itself | Apps that support MCP Apps show the wizard as a widget, page by page, and you answer there |
17
+ | Build a wizard | “Use engenty wizards to build a wizard that reads amount, date and sender from an invoice PDF.” |
18
+ | Change one | The app can create, change and publish wizards, find templates and connectors, and read and write a wizard’s files |
19
+
20
+ - A run in a chat spends what any run of the wizard spends, and so does a test run.
21
+ - What a chat can’t fill in (files, recordings, signatures, line items) you fill in on the run’s
22
+ page in the browser. The app gives you the link.
23
+ - What an app writes shows up live in an open editor, marked with the app’s name (“Via …”).
24
+
25
+ ## Apps
26
+
27
+ | App | Shows the wizard as a widget | Name for the command |
28
+ |---|---|---|
29
+ | Claude Desktop | yes | `claude-desktop` |
30
+ | Claude Code | no, a run comes as text | `claude-code` |
31
+ | Codex · ChatGPT app | no | `codex` |
32
+ | Cursor | yes | `cursor` |
33
+ | VS Code (Copilot) | yes | `vscode` |
34
+ | Windsurf | no | `windsurf` |
35
+ | Antigravity | no | `antigravity` |
36
+ | Goose | yes | `goose` |
37
+ | OpenClaw | no | `openclaw` |
38
+ | LM Studio | no | `lm-studio` |
39
+ | claude.ai, ChatGPT | yes | not on your computer, see below |
40
+
41
+ ## Add an app
42
+
43
+ Settings → Integrate opens on the apps found on this computer. Each one has a button and says
44
+ where it stands: “Works”, “Added, not tested yet” or “Not set up yet”. The dots in the menu say
45
+ the same.
46
+
47
+ Choose an app and follow its numbered steps:
48
+
49
+ 1. **Add to …** writes engenty wizards into the app’s settings. You need no key and no port: the
50
+ app starts engenty wizards itself.
51
+ 2. **Restart …**, or reload the app’s MCP servers. The page notices by itself when the app
52
+ checks in.
53
+ 3. **Try it in the chat**: “Which wizards do I have in engenty?”
54
+
55
+ Once the app has used a tool, the page says “Works” and offers first sentences to try, with your
56
+ own wizards’ names.
57
+
58
+ From a terminal, this command does the same as step 1:
59
+
60
+ ```bash
61
+ wizards connect
62
+ ```
63
+
64
+ It adds every AI app found on this computer. To add only some apps, name them. To take an app
65
+ out again, use `disconnect`:
66
+
67
+ ```bash
68
+ wizards connect cursor codex
69
+ wizards disconnect cursor
70
+ ```
71
+
72
+ - The app’s settings file as it was before is kept beside it as `<file>.before-engenty`.
73
+ - If Claude Desktop is running, the command asks you to quit it first: it writes its settings
74
+ from memory while it runs and would overwrite the change.
75
+ - A settings file that isn’t plain JSON is left alone. The command prints the entry for you to
76
+ paste in yourself.
77
+
78
+ ## An app on another computer
79
+
80
+ Under the steps, “Connect with the address and an API key” is for an app that runs elsewhere.
81
+ The API key is shown once and goes straight into the command or settings entry the page shows.
82
+
83
+ - Each API key signs in one app and has full rights. Treat it like a password.
84
+ - The page lists the API keys with their last use. When you delete one, that app is signed out.
85
+
86
+ ## Apps on the web
87
+
88
+ claude.ai and ChatGPT connect from their makers’ servers, and so do Claude Desktop’s
89
+ connectors. They can’t reach your computer, so for them your wizards run on engenty.ai.
90
+
91
+ - **In the studio on engenty.ai**, the page walks you through it: open the app’s connector
92
+ settings, enter the name and the address `https://engenty.ai/api/mcp`, click “Connect”, sign
93
+ in to engenty and choose “Allow”. You need no key.
94
+ - **On your computer**, connect your engenty account first (“Connect to engenty.ai”). The wizards
95
+ you publish then go to engenty.ai, and claude.ai connects there. If you’d rather not use an
96
+ account, use Claude Desktop on this computer.
97
+
98
+ The consent page names the team the access is for and the address it goes back to. An app that
99
+ only named itself is marked “Name given by the app itself”.
100
+
101
+ You disconnect an app at engenty.ai under Account → Connected apps. Its access ends within half
102
+ a minute, even with a token it already holds.
103
+
104
+ ## The Claude Code plugin
105
+
106
+ If engenty wizards has a public https address, Claude Code can also install a plugin. It adds
107
+ the `/wizard` command and the skills to build and use wizards:
108
+
109
+ ```bash
110
+ claude plugin marketplace add <your address>/api/claude-plugin/marketplace.json
111
+ claude plugin install engenty-wizards@engenty
112
+ ```
@@ -0,0 +1,77 @@
1
+ ---
2
+ title: Goose, the help assistant
3
+ description: The chat at the bottom of every studio page. Goose knows engenty wizards, sees the page you are on, shows you where things are and fills in the space.
4
+ version: 0.5.0
5
+ ---
6
+
7
+ Goose is still being tried out and doesn’t show in every studio yet. Where it is switched on, it
8
+ works as described here.
9
+
10
+ Goose stands at the bottom of every page of the studio except the editor, which has a chat of its
11
+ own: the assistant that builds your wizard. Goose runs on the High class of Text & reasoning:
12
+ your subscription, your own API keys or your credits ([Models and account](./models.md)).
13
+
14
+ | Ask it | Goose |
15
+ |---|---|
16
+ | How something works | Reads this guide (the version you installed) and links the page |
17
+ | Where something is | Opens the page and points at the place |
18
+ | About your account | Looks up your plan, credits and what you used. It never buys or upgrades anything |
19
+ | About templates | Searches the templates and shows the ones it recommends as cards under its answer. A card opens the template, and you start a wizard from it there |
20
+ | About your wizards | Looks at their runs, the failed ones too |
21
+ | About models | Says which models are set up here, and what is missing |
22
+ | To fill in the space | Reads a website or your files ([Space](./space.md#have-it-filled-in)) |
23
+
24
+ Goose sees the page you write from: where you are, what is open and what the page shows. It may
25
+ put a value into a field for you; you check it and save. It doesn’t click buttons.
26
+
27
+ ## Where it stands
28
+
29
+ | | |
30
+ |---|---|
31
+ | At the bottom | The default. Click the field, and the chat rises above it |
32
+ | Closed | ✕ in the header closes it to “Ask Goose” at the lower right. A click opens the chat where it last stood. On Data and Results it starts there |
33
+ | Sidebar | Beside the page, in a window 1,520 pixels wide or more |
34
+
35
+ The buttons in the chat’s header (“As a sidebar”, “Dock at the bottom”) switch between them. The
36
+ studio remembers your choice.
37
+
38
+ At the bottom, you can move the chat out of the way of what it covers: drag it by its grip, or by
39
+ Goose sitting on top of it. It stays where you put it. Near the bottom it snaps to the middle or
40
+ the right. Near the right side, higher up, it becomes the sidebar, and the sidebar’s grip pulls it
41
+ out again. A dashed outline shows where it will snap. The handle on top of the chat sets how tall
42
+ the chat history is; a click on it folds the history away.
43
+
44
+ ## Writing while it works
45
+
46
+ You can keep writing while Goose answers. What you send waits above the field:
47
+
48
+ | | |
49
+ |---|---|
50
+ | Enter | Goose reads it before its next step. It keeps to what you asked before unless the new message changes it |
51
+ | ⌘↩ (Ctrl+↩) | It goes out as the next question once the answer is done |
52
+ | “Send now” | Stops Goose and sends it at once |
53
+
54
+ While Goose answers and the field is empty, the stop button stands where “Send” does.
55
+
56
+ ## One chat
57
+
58
+ You have one chat. It is the same on every page and in every space, after a reload and on another
59
+ device. Nobody else in the team sees it.
60
+
61
+ - **“New chat”** (the pen in the header, or the menu at the chat’s name) clears the chat at once
62
+ and summarises the old one in the background. Goose keeps the summaries of your last chats in
63
+ mind.
64
+ - **“Earlier chats”** lists the closed ones, for you to read. Ask about something you discussed
65
+ before, and Goose searches them.
66
+
67
+ ## Live chat
68
+
69
+ **“Talk”** stands where “Send” does while the field is empty. The chat becomes a call: you speak,
70
+ a pause sends what you said, and Goose reads its answer aloud. Then it listens again. If you talk
71
+ over it, it stops speaking.
72
+
73
+ - Chrome and Safari turn your speech into text themselves. Other browsers record it, and your
74
+ model for voice notes writes it down.
75
+ - Goose reads its answers with your computer’s voices, or with the speech model where one is set
76
+ up (the speaker button in the call).
77
+ - Everything said stays in the chat as messages.
@@ -0,0 +1,116 @@
1
+ ---
2
+ title: Build a wizard
3
+ description: Describe what the wizard should do, or start from a template. Then change it in the chat or step by step.
4
+ version: 0.5.0
5
+ ---
6
+
7
+ ## Start one
8
+
9
+ “New wizard” on the list of your wizards, or in the sidebar, opens the page “What should your
10
+ wizard do?”. It gives you three ways in:
11
+
12
+ | Way | How |
13
+ |---|---|
14
+ | Describe it | Write what the wizard should do in your own words and click “Build wizard” |
15
+ | A template | Choose one under “Or start from a template”. Search, or narrow the list by industry, result and capability |
16
+ | A wizard file | “Import a wizard file”, at the foot of the page, takes a `.wizard` file someone exported |
17
+
18
+ A description that works says who enters what, what the wizard does with it, and what comes out:
19
+
20
+ > Customers enter their product and audience. The wizard researches competitors and writes a
21
+ > positioning briefing as a PDF.
22
+
23
+ You can change everything afterwards in the chat.
24
+
25
+ ### Before you build
26
+
27
+ - **How it runs.** “Runs as” above the text field says how people will reach the wizard: as a
28
+ “Step-by-step wizard” unless you choose otherwise. The + beside it asks “How should it run?”
29
+ and lists the other channels this studio offers, for example “Chat”, “Live voice” or “Video
30
+ call”. One channel always stays on. The assistant builds the wizard for what you chose.
31
+ - **Files.** Attach examples, price lists or screenshots with the + in the text field, or paste
32
+ or drop them there. They go into the wizard’s files, and the assistant looks at them.
33
+ - **Dictation.** The microphone button lets you speak instead of type.
34
+ - **Similar wizards.** While you type, the page lists up to ten of your own wizards and templates
35
+ that come close. “Open” opens one of yours, and “Use” starts from a template. This way you
36
+ don’t build again what is already there.
37
+
38
+ ### Templates
39
+
40
+ - A template shows how the wizard runs, how long a run takes, what it costs and what it needs
41
+ before you start from it with “Start with this template”.
42
+ - “Not set up here” names a model that isn’t set up on this computer yet, for example for video.
43
+ Set it up under [Models and account](./models.md), or choose another template.
44
+ - A template marked “Pro” needs plugins that come with Pro on engenty.ai.
45
+ - A star keeps a template on this computer, so you can use it without a connection.
46
+ - A wizard started from a template is your copy. Later changes to the template don’t touch it.
47
+
48
+ ## The editor
49
+
50
+ | Part | What it is for |
51
+ |---|---|
52
+ | The diagram, left | The steps as a flow with their branches. Click a step to open it |
53
+ | Chat | Say what should change. The assistant edits the flow and tells you what it did |
54
+ | Steps | One step at a time: its texts, fields, tools and model class. Move it up or down, or delete it |
55
+ | Files | Files the wizard uses on every run, like widget code, libraries or price lists. Upload your own or let the assistant write them |
56
+ | Memory | What the wizard knows across all its runs: the notes that AI steps with the “Pages” tool read and add to, and the tables of its shared lists |
57
+ | Runs | The test runs and live runs of this wizard |
58
+
59
+ On a phone or a narrow window the panels sit in a sheet over the bottom of the diagram. Drag its handle to make it taller, or tap
60
+ it to fold it away.
61
+
62
+ A click on the wizard’s name in the top bar opens its own settings: its title, description and
63
+ greeting, its avatar, and the language it speaks to people in. With “Automatic, from its texts”
64
+ the wizard speaks the language its texts are written in.
65
+
66
+ The ⋯ button in the top bar (“More”) duplicates the wizard, exports it, or deletes it. Only
67
+ whoever manages the team can delete a wizard. The same menu is on the wizard’s card in the list.
68
+
69
+ ### In the chat
70
+
71
+ - Write what should be different: “Ask for the delivery date on the first page”, “Add a review
72
+ before the PDF”.
73
+ - Attach files the assistant should look at: an example document, a price list, a screenshot.
74
+ - Dictate instead of typing with the microphone button.
75
+ - If the connection drops, what was already built is saved. Send your message again.
76
+
77
+ ### Step by step
78
+
79
+ Open a step from the diagram or under “Steps”. What you can set depends on its type: see
80
+ [Steps](./steps.md).
81
+
82
+ “Add step” on a step in the diagram, or under “Steps”, puts a new step after it. Say what it
83
+ should do and choose its kind, or leave it to “AI chooses”. Then say when it runs: “Always”,
84
+ “Only if…” a condition holds, or when “AI decides…”. “Create” lets the assistant build the step
85
+ in the chat. “Insert empty” adds a blank step of the kind you choose, for you to fill in.
86
+
87
+ ## When the wizard needs fixes
88
+
89
+ A draft may be incomplete while you work on it. Before you test or share, the editor lists what
90
+ is missing, for example a step that uses an answer that is only asked later, or a tool that isn’t
91
+ installed here. “Let the assistant fix it” hands that list to the chat.
92
+
93
+ If a step needs a model that isn’t set up here, the editor names the step and the model, and
94
+ “Set up models” takes you there. If every path of the wizard needs that model, the wizard can’t
95
+ start. If only one branch needs it, choose another path when you test.
96
+
97
+ ## What makes a good wizard
98
+
99
+ - Write for people who are not technical: use plain words, and phrase titles as questions.
100
+ - Keep to few pages, one theme per page and at most five fields. Ask only what the result needs.
101
+ - Put a review before anything expensive, such as video, and before the final result.
102
+ - Let the phone do the typing: a photo instead of a description, the location instead of an
103
+ address form, a voice note instead of a long text.
104
+ - Put money in a line-items field. The wizard works out net, VAT and total itself; a model never
105
+ does.
106
+ - Facts from the web need a research step before the step that writes.
107
+
108
+ ## Take it with you
109
+
110
+ “Export as a wizard file (.wizard)” in the wizard’s ⋯ menu downloads its steps and its files as
111
+ one file. “Import a wizard file” on the “New wizard” page of any studio takes it in.
112
+
113
+ The share dialog downloads a wizard file too, under “Website” → “Without an account: as a
114
+ package”. It holds the published version, or the draft while there is none, for a WordPress site
115
+ that runs it without an account. With “Take the knowledge along”, the space’s pages go with it
116
+ as files. See [WordPress](./wordpress.md#without-an-account).
@@ -0,0 +1,83 @@
1
+ ---
2
+ title: Command line
3
+ description: The wizards command – start, setup, status, update – and the settings file on your computer.
4
+ version: 0.5.0
5
+ ---
6
+
7
+ ## Commands
8
+
9
+ | Command | What it does |
10
+ |---|---|
11
+ | `wizards` | Shows what is running, and a menu. While it runs, you can open the studio, restart or stop it; while it doesn’t, “Start in the background” or “Start in this terminal”. Then “Update”, which restarts it into the new version, “Start at login”, “Connect AI apps”, “Account”, “Status”, “Setup”, “Uninstall” and “Help”. The first time, the setup runs first. It needs a terminal |
12
+ | `wizards start` | Starts it and opens the studio. It runs in that terminal, and Ctrl-C stops it. The first time, the setup runs first |
13
+ | `wizards studio` | Opens the studio in your browser. If it isn’t running, it starts in the background first |
14
+ | `wizards setup` | Runs the guided setup again: your account, an AI client, the browser and ffmpeg, start at login, your AI apps. `--local` leaves the account out ([Local only](./local-only.md)) |
15
+ | `wizards account` | Shows the account this computer is signed in to: who, which team, the credits. `sign-in` shows a link and a code and opens your browser; `sign-out` disconnects this computer |
16
+ | `wizards open` | Signs this browser in to the running studio. `--print` only prints the link; it works once, within a minute |
17
+ | `wizards status` | Shows what is installed and running, with the browser it uses for PDF, PNG and websites |
18
+ | `wizards doctor` | Shows the status and checks for problems |
19
+ | `wizards logs [n]` | Prints the last lines engenty wizards printed while running (100, or `n` up to 2000). Keys and tokens are taken out |
20
+ | `wizards report` | Sends the status, the model settings (never a key) and the last 500 log lines to your [account](./models.md#account), so support can see what went wrong. Nothing is sent unless you run it. The command names the report’s ID. If this computer isn’t signed in, it tells you to sign in under Settings → Account or with `wizards account sign-in` |
21
+ | `wizards stop` | Stops it, with any other copy of it still running in the background. Your data is kept. AI apps that use your wizards start it again when you use one there |
22
+ | `wizards restart` | Stops it and starts it again; after an update, that is the new version. If it isn’t running, it starts in the background |
23
+ | `wizards update` | Installs the latest version |
24
+ | `wizards autostart on` / `off` | Starts it when you log in, or stops doing so. It is a LaunchAgent on macOS and a systemd user service on Linux |
25
+ | `wizards connect [app …]` | Adds your wizards to your [AI apps](./ai-apps.md): every app found, or the ones you name |
26
+ | `wizards disconnect [app …]` | Takes them out again |
27
+ | `wizards mcp` | Runs the MCP server over stdio. AI apps start it; you don’t |
28
+ | `wizards uninstall` | Takes engenty wizards off this computer. It shows what it will remove first and asks about your data on its own; your data is kept unless you choose to delete it. `--dry-run` only shows the plan, `--yes` asks nothing and keeps your data, `--yes --delete-data` deletes it too. See [Remove](./install.md#remove) |
29
+ | `wizards validate <path …>` | Checks wizards without the studio: `.wizard` files, unpacked wizard files, or a wizard’s JSON. `--json` prints the problems as JSON. A space’s connectors and plugins are checked when you import it |
30
+
31
+ | Option | What it does |
32
+ |---|---|
33
+ | `--yes`, `-y` | Asks nothing and installs nothing optional |
34
+ | `--local` | Sets up without an account, so nothing leaves this computer ([Local only](./local-only.md)) |
35
+ | `--client <name>` | Installs this AI client without asking: `codex`, `claude`, `antigravity`, `cursor` |
36
+ | `--no-open` | Starts without opening the browser |
37
+ | `--background`, `-s` | Starts it in the background (`--service` still works): detached from the terminal, and the command returns. `wizards stop` stops it, and its output goes to `logs/runtime.log` |
38
+ | `--version`, `-v` | Prints the version |
39
+ | `--help`, `-h` | Lists every command |
40
+
41
+ When you start it in a terminal, it runs while that terminal is open, and Ctrl-C stops it. With
42
+ `wizards start --background` it keeps running after the terminal closes. If it is already
43
+ running, `wizards start` opens the running one instead of starting a second.
44
+
45
+ ## Where things are
46
+
47
+ | Path | What it holds |
48
+ |---|---|
49
+ | `~/.engenty/wizards` | Everything engenty wizards installed. `ENGENTY_HOME` moves `~/.engenty` |
50
+ | `~/.engenty/wizards/data` | Your wizards, results and files. See [Your data](./data.md) |
51
+ | `~/.engenty/wizards/.env` | The settings file |
52
+ | `~/.engenty/wizards/plugins` | [Plugins](./plugins.md) on this computer |
53
+ | `~/.engenty/wizards/logs` | Logs: `install.log`, `update.log`, `runtime.log` when it runs in the background, `autostart.log` when a Mac starts it at login |
54
+ | `~/.engenty/wizards/tools`, `runtime` | Its own Node.js, and engenty wizards itself |
55
+ | `~/.engenty/wizards/bin/wizards` | The command; `~/.local/bin/wizards` links to it |
56
+
57
+ ## Settings
58
+
59
+ You change most settings in the studio. The settings file `~/.engenty/wizards/.env` holds what
60
+ the studio doesn’t: one `NAME=value` per line. Restart engenty wizards after a change.
61
+
62
+ | Setting | What it does | Default |
63
+ |---|---|---|
64
+ | `APP_URL` | The address you open. Links and sign-ins use it | `http://localhost:24368` |
65
+ | `API_PORT` | The port | `24368`; if it is taken, the next free one up to `24387` |
66
+ | `CHROME_PATH` | The browser for PDF and PNG exports and steps on websites: Chrome, Edge, Chromium or Brave | The first one found: on a Mac Google Chrome, Microsoft Edge, Chromium or Brave in `/Applications` or `~/Applications`; on Linux `google-chrome`, `chromium`, `chromium-browser` or `microsoft-edge` on the PATH. `wizards status` names it |
67
+ | `FFMPEG_PATH` | ffmpeg for MP4 videos | `ffmpeg` |
68
+ | `OLLAMA_URL` | Where Ollama answers | `http://127.0.0.1:11434/v1` |
69
+ | `PLUGINS_DIR` | Folders with plugins, comma-separated. If you set it, it replaces the default | `~/.engenty/wizards/plugins` |
70
+ | `PLUGINS_WATCH` | With `0`, plugins no longer load again when their files change | `1` |
71
+ | `GEOCODER_URL` | Finds the place of a location (street, town). If it is not set, a location is only coordinates, and no position leaves your computer | not set |
72
+ | `LIMIT_DEFAULT_DAILY_RUNS` | How many runs a day a shared link allows, unless the wizard sets its own limit | `50` |
73
+ | `LIMIT_VISITOR_RUNS_PER_HOUR` | How many runs one visitor can start in an hour | `6` |
74
+ | `RESULT_TTL_DAYS` | How many days the result of a run over a wizard’s link is kept | `7` |
75
+ | `STORE_TTL_DAYS` | How many days what a wizard keeps for a person stays when nobody uses it | `400` |
76
+
77
+ The OAuth clients of the built-in connectors go here too: see [Connectors](./connectors.md).
78
+ Every setting, with what it is for, is in
79
+ [.env.example](https://github.com/engenty/wizards/blob/main/.env.example).
80
+
81
+ The command passes engenty wizards only a short list of your terminal’s variables. A key your
82
+ shell exports for another project doesn’t reach it: put it into the settings file, or enter it
83
+ in the studio.