wizards 0.5.6 → 0.5.8

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 (113) hide show
  1. package/apps/runtime/dist/agents/architect.js +13 -26
  2. package/apps/runtime/dist/agents/studio-assistant.js +19 -22
  3. package/apps/runtime/dist/agents/subscription.js +10 -9
  4. package/apps/runtime/dist/app.js +9 -7
  5. package/apps/runtime/dist/assistant/knows.js +10 -9
  6. package/apps/runtime/dist/auth/index.js +7 -0
  7. package/apps/runtime/dist/connectors/external.js +3 -3
  8. package/apps/runtime/dist/connectors/index.js +23 -23
  9. package/apps/runtime/dist/connectors/via-account.js +6 -6
  10. package/apps/runtime/dist/documents/parse.js +3 -3
  11. package/apps/runtime/dist/engine/input.js +11 -11
  12. package/apps/runtime/dist/engine/requirements.js +7 -8
  13. package/apps/runtime/dist/engine/runner.js +10 -14
  14. package/apps/runtime/dist/engine/steps.js +6 -6
  15. package/apps/runtime/dist/engine/surface.js +2 -2
  16. package/apps/runtime/dist/film/step.js +5 -5
  17. package/apps/runtime/dist/harness/apple.js +2 -1
  18. package/apps/runtime/dist/harness/claude.js +2 -2
  19. package/apps/runtime/dist/harness/codex.js +2 -2
  20. package/apps/runtime/dist/harness/model.js +4 -5
  21. package/apps/runtime/dist/harness/terminal.js +4 -4
  22. package/apps/runtime/dist/media/conversation.js +18 -35
  23. package/apps/runtime/dist/media/transcribe.js +2 -1
  24. package/apps/runtime/dist/model-errors.js +1 -1
  25. package/apps/runtime/dist/models.js +32 -40
  26. package/apps/runtime/dist/plugins/runs.js +3 -5
  27. package/apps/runtime/dist/routes/api.js +9 -9
  28. package/apps/runtime/dist/routes/lang.js +14 -9
  29. package/apps/runtime/dist/routes/marketplace.js +6 -1
  30. package/apps/runtime/dist/routes/runs.js +5 -5
  31. package/apps/runtime/dist/routes/studio.js +38 -37
  32. package/apps/runtime/dist/services/access.js +4 -4
  33. package/apps/runtime/dist/services/architect.js +3 -12
  34. package/apps/runtime/dist/services/assistant-chats.js +2 -2
  35. package/apps/runtime/dist/services/brand.js +3 -3
  36. package/apps/runtime/dist/services/cloud.js +5 -5
  37. package/apps/runtime/dist/services/errors.js +2 -2
  38. package/apps/runtime/dist/services/knowledge-model.js +3 -3
  39. package/apps/runtime/dist/services/marketplace.js +18 -8
  40. package/apps/runtime/dist/services/package-file.js +9 -11
  41. package/apps/runtime/dist/services/package.js +8 -9
  42. package/apps/runtime/dist/services/profile.js +2 -1
  43. package/apps/runtime/dist/services/project-files.js +13 -13
  44. package/apps/runtime/dist/services/projects.js +7 -11
  45. package/apps/runtime/dist/services/runners.js +4 -4
  46. package/apps/runtime/dist/services/runs.js +7 -10
  47. package/apps/runtime/dist/services/shares.js +2 -2
  48. package/apps/runtime/dist/services/site.js +8 -11
  49. package/apps/runtime/dist/services/space-categories.js +7 -7
  50. package/apps/runtime/dist/services/space-data.js +20 -20
  51. package/apps/runtime/dist/services/spaces.js +7 -9
  52. package/apps/runtime/dist/services/wizards.js +11 -13
  53. package/apps/runtime/dist/store/index.js +2 -2
  54. package/apps/runtime/dist/texts.js +195 -0
  55. package/apps/runtime/dist/tools/plugin.js +7 -3
  56. package/apps/runtime/dist/widgets/step.js +2 -2
  57. package/apps/web/dist/assets/AboutDialog-BcTtA42P.js +1 -0
  58. package/apps/web/dist/assets/{ChangelogDialog-sdSC9eZj.js → ChangelogDialog-DMOWV_Iu.js} +1 -1
  59. package/apps/web/dist/assets/ChatView-CrnrYHjp.js +10 -0
  60. package/apps/web/dist/assets/EditorPage-DpEw3eOu.js +3 -0
  61. package/apps/web/dist/assets/{FlowPreview-B4-ipMdE.js → FlowPreview-CzmH4JUQ.js} +1 -1
  62. package/apps/web/dist/assets/{Harness-DwI4wFqj.js → Harness-DipH0Vec.js} +2 -2
  63. package/apps/web/dist/assets/{NewWizardChannels-DkI648G-.js → NewWizardChannels-DShu0PP6.js} +1 -1
  64. package/apps/web/dist/assets/NewWizardPage-HSa6PNJs.js +7 -0
  65. package/apps/web/dist/assets/OnboardingPage-CPADMs4c.js +1 -0
  66. package/apps/web/dist/assets/ProjectPage-DMPcrhgt.js +1 -0
  67. package/apps/web/dist/assets/PublicRunner-DZ5sWmtg.js +1 -0
  68. package/apps/web/dist/assets/{ReadOnly-Jvzgyelg.js → ReadOnly-B9xaq_M3.js} +1 -1
  69. package/apps/web/dist/assets/RunDrawer-9nMGhbSm.js +4 -0
  70. package/apps/web/dist/assets/{RunnerView-DN4sMYS6.js → RunnerView-NSSP3tc6.js} +1 -1
  71. package/apps/web/dist/assets/SettingsPage-Dy9MbwQh.js +1 -0
  72. package/apps/web/dist/assets/SetupPage-kemgI7v5.js +1 -0
  73. package/apps/web/dist/assets/{SharePage-CmowpiJG.js → SharePage-CQfIdcwy.js} +1 -1
  74. package/apps/web/dist/assets/{changelog-Cz8fZ-jG.js → changelog-BW40vzI6.js} +1 -1
  75. package/apps/web/dist/assets/{esm-J06O1nN_.js → esm-BF1nonbH.js} +1 -1
  76. package/apps/web/dist/assets/index-CnJ4Yzkf.css +1 -0
  77. package/apps/web/dist/assets/index-DQ9qAB4v.js +14 -0
  78. package/apps/web/dist/assets/{lock-ChDlFFHO.js → lock-DVvM6IsA.js} +1 -1
  79. package/apps/web/dist/assets/{phone-Cr7jz_kf.js → phone-3fG1okFs.js} +1 -1
  80. package/apps/web/dist/assets/{settings-menu-BAwHMXCR.js → settings-menu-D9fbi1Z0.js} +1 -1
  81. package/apps/web/dist/assets/ui-EuR3jezP.js +134 -0
  82. package/apps/web/dist/assets/{upload-DcAIMe8d.js → upload-BsMUhEfX.js} +1 -1
  83. package/apps/web/dist/index.html +3 -3
  84. package/apps/web/dist/mcp/flow.html +78 -78
  85. package/node_modules/@engenty-wizards/shared/dist/definition.d.ts +26 -9
  86. package/node_modules/@engenty-wizards/shared/dist/definition.js +125 -3
  87. package/node_modules/@engenty-wizards/shared/dist/marketplace-entry.d.ts +1 -1
  88. package/node_modules/@engenty-wizards/shared/dist/marketplace-entry.js +9 -8
  89. package/node_modules/@engenty-wizards/shared/dist/marketplace-search.js +6 -6
  90. package/node_modules/@engenty-wizards/shared/dist/marketplace.d.ts +78 -205
  91. package/node_modules/@engenty-wizards/shared/dist/marketplace.js +167 -68
  92. package/node_modules/@engenty-wizards/shared/dist/projects.d.ts +3 -6
  93. package/node_modules/@engenty-wizards/shared/dist/projects.js +9 -9
  94. package/node_modules/@engenty-wizards/shared/dist/providers.d.ts +33 -7
  95. package/node_modules/@engenty-wizards/shared/dist/providers.js +88 -37
  96. package/node_modules/@engenty-wizards/shared/dist/run.d.ts +298 -365
  97. package/node_modules/@engenty-wizards/shared/dist/run.js +582 -240
  98. package/node_modules/@engenty-wizards/shared/dist/texts.d.ts +36 -0
  99. package/node_modules/@engenty-wizards/shared/dist/texts.js +46 -0
  100. package/package.json +1 -1
  101. package/apps/web/dist/assets/AboutDialog-Ck6_TSVJ.js +0 -1
  102. package/apps/web/dist/assets/ChatView-S1H9Pcih.js +0 -10
  103. package/apps/web/dist/assets/EditorPage-BSfJXx4W.js +0 -3
  104. package/apps/web/dist/assets/NewWizardPage-dumNiSqM.js +0 -7
  105. package/apps/web/dist/assets/OnboardingPage-BAfHLLNT.js +0 -1
  106. package/apps/web/dist/assets/ProjectPage-fneLQr6R.js +0 -1
  107. package/apps/web/dist/assets/PublicRunner-CuxDAXK7.js +0 -1
  108. package/apps/web/dist/assets/RunDrawer-C_T1I77g.js +0 -4
  109. package/apps/web/dist/assets/SettingsPage-DjFvKMRz.js +0 -1
  110. package/apps/web/dist/assets/SetupPage-CzYwVUvh.js +0 -1
  111. package/apps/web/dist/assets/index-CZFfDGHy.css +0 -1
  112. package/apps/web/dist/assets/index-DZTDv2pA.js +0 -14
  113. package/apps/web/dist/assets/ui-C5_NcAmG.js +0 -134
