wizards 0.5.0 → 0.5.2
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.
- package/README.md +45 -42
- package/apps/runtime/dist/agents/studio-assistant.js +3 -3
- package/apps/runtime/dist/app.js +7 -4
- package/apps/runtime/dist/auth/index.js +2 -2
- package/apps/runtime/dist/authoring/guide.js +1 -1
- package/apps/runtime/dist/cli/account.js +31 -28
- package/apps/runtime/dist/cli/autostart.js +5 -3
- package/apps/runtime/dist/cli/clients.js +1 -1
- package/apps/runtime/dist/cli/connect.js +24 -24
- package/apps/runtime/dist/cli/features.js +6 -6
- package/apps/runtime/dist/cli/main.js +51 -39
- package/apps/runtime/dist/cli/mcp.js +5 -4
- package/apps/runtime/dist/cli/menu.js +32 -30
- package/apps/runtime/dist/cli/report.js +7 -9
- package/apps/runtime/dist/cli/setup.js +42 -38
- package/apps/runtime/dist/cli/start.js +16 -15
- package/apps/runtime/dist/cli/status.js +20 -20
- package/apps/runtime/dist/cli/ui.js +9 -2
- package/apps/runtime/dist/cli/update.js +6 -6
- package/apps/runtime/dist/cli/validate.js +1 -1
- package/apps/runtime/dist/connectors/external.js +3 -2
- package/apps/runtime/dist/connectors/index.js +5 -5
- package/apps/runtime/dist/connectors/plugin-connections.js +2 -2
- package/apps/runtime/dist/connectors/via-account.js +5 -5
- package/apps/runtime/dist/db/control-schema.js +14 -0
- package/apps/runtime/dist/db/migrations/control/0009_plugin_claim.sql +9 -0
- package/apps/runtime/dist/db/migrations/control/meta/0009_snapshot.json +561 -0
- package/apps/runtime/dist/db/migrations/control/meta/_journal.json +7 -0
- package/apps/runtime/dist/docs/dev/index.md +16 -14
- package/apps/runtime/dist/docs/dev/plugins/connections.md +27 -24
- package/apps/runtime/dist/docs/dev/plugins/events.md +19 -17
- package/apps/runtime/dist/docs/dev/plugins/examples.md +13 -12
- package/apps/runtime/dist/docs/dev/plugins/index.md +29 -24
- package/apps/runtime/dist/docs/dev/plugins/layout.md +20 -19
- package/apps/runtime/dist/docs/dev/plugins/quick-start.md +16 -15
- package/apps/runtime/dist/docs/dev/plugins/reference.md +52 -40
- package/apps/runtime/dist/docs/dev/plugins/reloading.md +24 -23
- package/apps/runtime/dist/docs/dev/plugins/routes.md +26 -22
- package/apps/runtime/dist/docs/dev/plugins/runners.md +49 -44
- package/apps/runtime/dist/docs/dev/plugins/server.md +95 -43
- package/apps/runtime/dist/docs/dev/plugins/shipping.md +19 -16
- package/apps/runtime/dist/docs/dev/plugins/space.md +75 -69
- package/apps/runtime/dist/docs/dev/plugins/starters.md +22 -17
- package/apps/runtime/dist/docs/dev/plugins/studio.md +80 -37
- package/apps/runtime/dist/docs/dev/plugins/styling.md +44 -41
- package/apps/runtime/dist/docs/dev/plugins/tables.md +11 -11
- package/apps/runtime/dist/docs/dev/plugins/tools.md +26 -25
- package/apps/runtime/dist/docs/dev/wizard-format.md +35 -23
- package/apps/runtime/dist/docs/user/ai-apps.md +46 -43
- package/apps/runtime/dist/docs/user/assistant.md +41 -36
- package/apps/runtime/dist/docs/user/build-a-wizard.md +64 -39
- package/apps/runtime/dist/docs/user/command-line.md +47 -44
- package/apps/runtime/dist/docs/user/connectors.md +40 -35
- package/apps/runtime/dist/docs/user/create-account.md +27 -22
- package/apps/runtime/dist/docs/user/data.md +29 -29
- package/apps/runtime/dist/docs/user/first-start.md +26 -28
- package/apps/runtime/dist/docs/user/index.md +16 -17
- package/apps/runtime/dist/docs/user/install.md +28 -27
- package/apps/runtime/dist/docs/user/local-only.md +21 -17
- package/apps/runtime/dist/docs/user/models.md +92 -84
- package/apps/runtime/dist/docs/user/plugins.md +28 -23
- package/apps/runtime/dist/docs/user/run.md +51 -50
- package/apps/runtime/dist/docs/user/server.md +9 -9
- package/apps/runtime/dist/docs/user/space.md +87 -65
- package/apps/runtime/dist/docs/user/steps.md +73 -69
- package/apps/runtime/dist/docs/user/test-and-share.md +127 -105
- package/apps/runtime/dist/docs/user/troubleshooting.md +40 -38
- package/apps/runtime/dist/docs/user/wordpress.md +62 -54
- package/apps/runtime/dist/documents/parse.js +2 -2
- package/apps/runtime/dist/engenty/shims/web-ingest.js +17 -1
- package/apps/runtime/dist/engine/input.js +4 -4
- package/apps/runtime/dist/engine/push.js +2 -2
- package/apps/runtime/dist/engine/runner.js +8 -8
- package/apps/runtime/dist/engine/steps.js +2 -2
- package/apps/runtime/dist/engine/surface.js +1 -1
- package/apps/runtime/dist/film/step.js +3 -3
- package/apps/runtime/dist/harness/claude.js +1 -1
- package/apps/runtime/dist/harness/codex.js +1 -1
- package/apps/runtime/dist/harness/model.js +2 -2
- package/apps/runtime/dist/harness/terminal.js +3 -3
- package/apps/runtime/dist/mcp/handler.js +2 -2
- package/apps/runtime/dist/mcp/tools.js +9 -9
- package/apps/runtime/dist/models.js +15 -15
- package/apps/runtime/dist/plugins/claims.js +56 -0
- package/apps/runtime/dist/plugins/loader.js +2 -0
- package/apps/runtime/dist/plugins/public.js +2 -3
- package/apps/runtime/dist/plugins/runs.js +13 -8
- package/apps/runtime/dist/render/chromium.js +24 -11
- package/apps/runtime/dist/routes/api.js +15 -9
- package/apps/runtime/dist/routes/debug.js +1 -1
- package/apps/runtime/dist/routes/delivery.js +46 -0
- package/apps/runtime/dist/routes/lang.js +7 -0
- package/apps/runtime/dist/routes/marketplace.js +2 -1
- package/apps/runtime/dist/routes/plugin-public.js +2 -1
- package/apps/runtime/dist/routes/plugins.js +13 -14
- package/apps/runtime/dist/routes/runs.js +59 -49
- package/apps/runtime/dist/routes/studio.js +53 -23
- package/apps/runtime/dist/services/access.js +3 -3
- package/apps/runtime/dist/services/assistant-chats.js +1 -1
- package/apps/runtime/dist/services/brand.js +2 -2
- package/apps/runtime/dist/services/cloud.js +5 -4
- package/apps/runtime/dist/services/errors.js +2 -1
- package/apps/runtime/dist/services/knowledge-model.js +2 -2
- package/apps/runtime/dist/services/marketplace.js +2 -2
- package/apps/runtime/dist/services/package-file.js +12 -9
- package/apps/runtime/dist/services/package.js +2 -2
- package/apps/runtime/dist/services/project-files.js +10 -12
- package/apps/runtime/dist/services/projects.js +13 -8
- package/apps/runtime/dist/services/runners.js +4 -3
- package/apps/runtime/dist/services/runs.js +3 -3
- package/apps/runtime/dist/services/site.js +2 -2
- package/apps/runtime/dist/services/space-categories.js +4 -4
- package/apps/runtime/dist/services/space-data.js +13 -13
- package/apps/runtime/dist/services/space-origin.js +1 -1
- package/apps/runtime/dist/services/spaces.js +7 -7
- package/apps/runtime/dist/services/wizards.js +5 -5
- package/apps/runtime/dist/tools/net-guard.js +135 -24
- package/apps/runtime/dist/tools/plugin.js +1 -1
- package/apps/runtime/dist/tools/store.js +1 -1
- package/apps/runtime/dist/widgets/step.js +1 -1
- package/apps/web/dist/assets/AboutDialog-hRgrS60N.js +1 -0
- package/apps/web/dist/assets/{ChangelogDialog-BXpkgatF.js → ChangelogDialog-BUSpLhC6.js} +1 -1
- package/apps/web/dist/assets/{ChatView-t7z44uFN.js → ChatView-DO7P5Vv_.js} +1 -1
- package/apps/web/dist/assets/EditorPage-BabV35Bj.js +3 -0
- package/apps/web/dist/assets/{FlowPreview-WpS8DCPl.js → FlowPreview-CKrwLPN0.js} +1 -1
- package/apps/web/dist/assets/{Harness-DL7Bse40.js → Harness-o8IIQXZp.js} +1 -1
- package/apps/web/dist/assets/{NewWizardChannels-Crt6PzH2.js → NewWizardChannels-DqU79Myj.js} +1 -1
- package/apps/web/dist/assets/{NewWizardPage-COiVmNsl.js → NewWizardPage-D1UCvmDp.js} +1 -1
- package/apps/web/dist/assets/{OnboardingPage-BwluEqXq.js → OnboardingPage-C70bqPnq.js} +1 -1
- package/apps/web/dist/assets/{ProjectPage-BIRU_AlN.js → ProjectPage-BOLvmQWZ.js} +1 -1
- package/apps/web/dist/assets/{PublicRunner-BxMb4gEt.js → PublicRunner-B0PGyHI9.js} +1 -1
- package/apps/web/dist/assets/{ReadOnly-D9r5ze5S.js → ReadOnly-B0mJBD1q.js} +1 -1
- package/apps/web/dist/assets/{RunDrawer-DmJl2QOJ.js → RunDrawer-BsnsIJ0Y.js} +1 -1
- package/apps/web/dist/assets/{RunnerView-CF_1rC-7.js → RunnerView-B56i3nKO.js} +1 -1
- package/apps/web/dist/assets/SettingsPage-BvfRUqb2.js +1 -0
- package/apps/web/dist/assets/{SetupPage-BGKtbS7j.js → SetupPage-BvAFPu1J.js} +1 -1
- package/apps/web/dist/assets/{SharePage-C4MqXKDA.js → SharePage-hV5pYrO2.js} +1 -1
- package/apps/web/dist/assets/changelog-BftXQzUA.js +1 -0
- package/apps/web/dist/assets/{esm-CsY8TkyE.js → esm-DfapVSy6.js} +1 -1
- package/apps/web/dist/assets/{index-BjQvGQp_.js → index-BuFrRzvG.js} +4 -4
- package/apps/web/dist/assets/{index-Bi2x2g7n.css → index-DSbQiZY8.css} +1 -1
- package/apps/web/dist/assets/{lock-CI6TpWL-.js → lock-B-tJwE4p.js} +1 -1
- package/apps/web/dist/assets/oss-credits-BJrR7BR1.js +1 -0
- package/apps/web/dist/assets/{phone-BrtQz-fG.js → phone-DRHxY0l_.js} +1 -1
- package/apps/web/dist/assets/{settings-menu-BtEKL72n.js → settings-menu-OPrJTW8a.js} +1 -1
- package/apps/web/dist/assets/{ui-4IaTD7LB.js → ui-DftgEA2k.js} +3 -3
- package/apps/web/dist/assets/{upload-CWJAtPRo.js → upload-B73coFNw.js} +1 -1
- package/apps/web/dist/index.html +3 -3
- package/apps/web/dist/mcp/flow.html +4 -4
- package/bin/wizards.mjs +1 -1
- package/node_modules/@engenty-wizards/plugin-sdk/dist/index.d.ts +21 -2
- package/node_modules/@engenty-wizards/shared/dist/projects.js +1 -1
- package/node_modules/@engenty-wizards/shared/dist/run.d.ts +48 -48
- package/node_modules/@engenty-wizards/shared/dist/run.js +48 -48
- package/package.json +5 -4
- package/apps/web/dist/assets/AboutDialog-A_ILyeue.js +0 -1
- package/apps/web/dist/assets/EditorPage-4qxNJgKr.js +0 -3
- package/apps/web/dist/assets/SettingsPage-3xSInE-A.js +0 -1
- package/apps/web/dist/assets/changelog-CM_GdIVI.js +0 -1
- package/apps/web/dist/assets/oss-credits-BQQX0kvk.js +0 -1
|
@@ -26,7 +26,7 @@ export async function googleThroughAccount() {
|
|
|
26
26
|
async function call(path, body) {
|
|
27
27
|
const token = await accountToken();
|
|
28
28
|
if (!token) {
|
|
29
|
-
throw new AccountConnectError(bilingual("Verbinde zuerst dein engenty-Konto (Einstellungen → Konto)
|
|
29
|
+
throw new AccountConnectError(bilingual("Verbinde zuerst dein engenty-Konto (Einstellungen → Konto). Dann kannst du Google hier verbinden.", "Connect your engenty account first (Settings → Account). Then you can connect Google here."));
|
|
30
30
|
}
|
|
31
31
|
const res = await fetch(`${base()}${path}`, {
|
|
32
32
|
method: "POST",
|
|
@@ -35,15 +35,15 @@ async function call(path, body) {
|
|
|
35
35
|
signal: AbortSignal.timeout(20_000),
|
|
36
36
|
}).catch(() => null);
|
|
37
37
|
if (!res) {
|
|
38
|
-
throw new AccountConnectError(bilingual("Dein engenty-Konto ist gerade nicht erreichbar.
|
|
38
|
+
throw new AccountConnectError(bilingual("Dein engenty-Konto ist gerade nicht erreichbar. Versuch es später noch einmal.", "Your engenty account can’t be reached right now. Try again later."));
|
|
39
39
|
}
|
|
40
40
|
const data = (await res.json().catch(() => ({})));
|
|
41
41
|
if (!res.ok) {
|
|
42
42
|
throw new AccountConnectError(data.code === "invalid_grant"
|
|
43
|
-
? bilingual("Google nimmt diese Verbindung nicht mehr an.
|
|
43
|
+
? bilingual("Google nimmt diese Verbindung nicht mehr an. Verbinde das Konto neu.", "Google no longer accepts this connection. Connect the account again.")
|
|
44
44
|
: data.code === "not_configured"
|
|
45
|
-
? bilingual("Google lässt sich über dein engenty-Konto gerade nicht verbinden.", "Google
|
|
46
|
-
: bilingual(`Verbinden über dein engenty-Konto hat nicht geklappt (${data.code ?? res.status}).`, `Connecting through your engenty account
|
|
45
|
+
? bilingual("Google lässt sich über dein engenty-Konto gerade nicht verbinden.", "Google can’t be connected through your engenty account right now.")
|
|
46
|
+
: bilingual(`Verbinden über dein engenty-Konto hat nicht geklappt (${data.code ?? res.status}).`, `Connecting through your engenty account didn’t work (${data.code ?? res.status}).`));
|
|
47
47
|
}
|
|
48
48
|
return data;
|
|
49
49
|
}
|
|
@@ -107,3 +107,17 @@ export const pluginAddress = sqliteTable("plugin_address", {
|
|
|
107
107
|
plugin: text("plugin").notNull(),
|
|
108
108
|
createdAt: createdAt(),
|
|
109
109
|
}, (t) => [uniqueIndex("plugin_address_tenant").on(t.tenantId, t.plugin)]);
|
|
110
|
+
/**
|
|
111
|
+
* Keys a plugin holds across tenants (`server.claims`), each for one tenant at a time: a keyword
|
|
112
|
+
* on a number every tenant shares, who writes to it, a number a tenant connected. What a shared
|
|
113
|
+
* route asks to find the tenant of a call.
|
|
114
|
+
*/
|
|
115
|
+
export const pluginClaim = sqliteTable("plugin_claim", {
|
|
116
|
+
plugin: text("plugin").notNull(),
|
|
117
|
+
key: text("key").notNull(),
|
|
118
|
+
tenantId: text("tenant_id").notNull(),
|
|
119
|
+
updatedAt: integer("updated_at", { mode: "timestamp_ms" }).notNull().default(now),
|
|
120
|
+
}, (t) => [
|
|
121
|
+
primaryKey({ columns: [t.plugin, t.key] }),
|
|
122
|
+
index("plugin_claim_tenant").on(t.tenantId, t.plugin),
|
|
123
|
+
]);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
CREATE TABLE `plugin_claim` (
|
|
2
|
+
`plugin` text NOT NULL,
|
|
3
|
+
`key` text NOT NULL,
|
|
4
|
+
`tenant_id` text NOT NULL,
|
|
5
|
+
`updated_at` integer DEFAULT (unixepoch() * 1000) NOT NULL,
|
|
6
|
+
PRIMARY KEY(`plugin`, `key`)
|
|
7
|
+
);
|
|
8
|
+
--> statement-breakpoint
|
|
9
|
+
CREATE INDEX `plugin_claim_tenant` ON `plugin_claim` (`tenant_id`,`plugin`);
|
|
@@ -0,0 +1,561 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "6",
|
|
3
|
+
"dialect": "sqlite",
|
|
4
|
+
"id": "9991e82d-196a-4a7b-9c90-df39a12f3aa2",
|
|
5
|
+
"prevId": "47fe3107-ea98-40f9-878c-9b504bc89e9a",
|
|
6
|
+
"tables": {
|
|
7
|
+
"link": {
|
|
8
|
+
"name": "link",
|
|
9
|
+
"columns": {
|
|
10
|
+
"token": {
|
|
11
|
+
"name": "token",
|
|
12
|
+
"type": "text",
|
|
13
|
+
"primaryKey": true,
|
|
14
|
+
"notNull": true,
|
|
15
|
+
"autoincrement": false
|
|
16
|
+
},
|
|
17
|
+
"tenant_id": {
|
|
18
|
+
"name": "tenant_id",
|
|
19
|
+
"type": "text",
|
|
20
|
+
"primaryKey": false,
|
|
21
|
+
"notNull": true,
|
|
22
|
+
"autoincrement": false
|
|
23
|
+
},
|
|
24
|
+
"kind": {
|
|
25
|
+
"name": "kind",
|
|
26
|
+
"type": "text",
|
|
27
|
+
"primaryKey": false,
|
|
28
|
+
"notNull": true,
|
|
29
|
+
"autoincrement": false
|
|
30
|
+
},
|
|
31
|
+
"ref": {
|
|
32
|
+
"name": "ref",
|
|
33
|
+
"type": "text",
|
|
34
|
+
"primaryKey": false,
|
|
35
|
+
"notNull": true,
|
|
36
|
+
"autoincrement": false
|
|
37
|
+
},
|
|
38
|
+
"created_at": {
|
|
39
|
+
"name": "created_at",
|
|
40
|
+
"type": "integer",
|
|
41
|
+
"primaryKey": false,
|
|
42
|
+
"notNull": true,
|
|
43
|
+
"autoincrement": false,
|
|
44
|
+
"default": "(unixepoch() * 1000)"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"indexes": {
|
|
48
|
+
"link_tenant": {
|
|
49
|
+
"name": "link_tenant",
|
|
50
|
+
"columns": [
|
|
51
|
+
"tenant_id"
|
|
52
|
+
],
|
|
53
|
+
"isUnique": false
|
|
54
|
+
},
|
|
55
|
+
"link_ref": {
|
|
56
|
+
"name": "link_ref",
|
|
57
|
+
"columns": [
|
|
58
|
+
"kind",
|
|
59
|
+
"ref"
|
|
60
|
+
],
|
|
61
|
+
"isUnique": false
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"foreignKeys": {},
|
|
65
|
+
"compositePrimaryKeys": {},
|
|
66
|
+
"uniqueConstraints": {},
|
|
67
|
+
"checkConstraints": {}
|
|
68
|
+
},
|
|
69
|
+
"marketplace_cache": {
|
|
70
|
+
"name": "marketplace_cache",
|
|
71
|
+
"columns": {
|
|
72
|
+
"id": {
|
|
73
|
+
"name": "id",
|
|
74
|
+
"type": "text",
|
|
75
|
+
"primaryKey": true,
|
|
76
|
+
"notNull": true,
|
|
77
|
+
"autoincrement": false
|
|
78
|
+
},
|
|
79
|
+
"hash": {
|
|
80
|
+
"name": "hash",
|
|
81
|
+
"type": "text",
|
|
82
|
+
"primaryKey": false,
|
|
83
|
+
"notNull": true,
|
|
84
|
+
"autoincrement": false
|
|
85
|
+
},
|
|
86
|
+
"entry": {
|
|
87
|
+
"name": "entry",
|
|
88
|
+
"type": "text",
|
|
89
|
+
"primaryKey": false,
|
|
90
|
+
"notNull": true,
|
|
91
|
+
"autoincrement": false
|
|
92
|
+
},
|
|
93
|
+
"fetched_at": {
|
|
94
|
+
"name": "fetched_at",
|
|
95
|
+
"type": "integer",
|
|
96
|
+
"primaryKey": false,
|
|
97
|
+
"notNull": true,
|
|
98
|
+
"autoincrement": false,
|
|
99
|
+
"default": "(unixepoch() * 1000)"
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
"indexes": {},
|
|
103
|
+
"foreignKeys": {},
|
|
104
|
+
"compositePrimaryKeys": {},
|
|
105
|
+
"uniqueConstraints": {},
|
|
106
|
+
"checkConstraints": {}
|
|
107
|
+
},
|
|
108
|
+
"plugin_address": {
|
|
109
|
+
"name": "plugin_address",
|
|
110
|
+
"columns": {
|
|
111
|
+
"ref": {
|
|
112
|
+
"name": "ref",
|
|
113
|
+
"type": "text",
|
|
114
|
+
"primaryKey": true,
|
|
115
|
+
"notNull": true,
|
|
116
|
+
"autoincrement": false
|
|
117
|
+
},
|
|
118
|
+
"tenant_id": {
|
|
119
|
+
"name": "tenant_id",
|
|
120
|
+
"type": "text",
|
|
121
|
+
"primaryKey": false,
|
|
122
|
+
"notNull": true,
|
|
123
|
+
"autoincrement": false
|
|
124
|
+
},
|
|
125
|
+
"plugin": {
|
|
126
|
+
"name": "plugin",
|
|
127
|
+
"type": "text",
|
|
128
|
+
"primaryKey": false,
|
|
129
|
+
"notNull": true,
|
|
130
|
+
"autoincrement": false
|
|
131
|
+
},
|
|
132
|
+
"created_at": {
|
|
133
|
+
"name": "created_at",
|
|
134
|
+
"type": "integer",
|
|
135
|
+
"primaryKey": false,
|
|
136
|
+
"notNull": true,
|
|
137
|
+
"autoincrement": false,
|
|
138
|
+
"default": "(unixepoch() * 1000)"
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
"indexes": {
|
|
142
|
+
"plugin_address_tenant": {
|
|
143
|
+
"name": "plugin_address_tenant",
|
|
144
|
+
"columns": [
|
|
145
|
+
"tenant_id",
|
|
146
|
+
"plugin"
|
|
147
|
+
],
|
|
148
|
+
"isUnique": true
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"foreignKeys": {},
|
|
152
|
+
"compositePrimaryKeys": {},
|
|
153
|
+
"uniqueConstraints": {},
|
|
154
|
+
"checkConstraints": {}
|
|
155
|
+
},
|
|
156
|
+
"plugin_claim": {
|
|
157
|
+
"name": "plugin_claim",
|
|
158
|
+
"columns": {
|
|
159
|
+
"plugin": {
|
|
160
|
+
"name": "plugin",
|
|
161
|
+
"type": "text",
|
|
162
|
+
"primaryKey": false,
|
|
163
|
+
"notNull": true,
|
|
164
|
+
"autoincrement": false
|
|
165
|
+
},
|
|
166
|
+
"key": {
|
|
167
|
+
"name": "key",
|
|
168
|
+
"type": "text",
|
|
169
|
+
"primaryKey": false,
|
|
170
|
+
"notNull": true,
|
|
171
|
+
"autoincrement": false
|
|
172
|
+
},
|
|
173
|
+
"tenant_id": {
|
|
174
|
+
"name": "tenant_id",
|
|
175
|
+
"type": "text",
|
|
176
|
+
"primaryKey": false,
|
|
177
|
+
"notNull": true,
|
|
178
|
+
"autoincrement": false
|
|
179
|
+
},
|
|
180
|
+
"updated_at": {
|
|
181
|
+
"name": "updated_at",
|
|
182
|
+
"type": "integer",
|
|
183
|
+
"primaryKey": false,
|
|
184
|
+
"notNull": true,
|
|
185
|
+
"autoincrement": false,
|
|
186
|
+
"default": "(unixepoch() * 1000)"
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
"indexes": {
|
|
190
|
+
"plugin_claim_tenant": {
|
|
191
|
+
"name": "plugin_claim_tenant",
|
|
192
|
+
"columns": [
|
|
193
|
+
"tenant_id",
|
|
194
|
+
"plugin"
|
|
195
|
+
],
|
|
196
|
+
"isUnique": false
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
"foreignKeys": {},
|
|
200
|
+
"compositePrimaryKeys": {
|
|
201
|
+
"plugin_claim_plugin_key_pk": {
|
|
202
|
+
"columns": [
|
|
203
|
+
"plugin",
|
|
204
|
+
"key"
|
|
205
|
+
],
|
|
206
|
+
"name": "plugin_claim_plugin_key_pk"
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
"uniqueConstraints": {},
|
|
210
|
+
"checkConstraints": {}
|
|
211
|
+
},
|
|
212
|
+
"plugin_job": {
|
|
213
|
+
"name": "plugin_job",
|
|
214
|
+
"columns": {
|
|
215
|
+
"tenant_id": {
|
|
216
|
+
"name": "tenant_id",
|
|
217
|
+
"type": "text",
|
|
218
|
+
"primaryKey": false,
|
|
219
|
+
"notNull": true,
|
|
220
|
+
"autoincrement": false
|
|
221
|
+
},
|
|
222
|
+
"plugin": {
|
|
223
|
+
"name": "plugin",
|
|
224
|
+
"type": "text",
|
|
225
|
+
"primaryKey": false,
|
|
226
|
+
"notNull": true,
|
|
227
|
+
"autoincrement": false
|
|
228
|
+
},
|
|
229
|
+
"name": {
|
|
230
|
+
"name": "name",
|
|
231
|
+
"type": "text",
|
|
232
|
+
"primaryKey": false,
|
|
233
|
+
"notNull": true,
|
|
234
|
+
"autoincrement": false
|
|
235
|
+
},
|
|
236
|
+
"last_run_at": {
|
|
237
|
+
"name": "last_run_at",
|
|
238
|
+
"type": "integer",
|
|
239
|
+
"primaryKey": false,
|
|
240
|
+
"notNull": true,
|
|
241
|
+
"autoincrement": false
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
"indexes": {},
|
|
245
|
+
"foreignKeys": {},
|
|
246
|
+
"compositePrimaryKeys": {
|
|
247
|
+
"plugin_job_tenant_id_plugin_name_pk": {
|
|
248
|
+
"columns": [
|
|
249
|
+
"tenant_id",
|
|
250
|
+
"plugin",
|
|
251
|
+
"name"
|
|
252
|
+
],
|
|
253
|
+
"name": "plugin_job_tenant_id_plugin_name_pk"
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
"uniqueConstraints": {},
|
|
257
|
+
"checkConstraints": {}
|
|
258
|
+
},
|
|
259
|
+
"run_index": {
|
|
260
|
+
"name": "run_index",
|
|
261
|
+
"columns": {
|
|
262
|
+
"run_id": {
|
|
263
|
+
"name": "run_id",
|
|
264
|
+
"type": "text",
|
|
265
|
+
"primaryKey": true,
|
|
266
|
+
"notNull": true,
|
|
267
|
+
"autoincrement": false
|
|
268
|
+
},
|
|
269
|
+
"tenant_id": {
|
|
270
|
+
"name": "tenant_id",
|
|
271
|
+
"type": "text",
|
|
272
|
+
"primaryKey": false,
|
|
273
|
+
"notNull": true,
|
|
274
|
+
"autoincrement": false
|
|
275
|
+
},
|
|
276
|
+
"visitor_id": {
|
|
277
|
+
"name": "visitor_id",
|
|
278
|
+
"type": "text",
|
|
279
|
+
"primaryKey": false,
|
|
280
|
+
"notNull": false,
|
|
281
|
+
"autoincrement": false
|
|
282
|
+
},
|
|
283
|
+
"ip_hash": {
|
|
284
|
+
"name": "ip_hash",
|
|
285
|
+
"type": "text",
|
|
286
|
+
"primaryKey": false,
|
|
287
|
+
"notNull": false,
|
|
288
|
+
"autoincrement": false
|
|
289
|
+
},
|
|
290
|
+
"active": {
|
|
291
|
+
"name": "active",
|
|
292
|
+
"type": "integer",
|
|
293
|
+
"primaryKey": false,
|
|
294
|
+
"notNull": true,
|
|
295
|
+
"autoincrement": false,
|
|
296
|
+
"default": false
|
|
297
|
+
},
|
|
298
|
+
"owner": {
|
|
299
|
+
"name": "owner",
|
|
300
|
+
"type": "text",
|
|
301
|
+
"primaryKey": false,
|
|
302
|
+
"notNull": false,
|
|
303
|
+
"autoincrement": false
|
|
304
|
+
},
|
|
305
|
+
"seen": {
|
|
306
|
+
"name": "seen",
|
|
307
|
+
"type": "integer",
|
|
308
|
+
"primaryKey": false,
|
|
309
|
+
"notNull": false,
|
|
310
|
+
"autoincrement": false
|
|
311
|
+
},
|
|
312
|
+
"push": {
|
|
313
|
+
"name": "push",
|
|
314
|
+
"type": "text",
|
|
315
|
+
"primaryKey": false,
|
|
316
|
+
"notNull": false,
|
|
317
|
+
"autoincrement": false
|
|
318
|
+
},
|
|
319
|
+
"created_at": {
|
|
320
|
+
"name": "created_at",
|
|
321
|
+
"type": "integer",
|
|
322
|
+
"primaryKey": false,
|
|
323
|
+
"notNull": true,
|
|
324
|
+
"autoincrement": false,
|
|
325
|
+
"default": "(unixepoch() * 1000)"
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
"indexes": {
|
|
329
|
+
"run_index_visitor": {
|
|
330
|
+
"name": "run_index_visitor",
|
|
331
|
+
"columns": [
|
|
332
|
+
"visitor_id",
|
|
333
|
+
"created_at"
|
|
334
|
+
],
|
|
335
|
+
"isUnique": false
|
|
336
|
+
},
|
|
337
|
+
"run_index_ip": {
|
|
338
|
+
"name": "run_index_ip",
|
|
339
|
+
"columns": [
|
|
340
|
+
"ip_hash",
|
|
341
|
+
"created_at"
|
|
342
|
+
],
|
|
343
|
+
"isUnique": false
|
|
344
|
+
},
|
|
345
|
+
"run_index_active": {
|
|
346
|
+
"name": "run_index_active",
|
|
347
|
+
"columns": [
|
|
348
|
+
"active",
|
|
349
|
+
"tenant_id"
|
|
350
|
+
],
|
|
351
|
+
"isUnique": false
|
|
352
|
+
}
|
|
353
|
+
},
|
|
354
|
+
"foreignKeys": {},
|
|
355
|
+
"compositePrimaryKeys": {},
|
|
356
|
+
"uniqueConstraints": {},
|
|
357
|
+
"checkConstraints": {}
|
|
358
|
+
},
|
|
359
|
+
"runner": {
|
|
360
|
+
"name": "runner",
|
|
361
|
+
"columns": {
|
|
362
|
+
"id": {
|
|
363
|
+
"name": "id",
|
|
364
|
+
"type": "text",
|
|
365
|
+
"primaryKey": true,
|
|
366
|
+
"notNull": true,
|
|
367
|
+
"autoincrement": false
|
|
368
|
+
},
|
|
369
|
+
"url": {
|
|
370
|
+
"name": "url",
|
|
371
|
+
"type": "text",
|
|
372
|
+
"primaryKey": false,
|
|
373
|
+
"notNull": false,
|
|
374
|
+
"autoincrement": false
|
|
375
|
+
},
|
|
376
|
+
"seen": {
|
|
377
|
+
"name": "seen",
|
|
378
|
+
"type": "integer",
|
|
379
|
+
"primaryKey": false,
|
|
380
|
+
"notNull": true,
|
|
381
|
+
"autoincrement": false
|
|
382
|
+
}
|
|
383
|
+
},
|
|
384
|
+
"indexes": {},
|
|
385
|
+
"foreignKeys": {},
|
|
386
|
+
"compositePrimaryKeys": {},
|
|
387
|
+
"uniqueConstraints": {},
|
|
388
|
+
"checkConstraints": {}
|
|
389
|
+
},
|
|
390
|
+
"session": {
|
|
391
|
+
"name": "session",
|
|
392
|
+
"columns": {
|
|
393
|
+
"id": {
|
|
394
|
+
"name": "id",
|
|
395
|
+
"type": "text",
|
|
396
|
+
"primaryKey": true,
|
|
397
|
+
"notNull": true,
|
|
398
|
+
"autoincrement": false
|
|
399
|
+
},
|
|
400
|
+
"user_id": {
|
|
401
|
+
"name": "user_id",
|
|
402
|
+
"type": "text",
|
|
403
|
+
"primaryKey": false,
|
|
404
|
+
"notNull": true,
|
|
405
|
+
"autoincrement": false
|
|
406
|
+
},
|
|
407
|
+
"tenant_id": {
|
|
408
|
+
"name": "tenant_id",
|
|
409
|
+
"type": "text",
|
|
410
|
+
"primaryKey": false,
|
|
411
|
+
"notNull": true,
|
|
412
|
+
"autoincrement": false
|
|
413
|
+
},
|
|
414
|
+
"role": {
|
|
415
|
+
"name": "role",
|
|
416
|
+
"type": "text",
|
|
417
|
+
"primaryKey": false,
|
|
418
|
+
"notNull": true,
|
|
419
|
+
"autoincrement": false
|
|
420
|
+
},
|
|
421
|
+
"name": {
|
|
422
|
+
"name": "name",
|
|
423
|
+
"type": "text",
|
|
424
|
+
"primaryKey": false,
|
|
425
|
+
"notNull": true,
|
|
426
|
+
"autoincrement": false
|
|
427
|
+
},
|
|
428
|
+
"email": {
|
|
429
|
+
"name": "email",
|
|
430
|
+
"type": "text",
|
|
431
|
+
"primaryKey": false,
|
|
432
|
+
"notNull": true,
|
|
433
|
+
"autoincrement": false
|
|
434
|
+
},
|
|
435
|
+
"image": {
|
|
436
|
+
"name": "image",
|
|
437
|
+
"type": "text",
|
|
438
|
+
"primaryKey": false,
|
|
439
|
+
"notNull": false,
|
|
440
|
+
"autoincrement": false
|
|
441
|
+
},
|
|
442
|
+
"refresh_token": {
|
|
443
|
+
"name": "refresh_token",
|
|
444
|
+
"type": "text",
|
|
445
|
+
"primaryKey": false,
|
|
446
|
+
"notNull": false,
|
|
447
|
+
"autoincrement": false
|
|
448
|
+
},
|
|
449
|
+
"claims_expire_at": {
|
|
450
|
+
"name": "claims_expire_at",
|
|
451
|
+
"type": "integer",
|
|
452
|
+
"primaryKey": false,
|
|
453
|
+
"notNull": true,
|
|
454
|
+
"autoincrement": false
|
|
455
|
+
},
|
|
456
|
+
"expires_at": {
|
|
457
|
+
"name": "expires_at",
|
|
458
|
+
"type": "integer",
|
|
459
|
+
"primaryKey": false,
|
|
460
|
+
"notNull": true,
|
|
461
|
+
"autoincrement": false
|
|
462
|
+
},
|
|
463
|
+
"created_at": {
|
|
464
|
+
"name": "created_at",
|
|
465
|
+
"type": "integer",
|
|
466
|
+
"primaryKey": false,
|
|
467
|
+
"notNull": true,
|
|
468
|
+
"autoincrement": false,
|
|
469
|
+
"default": "(unixepoch() * 1000)"
|
|
470
|
+
}
|
|
471
|
+
},
|
|
472
|
+
"indexes": {
|
|
473
|
+
"session_expires": {
|
|
474
|
+
"name": "session_expires",
|
|
475
|
+
"columns": [
|
|
476
|
+
"expires_at"
|
|
477
|
+
],
|
|
478
|
+
"isUnique": false
|
|
479
|
+
}
|
|
480
|
+
},
|
|
481
|
+
"foreignKeys": {},
|
|
482
|
+
"compositePrimaryKeys": {},
|
|
483
|
+
"uniqueConstraints": {},
|
|
484
|
+
"checkConstraints": {}
|
|
485
|
+
},
|
|
486
|
+
"setting": {
|
|
487
|
+
"name": "setting",
|
|
488
|
+
"columns": {
|
|
489
|
+
"key": {
|
|
490
|
+
"name": "key",
|
|
491
|
+
"type": "text",
|
|
492
|
+
"primaryKey": true,
|
|
493
|
+
"notNull": true,
|
|
494
|
+
"autoincrement": false
|
|
495
|
+
},
|
|
496
|
+
"value": {
|
|
497
|
+
"name": "value",
|
|
498
|
+
"type": "text",
|
|
499
|
+
"primaryKey": false,
|
|
500
|
+
"notNull": true,
|
|
501
|
+
"autoincrement": false
|
|
502
|
+
}
|
|
503
|
+
},
|
|
504
|
+
"indexes": {},
|
|
505
|
+
"foreignKeys": {},
|
|
506
|
+
"compositePrimaryKeys": {},
|
|
507
|
+
"uniqueConstraints": {},
|
|
508
|
+
"checkConstraints": {}
|
|
509
|
+
},
|
|
510
|
+
"tenant": {
|
|
511
|
+
"name": "tenant",
|
|
512
|
+
"columns": {
|
|
513
|
+
"id": {
|
|
514
|
+
"name": "id",
|
|
515
|
+
"type": "text",
|
|
516
|
+
"primaryKey": true,
|
|
517
|
+
"notNull": true,
|
|
518
|
+
"autoincrement": false
|
|
519
|
+
},
|
|
520
|
+
"status": {
|
|
521
|
+
"name": "status",
|
|
522
|
+
"type": "text",
|
|
523
|
+
"primaryKey": false,
|
|
524
|
+
"notNull": true,
|
|
525
|
+
"autoincrement": false,
|
|
526
|
+
"default": "'active'"
|
|
527
|
+
},
|
|
528
|
+
"db_url": {
|
|
529
|
+
"name": "db_url",
|
|
530
|
+
"type": "text",
|
|
531
|
+
"primaryKey": false,
|
|
532
|
+
"notNull": false,
|
|
533
|
+
"autoincrement": false
|
|
534
|
+
},
|
|
535
|
+
"created_at": {
|
|
536
|
+
"name": "created_at",
|
|
537
|
+
"type": "integer",
|
|
538
|
+
"primaryKey": false,
|
|
539
|
+
"notNull": true,
|
|
540
|
+
"autoincrement": false,
|
|
541
|
+
"default": "(unixepoch() * 1000)"
|
|
542
|
+
}
|
|
543
|
+
},
|
|
544
|
+
"indexes": {},
|
|
545
|
+
"foreignKeys": {},
|
|
546
|
+
"compositePrimaryKeys": {},
|
|
547
|
+
"uniqueConstraints": {},
|
|
548
|
+
"checkConstraints": {}
|
|
549
|
+
}
|
|
550
|
+
},
|
|
551
|
+
"views": {},
|
|
552
|
+
"enums": {},
|
|
553
|
+
"_meta": {
|
|
554
|
+
"schemas": {},
|
|
555
|
+
"tables": {},
|
|
556
|
+
"columns": {}
|
|
557
|
+
},
|
|
558
|
+
"internal": {
|
|
559
|
+
"indexes": {}
|
|
560
|
+
}
|
|
561
|
+
}
|
|
@@ -1,39 +1,41 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Developer
|
|
3
|
-
description: Extend engenty wizards with plugins
|
|
4
|
-
version: 0.
|
|
3
|
+
description: Extend engenty wizards with plugins – tools for AI steps, routes with their own tables, pages in the studio.
|
|
4
|
+
version: 0.5.0
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
engenty wizards
|
|
8
|
-
code, and
|
|
7
|
+
You extend engenty wizards with **plugins**. A plugin adds to a runtime without changing its
|
|
8
|
+
code, and the runtime loads it from its files while it runs.
|
|
9
9
|
|
|
10
10
|
## Start here
|
|
11
11
|
|
|
12
12
|
| | |
|
|
13
13
|
|---|---|
|
|
14
|
-
| [What a plugin is](./plugins/index.md) | The two halves, what each can add
|
|
15
|
-
| [Quick start](./plugins/quick-start.md) | A tool for AI steps in one file
|
|
14
|
+
| [What a plugin is](./plugins/index.md) | The two halves, what each can add and what a plugin may touch |
|
|
15
|
+
| [Quick start](./plugins/quick-start.md) | A tool for AI steps in one file that works in two minutes |
|
|
16
16
|
| [Reference](./plugins/reference.md) | Every call, type, address and setting |
|
|
17
17
|
| [Examples](./plugins/examples.md) | Two plugins to read and copy |
|
|
18
18
|
|
|
19
19
|
## Wizards as files
|
|
20
20
|
|
|
21
|
-
A wizard is JSON, and it travels as a `.wizard`
|
|
22
|
-
editor and `wizards validate
|
|
21
|
+
A wizard is JSON, and it travels as a `.wizard` file. [The wizard format](./wizard-format.md)
|
|
22
|
+
describes the format, the JSON Schema for your editor and `wizards validate`.
|
|
23
23
|
|
|
24
24
|
## What you need
|
|
25
25
|
|
|
26
|
-
-
|
|
26
|
+
- engenty wizards on your computer, or a checkout of
|
|
27
27
|
[engenty/wizards](https://github.com/engenty/wizards).
|
|
28
|
-
- TypeScript.
|
|
29
|
-
- A checkout, if your plugin draws in the studio: its studio half
|
|
28
|
+
- TypeScript. The runtime reads a plugin’s server half as TypeScript, without a build.
|
|
29
|
+
- A checkout, if your plugin draws in the studio: you build its studio half with the studio’s
|
|
30
30
|
own tools.
|
|
31
31
|
|
|
32
32
|
## Working on engenty wizards itself
|
|
33
33
|
|
|
34
|
-
These pages are about extending
|
|
34
|
+
These pages are about extending engenty wizards. The documents about its own code are in the
|
|
35
|
+
repository:
|
|
35
36
|
|
|
36
37
|
| | |
|
|
37
38
|
|---|---|
|
|
38
|
-
| [docs/development.md](https://github.com/engenty/wizards/blob/main/docs/development.md) |
|
|
39
|
-
| [docs/marketplace-contract.md](https://github.com/engenty/wizards/blob/main/docs/marketplace-contract.md) | What a runtime and the marketplace
|
|
39
|
+
| [docs/development.md](https://github.com/engenty/wizards/blob/main/docs/development.md) | How to run it from source, the checks, how it is built and how it is released |
|
|
40
|
+
| [docs/marketplace-contract.md](https://github.com/engenty/wizards/blob/main/docs/marketplace-contract.md) | What a runtime and the marketplace say to each other |
|
|
41
|
+
| [docs/copy-style.md](https://github.com/engenty/wizards/blob/main/docs/copy-style.md) | How the app talks to people: the voice, the glossary and the rules for every string |
|