wizards 0.4.7 → 0.5.1

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 (183) hide show
  1. package/README.md +45 -42
  2. package/apps/runtime/dist/agents/studio-assistant.js +8 -8
  3. package/apps/runtime/dist/app.js +7 -4
  4. package/apps/runtime/dist/assistant/primer.js +1 -1
  5. package/apps/runtime/dist/auth/index.js +2 -2
  6. package/apps/runtime/dist/authoring/guide.js +8 -8
  7. package/apps/runtime/dist/cli/account.js +31 -28
  8. package/apps/runtime/dist/cli/autostart.js +5 -3
  9. package/apps/runtime/dist/cli/clients.js +1 -1
  10. package/apps/runtime/dist/cli/connect.js +24 -24
  11. package/apps/runtime/dist/cli/features.js +6 -6
  12. package/apps/runtime/dist/cli/main.js +51 -39
  13. package/apps/runtime/dist/cli/mcp.js +5 -4
  14. package/apps/runtime/dist/cli/menu.js +32 -30
  15. package/apps/runtime/dist/cli/report.js +7 -9
  16. package/apps/runtime/dist/cli/setup.js +42 -38
  17. package/apps/runtime/dist/cli/start.js +16 -15
  18. package/apps/runtime/dist/cli/status.js +20 -20
  19. package/apps/runtime/dist/cli/ui.js +9 -2
  20. package/apps/runtime/dist/cli/update.js +6 -6
  21. package/apps/runtime/dist/cli/validate.js +1 -1
  22. package/apps/runtime/dist/connectors/external.js +3 -2
  23. package/apps/runtime/dist/connectors/index.js +5 -5
  24. package/apps/runtime/dist/connectors/plugin-connections.js +2 -2
  25. package/apps/runtime/dist/connectors/via-account.js +5 -5
  26. package/apps/runtime/dist/db/control-schema.js +14 -0
  27. package/apps/runtime/dist/db/migrations/control/0009_plugin_claim.sql +9 -0
  28. package/apps/runtime/dist/db/migrations/control/meta/0009_snapshot.json +561 -0
  29. package/apps/runtime/dist/db/migrations/control/meta/_journal.json +7 -0
  30. package/apps/runtime/dist/db/schema.js +9 -9
  31. package/apps/runtime/dist/docs/dev/index.md +16 -14
  32. package/apps/runtime/dist/docs/dev/plugins/connections.md +27 -24
  33. package/apps/runtime/dist/docs/dev/plugins/events.md +19 -17
  34. package/apps/runtime/dist/docs/dev/plugins/examples.md +13 -12
  35. package/apps/runtime/dist/docs/dev/plugins/index.md +29 -24
  36. package/apps/runtime/dist/docs/dev/plugins/layout.md +20 -19
  37. package/apps/runtime/dist/docs/dev/plugins/quick-start.md +16 -15
  38. package/apps/runtime/dist/docs/dev/plugins/reference.md +52 -40
  39. package/apps/runtime/dist/docs/dev/plugins/reloading.md +24 -23
  40. package/apps/runtime/dist/docs/dev/plugins/routes.md +26 -22
  41. package/apps/runtime/dist/docs/dev/plugins/runners.md +49 -44
  42. package/apps/runtime/dist/docs/dev/plugins/server.md +95 -43
  43. package/apps/runtime/dist/docs/dev/plugins/shipping.md +19 -16
  44. package/apps/runtime/dist/docs/dev/plugins/space.md +75 -69
  45. package/apps/runtime/dist/docs/dev/plugins/starters.md +22 -17
  46. package/apps/runtime/dist/docs/dev/plugins/studio.md +80 -37
  47. package/apps/runtime/dist/docs/dev/plugins/styling.md +44 -41
  48. package/apps/runtime/dist/docs/dev/plugins/tables.md +11 -11
  49. package/apps/runtime/dist/docs/dev/plugins/tools.md +26 -25
  50. package/apps/runtime/dist/docs/dev/wizard-format.md +35 -23
  51. package/apps/runtime/dist/docs/user/ai-apps.md +46 -43
  52. package/apps/runtime/dist/docs/user/assistant.md +41 -36
  53. package/apps/runtime/dist/docs/user/build-a-wizard.md +64 -39
  54. package/apps/runtime/dist/docs/user/command-line.md +47 -44
  55. package/apps/runtime/dist/docs/user/connectors.md +40 -35
  56. package/apps/runtime/dist/docs/user/create-account.md +27 -22
  57. package/apps/runtime/dist/docs/user/data.md +29 -29
  58. package/apps/runtime/dist/docs/user/first-start.md +26 -28
  59. package/apps/runtime/dist/docs/user/index.md +16 -17
  60. package/apps/runtime/dist/docs/user/install.md +28 -27
  61. package/apps/runtime/dist/docs/user/local-only.md +21 -17
  62. package/apps/runtime/dist/docs/user/models.md +92 -84
  63. package/apps/runtime/dist/docs/user/plugins.md +28 -23
  64. package/apps/runtime/dist/docs/user/run.md +51 -50
  65. package/apps/runtime/dist/docs/user/server.md +9 -9
  66. package/apps/runtime/dist/docs/user/space.md +87 -65
  67. package/apps/runtime/dist/docs/user/steps.md +73 -69
  68. package/apps/runtime/dist/docs/user/test-and-share.md +127 -105
  69. package/apps/runtime/dist/docs/user/troubleshooting.md +40 -38
  70. package/apps/runtime/dist/docs/user/wordpress.md +62 -54
  71. package/apps/runtime/dist/documents/parse.js +2 -2
  72. package/apps/runtime/dist/engenty/shims/web-ingest.js +17 -1
  73. package/apps/runtime/dist/engine/input.js +4 -4
  74. package/apps/runtime/dist/engine/push.js +2 -2
  75. package/apps/runtime/dist/engine/runner.js +8 -8
  76. package/apps/runtime/dist/engine/steps.js +4 -4
  77. package/apps/runtime/dist/engine/surface.js +1 -1
  78. package/apps/runtime/dist/film/step.js +3 -3
  79. package/apps/runtime/dist/harness/claude.js +1 -1
  80. package/apps/runtime/dist/harness/codex.js +1 -1
  81. package/apps/runtime/dist/harness/model.js +2 -2
  82. package/apps/runtime/dist/harness/terminal.js +3 -3
  83. package/apps/runtime/dist/mcp/handler.js +2 -2
  84. package/apps/runtime/dist/mcp/tools.js +9 -9
  85. package/apps/runtime/dist/models.js +15 -15
  86. package/apps/runtime/dist/plugins/claims.js +56 -0
  87. package/apps/runtime/dist/plugins/loader.js +2 -0
  88. package/apps/runtime/dist/plugins/public.js +2 -3
  89. package/apps/runtime/dist/plugins/runs.js +13 -8
  90. package/apps/runtime/dist/render/chromium.js +24 -11
  91. package/apps/runtime/dist/routes/api.js +16 -10
  92. package/apps/runtime/dist/routes/debug.js +1 -1
  93. package/apps/runtime/dist/routes/delivery.js +46 -0
  94. package/apps/runtime/dist/routes/lang.js +7 -0
  95. package/apps/runtime/dist/routes/marketplace.js +2 -1
  96. package/apps/runtime/dist/routes/plugin-public.js +2 -1
  97. package/apps/runtime/dist/routes/plugins.js +13 -14
  98. package/apps/runtime/dist/routes/runs.js +59 -49
  99. package/apps/runtime/dist/routes/studio.js +58 -28
  100. package/apps/runtime/dist/services/access.js +3 -3
  101. package/apps/runtime/dist/services/assistant-chats.js +1 -1
  102. package/apps/runtime/dist/services/brand.js +2 -2
  103. package/apps/runtime/dist/services/cloud.js +5 -4
  104. package/apps/runtime/dist/services/errors.js +2 -1
  105. package/apps/runtime/dist/services/knowledge-model.js +10 -10
  106. package/apps/runtime/dist/services/knowledge.js +19 -19
  107. package/apps/runtime/dist/services/marketplace.js +2 -2
  108. package/apps/runtime/dist/services/package-file.js +12 -9
  109. package/apps/runtime/dist/services/package.js +3 -3
  110. package/apps/runtime/dist/services/project-files.js +15 -17
  111. package/apps/runtime/dist/services/project-index.js +10 -10
  112. package/apps/runtime/dist/services/projects.js +13 -8
  113. package/apps/runtime/dist/services/relevance.js +3 -3
  114. package/apps/runtime/dist/services/runners.js +4 -3
  115. package/apps/runtime/dist/services/runs.js +3 -3
  116. package/apps/runtime/dist/services/site.js +10 -10
  117. package/apps/runtime/dist/services/space-categories.js +22 -22
  118. package/apps/runtime/dist/services/space-data.js +16 -16
  119. package/apps/runtime/dist/services/space-origin.js +4 -4
  120. package/apps/runtime/dist/services/spaces.js +10 -10
  121. package/apps/runtime/dist/services/wizards.js +5 -5
  122. package/apps/runtime/dist/tools/index.js +1 -1
  123. package/apps/runtime/dist/tools/net-guard.js +135 -24
  124. package/apps/runtime/dist/tools/pages.js +4 -4
  125. package/apps/runtime/dist/tools/plugin.js +1 -1
  126. package/apps/runtime/dist/tools/project.js +10 -10
  127. package/apps/runtime/dist/tools/store.js +1 -1
  128. package/apps/runtime/dist/widgets/step.js +1 -1
  129. package/apps/web/dist/assets/AboutDialog-DaYwk84X.js +1 -0
  130. package/apps/web/dist/assets/{ChangelogDialog-Cm25slr3.js → ChangelogDialog-CsYbEayb.js} +1 -1
  131. package/apps/web/dist/assets/{ChatView-BXtXWnqK.js → ChatView-BRD3fKZU.js} +1 -1
  132. package/apps/web/dist/assets/EditorPage-ocPlZD3E.js +3 -0
  133. package/apps/web/dist/assets/{FlowPreview-BsfjDVv8.js → FlowPreview-Bm7sv746.js} +1 -1
  134. package/apps/web/dist/assets/{Harness-B0hD5Pp7.js → Harness-DKE-YNA5.js} +1 -1
  135. package/apps/web/dist/assets/{NewWizardChannels-DMDp9Ao5.js → NewWizardChannels-CnWckqjO.js} +1 -1
  136. package/apps/web/dist/assets/{NewWizardPage-aOisxyk2.js → NewWizardPage-BXTpbHVM.js} +1 -1
  137. package/apps/web/dist/assets/{OnboardingPage-Czb0pOyy.js → OnboardingPage-3Rz5uOsa.js} +1 -1
  138. package/apps/web/dist/assets/{ProjectPage-DPCtb42K.js → ProjectPage-QdSJwm3k.js} +1 -1
  139. package/apps/web/dist/assets/{PublicRunner-CvyA-gkf.js → PublicRunner-DEpBer5g.js} +1 -1
  140. package/apps/web/dist/assets/ReadOnly-rr_RJD-a.js +1 -0
  141. package/apps/web/dist/assets/{RunDrawer-BCiPEz9g.js → RunDrawer-BsZt0tL9.js} +1 -1
  142. package/apps/web/dist/assets/{RunnerView-4z6DMzE6.js → RunnerView-BbRukEdE.js} +1 -1
  143. package/apps/web/dist/assets/SettingsPage-qkWsQIMN.js +1 -0
  144. package/apps/web/dist/assets/{SetupPage-YFoU_nXK.js → SetupPage-PzvPPLfM.js} +1 -1
  145. package/apps/web/dist/assets/{SharePage-BBHiJ34e.js → SharePage-7vdDWG1n.js} +1 -1
  146. package/apps/web/dist/assets/changelog-BFdAYD28.js +1 -0
  147. package/apps/web/dist/assets/{esm-hSq-jeOG.js → esm-g0kaGp8t.js} +1 -1
  148. package/apps/web/dist/assets/{index-CSeBGwy0.css → index-Bi2x2g7n.css} +1 -1
  149. package/apps/web/dist/assets/{index-DB_iwB35.js → index-BzPid1oQ.js} +4 -4
  150. package/apps/web/dist/assets/lock-BK9RYIft.js +1 -0
  151. package/apps/web/dist/assets/oss-credits-BJrR7BR1.js +1 -0
  152. package/apps/web/dist/assets/{phone-CeqyvwK-.js → phone-DtkY0NfU.js} +1 -1
  153. package/apps/web/dist/assets/{settings-menu-BK8WpcGv.js → settings-menu-7EJQRFOi.js} +1 -1
  154. package/apps/web/dist/assets/{ui-BbIh6SOJ.js → ui-B6S5hYPd.js} +3 -3
  155. package/apps/web/dist/assets/{upload-BQrAlHIG.js → upload-rYCAy7ox.js} +1 -1
  156. package/apps/web/dist/index.html +3 -3
  157. package/apps/web/dist/mcp/flow.html +4 -4
  158. package/bin/wizards.mjs +1 -1
  159. package/node_modules/@engenty-wizards/plugin-sdk/dist/index.d.ts +33 -14
  160. package/node_modules/@engenty-wizards/plugin-sdk/dist/studio.d.ts +3 -3
  161. package/node_modules/@engenty-wizards/shared/dist/definition.d.ts +690 -690
  162. package/node_modules/@engenty-wizards/shared/dist/definition.js +1 -1
  163. package/node_modules/@engenty-wizards/shared/dist/engenty/data-tables/columns.d.ts +76 -76
  164. package/node_modules/@engenty-wizards/shared/dist/feature-flags.d.ts +3 -3
  165. package/node_modules/@engenty-wizards/shared/dist/feature-flags.js +3 -3
  166. package/node_modules/@engenty-wizards/shared/dist/knowledge.d.ts +13 -13
  167. package/node_modules/@engenty-wizards/shared/dist/knowledge.js +4 -4
  168. package/node_modules/@engenty-wizards/shared/dist/marketplace.d.ts +4 -4
  169. package/node_modules/@engenty-wizards/shared/dist/projects.js +1 -1
  170. package/node_modules/@engenty-wizards/shared/dist/run.d.ts +48 -48
  171. package/node_modules/@engenty-wizards/shared/dist/run.js +48 -48
  172. package/node_modules/@engenty-wizards/shared/dist/space-data.d.ts +2 -2
  173. package/node_modules/@engenty-wizards/shared/dist/surface.d.ts +20 -20
  174. package/node_modules/@engenty-wizards/shared/dist/wizard-package.js +1 -1
  175. package/package.json +5 -4
  176. package/apps/web/dist/assets/AboutDialog-BtAuA44m.js +0 -1
  177. package/apps/web/dist/assets/EditorPage-B4jX_Ckc.js +0 -3
  178. package/apps/web/dist/assets/ReadOnly-DFysMEMF.js +0 -1
  179. package/apps/web/dist/assets/SettingsPage-BKkOfz6P.js +0 -1
  180. package/apps/web/dist/assets/changelog-D8WjOq7d.js +0 -1
  181. package/apps/web/dist/assets/circle-alert-BVj6idzu.js +0 -1
  182. package/apps/web/dist/assets/lock-BoWS-JhN.js +0 -1
  183. package/apps/web/dist/assets/oss-credits-BQQX0kvk.js +0 -1
