@jskit-ai/assistant-core 0.1.34 → 0.1.36
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
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export default Object.freeze({
|
|
2
2
|
packageVersion: 1,
|
|
3
3
|
packageId: "@jskit-ai/assistant-core",
|
|
4
|
-
version: "0.1.
|
|
4
|
+
version: "0.1.36",
|
|
5
5
|
kind: "runtime",
|
|
6
6
|
description: "Reusable assistant client/server/shared primitives without surface-specific routes or settings ownership.",
|
|
7
7
|
dependsOn: [
|
|
@@ -47,11 +47,11 @@ export default Object.freeze({
|
|
|
47
47
|
mutations: {
|
|
48
48
|
dependencies: {
|
|
49
49
|
runtime: {
|
|
50
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
51
|
-
"@jskit-ai/kernel": "0.1.
|
|
52
|
-
"@jskit-ai/resource-core": "0.1.
|
|
53
|
-
"@jskit-ai/resource-crud-core": "0.1.
|
|
54
|
-
"@jskit-ai/users-core": "0.1.
|
|
50
|
+
"@jskit-ai/http-runtime": "0.1.59",
|
|
51
|
+
"@jskit-ai/kernel": "0.1.60",
|
|
52
|
+
"@jskit-ai/resource-core": "0.1.5",
|
|
53
|
+
"@jskit-ai/resource-crud-core": "0.1.5",
|
|
54
|
+
"@jskit-ai/users-core": "0.1.70",
|
|
55
55
|
"@tanstack/vue-query": "^5.90.5",
|
|
56
56
|
"dompurify": "^3.3.3",
|
|
57
57
|
"json-rest-schema": "1.x.x",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jskit-ai/assistant-core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.36",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "node --test"
|
|
@@ -11,12 +11,12 @@
|
|
|
11
11
|
"./shared": "./src/shared/index.js"
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
15
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
16
|
-
"@jskit-ai/kernel": "0.1.
|
|
17
|
-
"@jskit-ai/resource-crud-core": "0.1.
|
|
18
|
-
"@jskit-ai/resource-core": "0.1.
|
|
19
|
-
"@jskit-ai/users-core": "0.1.
|
|
14
|
+
"@jskit-ai/database-runtime": "0.1.60",
|
|
15
|
+
"@jskit-ai/http-runtime": "0.1.59",
|
|
16
|
+
"@jskit-ai/kernel": "0.1.60",
|
|
17
|
+
"@jskit-ai/resource-crud-core": "0.1.5",
|
|
18
|
+
"@jskit-ai/resource-core": "0.1.5",
|
|
19
|
+
"@jskit-ai/users-core": "0.1.70",
|
|
20
20
|
"@tanstack/vue-query": "^5.90.5",
|
|
21
21
|
"dompurify": "^3.3.3",
|
|
22
22
|
"json-rest-schema": "1.x.x",
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { appendQueryString } from "@jskit-ai/kernel/shared/support";
|
|
2
2
|
import {
|
|
3
|
+
ASSISTANT_CONVERSATIONS_TRANSPORT,
|
|
4
|
+
ASSISTANT_CONVERSATION_MESSAGES_TRANSPORT,
|
|
5
|
+
ASSISTANT_SETTINGS_TRANSPORT,
|
|
6
|
+
ASSISTANT_SETTINGS_UPDATE_TRANSPORT,
|
|
3
7
|
ASSISTANT_STREAM_EVENT_TYPES,
|
|
4
8
|
normalizeAssistantStreamEventType
|
|
5
9
|
} from "../../shared/index.js";
|
|
@@ -114,7 +118,10 @@ function createAssistantApi({ request, requestStream, resolveBasePath, resolveSu
|
|
|
114
118
|
|
|
115
119
|
return request(
|
|
116
120
|
appendQueryString(`${basePath}/conversations`, params.toString()),
|
|
117
|
-
|
|
121
|
+
{
|
|
122
|
+
...(requestHeaders ? { headers: requestHeaders } : {}),
|
|
123
|
+
transport: ASSISTANT_CONVERSATIONS_TRANSPORT
|
|
124
|
+
}
|
|
118
125
|
);
|
|
119
126
|
},
|
|
120
127
|
|
|
@@ -128,7 +135,10 @@ function createAssistantApi({ request, requestStream, resolveBasePath, resolveSu
|
|
|
128
135
|
|
|
129
136
|
return request(
|
|
130
137
|
appendQueryString(`${basePath}/conversations/${encodedConversationId}/messages`, params.toString()),
|
|
131
|
-
|
|
138
|
+
{
|
|
139
|
+
...(requestHeaders ? { headers: requestHeaders } : {}),
|
|
140
|
+
transport: ASSISTANT_CONVERSATION_MESSAGES_TRANSPORT
|
|
141
|
+
}
|
|
132
142
|
);
|
|
133
143
|
},
|
|
134
144
|
|
|
@@ -138,7 +148,10 @@ function createAssistantApi({ request, requestStream, resolveBasePath, resolveSu
|
|
|
138
148
|
|
|
139
149
|
return request(
|
|
140
150
|
`${basePath}/settings`,
|
|
141
|
-
|
|
151
|
+
{
|
|
152
|
+
...(requestHeaders ? { headers: requestHeaders } : {}),
|
|
153
|
+
transport: ASSISTANT_SETTINGS_TRANSPORT
|
|
154
|
+
}
|
|
142
155
|
);
|
|
143
156
|
},
|
|
144
157
|
|
|
@@ -151,7 +164,8 @@ function createAssistantApi({ request, requestStream, resolveBasePath, resolveSu
|
|
|
151
164
|
{
|
|
152
165
|
method: "PATCH",
|
|
153
166
|
...(requestHeaders ? { headers: requestHeaders } : {}),
|
|
154
|
-
body: payload
|
|
167
|
+
body: payload,
|
|
168
|
+
transport: ASSISTANT_SETTINGS_UPDATE_TRANSPORT
|
|
155
169
|
}
|
|
156
170
|
);
|
|
157
171
|
}
|
|
@@ -279,6 +279,8 @@ const conversationMessagesListOutputSchema = createSchema({
|
|
|
279
279
|
}
|
|
280
280
|
});
|
|
281
281
|
|
|
282
|
+
const assistantConversationOutputValidator = createSchemaDefinition(conversationRecordSchema, "replace");
|
|
283
|
+
|
|
282
284
|
const assistantResource = defineResource({
|
|
283
285
|
namespace: "assistant",
|
|
284
286
|
operations: {
|
|
@@ -303,5 +305,6 @@ const assistantResource = defineResource({
|
|
|
303
305
|
export {
|
|
304
306
|
MAX_INPUT_CHARS,
|
|
305
307
|
MAX_HISTORY_MESSAGES,
|
|
306
|
-
assistantResource
|
|
308
|
+
assistantResource,
|
|
309
|
+
assistantConversationOutputValidator
|
|
307
310
|
};
|
package/src/shared/index.js
CHANGED
|
@@ -28,7 +28,8 @@ export {
|
|
|
28
28
|
export {
|
|
29
29
|
MAX_INPUT_CHARS,
|
|
30
30
|
MAX_HISTORY_MESSAGES,
|
|
31
|
-
assistantResource
|
|
31
|
+
assistantResource,
|
|
32
|
+
assistantConversationOutputValidator
|
|
32
33
|
} from "./assistantResource.js";
|
|
33
34
|
|
|
34
35
|
export {
|
|
@@ -36,6 +37,13 @@ export {
|
|
|
36
37
|
assistantConfigResource
|
|
37
38
|
} from "./assistantSettingsResource.js";
|
|
38
39
|
|
|
40
|
+
export {
|
|
41
|
+
ASSISTANT_SETTINGS_TRANSPORT,
|
|
42
|
+
ASSISTANT_SETTINGS_UPDATE_TRANSPORT,
|
|
43
|
+
ASSISTANT_CONVERSATIONS_TRANSPORT,
|
|
44
|
+
ASSISTANT_CONVERSATION_MESSAGES_TRANSPORT
|
|
45
|
+
} from "./jsonApiTransports.js";
|
|
46
|
+
|
|
39
47
|
export { assistantSettingsEvents } from "./settingsEvents.js";
|
|
40
48
|
|
|
41
49
|
export {
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { deepFreeze } from "@jskit-ai/kernel/shared/support/deepFreeze";
|
|
2
|
+
|
|
3
|
+
const ASSISTANT_SETTINGS_TRANSPORT = deepFreeze({
|
|
4
|
+
kind: "jsonapi-resource",
|
|
5
|
+
responseType: "assistant-settings",
|
|
6
|
+
responseKind: "record"
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
const ASSISTANT_SETTINGS_UPDATE_TRANSPORT = deepFreeze({
|
|
10
|
+
...ASSISTANT_SETTINGS_TRANSPORT,
|
|
11
|
+
requestType: "assistant-settings"
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
const ASSISTANT_CONVERSATIONS_TRANSPORT = deepFreeze({
|
|
15
|
+
kind: "jsonapi-resource",
|
|
16
|
+
responseType: "assistant-conversations",
|
|
17
|
+
responseKind: "collection"
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
const ASSISTANT_CONVERSATION_MESSAGES_TRANSPORT = deepFreeze({
|
|
21
|
+
kind: "jsonapi-resource",
|
|
22
|
+
responseType: "assistant-conversation-messages",
|
|
23
|
+
responseKind: "record"
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
export {
|
|
27
|
+
ASSISTANT_SETTINGS_TRANSPORT,
|
|
28
|
+
ASSISTANT_SETTINGS_UPDATE_TRANSPORT,
|
|
29
|
+
ASSISTANT_CONVERSATIONS_TRANSPORT,
|
|
30
|
+
ASSISTANT_CONVERSATION_MESSAGES_TRANSPORT
|
|
31
|
+
};
|
|
@@ -1,19 +1,31 @@
|
|
|
1
1
|
import test from "node:test";
|
|
2
2
|
import assert from "node:assert/strict";
|
|
3
3
|
import { createAssistantApi } from "../src/client/lib/assistantApi.js";
|
|
4
|
+
import {
|
|
5
|
+
ASSISTANT_CONVERSATIONS_TRANSPORT,
|
|
6
|
+
ASSISTANT_CONVERSATION_MESSAGES_TRANSPORT,
|
|
7
|
+
ASSISTANT_SETTINGS_TRANSPORT,
|
|
8
|
+
ASSISTANT_SETTINGS_UPDATE_TRANSPORT
|
|
9
|
+
} from "../src/shared/index.js";
|
|
4
10
|
|
|
5
11
|
test("assistant api forwards normalized surface header on requests", async () => {
|
|
6
12
|
const observed = {
|
|
7
13
|
stream: null,
|
|
8
14
|
list: null,
|
|
9
|
-
messages: null
|
|
15
|
+
messages: null,
|
|
16
|
+
settingsRead: null,
|
|
17
|
+
settingsUpdate: null
|
|
10
18
|
};
|
|
11
19
|
|
|
12
20
|
const api = createAssistantApi({
|
|
13
21
|
resolveBasePath: () => "/api/assistant",
|
|
14
22
|
resolveSurfaceId: () => "AdMiN",
|
|
15
23
|
async request(url, options = {}) {
|
|
16
|
-
if (url.
|
|
24
|
+
if (url.endsWith("/settings") && options?.method === "PATCH") {
|
|
25
|
+
observed.settingsUpdate = { url, options };
|
|
26
|
+
} else if (url.endsWith("/settings")) {
|
|
27
|
+
observed.settingsRead = { url, options };
|
|
28
|
+
} else if (url.includes("/messages")) {
|
|
17
29
|
observed.messages = { url, options };
|
|
18
30
|
} else {
|
|
19
31
|
observed.list = { url, options };
|
|
@@ -37,10 +49,20 @@ test("assistant api forwards normalized surface header on requests", async () =>
|
|
|
37
49
|
page: 1,
|
|
38
50
|
pageSize: 5
|
|
39
51
|
});
|
|
52
|
+
await api.getSettings();
|
|
53
|
+
await api.updateSettings({
|
|
54
|
+
systemPrompt: "Be concise."
|
|
55
|
+
});
|
|
40
56
|
|
|
41
57
|
assert.equal(observed.stream?.options?.headers?.["x-jskit-surface"], "admin");
|
|
42
58
|
assert.equal(observed.list?.options?.headers?.["x-jskit-surface"], "admin");
|
|
43
59
|
assert.equal(observed.messages?.options?.headers?.["x-jskit-surface"], "admin");
|
|
60
|
+
assert.equal(observed.settingsRead?.options?.headers?.["x-jskit-surface"], "admin");
|
|
61
|
+
assert.equal(observed.settingsUpdate?.options?.headers?.["x-jskit-surface"], "admin");
|
|
62
|
+
assert.deepEqual(observed.list?.options?.transport, ASSISTANT_CONVERSATIONS_TRANSPORT);
|
|
63
|
+
assert.deepEqual(observed.messages?.options?.transport, ASSISTANT_CONVERSATION_MESSAGES_TRANSPORT);
|
|
64
|
+
assert.deepEqual(observed.settingsRead?.options?.transport, ASSISTANT_SETTINGS_TRANSPORT);
|
|
65
|
+
assert.deepEqual(observed.settingsUpdate?.options?.transport, ASSISTANT_SETTINGS_UPDATE_TRANSPORT);
|
|
44
66
|
});
|
|
45
67
|
|
|
46
68
|
test("assistant api omits surface header when surface id is empty", async () => {
|