@jskit-ai/assistant 0.1.31 → 0.1.34
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/package.descriptor.mjs +346 -142
- package/package.json +3 -19
- package/src/server/buildTemplateContext.js +107 -0
- package/templates/migrations/assistant_config_initial.cjs +25 -0
- package/templates/migrations/assistant_transcripts_initial.cjs +21 -14
- package/templates/src/local-package/client/components/AssistantSettingsClientElement.vue +88 -0
- package/templates/src/local-package/client/components/AssistantSurfaceClientElement.vue +10 -0
- package/{src/client/composables/useAssistantWorkspaceRuntime.js → templates/src/local-package/client/composables/useAssistantRuntime.js} +91 -114
- package/templates/src/local-package/client/index.js +3 -0
- package/templates/src/local-package/client/providers/AssistantClientProvider.js +16 -0
- package/templates/src/local-package/package.descriptor.mjs +85 -0
- package/templates/src/local-package/package.json +11 -0
- package/{src/server/AssistantServiceProvider.js → templates/src/local-package/server/AssistantProvider.js} +37 -61
- package/templates/src/local-package/server/actionIds.js +9 -0
- package/templates/src/local-package/server/actions.js +190 -0
- package/templates/src/local-package/server/registerRoutes.js +296 -0
- package/templates/src/local-package/server/repositories/assistantConfigRepository.js +141 -0
- package/{src → templates/src/local-package}/server/repositories/conversationsRepository.js +44 -45
- package/{src → templates/src/local-package}/server/repositories/messagesRepository.js +49 -34
- package/templates/src/local-package/server/services/assistantConfigService.js +90 -0
- package/{src → templates/src/local-package}/server/services/chatService.js +45 -37
- package/{src → templates/src/local-package}/server/services/transcriptService.js +61 -82
- package/templates/src/local-package/shared/assistantRuntimeConfig.js +13 -0
- package/templates/src/local-package/shared/index.js +1 -0
- package/templates/src/pages/assistant/index.vue +7 -0
- package/test/buildTemplateContext.test.js +112 -0
- package/test/packageDescriptor.test.js +69 -0
- package/src/client/components/AssistantClientElement.vue +0 -1316
- package/src/client/components/AssistantConsoleSettingsClientElement.vue +0 -70
- package/src/client/components/AssistantSettingsFormCard.vue +0 -76
- package/src/client/components/AssistantWorkspaceClientElement.vue +0 -15
- package/src/client/components/AssistantWorkspaceSettingsClientElement.vue +0 -72
- package/src/client/index.js +0 -10
- package/src/client/lib/assistantApi.js +0 -137
- package/src/client/lib/assistantHttpClient.js +0 -10
- package/src/client/lib/markdownRenderer.js +0 -31
- package/src/client/providers/AssistantWebClientProvider.js +0 -20
- package/src/server/actionIds.js +0 -11
- package/src/server/actions.js +0 -191
- package/src/server/lib/aiClient.js +0 -43
- package/src/server/lib/ndjson.js +0 -47
- package/src/server/lib/providers/anthropicClient.js +0 -375
- package/src/server/lib/providers/common.js +0 -150
- package/src/server/lib/providers/deepSeekClient.js +0 -22
- package/src/server/lib/providers/openAiClient.js +0 -13
- package/src/server/lib/providers/openAiCompatibleClient.js +0 -69
- package/src/server/lib/resolveWorkspaceSlug.js +0 -24
- package/src/server/lib/serviceToolCatalog.js +0 -459
- package/src/server/registerRoutes.js +0 -383
- package/src/server/repositories/assistantSettingsRepository.js +0 -100
- package/src/server/repositories/repositoryPersistenceUtils.js +0 -48
- package/src/server/services/assistantSettingsService.js +0 -149
- package/src/shared/assistantPaths.js +0 -50
- package/src/shared/assistantResource.js +0 -317
- package/src/shared/assistantSettingsResource.js +0 -197
- package/src/shared/index.js +0 -43
- package/src/shared/queryKeys.js +0 -69
- package/src/shared/settingsEvents.js +0 -6
- package/src/shared/streamEvents.js +0 -29
- package/src/shared/support/conversationStatus.js +0 -18
- package/src/shared/support/jsonObject.js +0 -18
- package/src/shared/support/positiveInteger.js +0 -9
- package/templates/migrations/assistant_settings_initial.cjs +0 -37
- package/templates/src/pages/admin/workspace/assistant/index.vue +0 -7
- package/test/aiConfigValidation.test.js +0 -15
- package/test/assistantApiSurfaceHeader.test.js +0 -64
- package/test/assistantResource.test.js +0 -53
- package/test/assistantSettingsResource.test.js +0 -48
- package/test/assistantSettingsService.test.js +0 -133
- package/test/chatService.test.js +0 -841
- package/test/descriptorSurfaceOption.test.js +0 -35
- package/test/queryKeys.test.js +0 -41
- package/test/resolveWorkspaceSlug.test.js +0 -83
- package/test/routeInputContracts.test.js +0 -286
- package/test/serviceToolCatalog.test.js +0 -1235
- package/test/transcriptService.test.js +0 -175
package/package.descriptor.mjs
CHANGED
|
@@ -1,10 +1,52 @@
|
|
|
1
1
|
export default Object.freeze({
|
|
2
2
|
packageVersion: 1,
|
|
3
3
|
packageId: "@jskit-ai/assistant",
|
|
4
|
-
version: "0.1.
|
|
5
|
-
kind: "
|
|
6
|
-
description: "
|
|
4
|
+
version: "0.1.34",
|
|
5
|
+
kind: "generator",
|
|
6
|
+
description: "Generate an app-local assistant runtime and settings integration from explicit surface choices.",
|
|
7
7
|
options: {
|
|
8
|
+
"runtime-surface": {
|
|
9
|
+
required: true,
|
|
10
|
+
inputType: "text",
|
|
11
|
+
defaultValue: "",
|
|
12
|
+
promptLabel: "Runtime surface",
|
|
13
|
+
promptHint: "Enabled surface id where the assistant page will run."
|
|
14
|
+
},
|
|
15
|
+
"settings-surface": {
|
|
16
|
+
required: true,
|
|
17
|
+
inputType: "text",
|
|
18
|
+
defaultValue: "",
|
|
19
|
+
promptLabel: "Settings surface",
|
|
20
|
+
promptHint: "Enabled surface id whose settings outlet will host the assistant settings form."
|
|
21
|
+
},
|
|
22
|
+
"config-scope": {
|
|
23
|
+
required: true,
|
|
24
|
+
inputType: "text",
|
|
25
|
+
defaultValue: "global",
|
|
26
|
+
promptLabel: "Config scope",
|
|
27
|
+
promptHint: "global | workspace. Workspace scope requires both selected surfaces to requireWorkspace=true."
|
|
28
|
+
},
|
|
29
|
+
placement: {
|
|
30
|
+
required: false,
|
|
31
|
+
inputType: "text",
|
|
32
|
+
defaultValue: "",
|
|
33
|
+
promptLabel: "Menu placement",
|
|
34
|
+
promptHint: "Optional host:position target for the assistant page menu entry."
|
|
35
|
+
},
|
|
36
|
+
"placement-component-token": {
|
|
37
|
+
required: false,
|
|
38
|
+
inputType: "text",
|
|
39
|
+
defaultValue: "users.web.shell.surface-aware-menu-link-item",
|
|
40
|
+
promptLabel: "Placement component token",
|
|
41
|
+
promptHint: "Menu placement component token for the assistant page entry."
|
|
42
|
+
},
|
|
43
|
+
"menu-label": {
|
|
44
|
+
required: false,
|
|
45
|
+
inputType: "text",
|
|
46
|
+
defaultValue: "Assistant",
|
|
47
|
+
promptLabel: "Menu label",
|
|
48
|
+
promptHint: "Menu label for the assistant page entry."
|
|
49
|
+
},
|
|
8
50
|
"ai-provider": {
|
|
9
51
|
required: true,
|
|
10
52
|
defaultValue: "openai",
|
|
@@ -30,99 +72,119 @@ export default Object.freeze({
|
|
|
30
72
|
defaultValue: "120000",
|
|
31
73
|
promptLabel: "AI timeout (ms)",
|
|
32
74
|
promptHint: "Abort AI requests after this many milliseconds."
|
|
33
|
-
},
|
|
34
|
-
surfaces: {
|
|
35
|
-
required: true,
|
|
36
|
-
inputType: "text",
|
|
37
|
-
defaultValue: "admin",
|
|
38
|
-
promptLabel: "Target workspace surfaces",
|
|
39
|
-
promptHint: "Comma-separated workspace surface ids for assistant page + menu placement (for example: admin,app)."
|
|
40
75
|
}
|
|
41
76
|
},
|
|
42
|
-
dependsOn: [
|
|
43
|
-
"@jskit-ai/auth-core",
|
|
44
|
-
"@jskit-ai/database-runtime",
|
|
45
|
-
"@jskit-ai/http-runtime",
|
|
46
|
-
"@jskit-ai/realtime",
|
|
47
|
-
"@jskit-ai/users-core",
|
|
48
|
-
"@jskit-ai/users-web"
|
|
49
|
-
],
|
|
77
|
+
dependsOn: [],
|
|
50
78
|
capabilities: {
|
|
51
|
-
provides: ["assistant"],
|
|
52
|
-
requires: [
|
|
53
|
-
"runtime.actions",
|
|
54
|
-
"runtime.database",
|
|
55
|
-
"auth.policy",
|
|
56
|
-
"users.core",
|
|
57
|
-
"users.web",
|
|
58
|
-
"runtime.realtime.client"
|
|
59
|
-
]
|
|
79
|
+
provides: ["assistant-generator"],
|
|
80
|
+
requires: []
|
|
60
81
|
},
|
|
61
82
|
runtime: {
|
|
62
83
|
server: {
|
|
63
|
-
providers: [
|
|
64
|
-
{
|
|
65
|
-
entrypoint: "src/server/AssistantServiceProvider.js",
|
|
66
|
-
export: "AssistantServiceProvider"
|
|
67
|
-
}
|
|
68
|
-
]
|
|
84
|
+
providers: []
|
|
69
85
|
},
|
|
70
86
|
client: {
|
|
71
|
-
providers: [
|
|
72
|
-
{
|
|
73
|
-
entrypoint: "src/client/providers/AssistantWebClientProvider.js",
|
|
74
|
-
export: "AssistantWebClientProvider"
|
|
75
|
-
}
|
|
76
|
-
]
|
|
87
|
+
providers: []
|
|
77
88
|
}
|
|
78
89
|
},
|
|
79
90
|
metadata: {
|
|
91
|
+
generatorPrimarySubcommand: "install",
|
|
92
|
+
generatorSubcommands: {
|
|
93
|
+
install: {
|
|
94
|
+
description: "Generate and install an app-local assistant runtime from explicit surface choices.",
|
|
95
|
+
examples: [
|
|
96
|
+
{
|
|
97
|
+
label: "App runtime, console settings, global config",
|
|
98
|
+
lines: [
|
|
99
|
+
"npx jskit generate @jskit-ai/assistant install \\",
|
|
100
|
+
" --runtime-surface app \\",
|
|
101
|
+
" --settings-surface console \\",
|
|
102
|
+
" --config-scope global \\",
|
|
103
|
+
" --placement shell-layout:primary-menu \\",
|
|
104
|
+
" --menu-label Assistant \\",
|
|
105
|
+
" --ai-provider openai \\",
|
|
106
|
+
" --ai-api-key \"$OPENAI_API_KEY\" \\",
|
|
107
|
+
" --ai-base-url \"\" \\",
|
|
108
|
+
" --ai-timeout-ms 120000 \\",
|
|
109
|
+
" --run-npm-install"
|
|
110
|
+
]
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
label: "App runtime, app settings, global config",
|
|
114
|
+
lines: [
|
|
115
|
+
"npx jskit generate @jskit-ai/assistant install \\",
|
|
116
|
+
" --runtime-surface app \\",
|
|
117
|
+
" --settings-surface app \\",
|
|
118
|
+
" --config-scope global \\",
|
|
119
|
+
" --placement shell-layout:primary-menu \\",
|
|
120
|
+
" --menu-label Assistant \\",
|
|
121
|
+
" --ai-provider openai \\",
|
|
122
|
+
" --ai-api-key \"$OPENAI_API_KEY\" \\",
|
|
123
|
+
" --ai-base-url \"\" \\",
|
|
124
|
+
" --ai-timeout-ms 120000 \\",
|
|
125
|
+
" --run-npm-install"
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
label: "Workspace runtime, console settings, global config",
|
|
130
|
+
lines: [
|
|
131
|
+
"npx jskit generate @jskit-ai/assistant install \\",
|
|
132
|
+
" --runtime-surface admin \\",
|
|
133
|
+
" --settings-surface console \\",
|
|
134
|
+
" --config-scope global \\",
|
|
135
|
+
" --placement shell-layout:primary-menu \\",
|
|
136
|
+
" --menu-label Assistant \\",
|
|
137
|
+
" --ai-provider openai \\",
|
|
138
|
+
" --ai-api-key \"$OPENAI_API_KEY\" \\",
|
|
139
|
+
" --ai-base-url \"\" \\",
|
|
140
|
+
" --ai-timeout-ms 120000 \\",
|
|
141
|
+
" --run-npm-install"
|
|
142
|
+
]
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
label: "Workspace runtime, workspace settings, workspace config",
|
|
146
|
+
lines: [
|
|
147
|
+
"npx jskit generate @jskit-ai/assistant install \\",
|
|
148
|
+
" --runtime-surface admin \\",
|
|
149
|
+
" --settings-surface admin \\",
|
|
150
|
+
" --config-scope workspace \\",
|
|
151
|
+
" --placement shell-layout:primary-menu \\",
|
|
152
|
+
" --menu-label Assistant \\",
|
|
153
|
+
" --ai-provider openai \\",
|
|
154
|
+
" --ai-api-key \"$OPENAI_API_KEY\" \\",
|
|
155
|
+
" --ai-base-url \"\" \\",
|
|
156
|
+
" --ai-timeout-ms 120000 \\",
|
|
157
|
+
" --run-npm-install"
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
},
|
|
80
163
|
apiSummary: {
|
|
81
164
|
surfaces: [
|
|
82
165
|
{
|
|
83
|
-
subpath: "./server/
|
|
84
|
-
summary: "
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
subpath: "./client",
|
|
88
|
-
summary: "Exports assistant workspace element and composables."
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
subpath: "./shared",
|
|
92
|
-
summary: "Exports assistant API paths, query keys, stream events, and resource validators."
|
|
166
|
+
subpath: "./server/buildTemplateContext",
|
|
167
|
+
summary: "Builds deterministic assistant generator template context values from app surface metadata."
|
|
93
168
|
}
|
|
94
169
|
],
|
|
95
170
|
containerTokens: {
|
|
96
|
-
server: [
|
|
97
|
-
|
|
98
|
-
"assistant.conversation.repository",
|
|
99
|
-
"assistant.message.repository",
|
|
100
|
-
"assistant.service.tool-catalog",
|
|
101
|
-
"assistant.settings.repository"
|
|
102
|
-
],
|
|
103
|
-
client: [
|
|
104
|
-
"assistant.web.console-settings.element",
|
|
105
|
-
"assistant.web.workspace-settings.element"
|
|
106
|
-
]
|
|
171
|
+
server: [],
|
|
172
|
+
client: []
|
|
107
173
|
}
|
|
108
174
|
}
|
|
109
175
|
},
|
|
110
176
|
mutations: {
|
|
111
177
|
dependencies: {
|
|
112
178
|
runtime: {
|
|
113
|
-
"@
|
|
114
|
-
"@jskit-ai/
|
|
115
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
116
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
117
|
-
"@jskit-ai/kernel": "0.1.
|
|
118
|
-
"@jskit-ai/
|
|
119
|
-
"@jskit-ai/users-core": "0.1.
|
|
120
|
-
"@jskit-ai/users-web": "0.1.
|
|
179
|
+
"@local/assistant": "file:packages/assistant",
|
|
180
|
+
"@jskit-ai/assistant-core": "0.1.1",
|
|
181
|
+
"@jskit-ai/database-runtime": "0.1.25",
|
|
182
|
+
"@jskit-ai/http-runtime": "0.1.24",
|
|
183
|
+
"@jskit-ai/kernel": "0.1.25",
|
|
184
|
+
"@jskit-ai/shell-web": "0.1.24",
|
|
185
|
+
"@jskit-ai/users-core": "0.1.35",
|
|
186
|
+
"@jskit-ai/users-web": "0.1.40",
|
|
121
187
|
"@tanstack/vue-query": "^5.90.5",
|
|
122
|
-
"dompurify": "^3.3.3",
|
|
123
|
-
"marked": "^17.0.4",
|
|
124
|
-
"openai": "^6.22.0",
|
|
125
|
-
"typebox": "^1.0.81",
|
|
126
188
|
"vuetify": "^4.0.0"
|
|
127
189
|
},
|
|
128
190
|
dev: {}
|
|
@@ -134,111 +196,253 @@ export default Object.freeze({
|
|
|
134
196
|
files: [
|
|
135
197
|
{
|
|
136
198
|
op: "install-migration",
|
|
137
|
-
from: "templates/migrations/
|
|
199
|
+
from: "templates/migrations/assistant_config_initial.cjs",
|
|
138
200
|
toDir: "migrations",
|
|
139
201
|
extension: ".cjs",
|
|
140
|
-
reason: "Install assistant
|
|
202
|
+
reason: "Install assistant configuration schema migration.",
|
|
141
203
|
category: "assistant",
|
|
142
|
-
id: "assistant-
|
|
204
|
+
id: "assistant-config-initial-schema",
|
|
205
|
+
templateContext: {
|
|
206
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
207
|
+
export: "buildTemplateContext"
|
|
208
|
+
}
|
|
143
209
|
},
|
|
144
210
|
{
|
|
145
211
|
op: "install-migration",
|
|
146
|
-
from: "templates/migrations/
|
|
212
|
+
from: "templates/migrations/assistant_transcripts_initial.cjs",
|
|
147
213
|
toDir: "migrations",
|
|
148
214
|
extension: ".cjs",
|
|
149
|
-
reason: "Install assistant
|
|
215
|
+
reason: "Install assistant transcript schema migration.",
|
|
150
216
|
category: "assistant",
|
|
151
|
-
id: "assistant-
|
|
217
|
+
id: "assistant-transcripts-initial-schema",
|
|
218
|
+
templateContext: {
|
|
219
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
220
|
+
export: "buildTemplateContext"
|
|
221
|
+
}
|
|
152
222
|
},
|
|
153
223
|
{
|
|
154
|
-
from: "templates/src/
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
reason: "Install assistant workspace page scaffold.",
|
|
224
|
+
from: "templates/src/local-package/package.json",
|
|
225
|
+
to: "packages/assistant/package.json",
|
|
226
|
+
reason: "Install app-local assistant package manifest.",
|
|
158
227
|
category: "assistant",
|
|
159
|
-
id: "assistant-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
228
|
+
id: "assistant-local-package-json"
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
from: "templates/src/local-package/package.descriptor.mjs",
|
|
232
|
+
to: "packages/assistant/package.descriptor.mjs",
|
|
233
|
+
reason: "Install app-local assistant package descriptor.",
|
|
234
|
+
category: "assistant",
|
|
235
|
+
id: "assistant-local-package-descriptor"
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
from: "templates/src/local-package/shared/assistantRuntimeConfig.js",
|
|
239
|
+
to: "packages/assistant/src/shared/assistantRuntimeConfig.js",
|
|
240
|
+
reason: "Install generated assistant runtime configuration.",
|
|
241
|
+
category: "assistant",
|
|
242
|
+
id: "assistant-local-runtime-config",
|
|
243
|
+
templateContext: {
|
|
244
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
245
|
+
export: "buildTemplateContext"
|
|
163
246
|
}
|
|
164
|
-
}
|
|
165
|
-
],
|
|
166
|
-
text: [
|
|
247
|
+
},
|
|
167
248
|
{
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
skipIfContains: "id: \"assistant.workspace.menu\"",
|
|
172
|
-
value:
|
|
173
|
-
"\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",
|
|
174
|
-
reason: "Append assistant menu placement into app-owned placement registry.",
|
|
249
|
+
from: "templates/src/local-package/shared/index.js",
|
|
250
|
+
to: "packages/assistant/src/shared/index.js",
|
|
251
|
+
reason: "Install generated assistant shared exports.",
|
|
175
252
|
category: "assistant",
|
|
176
|
-
id: "assistant-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
253
|
+
id: "assistant-local-shared-index"
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
from: "templates/src/local-package/client/index.js",
|
|
257
|
+
to: "packages/assistant/src/client/index.js",
|
|
258
|
+
reason: "Install generated assistant client exports.",
|
|
259
|
+
category: "assistant",
|
|
260
|
+
id: "assistant-local-client-index"
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
from: "templates/src/local-package/client/components/AssistantSurfaceClientElement.vue",
|
|
264
|
+
to: "packages/assistant/src/client/components/AssistantSurfaceClientElement.vue",
|
|
265
|
+
reason: "Install generated assistant surface page component.",
|
|
266
|
+
category: "assistant",
|
|
267
|
+
id: "assistant-local-surface-client-element",
|
|
268
|
+
templateContext: {
|
|
269
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
270
|
+
export: "buildTemplateContext"
|
|
180
271
|
}
|
|
181
272
|
},
|
|
182
273
|
{
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
skipIfContains: "id: \"assistant.workspace.settings.form\"",
|
|
187
|
-
value:
|
|
188
|
-
"\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",
|
|
189
|
-
reason: "Append assistant workspace settings form into app-owned settings placements.",
|
|
274
|
+
from: "templates/src/local-package/client/components/AssistantSettingsClientElement.vue",
|
|
275
|
+
to: "packages/assistant/src/client/components/AssistantSettingsClientElement.vue",
|
|
276
|
+
reason: "Install generated assistant settings form component.",
|
|
190
277
|
category: "assistant",
|
|
191
|
-
id: "assistant-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
278
|
+
id: "assistant-local-settings-client-element",
|
|
279
|
+
templateContext: {
|
|
280
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
281
|
+
export: "buildTemplateContext"
|
|
195
282
|
}
|
|
196
283
|
},
|
|
197
284
|
{
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
skipIfContains: "id: \"assistant.console.settings.form\"",
|
|
202
|
-
value:
|
|
203
|
-
"\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",
|
|
204
|
-
reason: "Append assistant console settings form into app-owned settings placements.",
|
|
285
|
+
from: "templates/src/local-package/client/composables/useAssistantRuntime.js",
|
|
286
|
+
to: "packages/assistant/src/client/composables/useAssistantRuntime.js",
|
|
287
|
+
reason: "Install generated assistant runtime composable.",
|
|
205
288
|
category: "assistant",
|
|
206
|
-
id: "assistant-
|
|
289
|
+
id: "assistant-local-runtime-composable",
|
|
290
|
+
templateContext: {
|
|
291
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
292
|
+
export: "buildTemplateContext"
|
|
293
|
+
}
|
|
207
294
|
},
|
|
208
295
|
{
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
skipIfContains: "import { Type } from \"typebox\";",
|
|
213
|
-
value: "import { Type } from \"typebox\";\n",
|
|
214
|
-
reason: "Ensure app-owned console settings field registry has TypeBox import for assistant fields.",
|
|
296
|
+
from: "templates/src/local-package/client/providers/AssistantClientProvider.js",
|
|
297
|
+
to: "packages/assistant/src/client/providers/AssistantClientProvider.js",
|
|
298
|
+
reason: "Install generated assistant client provider.",
|
|
215
299
|
category: "assistant",
|
|
216
|
-
id: "assistant-
|
|
300
|
+
id: "assistant-local-client-provider"
|
|
217
301
|
},
|
|
302
|
+
{
|
|
303
|
+
from: "templates/src/local-package/server/AssistantProvider.js",
|
|
304
|
+
to: "packages/assistant/src/server/AssistantProvider.js",
|
|
305
|
+
reason: "Install generated assistant server provider.",
|
|
306
|
+
category: "assistant",
|
|
307
|
+
id: "assistant-local-server-provider",
|
|
308
|
+
templateContext: {
|
|
309
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
310
|
+
export: "buildTemplateContext"
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
from: "templates/src/local-package/server/actionIds.js",
|
|
315
|
+
to: "packages/assistant/src/server/actionIds.js",
|
|
316
|
+
reason: "Install generated assistant action identifiers.",
|
|
317
|
+
category: "assistant",
|
|
318
|
+
id: "assistant-local-action-ids"
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
from: "templates/src/local-package/server/actions.js",
|
|
322
|
+
to: "packages/assistant/src/server/actions.js",
|
|
323
|
+
reason: "Install generated assistant action definitions.",
|
|
324
|
+
category: "assistant",
|
|
325
|
+
id: "assistant-local-actions",
|
|
326
|
+
templateContext: {
|
|
327
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
328
|
+
export: "buildTemplateContext"
|
|
329
|
+
}
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
from: "templates/src/local-package/server/registerRoutes.js",
|
|
333
|
+
to: "packages/assistant/src/server/registerRoutes.js",
|
|
334
|
+
reason: "Install generated assistant route registration.",
|
|
335
|
+
category: "assistant",
|
|
336
|
+
id: "assistant-local-register-routes",
|
|
337
|
+
templateContext: {
|
|
338
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
339
|
+
export: "buildTemplateContext"
|
|
340
|
+
}
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
from: "templates/src/local-package/server/repositories/assistantConfigRepository.js",
|
|
344
|
+
to: "packages/assistant/src/server/repositories/assistantConfigRepository.js",
|
|
345
|
+
reason: "Install generated assistant config repository.",
|
|
346
|
+
category: "assistant",
|
|
347
|
+
id: "assistant-local-config-repository",
|
|
348
|
+
templateContext: {
|
|
349
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
350
|
+
export: "buildTemplateContext"
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
from: "templates/src/local-package/server/repositories/conversationsRepository.js",
|
|
355
|
+
to: "packages/assistant/src/server/repositories/conversationsRepository.js",
|
|
356
|
+
reason: "Install generated assistant conversations repository.",
|
|
357
|
+
category: "assistant",
|
|
358
|
+
id: "assistant-local-conversations-repository",
|
|
359
|
+
templateContext: {
|
|
360
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
361
|
+
export: "buildTemplateContext"
|
|
362
|
+
}
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
from: "templates/src/local-package/server/repositories/messagesRepository.js",
|
|
366
|
+
to: "packages/assistant/src/server/repositories/messagesRepository.js",
|
|
367
|
+
reason: "Install generated assistant messages repository.",
|
|
368
|
+
category: "assistant",
|
|
369
|
+
id: "assistant-local-messages-repository",
|
|
370
|
+
templateContext: {
|
|
371
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
372
|
+
export: "buildTemplateContext"
|
|
373
|
+
}
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
from: "templates/src/local-package/server/services/assistantConfigService.js",
|
|
377
|
+
to: "packages/assistant/src/server/services/assistantConfigService.js",
|
|
378
|
+
reason: "Install generated assistant config service.",
|
|
379
|
+
category: "assistant",
|
|
380
|
+
id: "assistant-local-config-service",
|
|
381
|
+
templateContext: {
|
|
382
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
383
|
+
export: "buildTemplateContext"
|
|
384
|
+
}
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
from: "templates/src/local-package/server/services/chatService.js",
|
|
388
|
+
to: "packages/assistant/src/server/services/chatService.js",
|
|
389
|
+
reason: "Install generated assistant chat service.",
|
|
390
|
+
category: "assistant",
|
|
391
|
+
id: "assistant-local-chat-service",
|
|
392
|
+
templateContext: {
|
|
393
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
394
|
+
export: "buildTemplateContext"
|
|
395
|
+
}
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
from: "templates/src/local-package/server/services/transcriptService.js",
|
|
399
|
+
to: "packages/assistant/src/server/services/transcriptService.js",
|
|
400
|
+
reason: "Install generated assistant transcript service.",
|
|
401
|
+
category: "assistant",
|
|
402
|
+
id: "assistant-local-transcript-service",
|
|
403
|
+
templateContext: {
|
|
404
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
405
|
+
export: "buildTemplateContext"
|
|
406
|
+
}
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
from: "templates/src/pages/assistant/index.vue",
|
|
410
|
+
toSurface: "${option:runtime-surface|lower}",
|
|
411
|
+
toSurfacePath: "assistant/index.vue",
|
|
412
|
+
reason: "Install generated assistant runtime page.",
|
|
413
|
+
category: "assistant",
|
|
414
|
+
id: "assistant-page-runtime"
|
|
415
|
+
}
|
|
416
|
+
],
|
|
417
|
+
text: [
|
|
218
418
|
{
|
|
219
419
|
op: "append-text",
|
|
220
|
-
file: "
|
|
420
|
+
file: "src/placement.js",
|
|
221
421
|
position: "bottom",
|
|
222
|
-
skipIfContains: "
|
|
422
|
+
skipIfContains: "id: \"assistant.generated.menu\"",
|
|
223
423
|
value:
|
|
224
|
-
"\
|
|
225
|
-
reason: "Append assistant
|
|
424
|
+
"\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",
|
|
425
|
+
reason: "Append generated assistant runtime menu placement into app-owned placement registry.",
|
|
226
426
|
category: "assistant",
|
|
227
|
-
id: "assistant-
|
|
427
|
+
id: "assistant-placement-menu",
|
|
428
|
+
templateContext: {
|
|
429
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
430
|
+
export: "buildTemplateContext"
|
|
431
|
+
}
|
|
228
432
|
},
|
|
229
433
|
{
|
|
230
434
|
op: "append-text",
|
|
231
|
-
file: "
|
|
435
|
+
file: "src/placement.js",
|
|
232
436
|
position: "bottom",
|
|
233
|
-
skipIfContains: "
|
|
437
|
+
skipIfContains: "id: \"assistant.generated.settings.form\"",
|
|
234
438
|
value:
|
|
235
|
-
"\
|
|
236
|
-
reason: "Append assistant
|
|
439
|
+
"\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",
|
|
440
|
+
reason: "Append generated assistant settings form placement into app-owned settings placements.",
|
|
237
441
|
category: "assistant",
|
|
238
|
-
id: "assistant-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
442
|
+
id: "assistant-settings-form-placement",
|
|
443
|
+
templateContext: {
|
|
444
|
+
entrypoint: "src/server/buildTemplateContext.js",
|
|
445
|
+
export: "buildTemplateContext"
|
|
242
446
|
}
|
|
243
447
|
},
|
|
244
448
|
{
|
|
@@ -255,7 +459,7 @@ export default Object.freeze({
|
|
|
255
459
|
op: "upsert-env",
|
|
256
460
|
key: "AI_API_KEY",
|
|
257
461
|
value: "${option:ai-api-key}",
|
|
258
|
-
reason: "Configure assistant
|
|
462
|
+
reason: "Configure assistant AI API key.",
|
|
259
463
|
category: "runtime-config",
|
|
260
464
|
id: "assistant-ai-api-key"
|
|
261
465
|
},
|
|
@@ -264,7 +468,7 @@ export default Object.freeze({
|
|
|
264
468
|
op: "upsert-env",
|
|
265
469
|
key: "AI_BASE_URL",
|
|
266
470
|
value: "${option:ai-base-url}",
|
|
267
|
-
reason: "Configure
|
|
471
|
+
reason: "Configure assistant AI base URL override.",
|
|
268
472
|
category: "runtime-config",
|
|
269
473
|
id: "assistant-ai-base-url"
|
|
270
474
|
},
|
|
@@ -273,7 +477,7 @@ export default Object.freeze({
|
|
|
273
477
|
op: "upsert-env",
|
|
274
478
|
key: "AI_TIMEOUT_MS",
|
|
275
479
|
value: "${option:ai-timeout-ms}",
|
|
276
|
-
reason: "Configure assistant
|
|
480
|
+
reason: "Configure assistant AI timeout in milliseconds.",
|
|
277
481
|
category: "runtime-config",
|
|
278
482
|
id: "assistant-ai-timeout-ms"
|
|
279
483
|
}
|
package/package.json
CHANGED
|
@@ -1,30 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jskit-ai/assistant",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.34",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "node --test"
|
|
7
7
|
},
|
|
8
8
|
"exports": {
|
|
9
|
-
"./
|
|
10
|
-
"./server/AssistantServiceProvider": "./src/server/AssistantServiceProvider.js",
|
|
11
|
-
"./server/actionIds": "./src/server/actionIds.js",
|
|
12
|
-
"./shared": "./src/shared/index.js"
|
|
9
|
+
"./server/buildTemplateContext": "./src/server/buildTemplateContext.js"
|
|
13
10
|
},
|
|
14
11
|
"dependencies": {
|
|
15
|
-
"@jskit-ai/
|
|
16
|
-
"@jskit-ai/database-runtime": "0.1.23",
|
|
17
|
-
"@jskit-ai/http-runtime": "0.1.22",
|
|
18
|
-
"@jskit-ai/kernel": "0.1.23",
|
|
19
|
-
"@jskit-ai/realtime": "0.1.22",
|
|
20
|
-
"@jskit-ai/shell-web": "0.1.22",
|
|
21
|
-
"@jskit-ai/users-core": "0.1.32",
|
|
22
|
-
"@jskit-ai/users-web": "0.1.37",
|
|
23
|
-
"@tanstack/vue-query": "^5.90.5",
|
|
24
|
-
"dompurify": "^3.3.3",
|
|
25
|
-
"marked": "^17.0.4",
|
|
26
|
-
"openai": "^6.22.0",
|
|
27
|
-
"typebox": "^1.0.81",
|
|
28
|
-
"vuetify": "^4.0.0"
|
|
12
|
+
"@jskit-ai/kernel": "0.1.25"
|
|
29
13
|
}
|
|
30
14
|
}
|