@@ -169,11 +169,11 @@ export declare const RUN_NOTES: {
169
169
  };
170
170
  readonly deciding: {
171
171
  readonly de: "Entscheidet, wie es weitergeht …";
172
- readonly en: "Deciding how to go on …";
172
+ readonly en: "Deciding what to do next…";
173
173
  };
174
174
  readonly choosingFields: {
175
175
  readonly de: "Wählt die passenden Fragen …";
176
- readonly en: "Choosing the right questions …";
176
+ readonly en: "Choosing the right questions…";
177
177
  };
178
178
  readonly batchDone: {
179
179
  readonly de: "{done} von {total} fertig";
@@ -201,11 +201,11 @@ export declare const RUN_NOTES: {
201
201
  };
202
202
  readonly listen: {
203
203
  readonly de: "Hört „{label}“ an …";
204
- readonly en: "Listening to “{label}” …";
204
+ readonly en: "Listening to “{label}”…";
205
205
  };
206
206
  readonly listenFailed: {
207
207
  readonly de: "„{label}“ konnte nicht verschriftlicht werden.";
208
- readonly en: "“{label}” could not be written down.";
208
+ readonly en: "“{label}” couldn’t be transcribed.";
209
209
  };
210
210
  readonly filmCutting: {
211
211
  readonly de: "Der Film wird geschnitten – das dauert etwa eine Minute.";
@@ -285,7 +285,7 @@ export declare const RUN_NOTES: {
285
285
  };
286
286
  readonly personDrives: {
287
287
  readonly de: "Du steuerst den Browser – der Wizard wartet";
288
- readonly en: "You are driving the browser – the wizard waits";
288
+ readonly en: "You’re driving the browser – the wizard waits";
289
289
  };
290
290
  readonly agentDrives: {
291
291
  readonly de: "Der Wizard macht im Browser weiter";
@@ -297,7 +297,7 @@ export declare const RUN_NOTES: {
297
297
  };
298
298
  readonly waitsForSignIn: {
299
299
  readonly de: "Wartet auf deine Anmeldung bei {name}";
300
- readonly en: "Waiting for you to sign in at {name}";
300
+ readonly en: "Waiting for you to sign in to {name}";
301
301
  };
302
302
  readonly downloads: {
303
303
  readonly de: "Lädt {name} herunter";
@@ -325,11 +325,11 @@ export declare const RUN_NOTES: {
325
325
  };
326
326
  readonly searchesKnowledge: {
327
327
  readonly de: "Sucht in Wissen: {query} – {relevant} von {candidates} passen";
328
- readonly en: "Searching the knowledge: {query} – {relevant} of {candidates} fit";
328
+ readonly en: "Searching knowledge: {query} – {relevant} of {candidates} fit";
329
329
  };
330
330
  readonly listsKnowledge: {
331
331
  readonly de: "Listet Wissen";
332
- readonly en: "Listing the knowledge";
332
+ readonly en: "Listing knowledge";
333
333
  };
334
334
  readonly searchesMail: {
335
335
  readonly de: "Durchsucht {label}";
@@ -365,7 +365,7 @@ export declare const RUN_NOTES: {
365
365
  };
366
366
  readonly filmFix: {
367
367
  readonly de: "Der Film ließ sich nicht rendern – Claude Code bessert nach";
368
- readonly en: "The film did not render – Claude Code is fixing it";
368
+ readonly en: "The film didn’t render – Claude Code is fixing it";
369
369
  };
370
370
  readonly filmResume: {
371
371
  readonly de: "Macht dort weiter, wo der Film stehen geblieben ist";
@@ -373,22 +373,22 @@ export declare const RUN_NOTES: {
373
373
  };
374
374
  readonly wizardUnavailable: {
375
375
  readonly de: "Dieser Wizard ist gerade nicht verfügbar.";
376
- readonly en: "This wizard is not available right now.";
376
+ readonly en: "This wizard isn’t available right now.";
377
377
  };
378
378
  readonly wizardLimit: {
379
- readonly de: "Für heute ist das Limit dieses Wizards erreicht. Bitte morgen wieder versuchen.";
379
+ readonly de: "Für heute ist das Limit dieses Wizards erreicht. Versuch es morgen wieder.";
380
380
  readonly en: "This wizard has reached its limit for today. Try again tomorrow.";
381
381
  };
382
382
  readonly confirmHuman: {
383
- readonly de: "Bitte bestätige kurz, dass du ein Mensch bist.";
384
- readonly en: "Please confirm that you are a person.";
383
+ readonly de: "Bestätige kurz, dass du ein Mensch bist.";
384
+ readonly en: "Confirm that you’re a person.";
385
385
  };
386
386
  readonly tooManyRuns: {
387
- readonly de: "Du hast gerade viele Durchläufe gestartet. Bitte versuche es in einer Stunde wieder.";
388
- readonly en: "You started many runs just now. Try again in an hour.";
387
+ readonly de: "Du hast gerade viele Läufe gestartet. Versuch es in einer Stunde wieder.";
388
+ readonly en: "You’ve started a lot of runs just now. Try again in an hour.";
389
389
  };
390
390
  readonly runOver: {
391
- readonly de: "Der Durchlauf ist beendet.";
391
+ readonly de: "Der Lauf ist beendet.";
392
392
  readonly en: "The run is over.";
393
393
  };
394
394
  readonly runBusy: {
@@ -404,36 +404,36 @@ export declare const RUN_NOTES: {
404
404
  readonly en: "There is no step before this one.";
405
405
  };
406
406
  readonly checkFields: {
407
- readonly de: "Bitte die markierten Felder prüfen.";
408
- readonly en: "Please check the marked fields.";
407
+ readonly de: "Prüf die markierten Felder.";
408
+ readonly en: "Check the marked fields.";
409
409
  };
410
410
  readonly talkOff: {
411
411
  readonly de: "Live-Gespräche sind für diesen Wizard nicht eingeschaltet.";
412
- readonly en: "Live conversations are not switched on for this wizard.";
412
+ readonly en: "Live conversations aren’t turned on for this wizard.";
413
413
  };
414
414
  readonly talkKeyRefused: {
415
- readonly de: "Das Gespräch ließ sich nicht starten: Der OpenAI API Key wurde abgelehnt.";
416
- readonly en: "The conversation could not be started: the OpenAI API key was refused.";
415
+ readonly de: "Das Gespräch ließ sich nicht starten: Der OpenAI-API-Key wurde abgelehnt.";
416
+ readonly en: "The conversation couldn’t start: the OpenAI API key was refused.";
417
417
  };
418
418
  readonly talkFailed: {
419
419
  readonly de: "Das Gespräch ließ sich nicht starten ({status}).";
420
- readonly en: "The conversation could not be started ({status}).";
420
+ readonly en: "The conversation couldn’t start ({status}).";
421
421
  };
422
422
  readonly talkNoSecret: {
423
423
  readonly de: "Das Gespräch ließ sich nicht starten: Es kam kein Zugang zurück.";
424
- readonly en: "The conversation could not be started: no secret came back.";
424
+ readonly en: "The conversation couldn’t start: no access key came back.";
425
425
  };
426
426
  readonly tryLater: {
427
- readonly de: "Bitte später noch einmal.";
427
+ readonly de: "Versuch es später noch einmal.";
428
428
  readonly en: "Try again later.";
429
429
  };
430
430
  readonly recordingTooLarge: {
431
- readonly de: "Bitte eine Aufnahme bis 10 MB.";
432
- readonly en: "A recording of up to 10 MB, please.";
431
+ readonly de: "Die Aufnahme darf höchstens 10 MB groß sein.";
432
+ readonly en: "The recording can be 10 MB at most.";
433
433
  };
434
434
  readonly fileTooLarge: {
435
- readonly de: "Bitte eine Datei bis {mb} MB wählen.";
436
- readonly en: "Choose a file of up to {mb} MB, please.";
435
+ readonly de: "Wähl eine Datei bis {mb} MB.";
436
+ readonly en: "Choose a file of {mb} MB or less.";
437
437
  };
438
438
  readonly askClosed: {
439
439
  readonly de: "Diese Frage ist nicht mehr offen.";
@@ -445,11 +445,11 @@ export declare const RUN_NOTES: {
445
445
  };
446
446
  readonly notWaiting: {
447
447
  readonly de: "Der Wizard wartet gerade nicht auf dich.";
448
- readonly en: "The wizard is not waiting for you right now.";
448
+ readonly en: "The wizard isn’t waiting for you right now.";
449
449
  };
450
450
  readonly pageActFailed: {
451
451
  readonly de: "Das hat auf der Seite nicht geklappt.";
452
- readonly en: "That did not work on the page.";
452
+ readonly en: "That didn’t work on the page.";
453
453
  };
454
454
  readonly linkGone: {
455
455
  readonly de: "Dieser Link ist abgelaufen oder wurde zurückgezogen.";
@@ -460,24 +460,24 @@ export declare const RUN_NOTES: {
460
460
  readonly en: "Connected. You can close this window.";
461
461
  };
462
462
  readonly connectFailed: {
463
- readonly de: "Verbinden hat nicht geklappt. Bitte noch einmal versuchen.";
464
- readonly en: "Connecting did not work. Try again.";
463
+ readonly de: "Verbinden hat nicht geklappt. Versuch es noch einmal.";
464
+ readonly en: "Connecting didn’t work. Try again.";
465
465
  };
466
466
  readonly connectCancelled: {
467
467
  readonly de: "Verbinden wurde abgebrochen.";
468
468
  readonly en: "Connecting was cancelled.";
469
469
  };
470
470
  readonly appleOff: {
471
- readonly de: "Apple Intelligence ist auf diesem Mac ausgeschaltet. Einschalten unter Systemeinstellungen → Apple Intelligence & Siri.";
472
- readonly en: "Apple Intelligence is switched off on this Mac. Switch it on in System Settings → Apple Intelligence & Siri.";
471
+ readonly de: "Apple Intelligence ist auf diesem Mac ausgeschaltet. Schalte es unter Systemeinstellungen → Apple Intelligence & Siri ein.";
472
+ readonly en: "Apple Intelligence is turned off on this Mac. Turn it on in System Settings → Apple Intelligence & Siri.";
473
473
  };
474
474
  readonly appleLoading: {
475
- readonly de: "Apple lädt das Modell für Apple Intelligence noch auf diesen Mac. Gleich noch einmal versuchen.";
475
+ readonly de: "Apple lädt das Modell für Apple Intelligence noch auf diesen Mac. Versuch es gleich noch einmal.";
476
476
  readonly en: "Apple is still loading the model for Apple Intelligence onto this Mac. Try again in a moment.";
477
477
  };
478
478
  readonly appleMissing: {
479
479
  readonly de: "Der Helfer für Apple Intelligence (wizards-apple) fehlt in dieser Installation.";
480
- readonly en: "The helper for Apple Intelligence (wizards-apple) is missing from this installation.";
480
+ readonly en: "The helper for Apple Intelligence (wizards-apple) is missing from this install.";
481
481
  };
482
482
  readonly appleOs: {
483
483
  readonly de: "Apple Intelligence braucht macOS 26 oder neuer.";
@@ -485,39 +485,39 @@ export declare const RUN_NOTES: {
485
485
  };
486
486
  readonly appleDevice: {
487
487
  readonly de: "Apple Intelligence gibt es nur auf einem Mac mit Apple Silicon.";
488
- readonly en: "Apple Intelligence is only there on a Mac with Apple silicon.";
488
+ readonly en: "Apple Intelligence only works on a Mac with Apple silicon.";
489
489
  };
490
490
  readonly appleBusy: {
491
- readonly de: "Apple Intelligence nimmt gerade keine weiteren Anfragen an. Gleich noch einmal versuchen.";
492
- readonly en: "Apple Intelligence takes no more requests right now. Try again in a moment.";
491
+ readonly de: "Apple Intelligence nimmt gerade keine weiteren Anfragen an. Versuch es gleich noch einmal.";
492
+ readonly en: "Apple Intelligence isn’t taking more requests right now. Try again in a moment.";
493
493
  };
494
494
  readonly appleTooLong: {
495
- readonly de: "Apple Intelligence: Der Text ist zu lang für das Modell auf diesem Mac (4.096 Tokens für Frage und Antwort). Diese Klasse in den Einstellungen unter „Modelle“ auf ein anderes Modell legen.";
496
- readonly en: "Apple Intelligence: the text is too long for the model on this Mac (4,096 tokens for question and answer). Put this class on another model under “Models” in the settings.";
495
+ readonly de: "Der Text ist zu lang für Apple Intelligence auf diesem Mac (4.096 Tokens für Frage und Antwort). Wähle unter Einstellungen → Modelle ein anderes Modell für diese Klasse.";
496
+ readonly en: "The text is too long for Apple Intelligence on this Mac (4,096 tokens for question and answer). Choose another model for this class under Settings → Models.";
497
497
  };
498
498
  readonly appleRefused: {
499
499
  readonly de: "Apple Intelligence hat die Anfrage abgelehnt: Apples Inhaltsregeln lassen sie nicht zu.";
500
- readonly en: "Apple Intelligence turned the request down: Apple's content rules do not allow it.";
500
+ readonly en: "Apple Intelligence turned the request down: Apple’s content rules don’t allow it.";
501
501
  };
502
502
  readonly appleLanguage: {
503
503
  readonly de: "Apple Intelligence versteht die Sprache dieser Anfrage nicht.";
504
- readonly en: "Apple Intelligence does not understand the language of this request.";
504
+ readonly en: "Apple Intelligence doesn’t understand the language of this request.";
505
505
  };
506
506
  readonly appleFormat: {
507
507
  readonly de: "Apple Intelligence kann dieses Antwortformat nicht liefern: {detail}";
508
- readonly en: "Apple Intelligence cannot answer in this format: {detail}";
508
+ readonly en: "Apple Intelligence can’t answer in this format: {detail}";
509
509
  };
510
510
  readonly appleFailed: {
511
511
  readonly de: "Apple Intelligence: {detail}";
512
512
  readonly en: "Apple Intelligence: {detail}";
513
513
  };
514
514
  readonly appleNoFfmpeg: {
515
- readonly de: "Apple Intelligence liest {type} nicht; ohne ffmpeg bleibt die Aufnahme so. ffmpeg installieren oder im Browser als MP4 aufnehmen.";
516
- readonly en: "Apple Intelligence cannot read {type}, and without ffmpeg the recording stays as it is. Install ffmpeg or record as MP4 in the browser.";
515
+ readonly de: "Apple Intelligence liest {type} nicht, und ohne ffmpeg lässt sich die Aufnahme nicht umwandeln. Installiere ffmpeg oder nimm im Browser als MP4 auf.";
516
+ readonly en: "Apple Intelligence can’t read {type}, and without ffmpeg the recording can’t be converted. Install ffmpeg or record as MP4 in the browser.";
517
517
  };
518
518
  readonly appleNotConverted: {
519
- readonly de: "Apple Intelligence: die Aufnahme ließ sich nicht wandeln: {detail}";
520
- readonly en: "Apple Intelligence: the recording could not be converted: {detail}";
519
+ readonly de: "Apple Intelligence konnte die Aufnahme nicht umwandeln: {detail}";
520
+ readonly en: "Apple Intelligence couldn’t convert the recording: {detail}";
521
521
  };
522
522
  };
523
523
  export type RunNoteCode = keyof typeof RUN_NOTES;
@@ -8,8 +8,8 @@ export const RUN_NOTES = {
8
8
  // A line written out in both languages where no line of its own fits (`bilingual`).
9
9
  text: { de: "{de}", en: "{en}" },
10
10
  entry: { de: "Eintrag {n} von {total}", en: "Entry {n} of {total}" },
11
- deciding: { de: "Entscheidet, wie es weitergeht …", en: "Deciding how to go on …" },
12
- choosingFields: { de: "Wählt die passenden Fragen …", en: "Choosing the right questions …" },
11
+ deciding: { de: "Entscheidet, wie es weitergeht …", en: "Deciding what to do next…" },
12
+ choosingFields: { de: "Wählt die passenden Fragen …", en: "Choosing the right questions…" },
13
13
  batchDone: { de: "{done} von {total} fertig", en: "{done} of {total} done" },
14
14
  editing: { de: "Bearbeitet {n} von {total}", en: "Editing {n} of {total}" },
15
15
  filming: { de: "Dreht {n} von {total}", en: "Filming {n} of {total}" },
@@ -22,10 +22,10 @@ export const RUN_NOTES = {
22
22
  en: "Rendering the video – this usually takes 1–3 minutes.",
23
23
  },
24
24
  photo: { de: "Sieht sich Foto {n} von {total} an", en: "Looking at photo {n} of {total}" },
25
- listen: { de: "Hört „{label}“ an …", en: "Listening to “{label}” …" },
25
+ listen: { de: "Hört „{label}“ an …", en: "Listening to “{label}”…" },
26
26
  listenFailed: {
27
27
  de: "„{label}“ konnte nicht verschriftlicht werden.",
28
- en: "“{label}” could not be written down.",
28
+ en: "“{label}” couldn’t be transcribed.",
29
29
  },
30
30
  filmCutting: {
31
31
  de: "Der Film wird geschnitten – das dauert etwa eine Minute.",
@@ -57,7 +57,7 @@ export const RUN_NOTES = {
57
57
  fastLoop: { de: "Erledigt im Browser: {goal}", en: "Doing in the browser: {goal}" },
58
58
  personDrives: {
59
59
  de: "Du steuerst den Browser – der Wizard wartet",
60
- en: "You are driving the browser – the wizard waits",
60
+ en: "You’re driving the browser – the wizard waits",
61
61
  },
62
62
  agentDrives: {
63
63
  de: "Der Wizard macht im Browser weiter",
@@ -66,7 +66,7 @@ export const RUN_NOTES = {
66
66
  looksAtPage: { de: "Sieht sich die Seite an", en: "Looking at the page" },
67
67
  waitsForSignIn: {
68
68
  de: "Wartet auf deine Anmeldung bei {name}",
69
- en: "Waiting for you to sign in at {name}",
69
+ en: "Waiting for you to sign in to {name}",
70
70
  },
71
71
  downloads: { de: "Lädt {name} herunter", en: "Downloading {name}" },
72
72
  runs: { de: "Führt aus: {command}", en: "Running: {command}" },
@@ -79,9 +79,9 @@ export const RUN_NOTES = {
79
79
  },
80
80
  searchesKnowledge: {
81
81
  de: "Sucht in Wissen: {query} – {relevant} von {candidates} passen",
82
- en: "Searching the knowledge: {query} – {relevant} of {candidates} fit",
82
+ en: "Searching knowledge: {query} – {relevant} of {candidates} fit",
83
83
  },
84
- listsKnowledge: { de: "Listet Wissen", en: "Listing the knowledge" },
84
+ listsKnowledge: { de: "Listet Wissen", en: "Listing knowledge" },
85
85
  searchesMail: { de: "Durchsucht {label}", en: "Searching {label}" },
86
86
  savesReceipts: {
87
87
  de: "Speichert {count} Belege aus {label}",
@@ -101,7 +101,7 @@ export const RUN_NOTES = {
101
101
  filmLooks: { de: "Sieht sich Bilder des Films an", en: "Looking at frames of the film" },
102
102
  filmFix: {
103
103
  de: "Der Film ließ sich nicht rendern – Claude Code bessert nach",
104
- en: "The film did not render – Claude Code is fixing it",
104
+ en: "The film didn’t render – Claude Code is fixing it",
105
105
  },
106
106
  filmResume: {
107
107
  de: "Macht dort weiter, wo der Film stehen geblieben ist",
@@ -110,21 +110,21 @@ export const RUN_NOTES = {
110
110
  // What the runtime answers the person running a shared wizard, in the wizard's language.
111
111
  wizardUnavailable: {
112
112
  de: "Dieser Wizard ist gerade nicht verfügbar.",
113
- en: "This wizard is not available right now.",
113
+ en: "This wizard isn’t available right now.",
114
114
  },
115
115
  wizardLimit: {
116
- de: "Für heute ist das Limit dieses Wizards erreicht. Bitte morgen wieder versuchen.",
116
+ de: "Für heute ist das Limit dieses Wizards erreicht. Versuch es morgen wieder.",
117
117
  en: "This wizard has reached its limit for today. Try again tomorrow.",
118
118
  },
119
119
  confirmHuman: {
120
- de: "Bitte bestätige kurz, dass du ein Mensch bist.",
121
- en: "Please confirm that you are a person.",
120
+ de: "Bestätige kurz, dass du ein Mensch bist.",
121
+ en: "Confirm that you’re a person.",
122
122
  },
123
123
  tooManyRuns: {
124
- de: "Du hast gerade viele Durchläufe gestartet. Bitte versuche es in einer Stunde wieder.",
125
- en: "You started many runs just now. Try again in an hour.",
124
+ de: "Du hast gerade viele Läufe gestartet. Versuch es in einer Stunde wieder.",
125
+ en: "You’ve started a lot of runs just now. Try again in an hour.",
126
126
  },
127
- runOver: { de: "Der Durchlauf ist beendet.", en: "The run is over." },
127
+ runOver: { de: "Der Lauf ist beendet.", en: "The run is over." },
128
128
  runBusy: { de: "Der Wizard arbeitet gerade.", en: "The wizard is working right now." },
129
129
  pageOutdated: {
130
130
  de: "Diese Seite ist nicht mehr aktuell.",
@@ -132,33 +132,33 @@ export const RUN_NOTES = {
132
132
  },
133
133
  noStepBefore: { de: "Kein vorheriger Schritt.", en: "There is no step before this one." },
134
134
  checkFields: {
135
- de: "Bitte die markierten Felder prüfen.",
136
- en: "Please check the marked fields.",
135
+ de: "Prüf die markierten Felder.",
136
+ en: "Check the marked fields.",
137
137
  },
138
138
  talkOff: {
139
139
  de: "Live-Gespräche sind für diesen Wizard nicht eingeschaltet.",
140
- en: "Live conversations are not switched on for this wizard.",
140
+ en: "Live conversations aren’t turned on for this wizard.",
141
141
  },
142
142
  talkKeyRefused: {
143
- de: "Das Gespräch ließ sich nicht starten: Der OpenAI API Key wurde abgelehnt.",
144
- en: "The conversation could not be started: the OpenAI API key was refused.",
143
+ de: "Das Gespräch ließ sich nicht starten: Der OpenAI-API-Key wurde abgelehnt.",
144
+ en: "The conversation couldn’t start: the OpenAI API key was refused.",
145
145
  },
146
146
  talkFailed: {
147
147
  de: "Das Gespräch ließ sich nicht starten ({status}).",
148
- en: "The conversation could not be started ({status}).",
148
+ en: "The conversation couldn’t start ({status}).",
149
149
  },
150
150
  talkNoSecret: {
151
151
  de: "Das Gespräch ließ sich nicht starten: Es kam kein Zugang zurück.",
152
- en: "The conversation could not be started: no secret came back.",
152
+ en: "The conversation couldn’t start: no access key came back.",
153
153
  },
154
- tryLater: { de: "Bitte später noch einmal.", en: "Try again later." },
154
+ tryLater: { de: "Versuch es später noch einmal.", en: "Try again later." },
155
155
  recordingTooLarge: {
156
- de: "Bitte eine Aufnahme bis 10 MB.",
157
- en: "A recording of up to 10 MB, please.",
156
+ de: "Die Aufnahme darf höchstens 10 MB groß sein.",
157
+ en: "The recording can be 10 MB at most.",
158
158
  },
159
159
  fileTooLarge: {
160
- de: "Bitte eine Datei bis {mb} MB wählen.",
161
- en: "Choose a file of up to {mb} MB, please.",
160
+ de: "Wähl eine Datei bis {mb} MB.",
161
+ en: "Choose a file of {mb} MB or less.",
162
162
  },
163
163
  askClosed: {
164
164
  de: "Diese Frage ist nicht mehr offen.",
@@ -170,11 +170,11 @@ export const RUN_NOTES = {
170
170
  },
171
171
  notWaiting: {
172
172
  de: "Der Wizard wartet gerade nicht auf dich.",
173
- en: "The wizard is not waiting for you right now.",
173
+ en: "The wizard isn’t waiting for you right now.",
174
174
  },
175
175
  pageActFailed: {
176
176
  de: "Das hat auf der Seite nicht geklappt.",
177
- en: "That did not work on the page.",
177
+ en: "That didn’t work on the page.",
178
178
  },
179
179
  linkGone: {
180
180
  de: "Dieser Link ist abgelaufen oder wurde zurückgezogen.",
@@ -185,22 +185,22 @@ export const RUN_NOTES = {
185
185
  en: "Connected. You can close this window.",
186
186
  },
187
187
  connectFailed: {
188
- de: "Verbinden hat nicht geklappt. Bitte noch einmal versuchen.",
189
- en: "Connecting did not work. Try again.",
188
+ de: "Verbinden hat nicht geklappt. Versuch es noch einmal.",
189
+ en: "Connecting didn’t work. Try again.",
190
190
  },
191
191
  connectCancelled: { de: "Verbinden wurde abgebrochen.", en: "Connecting was cancelled." },
192
192
  // Apple Intelligence on the Mac the runtime runs on (apps/runtime/src/harness/apple.ts).
193
193
  appleOff: {
194
- de: "Apple Intelligence ist auf diesem Mac ausgeschaltet. Einschalten unter Systemeinstellungen → Apple Intelligence & Siri.",
195
- en: "Apple Intelligence is switched off on this Mac. Switch it on in System Settings → Apple Intelligence & Siri.",
194
+ de: "Apple Intelligence ist auf diesem Mac ausgeschaltet. Schalte es unter Systemeinstellungen → Apple Intelligence & Siri ein.",
195
+ en: "Apple Intelligence is turned off on this Mac. Turn it on in System Settings → Apple Intelligence & Siri.",
196
196
  },
197
197
  appleLoading: {
198
- de: "Apple lädt das Modell für Apple Intelligence noch auf diesen Mac. Gleich noch einmal versuchen.",
198
+ de: "Apple lädt das Modell für Apple Intelligence noch auf diesen Mac. Versuch es gleich noch einmal.",
199
199
  en: "Apple is still loading the model for Apple Intelligence onto this Mac. Try again in a moment.",
200
200
  },
201
201
  appleMissing: {
202
202
  de: "Der Helfer für Apple Intelligence (wizards-apple) fehlt in dieser Installation.",
203
- en: "The helper for Apple Intelligence (wizards-apple) is missing from this installation.",
203
+ en: "The helper for Apple Intelligence (wizards-apple) is missing from this install.",
204
204
  },
205
205
  appleOs: {
206
206
  de: "Apple Intelligence braucht macOS 26 oder neuer.",
@@ -208,36 +208,36 @@ export const RUN_NOTES = {
208
208
  },
209
209
  appleDevice: {
210
210
  de: "Apple Intelligence gibt es nur auf einem Mac mit Apple Silicon.",
211
- en: "Apple Intelligence is only there on a Mac with Apple silicon.",
211
+ en: "Apple Intelligence only works on a Mac with Apple silicon.",
212
212
  },
213
213
  appleBusy: {
214
- de: "Apple Intelligence nimmt gerade keine weiteren Anfragen an. Gleich noch einmal versuchen.",
215
- en: "Apple Intelligence takes no more requests right now. Try again in a moment.",
214
+ de: "Apple Intelligence nimmt gerade keine weiteren Anfragen an. Versuch es gleich noch einmal.",
215
+ en: "Apple Intelligence isn’t taking more requests right now. Try again in a moment.",
216
216
  },
217
217
  appleTooLong: {
218
- de: "Apple Intelligence: Der Text ist zu lang für das Modell auf diesem Mac (4.096 Tokens für Frage und Antwort). Diese Klasse in den Einstellungen unter „Modelle“ auf ein anderes Modell legen.",
219
- en: "Apple Intelligence: the text is too long for the model on this Mac (4,096 tokens for question and answer). Put this class on another model under “Models” in the settings.",
218
+ de: "Der Text ist zu lang für Apple Intelligence auf diesem Mac (4.096 Tokens für Frage und Antwort). Wähle unter Einstellungen → Modelle ein anderes Modell für diese Klasse.",
219
+ en: "The text is too long for Apple Intelligence on this Mac (4,096 tokens for question and answer). Choose another model for this class under Settings → Models.",
220
220
  },
221
221
  appleRefused: {
222
222
  de: "Apple Intelligence hat die Anfrage abgelehnt: Apples Inhaltsregeln lassen sie nicht zu.",
223
- en: "Apple Intelligence turned the request down: Apple's content rules do not allow it.",
223
+ en: "Apple Intelligence turned the request down: Apple’s content rules don’t allow it.",
224
224
  },
225
225
  appleLanguage: {
226
226
  de: "Apple Intelligence versteht die Sprache dieser Anfrage nicht.",
227
- en: "Apple Intelligence does not understand the language of this request.",
227
+ en: "Apple Intelligence doesn’t understand the language of this request.",
228
228
  },
229
229
  appleFormat: {
230
230
  de: "Apple Intelligence kann dieses Antwortformat nicht liefern: {detail}",
231
- en: "Apple Intelligence cannot answer in this format: {detail}",
231
+ en: "Apple Intelligence can’t answer in this format: {detail}",
232
232
  },
233
233
  appleFailed: { de: "Apple Intelligence: {detail}", en: "Apple Intelligence: {detail}" },
234
234
  appleNoFfmpeg: {
235
- de: "Apple Intelligence liest {type} nicht; ohne ffmpeg bleibt die Aufnahme so. ffmpeg installieren oder im Browser als MP4 aufnehmen.",
236
- en: "Apple Intelligence cannot read {type}, and without ffmpeg the recording stays as it is. Install ffmpeg or record as MP4 in the browser.",
235
+ de: "Apple Intelligence liest {type} nicht, und ohne ffmpeg lässt sich die Aufnahme nicht umwandeln. Installiere ffmpeg oder nimm im Browser als MP4 auf.",
236
+ en: "Apple Intelligence can’t read {type}, and without ffmpeg the recording can’t be converted. Install ffmpeg or record as MP4 in the browser.",
237
237
  },
238
238
  appleNotConverted: {
239
- de: "Apple Intelligence: die Aufnahme ließ sich nicht wandeln: {detail}",
240
- en: "Apple Intelligence: the recording could not be converted: {detail}",
239
+ de: "Apple Intelligence konnte die Aufnahme nicht umwandeln: {detail}",
240
+ en: "Apple Intelligence couldn’t convert the recording: {detail}",
241
241
  },
242
242
  };
243
243
  /** What is said, in a language. */
@@ -46,7 +46,7 @@ export interface SpaceTable {
46
46
  rows: SpaceTableRow[];
47
47
  /** The space is not changed here: a local install's, or nothing is built on this runtime. */
48
48
  readOnly: boolean;
49
- /** A table of Wissen (the space's own): where it came from and its Kategorien. */
49
+ /** A table of Knowledge (the space's own): where it came from and its categories. */
50
50
  knowledge: {
51
51
  path: string;
52
52
  categories: ItemCategory[];
@@ -69,7 +69,7 @@ export interface SpacePage {
69
69
  markdown: string;
70
70
  updatedAt: string;
71
71
  readOnly: boolean;
72
- /** A page of Wissen (the space's own): where it stands, its sub-pages, its Kategorien. */
72
+ /** A page of Knowledge (the space's own): where it stands, its sub-pages, its categories. */
73
73
  knowledge: KnowledgePage | null;
74
74
  }
75
75
  export declare const SPACE_DATA_LIMITS: {
@@ -18,21 +18,21 @@ export declare const SURFACE_ACTIONS: readonly ["regenerate", "open"];
18
18
  export declare const surfaceComponentSchema: z.ZodObject<{
19
19
  id: z.ZodString;
20
20
  component: z.ZodEnum<{
21
+ Actions: "Actions";
22
+ Badge: "Badge";
23
+ BarChart: "BarChart";
24
+ Button: "Button";
21
25
  Column: "Column";
22
- Text: "Text";
23
- List: "List";
24
- Row: "Row";
25
26
  DetailGrid: "DetailGrid";
26
- Badge: "Badge";
27
+ DonutChart: "DonutChart";
27
28
  Grid: "Grid";
28
- Metric: "Metric";
29
- Table: "Table";
30
29
  Image: "Image";
31
- BarChart: "BarChart";
32
30
  LineChart: "LineChart";
33
- DonutChart: "DonutChart";
34
- Actions: "Actions";
35
- Button: "Button";
31
+ List: "List";
32
+ Metric: "Metric";
33
+ Row: "Row";
34
+ Table: "Table";
35
+ Text: "Text";
36
36
  }>;
37
37
  children: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
38
38
  path: z.ZodString;
@@ -43,21 +43,21 @@ export type SurfaceComponent = z.infer<typeof surfaceComponentSchema>;
43
43
  export declare const surfaceComponentsSchema: z.ZodArray<z.ZodObject<{
44
44
  id: z.ZodString;
45
45
  component: z.ZodEnum<{
46
+ Actions: "Actions";
47
+ Badge: "Badge";
48
+ BarChart: "BarChart";
49
+ Button: "Button";
46
50
  Column: "Column";
47
- Text: "Text";
48
- List: "List";
49
- Row: "Row";
50
51
  DetailGrid: "DetailGrid";
51
- Badge: "Badge";
52
+ DonutChart: "DonutChart";
52
53
  Grid: "Grid";
53
- Metric: "Metric";
54
- Table: "Table";
55
54
  Image: "Image";
56
- BarChart: "BarChart";
57
55
  LineChart: "LineChart";
58
- DonutChart: "DonutChart";
59
- Actions: "Actions";
60
- Button: "Button";
56
+ List: "List";
57
+ Metric: "Metric";
58
+ Row: "Row";
59
+ Table: "Table";
60
+ Text: "Text";
61
61
  }>;
62
62
  children: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodObject<{
63
63
  path: z.ZodString;
@@ -44,6 +44,6 @@ export const manifestSchema = z.object({
44
44
  .array(z.object({ id: z.string().max(31), name: z.string().max(60) }))
45
45
  .max(10)
46
46
  .default([]),
47
- /** The project's pages under `files/wissen/`, when they were asked for: how many, and whether the cap cut some. */
47
+ /** The project's pages under `files/knowledge/`, when they were asked for: how many, and whether the cap cut some. */
48
48
  knowledge: z.object({ pages: z.number().int(), truncated: z.boolean() }).optional(),
49
49
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wizards",
3
- "version": "0.4.7",
3
+ "version": "0.5.1",
4
4
  "description": "Make a wish. Get your wizard. It guides you step by step. Let AI do the work. Runs on your machine, on the AI subscription you already have.",
5
5
  "license": "FSL-1.1-MIT",
6
6
  "homepage": "https://engenty.ai",
@@ -32,12 +32,12 @@
32
32
  "@clack/prompts": "1.8.1",
33
33
  "@engenty-wizards/plugin-sdk": "0.1.0",
34
34
  "@engenty-wizards/shared": "0.1.0",
35
- "@executor-js/plugin-openapi": "1.6.8",
35
+ "@executor-js/plugin-openapi": "1.6.10",
36
36
  "@hono/node-server": "2.1.3",
37
37
  "@libsql/client": "0.18.0",
38
- "@mastra/core": "1.74.0",
38
+ "@mastra/core": "1.77.0",
39
39
  "@mastra/docker": "0.8.0",
40
- "@mastra/mcp": "2.1.2",
40
+ "@mastra/mcp": "2.4.0",
41
41
  "@modelcontextprotocol/client": "2.2.0",
42
42
  "@modelcontextprotocol/ext-apps": "2.0.3",
43
43
  "@modelcontextprotocol/server": "2.2.0",
@@ -63,6 +63,7 @@
63
63
  "postal-mime": "4.0.2",
64
64
  "rfc6902": "5.3.0",
65
65
  "turndown": "7.2.4",
66
+ "undici": "7.30.0",
66
67
  "zod": "4.6.5"
67
68
  },
68
69
  "bundleDependencies": [
@@ -1 +0,0 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t,t as n}from"./jsx-runtime-BNakU3Ej.js";import{$t as r,Kn as i,Qt as a,Vn as o,dn as s,en as c,gn as l,ln as u,on as d,pn as f,tn as p,vn as m}from"./ui-BbIh6SOJ.js";import{t as h}from"./preload-helper-CNEI7N0N.js";import{H as g,U as _,W as v,_t as y}from"./index-DB_iwB35.js";import{c as b,f as x}from"./settings-menu-BK8WpcGv.js";import{ReleaseNotes as S,loadReleases as C,releaseDate as w,releaseLabel as T}from"./ChangelogDialog-Cm25slr3.js";var E=e(t(),1),D=[{name:`engenty wizards`,description:{de:`KI-Wizards aus einer Beschreibung, mit einem Link geteilt.`,en:`AI wizards built from a description, shared with a link.`},homepage:`https://github.com/engenty/wizards`,license:`FSL-1.1-MIT`},{name:`engenty`,description:{de:`Konnektoren, Datentabellen, Suche und die Engenties stammen aus dem engenty-Framework.`,en:`Connectors, data tables, search and the engenties come from the engenty framework.`},homepage:`https://github.com/engenty/engenty`,license:`FSL-1.1-MIT`}],O=[{name:`Mastra`,description:{de:`Agent-Framework hinter den KI-Schritten.`,en:`Agent framework behind the AI steps.`},homepage:`https://github.com/mastra-ai/mastra`,license:`Apache-2.0`},{name:`AI SDK`,description:{de:`Modell-Aufrufe für Text, Bild, Video und Sprache.`,en:`Model calls for text, image, video and speech.`},homepage:`https://github.com/vercel/ai`,license:`Apache-2.0`},{name:`Model Context Protocol`,description:{de:`MCP-Server zum Bauen von Wizards, MCP-Client für Werkzeuge der Schritte.`,en:`MCP server for building wizards, MCP client for the steps' tools.`},homepage:`https://github.com/modelcontextprotocol/typescript-sdk`,license:`MIT`},{name:`Hono`,description:{de:`HTTP-API der Runtime.`,en:`The runtime's HTTP API.`},homepage:`https://github.com/honojs/hono`,license:`MIT`},{name:`Drizzle ORM`,description:{de:`Schema und Migrationen der Datenbanken.`,en:`Schema and migrations of the databases.`},homepage:`https://github.com/drizzle-team/drizzle-orm`,license:`Apache-2.0`},{name:`libSQL`,description:{de:`Eine Datenbank je Mandant, lokal als Datei oder bei Turso.`,en:`One database per tenant, a local file or at Turso.`},homepage:`https://github.com/tursodatabase/libsql`,license:`MIT`},{name:`Playwright`,description:{de:`Browser-Schritte sowie PDF- und PNG-Export.`,en:`Browser steps and the PDF and PNG export.`},homepage:`https://github.com/microsoft/playwright`,license:`Apache-2.0`},{name:`agentOS`,description:{de:`Sandbox für Code-Schritte ohne Docker.`,en:`Sandbox for code steps without Docker.`},homepage:`https://github.com/rivet-dev/agentos`,license:`Apache-2.0`},{name:`React`,description:{de:`UI-Bibliothek der Web-App.`,en:`UI library of the web app.`},homepage:`https://github.com/facebook/react`,license:`MIT`},{name:`Vite`,description:{de:`Build-Werkzeug der Web-App.`,en:`Build tool of the web app.`},homepage:`https://github.com/vitejs/vite`,license:`MIT`},{name:`Tailwind CSS`,description:{de:`Styling der Oberfläche.`,en:`Styling of the interface.`},homepage:`https://github.com/tailwindlabs/tailwindcss`,license:`MIT`},{name:`React Flow`,description:{de:`Das Diagramm der Schritte im Editor.`,en:`The diagram of steps in the editor.`},homepage:`https://github.com/xyflow/xyflow`,license:`MIT`},{name:`TanStack Query`,description:{de:`Server-Daten in der Web-App.`,en:`Server data in the web app.`},homepage:`https://github.com/TanStack/query`,license:`MIT`},{name:`xterm.js`,description:{de:`Das Terminal auf der Seite, in dem sich KI-Clients anmelden.`,en:`The terminal on the page where AI clients sign in.`},homepage:`https://github.com/xtermjs/xterm.js`,license:`MIT`},{name:`Lucide`,description:{de:`Icons.`,en:`Icons.`},homepage:`https://github.com/lucide-icons/lucide`,license:`ISC`},{name:`Geist & Geist Mono`,description:{de:`Schrift der Oberfläche.`,en:`Typeface of the interface.`},homepage:`https://github.com/vercel/geist-font`,license:`OFL-1.1`},{name:`Space Grotesk`,description:{de:`Schrift der Überschriften.`,en:`Typeface of the headings.`},homepage:`https://github.com/floriankarsten/space-grotesk`,license:`OFL-1.1`},{name:`git-cliff`,description:{de:`Erzeugt den Changelog aus den Commits.`,en:`Generates the changelog from the commits.`},homepage:`https://github.com/orhun/git-cliff`,license:`MIT OR Apache-2.0`}],k=e(n(),1),A=(e,...t)=>t.some(t=>t?.toLowerCase().includes(e));function j({name:e,homepage:t,version:n,license:r,description:i}){return(0,k.jsxs)(`li`,{className:`py-2.5`,children:[(0,k.jsxs)(`div`,{className:`flex flex-wrap items-baseline gap-x-2.5 gap-y-0.5`,children:[t?(0,k.jsxs)(`a`,{href:t,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1 font-medium text-[0.875rem] text-ink underline-offset-4 hover:underline`,children:[e,(0,k.jsx)(o,{"aria-hidden":!0,className:`size-3 text-ink-4`})]}):(0,k.jsx)(`span`,{className:`font-medium text-[0.875rem] text-ink`,children:e}),n?(0,k.jsx)(`span`,{className:`text-[0.75rem] text-ink-3 tabular-nums`,children:n}):null,(0,k.jsx)(`span`,{className:`text-[0.75rem] text-ink-3`,children:r})]}),i?(0,k.jsx)(`p`,{className:`mt-0.5 text-[0.8125rem] text-ink-3`,children:i}):null]})}function M({title:e,hint:t,children:n}){return(0,k.jsxs)(`section`,{className:`mt-6`,children:[(0,k.jsx)(`h3`,{className:`border-border-soft border-b pb-2 font-display font-semibold text-[1rem]`,children:e}),t?(0,k.jsx)(`p`,{className:`mt-2 text-[0.8125rem] text-ink-3`,children:t}):null,n]})}function N({credits:e}){return(0,k.jsx)(`ul`,{className:`divide-y divide-border-soft`,children:e.map(e=>(0,k.jsx)(j,{name:e.name,homepage:e.homepage,license:e.license,description:e.description[f]},e.name))})}function P({label:e,packages:t}){return(0,k.jsxs)(`div`,{className:`mt-4`,children:[(0,k.jsx)(`h4`,{className:`font-medium text-[0.75rem] text-ink-3 tracking-wide`,children:e}),(0,k.jsx)(`ul`,{className:`divide-y divide-border-soft`,children:t.map(e=>(0,k.jsx)(j,{...e},e.name))})]})}function F({active:e}){let[t,n]=(0,E.useState)(null),[i,a]=(0,E.useState)(``);(0,E.useEffect)(()=>{if(!e||t)return;let r=!1;return h(()=>import(`./oss-credits-BQQX0kvk.js`).then(e=>{r||n(e.default)}),[]),()=>{r=!0}},[e,t]),(0,E.useEffect)(()=>{e||a(``)},[e]);let o=i.trim().toLowerCase(),s=e=>o?e.filter(e=>A(o,e.name,e.license,e.description.de,e.description.en)):e,c=e=>o?e.filter(e=>A(o,e.name,e.license,e.version)):e,u=s(D),f=s(O),m=t?[{id:`shared`,label:l(`about.creditsShared`),packages:c(t.shared)},...t.groups.map(e=>({id:e.id,label:e.label,packages:c(e.packages)}))].filter(e=>e.packages.length>0):[],g=u.length===0&&f.length===0&&m.length===0;return(0,k.jsxs)(k.Fragment,{children:[(0,k.jsx)(`p`,{className:`mb-4 text-[0.875rem] text-ink-3`,children:l(`about.creditsHint`)}),(0,k.jsx)(p,{type:`search`,value:i,placeholder:l(`about.search`),onChange:e=>a(e.target.value)}),u.length>0?(0,k.jsx)(M,{title:l(`about.creditsProduct`),children:(0,k.jsx)(N,{credits:u})}):null,f.length>0?(0,k.jsx)(M,{title:l(`about.creditsBuiltWith`),children:(0,k.jsx)(N,{credits:f})}):null,t===null?(0,k.jsx)(`div`,{className:`flex justify-center py-10 text-ink-3`,children:(0,k.jsx)(d,{})}):m.length>0?(0,k.jsx)(M,{title:l(`about.creditsDeps`),hint:o?void 0:l(`about.creditsDepsHint`),children:m.map(e=>(0,k.jsx)(P,{label:e.label,packages:e.packages},e.id))}):null,t!==null&&g?(0,k.jsx)(r,{children:l(`about.noMatches`)}):null]})}var I=[`new`,`earlier`,`credits`],L=e=>l(e===`new`?`about.tab.new`:e===`earlier`?`about.tab.earlier`:`about.credits`),R=e=>e===1?l(`about.change`):l(`about.changes`,{n:e});function z({open:e,onClose:t,me:n}){let r=n?.mode===`local`,{data:o,latest:f}=v(r&&e),[p,h]=(0,E.useState)(null),[D,O]=(0,E.useState)(`new`),A=x(I.indexOf(D)),j=o?.newer&&f?f:_;(0,E.useEffect)(()=>{if(!e)return;let t=!1;return h(null),C(j===`0.4.7`?void 0:j).then(e=>{t||h(e)}),()=>{t=!0}},[e,j]);let M=p?.find(e=>e.version===`v${j}`)??p?.[0]??null,N=p?.filter(e=>e!==M)??[],P=r?o?.kind??null:`cloud`;return(0,k.jsxs)(a,{open:e,onClose:t,wide:!0,height:`tall`,children:[(0,k.jsx)(`div`,{className:`-mt-2 -mr-2 sticky top-0 z-10 flex h-0 justify-end`,children:(0,k.jsx)(c,{label:l(`common.close`),onClick:t,children:(0,k.jsx)(m,{className:`size-4`})})}),(0,k.jsxs)(`div`,{className:`flex flex-col items-center pt-4 text-center`,children:[(0,k.jsx)(y,{size:96}),(0,k.jsxs)(`div`,{className:`mt-4 font-display font-semibold text-[1.5rem] tracking-tight`,children:[`engenty`,(0,k.jsx)(`span`,{className:`text-ember`,children:`.`}),(0,k.jsx)(`span`,{className:`ml-1.5 font-normal text-ink-3`,children:`wizards`})]}),(0,k.jsxs)(`div`,{className:`mt-1 text-[0.9375rem] text-ink-3 tabular-nums`,children:[l(`about.version`,{v:_}),P?` · ${l(`about.kind.${P}`)}`:``]})]}),r?(0,k.jsx)(`div`,{className:`mt-5`,children:(0,k.jsx)(g,{enabled:e})}):null,(0,k.jsx)(`div`,{className:`mt-6 flex justify-center`,children:(0,k.jsx)(u,{value:D,onChange:O,options:I.map(e=>({id:e,label:L(e)})),label:l(`about.title`)})}),(0,k.jsxs)(`div`,{className:s(`mt-5`,b(A)),children:[D===`new`?p===null?(0,k.jsx)(`div`,{className:`flex justify-center py-6 text-ink-3`,children:(0,k.jsx)(d,{})}):M?(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`h3`,{className:`flex items-baseline gap-3 border-border-soft border-b pb-2 font-display font-semibold text-[1rem]`,children:[T(M),(0,k.jsx)(`span`,{className:`font-normal font-sans text-[0.8125rem] text-ink-3 tabular-nums`,children:w(M)})]}),(0,k.jsx)(`div`,{className:`mt-3`,children:(0,k.jsx)(S,{release:M})})]}):(0,k.jsx)(`p`,{className:`text-[0.875rem] text-ink-3`,children:l(`about.changelogEmpty`)}):null,D===`earlier`?(0,k.jsx)(`div`,{className:`flex flex-col divide-y divide-border-soft`,children:N.map(e=>(0,k.jsxs)(`details`,{className:`group/r py-2`,children:[(0,k.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-baseline gap-3 text-[0.875rem] [&::-webkit-details-marker]:hidden`,children:[(0,k.jsx)(i,{className:`size-3.5 shrink-0 self-center text-ink-4 transition group-open/r:rotate-90`}),(0,k.jsx)(`span`,{className:`font-medium text-ink tabular-nums`,children:T(e)}),(0,k.jsx)(`span`,{className:`text-[0.8125rem] text-ink-3 tabular-nums`,children:w(e)}),(0,k.jsx)(`span`,{className:`ml-auto text-[0.8125rem] text-ink-4`,children:R(e.commits.length)})]}),(0,k.jsx)(`div`,{className:`mt-2 pl-6`,children:(0,k.jsx)(S,{release:e})})]},e.version??`unreleased`))}):null,D===`credits`?(0,k.jsx)(F,{active:!0}):null]},D)]})}export{z as AboutDialog};