@inkeep/agents-core 0.65.0 → 0.65.2
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/dist/auth/auth-schema.d.ts +108 -108
- package/dist/auth/auth-validation-schemas.d.ts +154 -154
- package/dist/auth/permissions.d.ts +9 -9
- package/dist/client-exports.d.ts +3 -3
- package/dist/client-exports.js +3 -3
- package/dist/constants/otel-attributes.d.ts +1 -0
- package/dist/constants/otel-attributes.js +1 -0
- package/dist/data-access/index.d.ts +2 -1
- package/dist/data-access/index.js +2 -1
- package/dist/data-access/manage/agents.d.ts +25 -25
- package/dist/data-access/manage/artifactComponents.d.ts +10 -10
- package/dist/data-access/manage/contextConfigs.d.ts +12 -12
- package/dist/data-access/manage/dataComponents.d.ts +4 -4
- package/dist/data-access/manage/dataComponents.js +1 -1
- package/dist/data-access/manage/functionTools.d.ts +10 -10
- package/dist/data-access/manage/skills.d.ts +12 -12
- package/dist/data-access/manage/subAgentExternalAgentRelations.d.ts +12 -12
- package/dist/data-access/manage/subAgentRelations.d.ts +20 -20
- package/dist/data-access/manage/subAgentTeamAgentRelations.d.ts +12 -12
- package/dist/data-access/manage/subAgents.d.ts +15 -15
- package/dist/data-access/manage/tools.d.ts +27 -27
- package/dist/data-access/manage/triggers.d.ts +2 -2
- package/dist/data-access/runtime/apiKeys.d.ts +12 -12
- package/dist/data-access/runtime/apps.d.ts +10 -10
- package/dist/data-access/runtime/conversations.d.ts +16 -16
- package/dist/data-access/runtime/feedback.d.ts +101 -0
- package/dist/data-access/runtime/feedback.js +83 -0
- package/dist/data-access/runtime/messages.d.ts +12 -12
- package/dist/data-access/runtime/scheduledTriggerInvocations.d.ts +4 -4
- package/dist/data-access/runtime/scheduledTriggerUsers.d.ts +1 -1
- package/dist/data-access/runtime/tasks.d.ts +3 -3
- package/dist/db/manage/dolt-safe-jsonb.d.ts +2 -2
- package/dist/db/manage/manage-client.js +15 -3
- package/dist/db/manage/manage-schema.d.ts +449 -449
- package/dist/db/runtime/runtime-client.js +7 -1
- package/dist/db/runtime/runtime-schema.d.ts +543 -365
- package/dist/db/runtime/runtime-schema.js +73 -2
- package/dist/dolt/merge.js +7 -9
- package/dist/dolt/ref-scope.js +9 -3
- package/dist/index.d.ts +8 -7
- package/dist/index.js +7 -6
- package/dist/types/entities.d.ts +5 -2
- package/dist/types/index.d.ts +2 -2
- package/dist/utils/error.d.ts +7 -1
- package/dist/utils/error.js +63 -21
- package/dist/utils/index.d.ts +3 -3
- package/dist/utils/index.js +3 -3
- package/dist/utils/logger.d.ts +21 -2
- package/dist/utils/logger.js +67 -11
- package/dist/validation/drizzle-schema-helpers.d.ts +3 -3
- package/dist/validation/index.d.ts +3 -3
- package/dist/validation/index.js +3 -3
- package/dist/validation/schemas/shared.d.ts +3 -1
- package/dist/validation/schemas/shared.js +6 -1
- package/dist/validation/schemas/skills.d.ts +41 -41
- package/dist/validation/schemas.d.ts +2567 -2139
- package/dist/validation/schemas.js +29 -6
- package/drizzle/runtime/0034_simple_sphinx.sql +17 -0
- package/drizzle/runtime/meta/0034_snapshot.json +5288 -0
- package/drizzle/runtime/meta/_journal.json +8 -1
- package/package.json +1 -1
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { conversations, feedback } from "../../db/runtime/runtime-schema.js";
|
|
2
|
+
import { projectScopedWhere } from "../manage/scope-helpers.js";
|
|
3
|
+
import { and, count, desc, eq, gte, lte } from "drizzle-orm";
|
|
4
|
+
|
|
5
|
+
//#region src/data-access/runtime/feedback.ts
|
|
6
|
+
const getFeedbackById = (db) => async (params) => {
|
|
7
|
+
const [result] = await db.select({
|
|
8
|
+
id: feedback.id,
|
|
9
|
+
conversationId: feedback.conversationId,
|
|
10
|
+
messageId: feedback.messageId,
|
|
11
|
+
type: feedback.type,
|
|
12
|
+
details: feedback.details,
|
|
13
|
+
createdAt: feedback.createdAt,
|
|
14
|
+
updatedAt: feedback.updatedAt
|
|
15
|
+
}).from(feedback).where(and(projectScopedWhere(feedback, params.scopes), eq(feedback.id, params.feedbackId))).limit(1);
|
|
16
|
+
return result;
|
|
17
|
+
};
|
|
18
|
+
const listFeedbackByConversation = (db) => async (params) => {
|
|
19
|
+
return listFeedback(db)({
|
|
20
|
+
scopes: params.scopes,
|
|
21
|
+
conversationId: params.conversationId,
|
|
22
|
+
messageId: params.messageId,
|
|
23
|
+
pagination: params.pagination
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
const listFeedback = (db) => async (params) => {
|
|
27
|
+
const page = params.pagination?.page || 1;
|
|
28
|
+
const limit = Math.min(params.pagination?.limit || 10, 100);
|
|
29
|
+
const offset = (page - 1) * limit;
|
|
30
|
+
const conditions = [projectScopedWhere(feedback, params.scopes)];
|
|
31
|
+
if (params.conversationId) conditions.push(eq(feedback.conversationId, params.conversationId));
|
|
32
|
+
if (params.messageId) conditions.push(eq(feedback.messageId, params.messageId));
|
|
33
|
+
if (params.type) conditions.push(eq(feedback.type, params.type));
|
|
34
|
+
if (params.startDate) conditions.push(gte(feedback.createdAt, `${params.startDate}T00:00:00.000Z`));
|
|
35
|
+
if (params.endDate) conditions.push(lte(feedback.createdAt, `${params.endDate}T23:59:59.999Z`));
|
|
36
|
+
if (params.agentId) conditions.push(eq(conversations.agentId, params.agentId));
|
|
37
|
+
const whereClause = and(...conditions);
|
|
38
|
+
const conversationsJoin = [
|
|
39
|
+
eq(feedback.tenantId, conversations.tenantId),
|
|
40
|
+
eq(feedback.projectId, conversations.projectId),
|
|
41
|
+
eq(feedback.conversationId, conversations.id)
|
|
42
|
+
];
|
|
43
|
+
const countQuery = db.select({ count: count() }).from(feedback);
|
|
44
|
+
if (params.agentId) countQuery.leftJoin(conversations, and(...conversationsJoin));
|
|
45
|
+
const [items, total] = await Promise.all([db.select({
|
|
46
|
+
id: feedback.id,
|
|
47
|
+
conversationId: feedback.conversationId,
|
|
48
|
+
messageId: feedback.messageId,
|
|
49
|
+
type: feedback.type,
|
|
50
|
+
details: feedback.details,
|
|
51
|
+
createdAt: feedback.createdAt,
|
|
52
|
+
updatedAt: feedback.updatedAt,
|
|
53
|
+
agentId: conversations.agentId
|
|
54
|
+
}).from(feedback).leftJoin(conversations, and(...conversationsJoin)).where(whereClause).limit(limit).offset(offset).orderBy(desc(feedback.createdAt)), countQuery.where(whereClause)]);
|
|
55
|
+
return {
|
|
56
|
+
feedback: items,
|
|
57
|
+
total: typeof total[0]?.count === "string" ? Number.parseInt(total[0].count, 10) : total[0]?.count ?? 0
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
const createFeedback = (db) => async (params) => {
|
|
61
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
62
|
+
const [created] = await db.insert(feedback).values({
|
|
63
|
+
...params,
|
|
64
|
+
createdAt: now,
|
|
65
|
+
updatedAt: now
|
|
66
|
+
}).returning();
|
|
67
|
+
return created;
|
|
68
|
+
};
|
|
69
|
+
const updateFeedback = (db) => async (params) => {
|
|
70
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
71
|
+
const [updated] = await db.update(feedback).set({
|
|
72
|
+
...params.data,
|
|
73
|
+
updatedAt: now
|
|
74
|
+
}).where(and(projectScopedWhere(feedback, params.scopes), eq(feedback.id, params.feedbackId))).returning();
|
|
75
|
+
return updated;
|
|
76
|
+
};
|
|
77
|
+
const deleteFeedback = (db) => async (params) => {
|
|
78
|
+
const [deleted] = await db.delete(feedback).where(and(projectScopedWhere(feedback, params.scopes), eq(feedback.id, params.feedbackId))).returning();
|
|
79
|
+
return deleted;
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
//#endregion
|
|
83
|
+
export { createFeedback, deleteFeedback, getFeedbackById, listFeedback, listFeedbackByConversation, updateFeedback };
|
|
@@ -10,15 +10,15 @@ declare const getMessageById: (db: AgentsRunDatabaseClient) => (params: {
|
|
|
10
10
|
scopes: ProjectScopeConfig;
|
|
11
11
|
messageId: string;
|
|
12
12
|
}) => Promise<{
|
|
13
|
+
tenantId: string;
|
|
14
|
+
projectId: string;
|
|
13
15
|
id: string;
|
|
14
16
|
createdAt: string;
|
|
15
17
|
updatedAt: string;
|
|
16
|
-
tenantId: string;
|
|
17
|
-
projectId: string;
|
|
18
|
-
content: MessageContent;
|
|
19
18
|
metadata: MessageMetadata | null;
|
|
20
|
-
|
|
19
|
+
content: MessageContent;
|
|
21
20
|
role: string;
|
|
21
|
+
conversationId: string;
|
|
22
22
|
fromSubAgentId: string | null;
|
|
23
23
|
toSubAgentId: string | null;
|
|
24
24
|
fromExternalAgentId: string | null;
|
|
@@ -144,15 +144,15 @@ declare const createMessage: (db: AgentsRunDatabaseClient) => (params: {
|
|
|
144
144
|
scopes: ProjectScopeConfig;
|
|
145
145
|
data: Omit<MessageInsert, "tenantId" | "projectId">;
|
|
146
146
|
}) => Promise<{
|
|
147
|
+
tenantId: string;
|
|
148
|
+
projectId: string;
|
|
147
149
|
id: string;
|
|
148
150
|
createdAt: string;
|
|
149
151
|
updatedAt: string;
|
|
150
|
-
tenantId: string;
|
|
151
|
-
projectId: string;
|
|
152
|
-
content: MessageContent;
|
|
153
152
|
metadata: MessageMetadata | null;
|
|
154
|
-
|
|
153
|
+
content: MessageContent;
|
|
155
154
|
role: string;
|
|
155
|
+
conversationId: string;
|
|
156
156
|
fromSubAgentId: string | null;
|
|
157
157
|
toSubAgentId: string | null;
|
|
158
158
|
fromExternalAgentId: string | null;
|
|
@@ -197,15 +197,15 @@ declare const deleteMessage: (db: AgentsRunDatabaseClient) => (params: {
|
|
|
197
197
|
scopes: ProjectScopeConfig;
|
|
198
198
|
messageId: string;
|
|
199
199
|
}) => Promise<{
|
|
200
|
+
tenantId: string;
|
|
201
|
+
projectId: string;
|
|
200
202
|
id: string;
|
|
201
203
|
createdAt: string;
|
|
202
204
|
updatedAt: string;
|
|
203
|
-
tenantId: string;
|
|
204
|
-
projectId: string;
|
|
205
|
-
content: MessageContent;
|
|
206
205
|
metadata: MessageMetadata | null;
|
|
207
|
-
|
|
206
|
+
content: MessageContent;
|
|
208
207
|
role: string;
|
|
208
|
+
conversationId: string;
|
|
209
209
|
fromSubAgentId: string | null;
|
|
210
210
|
toSubAgentId: string | null;
|
|
211
211
|
fromExternalAgentId: string | null;
|
|
@@ -40,7 +40,7 @@ declare const listScheduledTriggerInvocationsPaginated: (db: AgentsRunDatabaseCl
|
|
|
40
40
|
name: string;
|
|
41
41
|
hash: string;
|
|
42
42
|
} | null;
|
|
43
|
-
status: "
|
|
43
|
+
status: "pending" | "failed" | "running" | "completed" | "cancelled";
|
|
44
44
|
scheduledFor: string;
|
|
45
45
|
startedAt: string | null;
|
|
46
46
|
completedAt: string | null;
|
|
@@ -199,7 +199,7 @@ declare const listUpcomingInvocationsForAgentPaginated: (db: AgentsRunDatabaseCl
|
|
|
199
199
|
name: string;
|
|
200
200
|
hash: string;
|
|
201
201
|
} | null;
|
|
202
|
-
status: "
|
|
202
|
+
status: "pending" | "failed" | "running" | "completed" | "cancelled";
|
|
203
203
|
scheduledFor: string;
|
|
204
204
|
startedAt: string | null;
|
|
205
205
|
completedAt: string | null;
|
|
@@ -239,7 +239,7 @@ declare const listProjectScheduledTriggerInvocationsPaginated: (db: AgentsRunDat
|
|
|
239
239
|
name: string;
|
|
240
240
|
hash: string;
|
|
241
241
|
} | null;
|
|
242
|
-
status: "
|
|
242
|
+
status: "pending" | "failed" | "running" | "completed" | "cancelled";
|
|
243
243
|
scheduledFor: string;
|
|
244
244
|
startedAt: string | null;
|
|
245
245
|
completedAt: string | null;
|
|
@@ -292,7 +292,7 @@ declare const listScheduledTriggerInvocationsByTriggerId: (db: AgentsRunDatabase
|
|
|
292
292
|
name: string;
|
|
293
293
|
hash: string;
|
|
294
294
|
} | null;
|
|
295
|
-
status: "
|
|
295
|
+
status: "pending" | "failed" | "running" | "completed" | "cancelled";
|
|
296
296
|
scheduledFor: string;
|
|
297
297
|
startedAt: string | null;
|
|
298
298
|
completedAt: string | null;
|
|
@@ -15,8 +15,8 @@ declare const createScheduledTriggerUser: (db: AgentsRunDatabaseClient) => (para
|
|
|
15
15
|
scheduledTriggerId: string;
|
|
16
16
|
userId: string;
|
|
17
17
|
}) => Promise<{
|
|
18
|
-
createdAt: string;
|
|
19
18
|
tenantId: string;
|
|
19
|
+
createdAt: string;
|
|
20
20
|
userId: string;
|
|
21
21
|
scheduledTriggerId: string;
|
|
22
22
|
}>;
|
|
@@ -7,6 +7,8 @@ import { TaskInsert, TaskSelect } from "../../types/entities.js";
|
|
|
7
7
|
|
|
8
8
|
//#region src/data-access/runtime/tasks.d.ts
|
|
9
9
|
declare const createTask: (db: AgentsRunDatabaseClient) => (params: TaskInsert) => Promise<{
|
|
10
|
+
tenantId: string;
|
|
11
|
+
projectId: string;
|
|
10
12
|
id: string;
|
|
11
13
|
ref: {
|
|
12
14
|
type: "commit" | "tag" | "branch";
|
|
@@ -15,10 +17,8 @@ declare const createTask: (db: AgentsRunDatabaseClient) => (params: TaskInsert)
|
|
|
15
17
|
} | null;
|
|
16
18
|
createdAt: string;
|
|
17
19
|
updatedAt: string;
|
|
18
|
-
tenantId: string;
|
|
19
|
-
projectId: string;
|
|
20
|
-
agentId: string;
|
|
21
20
|
metadata: TaskMetadataConfig | null;
|
|
21
|
+
agentId: string;
|
|
22
22
|
subAgentId: string;
|
|
23
23
|
status: string;
|
|
24
24
|
contextId: string;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as drizzle_orm_pg_core220 from "drizzle-orm/pg-core";
|
|
2
2
|
|
|
3
3
|
//#region src/db/manage/dolt-safe-jsonb.d.ts
|
|
4
4
|
declare function encodeBackslashes(value: unknown): unknown;
|
|
@@ -7,6 +7,6 @@ declare function decodeBackslashes(value: unknown): unknown;
|
|
|
7
7
|
* Drop-in replacement for drizzle-orm's `jsonb()`.
|
|
8
8
|
* Encodes backslashes on write and decodes on read to work around the Doltgres bug.
|
|
9
9
|
*/
|
|
10
|
-
declare function jsonb(name: string): ReturnType<typeof
|
|
10
|
+
declare function jsonb(name: string): ReturnType<typeof drizzle_orm_pg_core220.jsonb>;
|
|
11
11
|
//#endregion
|
|
12
12
|
export { decodeBackslashes, encodeBackslashes, jsonb };
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import { manage_schema_exports } from "./manage-schema.js";
|
|
2
2
|
import { env, loadEnvironmentFiles } from "../../env.js";
|
|
3
|
+
import { getLogger } from "../../utils/logger.js";
|
|
4
|
+
import { getDatabaseErrorLogContext } from "../../utils/error.js";
|
|
3
5
|
import { createTestManageDatabaseClientNoMigrations } from "./test-manage-client.js";
|
|
4
6
|
import { drizzle } from "drizzle-orm/node-postgres";
|
|
5
7
|
import { Pool } from "pg";
|
|
6
8
|
|
|
7
9
|
//#region src/db/manage/manage-client.ts
|
|
8
10
|
loadEnvironmentFiles();
|
|
11
|
+
const managePoolLogger = getLogger("manage-db-pool");
|
|
9
12
|
function createAgentsManageDatabasePool(config) {
|
|
10
13
|
const connectionString = config.connectionString || env.INKEEP_AGENTS_MANAGE_DATABASE_URL;
|
|
11
14
|
if (!connectionString) throw new Error("INKEEP_AGENTS_MANAGE_DATABASE_URL environment variable is required. Please set it to your PostgreSQL connection string.");
|
|
@@ -18,7 +21,10 @@ function createAgentsManageDatabasePool(config) {
|
|
|
18
21
|
idleTimeoutMillis: 3e4
|
|
19
22
|
});
|
|
20
23
|
pool.on("error", (err) => {
|
|
21
|
-
|
|
24
|
+
managePoolLogger.error({
|
|
25
|
+
error: err,
|
|
26
|
+
...getDatabaseErrorLogContext(err)
|
|
27
|
+
}, "Unexpected error on agents manage database pool (Doltgres)");
|
|
22
28
|
});
|
|
23
29
|
return pool;
|
|
24
30
|
}
|
|
@@ -38,7 +44,10 @@ function createAgentsManageDatabaseClient(config) {
|
|
|
38
44
|
idleTimeoutMillis: 3e4
|
|
39
45
|
});
|
|
40
46
|
pool.on("error", (err) => {
|
|
41
|
-
|
|
47
|
+
managePoolLogger.error({
|
|
48
|
+
error: err,
|
|
49
|
+
...getDatabaseErrorLogContext(err)
|
|
50
|
+
}, "Unexpected error on agents manage database pool (Doltgres)");
|
|
42
51
|
});
|
|
43
52
|
return drizzle(pool, {
|
|
44
53
|
schema: manage_schema_exports,
|
|
@@ -57,7 +66,10 @@ function createAgentManageDatabaseConnection(config) {
|
|
|
57
66
|
connectionTimeoutMillis: 1e4
|
|
58
67
|
});
|
|
59
68
|
pool.on("error", (err) => {
|
|
60
|
-
|
|
69
|
+
managePoolLogger.error({
|
|
70
|
+
error: err,
|
|
71
|
+
...getDatabaseErrorLogContext(err)
|
|
72
|
+
}, "Unexpected error on agents manage database pool (Doltgres)");
|
|
61
73
|
});
|
|
62
74
|
return pool.connect().then((connection) => {
|
|
63
75
|
const db = drizzle(connection, {
|