@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,577 @@
1
+ #!/usr/bin/env bash
2
+ # engenty wizards — installer for macOS and Linux.
3
+ #
4
+ # curl -fsSL https://engenty.ai/install.sh | bash
5
+ #
6
+ # It needs curl and tar, nothing else, and asks for no password. Everything goes into
7
+ # ~/.engenty/wizards (ENGENTY_HOME moves it):
8
+ #
9
+ # tools/node-v<version>/ its own Node; a Node you already have is left alone
10
+ # runtime/<version>/ the runtime (the npm package @engenty/wizards-runtime), from the
11
+ # GitHub release; runtime/current
12
+ # names the one that runs, the one before stays for going back
13
+ # bin/wizards the command, linked into ~/.local/bin
14
+ # data/ your wizards and results (made at the first start)
15
+ #
16
+ # Then the guided setup runs (`wizards setup`): your engenty account, an AI client to think
17
+ # with, ffmpeg, starting at login. Running the installer again updates an install; your data
18
+ # is kept.
19
+ #
20
+ # --yes ask nothing and install nothing optional
21
+ # --local no account: nothing leaves this computer (the docs explain it)
22
+ # --no-setup only Node, the runtime and the command (what `update` runs)
23
+ # --version <v> this version instead of the newest
24
+ # --no-link do not link the command into ~/.local/bin
25
+ #
26
+ # For tests: ENGENTY_WIZARDS_PACKAGE (an npm spec or a tarball instead of the release's
27
+ # package), ENGENTY_WIZARDS_NODE_VERSION, ENGENTY_WIZARDS_NO_LINK=1 (as --no-link).
28
+ #
29
+ # Written for the bash 3.2 that macOS ships. Nothing here reads stdin: the script itself may be
30
+ # arriving through it.
31
+ set -Eeuo pipefail
32
+
33
+ NODE_VERSION="${ENGENTY_WIZARDS_NODE_VERSION:-24.14.0}"
34
+ # The runtime's npm package, and its file on the GitHub release (npm pack names it so).
35
+ PACKAGE_NAME="@engenty/wizards-runtime"
36
+ PACKAGE_FILE="engenty-wizards-runtime"
37
+ # What the runtime was called from 0.1.9 to 0.7.4; `wizards` is the launcher now (`npx wizards`).
38
+ LEGACY_NAME="wizards"
39
+ # What the package and the command were called up to 0.1.8.
40
+ OLD_NAME="engenty-wizards"
41
+ RELEASES="https://github.com/engenty/wizards/releases"
42
+
43
+ main() {
44
+ YES=0
45
+ LOCAL=0
46
+ SETUP=1
47
+ LINK=1
48
+ [ -n "${ENGENTY_WIZARDS_NO_LINK:-}" ] && LINK=0
49
+ VERSION=""
50
+ while [ $# -gt 0 ]; do
51
+ case "$1" in
52
+ --yes | -y) YES=1 ;;
53
+ --local) LOCAL=1 ;;
54
+ --no-setup) SETUP=0 ;;
55
+ --no-link) LINK=0 ;;
56
+ --version)
57
+ shift
58
+ VERSION="${1:-}"
59
+ [ -n "$VERSION" ] || die "--version needs a version, e.g. --version 0.1.0"
60
+ ;;
61
+ --help | -h)
62
+ usage
63
+ exit 0
64
+ ;;
65
+ *) die "Unknown option $1" ;;
66
+ esac
67
+ shift
68
+ done
69
+
70
+ BASE="${ENGENTY_HOME:-$HOME/.engenty}"
71
+ HOME_DIR="$BASE/wizards"
72
+ LOG="$HOME_DIR/logs/install.log"
73
+ NODE_DIR="$HOME_DIR/tools/node-v$NODE_VERSION"
74
+ WRAPPER="$HOME_DIR/bin/wizards"
75
+ LOCAL_BIN="$HOME/.local/bin"
76
+
77
+ style
78
+ trap 'printf "%s" "$SHOW"' EXIT
79
+ trap 'failed' ERR
80
+
81
+ command -v curl >/dev/null 2>&1 || die "curl is needed and was not found."
82
+ command -v tar >/dev/null 2>&1 || die "tar is needed and was not found."
83
+ mkdir -p "$HOME_DIR/logs" "$HOME_DIR/tools" "$HOME_DIR/bin"
84
+ printf '\n--- %s install.sh\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" >>"$LOG"
85
+
86
+ banner
87
+ printf '%s Installing into %s\n%s\n' "${GRAY}┌$RESET" "$BOLD$(tilde "$HOME_DIR")$RESET" "$BAR"
88
+ platform
89
+ package
90
+ node
91
+ runtime
92
+ command_link
93
+ old_command
94
+ if [ "$SETUP" = 1 ]; then
95
+ printf '%s %s\n\n' "${GRAY}└$RESET" "Installed. Next, a few questions to set it up."
96
+ printf '%s' "$SHOW"
97
+ trap - EXIT ERR
98
+ # --local goes on to the setup: it is the setup's account step that keeps the install off
99
+ # the account. The questions need a terminal; stdin may be the pipe this script came through.
100
+ SETUP_ARGS=""
101
+ [ "$LOCAL" = 1 ] && SETUP_ARGS="--local"
102
+ if [ "$YES" = 1 ] || [ "$TTY" != 1 ] || ! (exec </dev/tty) 2>/dev/null; then
103
+ # shellcheck disable=SC2086
104
+ exec "$WRAPPER" setup --yes $SETUP_ARGS </dev/null
105
+ fi
106
+ # shellcheck disable=SC2086
107
+ exec "$WRAPPER" setup $SETUP_ARGS </dev/tty
108
+ fi
109
+ printf '%s %s\n' "${GRAY}└$RESET" "Installed engenty wizards $INSTALLED."
110
+ }
111
+
112
+ usage() {
113
+ cat <<'USAGE'
114
+ engenty wizards — installer for macOS and Linux
115
+
116
+ curl -fsSL https://engenty.ai/install.sh | bash
117
+ curl -fsSL https://engenty.ai/install.sh | bash -s -- --yes
118
+
119
+ Puts its own Node, the runtime and the `wizards` command into ~/.engenty/wizards
120
+ (ENGENTY_HOME moves it), then runs the guided setup: it signs this computer in to your
121
+ engenty account. Run it again to update.
122
+
123
+ --yes ask nothing and install nothing optional
124
+ --local no account: nothing leaves this computer (the docs explain it)
125
+ --no-setup only Node, the runtime and the command
126
+ --version <v> this version instead of the newest
127
+ --no-link do not link the command into ~/.local/bin
128
+
129
+ To remove it: delete ~/.engenty/wizards (your wizards and results are in its data/ folder)
130
+ and ~/.local/bin/wizards.
131
+ USAGE
132
+ }
133
+
134
+ # --- how it looks ----------------------------------------------------------------------------
135
+
136
+ style() {
137
+ TTY=0
138
+ RESET="" BOLD="" DIM="" GRAY="" GREEN="" RED="" ORANGE="" MAGENTA="" HIDE="" SHOW=""
139
+ if [ -t 1 ] && [ -z "${NO_COLOR:-}" ] && [ "${TERM:-dumb}" != "dumb" ]; then
140
+ TTY=1
141
+ RESET=$'\033[0m' BOLD=$'\033[1m' DIM=$'\033[2m' GRAY=$'\033[90m' GREEN=$'\033[32m'
142
+ RED=$'\033[31m' ORANGE=$'\033[38;2;224;83;27m' MAGENTA=$'\033[35m'
143
+ HIDE=$'\033[?25l' SHOW=$'\033[?25h'
144
+ fi
145
+ BAR="${GRAY}│$RESET"
146
+ FRAMES=(◒ ◐ ◓ ◑)
147
+ }
148
+
149
+ # The tall engenty, the rose one with one eye, in pixels: two rows of them make one line of half
150
+ # blocks. . nothing R rose r its shade K the mouth. The eye goes on top.
151
+ ENGENTY=(
152
+ "....R...."
153
+ "...RRR..."
154
+ "..RRRRR.."
155
+ "..RRRRR.."
156
+ ".RRRRRRr."
157
+ ".RRRRRRr."
158
+ "RRRRRRRRr"
159
+ "RRRRRRRRr"
160
+ "RRRRRRRRr"
161
+ "RRRRRRRRr"
162
+ ".RRRKRRr."
163
+ ".RRRRRRr."
164
+ ".rRRRRrr."
165
+ "..rrrrr.."
166
+ )
167
+ # Its tip swaying to one side or the other, like a flame.
168
+ ENGENTY_LEFT=("...R....." "..RRR...." "..RRRR..." ".RRRRRR..")
169
+ ENGENTY_RIGHT=(".....R..." "....RRR.." "...RRRR.." "..RRRRRR.")
170
+
171
+ # The eye: five rows of five pixels from the body's fifth row. W white, K pupil, . the body.
172
+ eye_rows() {
173
+ case "$1" in
174
+ left) EYE=(".WWW." "WWWWW" "KKWWW" "KKWWW" ".WWW.") ;;
175
+ right) EYE=(".WWW." "WWWWW" "WWWKK" "WWWKK" ".WWW.") ;;
176
+ up) EYE=(".WKK." "WWKKW" "WWWWW" "WWWWW" ".WWW.") ;;
177
+ shut) EYE=("....." "....." "K...K" ".KKK." ".....") ;;
178
+ *) EYE=(".WWW." "WWWWW" "WWKKW" "WWKKW" ".WWW.") ;;
179
+ esac
180
+ }
181
+
182
+ # Sets C to the colour of a pixel, as a foreground (3) or background (4) parameter.
183
+ pixel_colour() {
184
+ case "$1" in
185
+ R) C="${2}8;2;240;36;86" ;;
186
+ r) C="${2}8;2;188;18;62" ;;
187
+ W) C="${2}8;2;255;255;255" ;;
188
+ K) C="${2}8;2;46;8;20" ;;
189
+ S) C="${2}8;2;96;96;96" ;;
190
+ esac
191
+ }
192
+
193
+ # One picture of the engenty, into PICTURE: 9 lines of 9 columns. $1 the tip (still, left,
194
+ # right), $2 the eye, $3 how many pixels it is off the ground (0 to 2).
195
+ engenty_picture() {
196
+ local tip="$1" lift="${3:-0}" rows=() y x row top bottom line pixel
197
+ eye_rows "$2"
198
+ # Two rows of air for a hop, fourteen of engenty, its shadow and a row below that.
199
+ for y in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17; do
200
+ row="........."
201
+ if [ "$y" -ge $((2 - lift)) ] && [ "$y" -lt $((16 - lift)) ]; then
202
+ x=$((y - 2 + lift))
203
+ row="${ENGENTY[x]}"
204
+ [ "$tip" = left ] && [ "$x" -lt 4 ] && row="${ENGENTY_LEFT[x]}"
205
+ [ "$tip" = right ] && [ "$x" -lt 4 ] && row="${ENGENTY_RIGHT[x]}"
206
+ if [ "$x" -ge 4 ] && [ "$x" -lt 9 ]; then
207
+ pixel="${EYE[x - 4]}"
208
+ line=""
209
+ for top in 0 1 2 3 4; do
210
+ if [ "${pixel:top:1}" = "." ]; then line="$line${row:top+2:1}"; else line="$line${pixel:top:1}"; fi
211
+ done
212
+ row="${row:0:2}$line${row:7}"
213
+ fi
214
+ fi
215
+ # The shadow shrinks as the engenty leaves the ground.
216
+ if [ "$y" = 16 ]; then
217
+ case "$lift" in
218
+ 0) row="..SSSSS.." ;;
219
+ 1) row="...SSS..." ;;
220
+ *) row="....S...." ;;
221
+ esac
222
+ fi
223
+ rows+=("$row")
224
+ done
225
+ PICTURE=()
226
+ for y in 0 2 4 6 8 10 12 14 16; do
227
+ line=""
228
+ for x in 0 1 2 3 4 5 6 7 8; do
229
+ top="${rows[y]:x:1}"
230
+ bottom="${rows[y + 1]:x:1}"
231
+ if [ "$top" = "." ] && [ "$bottom" = "." ]; then
232
+ line="$line$RESET "
233
+ elif [ "$top" = "$bottom" ]; then
234
+ pixel_colour "$top" 3
235
+ line="$line$RESET"$'\033['"${C}m█"
236
+ elif [ "$top" = "." ]; then
237
+ pixel_colour "$bottom" 3
238
+ line="$line$RESET"$'\033['"${C}m▄"
239
+ elif [ "$bottom" = "." ]; then
240
+ pixel_colour "$top" 3
241
+ line="$line$RESET"$'\033['"${C}m▀"
242
+ else
243
+ pixel_colour "$top" 3
244
+ top="$C"
245
+ pixel_colour "$bottom" 4
246
+ line="$line$RESET"$'\033['"$top;${C}m▀"
247
+ fi
248
+ done
249
+ PICTURE+=("$line$RESET")
250
+ done
251
+ }
252
+
253
+ # Prints a picture with the name beside it, over the one before, and holds it for $4 seconds.
254
+ banner_frame() {
255
+ local i=0 line
256
+ engenty_picture "$1" "$2" "$3"
257
+ [ -n "${BANNER_DRAWN:-}" ] && printf '\033[9A'
258
+ BANNER_DRAWN=1
259
+ for line in "${PICTURE[@]}"; do
260
+ printf '\r %s' "$line"
261
+ case "$i" in
262
+ 3) printf ' %sengenty wizards%s' "$BOLD" "$RESET" ;;
263
+ 4) printf ' %sMake a wish. Get your wizard.%s' "$DIM" "$RESET" ;;
264
+ 5) printf ' %sIt guides you step by step.%s' "$DIM" "$RESET" ;;
265
+ 6) printf ' %sLet AI do the work.%s' "$DIM" "$RESET" ;;
266
+ esac
267
+ printf '\n'
268
+ i=$((i + 1))
269
+ done
270
+ sleep "$4"
271
+ }
272
+
273
+ banner() {
274
+ # Only on a terminal: `update` from the studio reads plain lines.
275
+ if [ "$TTY" != 1 ]; then
276
+ return
277
+ fi
278
+ printf '\n%s' "$HIDE"
279
+ # It wakes up, looks around, hops and blinks: a second and a half.
280
+ banner_frame still shut 0 .25
281
+ banner_frame still open 0 .2
282
+ banner_frame still left 0 .18
283
+ banner_frame still right 0 .18
284
+ banner_frame still open 0 .1
285
+ banner_frame still up 1 .07
286
+ banner_frame left up 2 .1
287
+ banner_frame still open 1 .07
288
+ banner_frame right open 0 .09
289
+ banner_frame left open 0 .09
290
+ banner_frame still open 0 .12
291
+ banner_frame still shut 0 .06
292
+ banner_frame still open 0 0
293
+ printf '%s\n' "$SHOW"
294
+ }
295
+
296
+ tilde() {
297
+ case "$1" in
298
+ "$HOME"/*) printf '~%s' "${1#"$HOME"}" ;;
299
+ *) printf '%s' "$1" ;;
300
+ esac
301
+ }
302
+
303
+ # A finished step: the green diamond, what it was, and a detail in gray.
304
+ done_step() {
305
+ [ "$TTY" = 1 ] && printf '\r\033[K'
306
+ printf '%s %s' "${GREEN}◇$RESET" "$1"
307
+ [ -n "${2:-}" ] && printf ' %s' "$DIM$2$RESET"
308
+ printf '\n%s\n' "$BAR"
309
+ }
310
+
311
+ die() {
312
+ printf '%s' "${SHOW:-}"
313
+ [ "${TTY:-0}" = 1 ] && printf '\r\033[K'
314
+ printf '%s %s\n' "${RED:-}■${RESET:-}" "$1" >&2
315
+ trap - EXIT ERR
316
+ exit 1
317
+ }
318
+
319
+ failed() {
320
+ local tail=""
321
+ [ -f "$LOG" ] && tail="$(tail -n 12 "$LOG" 2>/dev/null | sed 's/^/ /')"
322
+ [ -n "$tail" ] && printf '\n%s\n' "$DIM$tail$RESET" >&2
323
+ die "${STEP:-The installer} failed. The whole log: $(tilde "$LOG")"
324
+ }
325
+
326
+ # Runs a command with a spinner and the seconds it takes; its output goes to the log.
327
+ spin() {
328
+ local label="$1" pid i=0 started=$SECONDS
329
+ shift
330
+ if [ "$TTY" != 1 ]; then
331
+ "$@" >>"$LOG" 2>&1 </dev/null
332
+ return
333
+ fi
334
+ "$@" >>"$LOG" 2>&1 </dev/null &
335
+ pid=$!
336
+ printf '%s' "$HIDE"
337
+ while kill -0 "$pid" 2>/dev/null; do
338
+ printf '\r\033[K%s %s %s' "$MAGENTA${FRAMES[i % 4]}$RESET" "$label" "$DIM$((SECONDS - started))s$RESET"
339
+ i=$((i + 1))
340
+ sleep 0.12
341
+ done
342
+ printf '%s' "$SHOW"
343
+ wait "$pid"
344
+ }
345
+
346
+ # Downloads a file with a bar that fills as it arrives.
347
+ download() {
348
+ local url="$1" dest="$2" label="$3" pid total size filled i bar
349
+ if [ "$TTY" != 1 ]; then
350
+ curl -fsSL "$url" -o "$dest" 2>>"$LOG" </dev/null
351
+ return
352
+ fi
353
+ total="$(curl -fsSIL "$url" 2>/dev/null </dev/null | tr -d '\r' |
354
+ awk 'tolower($1) == "content-length:" { n = $2 } END { print n + 0 }' || true)"
355
+ : >"$dest"
356
+ curl -fsSL "$url" -o "$dest" 2>>"$LOG" </dev/null &
357
+ pid=$!
358
+ printf '%s' "$HIDE"
359
+ while kill -0 "$pid" 2>/dev/null; do
360
+ size="$(wc -c <"$dest" 2>/dev/null | tr -d ' ')"
361
+ if [ "${total:-0}" -gt 0 ]; then
362
+ filled=$((${size:-0} * 24 / total))
363
+ [ "$filled" -gt 24 ] && filled=24
364
+ bar=""
365
+ i=0
366
+ while [ "$i" -lt 24 ]; do
367
+ if [ "$i" -lt "$filled" ]; then bar="${bar}█"; else bar="${bar}░"; fi
368
+ i=$((i + 1))
369
+ done
370
+ printf '\r\033[K%s %s %s %s' "${MAGENTA}◒$RESET" "$label" "$ORANGE$bar$RESET" \
371
+ "$DIM$((${size:-0} / 1048576)) of $((total / 1048576)) MB$RESET"
372
+ else
373
+ printf '\r\033[K%s %s %s' "${MAGENTA}◒$RESET" "$label" "$DIM$((${size:-0} / 1048576)) MB$RESET"
374
+ fi
375
+ sleep 0.1
376
+ done
377
+ printf '%s' "$SHOW"
378
+ wait "$pid"
379
+ }
380
+
381
+ # --- the steps -------------------------------------------------------------------------------
382
+
383
+ platform() {
384
+ STEP="Looking at this machine"
385
+ local system machine name
386
+ system="$(uname -s)"
387
+ machine="$(uname -m)"
388
+ case "$system" in
389
+ Darwin)
390
+ OS=darwin
391
+ name="macOS $(sw_vers -productVersion 2>/dev/null || true)"
392
+ # A terminal under Rosetta says x86_64 on a Mac with Apple silicon.
393
+ [ "$(sysctl -n sysctl.proc_translated 2>/dev/null || true)" = "1" ] && machine=arm64
394
+ ;;
395
+ Linux)
396
+ OS=linux
397
+ name="Linux"
398
+ # Node's own builds need glibc.
399
+ if (ldd --version 2>&1 || true) | grep -qi musl; then
400
+ die "This Linux uses musl (Alpine). Use the Docker image instead: https://github.com/engenty/wizards#run-it-on-a-server"
401
+ fi
402
+ ;;
403
+ *) die "$system is not supported: macOS and Linux are. On Windows, use WSL." ;;
404
+ esac
405
+ case "$machine" in
406
+ arm64 | aarch64) ARCH=arm64 ;;
407
+ x86_64 | amd64) ARCH=x64 ;;
408
+ *) die "$machine is not supported: arm64 and x64 are." ;;
409
+ esac
410
+ done_step "$name on $ARCH"
411
+ }
412
+
413
+ sha256_of() {
414
+ if command -v shasum >/dev/null 2>&1; then
415
+ shasum -a 256 "$1" | awk '{ print $1 }'
416
+ else
417
+ sha256sum "$1" | awk '{ print $1 }'
418
+ fi
419
+ }
420
+
421
+ node() {
422
+ STEP="Installing Node $NODE_VERSION"
423
+ if [ -x "$NODE_DIR/bin/node" ] && [ "$("$NODE_DIR/bin/node" --version 2>/dev/null)" = "v$NODE_VERSION" ]; then
424
+ ln -sfn "node-v$NODE_VERSION" "$HOME_DIR/tools/node"
425
+ done_step "Node $NODE_VERSION" "already here"
426
+ return
427
+ fi
428
+ local name="node-v$NODE_VERSION-$OS-$ARCH" dist="https://nodejs.org/dist/v$NODE_VERSION" tmp expected actual
429
+ tmp="$(mktemp -d "$HOME_DIR/tools/.node.XXXXXX")"
430
+ download "$dist/$name.tar.gz" "$tmp/node.tar.gz" "Downloading Node $NODE_VERSION"
431
+ # The file must be the one nodejs.org lists.
432
+ expected="$(curl -fsSL "$dist/SHASUMS256.txt" 2>>"$LOG" </dev/null | awk -v file="$name.tar.gz" '$2 == file { print $1 }')"
433
+ actual="$(sha256_of "$tmp/node.tar.gz")"
434
+ if [ -z "$expected" ] || [ "$expected" != "$actual" ]; then
435
+ rm -rf "$tmp"
436
+ die "The Node download does not match its checksum from nodejs.org."
437
+ fi
438
+ mkdir -p "$tmp/node"
439
+ spin "Unpacking Node $NODE_VERSION" tar -xzf "$tmp/node.tar.gz" -C "$tmp/node" --strip-components 1
440
+ # The headers are for compiling addons, which nothing here does: a third of Node's size.
441
+ rm -rf "$tmp/node/include"
442
+ rm -rf "$NODE_DIR"
443
+ mv "$tmp/node" "$NODE_DIR"
444
+ rm -rf "$tmp"
445
+ ln -sfn "node-v$NODE_VERSION" "$HOME_DIR/tools/node"
446
+ # An older Node of ours is not needed any more.
447
+ for old in "$HOME_DIR"/tools/node-v*; do
448
+ [ "$old" = "$NODE_DIR" ] || rm -rf "$old"
449
+ done
450
+ done_step "Node $NODE_VERSION" "$(tilde "$HOME_DIR/tools/node"), checksum from nodejs.org matches"
451
+ }
452
+
453
+ # GitHub answers /releases/latest with the address of the newest release: …/tag/v1.2.3
454
+ latest_version() {
455
+ curl -fsSLI -o /dev/null -w '%{url_effective}' "$RELEASES/latest" 2>>"$LOG" </dev/null |
456
+ sed -n 's#.*/tag/v##p'
457
+ }
458
+
459
+ # What gets installed, decided before anything is downloaded: the tarball of the GitHub release,
460
+ # which npm installs like one from its registry; what it depends on comes from the registry.
461
+ package() {
462
+ STEP="Looking for the newest release"
463
+ SPEC="${ENGENTY_WIZARDS_PACKAGE:-}"
464
+ if [ -n "$SPEC" ]; then
465
+ return
466
+ fi
467
+ if [ -z "$VERSION" ]; then
468
+ VERSION="$(latest_version || true)"
469
+ fi
470
+ if [ -z "$VERSION" ]; then
471
+ die "No release of engenty wizards was found at $RELEASES."
472
+ fi
473
+ case "$VERSION" in
474
+ 0.0.* | 0.1.[0-8])
475
+ die "Version $VERSION holds the package under its old name, $OLD_NAME. This installer installs 0.1.9 and newer."
476
+ ;;
477
+ 0.[1-6].* | 0.7.[0-4]) SPEC="$RELEASES/download/v$VERSION/$LEGACY_NAME-$VERSION.tgz" ;;
478
+ *) SPEC="$RELEASES/download/v$VERSION/$PACKAGE_FILE-$VERSION.tgz" ;;
479
+ esac
480
+ }
481
+
482
+ runtime() {
483
+ STEP="Installing engenty wizards"
484
+ local dir="$HOME_DIR/runtime" stage previous path
485
+ # An install of the package under its old name is replaced, not kept beside the new one.
486
+ if [ -d "$dir/node_modules/$OLD_NAME" ]; then
487
+ rm -rf "$dir"
488
+ fi
489
+ mkdir -p "$dir"
490
+ # Each version has its folder (runtime/<version>/, an npm prefix); `current` names the one the
491
+ # command starts, and a version that runs keeps its files. npm is a script that asks for
492
+ # `node`: ours comes first on the PATH. No install scripts run; the runtime works without
493
+ # them. --legacy-peer-deps: no peers on top, which nothing here uses (about 70 MB less).
494
+ stage="$(mktemp -d "$dir/.staging-XXXXXX")"
495
+ spin "Installing engenty wizards (about 650 MB on disk, a minute or two)" \
496
+ env PATH="$NODE_DIR/bin:$PATH" "$NODE_DIR/bin/npm" install --prefix "$stage" \
497
+ --omit=dev --ignore-scripts --legacy-peer-deps --no-audit --no-fund --loglevel=error "$SPEC"
498
+ # The runtime under its name, or under the one it had up to 0.7.4 (`--version 0.7.4`). The
499
+ # package `wizards` of now is only the launcher: no runtime in it.
500
+ if [ -f "$stage/node_modules/$PACKAGE_NAME/package.json" ]; then
501
+ PACKAGE="$PACKAGE_NAME"
502
+ # A command or an update of 0.7.4 or older looks for the runtime under its old name.
503
+ ln -s "$PACKAGE_NAME" "$stage/node_modules/$LEGACY_NAME"
504
+ elif [ -d "$stage/node_modules/$LEGACY_NAME/apps/runtime" ]; then
505
+ PACKAGE="$LEGACY_NAME"
506
+ else
507
+ rm -rf "$stage"
508
+ die "$SPEC holds no runtime of engenty wizards."
509
+ fi
510
+ INSTALLED="$(MANIFEST="$stage/node_modules/$PACKAGE/package.json" \
511
+ "$NODE_DIR/bin/node" -p 'require(process.env.MANIFEST).version')"
512
+ # Up to 0.6.2 runtime/ itself was the prefix.
513
+ if [ -d "$dir/node_modules" ] && [ ! -L "$dir/node_modules" ]; then
514
+ rm -rf "$dir/node_modules" "$dir/package.json" "$dir/package-lock.json"
515
+ fi
516
+ previous="$(readlink "$dir/current" 2>/dev/null || true)"
517
+ rm -rf "${dir:?}/$INSTALLED"
518
+ mv "$stage" "$dir/$INSTALLED"
519
+ ln -sfn "$INSTALLED" "$dir/current"
520
+ # For a command written before the version folders (an older bin/wizards or npx wizards).
521
+ ln -sfn "current/node_modules" "$dir/node_modules"
522
+ # This version and the one before stay; older ones go.
523
+ for path in "$dir"/[0-9]*; do
524
+ case "${path##*/}" in "$INSTALLED" | "$previous") ;; *) rm -rf "$path" ;; esac
525
+ done
526
+ done_step "engenty wizards $INSTALLED" "$(tilde "$dir/$INSTALLED")"
527
+ }
528
+
529
+ command_link() {
530
+ STEP="Writing the command"
531
+ {
532
+ printf '#!/bin/sh\n# engenty wizards — written by install.sh; running the installer again rewrites it.\n'
533
+ # An install outside ~/.engenty finds its folder again through the command.
534
+ if [ "$BASE" != "$HOME/.engenty" ]; then
535
+ # shellcheck disable=SC2016
536
+ printf 'export ENGENTY_HOME="${ENGENTY_HOME:-%s}"\n' "$BASE"
537
+ fi
538
+ printf 'exec "%s" "%s" "$@"\n' "$HOME_DIR/tools/node/bin/node" \
539
+ "$HOME_DIR/runtime/current/node_modules/$PACKAGE/bin/wizards.mjs"
540
+ } >"$WRAPPER"
541
+ chmod 755 "$WRAPPER"
542
+ if [ "$LINK" != 1 ]; then
543
+ done_step "Command" "$(tilde "$WRAPPER")"
544
+ return
545
+ fi
546
+ local link="$LOCAL_BIN/wizards"
547
+ mkdir -p "$LOCAL_BIN"
548
+ # Something else of that name is not ours to replace.
549
+ if [ -e "$link" ] && [ ! -L "$link" ]; then
550
+ done_step "Command" "$(tilde "$WRAPPER") ($(tilde "$link") exists and was left as it is)"
551
+ return
552
+ fi
553
+ ln -sfn "$WRAPPER" "$link"
554
+ done_step "Command" "$(tilde "$link")"
555
+ }
556
+
557
+ # The command under its old name: its file, its link, and a login item that would keep
558
+ # starting it. The login item is written again by the command itself.
559
+ old_command() {
560
+ local old="$HOME_DIR/bin/$OLD_NAME" link="$LOCAL_BIN/$OLD_NAME" item
561
+ [ -e "$old" ] || return 0
562
+ STEP="Renaming the command"
563
+ rm -f "$old"
564
+ if [ -L "$link" ] && [ "$(readlink "$link")" = "$old" ]; then
565
+ rm -f "$link"
566
+ fi
567
+ for item in "$HOME/Library/LaunchAgents/com.engenty.wizards.login.plist" \
568
+ "${XDG_CONFIG_HOME:-$HOME/.config}/systemd/user/engenty-wizards.service"; do
569
+ if grep -qF "$old" "$item" 2>/dev/null; then
570
+ "$WRAPPER" autostart on >>"$LOG" 2>&1 </dev/null || true
571
+ break
572
+ fi
573
+ done
574
+ done_step "Command" "$OLD_NAME is now wizards"
575
+ }
576
+
577
+ main "$@"
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "./",
3
+ "name": "engenty wizards",
4
+ "short_name": "wizards",
5
+ "description": "Make a wish, describe it once, and let the wizards run it on your own AI or in the cloud",
6
+ "start_url": "./",
7
+ "scope": "./",
8
+ "display": "standalone",
9
+ "background_color": "#faf8f5",
10
+ "theme_color": "#faf8f5",
11
+ "icons": [
12
+ { "src": "icons/icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any" },
13
+ { "src": "icons/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any" },
14
+ {
15
+ "src": "icons/icon-maskable-512.png",
16
+ "sizes": "512x512",
17
+ "type": "image/png",
18
+ "purpose": "maskable"
19
+ }
20
+ ]
21
+ }