@undefineds.co/models 0.2.19 → 0.2.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +178 -522
- package/dist/agent.repository.js +2 -2
- package/dist/agent.schema.d.ts +20 -3
- package/dist/agent.schema.js +3 -1
- package/dist/ai-config/index.d.ts +24 -0
- package/dist/ai-config/index.js +133 -23
- package/dist/ai-model.schema.d.ts +13 -3
- package/dist/ai-model.schema.js +6 -4
- package/dist/ai-provider.schema.d.ts +13 -3
- package/dist/ai-provider.schema.js +7 -3
- package/dist/ai-runtime.schema.d.ts +84 -0
- package/dist/ai-runtime.schema.js +64 -0
- package/dist/approval.schema.d.ts +1 -0
- package/dist/approval.schema.js +11 -0
- package/dist/audit.schema.d.ts +1 -0
- package/dist/audit.schema.js +11 -0
- package/dist/chat.repository.js +2 -2
- package/dist/chat.schema.d.ts +1 -1
- package/dist/chat.schema.js +1 -1
- package/dist/contact.repository.js +2 -2
- package/dist/contact.schema.d.ts +26 -4
- package/dist/contact.schema.js +4 -2
- package/dist/credential.schema.d.ts +111 -3
- package/dist/credential.schema.js +15 -2
- package/dist/favorite/favorite.schema.d.ts +18 -4
- package/dist/favorite/favorite.schema.js +4 -2
- package/dist/favorite/index.d.ts +1 -1
- package/dist/favorite/index.js +1 -1
- package/dist/favorite/starred-sync.d.ts +2 -2
- package/dist/favorite/starred-sync.js +4 -4
- package/dist/file/file.schema.d.ts +26 -5
- package/dist/file/file.schema.js +5 -3
- package/dist/file/index.d.ts +1 -1
- package/dist/file/index.js +1 -1
- package/dist/grant.schema.d.ts +1 -0
- package/dist/grant.schema.js +3 -0
- package/dist/inbox-notification.schema.d.ts +10 -3
- package/dist/inbox-notification.schema.js +3 -1
- package/dist/index.d.ts +17 -17
- package/dist/index.js +17 -21
- package/dist/message.repository.js +2 -2
- package/dist/message.schema.js +8 -8
- package/dist/namespaces.d.ts +0 -3
- package/dist/namespaces.js +33 -7
- package/dist/profile.d.ts +2 -1
- package/dist/profile.js +6 -3
- package/dist/profile.repository.js +3 -3
- package/dist/profile.schema.d.ts +16 -3
- package/dist/profile.schema.js +3 -1
- package/dist/repository.d.ts +6 -1
- package/dist/repository.js +6 -1
- package/dist/schema.d.ts +102 -10
- package/dist/schema.js +31 -21
- package/dist/session/index.d.ts +1 -1
- package/dist/session/index.js +1 -1
- package/dist/session/session.schema.d.ts +7 -2
- package/dist/session/session.schema.js +32 -4
- package/dist/session.repository.d.ts +4 -0
- package/dist/session.repository.js +2 -2
- package/dist/settings/index.d.ts +1 -1
- package/dist/settings/index.js +1 -1
- package/dist/settings/settings.schema.d.ts +17 -5
- package/dist/settings/settings.schema.js +4 -2
- package/dist/thread.repository.js +2 -2
- package/dist/thread.schema.js +2 -2
- package/dist/vocab/message.vocab.js +8 -8
- package/dist/vocab/thread.vocab.js +2 -2
- package/package.json +15 -8
- package/dist/watch/index.d.ts +0 -281
- package/dist/watch/index.js +0 -1493
package/dist/agent.repository.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { definePodRepository } from './repository.js';
|
|
2
|
-
import {
|
|
2
|
+
import { agentResource } from './agent.schema.js';
|
|
3
3
|
export const agentRepository = definePodRepository({
|
|
4
4
|
namespace: 'agent',
|
|
5
|
-
table:
|
|
5
|
+
table: agentResource,
|
|
6
6
|
searchableFields: ['name', 'description', 'instructions'],
|
|
7
7
|
});
|
package/dist/agent.schema.d.ts
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
export declare const agentResource: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
2
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
3
|
+
name: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, false>;
|
|
4
|
+
description: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
5
|
+
avatarUrl: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
6
|
+
instructions: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
7
|
+
provider: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
8
|
+
model: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
9
|
+
temperature: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"integer", null, false, true>;
|
|
10
|
+
tools: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"array", "string", false, false>;
|
|
11
|
+
contextRound: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"integer", null, false, true>;
|
|
12
|
+
ttsModel: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
13
|
+
videoModel: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
14
|
+
createdAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, true, true>;
|
|
15
|
+
updatedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, true, true>;
|
|
16
|
+
deletedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
17
|
+
}>>;
|
|
1
18
|
export declare const agentTable: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
2
19
|
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
3
20
|
name: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, true, false>;
|
|
@@ -15,6 +32,6 @@ export declare const agentTable: import("@undefineds.co/drizzle-solid/dist/core/
|
|
|
15
32
|
updatedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, true, true>;
|
|
16
33
|
deletedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
17
34
|
}>>;
|
|
18
|
-
export type AgentRow = typeof
|
|
19
|
-
export type AgentInsert = typeof
|
|
20
|
-
export type AgentUpdate = typeof
|
|
35
|
+
export type AgentRow = typeof agentResource.$inferSelect;
|
|
36
|
+
export type AgentInsert = typeof agentResource.$inferInsert;
|
|
37
|
+
export type AgentUpdate = typeof agentResource.$inferUpdate;
|
package/dist/agent.schema.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { podTable, string, integer, timestamp, text, real, uri, id } from "@undefineds.co/drizzle-solid";
|
|
2
2
|
import { UDFS, DCTerms, FOAF, VCARD } from "./namespaces.js";
|
|
3
|
-
export const
|
|
3
|
+
export const agentResource = podTable("agent", {
|
|
4
4
|
id: id("id"),
|
|
5
5
|
name: string("name").predicate(FOAF.name).notNull(),
|
|
6
6
|
description: text("description").predicate(DCTerms.description),
|
|
@@ -23,3 +23,5 @@ export const agentTable = podTable("agent", {
|
|
|
23
23
|
namespace: UDFS,
|
|
24
24
|
subjectTemplate: '{id}.ttl',
|
|
25
25
|
});
|
|
26
|
+
// Compatibility alias. New model code should prefer `agentResource`.
|
|
27
|
+
export const agentTable = agentResource;
|
|
@@ -20,6 +20,9 @@ export interface AIConfigProviderState {
|
|
|
20
20
|
enabled: boolean;
|
|
21
21
|
apiKey?: string;
|
|
22
22
|
baseUrl?: string;
|
|
23
|
+
credentialId?: string;
|
|
24
|
+
credentialLabel?: string;
|
|
25
|
+
credentialIsDefault?: boolean;
|
|
23
26
|
models: AIConfigModel[];
|
|
24
27
|
selectedModelId?: string;
|
|
25
28
|
}
|
|
@@ -36,6 +39,16 @@ export interface BuildAIConfigProviderStateMapOptions {
|
|
|
36
39
|
modelRows: Array<Partial<AIModelRow> & Record<string, unknown>>;
|
|
37
40
|
fallbackToCatalogModels?: boolean;
|
|
38
41
|
}
|
|
42
|
+
export interface AIConfigCredentialSelection {
|
|
43
|
+
providerId: string;
|
|
44
|
+
credential: Partial<CredentialRow> & Record<string, unknown>;
|
|
45
|
+
credentialId?: string;
|
|
46
|
+
credentialLabel?: string;
|
|
47
|
+
apiKey: string;
|
|
48
|
+
baseUrl?: string;
|
|
49
|
+
proxyUrl?: string;
|
|
50
|
+
isDefault: boolean;
|
|
51
|
+
}
|
|
39
52
|
export interface AIConfigMutationPlan {
|
|
40
53
|
providerId: string;
|
|
41
54
|
providerPayload?: AIProviderInsert;
|
|
@@ -43,6 +56,10 @@ export interface AIConfigMutationPlan {
|
|
|
43
56
|
modelUpserts: AIModelInsert[];
|
|
44
57
|
modelDeleteIds: string[];
|
|
45
58
|
}
|
|
59
|
+
export interface AIConfigDisconnectPlan {
|
|
60
|
+
providerId: string;
|
|
61
|
+
credentialDeleteIds: string[];
|
|
62
|
+
}
|
|
46
63
|
export declare const UNDEFINEDS_AI_PROVIDER_ID = "undefineds";
|
|
47
64
|
export declare const UNDEFINEDS_AI_PROVIDER_DISPLAY_NAME = "undefineds";
|
|
48
65
|
export declare const UNDEFINEDS_AI_BASE_URL = "https://api.undefineds.co/v1";
|
|
@@ -61,6 +78,9 @@ export declare function getAIConfigDefaultBaseUrl(providerId: string): string |
|
|
|
61
78
|
export declare function getDefaultAIConfigCredentialId(providerId: string): string;
|
|
62
79
|
export declare function aiConfigProviderRef(providerId: string): string;
|
|
63
80
|
export declare function aiConfigModelRef(providerId: string, modelId?: string): string;
|
|
81
|
+
export declare function selectAIConfigCredential(providerId: string, credentialRows: Array<Partial<CredentialRow> & Record<string, unknown>>, providerRows?: Array<Partial<AIProviderRow> & Record<string, unknown>>): AIConfigCredentialSelection | undefined;
|
|
82
|
+
export declare function aiConfigProviderUri(providerId: string): string;
|
|
83
|
+
export declare function aiConfigModelUri(modelId: string, providerId?: string): string;
|
|
64
84
|
export declare function buildAIConfigProviderStateMap(options: BuildAIConfigProviderStateMapOptions): Record<string, AIConfigProviderState>;
|
|
65
85
|
export declare function buildAIConfigMutationPlan(input: {
|
|
66
86
|
providerId: string;
|
|
@@ -69,3 +89,7 @@ export declare function buildAIConfigMutationPlan(input: {
|
|
|
69
89
|
currentModelRows: Array<Partial<AIModelRow> & Record<string, unknown>>;
|
|
70
90
|
updates: AIConfigUpdate;
|
|
71
91
|
}): AIConfigMutationPlan;
|
|
92
|
+
export declare function buildAIConfigDisconnectPlan(input: {
|
|
93
|
+
providerId: string;
|
|
94
|
+
currentCredentialRows: Array<Partial<CredentialRow> & Record<string, unknown>>;
|
|
95
|
+
}): AIConfigDisconnectPlan;
|
package/dist/ai-config/index.js
CHANGED
|
@@ -106,6 +106,26 @@ function preferredSelectedModelId(models) {
|
|
|
106
106
|
function existingDate(value) {
|
|
107
107
|
return value instanceof Date ? value : undefined;
|
|
108
108
|
}
|
|
109
|
+
function normalizeOptionalText(value) {
|
|
110
|
+
return typeof value === 'string' && value.trim() ? value.trim() : undefined;
|
|
111
|
+
}
|
|
112
|
+
function normalizeOptionalBoolean(value) {
|
|
113
|
+
return value === true || value === 'true' || value === 1 || value === '1';
|
|
114
|
+
}
|
|
115
|
+
function normalizeOptionalTimestamp(value) {
|
|
116
|
+
if (value instanceof Date)
|
|
117
|
+
return value.getTime();
|
|
118
|
+
if (typeof value === 'string' && value.trim()) {
|
|
119
|
+
const parsed = Date.parse(value);
|
|
120
|
+
return Number.isFinite(parsed) ? parsed : 0;
|
|
121
|
+
}
|
|
122
|
+
if (typeof value === 'number' && Number.isFinite(value))
|
|
123
|
+
return value;
|
|
124
|
+
return 0;
|
|
125
|
+
}
|
|
126
|
+
function normalizeOptionalInteger(value) {
|
|
127
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : 0;
|
|
128
|
+
}
|
|
109
129
|
export function getAIConfigProviderCatalog() {
|
|
110
130
|
return AI_CONFIG_PROVIDER_CATALOG;
|
|
111
131
|
}
|
|
@@ -128,12 +148,15 @@ export function normalizeAIConfigResourceId(raw) {
|
|
|
128
148
|
return value;
|
|
129
149
|
}
|
|
130
150
|
const clean = value.replace(/\/$/, '');
|
|
131
|
-
if (!ABSOLUTE_IRI.test(value)) {
|
|
132
|
-
return clean.endsWith('.ttl') ? clean.slice(0, -4) : clean;
|
|
133
|
-
}
|
|
134
151
|
const tail = clean.split('/').pop() || clean;
|
|
135
152
|
return tail.endsWith('.ttl') ? tail.slice(0, -4) : tail;
|
|
136
153
|
}
|
|
154
|
+
function aiConfigResourceRefToProviderId(raw) {
|
|
155
|
+
return normalizeAIConfigProviderId(raw);
|
|
156
|
+
}
|
|
157
|
+
function aiConfigResourceRefToModelId(raw, providerId) {
|
|
158
|
+
return normalizeAIConfigModelId(raw, providerId);
|
|
159
|
+
}
|
|
137
160
|
export function normalizeAIConfigModelId(raw, providerId) {
|
|
138
161
|
const modelId = normalizeAIConfigResourceId(raw);
|
|
139
162
|
if (!modelId.includes('/'))
|
|
@@ -158,8 +181,17 @@ export function normalizeAIConfigProviderId(raw) {
|
|
|
158
181
|
}
|
|
159
182
|
return normalized;
|
|
160
183
|
}
|
|
184
|
+
function aiConfigProviderRowId(row) {
|
|
185
|
+
return aiConfigResourceRefToProviderId(String(row.id ?? row['@id'] ?? ''));
|
|
186
|
+
}
|
|
187
|
+
function aiConfigCredentialProviderId(row) {
|
|
188
|
+
return aiConfigResourceRefToProviderId(String(row.provider ?? row.id ?? ''));
|
|
189
|
+
}
|
|
190
|
+
function aiConfigModelProviderId(row) {
|
|
191
|
+
return aiConfigResourceRefToProviderId(String(row.isProvidedBy ?? ''));
|
|
192
|
+
}
|
|
161
193
|
function normalizeAIConfigModelStorageId(raw, providerId) {
|
|
162
|
-
return
|
|
194
|
+
return aiConfigResourceRefToModelId(raw, providerId);
|
|
163
195
|
}
|
|
164
196
|
export function sameAIConfigProviderFamily(left, right) {
|
|
165
197
|
const normalizedLeft = normalizeAIConfigProviderId(left);
|
|
@@ -177,7 +209,8 @@ export function getDefaultAIConfigCredentialId(providerId) {
|
|
|
177
209
|
return `${normalizeAIConfigProviderId(providerId)}-default`;
|
|
178
210
|
}
|
|
179
211
|
export function aiConfigProviderRef(providerId) {
|
|
180
|
-
|
|
212
|
+
const provider = normalizeAIConfigProviderId(providerId);
|
|
213
|
+
return provider ? `/settings/providers/${provider}.ttl` : provider;
|
|
181
214
|
}
|
|
182
215
|
export function aiConfigModelRef(providerId, modelId) {
|
|
183
216
|
if (modelId === undefined) {
|
|
@@ -185,7 +218,61 @@ export function aiConfigModelRef(providerId, modelId) {
|
|
|
185
218
|
}
|
|
186
219
|
const provider = normalizeAIConfigProviderId(providerId);
|
|
187
220
|
const model = normalizeAIConfigModelStorageId(modelId, provider);
|
|
188
|
-
return provider && model ? `/settings/
|
|
221
|
+
return provider && model ? `/settings/providers/${provider}.ttl#${model}` : model;
|
|
222
|
+
}
|
|
223
|
+
export function selectAIConfigCredential(providerId, credentialRows, providerRows = []) {
|
|
224
|
+
const provider = normalizeAIConfigProviderId(providerId);
|
|
225
|
+
if (!provider)
|
|
226
|
+
return undefined;
|
|
227
|
+
const candidates = credentialRows.filter((row) => {
|
|
228
|
+
const rowProvider = normalizeOptionalText(row.provider) ?? normalizeOptionalText(row.id);
|
|
229
|
+
return sameAIConfigProviderFamily(rowProvider, provider)
|
|
230
|
+
&& (normalizeOptionalText(row.service)?.toLowerCase() ?? 'ai') === 'ai'
|
|
231
|
+
&& (normalizeOptionalText(row.status)?.toLowerCase() ?? 'active') === 'active'
|
|
232
|
+
&& Boolean(normalizeOptionalText(row.apiKey));
|
|
233
|
+
});
|
|
234
|
+
if (candidates.length === 0)
|
|
235
|
+
return undefined;
|
|
236
|
+
const sortByRotation = (left, right) => {
|
|
237
|
+
const leftLastUsed = normalizeOptionalTimestamp(left.lastUsedAt);
|
|
238
|
+
const rightLastUsed = normalizeOptionalTimestamp(right.lastUsedAt);
|
|
239
|
+
if (leftLastUsed !== rightLastUsed)
|
|
240
|
+
return leftLastUsed - rightLastUsed;
|
|
241
|
+
const leftFailCount = normalizeOptionalInteger(left.failCount);
|
|
242
|
+
const rightFailCount = normalizeOptionalInteger(right.failCount);
|
|
243
|
+
if (leftFailCount !== rightFailCount)
|
|
244
|
+
return leftFailCount - rightFailCount;
|
|
245
|
+
return normalizeAIConfigResourceId(String(left.id ?? left['@id'] ?? ''))
|
|
246
|
+
.localeCompare(normalizeAIConfigResourceId(String(right.id ?? right['@id'] ?? '')));
|
|
247
|
+
};
|
|
248
|
+
const defaults = candidates.filter((row) => normalizeOptionalBoolean(row.isDefault));
|
|
249
|
+
const credential = [...(defaults.length > 0 ? defaults : candidates)].sort(sortByRotation)[0];
|
|
250
|
+
const providerRow = providerRows.find((row) => sameAIConfigProviderFamily(aiConfigProviderRowId(row), provider));
|
|
251
|
+
const apiKey = normalizeOptionalText(credential.apiKey);
|
|
252
|
+
if (!apiKey)
|
|
253
|
+
return undefined;
|
|
254
|
+
return {
|
|
255
|
+
providerId: provider,
|
|
256
|
+
credential,
|
|
257
|
+
credentialId: normalizeAIConfigResourceId(normalizeOptionalText(credential.id) ?? normalizeOptionalText(credential['@id'])),
|
|
258
|
+
credentialLabel: normalizeOptionalText(credential.label),
|
|
259
|
+
apiKey,
|
|
260
|
+
baseUrl: normalizeOptionalText(credential.baseUrl)
|
|
261
|
+
?? normalizeOptionalText(providerRow?.baseUrl)
|
|
262
|
+
?? getAIConfigDefaultBaseUrl(provider),
|
|
263
|
+
proxyUrl: normalizeOptionalText(credential.proxyUrl) ?? normalizeOptionalText(providerRow?.proxyUrl),
|
|
264
|
+
isDefault: normalizeOptionalBoolean(credential.isDefault),
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
// Compatibility aliases for older app/CLI call sites. New code should prefer
|
|
268
|
+
// `aiConfigProviderRef` / `aiConfigModelRef`, which match current resource schemas.
|
|
269
|
+
export function aiConfigProviderUri(providerId) {
|
|
270
|
+
return aiConfigProviderRef(providerId);
|
|
271
|
+
}
|
|
272
|
+
export function aiConfigModelUri(modelId, providerId) {
|
|
273
|
+
return providerId
|
|
274
|
+
? aiConfigModelRef(providerId, modelId)
|
|
275
|
+
: normalizeAIConfigResourceId(modelId);
|
|
189
276
|
}
|
|
190
277
|
export function buildAIConfigProviderStateMap(options) {
|
|
191
278
|
const catalog = options.catalog ?? AI_CONFIG_PROVIDER_CATALOG;
|
|
@@ -194,23 +281,22 @@ export function buildAIConfigProviderStateMap(options) {
|
|
|
194
281
|
const knownIds = collectKnownProviderIds(catalog);
|
|
195
282
|
const providerMap = new Map();
|
|
196
283
|
for (const row of options.providerRows) {
|
|
197
|
-
const providerId =
|
|
284
|
+
const providerId = aiConfigProviderRowId(row);
|
|
198
285
|
if (!providerId)
|
|
199
286
|
continue;
|
|
200
287
|
const previous = providerMap.get(providerId) ?? {};
|
|
201
288
|
providerMap.set(providerId, { ...previous, ...row });
|
|
202
289
|
}
|
|
203
|
-
const
|
|
290
|
+
const credentialProviderIds = new Set();
|
|
204
291
|
for (const row of options.credentialRows) {
|
|
205
|
-
const providerId =
|
|
292
|
+
const providerId = aiConfigCredentialProviderId(row);
|
|
206
293
|
if (!providerId)
|
|
207
294
|
continue;
|
|
208
|
-
|
|
209
|
-
credentialMap.set(providerId, { ...previous, ...row });
|
|
295
|
+
credentialProviderIds.add(providerId);
|
|
210
296
|
}
|
|
211
297
|
const modelMap = new Map();
|
|
212
298
|
for (const row of options.modelRows) {
|
|
213
|
-
const providerId =
|
|
299
|
+
const providerId = aiConfigModelProviderId(row);
|
|
214
300
|
if (!providerId)
|
|
215
301
|
continue;
|
|
216
302
|
const modelId = normalizeAIConfigModelStorageId(String(row.id ?? row['@id'] ?? ''), providerId);
|
|
@@ -231,17 +317,17 @@ export function buildAIConfigProviderStateMap(options) {
|
|
|
231
317
|
providerIds.add(entry.id);
|
|
232
318
|
for (const providerId of providerMap.keys())
|
|
233
319
|
providerIds.add(providerId);
|
|
234
|
-
for (const providerId of
|
|
320
|
+
for (const providerId of credentialProviderIds)
|
|
235
321
|
providerIds.add(providerId);
|
|
236
322
|
for (const providerId of modelMap.keys())
|
|
237
323
|
providerIds.add(providerId);
|
|
238
324
|
for (const providerId of providerIds) {
|
|
239
|
-
if (!knownIds.has(providerId) && !providerMap.has(providerId) && !
|
|
325
|
+
if (!knownIds.has(providerId) && !providerMap.has(providerId) && !credentialProviderIds.has(providerId) && !modelMap.has(providerId)) {
|
|
240
326
|
continue;
|
|
241
327
|
}
|
|
242
328
|
const metadata = resolveCatalogEntry(providerId, catalog) ?? getAIConfigProviderMetadata(providerId);
|
|
243
329
|
const providerRow = providerMap.get(providerId);
|
|
244
|
-
const
|
|
330
|
+
const credentialSelection = selectAIConfigCredential(providerId, options.credentialRows, options.providerRows);
|
|
245
331
|
const persistedModels = modelMap.get(providerId) ?? [];
|
|
246
332
|
const models = persistedModels.length > 0 || !fallbackToCatalogModels
|
|
247
333
|
? persistedModels
|
|
@@ -254,11 +340,12 @@ export function buildAIConfigProviderStateMap(options) {
|
|
|
254
340
|
const selectedModelId = normalizeAIConfigModelStorageId(typeof providerRow?.hasModel === 'string' ? providerRow.hasModel : '', providerId) || preferredSelectedModelId(models);
|
|
255
341
|
states[providerId] = {
|
|
256
342
|
id: providerId,
|
|
257
|
-
enabled: (
|
|
258
|
-
apiKey:
|
|
259
|
-
baseUrl: (typeof
|
|
260
|
-
|
|
261
|
-
|
|
343
|
+
enabled: Boolean(credentialSelection),
|
|
344
|
+
apiKey: credentialSelection?.apiKey,
|
|
345
|
+
baseUrl: credentialSelection?.baseUrl || (typeof providerRow?.baseUrl === 'string' && providerRow.baseUrl) || metadata.defaultBaseUrl,
|
|
346
|
+
credentialId: credentialSelection?.credentialId,
|
|
347
|
+
credentialLabel: credentialSelection?.credentialLabel,
|
|
348
|
+
credentialIsDefault: credentialSelection?.isDefault,
|
|
262
349
|
models,
|
|
263
350
|
selectedModelId: selectedModelId || undefined,
|
|
264
351
|
};
|
|
@@ -268,9 +355,10 @@ export function buildAIConfigProviderStateMap(options) {
|
|
|
268
355
|
export function buildAIConfigMutationPlan(input) {
|
|
269
356
|
const providerId = normalizeAIConfigProviderId(input.providerId);
|
|
270
357
|
const metadata = getAIConfigProviderMetadata(providerId);
|
|
271
|
-
const existingProvider = input.currentProviderRows.find((row) => sameAIConfigProviderFamily(
|
|
272
|
-
const existingCredential = input.currentCredentialRows
|
|
273
|
-
|
|
358
|
+
const existingProvider = input.currentProviderRows.find((row) => sameAIConfigProviderFamily(aiConfigProviderRowId(row), providerId));
|
|
359
|
+
const existingCredential = selectAIConfigCredential(providerId, input.currentCredentialRows, input.currentProviderRows)?.credential
|
|
360
|
+
?? input.currentCredentialRows.find((row) => sameAIConfigProviderFamily(aiConfigCredentialProviderId(row), providerId));
|
|
361
|
+
const existingModels = input.currentModelRows.filter((row) => sameAIConfigProviderFamily(aiConfigModelProviderId(row), providerId));
|
|
274
362
|
const hasConfigUpdate = input.updates.enabled !== undefined || input.updates.apiKey !== undefined || input.updates.baseUrl !== undefined;
|
|
275
363
|
let providerPayload;
|
|
276
364
|
let credentialPayload;
|
|
@@ -309,6 +397,7 @@ export function buildAIConfigMutationPlan(input) {
|
|
|
309
397
|
label: typeof existingCredential?.label === 'string' && existingCredential.label
|
|
310
398
|
? existingCredential.label
|
|
311
399
|
: `${metadata.displayName} Key`,
|
|
400
|
+
isDefault: existingCredential?.isDefault === undefined ? true : Boolean(existingCredential.isDefault),
|
|
312
401
|
};
|
|
313
402
|
}
|
|
314
403
|
if (input.updates.models !== undefined) {
|
|
@@ -348,3 +437,24 @@ export function buildAIConfigMutationPlan(input) {
|
|
|
348
437
|
modelDeleteIds,
|
|
349
438
|
};
|
|
350
439
|
}
|
|
440
|
+
export function buildAIConfigDisconnectPlan(input) {
|
|
441
|
+
const providerId = normalizeAIConfigProviderId(input.providerId);
|
|
442
|
+
const credentialDeleteIds = [];
|
|
443
|
+
const seen = new Set();
|
|
444
|
+
for (const row of input.currentCredentialRows) {
|
|
445
|
+
const rowProvider = normalizeOptionalText(row.provider) ?? normalizeOptionalText(row.id);
|
|
446
|
+
if (!sameAIConfigProviderFamily(rowProvider, providerId)) {
|
|
447
|
+
continue;
|
|
448
|
+
}
|
|
449
|
+
const id = normalizeAIConfigResourceId(normalizeOptionalText(row.id) ?? normalizeOptionalText(row['@id']));
|
|
450
|
+
if (!id || seen.has(id)) {
|
|
451
|
+
continue;
|
|
452
|
+
}
|
|
453
|
+
seen.add(id);
|
|
454
|
+
credentialDeleteIds.push(id);
|
|
455
|
+
}
|
|
456
|
+
return {
|
|
457
|
+
providerId,
|
|
458
|
+
credentialDeleteIds,
|
|
459
|
+
};
|
|
460
|
+
}
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
export declare const aiModelResource: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
2
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
3
|
+
displayName: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
4
|
+
modelType: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, true>;
|
|
5
|
+
isProvidedBy: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
6
|
+
dimension: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"integer", null, false, false>;
|
|
7
|
+
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, true>;
|
|
8
|
+
createdAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, true, true>;
|
|
9
|
+
updatedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, true, true>;
|
|
10
|
+
}>>;
|
|
1
11
|
export declare const aiModelTable: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
2
12
|
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
3
13
|
displayName: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
@@ -8,6 +18,6 @@ export declare const aiModelTable: import("@undefineds.co/drizzle-solid/dist/cor
|
|
|
8
18
|
createdAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, true, true>;
|
|
9
19
|
updatedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, true, true>;
|
|
10
20
|
}>>;
|
|
11
|
-
export type AIModelRow = typeof
|
|
12
|
-
export type AIModelInsert = typeof
|
|
13
|
-
export type AIModelUpdate = typeof
|
|
21
|
+
export type AIModelRow = typeof aiModelResource.$inferSelect;
|
|
22
|
+
export type AIModelInsert = typeof aiModelResource.$inferInsert;
|
|
23
|
+
export type AIModelUpdate = typeof aiModelResource.$inferUpdate;
|
package/dist/ai-model.schema.js
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import { id, integer, podTable, string, timestamp, uri } from "@undefineds.co/drizzle-solid";
|
|
2
|
-
import {
|
|
2
|
+
import { aiProviderResource } from "./ai-provider.schema.js";
|
|
3
3
|
import { XPOD_AI } from "./namespaces.js";
|
|
4
|
-
export const
|
|
4
|
+
export const aiModelResource = podTable("aiModel", {
|
|
5
5
|
id: id("id"),
|
|
6
6
|
displayName: string("displayName").predicate(XPOD_AI.displayName),
|
|
7
7
|
modelType: string("modelType").predicate(XPOD_AI.modelType).default("chat"),
|
|
8
|
-
isProvidedBy: uri("isProvidedBy").predicate(XPOD_AI.isProvidedBy).link(
|
|
8
|
+
isProvidedBy: uri("isProvidedBy").predicate(XPOD_AI.isProvidedBy).link(aiProviderResource),
|
|
9
9
|
dimension: integer("dimension").predicate(XPOD_AI.dimension),
|
|
10
10
|
status: string("status").predicate(XPOD_AI.status).default("active"),
|
|
11
11
|
createdAt: timestamp("createdAt").predicate(XPOD_AI.createdAt).notNull().defaultNow(),
|
|
12
12
|
updatedAt: timestamp("updatedAt").predicate(XPOD_AI.updatedAt).notNull().defaultNow(),
|
|
13
13
|
}, {
|
|
14
|
-
base: "/settings/
|
|
14
|
+
base: "/settings/providers/",
|
|
15
15
|
type: XPOD_AI.Model,
|
|
16
16
|
namespace: XPOD_AI,
|
|
17
17
|
subjectTemplate: "{isProvidedBy|id}.ttl#{id}",
|
|
18
18
|
});
|
|
19
|
+
// Compatibility alias. New model code should prefer `aiModelResource`.
|
|
20
|
+
export const aiModelTable = aiModelResource;
|
|
@@ -1,9 +1,19 @@
|
|
|
1
|
+
export declare const aiProviderResource: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
2
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
3
|
+
displayName: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
4
|
+
baseUrl: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
5
|
+
proxyUrl: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
6
|
+
hasModel: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
7
|
+
defaultModel: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
8
|
+
}>>;
|
|
1
9
|
export declare const aiProviderTable: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
2
10
|
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
11
|
+
displayName: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
3
12
|
baseUrl: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
4
13
|
proxyUrl: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
5
14
|
hasModel: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
15
|
+
defaultModel: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
6
16
|
}>>;
|
|
7
|
-
export type AIProviderRow = typeof
|
|
8
|
-
export type AIProviderInsert = typeof
|
|
9
|
-
export type AIProviderUpdate = typeof
|
|
17
|
+
export type AIProviderRow = typeof aiProviderResource.$inferSelect;
|
|
18
|
+
export type AIProviderInsert = typeof aiProviderResource.$inferInsert;
|
|
19
|
+
export type AIProviderUpdate = typeof aiProviderResource.$inferUpdate;
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { id, podTable, string, uri } from "@undefineds.co/drizzle-solid";
|
|
2
2
|
import { XPOD_AI } from "./namespaces.js";
|
|
3
|
-
export const
|
|
3
|
+
export const aiProviderResource = podTable("aiProvider", {
|
|
4
4
|
id: id("id"),
|
|
5
|
+
displayName: string("displayName").predicate(XPOD_AI.displayName),
|
|
5
6
|
baseUrl: string("baseUrl").predicate(XPOD_AI.baseUrl),
|
|
6
7
|
proxyUrl: string("proxyUrl").predicate(XPOD_AI.proxyUrl),
|
|
7
8
|
hasModel: uri("hasModel").predicate(XPOD_AI.hasModel).link("aiModel"),
|
|
9
|
+
defaultModel: uri("defaultModel").predicate(XPOD_AI.defaultModel).link("aiModel"),
|
|
8
10
|
}, {
|
|
9
|
-
base: "/settings/
|
|
11
|
+
base: "/settings/providers/",
|
|
10
12
|
type: XPOD_AI.Provider,
|
|
11
13
|
namespace: XPOD_AI,
|
|
12
|
-
subjectTemplate: "
|
|
14
|
+
subjectTemplate: "{id}.ttl",
|
|
13
15
|
});
|
|
16
|
+
// Compatibility alias. New model code should prefer `aiProviderResource`.
|
|
17
|
+
export const aiProviderTable = aiProviderResource;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
export declare const aiConfigResource: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
2
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
3
|
+
embeddingModel: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
4
|
+
previousModel: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
5
|
+
migrationStatus: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
6
|
+
migrationProgress: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"integer", null, false, false>;
|
|
7
|
+
updatedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
8
|
+
}>>;
|
|
9
|
+
export declare const vectorStoreResource: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
10
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
11
|
+
name: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
12
|
+
container: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
13
|
+
chunkingStrategy: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
14
|
+
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
15
|
+
createdAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
16
|
+
lastActiveAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
17
|
+
}>>;
|
|
18
|
+
export declare const indexedFileResource: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
19
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
20
|
+
fileUrl: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
21
|
+
vectorId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"integer", null, false, false>;
|
|
22
|
+
chunkingStrategy: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
23
|
+
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
24
|
+
usageBytes: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"integer", null, false, false>;
|
|
25
|
+
lastError: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
26
|
+
indexedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
27
|
+
}>>;
|
|
28
|
+
export declare const agentStatusResource: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
29
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
30
|
+
agentId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
31
|
+
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
32
|
+
startedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
33
|
+
lastActivityAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
34
|
+
currentTaskId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
35
|
+
errorMessage: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
36
|
+
}>>;
|
|
37
|
+
export declare const aiConfigTable: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
38
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
39
|
+
embeddingModel: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
40
|
+
previousModel: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
41
|
+
migrationStatus: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
42
|
+
migrationProgress: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"integer", null, false, false>;
|
|
43
|
+
updatedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
44
|
+
}>>;
|
|
45
|
+
export declare const vectorStoreTable: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
46
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
47
|
+
name: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
48
|
+
container: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
49
|
+
chunkingStrategy: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
50
|
+
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
51
|
+
createdAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
52
|
+
lastActiveAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
53
|
+
}>>;
|
|
54
|
+
export declare const indexedFileTable: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
55
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
56
|
+
fileUrl: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"uri", null, false, false>;
|
|
57
|
+
vectorId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"integer", null, false, false>;
|
|
58
|
+
chunkingStrategy: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
59
|
+
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
60
|
+
usageBytes: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"integer", null, false, false>;
|
|
61
|
+
lastError: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
62
|
+
indexedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
63
|
+
}>>;
|
|
64
|
+
export declare const agentStatusTable: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
65
|
+
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|
|
66
|
+
agentId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
67
|
+
status: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
68
|
+
startedAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
69
|
+
lastActivityAt: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"datetime", null, false, false>;
|
|
70
|
+
currentTaskId: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
71
|
+
errorMessage: import("@undefineds.co/drizzle-solid/dist/core/schema").ColumnBuilder<"string", null, false, false>;
|
|
72
|
+
}>>;
|
|
73
|
+
export type AIConfigRow = typeof aiConfigResource.$inferSelect;
|
|
74
|
+
export type AIConfigInsert = typeof aiConfigResource.$inferInsert;
|
|
75
|
+
export type AIConfigUpdate = typeof aiConfigResource.$inferUpdate;
|
|
76
|
+
export type VectorStoreRow = typeof vectorStoreResource.$inferSelect;
|
|
77
|
+
export type VectorStoreInsert = typeof vectorStoreResource.$inferInsert;
|
|
78
|
+
export type VectorStoreUpdate = typeof vectorStoreResource.$inferUpdate;
|
|
79
|
+
export type IndexedFileRow = typeof indexedFileResource.$inferSelect;
|
|
80
|
+
export type IndexedFileInsert = typeof indexedFileResource.$inferInsert;
|
|
81
|
+
export type IndexedFileUpdate = typeof indexedFileResource.$inferUpdate;
|
|
82
|
+
export type AgentStatusRow = typeof agentStatusResource.$inferSelect;
|
|
83
|
+
export type AgentStatusInsert = typeof agentStatusResource.$inferInsert;
|
|
84
|
+
export type AgentStatusUpdate = typeof agentStatusResource.$inferUpdate;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { id, integer, podTable, string, timestamp, uri } from '@undefineds.co/drizzle-solid';
|
|
2
|
+
import { aiModelResource } from './ai-model.schema.js';
|
|
3
|
+
import { XPOD_AI } from './namespaces.js';
|
|
4
|
+
export const aiConfigResource = podTable('aiConfig', {
|
|
5
|
+
id: id('id'),
|
|
6
|
+
embeddingModel: uri('embeddingModel').predicate(XPOD_AI.embeddingModel).link(aiModelResource),
|
|
7
|
+
previousModel: uri('previousModel').predicate(XPOD_AI.previousModel).link(aiModelResource),
|
|
8
|
+
migrationStatus: string('migrationStatus').predicate(XPOD_AI.migrationStatus),
|
|
9
|
+
migrationProgress: integer('migrationProgress').predicate(XPOD_AI.migrationProgress),
|
|
10
|
+
updatedAt: timestamp('updatedAt').predicate(XPOD_AI.updatedAt),
|
|
11
|
+
}, {
|
|
12
|
+
base: '/settings/ai/config.ttl',
|
|
13
|
+
type: XPOD_AI.AIConfig,
|
|
14
|
+
namespace: XPOD_AI,
|
|
15
|
+
subjectTemplate: '#{id}',
|
|
16
|
+
});
|
|
17
|
+
export const vectorStoreResource = podTable('vectorStore', {
|
|
18
|
+
id: id('id'),
|
|
19
|
+
name: string('name').predicate(XPOD_AI.name),
|
|
20
|
+
container: uri('container').predicate(XPOD_AI.container),
|
|
21
|
+
chunkingStrategy: string('chunkingStrategy').predicate(XPOD_AI.chunkingStrategy),
|
|
22
|
+
status: string('status').predicate(XPOD_AI.status),
|
|
23
|
+
createdAt: timestamp('createdAt').predicate(XPOD_AI.createdAt),
|
|
24
|
+
lastActiveAt: timestamp('lastActiveAt').predicate(XPOD_AI.lastActiveAt),
|
|
25
|
+
}, {
|
|
26
|
+
base: '/settings/ai/vector-stores.ttl',
|
|
27
|
+
type: XPOD_AI.VectorStore,
|
|
28
|
+
namespace: XPOD_AI,
|
|
29
|
+
subjectTemplate: '#{id}',
|
|
30
|
+
});
|
|
31
|
+
export const indexedFileResource = podTable('indexedFile', {
|
|
32
|
+
id: id('id'),
|
|
33
|
+
fileUrl: uri('fileUrl').predicate(XPOD_AI.fileUrl),
|
|
34
|
+
vectorId: integer('vectorId').predicate(XPOD_AI.vectorId),
|
|
35
|
+
chunkingStrategy: string('chunkingStrategy').predicate(XPOD_AI.chunkingStrategy),
|
|
36
|
+
status: string('status').predicate(XPOD_AI.status),
|
|
37
|
+
usageBytes: integer('usageBytes').predicate(XPOD_AI.usageBytes),
|
|
38
|
+
lastError: string('lastError').predicate(XPOD_AI.lastError),
|
|
39
|
+
indexedAt: timestamp('indexedAt').predicate(XPOD_AI.indexedAt),
|
|
40
|
+
}, {
|
|
41
|
+
base: '/settings/ai/indexed-files.ttl',
|
|
42
|
+
type: XPOD_AI.IndexedFile,
|
|
43
|
+
namespace: XPOD_AI,
|
|
44
|
+
subjectTemplate: '#{id}',
|
|
45
|
+
});
|
|
46
|
+
export const agentStatusResource = podTable('agentStatus', {
|
|
47
|
+
id: id('id'),
|
|
48
|
+
agentId: string('agentId').predicate(XPOD_AI.agentId),
|
|
49
|
+
status: string('status').predicate(XPOD_AI.status),
|
|
50
|
+
startedAt: timestamp('startedAt').predicate(XPOD_AI.startedAt),
|
|
51
|
+
lastActivityAt: timestamp('lastActivityAt').predicate(XPOD_AI.lastActivityAt),
|
|
52
|
+
currentTaskId: string('currentTaskId').predicate(XPOD_AI.currentTaskId),
|
|
53
|
+
errorMessage: string('errorMessage').predicate(XPOD_AI.errorMessage),
|
|
54
|
+
}, {
|
|
55
|
+
base: '/settings/ai/agent-status.ttl',
|
|
56
|
+
type: XPOD_AI.AgentStatus,
|
|
57
|
+
namespace: XPOD_AI,
|
|
58
|
+
subjectTemplate: '#{id}',
|
|
59
|
+
});
|
|
60
|
+
// Compatibility aliases. New model code should prefer `*Resource`.
|
|
61
|
+
export const aiConfigTable = aiConfigResource;
|
|
62
|
+
export const vectorStoreTable = vectorStoreResource;
|
|
63
|
+
export const indexedFileTable = indexedFileResource;
|
|
64
|
+
export const agentStatusTable = agentStatusResource;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare function buildApprovalSubjectPath(approvalId: string, createdAt?: Date | string | number): string;
|
|
1
2
|
export declare function extractApprovalIdFromApprovalRef(approvalRef: string | null | undefined): string | null;
|
|
2
3
|
export declare const approvalResource: import("@undefineds.co/drizzle-solid/dist/core/schema").PodTableWithColumns<import("@undefineds.co/drizzle-solid/dist/core/schema").ResolvedColumns<{
|
|
3
4
|
id: import("@undefineds.co/drizzle-solid/dist/core/schema").PodStringColumn<false, false>;
|