@@ -1,4 +1,5 @@
1
- import { pluginToolOf } from "./definition.js";
1
+ import { LANGS, pluginToolOf, } from "./definition.js";
2
+ import { textOf } from "./texts.js";
2
3
  /**
3
4
  * The marketplace: wizards anyone can start from. What an entry is sorted by — formats, industry,
4
5
  * use case — and what follows from its definition: the AI capabilities it needs, how much a
@@ -6,78 +7,176 @@ import { pluginToolOf } from "./definition.js";
6
7
  */
7
8
  export const MARKETPLACE_LANGS = ["de", "en"];
8
9
  /** What comes out of a run. */
9
- export const ITEM_FORMATS = {
10
- text: { de: "Text", en: "Text" },
11
- document: { de: "Dokument (PDF, Word)", en: "Document (PDF, Word)" },
12
- table: { de: "Tabelle", en: "Table" },
13
- image: { de: "Bild", en: "Image" },
14
- video: { de: "Video", en: "Video" },
15
- audio: { de: "Audio", en: "Audio" },
16
- dashboard: { de: "Dashboard", en: "Dashboard" },
17
- };
18
- export const INDUSTRIES = {
19
- any: { de: "Jede Branche", en: "Any industry" },
20
- trades: { de: "Handwerk", en: "Trades" },
21
- gastronomy: { de: "Gastronomie", en: "Food service" },
22
- hospitality: { de: "Hotel & Tourismus", en: "Hotels & tourism" },
23
- realEstate: { de: "Immobilien", en: "Real estate" },
24
- retail: { de: "Handel", en: "Retail" },
25
- health: { de: "Gesundheit", en: "Health" },
26
- professional: { de: "Kanzlei & Beratung", en: "Professional services" },
27
- agency: { de: "Agentur & Marketing", en: "Agency & marketing" },
28
- events: { de: "Veranstaltungen", en: "Events" },
29
- publicSector: { de: "Vereine & Öffentliches", en: "Associations & public sector" },
30
- };
31
- export const USE_CASES = {
32
- marketing: { de: "Marketing & Social Media", en: "Marketing & social media" },
33
- sales: { de: "Angebote & Verkauf", en: "Offers & sales" },
34
- accounting: { de: "Buchhaltung & Belege", en: "Accounting & receipts" },
35
- service: { de: "Kundenservice", en: "Customer service" },
36
- research: { de: "Recherche & Analyse", en: "Research & analysis" },
37
- hr: { de: "Personal & Bewerbungen", en: "HR & applications" },
38
- operations: { de: "Planung & Abläufe", en: "Planning & operations" },
39
- website: { de: "Helfer für die Website", en: "Website helpers" },
40
- visuals: { de: "Bilder & Video", en: "Images & video" },
41
- inquiries: { de: "Anfragen & Termine", en: "Inquiries & bookings" },
42
- advice: { de: "Beratung & Preise", en: "Advice & pricing" },
43
- };
44
- /** What the models and tools behind a wizard must be able to do. */
45
- export const CAPABILITIES = {
46
- text: { de: "Text schreiben", en: "Writes text" },
47
- web: { de: "Websuche", en: "Web search" },
48
- browser: { de: "Browser bedienen", en: "Drives a browser" },
49
- documents: { de: "Dokumente & Fotos lesen", en: "Reads documents & photos" },
50
- image: { de: "Bilder erzeugen", en: "Makes images" },
51
- video: { de: "Videos erzeugen", en: "Makes video" },
52
- speech: { de: "Sprachausgabe", en: "Speech output" },
53
- listening: { de: "Sprachnotizen verstehen", en: "Understands voice notes" },
54
- code: { de: "Code ausführen", en: "Runs code" },
55
- connectors: { de: "Verbundene Konten & Systeme", en: "Connected accounts & systems" },
56
- /** A film the installed client makes: only on a computer with Claude Code, on its subscription. */
57
- film: {
58
- de: "Filme mit Claude Code (auf deinem Abo)",
59
- en: "Films with Claude Code (on your subscription)",
60
- },
61
- };
62
- export const COST_TIERS = {
63
- low: { de: "günstig", en: "low cost" },
64
- medium: { de: "mittel", en: "medium cost" },
65
- high: { de: "teuer", en: "high cost" },
66
- };
10
+ export const ITEM_FORMAT_IDS = [
11
+ "text",
12
+ "document",
13
+ "table",
14
+ "image",
15
+ "video",
16
+ "audio",
17
+ "dashboard",
18
+ ];
19
+ export const INDUSTRY_IDS = [
20
+ "any",
21
+ "trades",
22
+ "gastronomy",
23
+ "hospitality",
24
+ "realEstate",
25
+ "retail",
26
+ "health",
27
+ "professional",
28
+ "agency",
29
+ "events",
30
+ "publicSector",
31
+ ];
32
+ export const USE_CASE_IDS = [
33
+ "marketing",
34
+ "sales",
35
+ "accounting",
36
+ "service",
37
+ "research",
38
+ "hr",
39
+ "operations",
40
+ "website",
41
+ "visuals",
42
+ "inquiries",
43
+ "advice",
44
+ ];
45
+ /**
46
+ * What the models and tools behind a wizard must be able to do. `film`: a film the installed
47
+ * client makes, only on a computer with Claude Code, on its subscription.
48
+ */
49
+ export const CAPABILITY_IDS = [
50
+ "text",
51
+ "web",
52
+ "browser",
53
+ "documents",
54
+ "image",
55
+ "video",
56
+ "speech",
57
+ "listening",
58
+ "code",
59
+ "connectors",
60
+ "film",
61
+ ];
62
+ export const COST_TIER_IDS = ["low", "medium", "high"];
67
63
  /**
68
64
  * The plan a wizard needs. Free runs on what every runtime has; Pro needs plugins, which come
69
65
  * with the Pro and Team plans of engenty.ai.
70
66
  */
