@jskit-ai/assistant 0.1.4
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 +284 -0
- package/package.json +31 -0
- package/src/client/components/AssistantClientElement.vue +1316 -0
- package/src/client/components/AssistantConsoleSettingsClientElement.vue +71 -0
- package/src/client/components/AssistantSettingsFormCard.vue +76 -0
- package/src/client/components/AssistantWorkspaceClientElement.vue +15 -0
- package/src/client/components/AssistantWorkspaceSettingsClientElement.vue +73 -0
- package/src/client/composables/useAssistantWorkspaceRuntime.js +789 -0
- package/src/client/index.js +12 -0
- package/src/client/lib/assistantApi.js +137 -0
- package/src/client/lib/assistantHttpClient.js +10 -0
- package/src/client/lib/markdownRenderer.js +31 -0
- package/src/client/providers/AssistantWebClientProvider.js +25 -0
- package/src/server/AssistantServiceProvider.js +179 -0
- package/src/server/actionIds.js +11 -0
- package/src/server/actions.js +191 -0
- package/src/server/diTokens.js +19 -0
- package/src/server/lib/aiClient.js +43 -0
- package/src/server/lib/ndjson.js +47 -0
- package/src/server/lib/providers/anthropicClient.js +375 -0
- package/src/server/lib/providers/common.js +158 -0
- package/src/server/lib/providers/deepSeekClient.js +22 -0
- package/src/server/lib/providers/openAiClient.js +13 -0
- package/src/server/lib/providers/openAiCompatibleClient.js +69 -0
- package/src/server/lib/resolveWorkspaceSlug.js +24 -0
- package/src/server/lib/serviceToolCatalog.js +459 -0
- package/src/server/registerRoutes.js +384 -0
- package/src/server/repositories/assistantSettingsRepository.js +100 -0
- package/src/server/repositories/conversationsRepository.js +244 -0
- package/src/server/repositories/messagesRepository.js +154 -0
- package/src/server/repositories/repositoryPersistenceUtils.js +63 -0
- package/src/server/services/assistantSettingsService.js +153 -0
- package/src/server/services/chatService.js +987 -0
- package/src/server/services/transcriptService.js +334 -0
- package/src/shared/assistantPaths.js +50 -0
- package/src/shared/assistantResource.js +323 -0
- package/src/shared/assistantSettingsResource.js +214 -0
- package/src/shared/index.js +39 -0
- package/src/shared/queryKeys.js +69 -0
- package/src/shared/settingsEvents.js +7 -0
- package/src/shared/streamEvents.js +31 -0
- package/src/shared/support/positiveInteger.js +9 -0
- package/templates/migrations/assistant_settings_initial.cjs +39 -0
- package/templates/migrations/assistant_transcripts_initial.cjs +51 -0
- package/templates/src/pages/admin/workspace/assistant/index.vue +7 -0
- package/test/aiConfigValidation.test.js +15 -0
- package/test/assistantApiSurfaceHeader.test.js +64 -0
- package/test/assistantResource.test.js +53 -0
- package/test/assistantSettingsResource.test.js +48 -0
- package/test/assistantSettingsService.test.js +133 -0
- package/test/chatService.test.js +841 -0
- package/test/descriptorSurfaceOption.test.js +35 -0
- package/test/queryKeys.test.js +41 -0
- package/test/resolveWorkspaceSlug.test.js +83 -0
- package/test/routeInputContracts.test.js +287 -0
- package/test/serviceToolCatalog.test.js +1235 -0
- package/test/transcriptService.test.js +175 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import test from "node:test";
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
import { createService } from "../src/server/services/assistantSettingsService.js";
|
|
4
|
+
|
|
5
|
+
function createFixture() {
|
|
6
|
+
const calls = {
|
|
7
|
+
requireConsoleOwner: 0,
|
|
8
|
+
ensureConsoleSettings: 0,
|
|
9
|
+
updateConsoleSettings: [],
|
|
10
|
+
ensureWorkspaceSettings: [],
|
|
11
|
+
updateWorkspaceSettings: []
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const service = createService({
|
|
15
|
+
consoleService: {
|
|
16
|
+
async requireConsoleOwner() {
|
|
17
|
+
calls.requireConsoleOwner += 1;
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
assistantSettingsRepository: {
|
|
21
|
+
async ensureConsoleSettings() {
|
|
22
|
+
calls.ensureConsoleSettings += 1;
|
|
23
|
+
return {
|
|
24
|
+
workspaceSurfacePrompt: "Workspace prompt"
|
|
25
|
+
};
|
|
26
|
+
},
|
|
27
|
+
async updateConsoleSettings(patch = {}) {
|
|
28
|
+
calls.updateConsoleSettings.push({
|
|
29
|
+
...patch
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
workspaceSurfacePrompt: String(patch.workspaceSurfacePrompt || "")
|
|
33
|
+
};
|
|
34
|
+
},
|
|
35
|
+
async ensureWorkspaceSettings(workspaceId) {
|
|
36
|
+
calls.ensureWorkspaceSettings.push(workspaceId);
|
|
37
|
+
return {
|
|
38
|
+
workspaceId: 7,
|
|
39
|
+
appSurfacePrompt: "App prompt"
|
|
40
|
+
};
|
|
41
|
+
},
|
|
42
|
+
async updateWorkspaceSettings(workspaceId, patch = {}) {
|
|
43
|
+
calls.updateWorkspaceSettings.push({
|
|
44
|
+
workspaceId,
|
|
45
|
+
patch: {
|
|
46
|
+
...patch
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
return {
|
|
50
|
+
workspaceId: 7,
|
|
51
|
+
appSurfacePrompt: String(patch.appSurfacePrompt || "")
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
return {
|
|
58
|
+
service,
|
|
59
|
+
calls
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
test("assistantSettingsService enforces console owner on console settings reads", async () => {
|
|
64
|
+
const { service, calls } = createFixture();
|
|
65
|
+
|
|
66
|
+
const result = await service.getConsoleSettings({
|
|
67
|
+
context: {
|
|
68
|
+
actor: {
|
|
69
|
+
id: 9
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
assert.equal(calls.requireConsoleOwner, 1);
|
|
75
|
+
assert.equal(calls.ensureConsoleSettings, 1);
|
|
76
|
+
assert.deepEqual(result, {
|
|
77
|
+
settings: {
|
|
78
|
+
workspaceSurfacePrompt: "Workspace prompt"
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
test("assistantSettingsService resolves prompts by surface", async () => {
|
|
84
|
+
const { service, calls } = createFixture();
|
|
85
|
+
const workspace = {
|
|
86
|
+
id: 7
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
const appPrompt = await service.resolveSystemPrompt(workspace, {
|
|
90
|
+
surface: "app"
|
|
91
|
+
});
|
|
92
|
+
const adminPrompt = await service.resolveSystemPrompt(workspace, {
|
|
93
|
+
surface: "admin"
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
assert.equal(appPrompt, "App prompt");
|
|
97
|
+
assert.equal(adminPrompt, "Workspace prompt");
|
|
98
|
+
assert.deepEqual(calls.ensureWorkspaceSettings, [7]);
|
|
99
|
+
assert.equal(calls.ensureConsoleSettings, 1);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
test("assistantSettingsService patch updates are no-ops when prompt keys are omitted", async () => {
|
|
103
|
+
const { service, calls } = createFixture();
|
|
104
|
+
const workspace = {
|
|
105
|
+
id: 7
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
const consoleResult = await service.updateConsoleSettings(
|
|
109
|
+
{},
|
|
110
|
+
{
|
|
111
|
+
context: {
|
|
112
|
+
actor: {
|
|
113
|
+
id: 9
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
);
|
|
118
|
+
const workspaceResult = await service.updateWorkspaceSettings(workspace, {});
|
|
119
|
+
|
|
120
|
+
assert.equal(calls.requireConsoleOwner, 1);
|
|
121
|
+
assert.deepEqual(calls.updateConsoleSettings, []);
|
|
122
|
+
assert.deepEqual(calls.updateWorkspaceSettings, []);
|
|
123
|
+
assert.deepEqual(consoleResult, {
|
|
124
|
+
settings: {
|
|
125
|
+
workspaceSurfacePrompt: "Workspace prompt"
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
assert.deepEqual(workspaceResult, {
|
|
129
|
+
settings: {
|
|
130
|
+
appSurfacePrompt: "App prompt"
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
});
|