@inkeep/agents-core 0.41.2 → 0.42.0
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/api-client/base-client.d.ts +87 -8
- package/dist/api-client/base-client.js +174 -1
- package/dist/api-client/eval-api-client.d.ts +47 -0
- package/dist/api-client/eval-api-client.js +65 -0
- package/dist/api-client/index.d.ts +4 -0
- package/dist/api-client/index.js +5 -0
- package/dist/api-client/manage-api-client.d.ts +34 -0
- package/dist/api-client/manage-api-client.js +104 -0
- package/dist/auth/auth.d.ts +86 -20
- package/dist/auth/auth.js +55 -1
- package/dist/auth/authz/client.d.ts +81 -0
- package/dist/auth/authz/client.js +189 -0
- package/dist/auth/authz/config.d.ts +76 -0
- package/dist/auth/authz/config.js +76 -0
- package/dist/auth/authz/index.d.ts +5 -0
- package/dist/auth/authz/index.js +6 -0
- package/dist/auth/authz/permissions.d.ts +57 -0
- package/dist/auth/authz/permissions.js +83 -0
- package/dist/auth/authz/sync.d.ts +85 -0
- package/dist/auth/authz/sync.js +237 -0
- package/dist/auth/permissions.d.ts +13 -13
- package/dist/auth/permissions.js +2 -181
- package/dist/client-exports.d.ts +8 -3
- package/dist/client-exports.js +3 -2
- package/dist/constants/context-breakdown.d.ts +61 -0
- package/dist/constants/context-breakdown.js +124 -0
- package/dist/constants/otel-attributes.d.ts +4 -0
- package/dist/constants/otel-attributes.js +4 -0
- package/dist/context/ContextConfig.d.ts +2 -2
- package/dist/context/ContextConfig.js +3 -3
- package/dist/context/TemplateEngine.js +0 -1
- package/dist/context/index.d.ts +1 -5
- package/dist/context/index.js +1 -5
- package/dist/credential-stuffer/CredentialStuffer.d.ts +1 -1
- package/dist/data-access/index.d.ts +34 -26
- package/dist/data-access/index.js +34 -26
- package/dist/data-access/manage/agentFull.d.ts +36 -0
- package/dist/data-access/{agentFull.js → manage/agentFull.js} +205 -7
- package/dist/data-access/{agents.d.ts → manage/agents.d.ts} +23 -22
- package/dist/data-access/{agents.js → manage/agents.js} +52 -7
- package/dist/data-access/{artifactComponents.d.ts → manage/artifactComponents.d.ts} +21 -21
- package/dist/data-access/{artifactComponents.js → manage/artifactComponents.js} +5 -5
- package/dist/data-access/{contextConfigs.d.ts → manage/contextConfigs.d.ts} +14 -14
- package/dist/data-access/{contextConfigs.js → manage/contextConfigs.js} +3 -3
- package/dist/data-access/{credentialReferences.d.ts → manage/credentialReferences.d.ts} +17 -17
- package/dist/data-access/{credentialReferences.js → manage/credentialReferences.js} +2 -2
- package/dist/data-access/{dataComponents.d.ts → manage/dataComponents.d.ts} +20 -20
- package/dist/data-access/{dataComponents.js → manage/dataComponents.js} +7 -7
- package/dist/data-access/manage/evalConfig.d.ts +221 -0
- package/dist/data-access/manage/evalConfig.js +275 -0
- package/dist/data-access/{externalAgents.d.ts → manage/externalAgents.d.ts} +16 -16
- package/dist/data-access/{externalAgents.js → manage/externalAgents.js} +2 -2
- package/dist/data-access/{functionTools.d.ts → manage/functionTools.d.ts} +65 -15
- package/dist/data-access/{functionTools.js → manage/functionTools.js} +90 -8
- package/dist/data-access/{functions.d.ts → manage/functions.d.ts} +9 -9
- package/dist/data-access/{functions.js → manage/functions.js} +3 -3
- package/dist/data-access/manage/projectFull.d.ts +38 -0
- package/dist/data-access/{projectFull.js → manage/projectFull.js} +64 -65
- package/dist/data-access/manage/projectLifecycle.d.ts +119 -0
- package/dist/data-access/manage/projectLifecycle.js +234 -0
- package/dist/data-access/manage/projects.d.ts +75 -0
- package/dist/data-access/{projects.js → manage/projects.js} +15 -16
- package/dist/data-access/{subAgentExternalAgentRelations.d.ts → manage/subAgentExternalAgentRelations.d.ts} +19 -19
- package/dist/data-access/{subAgentExternalAgentRelations.js → manage/subAgentExternalAgentRelations.js} +2 -2
- package/dist/data-access/{subAgentRelations.d.ts → manage/subAgentRelations.d.ts} +29 -29
- package/dist/data-access/{subAgentRelations.js → manage/subAgentRelations.js} +3 -3
- package/dist/data-access/{subAgentTeamAgentRelations.d.ts → manage/subAgentTeamAgentRelations.d.ts} +19 -19
- package/dist/data-access/{subAgentTeamAgentRelations.js → manage/subAgentTeamAgentRelations.js} +2 -2
- package/dist/data-access/{subAgents.d.ts → manage/subAgents.d.ts} +13 -13
- package/dist/data-access/{subAgents.js → manage/subAgents.js} +4 -4
- package/dist/data-access/{tools.d.ts → manage/tools.d.ts} +26 -19
- package/dist/data-access/{tools.js → manage/tools.js} +57 -35
- package/dist/data-access/manage/triggers.d.ts +80 -0
- package/dist/data-access/manage/triggers.js +81 -0
- package/dist/data-access/{apiKeys.d.ts → runtime/apiKeys.d.ts} +17 -17
- package/dist/data-access/{apiKeys.js → runtime/apiKeys.js} +3 -3
- package/dist/data-access/runtime/cascade-delete.d.ts +77 -0
- package/dist/data-access/runtime/cascade-delete.js +111 -0
- package/dist/data-access/{contextCache.d.ts → runtime/contextCache.d.ts} +13 -13
- package/dist/data-access/{contextCache.js → runtime/contextCache.js} +5 -5
- package/dist/data-access/{conversations.d.ts → runtime/conversations.d.ts} +68 -19
- package/dist/data-access/{conversations.js → runtime/conversations.js} +13 -7
- package/dist/data-access/runtime/evalRuns.d.ts +120 -0
- package/dist/data-access/runtime/evalRuns.js +168 -0
- package/dist/data-access/{ledgerArtifacts.d.ts → runtime/ledgerArtifacts.d.ts} +13 -13
- package/dist/data-access/{ledgerArtifacts.js → runtime/ledgerArtifacts.js} +3 -3
- package/dist/data-access/{messages.d.ts → runtime/messages.d.ts} +15 -15
- package/dist/data-access/{messages.js → runtime/messages.js} +2 -2
- package/dist/data-access/{organizations.d.ts → runtime/organizations.d.ts} +16 -7
- package/dist/data-access/{organizations.js → runtime/organizations.js} +15 -3
- package/dist/data-access/runtime/projects.d.ts +62 -0
- package/dist/data-access/runtime/projects.js +90 -0
- package/dist/data-access/runtime/tasks.d.ts +55 -0
- package/dist/data-access/{tasks.js → runtime/tasks.js} +2 -2
- package/dist/data-access/runtime/triggerInvocations.d.ts +62 -0
- package/dist/data-access/runtime/triggerInvocations.js +54 -0
- package/dist/data-access/runtime/users.d.ts +19 -0
- package/dist/data-access/{users.js → runtime/users.js} +2 -2
- package/dist/data-access/validation.d.ts +4 -4
- package/dist/data-access/validation.js +1 -1
- package/dist/db/clean.d.ts +8 -4
- package/dist/db/clean.js +14 -105
- package/dist/db/delete.d.ts +1 -1
- package/dist/db/delete.js +7 -10
- package/dist/db/manage/dolt-cleanup.d.ts +51 -0
- package/dist/db/manage/dolt-cleanup.js +132 -0
- package/dist/db/manage/manage-client.d.ts +26 -0
- package/dist/db/manage/manage-client.js +68 -0
- package/dist/db/{schema.d.ts → manage/manage-schema.d.ts} +1459 -1285
- package/dist/db/{schema.js → manage/manage-schema.js} +433 -341
- package/dist/db/manage/test-manage-client.d.ts +27 -0
- package/dist/db/manage/test-manage-client.js +68 -0
- package/dist/db/runtime/runtime-client.d.ts +20 -0
- package/dist/db/runtime/runtime-client.js +30 -0
- package/dist/db/runtime/runtime-schema.d.ts +2834 -0
- package/dist/db/runtime/runtime-schema.js +483 -0
- package/dist/db/runtime/test-runtime-client.d.ts +27 -0
- package/dist/db/{test-client.js → runtime/test-runtime-client.js} +11 -25
- package/dist/dolt/branch.d.ts +62 -0
- package/dist/dolt/branch.js +82 -0
- package/dist/dolt/branches-api.d.ts +108 -0
- package/dist/dolt/branches-api.js +162 -0
- package/dist/dolt/commit.d.ts +94 -0
- package/dist/dolt/commit.js +103 -0
- package/dist/dolt/diff.d.ts +27 -0
- package/dist/dolt/diff.js +21 -0
- package/dist/dolt/index.d.ts +10 -0
- package/dist/dolt/index.js +11 -0
- package/dist/dolt/merge.d.ts +63 -0
- package/dist/dolt/merge.js +81 -0
- package/dist/dolt/migrate-all-branches.d.ts +4 -0
- package/dist/dolt/migrate-all-branches.js +78 -0
- package/dist/dolt/migrate-dolt.d.ts +1 -0
- package/dist/dolt/migrate-dolt.js +22 -0
- package/dist/dolt/ref-helpers.d.ts +19 -0
- package/dist/dolt/ref-helpers.js +65 -0
- package/dist/dolt/ref-middleware.d.ts +82 -0
- package/dist/dolt/ref-middleware.js +217 -0
- package/dist/dolt/ref-scope.d.ts +101 -0
- package/dist/dolt/ref-scope.js +231 -0
- package/dist/dolt/schema-sync.d.ts +134 -0
- package/dist/dolt/schema-sync.js +246 -0
- package/dist/env.d.ts +6 -4
- package/dist/env.js +3 -2
- package/dist/index.d.ts +71 -44
- package/dist/index.js +74 -47
- package/dist/types/entities.d.ts +81 -2
- package/dist/types/index.d.ts +3 -3
- package/dist/types/utility.d.ts +45 -4
- package/dist/utils/JsonTransformer.d.ts +44 -0
- package/dist/utils/JsonTransformer.js +112 -0
- package/dist/utils/apiKeys.d.ts +5 -1
- package/dist/utils/apiKeys.js +11 -1
- package/dist/utils/colors.d.ts +34 -0
- package/dist/utils/colors.js +49 -0
- package/dist/utils/credential-store-utils.d.ts +1 -1
- package/dist/utils/format-messages.d.ts +1 -1
- package/dist/utils/index.d.ts +7 -3
- package/dist/utils/index.js +7 -3
- package/dist/utils/internal-service-auth.d.ts +79 -0
- package/dist/utils/internal-service-auth.js +140 -0
- package/dist/utils/jwt-helpers.d.ts +56 -0
- package/dist/utils/jwt-helpers.js +90 -0
- package/dist/utils/service-token-auth.d.ts +9 -27
- package/dist/utils/service-token-auth.js +48 -96
- package/dist/utils/template-interpolation.d.ts +22 -0
- package/dist/utils/template-interpolation.js +62 -0
- package/dist/utils/third-party-mcp-servers/composio-client.js +23 -23
- package/dist/utils/trigger-auth.d.ts +62 -0
- package/dist/utils/trigger-auth.js +125 -0
- package/dist/validation/agentFull.js +2 -4
- package/dist/validation/dolt-schemas.d.ts +49 -0
- package/dist/validation/dolt-schemas.js +44 -0
- package/dist/validation/drizzle-schema-helpers.d.ts +4 -26
- package/dist/validation/drizzle-schema-helpers.js +5 -151
- package/dist/validation/index.d.ts +4 -3
- package/dist/validation/index.js +3 -2
- package/dist/validation/schemas.d.ts +17647 -4789
- package/dist/validation/schemas.js +328 -11
- package/drizzle/manage/0000_tearful_rhodey.sql +414 -0
- package/drizzle/manage/0001_broken_wendell_vaughn.sql +19 -0
- package/drizzle/manage/0002_bent_sunfire.sql +1 -0
- package/drizzle/manage/meta/0000_snapshot.json +2987 -0
- package/drizzle/manage/meta/0001_snapshot.json +3115 -0
- package/drizzle/manage/meta/0002_snapshot.json +3115 -0
- package/drizzle/manage/meta/_journal.json +27 -0
- package/drizzle/runtime/0008_silly_preak.sql +127 -0
- package/drizzle/runtime/0009_freezing_leo.sql +17 -0
- package/drizzle/runtime/meta/0008_snapshot.json +2263 -0
- package/drizzle/runtime/meta/0009_snapshot.json +2397 -0
- package/drizzle/{meta → runtime/meta}/_journal.json +14 -0
- package/package.json +48 -15
- package/dist/context/ContextFetcher.d.ts +0 -73
- package/dist/context/ContextFetcher.js +0 -291
- package/dist/context/ContextResolver.d.ts +0 -60
- package/dist/context/ContextResolver.js +0 -278
- package/dist/context/context.d.ts +0 -27
- package/dist/context/context.js +0 -128
- package/dist/context/contextCache.d.ts +0 -58
- package/dist/context/contextCache.js +0 -177
- package/dist/data-access/agentFull.d.ts +0 -33
- package/dist/data-access/projectFull.d.ts +0 -32
- package/dist/data-access/projects.d.ts +0 -71
- package/dist/data-access/tasks.d.ts +0 -45
- package/dist/data-access/users.d.ts +0 -19
- package/dist/db/client.d.ts +0 -20
- package/dist/db/client.js +0 -28
- package/dist/db/test-client.d.ts +0 -31
- package/dist/middleware/contextValidation.d.ts +0 -46
- package/dist/middleware/contextValidation.js +0 -280
- package/dist/middleware/index.d.ts +0 -2
- package/dist/middleware/index.js +0 -3
- package/dist/utils/execution.d.ts +0 -22
- package/dist/utils/execution.js +0 -25
- /package/drizzle/{0000_exotic_mysterio.sql → runtime/0000_exotic_mysterio.sql} +0 -0
- /package/drizzle/{0001_calm_sheva_callister.sql → runtime/0001_calm_sheva_callister.sql} +0 -0
- /package/drizzle/{0002_puzzling_goblin_queen.sql → runtime/0002_puzzling_goblin_queen.sql} +0 -0
- /package/drizzle/{0003_sweet_human_robot.sql → runtime/0003_sweet_human_robot.sql} +0 -0
- /package/drizzle/{0004_cuddly_shooting_star.sql → runtime/0004_cuddly_shooting_star.sql} +0 -0
- /package/drizzle/{0005_reflective_starfox.sql → runtime/0005_reflective_starfox.sql} +0 -0
- /package/drizzle/{0006_stale_thaddeus_ross.sql → runtime/0006_stale_thaddeus_ross.sql} +0 -0
- /package/drizzle/{0007_slim_karma.sql → runtime/0007_slim_karma.sql} +0 -0
- /package/drizzle/{meta → runtime/meta}/0000_snapshot.json +0 -0
- /package/drizzle/{meta → runtime/meta}/0001_snapshot.json +0 -0
- /package/drizzle/{meta → runtime/meta}/0003_snapshot.json +0 -0
- /package/drizzle/{meta → runtime/meta}/0005_snapshot.json +0 -0
- /package/drizzle/{meta → runtime/meta}/0006_snapshot.json +0 -0
- /package/drizzle/{meta → runtime/meta}/0007_snapshot.json +0 -0
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
import { __exportAll } from "../../_virtual/rolldown_runtime.js";
|
|
2
|
+
import { account, deviceCode, invitation, member, organization, session, ssoProvider, user, verification } from "../../auth/auth-schema.js";
|
|
3
|
+
import { relations } from "drizzle-orm";
|
|
4
|
+
import { foreignKey, index, jsonb, pgTable, primaryKey, text, timestamp, unique, varchar } from "drizzle-orm/pg-core";
|
|
5
|
+
|
|
6
|
+
//#region src/db/runtime/runtime-schema.ts
|
|
7
|
+
var runtime_schema_exports = /* @__PURE__ */ __exportAll({
|
|
8
|
+
account: () => account,
|
|
9
|
+
apiKeys: () => apiKeys,
|
|
10
|
+
contextCache: () => contextCache,
|
|
11
|
+
conversations: () => conversations,
|
|
12
|
+
conversationsRelations: () => conversationsRelations,
|
|
13
|
+
datasetRun: () => datasetRun,
|
|
14
|
+
datasetRunConversationRelations: () => datasetRunConversationRelations,
|
|
15
|
+
deviceCode: () => deviceCode,
|
|
16
|
+
evaluationResult: () => evaluationResult,
|
|
17
|
+
evaluationRun: () => evaluationRun,
|
|
18
|
+
invitation: () => invitation,
|
|
19
|
+
ledgerArtifacts: () => ledgerArtifacts,
|
|
20
|
+
ledgerArtifactsRelations: () => ledgerArtifactsRelations,
|
|
21
|
+
member: () => member,
|
|
22
|
+
messages: () => messages,
|
|
23
|
+
messagesRelations: () => messagesRelations,
|
|
24
|
+
organization: () => organization,
|
|
25
|
+
projectMetadata: () => projectMetadata,
|
|
26
|
+
session: () => session,
|
|
27
|
+
ssoProvider: () => ssoProvider,
|
|
28
|
+
taskRelations: () => taskRelations,
|
|
29
|
+
taskRelationsRelations: () => taskRelationsRelations,
|
|
30
|
+
tasks: () => tasks,
|
|
31
|
+
tasksRelations: () => tasksRelations,
|
|
32
|
+
triggerInvocations: () => triggerInvocations,
|
|
33
|
+
user: () => user,
|
|
34
|
+
verification: () => verification
|
|
35
|
+
});
|
|
36
|
+
const projectScoped = {
|
|
37
|
+
tenantId: varchar("tenant_id", { length: 256 }).notNull(),
|
|
38
|
+
id: varchar("id", { length: 256 }).notNull(),
|
|
39
|
+
projectId: varchar("project_id", { length: 256 }).notNull()
|
|
40
|
+
};
|
|
41
|
+
const agentScoped = {
|
|
42
|
+
...projectScoped,
|
|
43
|
+
agentId: varchar("agent_id", { length: 256 }).notNull()
|
|
44
|
+
};
|
|
45
|
+
const subAgentScoped = {
|
|
46
|
+
...agentScoped,
|
|
47
|
+
subAgentId: varchar("sub_agent_id", { length: 256 }).notNull()
|
|
48
|
+
};
|
|
49
|
+
const timestamps = {
|
|
50
|
+
createdAt: timestamp("created_at", { mode: "string" }).notNull().defaultNow(),
|
|
51
|
+
updatedAt: timestamp("updated_at", { mode: "string" }).notNull().defaultNow()
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Runtime projects table - source of truth for which projects exist in a tenant.
|
|
55
|
+
* This is NOT versioned - project existence is tracked here while
|
|
56
|
+
* project configuration/content lives in the versioned config DB.
|
|
57
|
+
*
|
|
58
|
+
* Named 'project_metadata' to avoid conflict with the manage-schema 'projects' table.
|
|
59
|
+
*/
|
|
60
|
+
const projectMetadata = pgTable("project_metadata", {
|
|
61
|
+
id: varchar("id", { length: 256 }).notNull(),
|
|
62
|
+
tenantId: varchar("tenant_id", { length: 256 }).notNull(),
|
|
63
|
+
createdAt: timestamp("created_at", { mode: "string" }).notNull().defaultNow(),
|
|
64
|
+
createdBy: varchar("created_by", { length: 256 }),
|
|
65
|
+
mainBranchName: varchar("main_branch_name", { length: 512 }).notNull()
|
|
66
|
+
}, (table) => [
|
|
67
|
+
primaryKey({ columns: [table.tenantId, table.id] }),
|
|
68
|
+
index("project_metadata_tenant_idx").on(table.tenantId),
|
|
69
|
+
index("project_metadata_main_branch_idx").on(table.mainBranchName),
|
|
70
|
+
foreignKey({
|
|
71
|
+
columns: [table.tenantId],
|
|
72
|
+
foreignColumns: [organization.id],
|
|
73
|
+
name: "project_metadata_organization_fk"
|
|
74
|
+
}).onDelete("cascade")
|
|
75
|
+
]);
|
|
76
|
+
const conversations = pgTable("conversations", {
|
|
77
|
+
...projectScoped,
|
|
78
|
+
userId: varchar("user_id", { length: 256 }),
|
|
79
|
+
agentId: varchar("agent_id", { length: 256 }),
|
|
80
|
+
activeSubAgentId: varchar("active_sub_agent_id", { length: 256 }).notNull(),
|
|
81
|
+
ref: jsonb("ref").$type(),
|
|
82
|
+
title: text("title"),
|
|
83
|
+
lastContextResolution: timestamp("last_context_resolution", { mode: "string" }),
|
|
84
|
+
metadata: jsonb("metadata").$type(),
|
|
85
|
+
...timestamps
|
|
86
|
+
}, (table) => [primaryKey({ columns: [
|
|
87
|
+
table.tenantId,
|
|
88
|
+
table.projectId,
|
|
89
|
+
table.id
|
|
90
|
+
] })]);
|
|
91
|
+
const tasks = pgTable("tasks", {
|
|
92
|
+
...subAgentScoped,
|
|
93
|
+
contextId: varchar("context_id", { length: 256 }).notNull(),
|
|
94
|
+
ref: jsonb("ref").$type(),
|
|
95
|
+
status: varchar("status", { length: 256 }).notNull(),
|
|
96
|
+
metadata: jsonb("metadata").$type(),
|
|
97
|
+
...timestamps
|
|
98
|
+
}, (table) => [primaryKey({ columns: [
|
|
99
|
+
table.tenantId,
|
|
100
|
+
table.projectId,
|
|
101
|
+
table.id
|
|
102
|
+
] })]);
|
|
103
|
+
const apiKeys = pgTable("api_keys", {
|
|
104
|
+
...projectScoped,
|
|
105
|
+
agentId: varchar("agent_id", { length: 256 }).notNull(),
|
|
106
|
+
publicId: varchar("public_id", { length: 256 }).notNull().unique(),
|
|
107
|
+
keyHash: varchar("key_hash", { length: 256 }).notNull(),
|
|
108
|
+
keyPrefix: varchar("key_prefix", { length: 256 }).notNull(),
|
|
109
|
+
name: varchar("name", { length: 256 }),
|
|
110
|
+
lastUsedAt: timestamp("last_used_at", { mode: "string" }),
|
|
111
|
+
expiresAt: timestamp("expires_at", { mode: "string" }),
|
|
112
|
+
...timestamps
|
|
113
|
+
}, (t) => [
|
|
114
|
+
foreignKey({
|
|
115
|
+
columns: [t.tenantId],
|
|
116
|
+
foreignColumns: [organization.id],
|
|
117
|
+
name: "api_keys_organization_fk"
|
|
118
|
+
}).onDelete("cascade"),
|
|
119
|
+
index("api_keys_tenant_agent_idx").on(t.tenantId, t.agentId),
|
|
120
|
+
index("api_keys_prefix_idx").on(t.keyPrefix),
|
|
121
|
+
index("api_keys_public_id_idx").on(t.publicId)
|
|
122
|
+
]);
|
|
123
|
+
/**
|
|
124
|
+
* Trigger invocations - records each time a webhook trigger is invoked.
|
|
125
|
+
* This is runtime data (transactional) so it lives in PostgreSQL, not DoltGres.
|
|
126
|
+
* NOTE: No FK to triggers table since triggers is in a different database (DoltGres).
|
|
127
|
+
* Application code must enforce referential integrity for triggerId.
|
|
128
|
+
* Can optionally link to conversations when the trigger creates one.
|
|
129
|
+
*/
|
|
130
|
+
const triggerInvocations = pgTable("trigger_invocations", {
|
|
131
|
+
...agentScoped,
|
|
132
|
+
triggerId: varchar("trigger_id", { length: 256 }).notNull(),
|
|
133
|
+
conversationId: varchar("conversation_id", { length: 256 }),
|
|
134
|
+
status: varchar("status", { length: 20 }).notNull().default("pending"),
|
|
135
|
+
requestPayload: jsonb("request_payload").notNull(),
|
|
136
|
+
transformedPayload: jsonb("transformed_payload"),
|
|
137
|
+
errorMessage: text("error_message"),
|
|
138
|
+
createdAt: timestamp("created_at", { mode: "string" }).notNull().defaultNow()
|
|
139
|
+
}, (table) => [
|
|
140
|
+
primaryKey({ columns: [
|
|
141
|
+
table.tenantId,
|
|
142
|
+
table.projectId,
|
|
143
|
+
table.agentId,
|
|
144
|
+
table.id
|
|
145
|
+
] }),
|
|
146
|
+
index("trigger_invocations_trigger_idx").on(table.triggerId, table.createdAt),
|
|
147
|
+
index("trigger_invocations_status_idx").on(table.triggerId, table.status)
|
|
148
|
+
]);
|
|
149
|
+
const messages = pgTable("messages", {
|
|
150
|
+
...projectScoped,
|
|
151
|
+
conversationId: varchar("conversation_id", { length: 256 }).notNull(),
|
|
152
|
+
role: varchar("role", { length: 256 }).notNull(),
|
|
153
|
+
fromSubAgentId: varchar("from_sub_agent_id", { length: 256 }),
|
|
154
|
+
toSubAgentId: varchar("to_sub_agent_id", { length: 256 }),
|
|
155
|
+
fromExternalAgentId: varchar("from_external_sub_agent_id", { length: 256 }),
|
|
156
|
+
toExternalAgentId: varchar("to_external_sub_agent_id", { length: 256 }),
|
|
157
|
+
fromTeamAgentId: varchar("from_team_agent_id", { length: 256 }),
|
|
158
|
+
toTeamAgentId: varchar("to_team_agent_id", { length: 256 }),
|
|
159
|
+
content: jsonb("content").$type().notNull(),
|
|
160
|
+
visibility: varchar("visibility", { length: 256 }).notNull().default("user-facing"),
|
|
161
|
+
messageType: varchar("message_type", { length: 256 }).notNull().default("chat"),
|
|
162
|
+
taskId: varchar("task_id", { length: 256 }),
|
|
163
|
+
parentMessageId: varchar("parent_message_id", { length: 256 }),
|
|
164
|
+
a2aTaskId: varchar("a2a_task_id", { length: 256 }),
|
|
165
|
+
a2aSessionId: varchar("a2a_session_id", { length: 256 }),
|
|
166
|
+
metadata: jsonb("metadata").$type(),
|
|
167
|
+
...timestamps
|
|
168
|
+
}, (table) => [primaryKey({ columns: [
|
|
169
|
+
table.tenantId,
|
|
170
|
+
table.projectId,
|
|
171
|
+
table.id
|
|
172
|
+
] }), foreignKey({
|
|
173
|
+
columns: [
|
|
174
|
+
table.tenantId,
|
|
175
|
+
table.projectId,
|
|
176
|
+
table.conversationId
|
|
177
|
+
],
|
|
178
|
+
foreignColumns: [
|
|
179
|
+
conversations.tenantId,
|
|
180
|
+
conversations.projectId,
|
|
181
|
+
conversations.id
|
|
182
|
+
],
|
|
183
|
+
name: "messages_conversation_fk"
|
|
184
|
+
}).onDelete("cascade")]);
|
|
185
|
+
const taskRelations = pgTable("task_relations", {
|
|
186
|
+
...projectScoped,
|
|
187
|
+
parentTaskId: varchar("parent_task_id", { length: 256 }).notNull(),
|
|
188
|
+
childTaskId: varchar("child_task_id", { length: 256 }).notNull(),
|
|
189
|
+
relationType: varchar("relation_type", { length: 256 }).default("parent_child"),
|
|
190
|
+
...timestamps
|
|
191
|
+
}, (table) => [
|
|
192
|
+
primaryKey({ columns: [
|
|
193
|
+
table.tenantId,
|
|
194
|
+
table.projectId,
|
|
195
|
+
table.id
|
|
196
|
+
] }),
|
|
197
|
+
foreignKey({
|
|
198
|
+
columns: [
|
|
199
|
+
table.tenantId,
|
|
200
|
+
table.projectId,
|
|
201
|
+
table.parentTaskId
|
|
202
|
+
],
|
|
203
|
+
foreignColumns: [
|
|
204
|
+
tasks.tenantId,
|
|
205
|
+
tasks.projectId,
|
|
206
|
+
tasks.id
|
|
207
|
+
],
|
|
208
|
+
name: "task_relations_parent_fk"
|
|
209
|
+
}).onDelete("cascade"),
|
|
210
|
+
foreignKey({
|
|
211
|
+
columns: [
|
|
212
|
+
table.tenantId,
|
|
213
|
+
table.projectId,
|
|
214
|
+
table.childTaskId
|
|
215
|
+
],
|
|
216
|
+
foreignColumns: [
|
|
217
|
+
tasks.tenantId,
|
|
218
|
+
tasks.projectId,
|
|
219
|
+
tasks.id
|
|
220
|
+
],
|
|
221
|
+
name: "task_relations_child_fk"
|
|
222
|
+
}).onDelete("cascade")
|
|
223
|
+
]);
|
|
224
|
+
const ledgerArtifacts = pgTable("ledger_artifacts", {
|
|
225
|
+
...projectScoped,
|
|
226
|
+
taskId: varchar("task_id", { length: 256 }).notNull(),
|
|
227
|
+
toolCallId: varchar("tool_call_id", { length: 256 }),
|
|
228
|
+
contextId: varchar("context_id", { length: 256 }).notNull(),
|
|
229
|
+
type: varchar("type", { length: 256 }).notNull().default("source"),
|
|
230
|
+
name: varchar("name", { length: 256 }),
|
|
231
|
+
description: text("description"),
|
|
232
|
+
parts: jsonb("parts").$type(),
|
|
233
|
+
metadata: jsonb("metadata").$type(),
|
|
234
|
+
summary: text("summary"),
|
|
235
|
+
mime: jsonb("mime").$type(),
|
|
236
|
+
visibility: varchar("visibility", { length: 256 }).default("context"),
|
|
237
|
+
allowedAgents: jsonb("allowed_agents").$type(),
|
|
238
|
+
derivedFrom: varchar("derived_from", { length: 256 }),
|
|
239
|
+
...timestamps
|
|
240
|
+
}, (table) => [
|
|
241
|
+
primaryKey({ columns: [
|
|
242
|
+
table.tenantId,
|
|
243
|
+
table.projectId,
|
|
244
|
+
table.id,
|
|
245
|
+
table.taskId
|
|
246
|
+
] }),
|
|
247
|
+
index("ledger_artifacts_task_id_idx").on(table.taskId),
|
|
248
|
+
index("ledger_artifacts_tool_call_id_idx").on(table.toolCallId),
|
|
249
|
+
index("ledger_artifacts_context_id_idx").on(table.contextId),
|
|
250
|
+
unique("ledger_artifacts_task_context_name_unique").on(table.taskId, table.contextId, table.name),
|
|
251
|
+
foreignKey({
|
|
252
|
+
columns: [
|
|
253
|
+
table.tenantId,
|
|
254
|
+
table.projectId,
|
|
255
|
+
table.contextId
|
|
256
|
+
],
|
|
257
|
+
foreignColumns: [
|
|
258
|
+
conversations.tenantId,
|
|
259
|
+
conversations.projectId,
|
|
260
|
+
conversations.id
|
|
261
|
+
],
|
|
262
|
+
name: "ledger_artifacts_conversation_fk"
|
|
263
|
+
}).onDelete("cascade")
|
|
264
|
+
]);
|
|
265
|
+
const contextCache = pgTable("context_cache", {
|
|
266
|
+
...projectScoped,
|
|
267
|
+
conversationId: varchar("conversation_id", { length: 256 }).notNull(),
|
|
268
|
+
contextConfigId: varchar("context_config_id", { length: 256 }).notNull(),
|
|
269
|
+
contextVariableKey: varchar("context_variable_key", { length: 256 }).notNull(),
|
|
270
|
+
ref: jsonb("ref").$type(),
|
|
271
|
+
value: jsonb("value").$type().notNull(),
|
|
272
|
+
requestHash: varchar("request_hash", { length: 256 }),
|
|
273
|
+
fetchedAt: timestamp("fetched_at", { mode: "string" }).notNull().defaultNow(),
|
|
274
|
+
fetchSource: varchar("fetch_source", { length: 256 }),
|
|
275
|
+
...timestamps
|
|
276
|
+
}, (table) => [
|
|
277
|
+
primaryKey({ columns: [
|
|
278
|
+
table.tenantId,
|
|
279
|
+
table.projectId,
|
|
280
|
+
table.id
|
|
281
|
+
] }),
|
|
282
|
+
index("context_cache_lookup_idx").on(table.conversationId, table.contextConfigId, table.contextVariableKey),
|
|
283
|
+
foreignKey({
|
|
284
|
+
columns: [
|
|
285
|
+
table.tenantId,
|
|
286
|
+
table.projectId,
|
|
287
|
+
table.conversationId
|
|
288
|
+
],
|
|
289
|
+
foreignColumns: [
|
|
290
|
+
conversations.tenantId,
|
|
291
|
+
conversations.projectId,
|
|
292
|
+
conversations.id
|
|
293
|
+
],
|
|
294
|
+
name: "context_cache_conversation_fk"
|
|
295
|
+
}).onDelete("cascade")
|
|
296
|
+
]);
|
|
297
|
+
/**
|
|
298
|
+
* Execution of a suite of items from a dataset. Represents a batch run that
|
|
299
|
+
* processes dataset items and creates conversations (basically a batch run of conversations). Tracks the execution
|
|
300
|
+
* status and links to conversations created during the run via
|
|
301
|
+
* datasetRunConversationRelations join table.
|
|
302
|
+
*
|
|
303
|
+
* When evaluators are specified, an evaluation job is automatically created after the run completes,
|
|
304
|
+
* and the evaluationJobConfigId links to that job.
|
|
305
|
+
*
|
|
306
|
+
* Includes: datasetId (which dataset to run),
|
|
307
|
+
* datasetRunConfigId (optional: if created from a config),
|
|
308
|
+
* evaluationJobConfigId (optional: links to evaluation job created for this run), and timestamps
|
|
309
|
+
*/
|
|
310
|
+
const datasetRun = pgTable("dataset_run", {
|
|
311
|
+
...projectScoped,
|
|
312
|
+
datasetId: text("dataset_id").notNull(),
|
|
313
|
+
datasetRunConfigId: text("dataset_run_config_id"),
|
|
314
|
+
evaluationJobConfigId: text("evaluation_job_config_id"),
|
|
315
|
+
...timestamps
|
|
316
|
+
}, (table) => [primaryKey({ columns: [
|
|
317
|
+
table.tenantId,
|
|
318
|
+
table.projectId,
|
|
319
|
+
table.id
|
|
320
|
+
] })]);
|
|
321
|
+
/**
|
|
322
|
+
* Links conversations created during a dataset run execution. One-to-many
|
|
323
|
+
* relationship where one datasetRun can create many conversations, but each
|
|
324
|
+
* conversation belongs to exactly one datasetRun. Used to track which
|
|
325
|
+
* conversations were generated from which dataset run.
|
|
326
|
+
*
|
|
327
|
+
* Includes: datasetRunId (composite FK to datasetRun), conversationId (composite FK to conversations),
|
|
328
|
+
* datasetItemId (composite FK to datasetItem) to directly link conversations to their source dataset items,
|
|
329
|
+
* unique constraint on (datasetRunId, conversationId) ensures one conversation per datasetRun,
|
|
330
|
+
* and timestamps
|
|
331
|
+
*/
|
|
332
|
+
const datasetRunConversationRelations = pgTable("dataset_run_conversation_relations", {
|
|
333
|
+
...projectScoped,
|
|
334
|
+
datasetRunId: text("dataset_run_id").notNull(),
|
|
335
|
+
conversationId: text("conversation_id").notNull(),
|
|
336
|
+
datasetItemId: text("dataset_item_id").notNull(),
|
|
337
|
+
...timestamps
|
|
338
|
+
}, (table) => [
|
|
339
|
+
primaryKey({ columns: [
|
|
340
|
+
table.tenantId,
|
|
341
|
+
table.projectId,
|
|
342
|
+
table.id
|
|
343
|
+
] }),
|
|
344
|
+
foreignKey({
|
|
345
|
+
columns: [
|
|
346
|
+
table.tenantId,
|
|
347
|
+
table.projectId,
|
|
348
|
+
table.datasetRunId
|
|
349
|
+
],
|
|
350
|
+
foreignColumns: [
|
|
351
|
+
datasetRun.tenantId,
|
|
352
|
+
datasetRun.projectId,
|
|
353
|
+
datasetRun.id
|
|
354
|
+
],
|
|
355
|
+
name: "dataset_run_conversation_relations_run_fk"
|
|
356
|
+
}).onDelete("cascade"),
|
|
357
|
+
foreignKey({
|
|
358
|
+
columns: [
|
|
359
|
+
table.tenantId,
|
|
360
|
+
table.projectId,
|
|
361
|
+
table.conversationId
|
|
362
|
+
],
|
|
363
|
+
foreignColumns: [
|
|
364
|
+
conversations.tenantId,
|
|
365
|
+
conversations.projectId,
|
|
366
|
+
conversations.id
|
|
367
|
+
],
|
|
368
|
+
name: "dataset_run_conversation_relations_conversation_fk"
|
|
369
|
+
}).onDelete("cascade"),
|
|
370
|
+
unique("dataset_run_conversation_relations_unique").on(table.datasetRunId, table.conversationId)
|
|
371
|
+
]);
|
|
372
|
+
/**
|
|
373
|
+
* Record created when an evaluation job config or evaluation run config is triggered.
|
|
374
|
+
* Represents a completed evaluation run. Links to the evaluationJobConfig (if created from a job)
|
|
375
|
+
* or evaluationRunConfig (if created from a run config).
|
|
376
|
+
* Results are stored in evaluationResult table.
|
|
377
|
+
* one to many relationship with evaluationResult
|
|
378
|
+
*
|
|
379
|
+
* Includes: evaluationJobConfigId (optional: if created from a job),
|
|
380
|
+
* evaluationRunConfigId (optional: if created from a run config),
|
|
381
|
+
* and timestamps
|
|
382
|
+
*/
|
|
383
|
+
const evaluationRun = pgTable("evaluation_run", {
|
|
384
|
+
...projectScoped,
|
|
385
|
+
evaluationJobConfigId: text("evaluation_job_config_id"),
|
|
386
|
+
evaluationRunConfigId: text("evaluation_run_config_id"),
|
|
387
|
+
...timestamps
|
|
388
|
+
}, (table) => [primaryKey({ columns: [
|
|
389
|
+
table.tenantId,
|
|
390
|
+
table.projectId,
|
|
391
|
+
table.id
|
|
392
|
+
] })]);
|
|
393
|
+
/**
|
|
394
|
+
* Stores the result of evaluating a conversation with a specific evaluator.
|
|
395
|
+
* Contains the evaluation output. Linked to an evaluation run.
|
|
396
|
+
* Each result represents one evaluator's assessment of one conversation.
|
|
397
|
+
*
|
|
398
|
+
* Includes: conversationId (required), evaluatorId (required),
|
|
399
|
+
* evaluationRunId (optional, links to evaluationRun),
|
|
400
|
+
* output (evaluation result as MessageContent), and timestamps
|
|
401
|
+
*/
|
|
402
|
+
const evaluationResult = pgTable("evaluation_result", {
|
|
403
|
+
...projectScoped,
|
|
404
|
+
conversationId: text("conversation_id").notNull(),
|
|
405
|
+
evaluatorId: text("evaluator_id").notNull(),
|
|
406
|
+
evaluationRunId: text("evaluation_run_id"),
|
|
407
|
+
output: jsonb("output").$type(),
|
|
408
|
+
...timestamps
|
|
409
|
+
}, (table) => [
|
|
410
|
+
primaryKey({ columns: [
|
|
411
|
+
table.tenantId,
|
|
412
|
+
table.projectId,
|
|
413
|
+
table.id
|
|
414
|
+
] }),
|
|
415
|
+
foreignKey({
|
|
416
|
+
columns: [
|
|
417
|
+
table.tenantId,
|
|
418
|
+
table.projectId,
|
|
419
|
+
table.conversationId
|
|
420
|
+
],
|
|
421
|
+
foreignColumns: [
|
|
422
|
+
conversations.tenantId,
|
|
423
|
+
conversations.projectId,
|
|
424
|
+
conversations.id
|
|
425
|
+
],
|
|
426
|
+
name: "evaluation_result_conversation_fk"
|
|
427
|
+
}).onDelete("cascade"),
|
|
428
|
+
foreignKey({
|
|
429
|
+
columns: [
|
|
430
|
+
table.tenantId,
|
|
431
|
+
table.projectId,
|
|
432
|
+
table.evaluationRunId
|
|
433
|
+
],
|
|
434
|
+
foreignColumns: [
|
|
435
|
+
evaluationRun.tenantId,
|
|
436
|
+
evaluationRun.projectId,
|
|
437
|
+
evaluationRun.id
|
|
438
|
+
],
|
|
439
|
+
name: "evaluation_result_evaluation_run_fk"
|
|
440
|
+
}).onDelete("cascade")
|
|
441
|
+
]);
|
|
442
|
+
const conversationsRelations = relations(conversations, ({ many }) => ({ messages: many(messages) }));
|
|
443
|
+
const messagesRelations = relations(messages, ({ one, many }) => ({
|
|
444
|
+
conversation: one(conversations, {
|
|
445
|
+
fields: [messages.conversationId],
|
|
446
|
+
references: [conversations.id]
|
|
447
|
+
}),
|
|
448
|
+
task: one(tasks, {
|
|
449
|
+
fields: [messages.taskId],
|
|
450
|
+
references: [tasks.id]
|
|
451
|
+
}),
|
|
452
|
+
parentMessage: one(messages, {
|
|
453
|
+
fields: [messages.parentMessageId],
|
|
454
|
+
references: [messages.id],
|
|
455
|
+
relationName: "parentChild"
|
|
456
|
+
}),
|
|
457
|
+
childMessages: many(messages, { relationName: "parentChild" })
|
|
458
|
+
}));
|
|
459
|
+
const tasksRelations = relations(tasks, ({ many }) => ({
|
|
460
|
+
messages: many(messages),
|
|
461
|
+
ledgerArtifacts: many(ledgerArtifacts),
|
|
462
|
+
parentRelations: many(taskRelations, { relationName: "childTask" }),
|
|
463
|
+
childRelations: many(taskRelations, { relationName: "parentTask" })
|
|
464
|
+
}));
|
|
465
|
+
const taskRelationsRelations = relations(taskRelations, ({ one }) => ({
|
|
466
|
+
parentTask: one(tasks, {
|
|
467
|
+
fields: [taskRelations.parentTaskId],
|
|
468
|
+
references: [tasks.id],
|
|
469
|
+
relationName: "parentTask"
|
|
470
|
+
}),
|
|
471
|
+
childTask: one(tasks, {
|
|
472
|
+
fields: [taskRelations.childTaskId],
|
|
473
|
+
references: [tasks.id],
|
|
474
|
+
relationName: "childTask"
|
|
475
|
+
})
|
|
476
|
+
}));
|
|
477
|
+
const ledgerArtifactsRelations = relations(ledgerArtifacts, ({ one }) => ({ task: one(tasks, {
|
|
478
|
+
fields: [ledgerArtifacts.taskId],
|
|
479
|
+
references: [tasks.id]
|
|
480
|
+
}) }));
|
|
481
|
+
|
|
482
|
+
//#endregion
|
|
483
|
+
export { account, apiKeys, contextCache, conversations, conversationsRelations, datasetRun, datasetRunConversationRelations, deviceCode, evaluationResult, evaluationRun, invitation, ledgerArtifacts, ledgerArtifactsRelations, member, messages, messagesRelations, organization, projectMetadata, runtime_schema_exports, session, ssoProvider, taskRelations, taskRelationsRelations, tasks, tasksRelations, triggerInvocations, user, verification };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { AgentsRunDatabaseClient } from "./runtime-client.js";
|
|
2
|
+
|
|
3
|
+
//#region src/db/runtime/test-runtime-client.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Creates a test database client using an in-memory PostgreSQL database (PGlite)
|
|
7
|
+
* This provides real database operations for integration testing with perfect isolation
|
|
8
|
+
* Each call creates a fresh database with all migrations applied
|
|
9
|
+
*/
|
|
10
|
+
declare function createTestRuntimeDatabaseClient(drizzleDir: string): Promise<AgentsRunDatabaseClient>;
|
|
11
|
+
declare function createTestRuntimeDatabaseClientNoMigrations(): AgentsRunDatabaseClient;
|
|
12
|
+
/**
|
|
13
|
+
* Cleans up test database by removing all data but keeping schema
|
|
14
|
+
* Dynamically gets all tables from the public schema and truncates them
|
|
15
|
+
*/
|
|
16
|
+
declare function cleanupTestRuntimeDatabase(db: AgentsRunDatabaseClient): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Closes the test database and removes the file
|
|
19
|
+
*/
|
|
20
|
+
declare function closeTestRuntimeDatabase(db: AgentsRunDatabaseClient): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Creates a test organization in the database
|
|
23
|
+
* This is a helper for tests that need organization records before creating projects/agents
|
|
24
|
+
*/
|
|
25
|
+
declare function createTestOrganization(db: AgentsRunDatabaseClient, tenantId: string): Promise<void>;
|
|
26
|
+
//#endregion
|
|
27
|
+
export { cleanupTestRuntimeDatabase, closeTestRuntimeDatabase, createTestOrganization, createTestRuntimeDatabaseClient, createTestRuntimeDatabaseClientNoMigrations };
|
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
import { organization } from "
|
|
2
|
-
import {
|
|
1
|
+
import { organization } from "../../auth/auth-schema.js";
|
|
2
|
+
import { runtime_schema_exports } from "./runtime-schema.js";
|
|
3
3
|
import { sql } from "drizzle-orm";
|
|
4
|
-
import { dirname, join } from "node:path";
|
|
5
|
-
import { fileURLToPath } from "node:url";
|
|
6
4
|
import { PGlite } from "@electric-sql/pglite";
|
|
7
5
|
import { drizzle } from "drizzle-orm/pglite";
|
|
8
6
|
import { migrate } from "drizzle-orm/pglite/migrator";
|
|
9
7
|
|
|
10
|
-
//#region src/db/test-client.ts
|
|
11
|
-
const DIRNAME = dirname(fileURLToPath(import.meta.url));
|
|
8
|
+
//#region src/db/runtime/test-runtime-client.ts
|
|
12
9
|
/**
|
|
13
10
|
* Creates a test database client using an in-memory PostgreSQL database (PGlite)
|
|
14
11
|
* This provides real database operations for integration testing with perfect isolation
|
|
15
12
|
* Each call creates a fresh database with all migrations applied
|
|
16
13
|
*/
|
|
17
|
-
async function
|
|
18
|
-
const db = drizzle(new PGlite(), { schema:
|
|
14
|
+
async function createTestRuntimeDatabaseClient(drizzleDir) {
|
|
15
|
+
const db = drizzle(new PGlite(), { schema: runtime_schema_exports });
|
|
19
16
|
try {
|
|
20
|
-
if (!drizzleDir) drizzleDir = join(DIRNAME, "../../drizzle");
|
|
21
17
|
await migrate(db, { migrationsFolder: drizzleDir });
|
|
22
18
|
} catch (error) {
|
|
23
19
|
console.error("Failed to initialize test database schema:", error);
|
|
@@ -25,11 +21,14 @@ async function createTestDatabaseClient(drizzleDir) {
|
|
|
25
21
|
}
|
|
26
22
|
return db;
|
|
27
23
|
}
|
|
24
|
+
function createTestRuntimeDatabaseClientNoMigrations() {
|
|
25
|
+
return drizzle(new PGlite(), { schema: runtime_schema_exports });
|
|
26
|
+
}
|
|
28
27
|
/**
|
|
29
28
|
* Cleans up test database by removing all data but keeping schema
|
|
30
29
|
* Dynamically gets all tables from the public schema and truncates them
|
|
31
30
|
*/
|
|
32
|
-
async function
|
|
31
|
+
async function cleanupTestRuntimeDatabase(db) {
|
|
33
32
|
try {
|
|
34
33
|
const tables = (await db.execute(sql.raw(`
|
|
35
34
|
SELECT tablename
|
|
@@ -46,7 +45,7 @@ async function cleanupTestDatabase(db) {
|
|
|
46
45
|
/**
|
|
47
46
|
* Closes the test database and removes the file
|
|
48
47
|
*/
|
|
49
|
-
async function
|
|
48
|
+
async function closeTestRuntimeDatabase(db) {
|
|
50
49
|
try {
|
|
51
50
|
if ("close" in db && typeof db.close === "function") db.close();
|
|
52
51
|
} catch (error) {
|
|
@@ -67,19 +66,6 @@ async function createTestOrganization(db, tenantId) {
|
|
|
67
66
|
metadata: null
|
|
68
67
|
}).onConflictDoNothing();
|
|
69
68
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Creates a test project in the database
|
|
72
|
-
* Ensures the organization exists first
|
|
73
|
-
*/
|
|
74
|
-
async function createTestProject(db, tenantId, projectId = "default") {
|
|
75
|
-
await createTestOrganization(db, tenantId);
|
|
76
|
-
await db.insert(projects).values({
|
|
77
|
-
tenantId,
|
|
78
|
-
id: projectId,
|
|
79
|
-
name: `Test Project ${projectId}`,
|
|
80
|
-
description: `Test project for ${projectId}`
|
|
81
|
-
}).onConflictDoNothing();
|
|
82
|
-
}
|
|
83
69
|
|
|
84
70
|
//#endregion
|
|
85
|
-
export {
|
|
71
|
+
export { cleanupTestRuntimeDatabase, closeTestRuntimeDatabase, createTestOrganization, createTestRuntimeDatabaseClient, createTestRuntimeDatabaseClientNoMigrations };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { AgentsManageDatabaseClient } from "../db/manage/manage-client.js";
|
|
2
|
+
|
|
3
|
+
//#region src/dolt/branch.d.ts
|
|
4
|
+
type branchScopes = {
|
|
5
|
+
tenantId: string;
|
|
6
|
+
projectId: string;
|
|
7
|
+
branchName: string;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Create a new branch
|
|
11
|
+
*/
|
|
12
|
+
declare const doltBranch: (db: AgentsManageDatabaseClient) => (params: {
|
|
13
|
+
name: string;
|
|
14
|
+
startPoint?: string;
|
|
15
|
+
}) => Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Delete a branch
|
|
18
|
+
*/
|
|
19
|
+
declare const doltDeleteBranch: (db: AgentsManageDatabaseClient) => (params: {
|
|
20
|
+
name: string;
|
|
21
|
+
force?: boolean;
|
|
22
|
+
}) => Promise<void>;
|
|
23
|
+
/**
|
|
24
|
+
* Rename a branch
|
|
25
|
+
*/
|
|
26
|
+
declare const doltRenameBranch: (db: AgentsManageDatabaseClient) => (params: {
|
|
27
|
+
oldName: string;
|
|
28
|
+
newName: string;
|
|
29
|
+
}) => Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* List all branches
|
|
32
|
+
*/
|
|
33
|
+
declare const doltListBranches: (db: AgentsManageDatabaseClient) => () => Promise<{
|
|
34
|
+
name: string;
|
|
35
|
+
hash: string;
|
|
36
|
+
latest_commit_date: Date;
|
|
37
|
+
}[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Check if a branch exists
|
|
40
|
+
*/
|
|
41
|
+
declare const doltBranchExists: (db: AgentsManageDatabaseClient) => (params: {
|
|
42
|
+
name: string;
|
|
43
|
+
}) => Promise<boolean>;
|
|
44
|
+
/**
|
|
45
|
+
* Checkout a branch or create and checkout a new branch
|
|
46
|
+
*/
|
|
47
|
+
declare const doltCheckout: (db: AgentsManageDatabaseClient) => (params: {
|
|
48
|
+
branch: string;
|
|
49
|
+
create?: boolean;
|
|
50
|
+
}) => Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Get the currently active branch
|
|
53
|
+
*/
|
|
54
|
+
declare const doltActiveBranch: (db: AgentsManageDatabaseClient) => () => Promise<string>;
|
|
55
|
+
declare const doltGetBranchNamespace: (scopes: branchScopes) => () => string;
|
|
56
|
+
/**
|
|
57
|
+
* Create a branch if it doesn't exist, handling race conditions gracefully.
|
|
58
|
+
* If multiple concurrent requests try to create the same branch, only one will succeed.
|
|
59
|
+
*/
|
|
60
|
+
declare const ensureBranchExists: (db: AgentsManageDatabaseClient, branchName: string) => Promise<void>;
|
|
61
|
+
//#endregion
|
|
62
|
+
export { branchScopes, doltActiveBranch, doltBranch, doltBranchExists, doltCheckout, doltDeleteBranch, doltGetBranchNamespace, doltListBranches, doltRenameBranch, ensureBranchExists };
|