71
- export const MARKETPLACE_PLANS = {
72
- free: { de: "Kostenlos", en: "Free" },
73
- pro: { de: "Pro", en: "Pro" },
67
+ export const MARKETPLACE_PLAN_IDS = ["free", "pro"];
68
+ const MARKET_EN = {
69
+ "format.text": "Text",
70
+ "format.document": "Document (PDF, Word)",
71
+ "format.table": "Table",
72
+ "format.image": "Image",
73
+ "format.video": "Video",
74
+ "format.audio": "Audio",
75
+ "format.dashboard": "Dashboard",
76
+ "industry.any": "Any industry",
77
+ "industry.trades": "Trades",
78
+ "industry.gastronomy": "Food service",
79
+ "industry.hospitality": "Hotels & tourism",
80
+ "industry.realEstate": "Real estate",
81
+ "industry.retail": "Retail",
82
+ "industry.health": "Health",
83
+ "industry.professional": "Professional services",
84
+ "industry.agency": "Agency & marketing",
85
+ "industry.events": "Events",
86
+ "industry.publicSector": "Associations & public sector",
87
+ "useCase.marketing": "Marketing & social media",
88
+ "useCase.sales": "Offers & sales",
89
+ "useCase.accounting": "Accounting & receipts",
90
+ "useCase.service": "Customer service",
91
+ "useCase.research": "Research & analysis",
92
+ "useCase.hr": "HR & applications",
93
+ "useCase.operations": "Planning & operations",
94
+ "useCase.website": "Website helpers",
95
+ "useCase.visuals": "Images & video",
96
+ "useCase.inquiries": "Inquiries & bookings",
97
+ "useCase.advice": "Advice & pricing",
98
+ "capability.text": "Writes text",
99
+ "capability.web": "Web search",
100
+ "capability.browser": "Drives a browser",
101
+ "capability.documents": "Reads documents & photos",
102
+ "capability.image": "Makes images",
103
+ "capability.video": "Makes video",
104
+ "capability.speech": "Speech output",
105
+ "capability.listening": "Understands voice notes",
106
+ "capability.code": "Runs code",
107
+ "capability.connectors": "Connected accounts & systems",
108
+ "capability.film": "Films with Claude Code (on your subscription)",
109
+ "cost.low": "low cost",
110
+ "cost.medium": "medium cost",
111
+ "cost.high": "high cost",
112
+ "plan.free": "Free",
113
+ "plan.pro": "Pro",
114
+ "outline.otherwise": "otherwise",
115
+ "outline.and": "{first} and {second}",
116
+ "outline.with": "with {name}",
117
+ "outline.without": "without {name}",
118
+ "outline.contains": "{name} contains {value}",
74
119
  };
75
- const keys = (o) => Object.keys(o);
76
- export const ITEM_FORMAT_IDS = keys(ITEM_FORMATS);
77
- export const INDUSTRY_IDS = keys(INDUSTRIES);
78
- export const USE_CASE_IDS = keys(USE_CASES);
79
- export const CAPABILITY_IDS = keys(CAPABILITIES);
80
- export const MARKETPLACE_PLAN_IDS = keys(MARKETPLACE_PLANS);
120
+ const MARKET_DE = {
121
+ "format.text": "Text",
122
+ "format.document": "Dokument (PDF, Word)",
123
+ "format.table": "Tabelle",
124
+ "format.image": "Bild",
125
+ "format.video": "Video",
126
+ "format.audio": "Audio",
127
+ "format.dashboard": "Dashboard",
128
+ "industry.any": "Jede Branche",
129
+ "industry.trades": "Handwerk",
130
+ "industry.gastronomy": "Gastronomie",
131
+ "industry.hospitality": "Hotel & Tourismus",
132
+ "industry.realEstate": "Immobilien",
133
+ "industry.retail": "Handel",
134
+ "industry.health": "Gesundheit",
135
+ "industry.professional": "Kanzlei & Beratung",
136
+ "industry.agency": "Agentur & Marketing",
137
+ "industry.events": "Veranstaltungen",
138
+ "industry.publicSector": "Vereine & Öffentliches",
139
+ "useCase.marketing": "Marketing & Social Media",
140
+ "useCase.sales": "Angebote & Verkauf",
141
+ "useCase.accounting": "Buchhaltung & Belege",
142
+ "useCase.service": "Kundenservice",
143
+ "useCase.research": "Recherche & Analyse",
144
+ "useCase.hr": "Personal & Bewerbungen",
145
+ "useCase.operations": "Planung & Abläufe",
146
+ "useCase.website": "Helfer für die Website",
147
+ "useCase.visuals": "Bilder & Video",
148
+ "useCase.inquiries": "Anfragen & Termine",
149
+ "useCase.advice": "Beratung & Preise",
150
+ "capability.text": "Text schreiben",
151
+ "capability.web": "Websuche",
152
+ "capability.browser": "Browser bedienen",
153
+ "capability.documents": "Dokumente & Fotos lesen",
154
+ "capability.image": "Bilder erzeugen",
155
+ "capability.video": "Videos erzeugen",
156
+ "capability.speech": "Sprachausgabe",
157
+ "capability.listening": "Sprachnotizen verstehen",
158
+ "capability.code": "Code ausführen",
159
+ "capability.connectors": "Verbundene Konten & Systeme",
160
+ "capability.film": "Filme mit Claude Code (auf deinem Abo)",
161
+ "cost.low": "günstig",
162
+ "cost.medium": "mittel",
163
+ "cost.high": "teuer",
164
+ "plan.free": "Kostenlos",
165
+ "plan.pro": "Pro",
166
+ "outline.otherwise": "sonst",
167
+ "outline.and": "{first} und {second}",
168
+ "outline.with": "mit {name}",
169
+ "outline.without": "ohne {name}",
170
+ "outline.contains": "{name} enthält {value}",
171
+ };
172
+ export const MARKET_TEXTS = { en: MARKET_EN, de: MARKET_DE };
173
+ /** The label of a facet value, a cost tier or a plan in a language; its id where it has none. */
174
+ export function marketLabel(group, id, lang, params) {
175
+ const key = `${group}.${id}`;
176
+ return key in MARKET_EN ? textOf(MARKET_TEXTS, key, lang, params) : id;
177
+ }
178
+ /** A label in every language, for search: a person may type either. */
179
+ export const marketLabels = (group, id) => LANGS.map((lang) => marketLabel(group, id, lang));
81
180
  const FORMAT_OF = {
82
181
  pdf: "document",
83
182
  docx: "document",
@@ -13,12 +13,9 @@ export declare function detectFactType(value: string): FactType;
13
13
  export declare function factType(fact: Pick<ProjectFact, "value" | "type">): FactType;
14
14
  /** A fact's key from its label: lower case, a-z 0-9 and _, unique among `taken`. */
15
15
  export declare function factKey(label: string, taken?: string[]): string;
16
- /** Facts most projects have; offered as empty rows to fill in. */
17
- export declare const BASIC_FACTS: {
18
- key: string;
19
- de: string;
20
- en: string;
21
- }[];
16
+ /** Facts most projects have, by key; offered as empty rows to fill in (labels: `fact.<key>`). */
17
+ export declare const BASIC_FACTS: readonly ["adresse", "plz", "ort", "uid", "telefon", "e_mail", "website", "iban"];
18
+ export type BasicFact = (typeof BASIC_FACTS)[number];
22
19
  export interface BrandColor {
23
20
  /** What the colour is for and how to use it, in the admin's words: "Primär – Buttons und Überschriften". */
24
21
  name: string;
@@ -68,16 +68,16 @@ export function factKey(label, taken = []) {
68
68
  }
69
69
  return key;
70
70
  }
71
- /** Facts most projects have; offered as empty rows to fill in. */
71
+ /** Facts most projects have, by key; offered as empty rows to fill in (labels: `fact.<key>`). */
72
72
  export const BASIC_FACTS = [
73
- { key: "adresse", de: "Adresse", en: "Address" },
74
- { key: "plz", de: "PLZ", en: "Postcode" },
75
- { key: "ort", de: "Ort", en: "City" },
76
- { key: "uid", de: "USt-IdNr.", en: "VAT ID" },
77
- { key: "telefon", de: "Telefon", en: "Phone" },
78
- { key: "e_mail", de: "E-Mail", en: "Email" },
79
- { key: "website", de: "Website", en: "Website" },
80
- { key: "iban", de: "IBAN", en: "IBAN" },
73
+ "adresse",
74
+ "plz",
75
+ "ort",
76
+ "uid",
77
+ "telefon",
78
+ "e_mail",
79
+ "website",
80
+ "iban",
81
81
  ];
82
82
  export const COLOR_SECTION_KINDS = ["colors", "gradients", "patterns"];
83
83
  export const GRADIENT_TYPES = ["linear", "radial", "conic"];
@@ -1,4 +1,5 @@
1
- import type { ModelClass, TextClass } from "./definition.js";
1
+ import type { Lang, ModelClass, TextClass } from "./definition.js";
2
+ import { type Texts } from "./texts.js";
2
3
  /**
3
4
  * What a wizard asks models for, as a person thinks of it. Each stands for model classes; the
4
5
  * names are the marketplace's capabilities.
@@ -38,22 +39,47 @@ export declare function capabilityOfKind(kind: CreditModel["kind"]): ModelCapabi
38
39
  /** The providers whose API key a person can bring. */
39
40
  export declare const PROVIDER_IDS: readonly ["openai", "anthropic", "google", "fal", "elevenlabs", "replicate", "gateway"];
40
41
  export type ProviderId = (typeof PROVIDER_IDS)[number];
41
- interface Labels {
42
- de: string;
43
- en: string;
44
- }
42
+ declare const PROVIDER_EN: {
43
+ readonly "about.openai": "GPT models, GPT Image and voices.";
44
+ readonly fast: "fast";
45
+ readonly thorough: "thorough";
46
+ readonly versatile: "versatile";
47
+ readonly lowCost: "low cost";
48
+ readonly fastLowCost: "fast, low cost";
49
+ readonly "about.anthropic": "The Claude models.";
50
+ readonly strongest: "strongest";
51
+ readonly "about.google": "Gemini, Veo for video and voices – one key from AI Studio.";
52
+ readonly fastEditsPhotos: "fast, edits photos";
53
+ readonly bestQuality: "best quality";
54
+ readonly withSound: "with sound";
55
+ readonly "about.fal": "Hundreds of image, video and audio models with one key: FLUX, Recraft, Veo, Luma, MiniMax.";
56
+ readonly highQuality: "high quality";
57
+ readonly graphicsLogosTextIn: "graphics, logos, text in images";
58
+ readonly photorealistic: "photorealistic";
59
+ readonly "about.elevenlabs": "Natural voices in many languages and accurate transcripts.";
60
+ readonly naturalManyLanguages: "natural, many languages";
61
+ readonly expressive: "expressive";
62
+ readonly veryAccurate: "very accurate";
63
+ readonly "about.replicate": "Open image and video models, billed per run.";
64
+ readonly "about.gateway": "One key for many providers' models, billed by Vercel.";
65
+ };
66
+ /** A line about a provider or one of its models, in `PROVIDER_TEXTS`. */
67
+ export type ProviderWords = keyof typeof PROVIDER_EN;
68
+ export declare const PROVIDER_TEXTS: Texts<ProviderWords>;
69
+ /** A line about a provider or a model, in a language. */
70
+ export declare const providerText: (key: ProviderWords, lang: Lang) => string;
45
71
  export interface ModelOption {
46
72
  /** The binding: `<provider>:<the provider's model id>`. */
47
73
  ref: string;
48
74
  /** The model's own name; not translated. */
49
75
  label: string;
50
- note?: Labels;
76
+ note?: ProviderWords;
51
77
  }
52
78
  export interface ProviderInfo {
53
79
  id: ProviderId;
54
80
  name: string;
55
81
  /** One line on what it is, for someone who never heard of it. */
56
- about: Labels;
82
+ about: ProviderWords;
57
83
  /** Where a person makes a key. */
58
84
  keyUrl: string;
59
85
  /** How a key looks, for the input's placeholder. */