@jskit-ai/jskit-catalog 0.1.31 → 0.1.33
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/catalog/packages.json +1290 -726
- package/package.json +1 -1
package/catalog/packages.json
CHANGED
|
@@ -6,14 +6,56 @@
|
|
|
6
6
|
"packages": [
|
|
7
7
|
{
|
|
8
8
|
"packageId": "@jskit-ai/assistant",
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.34",
|
|
10
10
|
"descriptor": {
|
|
11
11
|
"packageVersion": 1,
|
|
12
12
|
"packageId": "@jskit-ai/assistant",
|
|
13
|
-
"version": "0.1.
|
|
14
|
-
"kind": "
|
|
15
|
-
"description": "
|
|
13
|
+
"version": "0.1.34",
|
|
14
|
+
"kind": "generator",
|
|
15
|
+
"description": "Generate an app-local assistant runtime and settings integration from explicit surface choices.",
|
|
16
16
|
"options": {
|
|
17
|
+
"runtime-surface": {
|
|
18
|
+
"required": true,
|
|
19
|
+
"inputType": "text",
|
|
20
|
+
"defaultValue": "",
|
|
21
|
+
"promptLabel": "Runtime surface",
|
|
22
|
+
"promptHint": "Enabled surface id where the assistant page will run."
|
|
23
|
+
},
|
|
24
|
+
"settings-surface": {
|
|
25
|
+
"required": true,
|
|
26
|
+
"inputType": "text",
|
|
27
|
+
"defaultValue": "",
|
|
28
|
+
"promptLabel": "Settings surface",
|
|
29
|
+
"promptHint": "Enabled surface id whose settings outlet will host the assistant settings form."
|
|
30
|
+
},
|
|
31
|
+
"config-scope": {
|
|
32
|
+
"required": true,
|
|
33
|
+
"inputType": "text",
|
|
34
|
+
"defaultValue": "global",
|
|
35
|
+
"promptLabel": "Config scope",
|
|
36
|
+
"promptHint": "global | workspace. Workspace scope requires both selected surfaces to requireWorkspace=true."
|
|
37
|
+
},
|
|
38
|
+
"placement": {
|
|
39
|
+
"required": false,
|
|
40
|
+
"inputType": "text",
|
|
41
|
+
"defaultValue": "",
|
|
42
|
+
"promptLabel": "Menu placement",
|
|
43
|
+
"promptHint": "Optional host:position target for the assistant page menu entry."
|
|
44
|
+
},
|
|
45
|
+
"placement-component-token": {
|
|
46
|
+
"required": false,
|
|
47
|
+
"inputType": "text",
|
|
48
|
+
"defaultValue": "users.web.shell.surface-aware-menu-link-item",
|
|
49
|
+
"promptLabel": "Placement component token",
|
|
50
|
+
"promptHint": "Menu placement component token for the assistant page entry."
|
|
51
|
+
},
|
|
52
|
+
"menu-label": {
|
|
53
|
+
"required": false,
|
|
54
|
+
"inputType": "text",
|
|
55
|
+
"defaultValue": "Assistant",
|
|
56
|
+
"promptLabel": "Menu label",
|
|
57
|
+
"promptHint": "Menu label for the assistant page entry."
|
|
58
|
+
},
|
|
17
59
|
"ai-provider": {
|
|
18
60
|
"required": true,
|
|
19
61
|
"defaultValue": "openai",
|
|
@@ -39,101 +81,121 @@
|
|
|
39
81
|
"defaultValue": "120000",
|
|
40
82
|
"promptLabel": "AI timeout (ms)",
|
|
41
83
|
"promptHint": "Abort AI requests after this many milliseconds."
|
|
42
|
-
},
|
|
43
|
-
"surfaces": {
|
|
44
|
-
"required": true,
|
|
45
|
-
"inputType": "text",
|
|
46
|
-
"defaultValue": "admin",
|
|
47
|
-
"promptLabel": "Target workspace surfaces",
|
|
48
|
-
"promptHint": "Comma-separated workspace surface ids for assistant page + menu placement (for example: admin,app)."
|
|
49
84
|
}
|
|
50
85
|
},
|
|
51
|
-
"dependsOn": [
|
|
52
|
-
"@jskit-ai/auth-core",
|
|
53
|
-
"@jskit-ai/database-runtime",
|
|
54
|
-
"@jskit-ai/http-runtime",
|
|
55
|
-
"@jskit-ai/realtime",
|
|
56
|
-
"@jskit-ai/users-core",
|
|
57
|
-
"@jskit-ai/users-web"
|
|
58
|
-
],
|
|
86
|
+
"dependsOn": [],
|
|
59
87
|
"capabilities": {
|
|
60
88
|
"provides": [
|
|
61
|
-
"assistant"
|
|
89
|
+
"assistant-generator"
|
|
62
90
|
],
|
|
63
|
-
"requires": [
|
|
64
|
-
"runtime.actions",
|
|
65
|
-
"runtime.database",
|
|
66
|
-
"auth.policy",
|
|
67
|
-
"users.core",
|
|
68
|
-
"users.web",
|
|
69
|
-
"runtime.realtime.client"
|
|
70
|
-
]
|
|
91
|
+
"requires": []
|
|
71
92
|
},
|
|
72
93
|
"runtime": {
|
|
73
94
|
"server": {
|
|
74
|
-
"providers": [
|
|
75
|
-
{
|
|
76
|
-
"entrypoint": "src/server/AssistantServiceProvider.js",
|
|
77
|
-
"export": "AssistantServiceProvider"
|
|
78
|
-
}
|
|
79
|
-
]
|
|
95
|
+
"providers": []
|
|
80
96
|
},
|
|
81
97
|
"client": {
|
|
82
|
-
"providers": [
|
|
83
|
-
{
|
|
84
|
-
"entrypoint": "src/client/providers/AssistantWebClientProvider.js",
|
|
85
|
-
"export": "AssistantWebClientProvider"
|
|
86
|
-
}
|
|
87
|
-
]
|
|
98
|
+
"providers": []
|
|
88
99
|
}
|
|
89
100
|
},
|
|
90
101
|
"metadata": {
|
|
102
|
+
"generatorPrimarySubcommand": "install",
|
|
103
|
+
"generatorSubcommands": {
|
|
104
|
+
"install": {
|
|
105
|
+
"description": "Generate and install an app-local assistant runtime from explicit surface choices.",
|
|
106
|
+
"examples": [
|
|
107
|
+
{
|
|
108
|
+
"label": "App runtime, console settings, global config",
|
|
109
|
+
"lines": [
|
|
110
|
+
"npx jskit generate @jskit-ai/assistant install \\",
|
|
111
|
+
" --runtime-surface app \\",
|
|
112
|
+
" --settings-surface console \\",
|
|
113
|
+
" --config-scope global \\",
|
|
114
|
+
" --placement shell-layout:primary-menu \\",
|
|
115
|
+
" --menu-label Assistant \\",
|
|
116
|
+
" --ai-provider openai \\",
|
|
117
|
+
" --ai-api-key \"$OPENAI_API_KEY\" \\",
|
|
118
|
+
" --ai-base-url \"\" \\",
|
|
119
|
+
" --ai-timeout-ms 120000 \\",
|
|
120
|
+
" --run-npm-install"
|
|
121
|
+
]
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"label": "App runtime, app settings, global config",
|
|
125
|
+
"lines": [
|
|
126
|
+
"npx jskit generate @jskit-ai/assistant install \\",
|
|
127
|
+
" --runtime-surface app \\",
|
|
128
|
+
" --settings-surface app \\",
|
|
129
|
+
" --config-scope global \\",
|
|
130
|
+
" --placement shell-layout:primary-menu \\",
|
|
131
|
+
" --menu-label Assistant \\",
|
|
132
|
+
" --ai-provider openai \\",
|
|
133
|
+
" --ai-api-key \"$OPENAI_API_KEY\" \\",
|
|
134
|
+
" --ai-base-url \"\" \\",
|
|
135
|
+
" --ai-timeout-ms 120000 \\",
|
|
136
|
+
" --run-npm-install"
|
|
137
|
+
]
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"label": "Workspace runtime, console settings, global config",
|
|
141
|
+
"lines": [
|
|
142
|
+
"npx jskit generate @jskit-ai/assistant install \\",
|
|
143
|
+
" --runtime-surface admin \\",
|
|
144
|
+
" --settings-surface console \\",
|
|
145
|
+
" --config-scope global \\",
|
|
146
|
+
" --placement shell-layout:primary-menu \\",
|
|
147
|
+
" --menu-label Assistant \\",
|
|
148
|
+
" --ai-provider openai \\",
|
|
149
|
+
" --ai-api-key \"$OPENAI_API_KEY\" \\",
|
|
150
|
+
" --ai-base-url \"\" \\",
|
|
151
|
+
" --ai-timeout-ms 120000 \\",
|
|
152
|
+
" --run-npm-install"
|
|
153
|
+
]
|
|
154
|
+
},
|
|
155
|
+
{
|
|
156
|
+
"label": "Workspace runtime, workspace settings, workspace config",
|
|
157
|
+
"lines": [
|
|
158
|
+
"npx jskit generate @jskit-ai/assistant install \\",
|
|
159
|
+
" --runtime-surface admin \\",
|
|
160
|
+
" --settings-surface admin \\",
|
|
161
|
+
" --config-scope workspace \\",
|
|
162
|
+
" --placement shell-layout:primary-menu \\",
|
|
163
|
+
" --menu-label Assistant \\",
|
|
164
|
+
" --ai-provider openai \\",
|
|
165
|
+
" --ai-api-key \"$OPENAI_API_KEY\" \\",
|
|
166
|
+
" --ai-base-url \"\" \\",
|
|
167
|
+
" --ai-timeout-ms 120000 \\",
|
|
168
|
+
" --run-npm-install"
|
|
169
|
+
]
|
|
170
|
+
}
|
|
171
|
+
]
|
|
172
|
+
}
|
|
173
|
+
},
|
|
91
174
|
"apiSummary": {
|
|
92
175
|
"surfaces": [
|
|
93
176
|
{
|
|
94
|
-
"subpath": "./server/
|
|
95
|
-
"summary": "
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
"subpath": "./client",
|
|
99
|
-
"summary": "Exports assistant workspace element and composables."
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
"subpath": "./shared",
|
|
103
|
-
"summary": "Exports assistant API paths, query keys, stream events, and resource validators."
|
|
177
|
+
"subpath": "./server/buildTemplateContext",
|
|
178
|
+
"summary": "Builds deterministic assistant generator template context values from app surface metadata."
|
|
104
179
|
}
|
|
105
180
|
],
|
|
106
181
|
"containerTokens": {
|
|
107
|
-
"server": [
|
|
108
|
-
|
|
109
|
-
"assistant.conversation.repository",
|
|
110
|
-
"assistant.message.repository",
|
|
111
|
-
"assistant.service.tool-catalog",
|
|
112
|
-
"assistant.settings.repository"
|
|
113
|
-
],
|
|
114
|
-
"client": [
|
|
115
|
-
"assistant.web.console-settings.element",
|
|
116
|
-
"assistant.web.workspace-settings.element"
|
|
117
|
-
]
|
|
182
|
+
"server": [],
|
|
183
|
+
"client": []
|
|
118
184
|
}
|
|
119
185
|
}
|
|
120
186
|
},
|
|
121
187
|
"mutations": {
|
|
122
188
|
"dependencies": {
|
|
123
189
|
"runtime": {
|
|
124
|
-
"@
|
|
125
|
-
"@jskit-ai/
|
|
126
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
127
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
128
|
-
"@jskit-ai/kernel": "0.1.
|
|
129
|
-
"@jskit-ai/
|
|
130
|
-
"@jskit-ai/users-core": "0.1.
|
|
131
|
-
"@jskit-ai/users-web": "0.1.
|
|
190
|
+
"@local/assistant": "file:packages/assistant",
|
|
191
|
+
"@jskit-ai/assistant-core": "0.1.1",
|
|
192
|
+
"@jskit-ai/database-runtime": "0.1.25",
|
|
193
|
+
"@jskit-ai/http-runtime": "0.1.24",
|
|
194
|
+
"@jskit-ai/kernel": "0.1.25",
|
|
195
|
+
"@jskit-ai/shell-web": "0.1.24",
|
|
196
|
+
"@jskit-ai/users-core": "0.1.35",
|
|
197
|
+
"@jskit-ai/users-web": "0.1.40",
|
|
132
198
|
"@tanstack/vue-query": "^5.90.5",
|
|
133
|
-
"dompurify": "^3.3.3",
|
|
134
|
-
"marked": "^17.0.4",
|
|
135
|
-
"openai": "^6.22.0",
|
|
136
|
-
"typebox": "^1.0.81",
|
|
137
199
|
"vuetify": "^4.0.0"
|
|
138
200
|
},
|
|
139
201
|
"dev": {}
|
|
@@ -145,118 +207,251 @@
|
|
|
145
207
|
"files": [
|
|
146
208
|
{
|
|
147
209
|
"op": "install-migration",
|
|
148
|
-
"from": "templates/migrations/
|
|
210
|
+
"from": "templates/migrations/assistant_config_initial.cjs",
|
|
149
211
|
"toDir": "migrations",
|
|
150
212
|
"extension": ".cjs",
|
|
151
|
-
"reason": "Install assistant
|
|
213
|
+
"reason": "Install assistant configuration schema migration.",
|
|
152
214
|
"category": "assistant",
|
|
153
|
-
"id": "assistant-
|
|
215
|
+
"id": "assistant-config-initial-schema",
|
|
216
|
+
"templateContext": {
|
|
217
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
218
|
+
"export": "buildTemplateContext"
|
|
219
|
+
}
|
|
154
220
|
},
|
|
155
221
|
{
|
|
156
222
|
"op": "install-migration",
|
|
157
|
-
"from": "templates/migrations/
|
|
223
|
+
"from": "templates/migrations/assistant_transcripts_initial.cjs",
|
|
158
224
|
"toDir": "migrations",
|
|
159
225
|
"extension": ".cjs",
|
|
160
|
-
"reason": "Install assistant
|
|
226
|
+
"reason": "Install assistant transcript schema migration.",
|
|
227
|
+
"category": "assistant",
|
|
228
|
+
"id": "assistant-transcripts-initial-schema",
|
|
229
|
+
"templateContext": {
|
|
230
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
231
|
+
"export": "buildTemplateContext"
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"from": "templates/src/local-package/package.json",
|
|
236
|
+
"to": "packages/assistant/package.json",
|
|
237
|
+
"reason": "Install app-local assistant package manifest.",
|
|
161
238
|
"category": "assistant",
|
|
162
|
-
"id": "assistant-
|
|
239
|
+
"id": "assistant-local-package-json"
|
|
163
240
|
},
|
|
164
241
|
{
|
|
165
|
-
"from": "templates/src/
|
|
166
|
-
"
|
|
167
|
-
"
|
|
168
|
-
"reason": "Install assistant workspace page scaffold.",
|
|
242
|
+
"from": "templates/src/local-package/package.descriptor.mjs",
|
|
243
|
+
"to": "packages/assistant/package.descriptor.mjs",
|
|
244
|
+
"reason": "Install app-local assistant package descriptor.",
|
|
169
245
|
"category": "assistant",
|
|
170
|
-
"id": "assistant-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
246
|
+
"id": "assistant-local-package-descriptor"
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"from": "templates/src/local-package/shared/assistantRuntimeConfig.js",
|
|
250
|
+
"to": "packages/assistant/src/shared/assistantRuntimeConfig.js",
|
|
251
|
+
"reason": "Install generated assistant runtime configuration.",
|
|
252
|
+
"category": "assistant",
|
|
253
|
+
"id": "assistant-local-runtime-config",
|
|
254
|
+
"templateContext": {
|
|
255
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
256
|
+
"export": "buildTemplateContext"
|
|
177
257
|
}
|
|
178
|
-
}
|
|
179
|
-
],
|
|
180
|
-
"text": [
|
|
258
|
+
},
|
|
181
259
|
{
|
|
182
|
-
"
|
|
183
|
-
"
|
|
184
|
-
"
|
|
185
|
-
"skipIfContains": "id: \"assistant.workspace.menu\"",
|
|
186
|
-
"value": "\n(() => {\n const assistantWorkspaceSurfaceIds = \"${option:surfaces|lower}\"\n .split(\",\")\n .map((entry) => String(entry || \"\").trim().toLowerCase())\n .filter(Boolean);\n\n addPlacement({\n id: \"assistant.workspace.menu\",\n host: \"shell-layout\",\n position: \"primary-menu\",\n surfaces: assistantWorkspaceSurfaceIds.length > 0 ? assistantWorkspaceSurfaceIds : [\"*\"],\n order: 310,\n componentToken: \"users.web.shell.surface-aware-menu-link-item\",\n props: {\n label: \"Assistant\",\n workspaceSuffix: \"/workspace/assistant\",\n nonWorkspaceSuffix: \"/workspace/assistant\"\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n });\n})();\n",
|
|
187
|
-
"reason": "Append assistant menu placement into app-owned placement registry.",
|
|
260
|
+
"from": "templates/src/local-package/shared/index.js",
|
|
261
|
+
"to": "packages/assistant/src/shared/index.js",
|
|
262
|
+
"reason": "Install generated assistant shared exports.",
|
|
188
263
|
"category": "assistant",
|
|
189
|
-
"id": "assistant-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
264
|
+
"id": "assistant-local-shared-index"
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"from": "templates/src/local-package/client/index.js",
|
|
268
|
+
"to": "packages/assistant/src/client/index.js",
|
|
269
|
+
"reason": "Install generated assistant client exports.",
|
|
270
|
+
"category": "assistant",
|
|
271
|
+
"id": "assistant-local-client-index"
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"from": "templates/src/local-package/client/components/AssistantSurfaceClientElement.vue",
|
|
275
|
+
"to": "packages/assistant/src/client/components/AssistantSurfaceClientElement.vue",
|
|
276
|
+
"reason": "Install generated assistant surface page component.",
|
|
277
|
+
"category": "assistant",
|
|
278
|
+
"id": "assistant-local-surface-client-element",
|
|
279
|
+
"templateContext": {
|
|
280
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
281
|
+
"export": "buildTemplateContext"
|
|
196
282
|
}
|
|
197
283
|
},
|
|
198
284
|
{
|
|
199
|
-
"
|
|
200
|
-
"
|
|
201
|
-
"
|
|
202
|
-
"skipIfContains": "id: \"assistant.workspace.settings.form\"",
|
|
203
|
-
"value": "\naddPlacement({\n id: \"assistant.workspace.settings.form\",\n host: \"workspace-settings\",\n position: \"forms\",\n surfaces: [\"*\"],\n order: 250,\n componentToken: \"assistant.web.workspace-settings.element\"\n});\n",
|
|
204
|
-
"reason": "Append assistant workspace settings form into app-owned settings placements.",
|
|
285
|
+
"from": "templates/src/local-package/client/components/AssistantSettingsClientElement.vue",
|
|
286
|
+
"to": "packages/assistant/src/client/components/AssistantSettingsClientElement.vue",
|
|
287
|
+
"reason": "Install generated assistant settings form component.",
|
|
205
288
|
"category": "assistant",
|
|
206
|
-
"id": "assistant-
|
|
207
|
-
"
|
|
208
|
-
"
|
|
209
|
-
"
|
|
210
|
-
"personal",
|
|
211
|
-
"workspaces"
|
|
212
|
-
]
|
|
289
|
+
"id": "assistant-local-settings-client-element",
|
|
290
|
+
"templateContext": {
|
|
291
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
292
|
+
"export": "buildTemplateContext"
|
|
213
293
|
}
|
|
214
294
|
},
|
|
215
295
|
{
|
|
216
|
-
"
|
|
217
|
-
"
|
|
218
|
-
"
|
|
219
|
-
"skipIfContains": "id: \"assistant.console.settings.form\"",
|
|
220
|
-
"value": "\naddPlacement({\n id: \"assistant.console.settings.form\",\n host: \"console-settings\",\n position: \"forms\",\n surfaces: [\"*\"],\n order: 250,\n componentToken: \"assistant.web.console-settings.element\",\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
221
|
-
"reason": "Append assistant console settings form into app-owned settings placements.",
|
|
296
|
+
"from": "templates/src/local-package/client/composables/useAssistantRuntime.js",
|
|
297
|
+
"to": "packages/assistant/src/client/composables/useAssistantRuntime.js",
|
|
298
|
+
"reason": "Install generated assistant runtime composable.",
|
|
222
299
|
"category": "assistant",
|
|
223
|
-
"id": "assistant-
|
|
300
|
+
"id": "assistant-local-runtime-composable",
|
|
301
|
+
"templateContext": {
|
|
302
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
303
|
+
"export": "buildTemplateContext"
|
|
304
|
+
}
|
|
224
305
|
},
|
|
225
306
|
{
|
|
226
|
-
"
|
|
227
|
-
"
|
|
228
|
-
"
|
|
229
|
-
"
|
|
230
|
-
"
|
|
231
|
-
|
|
307
|
+
"from": "templates/src/local-package/client/providers/AssistantClientProvider.js",
|
|
308
|
+
"to": "packages/assistant/src/client/providers/AssistantClientProvider.js",
|
|
309
|
+
"reason": "Install generated assistant client provider.",
|
|
310
|
+
"category": "assistant",
|
|
311
|
+
"id": "assistant-local-client-provider"
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
"from": "templates/src/local-package/server/AssistantProvider.js",
|
|
315
|
+
"to": "packages/assistant/src/server/AssistantProvider.js",
|
|
316
|
+
"reason": "Install generated assistant server provider.",
|
|
317
|
+
"category": "assistant",
|
|
318
|
+
"id": "assistant-local-server-provider",
|
|
319
|
+
"templateContext": {
|
|
320
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
321
|
+
"export": "buildTemplateContext"
|
|
322
|
+
}
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"from": "templates/src/local-package/server/actionIds.js",
|
|
326
|
+
"to": "packages/assistant/src/server/actionIds.js",
|
|
327
|
+
"reason": "Install generated assistant action identifiers.",
|
|
328
|
+
"category": "assistant",
|
|
329
|
+
"id": "assistant-local-action-ids"
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
"from": "templates/src/local-package/server/actions.js",
|
|
333
|
+
"to": "packages/assistant/src/server/actions.js",
|
|
334
|
+
"reason": "Install generated assistant action definitions.",
|
|
335
|
+
"category": "assistant",
|
|
336
|
+
"id": "assistant-local-actions",
|
|
337
|
+
"templateContext": {
|
|
338
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
339
|
+
"export": "buildTemplateContext"
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
"from": "templates/src/local-package/server/registerRoutes.js",
|
|
344
|
+
"to": "packages/assistant/src/server/registerRoutes.js",
|
|
345
|
+
"reason": "Install generated assistant route registration.",
|
|
346
|
+
"category": "assistant",
|
|
347
|
+
"id": "assistant-local-register-routes",
|
|
348
|
+
"templateContext": {
|
|
349
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
350
|
+
"export": "buildTemplateContext"
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
"from": "templates/src/local-package/server/repositories/assistantConfigRepository.js",
|
|
355
|
+
"to": "packages/assistant/src/server/repositories/assistantConfigRepository.js",
|
|
356
|
+
"reason": "Install generated assistant config repository.",
|
|
357
|
+
"category": "assistant",
|
|
358
|
+
"id": "assistant-local-config-repository",
|
|
359
|
+
"templateContext": {
|
|
360
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
361
|
+
"export": "buildTemplateContext"
|
|
362
|
+
}
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"from": "templates/src/local-package/server/repositories/conversationsRepository.js",
|
|
366
|
+
"to": "packages/assistant/src/server/repositories/conversationsRepository.js",
|
|
367
|
+
"reason": "Install generated assistant conversations repository.",
|
|
368
|
+
"category": "assistant",
|
|
369
|
+
"id": "assistant-local-conversations-repository",
|
|
370
|
+
"templateContext": {
|
|
371
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
372
|
+
"export": "buildTemplateContext"
|
|
373
|
+
}
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
"from": "templates/src/local-package/server/repositories/messagesRepository.js",
|
|
377
|
+
"to": "packages/assistant/src/server/repositories/messagesRepository.js",
|
|
378
|
+
"reason": "Install generated assistant messages repository.",
|
|
379
|
+
"category": "assistant",
|
|
380
|
+
"id": "assistant-local-messages-repository",
|
|
381
|
+
"templateContext": {
|
|
382
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
383
|
+
"export": "buildTemplateContext"
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
"from": "templates/src/local-package/server/services/assistantConfigService.js",
|
|
388
|
+
"to": "packages/assistant/src/server/services/assistantConfigService.js",
|
|
389
|
+
"reason": "Install generated assistant config service.",
|
|
390
|
+
"category": "assistant",
|
|
391
|
+
"id": "assistant-local-config-service",
|
|
392
|
+
"templateContext": {
|
|
393
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
394
|
+
"export": "buildTemplateContext"
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
"from": "templates/src/local-package/server/services/chatService.js",
|
|
399
|
+
"to": "packages/assistant/src/server/services/chatService.js",
|
|
400
|
+
"reason": "Install generated assistant chat service.",
|
|
401
|
+
"category": "assistant",
|
|
402
|
+
"id": "assistant-local-chat-service",
|
|
403
|
+
"templateContext": {
|
|
404
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
405
|
+
"export": "buildTemplateContext"
|
|
406
|
+
}
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
"from": "templates/src/local-package/server/services/transcriptService.js",
|
|
410
|
+
"to": "packages/assistant/src/server/services/transcriptService.js",
|
|
411
|
+
"reason": "Install generated assistant transcript service.",
|
|
232
412
|
"category": "assistant",
|
|
233
|
-
"id": "assistant-
|
|
413
|
+
"id": "assistant-local-transcript-service",
|
|
414
|
+
"templateContext": {
|
|
415
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
416
|
+
"export": "buildTemplateContext"
|
|
417
|
+
}
|
|
234
418
|
},
|
|
419
|
+
{
|
|
420
|
+
"from": "templates/src/pages/assistant/index.vue",
|
|
421
|
+
"toSurface": "${option:runtime-surface|lower}",
|
|
422
|
+
"toSurfacePath": "assistant/index.vue",
|
|
423
|
+
"reason": "Install generated assistant runtime page.",
|
|
424
|
+
"category": "assistant",
|
|
425
|
+
"id": "assistant-page-runtime"
|
|
426
|
+
}
|
|
427
|
+
],
|
|
428
|
+
"text": [
|
|
235
429
|
{
|
|
236
430
|
"op": "append-text",
|
|
237
|
-
"file": "
|
|
431
|
+
"file": "src/placement.js",
|
|
238
432
|
"position": "bottom",
|
|
239
|
-
"skipIfContains": "
|
|
240
|
-
"value": "\
|
|
241
|
-
"reason": "Append assistant
|
|
433
|
+
"skipIfContains": "id: \"assistant.generated.menu\"",
|
|
434
|
+
"value": "\naddPlacement({\n id: \"assistant.generated.menu\",\n host: \"__ASSISTANT_MENU_PLACEMENT_HOST__\",\n position: \"__ASSISTANT_MENU_PLACEMENT_POSITION__\",\n surfaces: [\"${option:runtime-surface|lower}\"],\n order: 310,\n componentToken: \"__ASSISTANT_MENU_COMPONENT_TOKEN__\",\n props: {\n label: \"__ASSISTANT_MENU_LABEL__\",\n surface: \"${option:runtime-surface|lower}\",\n workspaceSuffix: \"__ASSISTANT_MENU_WORKSPACE_SUFFIX__\",\n nonWorkspaceSuffix: \"__ASSISTANT_MENU_NON_WORKSPACE_SUFFIX__\"\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
435
|
+
"reason": "Append generated assistant runtime menu placement into app-owned placement registry.",
|
|
242
436
|
"category": "assistant",
|
|
243
|
-
"id": "assistant-
|
|
437
|
+
"id": "assistant-placement-menu",
|
|
438
|
+
"templateContext": {
|
|
439
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
440
|
+
"export": "buildTemplateContext"
|
|
441
|
+
}
|
|
244
442
|
},
|
|
245
443
|
{
|
|
246
444
|
"op": "append-text",
|
|
247
|
-
"file": "
|
|
445
|
+
"file": "src/placement.js",
|
|
248
446
|
"position": "bottom",
|
|
249
|
-
"skipIfContains": "
|
|
250
|
-
"value": "\
|
|
251
|
-
"reason": "Append assistant
|
|
447
|
+
"skipIfContains": "id: \"assistant.generated.settings.form\"",
|
|
448
|
+
"value": "\naddPlacement({\n id: \"assistant.generated.settings.form\",\n host: \"__ASSISTANT_SETTINGS_HOST__\",\n position: \"forms\",\n surfaces: [\"${option:settings-surface|lower}\"],\n order: 250,\n componentToken: \"assistant.web.settings.element\",\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
449
|
+
"reason": "Append generated assistant settings form placement into app-owned settings placements.",
|
|
252
450
|
"category": "assistant",
|
|
253
|
-
"id": "assistant-
|
|
254
|
-
"
|
|
255
|
-
"
|
|
256
|
-
"
|
|
257
|
-
"personal",
|
|
258
|
-
"workspaces"
|
|
259
|
-
]
|
|
451
|
+
"id": "assistant-settings-form-placement",
|
|
452
|
+
"templateContext": {
|
|
453
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
454
|
+
"export": "buildTemplateContext"
|
|
260
455
|
}
|
|
261
456
|
},
|
|
262
457
|
{
|
|
@@ -273,7 +468,7 @@
|
|
|
273
468
|
"op": "upsert-env",
|
|
274
469
|
"key": "AI_API_KEY",
|
|
275
470
|
"value": "${option:ai-api-key}",
|
|
276
|
-
"reason": "Configure assistant
|
|
471
|
+
"reason": "Configure assistant AI API key.",
|
|
277
472
|
"category": "runtime-config",
|
|
278
473
|
"id": "assistant-ai-api-key"
|
|
279
474
|
},
|
|
@@ -282,7 +477,7 @@
|
|
|
282
477
|
"op": "upsert-env",
|
|
283
478
|
"key": "AI_BASE_URL",
|
|
284
479
|
"value": "${option:ai-base-url}",
|
|
285
|
-
"reason": "Configure
|
|
480
|
+
"reason": "Configure assistant AI base URL override.",
|
|
286
481
|
"category": "runtime-config",
|
|
287
482
|
"id": "assistant-ai-base-url"
|
|
288
483
|
},
|
|
@@ -291,7 +486,7 @@
|
|
|
291
486
|
"op": "upsert-env",
|
|
292
487
|
"key": "AI_TIMEOUT_MS",
|
|
293
488
|
"value": "${option:ai-timeout-ms}",
|
|
294
|
-
"reason": "Configure assistant
|
|
489
|
+
"reason": "Configure assistant AI timeout in milliseconds.",
|
|
295
490
|
"category": "runtime-config",
|
|
296
491
|
"id": "assistant-ai-timeout-ms"
|
|
297
492
|
}
|
|
@@ -300,15 +495,88 @@
|
|
|
300
495
|
}
|
|
301
496
|
},
|
|
302
497
|
{
|
|
303
|
-
"packageId": "@jskit-ai/
|
|
304
|
-
"version": "0.1.
|
|
498
|
+
"packageId": "@jskit-ai/assistant-core",
|
|
499
|
+
"version": "0.1.1",
|
|
305
500
|
"descriptor": {
|
|
306
501
|
"packageVersion": 1,
|
|
307
|
-
"packageId": "@jskit-ai/
|
|
308
|
-
"version": "0.1.
|
|
502
|
+
"packageId": "@jskit-ai/assistant-core",
|
|
503
|
+
"version": "0.1.1",
|
|
309
504
|
"kind": "runtime",
|
|
505
|
+
"description": "Reusable assistant client/server/shared primitives without surface-specific routes or settings ownership.",
|
|
310
506
|
"dependsOn": [
|
|
311
|
-
"@jskit-ai/
|
|
507
|
+
"@jskit-ai/http-runtime",
|
|
508
|
+
"@jskit-ai/users-core"
|
|
509
|
+
],
|
|
510
|
+
"capabilities": {
|
|
511
|
+
"provides": [
|
|
512
|
+
"assistant.core"
|
|
513
|
+
],
|
|
514
|
+
"requires": []
|
|
515
|
+
},
|
|
516
|
+
"runtime": {
|
|
517
|
+
"server": {
|
|
518
|
+
"providers": []
|
|
519
|
+
},
|
|
520
|
+
"client": {
|
|
521
|
+
"providers": []
|
|
522
|
+
}
|
|
523
|
+
},
|
|
524
|
+
"metadata": {
|
|
525
|
+
"apiSummary": {
|
|
526
|
+
"surfaces": [
|
|
527
|
+
{
|
|
528
|
+
"subpath": "./client",
|
|
529
|
+
"summary": "Exports reusable assistant UI primitives, HTTP helpers, and client API builders."
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
"subpath": "./server",
|
|
533
|
+
"summary": "Exports reusable assistant AI/provider helpers, NDJSON streaming helpers, and repository persistence helpers."
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
"subpath": "./shared",
|
|
537
|
+
"summary": "Exports reusable assistant validators, path helpers, query keys, and stream/settings events."
|
|
538
|
+
}
|
|
539
|
+
],
|
|
540
|
+
"containerTokens": {
|
|
541
|
+
"server": [],
|
|
542
|
+
"client": []
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
},
|
|
546
|
+
"mutations": {
|
|
547
|
+
"dependencies": {
|
|
548
|
+
"runtime": {
|
|
549
|
+
"@jskit-ai/http-runtime": "0.1.24",
|
|
550
|
+
"@jskit-ai/kernel": "0.1.25",
|
|
551
|
+
"@jskit-ai/users-core": "0.1.35",
|
|
552
|
+
"@tanstack/vue-query": "^5.90.5",
|
|
553
|
+
"dompurify": "^3.3.3",
|
|
554
|
+
"marked": "^17.0.4",
|
|
555
|
+
"openai": "^6.22.0",
|
|
556
|
+
"typebox": "^1.0.81",
|
|
557
|
+
"vuetify": "^4.0.0"
|
|
558
|
+
},
|
|
559
|
+
"dev": {}
|
|
560
|
+
},
|
|
561
|
+
"packageJson": {
|
|
562
|
+
"scripts": {}
|
|
563
|
+
},
|
|
564
|
+
"procfile": {},
|
|
565
|
+
"files": [],
|
|
566
|
+
"text": []
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
},
|
|
570
|
+
{
|
|
571
|
+
"packageId": "@jskit-ai/auth-core",
|
|
572
|
+
"version": "0.1.24",
|
|
573
|
+
"descriptor": {
|
|
574
|
+
"packageVersion": 1,
|
|
575
|
+
"packageId": "@jskit-ai/auth-core",
|
|
576
|
+
"version": "0.1.24",
|
|
577
|
+
"kind": "runtime",
|
|
578
|
+
"dependsOn": [
|
|
579
|
+
"@jskit-ai/value-app-config-shared"
|
|
312
580
|
],
|
|
313
581
|
"capabilities": {
|
|
314
582
|
"provides": [
|
|
@@ -373,7 +641,7 @@
|
|
|
373
641
|
"mutations": {
|
|
374
642
|
"dependencies": {
|
|
375
643
|
"runtime": {
|
|
376
|
-
"@jskit-ai/kernel": "0.1.
|
|
644
|
+
"@jskit-ai/kernel": "0.1.25",
|
|
377
645
|
"@fastify/cookie": "^11.0.2",
|
|
378
646
|
"@fastify/csrf-protection": "^7.1.0",
|
|
379
647
|
"@fastify/rate-limit": "^10.3.0"
|
|
@@ -391,11 +659,11 @@
|
|
|
391
659
|
},
|
|
392
660
|
{
|
|
393
661
|
"packageId": "@jskit-ai/auth-provider-supabase-core",
|
|
394
|
-
"version": "0.1.
|
|
662
|
+
"version": "0.1.24",
|
|
395
663
|
"descriptor": {
|
|
396
664
|
"packageVersion": 1,
|
|
397
665
|
"packageId": "@jskit-ai/auth-provider-supabase-core",
|
|
398
|
-
"version": "0.1.
|
|
666
|
+
"version": "0.1.24",
|
|
399
667
|
"kind": "runtime",
|
|
400
668
|
"options": {
|
|
401
669
|
"auth-supabase-url": {
|
|
@@ -477,8 +745,8 @@
|
|
|
477
745
|
"mutations": {
|
|
478
746
|
"dependencies": {
|
|
479
747
|
"runtime": {
|
|
480
|
-
"@jskit-ai/auth-core": "0.1.
|
|
481
|
-
"@jskit-ai/kernel": "0.1.
|
|
748
|
+
"@jskit-ai/auth-core": "0.1.24",
|
|
749
|
+
"@jskit-ai/kernel": "0.1.25",
|
|
482
750
|
"dotenv": "^16.4.5",
|
|
483
751
|
"@supabase/supabase-js": "^2.57.4",
|
|
484
752
|
"jose": "^6.1.0"
|
|
@@ -543,11 +811,11 @@
|
|
|
543
811
|
},
|
|
544
812
|
{
|
|
545
813
|
"packageId": "@jskit-ai/auth-web",
|
|
546
|
-
"version": "0.1.
|
|
814
|
+
"version": "0.1.26",
|
|
547
815
|
"descriptor": {
|
|
548
816
|
"packageVersion": 1,
|
|
549
817
|
"packageId": "@jskit-ai/auth-web",
|
|
550
|
-
"version": "0.1.
|
|
818
|
+
"version": "0.1.26",
|
|
551
819
|
"kind": "runtime",
|
|
552
820
|
"description": "Auth web module: Fastify auth routes plus web login/sign-out scaffolds.",
|
|
553
821
|
"dependsOn": [
|
|
@@ -777,10 +1045,10 @@
|
|
|
777
1045
|
"@tanstack/vue-query": "5.92.12",
|
|
778
1046
|
"@mdi/js": "^7.4.47",
|
|
779
1047
|
"@fastify/type-provider-typebox": "^6.1.0",
|
|
780
|
-
"@jskit-ai/auth-core": "0.1.
|
|
781
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
782
|
-
"@jskit-ai/kernel": "0.1.
|
|
783
|
-
"@jskit-ai/shell-web": "0.1.
|
|
1048
|
+
"@jskit-ai/auth-core": "0.1.24",
|
|
1049
|
+
"@jskit-ai/http-runtime": "0.1.24",
|
|
1050
|
+
"@jskit-ai/kernel": "0.1.25",
|
|
1051
|
+
"@jskit-ai/shell-web": "0.1.24",
|
|
784
1052
|
"vuetify": "^4.0.0"
|
|
785
1053
|
},
|
|
786
1054
|
"dev": {}
|
|
@@ -850,11 +1118,11 @@
|
|
|
850
1118
|
},
|
|
851
1119
|
{
|
|
852
1120
|
"packageId": "@jskit-ai/crud-core",
|
|
853
|
-
"version": "0.1.
|
|
1121
|
+
"version": "0.1.33",
|
|
854
1122
|
"descriptor": {
|
|
855
1123
|
"packageVersion": 1,
|
|
856
1124
|
"packageId": "@jskit-ai/crud-core",
|
|
857
|
-
"version": "0.1.
|
|
1125
|
+
"version": "0.1.33",
|
|
858
1126
|
"kind": "runtime",
|
|
859
1127
|
"description": "Shared CRUD helpers used by CRUD modules.",
|
|
860
1128
|
"dependsOn": [
|
|
@@ -881,7 +1149,7 @@
|
|
|
881
1149
|
"mutations": {
|
|
882
1150
|
"dependencies": {
|
|
883
1151
|
"runtime": {
|
|
884
|
-
"@jskit-ai/crud-core": "0.1.
|
|
1152
|
+
"@jskit-ai/crud-core": "0.1.33"
|
|
885
1153
|
},
|
|
886
1154
|
"dev": {}
|
|
887
1155
|
},
|
|
@@ -895,11 +1163,11 @@
|
|
|
895
1163
|
},
|
|
896
1164
|
{
|
|
897
1165
|
"packageId": "@jskit-ai/crud-server-generator",
|
|
898
|
-
"version": "0.1.
|
|
1166
|
+
"version": "0.1.33",
|
|
899
1167
|
"descriptor": {
|
|
900
1168
|
"packageVersion": 1,
|
|
901
1169
|
"packageId": "@jskit-ai/crud-server-generator",
|
|
902
|
-
"version": "0.1.
|
|
1170
|
+
"version": "0.1.33",
|
|
903
1171
|
"kind": "generator",
|
|
904
1172
|
"description": "CRUD server generator with routes, actions, and persistence scaffolding.",
|
|
905
1173
|
"options": {
|
|
@@ -1034,13 +1302,13 @@
|
|
|
1034
1302
|
"mutations": {
|
|
1035
1303
|
"dependencies": {
|
|
1036
1304
|
"runtime": {
|
|
1037
|
-
"@jskit-ai/auth-core": "0.1.
|
|
1038
|
-
"@jskit-ai/crud-core": "0.1.
|
|
1039
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
1040
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
1041
|
-
"@jskit-ai/kernel": "0.1.
|
|
1042
|
-
"@jskit-ai/realtime": "0.1.
|
|
1043
|
-
"@jskit-ai/users-core": "0.1.
|
|
1305
|
+
"@jskit-ai/auth-core": "0.1.24",
|
|
1306
|
+
"@jskit-ai/crud-core": "0.1.33",
|
|
1307
|
+
"@jskit-ai/database-runtime": "0.1.25",
|
|
1308
|
+
"@jskit-ai/http-runtime": "0.1.24",
|
|
1309
|
+
"@jskit-ai/kernel": "0.1.25",
|
|
1310
|
+
"@jskit-ai/realtime": "0.1.24",
|
|
1311
|
+
"@jskit-ai/users-core": "0.1.35",
|
|
1044
1312
|
"@local/${option:namespace|kebab}": "file:packages/${option:namespace|kebab}",
|
|
1045
1313
|
"typebox": "^1.0.81"
|
|
1046
1314
|
},
|
|
@@ -1147,17 +1415,28 @@
|
|
|
1147
1415
|
}
|
|
1148
1416
|
}
|
|
1149
1417
|
],
|
|
1150
|
-
"text": [
|
|
1418
|
+
"text": [
|
|
1419
|
+
{
|
|
1420
|
+
"op": "append-text",
|
|
1421
|
+
"file": "config/roles.js",
|
|
1422
|
+
"position": "bottom",
|
|
1423
|
+
"skipIfContains": "\"crud.${option:namespace|snake}.list\"",
|
|
1424
|
+
"value": "\nroleCatalog.roles.member.permissions.push(\n \"crud.${option:namespace|snake}.list\",\n \"crud.${option:namespace|snake}.view\",\n \"crud.${option:namespace|snake}.create\",\n \"crud.${option:namespace|snake}.update\",\n \"crud.${option:namespace|snake}.delete\"\n);\n",
|
|
1425
|
+
"reason": "Grant generated CRUD action permissions to the default member role in the app-owned role catalog.",
|
|
1426
|
+
"category": "crud",
|
|
1427
|
+
"id": "crud-role-catalog-permissions-${option:namespace|snake}"
|
|
1428
|
+
}
|
|
1429
|
+
]
|
|
1151
1430
|
}
|
|
1152
1431
|
}
|
|
1153
1432
|
},
|
|
1154
1433
|
{
|
|
1155
1434
|
"packageId": "@jskit-ai/crud-ui-generator",
|
|
1156
|
-
"version": "0.1.
|
|
1435
|
+
"version": "0.1.8",
|
|
1157
1436
|
"descriptor": {
|
|
1158
1437
|
"packageVersion": 1,
|
|
1159
1438
|
"packageId": "@jskit-ai/crud-ui-generator",
|
|
1160
|
-
"version": "0.1.
|
|
1439
|
+
"version": "0.1.8",
|
|
1161
1440
|
"kind": "generator",
|
|
1162
1441
|
"description": "Generate app-local CRUD UI scaffolds from resource validators.",
|
|
1163
1442
|
"options": {
|
|
@@ -1291,7 +1570,7 @@
|
|
|
1291
1570
|
"mutations": {
|
|
1292
1571
|
"dependencies": {
|
|
1293
1572
|
"runtime": {
|
|
1294
|
-
"@jskit-ai/users-web": "0.1.
|
|
1573
|
+
"@jskit-ai/users-web": "0.1.40"
|
|
1295
1574
|
},
|
|
1296
1575
|
"dev": {}
|
|
1297
1576
|
},
|
|
@@ -1337,7 +1616,7 @@
|
|
|
1337
1616
|
}
|
|
1338
1617
|
},
|
|
1339
1618
|
{
|
|
1340
|
-
"from": "templates/src/pages/admin/ui-generator/
|
|
1619
|
+
"from": "templates/src/pages/admin/ui-generator/NewWrapperElement.vue",
|
|
1341
1620
|
"toSurface": "${option:surface|lower}",
|
|
1342
1621
|
"toSurfacePath": "${option:directory-prefix|pathprefix}${option:container|pathprefix}${option:route-path|path}/new.vue",
|
|
1343
1622
|
"reason": "Install generated new page.",
|
|
@@ -1348,14 +1627,24 @@
|
|
|
1348
1627
|
"export": "buildUiTemplateContext"
|
|
1349
1628
|
},
|
|
1350
1629
|
"when": {
|
|
1351
|
-
"
|
|
1352
|
-
|
|
1353
|
-
|
|
1630
|
+
"all": [
|
|
1631
|
+
{
|
|
1632
|
+
"option": "operations",
|
|
1633
|
+
"in": [
|
|
1634
|
+
"new"
|
|
1635
|
+
]
|
|
1636
|
+
},
|
|
1637
|
+
{
|
|
1638
|
+
"option": "operations",
|
|
1639
|
+
"in": [
|
|
1640
|
+
"edit"
|
|
1641
|
+
]
|
|
1642
|
+
}
|
|
1354
1643
|
]
|
|
1355
1644
|
}
|
|
1356
1645
|
},
|
|
1357
1646
|
{
|
|
1358
|
-
"from": "templates/src/pages/admin/ui-generator/
|
|
1647
|
+
"from": "templates/src/pages/admin/ui-generator/EditWrapperElement.vue",
|
|
1359
1648
|
"toSurface": "${option:surface|lower}",
|
|
1360
1649
|
"toSurfacePath": "${option:directory-prefix|pathprefix}${option:container|pathprefix}${option:route-path|path}/[${option:id-param|trim}]/edit.vue",
|
|
1361
1650
|
"reason": "Install generated edit page.",
|
|
@@ -1366,9 +1655,131 @@
|
|
|
1366
1655
|
"export": "buildUiTemplateContext"
|
|
1367
1656
|
},
|
|
1368
1657
|
"when": {
|
|
1369
|
-
"
|
|
1370
|
-
|
|
1371
|
-
|
|
1658
|
+
"all": [
|
|
1659
|
+
{
|
|
1660
|
+
"option": "operations",
|
|
1661
|
+
"in": [
|
|
1662
|
+
"new"
|
|
1663
|
+
]
|
|
1664
|
+
},
|
|
1665
|
+
{
|
|
1666
|
+
"option": "operations",
|
|
1667
|
+
"in": [
|
|
1668
|
+
"edit"
|
|
1669
|
+
]
|
|
1670
|
+
}
|
|
1671
|
+
]
|
|
1672
|
+
}
|
|
1673
|
+
},
|
|
1674
|
+
{
|
|
1675
|
+
"from": "templates/src/pages/admin/ui-generator/AddEditForm.vue",
|
|
1676
|
+
"toSurface": "${option:surface|lower}",
|
|
1677
|
+
"toSurfacePath": "${option:directory-prefix|pathprefix}${option:container|pathprefix}${option:route-path|path}/_components/${option:namespace|singular|pascal|default(Record)}AddEditForm.vue",
|
|
1678
|
+
"reason": "Install generated shared add/edit form component.",
|
|
1679
|
+
"category": "ui-generator",
|
|
1680
|
+
"id": "ui-generator-page-add-edit-form-${option:namespace|snake}",
|
|
1681
|
+
"templateContext": {
|
|
1682
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
1683
|
+
"export": "buildUiTemplateContext"
|
|
1684
|
+
},
|
|
1685
|
+
"when": {
|
|
1686
|
+
"all": [
|
|
1687
|
+
{
|
|
1688
|
+
"option": "operations",
|
|
1689
|
+
"in": [
|
|
1690
|
+
"new"
|
|
1691
|
+
]
|
|
1692
|
+
},
|
|
1693
|
+
{
|
|
1694
|
+
"option": "operations",
|
|
1695
|
+
"in": [
|
|
1696
|
+
"edit"
|
|
1697
|
+
]
|
|
1698
|
+
}
|
|
1699
|
+
]
|
|
1700
|
+
}
|
|
1701
|
+
},
|
|
1702
|
+
{
|
|
1703
|
+
"from": "templates/src/pages/admin/ui-generator/AddEditFormFields.js",
|
|
1704
|
+
"toSurface": "${option:surface|lower}",
|
|
1705
|
+
"toSurfacePath": "${option:directory-prefix|pathprefix}${option:container|pathprefix}${option:route-path|path}/_components/${option:namespace|singular|pascal|default(Record)}AddEditFormFields.js",
|
|
1706
|
+
"reason": "Install generated shared add/edit form field definitions.",
|
|
1707
|
+
"category": "ui-generator",
|
|
1708
|
+
"id": "ui-generator-page-add-edit-form-fields-${option:namespace|snake}",
|
|
1709
|
+
"templateContext": {
|
|
1710
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
1711
|
+
"export": "buildUiTemplateContext"
|
|
1712
|
+
},
|
|
1713
|
+
"when": {
|
|
1714
|
+
"all": [
|
|
1715
|
+
{
|
|
1716
|
+
"option": "operations",
|
|
1717
|
+
"in": [
|
|
1718
|
+
"new"
|
|
1719
|
+
]
|
|
1720
|
+
},
|
|
1721
|
+
{
|
|
1722
|
+
"option": "operations",
|
|
1723
|
+
"in": [
|
|
1724
|
+
"edit"
|
|
1725
|
+
]
|
|
1726
|
+
}
|
|
1727
|
+
]
|
|
1728
|
+
}
|
|
1729
|
+
},
|
|
1730
|
+
{
|
|
1731
|
+
"from": "templates/src/pages/admin/ui-generator/NewElement.vue",
|
|
1732
|
+
"toSurface": "${option:surface|lower}",
|
|
1733
|
+
"toSurfacePath": "${option:directory-prefix|pathprefix}${option:container|pathprefix}${option:route-path|path}/new.vue",
|
|
1734
|
+
"reason": "Install generated new page.",
|
|
1735
|
+
"category": "ui-generator",
|
|
1736
|
+
"id": "ui-generator-page-new-standalone-${option:namespace|snake}",
|
|
1737
|
+
"templateContext": {
|
|
1738
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
1739
|
+
"export": "buildUiTemplateContext"
|
|
1740
|
+
},
|
|
1741
|
+
"when": {
|
|
1742
|
+
"all": [
|
|
1743
|
+
{
|
|
1744
|
+
"option": "operations",
|
|
1745
|
+
"in": [
|
|
1746
|
+
"new"
|
|
1747
|
+
]
|
|
1748
|
+
},
|
|
1749
|
+
{
|
|
1750
|
+
"option": "operations",
|
|
1751
|
+
"notIn": [
|
|
1752
|
+
"edit"
|
|
1753
|
+
]
|
|
1754
|
+
}
|
|
1755
|
+
]
|
|
1756
|
+
}
|
|
1757
|
+
},
|
|
1758
|
+
{
|
|
1759
|
+
"from": "templates/src/pages/admin/ui-generator/EditElement.vue",
|
|
1760
|
+
"toSurface": "${option:surface|lower}",
|
|
1761
|
+
"toSurfacePath": "${option:directory-prefix|pathprefix}${option:container|pathprefix}${option:route-path|path}/[${option:id-param|trim}]/edit.vue",
|
|
1762
|
+
"reason": "Install generated edit page.",
|
|
1763
|
+
"category": "ui-generator",
|
|
1764
|
+
"id": "ui-generator-page-edit-standalone-${option:namespace|snake}",
|
|
1765
|
+
"templateContext": {
|
|
1766
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
1767
|
+
"export": "buildUiTemplateContext"
|
|
1768
|
+
},
|
|
1769
|
+
"when": {
|
|
1770
|
+
"all": [
|
|
1771
|
+
{
|
|
1772
|
+
"option": "operations",
|
|
1773
|
+
"in": [
|
|
1774
|
+
"edit"
|
|
1775
|
+
]
|
|
1776
|
+
},
|
|
1777
|
+
{
|
|
1778
|
+
"option": "operations",
|
|
1779
|
+
"notIn": [
|
|
1780
|
+
"new"
|
|
1781
|
+
]
|
|
1782
|
+
}
|
|
1372
1783
|
]
|
|
1373
1784
|
}
|
|
1374
1785
|
}
|
|
@@ -1432,11 +1843,11 @@
|
|
|
1432
1843
|
},
|
|
1433
1844
|
{
|
|
1434
1845
|
"packageId": "@jskit-ai/database-runtime",
|
|
1435
|
-
"version": "0.1.
|
|
1846
|
+
"version": "0.1.25",
|
|
1436
1847
|
"descriptor": {
|
|
1437
1848
|
"packageVersion": 1,
|
|
1438
1849
|
"packageId": "@jskit-ai/database-runtime",
|
|
1439
|
-
"version": "0.1.
|
|
1850
|
+
"version": "0.1.25",
|
|
1440
1851
|
"kind": "runtime",
|
|
1441
1852
|
"dependsOn": [
|
|
1442
1853
|
"@jskit-ai/kernel"
|
|
@@ -1493,7 +1904,7 @@
|
|
|
1493
1904
|
"mutations": {
|
|
1494
1905
|
"dependencies": {
|
|
1495
1906
|
"runtime": {
|
|
1496
|
-
"@jskit-ai/kernel": "0.1.
|
|
1907
|
+
"@jskit-ai/kernel": "0.1.25",
|
|
1497
1908
|
"dotenv": "^16.4.5",
|
|
1498
1909
|
"knex": "^3.1.0"
|
|
1499
1910
|
},
|
|
@@ -1528,11 +1939,11 @@
|
|
|
1528
1939
|
},
|
|
1529
1940
|
{
|
|
1530
1941
|
"packageId": "@jskit-ai/database-runtime-mysql",
|
|
1531
|
-
"version": "0.1.
|
|
1942
|
+
"version": "0.1.24",
|
|
1532
1943
|
"descriptor": {
|
|
1533
1944
|
"packageVersion": 1,
|
|
1534
1945
|
"packageId": "@jskit-ai/database-runtime-mysql",
|
|
1535
|
-
"version": "0.1.
|
|
1946
|
+
"version": "0.1.24",
|
|
1536
1947
|
"kind": "runtime",
|
|
1537
1948
|
"options": {
|
|
1538
1949
|
"db-host": {
|
|
@@ -1622,7 +2033,7 @@
|
|
|
1622
2033
|
"mutations": {
|
|
1623
2034
|
"dependencies": {
|
|
1624
2035
|
"runtime": {
|
|
1625
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
2036
|
+
"@jskit-ai/database-runtime": "0.1.25",
|
|
1626
2037
|
"mysql2": "^3.11.2"
|
|
1627
2038
|
},
|
|
1628
2039
|
"dev": {}
|
|
@@ -1693,11 +2104,11 @@
|
|
|
1693
2104
|
},
|
|
1694
2105
|
{
|
|
1695
2106
|
"packageId": "@jskit-ai/database-runtime-postgres",
|
|
1696
|
-
"version": "0.1.
|
|
2107
|
+
"version": "0.1.24",
|
|
1697
2108
|
"descriptor": {
|
|
1698
2109
|
"packageVersion": 1,
|
|
1699
2110
|
"packageId": "@jskit-ai/database-runtime-postgres",
|
|
1700
|
-
"version": "0.1.
|
|
2111
|
+
"version": "0.1.24",
|
|
1701
2112
|
"kind": "runtime",
|
|
1702
2113
|
"options": {
|
|
1703
2114
|
"db-host": {
|
|
@@ -1787,7 +2198,7 @@
|
|
|
1787
2198
|
"mutations": {
|
|
1788
2199
|
"dependencies": {
|
|
1789
2200
|
"runtime": {
|
|
1790
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
2201
|
+
"@jskit-ai/database-runtime": "0.1.25",
|
|
1791
2202
|
"pg": "^8.13.1"
|
|
1792
2203
|
},
|
|
1793
2204
|
"dev": {}
|
|
@@ -1858,11 +2269,11 @@
|
|
|
1858
2269
|
},
|
|
1859
2270
|
{
|
|
1860
2271
|
"packageId": "@jskit-ai/http-runtime",
|
|
1861
|
-
"version": "0.1.
|
|
2272
|
+
"version": "0.1.24",
|
|
1862
2273
|
"descriptor": {
|
|
1863
2274
|
"packageVersion": 1,
|
|
1864
2275
|
"packageId": "@jskit-ai/http-runtime",
|
|
1865
|
-
"version": "0.1.
|
|
2276
|
+
"version": "0.1.24",
|
|
1866
2277
|
"kind": "runtime",
|
|
1867
2278
|
"dependsOn": [],
|
|
1868
2279
|
"capabilities": {
|
|
@@ -1928,7 +2339,7 @@
|
|
|
1928
2339
|
"mutations": {
|
|
1929
2340
|
"dependencies": {
|
|
1930
2341
|
"runtime": {
|
|
1931
|
-
"@jskit-ai/kernel": "0.1.
|
|
2342
|
+
"@jskit-ai/kernel": "0.1.25",
|
|
1932
2343
|
"@fastify/type-provider-typebox": "^6.1.0",
|
|
1933
2344
|
"typebox": "^1.0.81"
|
|
1934
2345
|
},
|
|
@@ -1944,11 +2355,11 @@
|
|
|
1944
2355
|
},
|
|
1945
2356
|
{
|
|
1946
2357
|
"packageId": "@jskit-ai/realtime",
|
|
1947
|
-
"version": "0.1.
|
|
2358
|
+
"version": "0.1.24",
|
|
1948
2359
|
"descriptor": {
|
|
1949
2360
|
"packageVersion": 1,
|
|
1950
2361
|
"packageId": "@jskit-ai/realtime",
|
|
1951
|
-
"version": "0.1.
|
|
2362
|
+
"version": "0.1.24",
|
|
1952
2363
|
"kind": "runtime",
|
|
1953
2364
|
"description": "Thin, generic realtime runtime wrappers for socket.io server and client.",
|
|
1954
2365
|
"options": {
|
|
@@ -2044,7 +2455,7 @@
|
|
|
2044
2455
|
"mutations": {
|
|
2045
2456
|
"dependencies": {
|
|
2046
2457
|
"runtime": {
|
|
2047
|
-
"@jskit-ai/kernel": "0.1.
|
|
2458
|
+
"@jskit-ai/kernel": "0.1.25",
|
|
2048
2459
|
"@socket.io/redis-adapter": "^8.3.0",
|
|
2049
2460
|
"redis": "^5.8.2",
|
|
2050
2461
|
"socket.io": "^4.8.3",
|
|
@@ -2093,11 +2504,11 @@
|
|
|
2093
2504
|
},
|
|
2094
2505
|
{
|
|
2095
2506
|
"packageId": "@jskit-ai/shell-web",
|
|
2096
|
-
"version": "0.1.
|
|
2507
|
+
"version": "0.1.24",
|
|
2097
2508
|
"descriptor": {
|
|
2098
2509
|
"packageVersion": 1,
|
|
2099
2510
|
"packageId": "@jskit-ai/shell-web",
|
|
2100
|
-
"version": "0.1.
|
|
2511
|
+
"version": "0.1.24",
|
|
2101
2512
|
"kind": "runtime",
|
|
2102
2513
|
"description": "Web shell layout runtime with outlet-based placement contributions.",
|
|
2103
2514
|
"dependsOn": [],
|
|
@@ -2191,7 +2602,7 @@
|
|
|
2191
2602
|
"dependencies": {
|
|
2192
2603
|
"runtime": {
|
|
2193
2604
|
"@tanstack/vue-query": "^5.90.5",
|
|
2194
|
-
"@jskit-ai/kernel": "0.1.
|
|
2605
|
+
"@jskit-ai/kernel": "0.1.25",
|
|
2195
2606
|
"vuetify": "^4.0.0"
|
|
2196
2607
|
},
|
|
2197
2608
|
"dev": {}
|
|
@@ -2272,11 +2683,11 @@
|
|
|
2272
2683
|
},
|
|
2273
2684
|
{
|
|
2274
2685
|
"packageId": "@jskit-ai/storage-runtime",
|
|
2275
|
-
"version": "0.1.
|
|
2686
|
+
"version": "0.1.24",
|
|
2276
2687
|
"descriptor": {
|
|
2277
2688
|
"packageVersion": 1,
|
|
2278
2689
|
"packageId": "@jskit-ai/storage-runtime",
|
|
2279
|
-
"version": "0.1.
|
|
2690
|
+
"version": "0.1.24",
|
|
2280
2691
|
"kind": "runtime",
|
|
2281
2692
|
"dependsOn": [
|
|
2282
2693
|
"@jskit-ai/kernel"
|
|
@@ -2325,7 +2736,7 @@
|
|
|
2325
2736
|
"mutations": {
|
|
2326
2737
|
"dependencies": {
|
|
2327
2738
|
"runtime": {
|
|
2328
|
-
"@jskit-ai/kernel": "0.1.
|
|
2739
|
+
"@jskit-ai/kernel": "0.1.25",
|
|
2329
2740
|
"unstorage": "^1.17.3"
|
|
2330
2741
|
},
|
|
2331
2742
|
"dev": {}
|
|
@@ -2341,11 +2752,11 @@
|
|
|
2341
2752
|
},
|
|
2342
2753
|
{
|
|
2343
2754
|
"packageId": "@jskit-ai/ui-generator",
|
|
2344
|
-
"version": "0.1.
|
|
2755
|
+
"version": "0.1.8",
|
|
2345
2756
|
"descriptor": {
|
|
2346
2757
|
"packageVersion": 1,
|
|
2347
2758
|
"packageId": "@jskit-ai/ui-generator",
|
|
2348
|
-
"version": "0.1.
|
|
2759
|
+
"version": "0.1.8",
|
|
2349
2760
|
"kind": "generator",
|
|
2350
2761
|
"description": "Generate app-local non-CRUD UI pages and outlet elements.",
|
|
2351
2762
|
"options": {
|
|
@@ -2519,7 +2930,7 @@
|
|
|
2519
2930
|
"mutations": {
|
|
2520
2931
|
"dependencies": {
|
|
2521
2932
|
"runtime": {
|
|
2522
|
-
"@jskit-ai/users-web": "0.1.
|
|
2933
|
+
"@jskit-ai/users-web": "0.1.40"
|
|
2523
2934
|
},
|
|
2524
2935
|
"dev": {}
|
|
2525
2936
|
},
|
|
@@ -2558,11 +2969,11 @@
|
|
|
2558
2969
|
},
|
|
2559
2970
|
{
|
|
2560
2971
|
"packageId": "@jskit-ai/uploads-image-web",
|
|
2561
|
-
"version": "0.1.
|
|
2972
|
+
"version": "0.1.3",
|
|
2562
2973
|
"descriptor": {
|
|
2563
2974
|
"packageVersion": 1,
|
|
2564
2975
|
"packageId": "@jskit-ai/uploads-image-web",
|
|
2565
|
-
"version": "0.1.
|
|
2976
|
+
"version": "0.1.3",
|
|
2566
2977
|
"kind": "runtime",
|
|
2567
2978
|
"description": "Reusable client-side image upload runtime with pre-upload image editing.",
|
|
2568
2979
|
"dependsOn": [
|
|
@@ -2604,6 +3015,10 @@
|
|
|
2604
3015
|
"subpath": "./client/composables/createImageUploadRuntime",
|
|
2605
3016
|
"summary": "Exports the reusable image upload runtime factory."
|
|
2606
3017
|
},
|
|
3018
|
+
{
|
|
3019
|
+
"subpath": "./client/composables/createManagedImageAssetRuntime",
|
|
3020
|
+
"summary": "Exports the managed image asset runtime factory for upload and optional delete flows."
|
|
3021
|
+
},
|
|
2607
3022
|
{
|
|
2608
3023
|
"subpath": "./client/styles",
|
|
2609
3024
|
"summary": "Exports Uppy CSS side effects for image upload UIs."
|
|
@@ -2622,7 +3037,7 @@
|
|
|
2622
3037
|
"mutations": {
|
|
2623
3038
|
"dependencies": {
|
|
2624
3039
|
"runtime": {
|
|
2625
|
-
"@jskit-ai/uploads-runtime": "0.1.
|
|
3040
|
+
"@jskit-ai/uploads-runtime": "0.1.3",
|
|
2626
3041
|
"@uppy/compressor": "^3.1.0",
|
|
2627
3042
|
"@uppy/core": "^5.2.0",
|
|
2628
3043
|
"@uppy/dashboard": "^5.1.1",
|
|
@@ -2642,11 +3057,11 @@
|
|
|
2642
3057
|
},
|
|
2643
3058
|
{
|
|
2644
3059
|
"packageId": "@jskit-ai/uploads-runtime",
|
|
2645
|
-
"version": "0.1.
|
|
3060
|
+
"version": "0.1.3",
|
|
2646
3061
|
"descriptor": {
|
|
2647
3062
|
"packageVersion": 1,
|
|
2648
3063
|
"packageId": "@jskit-ai/uploads-runtime",
|
|
2649
|
-
"version": "0.1.
|
|
3064
|
+
"version": "0.1.3",
|
|
2650
3065
|
"kind": "runtime",
|
|
2651
3066
|
"description": "Reusable upload runtime primitives for multipart parsing, policy validation, and blob storage.",
|
|
2652
3067
|
"dependsOn": [
|
|
@@ -2683,10 +3098,6 @@
|
|
|
2683
3098
|
"subpath": "./server/multipart/registerMultipartSupport",
|
|
2684
3099
|
"summary": "Exports Fastify multipart registration helper."
|
|
2685
3100
|
},
|
|
2686
|
-
{
|
|
2687
|
-
"subpath": "./server/multipart/readMultipartFiles",
|
|
2688
|
-
"summary": "Exports normalized multipart file parsing helpers."
|
|
2689
|
-
},
|
|
2690
3101
|
{
|
|
2691
3102
|
"subpath": "./server/multipart/readSingleMultipartFile",
|
|
2692
3103
|
"summary": "Exports a convenience helper for single-file multipart uploads."
|
|
@@ -2714,61 +3125,588 @@
|
|
|
2714
3125
|
],
|
|
2715
3126
|
"client": []
|
|
2716
3127
|
}
|
|
2717
|
-
}
|
|
2718
|
-
},
|
|
2719
|
-
"mutations": {
|
|
2720
|
-
"dependencies": {
|
|
2721
|
-
"runtime": {
|
|
2722
|
-
"@fastify/multipart": "^9.4.0",
|
|
2723
|
-
"@jskit-ai/kernel": "0.1.
|
|
3128
|
+
}
|
|
3129
|
+
},
|
|
3130
|
+
"mutations": {
|
|
3131
|
+
"dependencies": {
|
|
3132
|
+
"runtime": {
|
|
3133
|
+
"@fastify/multipart": "^9.4.0",
|
|
3134
|
+
"@jskit-ai/kernel": "0.1.25"
|
|
3135
|
+
},
|
|
3136
|
+
"dev": {}
|
|
3137
|
+
},
|
|
3138
|
+
"packageJson": {
|
|
3139
|
+
"scripts": {}
|
|
3140
|
+
},
|
|
3141
|
+
"procfile": {},
|
|
3142
|
+
"files": [],
|
|
3143
|
+
"text": []
|
|
3144
|
+
}
|
|
3145
|
+
}
|
|
3146
|
+
},
|
|
3147
|
+
{
|
|
3148
|
+
"packageId": "@jskit-ai/users-core",
|
|
3149
|
+
"version": "0.1.35",
|
|
3150
|
+
"descriptor": {
|
|
3151
|
+
"packageVersion": 1,
|
|
3152
|
+
"packageId": "@jskit-ai/users-core",
|
|
3153
|
+
"version": "0.1.35",
|
|
3154
|
+
"kind": "runtime",
|
|
3155
|
+
"description": "Users/account runtime plus HTTP routes for account and console features.",
|
|
3156
|
+
"dependsOn": [
|
|
3157
|
+
"@jskit-ai/auth-core",
|
|
3158
|
+
"@jskit-ai/database-runtime",
|
|
3159
|
+
"@jskit-ai/http-runtime",
|
|
3160
|
+
"@jskit-ai/uploads-runtime",
|
|
3161
|
+
"@jskit-ai/storage-runtime"
|
|
3162
|
+
],
|
|
3163
|
+
"capabilities": {
|
|
3164
|
+
"provides": [
|
|
3165
|
+
"users.core",
|
|
3166
|
+
"users.server-routes"
|
|
3167
|
+
],
|
|
3168
|
+
"requires": [
|
|
3169
|
+
"runtime.actions",
|
|
3170
|
+
"runtime.database",
|
|
3171
|
+
"runtime.storage",
|
|
3172
|
+
"runtime.uploads",
|
|
3173
|
+
"auth.provider",
|
|
3174
|
+
"auth.policy"
|
|
3175
|
+
]
|
|
3176
|
+
},
|
|
3177
|
+
"runtime": {
|
|
3178
|
+
"server": {
|
|
3179
|
+
"providers": [
|
|
3180
|
+
{
|
|
3181
|
+
"entrypoint": "src/server/UsersCoreServiceProvider.js",
|
|
3182
|
+
"export": "UsersCoreServiceProvider"
|
|
3183
|
+
}
|
|
3184
|
+
]
|
|
3185
|
+
},
|
|
3186
|
+
"client": {
|
|
3187
|
+
"providers": []
|
|
3188
|
+
}
|
|
3189
|
+
},
|
|
3190
|
+
"metadata": {
|
|
3191
|
+
"apiSummary": {
|
|
3192
|
+
"surfaces": [
|
|
3193
|
+
{
|
|
3194
|
+
"subpath": "./server",
|
|
3195
|
+
"summary": "Exports UsersCoreServiceProvider, users/console repositories and services, account feature route registration modules, and action definitions."
|
|
3196
|
+
},
|
|
3197
|
+
{
|
|
3198
|
+
"subpath": "./shared",
|
|
3199
|
+
"summary": "Exports shared users settings and tenancy utilities."
|
|
3200
|
+
},
|
|
3201
|
+
{
|
|
3202
|
+
"subpath": "./client",
|
|
3203
|
+
"summary": "Exports no runtime API today (reserved client entrypoint)."
|
|
3204
|
+
}
|
|
3205
|
+
],
|
|
3206
|
+
"containerTokens": {
|
|
3207
|
+
"server": [],
|
|
3208
|
+
"client": []
|
|
3209
|
+
}
|
|
3210
|
+
},
|
|
3211
|
+
"server": {
|
|
3212
|
+
"routes": [
|
|
3213
|
+
{
|
|
3214
|
+
"method": "GET",
|
|
3215
|
+
"path": "/api/settings",
|
|
3216
|
+
"summary": "Get authenticated user settings."
|
|
3217
|
+
},
|
|
3218
|
+
{
|
|
3219
|
+
"method": "PATCH",
|
|
3220
|
+
"path": "/api/settings/profile",
|
|
3221
|
+
"summary": "Update profile settings."
|
|
3222
|
+
},
|
|
3223
|
+
{
|
|
3224
|
+
"method": "GET",
|
|
3225
|
+
"path": "/api/settings/profile/avatar",
|
|
3226
|
+
"summary": "Read authenticated user's uploaded avatar."
|
|
3227
|
+
},
|
|
3228
|
+
{
|
|
3229
|
+
"method": "POST",
|
|
3230
|
+
"path": "/api/settings/profile/avatar",
|
|
3231
|
+
"summary": "Upload profile avatar."
|
|
3232
|
+
},
|
|
3233
|
+
{
|
|
3234
|
+
"method": "DELETE",
|
|
3235
|
+
"path": "/api/settings/profile/avatar",
|
|
3236
|
+
"summary": "Delete profile avatar."
|
|
3237
|
+
},
|
|
3238
|
+
{
|
|
3239
|
+
"method": "PATCH",
|
|
3240
|
+
"path": "/api/settings/preferences",
|
|
3241
|
+
"summary": "Update user preferences."
|
|
3242
|
+
},
|
|
3243
|
+
{
|
|
3244
|
+
"method": "PATCH",
|
|
3245
|
+
"path": "/api/settings/notifications",
|
|
3246
|
+
"summary": "Update notification settings."
|
|
3247
|
+
},
|
|
3248
|
+
{
|
|
3249
|
+
"method": "POST",
|
|
3250
|
+
"path": "/api/settings/security/change-password",
|
|
3251
|
+
"summary": "Set or change password for authenticated user."
|
|
3252
|
+
},
|
|
3253
|
+
{
|
|
3254
|
+
"method": "PATCH",
|
|
3255
|
+
"path": "/api/settings/security/methods/password",
|
|
3256
|
+
"summary": "Enable or disable password sign-in method."
|
|
3257
|
+
},
|
|
3258
|
+
{
|
|
3259
|
+
"method": "GET",
|
|
3260
|
+
"path": "/api/settings/security/oauth/:provider/start",
|
|
3261
|
+
"summary": "Start linking an OAuth provider for authenticated user."
|
|
3262
|
+
},
|
|
3263
|
+
{
|
|
3264
|
+
"method": "DELETE",
|
|
3265
|
+
"path": "/api/settings/security/oauth/:provider",
|
|
3266
|
+
"summary": "Unlink an OAuth provider from authenticated account."
|
|
3267
|
+
},
|
|
3268
|
+
{
|
|
3269
|
+
"method": "POST",
|
|
3270
|
+
"path": "/api/settings/security/logout-others",
|
|
3271
|
+
"summary": "Sign out from other active sessions."
|
|
3272
|
+
},
|
|
3273
|
+
{
|
|
3274
|
+
"method": "GET",
|
|
3275
|
+
"path": "/api/console/settings",
|
|
3276
|
+
"summary": "Get console settings."
|
|
3277
|
+
},
|
|
3278
|
+
{
|
|
3279
|
+
"method": "PATCH",
|
|
3280
|
+
"path": "/api/console/settings",
|
|
3281
|
+
"summary": "Update console settings."
|
|
3282
|
+
}
|
|
3283
|
+
]
|
|
3284
|
+
}
|
|
3285
|
+
},
|
|
3286
|
+
"mutations": {
|
|
3287
|
+
"dependencies": {
|
|
3288
|
+
"runtime": {
|
|
3289
|
+
"@jskit-ai/auth-core": "0.1.24",
|
|
3290
|
+
"@jskit-ai/database-runtime": "0.1.25",
|
|
3291
|
+
"@jskit-ai/http-runtime": "0.1.24",
|
|
3292
|
+
"@jskit-ai/kernel": "0.1.25",
|
|
3293
|
+
"@jskit-ai/uploads-runtime": "0.1.3",
|
|
3294
|
+
"@fastify/type-provider-typebox": "^6.1.0",
|
|
3295
|
+
"typebox": "^1.0.81"
|
|
3296
|
+
},
|
|
3297
|
+
"dev": {}
|
|
3298
|
+
},
|
|
3299
|
+
"packageJson": {
|
|
3300
|
+
"scripts": {}
|
|
3301
|
+
},
|
|
3302
|
+
"procfile": {},
|
|
3303
|
+
"files": [
|
|
3304
|
+
{
|
|
3305
|
+
"op": "install-migration",
|
|
3306
|
+
"from": "templates/migrations/users_core_generic_initial.cjs",
|
|
3307
|
+
"toDir": "migrations",
|
|
3308
|
+
"extension": ".cjs",
|
|
3309
|
+
"reason": "Install users/account core schema migration.",
|
|
3310
|
+
"category": "migration",
|
|
3311
|
+
"id": "users-core-generic-initial-schema"
|
|
3312
|
+
},
|
|
3313
|
+
{
|
|
3314
|
+
"op": "install-migration",
|
|
3315
|
+
"from": "templates/migrations/users_core_profile_username.cjs",
|
|
3316
|
+
"toDir": "migrations",
|
|
3317
|
+
"extension": ".cjs",
|
|
3318
|
+
"reason": "Install users profile username migration.",
|
|
3319
|
+
"category": "migration",
|
|
3320
|
+
"id": "users-core-profile-username-schema"
|
|
3321
|
+
},
|
|
3322
|
+
{
|
|
3323
|
+
"op": "install-migration",
|
|
3324
|
+
"from": "templates/migrations/users_core_console_owner.cjs",
|
|
3325
|
+
"toDir": "migrations",
|
|
3326
|
+
"extension": ".cjs",
|
|
3327
|
+
"reason": "Install console owner migration.",
|
|
3328
|
+
"category": "migration",
|
|
3329
|
+
"id": "users-core-console-owner-schema"
|
|
3330
|
+
},
|
|
3331
|
+
{
|
|
3332
|
+
"from": "templates/packages/main/src/shared/resources/consoleSettingsFields.js",
|
|
3333
|
+
"to": "packages/main/src/shared/resources/consoleSettingsFields.js",
|
|
3334
|
+
"preserveOnRemove": true,
|
|
3335
|
+
"reason": "Install app-owned console settings field definitions.",
|
|
3336
|
+
"category": "users-core",
|
|
3337
|
+
"id": "users-core-app-owned-console-settings-fields"
|
|
3338
|
+
},
|
|
3339
|
+
{
|
|
3340
|
+
"from": "templates/packages/main/src/shared/resources/userSettingsFields.js",
|
|
3341
|
+
"to": "packages/main/src/shared/resources/userSettingsFields.js",
|
|
3342
|
+
"preserveOnRemove": true,
|
|
3343
|
+
"reason": "Install app-owned user settings field definitions.",
|
|
3344
|
+
"category": "users-core",
|
|
3345
|
+
"id": "users-core-app-owned-user-settings-fields"
|
|
3346
|
+
}
|
|
3347
|
+
],
|
|
3348
|
+
"text": [
|
|
3349
|
+
{
|
|
3350
|
+
"op": "upsert-env",
|
|
3351
|
+
"file": ".env",
|
|
3352
|
+
"key": "AUTH_PROFILE_MODE",
|
|
3353
|
+
"value": "users",
|
|
3354
|
+
"reason": "Enable users-backed auth profile sync when users-core is installed.",
|
|
3355
|
+
"category": "runtime-config",
|
|
3356
|
+
"id": "users-core-auth-profile-mode"
|
|
3357
|
+
},
|
|
3358
|
+
{
|
|
3359
|
+
"op": "append-text",
|
|
3360
|
+
"file": "packages/main/src/shared/index.js",
|
|
3361
|
+
"position": "top",
|
|
3362
|
+
"skipIfContains": "import \"./resources/consoleSettingsFields.js\";",
|
|
3363
|
+
"value": "import \"./resources/consoleSettingsFields.js\";\n",
|
|
3364
|
+
"reason": "Load app-owned console settings field definitions inside the main shared module.",
|
|
3365
|
+
"category": "users-core",
|
|
3366
|
+
"id": "users-core-main-shared-console-settings-field-import"
|
|
3367
|
+
},
|
|
3368
|
+
{
|
|
3369
|
+
"op": "append-text",
|
|
3370
|
+
"file": "packages/main/src/shared/index.js",
|
|
3371
|
+
"position": "top",
|
|
3372
|
+
"skipIfContains": "import \"./resources/userSettingsFields.js\";",
|
|
3373
|
+
"value": "import \"./resources/userSettingsFields.js\";\n",
|
|
3374
|
+
"reason": "Load app-owned user settings field definitions inside the main shared module.",
|
|
3375
|
+
"category": "users-core",
|
|
3376
|
+
"id": "users-core-main-shared-user-settings-field-import"
|
|
3377
|
+
},
|
|
3378
|
+
{
|
|
3379
|
+
"op": "append-text",
|
|
3380
|
+
"file": "src/main.js",
|
|
3381
|
+
"position": "top",
|
|
3382
|
+
"skipIfContains": "import \"@local/main/shared\";",
|
|
3383
|
+
"value": "import \"@local/main/shared\";\n",
|
|
3384
|
+
"reason": "Ensure client runtime loads app-owned shared settings field registration.",
|
|
3385
|
+
"category": "users-core",
|
|
3386
|
+
"id": "users-core-client-import-main-shared"
|
|
3387
|
+
},
|
|
3388
|
+
{
|
|
3389
|
+
"op": "append-text",
|
|
3390
|
+
"file": "server.js",
|
|
3391
|
+
"position": "top",
|
|
3392
|
+
"skipIfContains": "import \"@local/main/shared\";",
|
|
3393
|
+
"value": "import \"@local/main/shared\";\n",
|
|
3394
|
+
"reason": "Ensure server runtime loads app-owned shared settings field registration.",
|
|
3395
|
+
"category": "users-core",
|
|
3396
|
+
"id": "users-core-server-import-main-shared"
|
|
3397
|
+
}
|
|
3398
|
+
]
|
|
3399
|
+
}
|
|
3400
|
+
}
|
|
3401
|
+
},
|
|
3402
|
+
{
|
|
3403
|
+
"packageId": "@jskit-ai/users-web",
|
|
3404
|
+
"version": "0.1.40",
|
|
3405
|
+
"descriptor": {
|
|
3406
|
+
"packageVersion": 1,
|
|
3407
|
+
"packageId": "@jskit-ai/users-web",
|
|
3408
|
+
"version": "0.1.40",
|
|
3409
|
+
"kind": "runtime",
|
|
3410
|
+
"description": "Users web module: account/profile UI plus shared shell link components.",
|
|
3411
|
+
"dependsOn": [
|
|
3412
|
+
"@jskit-ai/http-runtime",
|
|
3413
|
+
"@jskit-ai/shell-web",
|
|
3414
|
+
"@jskit-ai/uploads-image-web",
|
|
3415
|
+
"@jskit-ai/users-core"
|
|
3416
|
+
],
|
|
3417
|
+
"capabilities": {
|
|
3418
|
+
"provides": [
|
|
3419
|
+
"users.web"
|
|
3420
|
+
],
|
|
3421
|
+
"requires": [
|
|
3422
|
+
"runtime.web-placement",
|
|
3423
|
+
"users.server-routes"
|
|
3424
|
+
]
|
|
3425
|
+
},
|
|
3426
|
+
"runtime": {
|
|
3427
|
+
"server": {
|
|
3428
|
+
"providers": []
|
|
3429
|
+
},
|
|
3430
|
+
"client": {
|
|
3431
|
+
"providers": [
|
|
3432
|
+
{
|
|
3433
|
+
"entrypoint": "src/client/providers/UsersWebClientProvider.js",
|
|
3434
|
+
"export": "UsersWebClientProvider"
|
|
3435
|
+
}
|
|
3436
|
+
]
|
|
3437
|
+
}
|
|
3438
|
+
},
|
|
3439
|
+
"metadata": {
|
|
3440
|
+
"apiSummary": {
|
|
3441
|
+
"surfaces": [
|
|
3442
|
+
{
|
|
3443
|
+
"subpath": "./client",
|
|
3444
|
+
"summary": "Exports users-web client provider registration surface."
|
|
3445
|
+
},
|
|
3446
|
+
{
|
|
3447
|
+
"subpath": "./client/providers/UsersWebClientProvider",
|
|
3448
|
+
"summary": "Exports users-web client provider class."
|
|
3449
|
+
},
|
|
3450
|
+
{
|
|
3451
|
+
"subpath": "./client/components/ProfileClientElement",
|
|
3452
|
+
"summary": "Exports profile settings client element scaffold component."
|
|
3453
|
+
},
|
|
3454
|
+
{
|
|
3455
|
+
"subpath": "./client/composables/useAddEdit",
|
|
3456
|
+
"summary": "Exports add/edit operation composable."
|
|
3457
|
+
},
|
|
3458
|
+
{
|
|
3459
|
+
"subpath": "./client/composables/useList",
|
|
3460
|
+
"summary": "Exports list operation composable."
|
|
3461
|
+
},
|
|
3462
|
+
{
|
|
3463
|
+
"subpath": "./client/composables/crudLookupFieldRuntime",
|
|
3464
|
+
"summary": "Exports CRUD lookup field runtime helpers for generated add/edit forms."
|
|
3465
|
+
},
|
|
3466
|
+
{
|
|
3467
|
+
"subpath": "./client/composables/useCommand",
|
|
3468
|
+
"summary": "Exports command operation composable."
|
|
3469
|
+
},
|
|
3470
|
+
{
|
|
3471
|
+
"subpath": "./client/composables/useView",
|
|
3472
|
+
"summary": "Exports read/view operation composable."
|
|
3473
|
+
},
|
|
3474
|
+
{
|
|
3475
|
+
"subpath": "./client/composables/usePagedCollection",
|
|
3476
|
+
"summary": "Exports paged collection query composable."
|
|
3477
|
+
},
|
|
3478
|
+
{
|
|
3479
|
+
"subpath": "./client/composables/usePaths",
|
|
3480
|
+
"summary": "Exports surface/workspace path resolver composable."
|
|
3481
|
+
},
|
|
3482
|
+
{
|
|
3483
|
+
"subpath": "./client/composables/useAccountSettingsRuntime",
|
|
3484
|
+
"summary": "Exports account settings runtime composable for app-owned settings UI."
|
|
3485
|
+
},
|
|
3486
|
+
{
|
|
3487
|
+
"subpath": "./client/composables/useWorkspaceRouteContext",
|
|
3488
|
+
"summary": "Exports workspace route context composable."
|
|
3489
|
+
}
|
|
3490
|
+
],
|
|
3491
|
+
"containerTokens": {
|
|
3492
|
+
"server": [],
|
|
3493
|
+
"client": [
|
|
3494
|
+
"users.web.shell.menu-link-item",
|
|
3495
|
+
"users.web.shell.surface-aware-menu-link-item",
|
|
3496
|
+
"users.web.profile.menu.surface-switch-item",
|
|
3497
|
+
"users.web.profile.element",
|
|
3498
|
+
"users.web.bootstrap-placement.runtime"
|
|
3499
|
+
]
|
|
3500
|
+
}
|
|
3501
|
+
},
|
|
3502
|
+
"ui": {
|
|
3503
|
+
"placements": {
|
|
3504
|
+
"outlets": [
|
|
3505
|
+
{
|
|
3506
|
+
"host": "console-settings",
|
|
3507
|
+
"position": "primary-menu",
|
|
3508
|
+
"surfaces": [
|
|
3509
|
+
"console"
|
|
3510
|
+
],
|
|
3511
|
+
"source": "templates/src/pages/console/settings/index.vue"
|
|
3512
|
+
},
|
|
3513
|
+
{
|
|
3514
|
+
"host": "console-settings",
|
|
3515
|
+
"position": "forms",
|
|
3516
|
+
"surfaces": [
|
|
3517
|
+
"console"
|
|
3518
|
+
],
|
|
3519
|
+
"source": "templates/src/pages/console/settings/index.vue"
|
|
3520
|
+
}
|
|
3521
|
+
],
|
|
3522
|
+
"contributions": [
|
|
3523
|
+
{
|
|
3524
|
+
"id": "users.profile.menu.surface-switch",
|
|
3525
|
+
"host": "auth-profile-menu",
|
|
3526
|
+
"position": "primary-menu",
|
|
3527
|
+
"surfaces": [
|
|
3528
|
+
"*"
|
|
3529
|
+
],
|
|
3530
|
+
"order": 100,
|
|
3531
|
+
"componentToken": "users.web.profile.menu.surface-switch-item",
|
|
3532
|
+
"when": "auth.authenticated === true",
|
|
3533
|
+
"source": "mutations.text#users-web-profile-surface-switch-placement"
|
|
3534
|
+
},
|
|
3535
|
+
{
|
|
3536
|
+
"id": "users.profile.menu.settings",
|
|
3537
|
+
"host": "auth-profile-menu",
|
|
3538
|
+
"position": "primary-menu",
|
|
3539
|
+
"surfaces": [
|
|
3540
|
+
"*"
|
|
3541
|
+
],
|
|
3542
|
+
"order": 500,
|
|
3543
|
+
"componentToken": "users.web.shell.menu-link-item",
|
|
3544
|
+
"when": "auth.authenticated === true",
|
|
3545
|
+
"source": "mutations.text#users-web-profile-settings-placement"
|
|
3546
|
+
},
|
|
3547
|
+
{
|
|
3548
|
+
"id": "users.console.menu.settings",
|
|
3549
|
+
"host": "shell-layout",
|
|
3550
|
+
"position": "primary-menu",
|
|
3551
|
+
"surfaces": [
|
|
3552
|
+
"console"
|
|
3553
|
+
],
|
|
3554
|
+
"order": 100,
|
|
3555
|
+
"componentToken": "users.web.shell.menu-link-item",
|
|
3556
|
+
"when": "auth.authenticated === true",
|
|
3557
|
+
"source": "mutations.text#users-web-console-settings-placement"
|
|
3558
|
+
}
|
|
3559
|
+
]
|
|
3560
|
+
}
|
|
3561
|
+
}
|
|
3562
|
+
},
|
|
3563
|
+
"mutations": {
|
|
3564
|
+
"dependencies": {
|
|
3565
|
+
"runtime": {
|
|
3566
|
+
"@tanstack/vue-query": "5.92.12",
|
|
3567
|
+
"@mdi/js": "^7.4.47",
|
|
3568
|
+
"@jskit-ai/http-runtime": "0.1.24",
|
|
3569
|
+
"@jskit-ai/realtime": "0.1.24",
|
|
3570
|
+
"@jskit-ai/kernel": "0.1.25",
|
|
3571
|
+
"@jskit-ai/shell-web": "0.1.24",
|
|
3572
|
+
"@jskit-ai/uploads-image-web": "0.1.3",
|
|
3573
|
+
"@jskit-ai/users-core": "0.1.35",
|
|
3574
|
+
"vuetify": "^4.0.0"
|
|
3575
|
+
},
|
|
3576
|
+
"dev": {}
|
|
3577
|
+
},
|
|
3578
|
+
"packageJson": {
|
|
3579
|
+
"scripts": {
|
|
3580
|
+
"server:account": "SERVER_SURFACE=account node ./bin/server.js",
|
|
3581
|
+
"dev:account": "VITE_SURFACE=account vite",
|
|
3582
|
+
"build:account": "VITE_SURFACE=account vite build"
|
|
3583
|
+
}
|
|
3584
|
+
},
|
|
3585
|
+
"procfile": {},
|
|
3586
|
+
"files": [
|
|
3587
|
+
{
|
|
3588
|
+
"from": "templates/src/pages/account/index.vue",
|
|
3589
|
+
"to": "src/pages/account/index.vue",
|
|
3590
|
+
"reason": "Install app-owned account surface root page scaffold.",
|
|
3591
|
+
"category": "users-web",
|
|
3592
|
+
"id": "users-web-page-account-root"
|
|
3593
|
+
},
|
|
3594
|
+
{
|
|
3595
|
+
"from": "templates/src/components/account/settings/AccountSettingsClientElement.vue",
|
|
3596
|
+
"to": "src/components/account/settings/AccountSettingsClientElement.vue",
|
|
3597
|
+
"reason": "Install app-owned account settings container component scaffold.",
|
|
3598
|
+
"category": "users-web",
|
|
3599
|
+
"id": "users-web-component-account-settings-root"
|
|
3600
|
+
},
|
|
3601
|
+
{
|
|
3602
|
+
"from": "templates/src/components/account/settings/AccountSettingsProfileSection.vue",
|
|
3603
|
+
"to": "src/components/account/settings/AccountSettingsProfileSection.vue",
|
|
3604
|
+
"reason": "Install app-owned account settings profile section scaffold.",
|
|
3605
|
+
"category": "users-web",
|
|
3606
|
+
"id": "users-web-component-account-settings-profile"
|
|
3607
|
+
},
|
|
3608
|
+
{
|
|
3609
|
+
"from": "templates/src/components/account/settings/AccountSettingsPreferencesSection.vue",
|
|
3610
|
+
"to": "src/components/account/settings/AccountSettingsPreferencesSection.vue",
|
|
3611
|
+
"reason": "Install app-owned account settings preferences section scaffold.",
|
|
3612
|
+
"category": "users-web",
|
|
3613
|
+
"id": "users-web-component-account-settings-preferences"
|
|
3614
|
+
},
|
|
3615
|
+
{
|
|
3616
|
+
"from": "templates/src/components/account/settings/AccountSettingsNotificationsSection.vue",
|
|
3617
|
+
"to": "src/components/account/settings/AccountSettingsNotificationsSection.vue",
|
|
3618
|
+
"reason": "Install app-owned account settings notifications section scaffold.",
|
|
3619
|
+
"category": "users-web",
|
|
3620
|
+
"id": "users-web-component-account-settings-notifications"
|
|
3621
|
+
},
|
|
3622
|
+
{
|
|
3623
|
+
"from": "templates/src/components/account/settings/AccountSettingsInvitesSection.vue",
|
|
3624
|
+
"to": "src/components/account/settings/AccountSettingsInvitesSection.vue",
|
|
3625
|
+
"reason": "Install app-owned account settings invites section scaffold.",
|
|
3626
|
+
"category": "users-web",
|
|
3627
|
+
"id": "users-web-component-account-settings-invites"
|
|
3628
|
+
},
|
|
3629
|
+
{
|
|
3630
|
+
"from": "templates/src/pages/console/settings/index.vue",
|
|
3631
|
+
"toSurface": "console",
|
|
3632
|
+
"toSurfacePath": "settings/index.vue",
|
|
3633
|
+
"reason": "Install console settings page scaffold for users-web console UI.",
|
|
3634
|
+
"category": "users-web",
|
|
3635
|
+
"id": "users-web-page-console-settings"
|
|
3636
|
+
}
|
|
3637
|
+
],
|
|
3638
|
+
"text": [
|
|
3639
|
+
{
|
|
3640
|
+
"op": "append-text",
|
|
3641
|
+
"file": "config/public.js",
|
|
3642
|
+
"position": "bottom",
|
|
3643
|
+
"skipIfContains": "config.surfaceDefinitions.account = {",
|
|
3644
|
+
"value": "\nconfig.surfaceDefinitions.account = {\n id: \"account\",\n label: \"Account\",\n pagesRoot: \"account\",\n enabled: true,\n requiresAuth: true,\n requiresWorkspace: false,\n origin: \"\"\n};\n",
|
|
3645
|
+
"reason": "Register account surface definition in public surface config.",
|
|
3646
|
+
"category": "users-web",
|
|
3647
|
+
"id": "users-web-surface-config-account"
|
|
2724
3648
|
},
|
|
2725
|
-
|
|
2726
|
-
|
|
2727
|
-
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
3649
|
+
{
|
|
3650
|
+
"op": "append-text",
|
|
3651
|
+
"file": "src/placement.js",
|
|
3652
|
+
"position": "bottom",
|
|
3653
|
+
"skipIfContains": "id: \"users.profile.menu.surface-switch\"",
|
|
3654
|
+
"value": "\naddPlacement({\n id: \"users.profile.menu.surface-switch\",\n host: \"auth-profile-menu\",\n position: \"primary-menu\",\n surfaces: [\"*\"],\n order: 100,\n componentToken: \"users.web.profile.menu.surface-switch-item\",\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
3655
|
+
"reason": "Append users-web profile surface switch placement into app-owned placement registry.",
|
|
3656
|
+
"category": "users-web",
|
|
3657
|
+
"id": "users-web-profile-surface-switch-placement"
|
|
3658
|
+
},
|
|
3659
|
+
{
|
|
3660
|
+
"op": "append-text",
|
|
3661
|
+
"file": "src/placement.js",
|
|
3662
|
+
"position": "bottom",
|
|
3663
|
+
"skipIfContains": "id: \"users.profile.menu.settings\"",
|
|
3664
|
+
"value": "\naddPlacement({\n id: \"users.profile.menu.settings\",\n host: \"auth-profile-menu\",\n position: \"primary-menu\",\n surfaces: [\"*\"],\n order: 500,\n componentToken: \"users.web.shell.menu-link-item\",\n props: {\n label: \"Settings\",\n to: \"/account\"\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
3665
|
+
"reason": "Append users-web profile settings menu placement into app-owned placement registry.",
|
|
3666
|
+
"category": "users-web",
|
|
3667
|
+
"id": "users-web-profile-settings-placement"
|
|
3668
|
+
},
|
|
3669
|
+
{
|
|
3670
|
+
"op": "append-text",
|
|
3671
|
+
"file": "src/placement.js",
|
|
3672
|
+
"position": "bottom",
|
|
3673
|
+
"skipIfContains": "id: \"users.console.menu.settings\"",
|
|
3674
|
+
"value": "\naddPlacement({\n id: \"users.console.menu.settings\",\n host: \"shell-layout\",\n position: \"primary-menu\",\n surfaces: [\"console\"],\n order: 100,\n componentToken: \"users.web.shell.menu-link-item\",\n props: {\n label: \"Settings\",\n to: \"/console/settings\",\n icon: \"mdi-cog-outline\"\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
3675
|
+
"reason": "Append users-web console settings menu placement into app-owned placement registry.",
|
|
3676
|
+
"category": "users-web",
|
|
3677
|
+
"id": "users-web-console-settings-placement"
|
|
3678
|
+
}
|
|
3679
|
+
]
|
|
2733
3680
|
}
|
|
2734
3681
|
}
|
|
2735
3682
|
},
|
|
2736
3683
|
{
|
|
2737
|
-
"packageId": "@jskit-ai/
|
|
2738
|
-
"version": "0.1.
|
|
3684
|
+
"packageId": "@jskit-ai/workspaces-core",
|
|
3685
|
+
"version": "0.1.1",
|
|
2739
3686
|
"descriptor": {
|
|
2740
3687
|
"packageVersion": 1,
|
|
2741
|
-
"packageId": "@jskit-ai/
|
|
2742
|
-
"version": "0.1.
|
|
3688
|
+
"packageId": "@jskit-ai/workspaces-core",
|
|
3689
|
+
"version": "0.1.1",
|
|
2743
3690
|
"kind": "runtime",
|
|
2744
|
-
"description": "
|
|
3691
|
+
"description": "Workspace tenancy runtime plus HTTP routes, role catalog, and workspace config scaffolding.",
|
|
2745
3692
|
"dependsOn": [
|
|
2746
|
-
"@jskit-ai/
|
|
2747
|
-
"@jskit-ai/database-runtime",
|
|
2748
|
-
"@jskit-ai/http-runtime",
|
|
2749
|
-
"@jskit-ai/uploads-runtime",
|
|
2750
|
-
"@jskit-ai/storage-runtime"
|
|
3693
|
+
"@jskit-ai/users-core"
|
|
2751
3694
|
],
|
|
2752
3695
|
"capabilities": {
|
|
2753
3696
|
"provides": [
|
|
2754
|
-
"
|
|
2755
|
-
"
|
|
3697
|
+
"workspaces.core",
|
|
3698
|
+
"workspaces.server-routes"
|
|
2756
3699
|
],
|
|
2757
3700
|
"requires": [
|
|
2758
|
-
"
|
|
2759
|
-
"runtime.database",
|
|
2760
|
-
"runtime.storage",
|
|
2761
|
-
"runtime.uploads",
|
|
2762
|
-
"auth.provider",
|
|
2763
|
-
"auth.policy"
|
|
3701
|
+
"users.core"
|
|
2764
3702
|
]
|
|
2765
3703
|
},
|
|
2766
3704
|
"runtime": {
|
|
2767
3705
|
"server": {
|
|
2768
3706
|
"providers": [
|
|
2769
3707
|
{
|
|
2770
|
-
"entrypoint": "src/server/
|
|
2771
|
-
"export": "
|
|
3708
|
+
"entrypoint": "src/server/WorkspacesCoreServiceProvider.js",
|
|
3709
|
+
"export": "WorkspacesCoreServiceProvider"
|
|
2772
3710
|
}
|
|
2773
3711
|
]
|
|
2774
3712
|
},
|
|
@@ -2781,15 +3719,7 @@
|
|
|
2781
3719
|
"surfaces": [
|
|
2782
3720
|
{
|
|
2783
3721
|
"subpath": "./server",
|
|
2784
|
-
"summary": "Exports
|
|
2785
|
-
},
|
|
2786
|
-
{
|
|
2787
|
-
"subpath": "./shared",
|
|
2788
|
-
"summary": "Exports shared users/workspace role and settings utilities."
|
|
2789
|
-
},
|
|
2790
|
-
{
|
|
2791
|
-
"subpath": "./client",
|
|
2792
|
-
"summary": "Exports no runtime API today (reserved client entrypoint)."
|
|
3722
|
+
"summary": "Exports the workspace runtime provider and workspace route registration surface."
|
|
2793
3723
|
}
|
|
2794
3724
|
],
|
|
2795
3725
|
"containerTokens": {
|
|
@@ -2832,7 +3762,7 @@
|
|
|
2832
3762
|
{
|
|
2833
3763
|
"method": "GET",
|
|
2834
3764
|
"path": "/api/w/:workspaceSlug/roles",
|
|
2835
|
-
"summary": "Get
|
|
3765
|
+
"summary": "Get role catalog by workspace slug."
|
|
2836
3766
|
},
|
|
2837
3767
|
{
|
|
2838
3768
|
"method": "GET",
|
|
@@ -2858,76 +3788,6 @@
|
|
|
2858
3788
|
"method": "DELETE",
|
|
2859
3789
|
"path": "/api/w/:workspaceSlug/invites/:inviteId",
|
|
2860
3790
|
"summary": "Revoke workspace invite by workspace slug."
|
|
2861
|
-
},
|
|
2862
|
-
{
|
|
2863
|
-
"method": "GET",
|
|
2864
|
-
"path": "/api/settings",
|
|
2865
|
-
"summary": "Get authenticated user settings."
|
|
2866
|
-
},
|
|
2867
|
-
{
|
|
2868
|
-
"method": "PATCH",
|
|
2869
|
-
"path": "/api/settings/profile",
|
|
2870
|
-
"summary": "Update profile settings."
|
|
2871
|
-
},
|
|
2872
|
-
{
|
|
2873
|
-
"method": "GET",
|
|
2874
|
-
"path": "/api/settings/profile/avatar",
|
|
2875
|
-
"summary": "Read authenticated user's uploaded avatar."
|
|
2876
|
-
},
|
|
2877
|
-
{
|
|
2878
|
-
"method": "POST",
|
|
2879
|
-
"path": "/api/settings/profile/avatar",
|
|
2880
|
-
"summary": "Upload profile avatar."
|
|
2881
|
-
},
|
|
2882
|
-
{
|
|
2883
|
-
"method": "DELETE",
|
|
2884
|
-
"path": "/api/settings/profile/avatar",
|
|
2885
|
-
"summary": "Delete profile avatar."
|
|
2886
|
-
},
|
|
2887
|
-
{
|
|
2888
|
-
"method": "PATCH",
|
|
2889
|
-
"path": "/api/settings/preferences",
|
|
2890
|
-
"summary": "Update user preferences."
|
|
2891
|
-
},
|
|
2892
|
-
{
|
|
2893
|
-
"method": "PATCH",
|
|
2894
|
-
"path": "/api/settings/notifications",
|
|
2895
|
-
"summary": "Update notification settings."
|
|
2896
|
-
},
|
|
2897
|
-
{
|
|
2898
|
-
"method": "POST",
|
|
2899
|
-
"path": "/api/settings/security/change-password",
|
|
2900
|
-
"summary": "Set or change password for authenticated user."
|
|
2901
|
-
},
|
|
2902
|
-
{
|
|
2903
|
-
"method": "PATCH",
|
|
2904
|
-
"path": "/api/settings/security/methods/password",
|
|
2905
|
-
"summary": "Enable or disable password sign-in method."
|
|
2906
|
-
},
|
|
2907
|
-
{
|
|
2908
|
-
"method": "GET",
|
|
2909
|
-
"path": "/api/settings/security/oauth/:provider/start",
|
|
2910
|
-
"summary": "Start linking an OAuth provider for authenticated user."
|
|
2911
|
-
},
|
|
2912
|
-
{
|
|
2913
|
-
"method": "DELETE",
|
|
2914
|
-
"path": "/api/settings/security/oauth/:provider",
|
|
2915
|
-
"summary": "Unlink an OAuth provider from authenticated account."
|
|
2916
|
-
},
|
|
2917
|
-
{
|
|
2918
|
-
"method": "POST",
|
|
2919
|
-
"path": "/api/settings/security/logout-others",
|
|
2920
|
-
"summary": "Sign out from other active sessions."
|
|
2921
|
-
},
|
|
2922
|
-
{
|
|
2923
|
-
"method": "GET",
|
|
2924
|
-
"path": "/api/console/settings",
|
|
2925
|
-
"summary": "Get console settings."
|
|
2926
|
-
},
|
|
2927
|
-
{
|
|
2928
|
-
"method": "PATCH",
|
|
2929
|
-
"path": "/api/console/settings",
|
|
2930
|
-
"summary": "Update console settings."
|
|
2931
3791
|
}
|
|
2932
3792
|
]
|
|
2933
3793
|
}
|
|
@@ -2935,58 +3795,30 @@
|
|
|
2935
3795
|
"mutations": {
|
|
2936
3796
|
"dependencies": {
|
|
2937
3797
|
"runtime": {
|
|
2938
|
-
"@jskit-ai/
|
|
2939
|
-
"@jskit-ai/database-runtime": "0.1.23",
|
|
2940
|
-
"@jskit-ai/http-runtime": "0.1.22",
|
|
2941
|
-
"@jskit-ai/kernel": "0.1.23",
|
|
2942
|
-
"@jskit-ai/uploads-runtime": "0.1.1",
|
|
2943
|
-
"@fastify/type-provider-typebox": "^6.1.0",
|
|
2944
|
-
"typebox": "^1.0.81"
|
|
3798
|
+
"@jskit-ai/users-core": "0.1.35"
|
|
2945
3799
|
},
|
|
2946
3800
|
"dev": {}
|
|
2947
3801
|
},
|
|
2948
3802
|
"packageJson": {
|
|
2949
3803
|
"scripts": {
|
|
2950
3804
|
"server:app": "SERVER_SURFACE=app node ./bin/server.js",
|
|
2951
|
-
"server:admin": "SERVER_SURFACE=admin node ./bin/server.js"
|
|
2952
|
-
"dev:app": "VITE_SURFACE=app vite",
|
|
2953
|
-
"dev:admin": "VITE_SURFACE=admin vite",
|
|
2954
|
-
"build:app": "VITE_SURFACE=app vite build",
|
|
2955
|
-
"build:admin": "VITE_SURFACE=admin vite build"
|
|
3805
|
+
"server:admin": "SERVER_SURFACE=admin node ./bin/server.js"
|
|
2956
3806
|
}
|
|
2957
3807
|
},
|
|
2958
3808
|
"procfile": {},
|
|
2959
3809
|
"files": [
|
|
2960
3810
|
{
|
|
2961
3811
|
"op": "install-migration",
|
|
2962
|
-
"from": "templates/migrations/
|
|
2963
|
-
"toDir": "migrations",
|
|
2964
|
-
"extension": ".cjs",
|
|
2965
|
-
"reason": "Install users/workspace core schema migration.",
|
|
2966
|
-
"category": "migration",
|
|
2967
|
-
"id": "users-core-initial-schema"
|
|
2968
|
-
},
|
|
2969
|
-
{
|
|
2970
|
-
"op": "install-migration",
|
|
2971
|
-
"from": "templates/migrations/users_core_profile_username.cjs",
|
|
2972
|
-
"toDir": "migrations",
|
|
2973
|
-
"extension": ".cjs",
|
|
2974
|
-
"reason": "Install users profile username migration.",
|
|
2975
|
-
"category": "migration",
|
|
2976
|
-
"id": "users-core-profile-username-schema"
|
|
2977
|
-
},
|
|
2978
|
-
{
|
|
2979
|
-
"op": "install-migration",
|
|
2980
|
-
"from": "templates/migrations/users_core_console_owner.cjs",
|
|
3812
|
+
"from": "templates/migrations/workspaces_core_initial.cjs",
|
|
2981
3813
|
"toDir": "migrations",
|
|
2982
3814
|
"extension": ".cjs",
|
|
2983
|
-
"reason": "Install
|
|
3815
|
+
"reason": "Install workspace tenancy schema migration.",
|
|
2984
3816
|
"category": "migration",
|
|
2985
|
-
"id": "
|
|
3817
|
+
"id": "workspaces-core-initial-schema"
|
|
2986
3818
|
},
|
|
2987
3819
|
{
|
|
2988
3820
|
"op": "install-migration",
|
|
2989
|
-
"from": "templates/migrations/
|
|
3821
|
+
"from": "templates/migrations/workspaces_core_workspace_settings_single_name_source.cjs",
|
|
2990
3822
|
"toDir": "migrations",
|
|
2991
3823
|
"extension": ".cjs",
|
|
2992
3824
|
"reason": "Remove workspace_settings name/avatar fields so workspace identity data comes from workspaces only.",
|
|
@@ -2995,7 +3827,7 @@
|
|
|
2995
3827
|
},
|
|
2996
3828
|
{
|
|
2997
3829
|
"op": "install-migration",
|
|
2998
|
-
"from": "templates/migrations/
|
|
3830
|
+
"from": "templates/migrations/workspaces_core_workspaces_drop_color.cjs",
|
|
2999
3831
|
"toDir": "migrations",
|
|
3000
3832
|
"extension": ".cjs",
|
|
3001
3833
|
"reason": "Drop legacy workspaces.color now that workspace theme colors live in workspace_settings.",
|
|
@@ -3007,103 +3839,38 @@
|
|
|
3007
3839
|
"to": "packages/main/src/shared/resources/workspaceSettingsFields.js",
|
|
3008
3840
|
"preserveOnRemove": true,
|
|
3009
3841
|
"reason": "Install app-owned workspace settings field definitions.",
|
|
3010
|
-
"category": "
|
|
3842
|
+
"category": "workspaces-core",
|
|
3011
3843
|
"id": "users-core-app-owned-workspace-settings-fields"
|
|
3012
3844
|
},
|
|
3013
3845
|
{
|
|
3014
|
-
"from": "templates/
|
|
3015
|
-
"to": "
|
|
3016
|
-
"preserveOnRemove": true,
|
|
3017
|
-
"reason": "Install app-owned console settings field definitions.",
|
|
3018
|
-
"category": "users-core",
|
|
3019
|
-
"id": "users-core-app-owned-console-settings-fields"
|
|
3020
|
-
},
|
|
3021
|
-
{
|
|
3022
|
-
"from": "templates/packages/main/src/shared/resources/userSettingsFields.js",
|
|
3023
|
-
"to": "packages/main/src/shared/resources/userSettingsFields.js",
|
|
3024
|
-
"preserveOnRemove": true,
|
|
3025
|
-
"reason": "Install app-owned user settings field definitions.",
|
|
3026
|
-
"category": "users-core",
|
|
3027
|
-
"id": "users-core-app-owned-user-settings-fields"
|
|
3028
|
-
},
|
|
3029
|
-
{
|
|
3030
|
-
"from": "templates/config/workspaceRoles.js",
|
|
3031
|
-
"to": "config/workspaceRoles.js",
|
|
3846
|
+
"from": "templates/config/roles.js",
|
|
3847
|
+
"to": "config/roles.js",
|
|
3032
3848
|
"preserveOnRemove": true,
|
|
3033
|
-
"reason": "Install app-owned
|
|
3034
|
-
"category": "
|
|
3035
|
-
"id": "users-core-app-owned-
|
|
3036
|
-
}
|
|
3037
|
-
],
|
|
3038
|
-
"text": [
|
|
3039
|
-
{
|
|
3040
|
-
"op": "upsert-env",
|
|
3041
|
-
"file": ".env",
|
|
3042
|
-
"key": "AUTH_PROFILE_MODE",
|
|
3043
|
-
"value": "users",
|
|
3044
|
-
"reason": "Enable users-backed auth profile sync when users-core is installed.",
|
|
3045
|
-
"category": "runtime-config",
|
|
3046
|
-
"id": "users-core-auth-profile-mode"
|
|
3047
|
-
},
|
|
3048
|
-
{
|
|
3049
|
-
"op": "append-text",
|
|
3050
|
-
"file": "packages/main/src/shared/index.js",
|
|
3051
|
-
"position": "top",
|
|
3052
|
-
"skipIfContains": "import \"./resources/workspaceSettingsFields.js\";",
|
|
3053
|
-
"value": "import \"./resources/workspaceSettingsFields.js\";\n",
|
|
3054
|
-
"reason": "Load app-owned workspace settings field definitions inside the main shared module.",
|
|
3055
|
-
"category": "users-core",
|
|
3056
|
-
"id": "users-core-main-shared-workspace-settings-field-import"
|
|
3057
|
-
},
|
|
3058
|
-
{
|
|
3059
|
-
"op": "append-text",
|
|
3060
|
-
"file": "packages/main/src/shared/index.js",
|
|
3061
|
-
"position": "top",
|
|
3062
|
-
"skipIfContains": "import \"./resources/consoleSettingsFields.js\";",
|
|
3063
|
-
"value": "import \"./resources/consoleSettingsFields.js\";\n",
|
|
3064
|
-
"reason": "Load app-owned console settings field definitions inside the main shared module.",
|
|
3065
|
-
"category": "users-core",
|
|
3066
|
-
"id": "users-core-main-shared-console-settings-field-import"
|
|
3067
|
-
},
|
|
3068
|
-
{
|
|
3069
|
-
"op": "append-text",
|
|
3070
|
-
"file": "packages/main/src/shared/index.js",
|
|
3071
|
-
"position": "top",
|
|
3072
|
-
"skipIfContains": "import \"./resources/userSettingsFields.js\";",
|
|
3073
|
-
"value": "import \"./resources/userSettingsFields.js\";\n",
|
|
3074
|
-
"reason": "Load app-owned user settings field definitions inside the main shared module.",
|
|
3075
|
-
"category": "users-core",
|
|
3076
|
-
"id": "users-core-main-shared-user-settings-field-import"
|
|
3077
|
-
},
|
|
3078
|
-
{
|
|
3079
|
-
"op": "append-text",
|
|
3080
|
-
"file": "src/main.js",
|
|
3081
|
-
"position": "top",
|
|
3082
|
-
"skipIfContains": "import \"@local/main/shared\";",
|
|
3083
|
-
"value": "import \"@local/main/shared\";\n",
|
|
3084
|
-
"reason": "Ensure client runtime loads app-owned shared settings field registration.",
|
|
3085
|
-
"category": "users-core",
|
|
3086
|
-
"id": "users-core-client-import-main-shared"
|
|
3087
|
-
},
|
|
3849
|
+
"reason": "Install app-owned role catalog in a dedicated config file.",
|
|
3850
|
+
"category": "workspaces-core",
|
|
3851
|
+
"id": "users-core-app-owned-role-catalog-config"
|
|
3852
|
+
}
|
|
3853
|
+
],
|
|
3854
|
+
"text": [
|
|
3088
3855
|
{
|
|
3089
3856
|
"op": "append-text",
|
|
3090
|
-
"file": "
|
|
3857
|
+
"file": "packages/main/src/shared/index.js",
|
|
3091
3858
|
"position": "top",
|
|
3092
|
-
"skipIfContains": "import \"
|
|
3093
|
-
"value": "import \"
|
|
3094
|
-
"reason": "
|
|
3095
|
-
"category": "
|
|
3096
|
-
"id": "users-core-
|
|
3859
|
+
"skipIfContains": "import \"./resources/workspaceSettingsFields.js\";",
|
|
3860
|
+
"value": "import \"./resources/workspaceSettingsFields.js\";\n",
|
|
3861
|
+
"reason": "Load app-owned workspace settings field definitions inside the main shared module.",
|
|
3862
|
+
"category": "workspaces-core",
|
|
3863
|
+
"id": "users-core-main-shared-workspace-settings-field-import"
|
|
3097
3864
|
},
|
|
3098
3865
|
{
|
|
3099
3866
|
"op": "append-text",
|
|
3100
3867
|
"file": "config/public.js",
|
|
3101
3868
|
"position": "top",
|
|
3102
|
-
"skipIfContains": "import {
|
|
3103
|
-
"value": "import {
|
|
3104
|
-
"reason": "Load app-owned
|
|
3105
|
-
"category": "
|
|
3106
|
-
"id": "users-core-
|
|
3869
|
+
"skipIfContains": "import { roleCatalog } from \"./roles.js\";",
|
|
3870
|
+
"value": "import { roleCatalog } from \"./roles.js\";\n",
|
|
3871
|
+
"reason": "Load app-owned role catalog from dedicated config file.",
|
|
3872
|
+
"category": "workspaces-core",
|
|
3873
|
+
"id": "users-core-role-catalog-public-import"
|
|
3107
3874
|
},
|
|
3108
3875
|
{
|
|
3109
3876
|
"op": "append-text",
|
|
@@ -3112,7 +3879,7 @@
|
|
|
3112
3879
|
"skipIfContains": "import { surfaceAccessPolicies } from \"./surfaceAccessPolicies.js\";",
|
|
3113
3880
|
"value": "import { surfaceAccessPolicies } from \"./surfaceAccessPolicies.js\";\n",
|
|
3114
3881
|
"reason": "Load app-owned surface access policy catalog from dedicated config file.",
|
|
3115
|
-
"category": "
|
|
3882
|
+
"category": "workspaces-core",
|
|
3116
3883
|
"id": "users-core-surface-access-policies-public-import"
|
|
3117
3884
|
},
|
|
3118
3885
|
{
|
|
@@ -3122,7 +3889,7 @@
|
|
|
3122
3889
|
"skipIfContains": "export const surfaceAccessPolicies = {};",
|
|
3123
3890
|
"value": "export const surfaceAccessPolicies = {};\n\n",
|
|
3124
3891
|
"reason": "Initialize app-owned surface access policy config if missing.",
|
|
3125
|
-
"category": "
|
|
3892
|
+
"category": "workspaces-core",
|
|
3126
3893
|
"id": "users-core-surface-access-policies-config-init"
|
|
3127
3894
|
},
|
|
3128
3895
|
{
|
|
@@ -3132,7 +3899,7 @@
|
|
|
3132
3899
|
"skipIfContains": "surfaceAccessPolicies.workspace_member = {",
|
|
3133
3900
|
"value": "\nsurfaceAccessPolicies.workspace_member = {\n requireAuth: true,\n requireWorkspaceMembership: true\n};\n",
|
|
3134
3901
|
"reason": "Register workspace-member surface access policy for workspace surfaces.",
|
|
3135
|
-
"category": "
|
|
3902
|
+
"category": "workspaces-core",
|
|
3136
3903
|
"id": "users-core-surface-access-policies-workspace-member"
|
|
3137
3904
|
},
|
|
3138
3905
|
{
|
|
@@ -3142,7 +3909,7 @@
|
|
|
3142
3909
|
"skipIfContains": "config.surfaceDefinitions.app = {",
|
|
3143
3910
|
"value": "\nconfig.surfaceDefinitions.app = {\n id: \"app\",\n label: \"App\",\n pagesRoot: \"w/[workspaceSlug]\",\n enabled: true,\n requiresAuth: true,\n requiresWorkspace: true,\n accessPolicyId: \"workspace_member\",\n origin: \"\"\n};\n\nconfig.surfaceDefinitions.admin = {\n id: \"admin\",\n label: \"Admin\",\n pagesRoot: \"w/[workspaceSlug]/admin\",\n enabled: true,\n requiresAuth: true,\n requiresWorkspace: true,\n accessPolicyId: \"workspace_member\",\n origin: \"\"\n};\n",
|
|
3144
3911
|
"reason": "Append workspace surface topology when tenancy enables workspace routing.",
|
|
3145
|
-
"category": "
|
|
3912
|
+
"category": "workspaces-core",
|
|
3146
3913
|
"id": "users-core-surface-config-workspace",
|
|
3147
3914
|
"when": {
|
|
3148
3915
|
"config": "tenancyMode",
|
|
@@ -3158,19 +3925,19 @@
|
|
|
3158
3925
|
"position": "bottom",
|
|
3159
3926
|
"skipIfContains": "config.workspaceSwitching =",
|
|
3160
3927
|
"value": "\nconfig.workspaceSwitching = true;\nconfig.workspaceInvitations = {\n enabled: true,\n allowInPersonalMode: true\n};\nconfig.assistantEnabled = false;\nconfig.assistantRequiredPermission = \"\";\nconfig.socialEnabled = false;\nconfig.socialFederationEnabled = false;\n",
|
|
3161
|
-
"reason": "Append default
|
|
3162
|
-
"category": "
|
|
3928
|
+
"reason": "Append default workspace feature toggles into app-owned config.",
|
|
3929
|
+
"category": "workspaces-core",
|
|
3163
3930
|
"id": "users-core-public-config"
|
|
3164
3931
|
},
|
|
3165
3932
|
{
|
|
3166
3933
|
"op": "append-text",
|
|
3167
3934
|
"file": "config/public.js",
|
|
3168
3935
|
"position": "bottom",
|
|
3169
|
-
"skipIfContains": "config.
|
|
3170
|
-
"value": "\nconfig.
|
|
3171
|
-
"reason": "Bind app-owned
|
|
3172
|
-
"category": "
|
|
3173
|
-
"id": "users-core-
|
|
3936
|
+
"skipIfContains": "config.roleCatalog = roleCatalog;",
|
|
3937
|
+
"value": "\nconfig.roleCatalog = roleCatalog;\n",
|
|
3938
|
+
"reason": "Bind app-owned role catalog onto public config.",
|
|
3939
|
+
"category": "workspaces-core",
|
|
3940
|
+
"id": "users-core-role-catalog-public-config"
|
|
3174
3941
|
},
|
|
3175
3942
|
{
|
|
3176
3943
|
"op": "append-text",
|
|
@@ -3179,7 +3946,7 @@
|
|
|
3179
3946
|
"skipIfContains": "config.surfaceAccessPolicies = surfaceAccessPolicies;",
|
|
3180
3947
|
"value": "\nconfig.surfaceAccessPolicies = surfaceAccessPolicies;\n",
|
|
3181
3948
|
"reason": "Bind app-owned surface access policies onto public config.",
|
|
3182
|
-
"category": "
|
|
3949
|
+
"category": "workspaces-core",
|
|
3183
3950
|
"id": "users-core-surface-access-policies-public-config"
|
|
3184
3951
|
},
|
|
3185
3952
|
{
|
|
@@ -3188,8 +3955,8 @@
|
|
|
3188
3955
|
"position": "bottom",
|
|
3189
3956
|
"skipIfContains": "config.workspaceColor =",
|
|
3190
3957
|
"value": "\nconfig.workspaceColor = \"#1867C0\";\n",
|
|
3191
|
-
"reason": "Append default server
|
|
3192
|
-
"category": "
|
|
3958
|
+
"reason": "Append default workspace server settings into app-owned config.",
|
|
3959
|
+
"category": "workspaces-core",
|
|
3193
3960
|
"id": "users-core-server-config"
|
|
3194
3961
|
},
|
|
3195
3962
|
{
|
|
@@ -3199,7 +3966,7 @@
|
|
|
3199
3966
|
"skipIfContains": "config.workspaceSettings =",
|
|
3200
3967
|
"value": "\nconfig.workspaceSettings = {\n defaults: {\n invitesEnabled: true\n }\n};\n",
|
|
3201
3968
|
"reason": "Append app-owned workspace settings defaults into the server config.",
|
|
3202
|
-
"category": "
|
|
3969
|
+
"category": "workspaces-core",
|
|
3203
3970
|
"id": "users-core-workspace-settings-server-config"
|
|
3204
3971
|
},
|
|
3205
3972
|
{
|
|
@@ -3209,7 +3976,7 @@
|
|
|
3209
3976
|
"skipIfContains": "config.workspaceMembers =",
|
|
3210
3977
|
"value": "\nconfig.workspaceMembers = {\n defaults: {\n inviteExpiresInMs: 604800000\n }\n};\n",
|
|
3211
3978
|
"reason": "Append app-owned workspace member invite policy defaults into the server config.",
|
|
3212
|
-
"category": "
|
|
3979
|
+
"category": "workspaces-core",
|
|
3213
3980
|
"id": "users-core-workspace-members-server-config"
|
|
3214
3981
|
}
|
|
3215
3982
|
]
|
|
@@ -3217,27 +3984,25 @@
|
|
|
3217
3984
|
}
|
|
3218
3985
|
},
|
|
3219
3986
|
{
|
|
3220
|
-
"packageId": "@jskit-ai/
|
|
3221
|
-
"version": "0.1.
|
|
3987
|
+
"packageId": "@jskit-ai/workspaces-web",
|
|
3988
|
+
"version": "0.1.1",
|
|
3222
3989
|
"descriptor": {
|
|
3223
3990
|
"packageVersion": 1,
|
|
3224
|
-
"packageId": "@jskit-ai/
|
|
3225
|
-
"version": "0.1.
|
|
3991
|
+
"packageId": "@jskit-ai/workspaces-web",
|
|
3992
|
+
"version": "0.1.1",
|
|
3226
3993
|
"kind": "runtime",
|
|
3227
|
-
"description": "
|
|
3994
|
+
"description": "Workspace web module: workspace selector, tools widget, workspace surfaces, and members/settings UI.",
|
|
3228
3995
|
"dependsOn": [
|
|
3229
|
-
"@jskit-ai/
|
|
3230
|
-
"@jskit-ai/
|
|
3231
|
-
"@jskit-ai/uploads-image-web",
|
|
3232
|
-
"@jskit-ai/users-core"
|
|
3996
|
+
"@jskit-ai/workspaces-core",
|
|
3997
|
+
"@jskit-ai/users-web"
|
|
3233
3998
|
],
|
|
3234
3999
|
"capabilities": {
|
|
3235
4000
|
"provides": [
|
|
3236
|
-
"
|
|
4001
|
+
"workspaces.web"
|
|
3237
4002
|
],
|
|
3238
4003
|
"requires": [
|
|
3239
|
-
"
|
|
3240
|
-
"
|
|
4004
|
+
"users.web",
|
|
4005
|
+
"workspaces.core"
|
|
3241
4006
|
]
|
|
3242
4007
|
},
|
|
3243
4008
|
"runtime": {
|
|
@@ -3247,8 +4012,8 @@
|
|
|
3247
4012
|
"client": {
|
|
3248
4013
|
"providers": [
|
|
3249
4014
|
{
|
|
3250
|
-
"entrypoint": "src/client/providers/
|
|
3251
|
-
"export": "
|
|
4015
|
+
"entrypoint": "src/client/providers/WorkspacesWebClientProvider.js",
|
|
4016
|
+
"export": "WorkspacesWebClientProvider"
|
|
3252
4017
|
}
|
|
3253
4018
|
]
|
|
3254
4019
|
}
|
|
@@ -3257,64 +4022,8 @@
|
|
|
3257
4022
|
"apiSummary": {
|
|
3258
4023
|
"surfaces": [
|
|
3259
4024
|
{
|
|
3260
|
-
"subpath": "./client",
|
|
3261
|
-
"summary": "Exports
|
|
3262
|
-
},
|
|
3263
|
-
{
|
|
3264
|
-
"subpath": "./client/providers/UsersWebClientProvider",
|
|
3265
|
-
"summary": "Exports users-web client provider class."
|
|
3266
|
-
},
|
|
3267
|
-
{
|
|
3268
|
-
"subpath": "./client/components/ProfileClientElement",
|
|
3269
|
-
"summary": "Exports profile settings client element scaffold component."
|
|
3270
|
-
},
|
|
3271
|
-
{
|
|
3272
|
-
"subpath": "./client/components/WorkspacesClientElement",
|
|
3273
|
-
"summary": "Exports workspace chooser client element component."
|
|
3274
|
-
},
|
|
3275
|
-
{
|
|
3276
|
-
"subpath": "./client/components/WorkspaceMembersClientElement",
|
|
3277
|
-
"summary": "Exports workspace members admin client element component."
|
|
3278
|
-
},
|
|
3279
|
-
{
|
|
3280
|
-
"subpath": "./client/composables/useAddEdit",
|
|
3281
|
-
"summary": "Exports add/edit operation composable."
|
|
3282
|
-
},
|
|
3283
|
-
{
|
|
3284
|
-
"subpath": "./client/composables/useList",
|
|
3285
|
-
"summary": "Exports list operation composable."
|
|
3286
|
-
},
|
|
3287
|
-
{
|
|
3288
|
-
"subpath": "./client/composables/crudLookupFieldRuntime",
|
|
3289
|
-
"summary": "Exports CRUD lookup field runtime helpers for generated add/edit forms."
|
|
3290
|
-
},
|
|
3291
|
-
{
|
|
3292
|
-
"subpath": "./client/composables/useCommand",
|
|
3293
|
-
"summary": "Exports command operation composable."
|
|
3294
|
-
},
|
|
3295
|
-
{
|
|
3296
|
-
"subpath": "./client/composables/useView",
|
|
3297
|
-
"summary": "Exports read/view operation composable."
|
|
3298
|
-
},
|
|
3299
|
-
{
|
|
3300
|
-
"subpath": "./client/composables/usePagedCollection",
|
|
3301
|
-
"summary": "Exports paged collection query composable."
|
|
3302
|
-
},
|
|
3303
|
-
{
|
|
3304
|
-
"subpath": "./client/composables/usePaths",
|
|
3305
|
-
"summary": "Exports surface/workspace path resolver composable."
|
|
3306
|
-
},
|
|
3307
|
-
{
|
|
3308
|
-
"subpath": "./client/composables/useAccountSettingsRuntime",
|
|
3309
|
-
"summary": "Exports account settings runtime composable for app-owned settings UI."
|
|
3310
|
-
},
|
|
3311
|
-
{
|
|
3312
|
-
"subpath": "./client/composables/useWorkspaceRouteContext",
|
|
3313
|
-
"summary": "Exports workspace route context composable."
|
|
3314
|
-
},
|
|
3315
|
-
{
|
|
3316
|
-
"subpath": "./client/support/realtimeWorkspace",
|
|
3317
|
-
"summary": "Exports workspace realtime event helpers."
|
|
4025
|
+
"subpath": "./client/providers/WorkspacesWebClientProvider",
|
|
4026
|
+
"summary": "Exports workspaces-web client provider class."
|
|
3318
4027
|
}
|
|
3319
4028
|
],
|
|
3320
4029
|
"containerTokens": {
|
|
@@ -3322,15 +4031,10 @@
|
|
|
3322
4031
|
"client": [
|
|
3323
4032
|
"users.web.workspace.selector",
|
|
3324
4033
|
"users.web.workspace.tools.widget",
|
|
3325
|
-
"users.web.shell.menu-link-item",
|
|
3326
|
-
"users.web.shell.surface-aware-menu-link-item",
|
|
3327
|
-
"users.web.profile.menu.surface-switch-item",
|
|
3328
4034
|
"users.web.workspace-settings.menu-item",
|
|
3329
4035
|
"users.web.workspace-members.menu-item",
|
|
3330
|
-
"users.web.profile.element",
|
|
3331
4036
|
"users.web.members-admin.element",
|
|
3332
|
-
"users.web.workspace-settings.element"
|
|
3333
|
-
"users.web.bootstrap-placement.runtime"
|
|
4037
|
+
"users.web.workspace-settings.element"
|
|
3334
4038
|
]
|
|
3335
4039
|
}
|
|
3336
4040
|
},
|
|
@@ -3338,28 +4042,20 @@
|
|
|
3338
4042
|
"placements": {
|
|
3339
4043
|
"outlets": [
|
|
3340
4044
|
{
|
|
3341
|
-
"host": "
|
|
4045
|
+
"host": "admin-settings",
|
|
3342
4046
|
"position": "primary-menu",
|
|
3343
4047
|
"surfaces": [
|
|
3344
4048
|
"admin"
|
|
3345
4049
|
],
|
|
3346
|
-
"source": "src/
|
|
4050
|
+
"source": "templates/src/pages/admin/workspace/settings/index.vue"
|
|
3347
4051
|
},
|
|
3348
4052
|
{
|
|
3349
|
-
"host": "
|
|
4053
|
+
"host": "admin-settings",
|
|
3350
4054
|
"position": "forms",
|
|
3351
4055
|
"surfaces": [
|
|
3352
4056
|
"admin"
|
|
3353
4057
|
],
|
|
3354
4058
|
"source": "templates/src/pages/admin/workspace/settings/index.vue"
|
|
3355
|
-
},
|
|
3356
|
-
{
|
|
3357
|
-
"host": "console-settings",
|
|
3358
|
-
"position": "forms",
|
|
3359
|
-
"surfaces": [
|
|
3360
|
-
"console"
|
|
3361
|
-
],
|
|
3362
|
-
"source": "templates/src/pages/console/settings/index.vue"
|
|
3363
4059
|
}
|
|
3364
4060
|
],
|
|
3365
4061
|
"contributions": [
|
|
@@ -3387,30 +4083,6 @@
|
|
|
3387
4083
|
"when": "auth.authenticated === true",
|
|
3388
4084
|
"source": "mutations.text#users-web-placement-block"
|
|
3389
4085
|
},
|
|
3390
|
-
{
|
|
3391
|
-
"id": "users.profile.menu.surface-switch",
|
|
3392
|
-
"host": "auth-profile-menu",
|
|
3393
|
-
"position": "primary-menu",
|
|
3394
|
-
"surfaces": [
|
|
3395
|
-
"*"
|
|
3396
|
-
],
|
|
3397
|
-
"order": 100,
|
|
3398
|
-
"componentToken": "users.web.profile.menu.surface-switch-item",
|
|
3399
|
-
"when": "auth.authenticated === true",
|
|
3400
|
-
"source": "mutations.text#users-web-profile-surface-switch-placement"
|
|
3401
|
-
},
|
|
3402
|
-
{
|
|
3403
|
-
"id": "users.profile.menu.settings",
|
|
3404
|
-
"host": "auth-profile-menu",
|
|
3405
|
-
"position": "primary-menu",
|
|
3406
|
-
"surfaces": [
|
|
3407
|
-
"*"
|
|
3408
|
-
],
|
|
3409
|
-
"order": 500,
|
|
3410
|
-
"componentToken": "users.web.shell.menu-link-item",
|
|
3411
|
-
"when": "auth.authenticated === true",
|
|
3412
|
-
"source": "mutations.text#users-web-profile-settings-placement"
|
|
3413
|
-
},
|
|
3414
4086
|
{
|
|
3415
4087
|
"id": "users.workspace.tools.widget",
|
|
3416
4088
|
"host": "shell-layout",
|
|
@@ -3444,21 +4116,9 @@
|
|
|
3444
4116
|
"componentToken": "users.web.workspace-members.menu-item",
|
|
3445
4117
|
"source": "mutations.text#users-web-placement-block"
|
|
3446
4118
|
},
|
|
3447
|
-
{
|
|
3448
|
-
"id": "users.console.menu.settings",
|
|
3449
|
-
"host": "shell-layout",
|
|
3450
|
-
"position": "primary-menu",
|
|
3451
|
-
"surfaces": [
|
|
3452
|
-
"console"
|
|
3453
|
-
],
|
|
3454
|
-
"order": 100,
|
|
3455
|
-
"componentToken": "users.web.shell.menu-link-item",
|
|
3456
|
-
"when": "auth.authenticated === true",
|
|
3457
|
-
"source": "mutations.text#users-web-console-settings-placement"
|
|
3458
|
-
},
|
|
3459
4119
|
{
|
|
3460
4120
|
"id": "users.workspace.settings.form",
|
|
3461
|
-
"host": "
|
|
4121
|
+
"host": "admin-settings",
|
|
3462
4122
|
"position": "forms",
|
|
3463
4123
|
"surfaces": [
|
|
3464
4124
|
"admin"
|
|
@@ -3474,81 +4134,33 @@
|
|
|
3474
4134
|
"mutations": {
|
|
3475
4135
|
"dependencies": {
|
|
3476
4136
|
"runtime": {
|
|
3477
|
-
"@
|
|
3478
|
-
"@
|
|
3479
|
-
"@jskit-ai/http-runtime": "0.1.22",
|
|
3480
|
-
"@jskit-ai/realtime": "0.1.22",
|
|
3481
|
-
"@jskit-ai/kernel": "0.1.23",
|
|
3482
|
-
"@jskit-ai/shell-web": "0.1.22",
|
|
3483
|
-
"@jskit-ai/uploads-image-web": "0.1.1",
|
|
3484
|
-
"@jskit-ai/users-core": "0.1.32",
|
|
3485
|
-
"vuetify": "^4.0.0"
|
|
4137
|
+
"@jskit-ai/workspaces-core": "0.1.1",
|
|
4138
|
+
"@jskit-ai/users-web": "0.1.40"
|
|
3486
4139
|
},
|
|
3487
4140
|
"dev": {}
|
|
3488
4141
|
},
|
|
3489
4142
|
"packageJson": {
|
|
3490
4143
|
"scripts": {
|
|
3491
|
-
"
|
|
3492
|
-
"dev:
|
|
3493
|
-
"build:
|
|
4144
|
+
"dev:app": "VITE_SURFACE=app vite",
|
|
4145
|
+
"dev:admin": "VITE_SURFACE=admin vite",
|
|
4146
|
+
"build:app": "VITE_SURFACE=app vite build",
|
|
4147
|
+
"build:admin": "VITE_SURFACE=admin vite build"
|
|
3494
4148
|
}
|
|
3495
4149
|
},
|
|
3496
4150
|
"procfile": {},
|
|
3497
4151
|
"files": [
|
|
3498
|
-
{
|
|
3499
|
-
"from": "templates/src/pages/account/index.vue",
|
|
3500
|
-
"to": "src/pages/account/index.vue",
|
|
3501
|
-
"reason": "Install app-owned account surface root page scaffold.",
|
|
3502
|
-
"category": "users-web",
|
|
3503
|
-
"id": "users-web-page-account-root"
|
|
3504
|
-
},
|
|
3505
|
-
{
|
|
3506
|
-
"from": "templates/src/components/account/settings/AccountSettingsClientElement.vue",
|
|
3507
|
-
"to": "src/components/account/settings/AccountSettingsClientElement.vue",
|
|
3508
|
-
"reason": "Install app-owned account settings container component scaffold.",
|
|
3509
|
-
"category": "users-web",
|
|
3510
|
-
"id": "users-web-component-account-settings-root"
|
|
3511
|
-
},
|
|
3512
|
-
{
|
|
3513
|
-
"from": "templates/src/components/account/settings/AccountSettingsProfileSection.vue",
|
|
3514
|
-
"to": "src/components/account/settings/AccountSettingsProfileSection.vue",
|
|
3515
|
-
"reason": "Install app-owned account settings profile section scaffold.",
|
|
3516
|
-
"category": "users-web",
|
|
3517
|
-
"id": "users-web-component-account-settings-profile"
|
|
3518
|
-
},
|
|
3519
|
-
{
|
|
3520
|
-
"from": "templates/src/components/account/settings/AccountSettingsPreferencesSection.vue",
|
|
3521
|
-
"to": "src/components/account/settings/AccountSettingsPreferencesSection.vue",
|
|
3522
|
-
"reason": "Install app-owned account settings preferences section scaffold.",
|
|
3523
|
-
"category": "users-web",
|
|
3524
|
-
"id": "users-web-component-account-settings-preferences"
|
|
3525
|
-
},
|
|
3526
|
-
{
|
|
3527
|
-
"from": "templates/src/components/account/settings/AccountSettingsNotificationsSection.vue",
|
|
3528
|
-
"to": "src/components/account/settings/AccountSettingsNotificationsSection.vue",
|
|
3529
|
-
"reason": "Install app-owned account settings notifications section scaffold.",
|
|
3530
|
-
"category": "users-web",
|
|
3531
|
-
"id": "users-web-component-account-settings-notifications"
|
|
3532
|
-
},
|
|
3533
|
-
{
|
|
3534
|
-
"from": "templates/src/components/account/settings/AccountSettingsInvitesSection.vue",
|
|
3535
|
-
"to": "src/components/account/settings/AccountSettingsInvitesSection.vue",
|
|
3536
|
-
"reason": "Install app-owned account settings invites section scaffold.",
|
|
3537
|
-
"category": "users-web",
|
|
3538
|
-
"id": "users-web-component-account-settings-invites"
|
|
3539
|
-
},
|
|
3540
4152
|
{
|
|
3541
4153
|
"from": "templates/packages/main/src/client/components/AccountPendingInvitesCue.vue",
|
|
3542
4154
|
"to": "packages/main/src/client/components/AccountPendingInvitesCue.vue",
|
|
3543
4155
|
"reason": "Install app-owned account pending invites cue component scaffold.",
|
|
3544
|
-
"category": "
|
|
4156
|
+
"category": "workspaces-web",
|
|
3545
4157
|
"id": "users-web-main-component-account-pending-invites-cue"
|
|
3546
4158
|
},
|
|
3547
4159
|
{
|
|
3548
4160
|
"from": "templates/src/components/WorkspaceNotFoundCard.vue",
|
|
3549
4161
|
"to": "src/components/WorkspaceNotFoundCard.vue",
|
|
3550
4162
|
"reason": "Install app-owned workspace not-found card component used by workspace-dependent surfaces.",
|
|
3551
|
-
"category": "
|
|
4163
|
+
"category": "workspaces-web",
|
|
3552
4164
|
"id": "users-web-component-workspace-not-found-card",
|
|
3553
4165
|
"when": {
|
|
3554
4166
|
"config": "tenancyMode",
|
|
@@ -3562,7 +4174,7 @@
|
|
|
3562
4174
|
"from": "templates/src/composables/useWorkspaceNotFoundState.js",
|
|
3563
4175
|
"to": "src/composables/useWorkspaceNotFoundState.js",
|
|
3564
4176
|
"reason": "Install app-owned workspace bootstrap status composable for workspace-dependent surfaces.",
|
|
3565
|
-
"category": "
|
|
4177
|
+
"category": "workspaces-web",
|
|
3566
4178
|
"id": "users-web-composable-workspace-not-found-state",
|
|
3567
4179
|
"when": {
|
|
3568
4180
|
"config": "tenancyMode",
|
|
@@ -3576,8 +4188,8 @@
|
|
|
3576
4188
|
"from": "templates/src/surfaces/app/root.vue",
|
|
3577
4189
|
"toSurface": "app",
|
|
3578
4190
|
"toSurfaceRoot": true,
|
|
3579
|
-
"reason": "Install workspace app surface wrapper shell for
|
|
3580
|
-
"category": "
|
|
4191
|
+
"reason": "Install workspace app surface wrapper shell for workspaces-web.",
|
|
4192
|
+
"category": "workspaces-web",
|
|
3581
4193
|
"id": "users-web-page-app-wrapper",
|
|
3582
4194
|
"when": {
|
|
3583
4195
|
"config": "tenancyMode",
|
|
@@ -3591,8 +4203,8 @@
|
|
|
3591
4203
|
"from": "templates/src/surfaces/app/index.vue",
|
|
3592
4204
|
"toSurface": "app",
|
|
3593
4205
|
"toSurfacePath": "index.vue",
|
|
3594
|
-
"reason": "Install workspace app surface starter page scaffold for
|
|
3595
|
-
"category": "
|
|
4206
|
+
"reason": "Install workspace app surface starter page scaffold for workspaces-web.",
|
|
4207
|
+
"category": "workspaces-web",
|
|
3596
4208
|
"id": "users-web-page-app-index",
|
|
3597
4209
|
"when": {
|
|
3598
4210
|
"config": "tenancyMode",
|
|
@@ -3606,8 +4218,8 @@
|
|
|
3606
4218
|
"from": "templates/src/surfaces/admin/root.vue",
|
|
3607
4219
|
"toSurface": "admin",
|
|
3608
4220
|
"toSurfaceRoot": true,
|
|
3609
|
-
"reason": "Install workspace admin surface wrapper shell for
|
|
3610
|
-
"category": "
|
|
4221
|
+
"reason": "Install workspace admin surface wrapper shell for workspaces-web.",
|
|
4222
|
+
"category": "workspaces-web",
|
|
3611
4223
|
"id": "users-web-page-admin-wrapper",
|
|
3612
4224
|
"when": {
|
|
3613
4225
|
"config": "tenancyMode",
|
|
@@ -3621,8 +4233,8 @@
|
|
|
3621
4233
|
"from": "templates/src/surfaces/admin/index.vue",
|
|
3622
4234
|
"toSurface": "admin",
|
|
3623
4235
|
"toSurfacePath": "index.vue",
|
|
3624
|
-
"reason": "Install workspace admin surface starter page scaffold for
|
|
3625
|
-
"category": "
|
|
4236
|
+
"reason": "Install workspace admin surface starter page scaffold for workspaces-web.",
|
|
4237
|
+
"category": "workspaces-web",
|
|
3626
4238
|
"id": "users-web-page-admin-index",
|
|
3627
4239
|
"when": {
|
|
3628
4240
|
"config": "tenancyMode",
|
|
@@ -3636,8 +4248,8 @@
|
|
|
3636
4248
|
"from": "templates/src/pages/admin/members/index.vue",
|
|
3637
4249
|
"toSurface": "admin",
|
|
3638
4250
|
"toSurfacePath": "members/index.vue",
|
|
3639
|
-
"reason": "Install admin members starter page scaffold for
|
|
3640
|
-
"category": "
|
|
4251
|
+
"reason": "Install admin members starter page scaffold for workspaces-web members UI.",
|
|
4252
|
+
"category": "workspaces-web",
|
|
3641
4253
|
"id": "users-web-page-admin-members",
|
|
3642
4254
|
"when": {
|
|
3643
4255
|
"config": "tenancyMode",
|
|
@@ -3651,8 +4263,8 @@
|
|
|
3651
4263
|
"from": "templates/src/pages/admin/workspace/settings/index.vue",
|
|
3652
4264
|
"toSurface": "admin",
|
|
3653
4265
|
"toSurfacePath": "workspace/settings/index.vue",
|
|
3654
|
-
"reason": "Install workspace settings page scaffold for
|
|
3655
|
-
"category": "
|
|
4266
|
+
"reason": "Install workspace settings page scaffold for workspaces-web workspace admin UI.",
|
|
4267
|
+
"category": "workspaces-web",
|
|
3656
4268
|
"id": "users-web-page-admin-workspace-settings",
|
|
3657
4269
|
"when": {
|
|
3658
4270
|
"config": "tenancyMode",
|
|
@@ -3661,35 +4273,17 @@
|
|
|
3661
4273
|
"workspaces"
|
|
3662
4274
|
]
|
|
3663
4275
|
}
|
|
3664
|
-
},
|
|
3665
|
-
{
|
|
3666
|
-
"from": "templates/src/pages/console/settings/index.vue",
|
|
3667
|
-
"toSurface": "console",
|
|
3668
|
-
"toSurfacePath": "settings/index.vue",
|
|
3669
|
-
"reason": "Install console settings page scaffold for users-web console UI.",
|
|
3670
|
-
"category": "users-web",
|
|
3671
|
-
"id": "users-web-page-console-settings"
|
|
3672
4276
|
}
|
|
3673
4277
|
],
|
|
3674
4278
|
"text": [
|
|
3675
|
-
{
|
|
3676
|
-
"op": "append-text",
|
|
3677
|
-
"file": "config/public.js",
|
|
3678
|
-
"position": "bottom",
|
|
3679
|
-
"skipIfContains": "config.surfaceDefinitions.account = {",
|
|
3680
|
-
"value": "\nconfig.surfaceDefinitions.account = {\n id: \"account\",\n label: \"Account\",\n pagesRoot: \"account\",\n enabled: true,\n requiresAuth: true,\n requiresWorkspace: false,\n origin: \"\"\n};\n",
|
|
3681
|
-
"reason": "Register account surface definition in public surface config.",
|
|
3682
|
-
"category": "users-web",
|
|
3683
|
-
"id": "users-web-surface-config-account"
|
|
3684
|
-
},
|
|
3685
4279
|
{
|
|
3686
4280
|
"op": "append-text",
|
|
3687
4281
|
"file": "src/placement.js",
|
|
3688
4282
|
"position": "bottom",
|
|
3689
4283
|
"skipIfContains": "id: \"users.workspace.selector\"",
|
|
3690
4284
|
"value": "\naddPlacement({\n id: \"users.workspace.selector\",\n host: \"shell-layout\",\n position: \"top-left\",\n surfaces: [\"*\"],\n order: 200,\n componentToken: \"users.web.workspace.selector\",\n props: {\n allowOnNonWorkspaceSurface: true,\n targetSurfaceId: \"app\"\n },\n when: ({ auth }) => {\n return Boolean(auth?.authenticated);\n }\n});\n\naddPlacement({\n id: \"users.account.invites.cue\",\n host: \"shell-layout\",\n position: \"top-right\",\n surfaces: [\"*\"],\n order: 850,\n componentToken: \"local.main.account.pending-invites.cue\",\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n\naddPlacement({\n id: \"users.workspace.tools.widget\",\n host: \"shell-layout\",\n position: \"top-right\",\n surfaces: [\"admin\"],\n order: 900,\n componentToken: \"users.web.workspace.tools.widget\"\n});\n\naddPlacement({\n id: \"users.workspace.menu.workspace-settings\",\n host: \"workspace-tools\",\n position: \"primary-menu\",\n surfaces: [\"admin\"],\n order: 100,\n componentToken: \"users.web.workspace-settings.menu-item\"\n});\n\naddPlacement({\n id: \"users.workspace.menu.members\",\n host: \"workspace-tools\",\n position: \"primary-menu\",\n surfaces: [\"admin\"],\n order: 200,\n componentToken: \"users.web.workspace-members.menu-item\"\n});\n",
|
|
3691
|
-
"reason": "Append
|
|
3692
|
-
"category": "
|
|
4285
|
+
"reason": "Append workspace placement entries into app-owned placement registry.",
|
|
4286
|
+
"category": "workspaces-web",
|
|
3693
4287
|
"id": "users-web-placement-block",
|
|
3694
4288
|
"when": {
|
|
3695
4289
|
"config": "tenancyMode",
|
|
@@ -3706,7 +4300,7 @@
|
|
|
3706
4300
|
"skipIfContains": "import AccountPendingInvitesCue from \"../components/AccountPendingInvitesCue.vue\";",
|
|
3707
4301
|
"value": "import AccountPendingInvitesCue from \"../components/AccountPendingInvitesCue.vue\";\n",
|
|
3708
4302
|
"reason": "Bind app-owned account pending invites cue component into local main client provider imports.",
|
|
3709
|
-
"category": "
|
|
4303
|
+
"category": "workspaces-web",
|
|
3710
4304
|
"id": "users-web-main-client-provider-account-invites-import"
|
|
3711
4305
|
},
|
|
3712
4306
|
{
|
|
@@ -3716,47 +4310,17 @@
|
|
|
3716
4310
|
"skipIfContains": "registerMainClientComponent(\"local.main.account.pending-invites.cue\", () => AccountPendingInvitesCue);",
|
|
3717
4311
|
"value": "\nregisterMainClientComponent(\"local.main.account.pending-invites.cue\", () => AccountPendingInvitesCue);\n",
|
|
3718
4312
|
"reason": "Bind app-owned account pending invites cue component token into local main client provider registry.",
|
|
3719
|
-
"category": "
|
|
4313
|
+
"category": "workspaces-web",
|
|
3720
4314
|
"id": "users-web-main-client-provider-account-invites-register"
|
|
3721
4315
|
},
|
|
3722
|
-
{
|
|
3723
|
-
"op": "append-text",
|
|
3724
|
-
"file": "src/placement.js",
|
|
3725
|
-
"position": "bottom",
|
|
3726
|
-
"skipIfContains": "id: \"users.profile.menu.surface-switch\"",
|
|
3727
|
-
"value": "\naddPlacement({\n id: \"users.profile.menu.surface-switch\",\n host: \"auth-profile-menu\",\n position: \"primary-menu\",\n surfaces: [\"*\"],\n order: 100,\n componentToken: \"users.web.profile.menu.surface-switch-item\",\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
3728
|
-
"reason": "Append users-web profile surface switch placement into app-owned placement registry.",
|
|
3729
|
-
"category": "users-web",
|
|
3730
|
-
"id": "users-web-profile-surface-switch-placement"
|
|
3731
|
-
},
|
|
3732
|
-
{
|
|
3733
|
-
"op": "append-text",
|
|
3734
|
-
"file": "src/placement.js",
|
|
3735
|
-
"position": "bottom",
|
|
3736
|
-
"skipIfContains": "id: \"users.profile.menu.settings\"",
|
|
3737
|
-
"value": "\naddPlacement({\n id: \"users.profile.menu.settings\",\n host: \"auth-profile-menu\",\n position: \"primary-menu\",\n surfaces: [\"*\"],\n order: 500,\n componentToken: \"users.web.shell.menu-link-item\",\n props: {\n label: \"Settings\",\n to: \"/account\"\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
3738
|
-
"reason": "Append users-web profile settings menu placement into app-owned placement registry.",
|
|
3739
|
-
"category": "users-web",
|
|
3740
|
-
"id": "users-web-profile-settings-placement"
|
|
3741
|
-
},
|
|
3742
|
-
{
|
|
3743
|
-
"op": "append-text",
|
|
3744
|
-
"file": "src/placement.js",
|
|
3745
|
-
"position": "bottom",
|
|
3746
|
-
"skipIfContains": "id: \"users.console.menu.settings\"",
|
|
3747
|
-
"value": "\naddPlacement({\n id: \"users.console.menu.settings\",\n host: \"shell-layout\",\n position: \"primary-menu\",\n surfaces: [\"console\"],\n order: 100,\n componentToken: \"users.web.shell.menu-link-item\",\n props: {\n label: \"Settings\",\n to: \"/console/settings\",\n icon: \"mdi-cog-outline\"\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
3748
|
-
"reason": "Append users-web console settings menu placement into app-owned placement registry.",
|
|
3749
|
-
"category": "users-web",
|
|
3750
|
-
"id": "users-web-console-settings-placement"
|
|
3751
|
-
},
|
|
3752
4316
|
{
|
|
3753
4317
|
"op": "append-text",
|
|
3754
4318
|
"file": "src/placement.js",
|
|
3755
4319
|
"position": "bottom",
|
|
3756
4320
|
"skipIfContains": "id: \"users.workspace.settings.form\"",
|
|
3757
|
-
"value": "\naddPlacement({\n id: \"users.workspace.settings.form\",\n host: \"
|
|
3758
|
-
"reason": "Append
|
|
3759
|
-
"category": "
|
|
4321
|
+
"value": "\naddPlacement({\n id: \"users.workspace.settings.form\",\n host: \"admin-settings\",\n position: \"forms\",\n surfaces: [\"admin\"],\n order: 100,\n componentToken: \"users.web.workspace-settings.element\"\n});\n",
|
|
4322
|
+
"reason": "Append workspace settings form placement into app-owned placement registry.",
|
|
4323
|
+
"category": "workspaces-web",
|
|
3760
4324
|
"id": "users-web-workspace-settings-form-placement",
|
|
3761
4325
|
"when": {
|
|
3762
4326
|
"config": "tenancyMode",
|