@inkeep/agents-core 0.47.5 → 0.48.1

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.
Files changed (72) hide show
  1. package/README.md +1 -1
  2. package/dist/auth/auth-schema.d.ts +83 -83
  3. package/dist/auth/auth-validation-schemas.d.ts +148 -148
  4. package/dist/auth/auth.d.ts +5 -5
  5. package/dist/client-exports.d.ts +13 -2
  6. package/dist/client-exports.js +5 -4
  7. package/dist/data-access/index.d.ts +6 -1
  8. package/dist/data-access/index.js +6 -1
  9. package/dist/data-access/manage/agentFull.js +154 -1
  10. package/dist/data-access/manage/agents.d.ts +4 -4
  11. package/dist/data-access/manage/agents.js +56 -4
  12. package/dist/data-access/manage/artifactComponents.d.ts +41 -5
  13. package/dist/data-access/manage/functionTools.d.ts +3 -3
  14. package/dist/data-access/manage/projectFull.js +97 -0
  15. package/dist/data-access/manage/scheduledTriggers.d.ts +80 -0
  16. package/dist/data-access/manage/scheduledTriggers.js +76 -0
  17. package/dist/data-access/manage/scheduledWorkflows.d.ts +29 -0
  18. package/dist/data-access/manage/scheduledWorkflows.js +32 -0
  19. package/dist/data-access/manage/skills.d.ts +109 -0
  20. package/dist/data-access/manage/skills.js +122 -0
  21. package/dist/data-access/manage/tools.d.ts +4 -4
  22. package/dist/data-access/manage/triggers.d.ts +2 -2
  23. package/dist/data-access/runtime/scheduledTriggerInvocations.d.ts +233 -0
  24. package/dist/data-access/runtime/scheduledTriggerInvocations.js +226 -0
  25. package/dist/data-access/runtime/workAppSlack.d.ts +55 -0
  26. package/dist/data-access/runtime/workAppSlack.js +146 -0
  27. package/dist/db/manage/manage-schema.d.ts +1519 -589
  28. package/dist/db/manage/manage-schema.js +240 -15
  29. package/dist/db/runtime/runtime-schema.d.ts +1236 -234
  30. package/dist/db/runtime/runtime-schema.js +108 -3
  31. package/dist/index.d.ts +15 -6
  32. package/dist/index.js +13 -5
  33. package/dist/types/entities.d.ts +15 -2
  34. package/dist/types/index.d.ts +2 -2
  35. package/dist/utils/index.d.ts +5 -2
  36. package/dist/utils/index.js +5 -2
  37. package/dist/utils/slack-link-token.d.ts +57 -0
  38. package/dist/utils/slack-link-token.js +112 -0
  39. package/dist/utils/slack-user-token.d.ts +65 -0
  40. package/dist/utils/slack-user-token.js +129 -0
  41. package/dist/utils/sse-parser.d.ts +35 -0
  42. package/dist/utils/sse-parser.js +71 -0
  43. package/dist/utils/tracer-factory.d.ts +11 -2
  44. package/dist/utils/tracer-factory.js +24 -5
  45. package/dist/utils/tracer.d.ts +2 -2
  46. package/dist/utils/tracer.js +2 -2
  47. package/dist/utils/trigger-auth.d.ts +1 -1
  48. package/dist/validation/drizzle-schema-helpers.d.ts +3 -3
  49. package/dist/validation/extend-schemas.d.ts +34 -0
  50. package/dist/validation/extend-schemas.js +33 -0
  51. package/dist/validation/index.d.ts +2 -2
  52. package/dist/validation/index.js +2 -2
  53. package/dist/validation/json-schemas.d.ts +28 -0
  54. package/dist/validation/json-schemas.js +56 -0
  55. package/dist/validation/schemas.d.ts +4930 -1640
  56. package/dist/validation/schemas.js +159 -38
  57. package/dist/validation/stream-event-schemas.d.ts +0 -2
  58. package/dist/validation/stream-event-schemas.js +1 -2
  59. package/drizzle/manage/0007_nice_lilandra.sql +3 -0
  60. package/drizzle/manage/0008_friendly_mentallo.sql +32 -0
  61. package/drizzle/manage/0009_chilly_old_lace.sql +39 -0
  62. package/drizzle/manage/meta/0007_snapshot.json +3148 -0
  63. package/drizzle/manage/meta/0008_snapshot.json +3391 -0
  64. package/drizzle/manage/meta/0009_snapshot.json +3670 -0
  65. package/drizzle/manage/meta/_journal.json +21 -0
  66. package/drizzle/runtime/0012_greedy_hulk.sql +84 -0
  67. package/drizzle/runtime/0013_huge_white_queen.sql +19 -0
  68. package/drizzle/runtime/meta/0007_snapshot.json +1 -1
  69. package/drizzle/runtime/meta/0012_snapshot.json +3622 -0
  70. package/drizzle/runtime/meta/0013_snapshot.json +3746 -0
  71. package/drizzle/runtime/meta/_journal.json +14 -0
  72. package/package.json +1 -1
@@ -0,0 +1,76 @@
1
+ import { scheduledTriggers } from "../../db/manage/manage-schema.js";
2
+ import { and, count, desc, eq } from "drizzle-orm";
3
+
4
+ //#region src/data-access/manage/scheduledTriggers.ts
5
+ /**
6
+ * Get a scheduled trigger by ID (agent-scoped)
7
+ */
8
+ const getScheduledTriggerById = (db) => async (params) => {
9
+ const { scopes, scheduledTriggerId } = params;
10
+ return await db.query.scheduledTriggers.findFirst({ where: and(eq(scheduledTriggers.tenantId, scopes.tenantId), eq(scheduledTriggers.projectId, scopes.projectId), eq(scheduledTriggers.agentId, scopes.agentId), eq(scheduledTriggers.id, scheduledTriggerId)) });
11
+ };
12
+ /**
13
+ * List scheduled triggers for an agent with pagination
14
+ */
15
+ const listScheduledTriggersPaginated = (db) => async (params) => {
16
+ const page = params.pagination?.page || 1;
17
+ const limit = Math.min(params.pagination?.limit || 10, 100);
18
+ const offset = (page - 1) * limit;
19
+ const whereClause = and(eq(scheduledTriggers.tenantId, params.scopes.tenantId), eq(scheduledTriggers.projectId, params.scopes.projectId), eq(scheduledTriggers.agentId, params.scopes.agentId));
20
+ const [data, totalResult] = await Promise.all([db.select().from(scheduledTriggers).where(whereClause).limit(limit).offset(offset).orderBy(desc(scheduledTriggers.createdAt)), db.select({ count: count() }).from(scheduledTriggers).where(whereClause)]);
21
+ const total = totalResult[0]?.count || 0;
22
+ return {
23
+ data,
24
+ pagination: {
25
+ page,
26
+ limit,
27
+ total,
28
+ pages: Math.ceil(total / limit)
29
+ }
30
+ };
31
+ };
32
+ /**
33
+ * Create a new scheduled trigger (agent-scoped)
34
+ */
35
+ const createScheduledTrigger = (db) => async (params) => {
36
+ return (await db.insert(scheduledTriggers).values(params).returning())[0];
37
+ };
38
+ /**
39
+ * Update a scheduled trigger (agent-scoped)
40
+ */
41
+ const updateScheduledTrigger = (db) => async (params) => {
42
+ const updateData = {
43
+ ...params.data,
44
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
45
+ };
46
+ return (await db.update(scheduledTriggers).set(updateData).where(and(eq(scheduledTriggers.tenantId, params.scopes.tenantId), eq(scheduledTriggers.projectId, params.scopes.projectId), eq(scheduledTriggers.agentId, params.scopes.agentId), eq(scheduledTriggers.id, params.scheduledTriggerId))).returning())[0];
47
+ };
48
+ /**
49
+ * Delete a scheduled trigger (agent-scoped)
50
+ */
51
+ const deleteScheduledTrigger = (db) => async (params) => {
52
+ await db.delete(scheduledTriggers).where(and(eq(scheduledTriggers.tenantId, params.scopes.tenantId), eq(scheduledTriggers.projectId, params.scopes.projectId), eq(scheduledTriggers.agentId, params.scopes.agentId), eq(scheduledTriggers.id, params.scheduledTriggerId)));
53
+ };
54
+ /**
55
+ * Upsert a scheduled trigger (create if it doesn't exist, update if it does)
56
+ */
57
+ const upsertScheduledTrigger = (db) => async (params) => {
58
+ if (await getScheduledTriggerById(db)({
59
+ scopes: params.scopes,
60
+ scheduledTriggerId: params.data.id
61
+ })) return await updateScheduledTrigger(db)({
62
+ scopes: params.scopes,
63
+ scheduledTriggerId: params.data.id,
64
+ data: params.data
65
+ });
66
+ return await createScheduledTrigger(db)(params.data);
67
+ };
68
+ /**
69
+ * List all scheduled triggers for an agent (non-paginated, used by agentFull)
70
+ */
71
+ const listScheduledTriggers = (db) => async (params) => {
72
+ return await db.select().from(scheduledTriggers).where(and(eq(scheduledTriggers.tenantId, params.scopes.tenantId), eq(scheduledTriggers.projectId, params.scopes.projectId), eq(scheduledTriggers.agentId, params.scopes.agentId)));
73
+ };
74
+
75
+ //#endregion
76
+ export { createScheduledTrigger, deleteScheduledTrigger, getScheduledTriggerById, listScheduledTriggers, listScheduledTriggersPaginated, updateScheduledTrigger, upsertScheduledTrigger };
@@ -0,0 +1,29 @@
1
+ import { AgentScopeConfig } from "../../types/utility.js";
2
+ import { AgentsManageDatabaseClient } from "../../db/manage/manage-client.js";
3
+ import { ScheduledWorkflow, ScheduledWorkflowInsert } from "../../validation/schemas.js";
4
+
5
+ //#region src/data-access/manage/scheduledWorkflows.d.ts
6
+
7
+ /**
8
+ * Get a scheduled workflow by trigger ID (agent-scoped)
9
+ */
10
+ declare const getScheduledWorkflowByTriggerId: (db: AgentsManageDatabaseClient) => (params: {
11
+ scopes: AgentScopeConfig;
12
+ scheduledTriggerId: string;
13
+ }) => Promise<ScheduledWorkflow | undefined>;
14
+ /**
15
+ * Create a new scheduled workflow (agent-scoped)
16
+ */
17
+ declare const createScheduledWorkflow: (db: AgentsManageDatabaseClient) => (params: ScheduledWorkflowInsert) => Promise<ScheduledWorkflow>;
18
+ /**
19
+ * Update workflow run ID and/or status for a scheduled workflow
20
+ * Used when a workflow is started/restarted/cancelled
21
+ */
22
+ declare const updateScheduledWorkflowRunId: (db: AgentsManageDatabaseClient) => (params: {
23
+ scopes: AgentScopeConfig;
24
+ scheduledWorkflowId: string;
25
+ workflowRunId: string | null;
26
+ status?: "running" | "completed" | "cancelled" | "failed";
27
+ }) => Promise<ScheduledWorkflow>;
28
+ //#endregion
29
+ export { createScheduledWorkflow, getScheduledWorkflowByTriggerId, updateScheduledWorkflowRunId };
@@ -0,0 +1,32 @@
1
+ import { scheduledWorkflows } from "../../db/manage/manage-schema.js";
2
+ import { and, eq } from "drizzle-orm";
3
+
4
+ //#region src/data-access/manage/scheduledWorkflows.ts
5
+ /**
6
+ * Get a scheduled workflow by trigger ID (agent-scoped)
7
+ */
8
+ const getScheduledWorkflowByTriggerId = (db) => async (params) => {
9
+ const { scopes, scheduledTriggerId } = params;
10
+ return await db.query.scheduledWorkflows.findFirst({ where: and(eq(scheduledWorkflows.tenantId, scopes.tenantId), eq(scheduledWorkflows.projectId, scopes.projectId), eq(scheduledWorkflows.agentId, scopes.agentId), eq(scheduledWorkflows.scheduledTriggerId, scheduledTriggerId)) });
11
+ };
12
+ /**
13
+ * Create a new scheduled workflow (agent-scoped)
14
+ */
15
+ const createScheduledWorkflow = (db) => async (params) => {
16
+ return (await db.insert(scheduledWorkflows).values(params).returning())[0];
17
+ };
18
+ /**
19
+ * Update workflow run ID and/or status for a scheduled workflow
20
+ * Used when a workflow is started/restarted/cancelled
21
+ */
22
+ const updateScheduledWorkflowRunId = (db) => async (params) => {
23
+ const updateData = {
24
+ workflowRunId: params.workflowRunId,
25
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
26
+ };
27
+ if (params.status) updateData.status = params.status;
28
+ return (await db.update(scheduledWorkflows).set(updateData).where(and(eq(scheduledWorkflows.tenantId, params.scopes.tenantId), eq(scheduledWorkflows.projectId, params.scopes.projectId), eq(scheduledWorkflows.agentId, params.scopes.agentId), eq(scheduledWorkflows.id, params.scheduledWorkflowId))).returning())[0];
29
+ };
30
+
31
+ //#endregion
32
+ export { createScheduledWorkflow, getScheduledWorkflowByTriggerId, updateScheduledWorkflowRunId };
@@ -0,0 +1,109 @@
1
+ import { AgentScopeConfig, PaginationConfig, ProjectScopeConfig, SubAgentScopeConfig } from "../../types/utility.js";
2
+ import { AgentsManageDatabaseClient } from "../../db/manage/manage-client.js";
3
+ import { SkillInsert, SkillUpdate, SubAgentSkillWithIndex } from "../../types/entities.js";
4
+
5
+ //#region src/data-access/manage/skills.d.ts
6
+ declare const getSkillById: (db: AgentsManageDatabaseClient) => (params: {
7
+ scopes: ProjectScopeConfig;
8
+ skillId: string;
9
+ }) => Promise<{
10
+ id: string;
11
+ name: string;
12
+ description: string;
13
+ tenantId: string;
14
+ projectId: string;
15
+ createdAt: string;
16
+ updatedAt: string;
17
+ metadata: Record<string, string> | null;
18
+ content: string;
19
+ } | null>;
20
+ declare const listSkills: (db: AgentsManageDatabaseClient) => (params: {
21
+ scopes: ProjectScopeConfig;
22
+ pagination?: PaginationConfig;
23
+ }) => Promise<{
24
+ data: {
25
+ createdAt: string;
26
+ updatedAt: string;
27
+ id: string;
28
+ name: string;
29
+ description: string;
30
+ content: string;
31
+ metadata: Record<string, string> | null;
32
+ projectId: string;
33
+ tenantId: string;
34
+ }[];
35
+ pagination: {
36
+ page: number;
37
+ limit: number;
38
+ total: number;
39
+ pages: number;
40
+ };
41
+ }>;
42
+ declare const createSkill: (db: AgentsManageDatabaseClient) => (data: SkillInsert) => Promise<{
43
+ id: string;
44
+ name: string;
45
+ description: string;
46
+ tenantId: string;
47
+ projectId: string;
48
+ createdAt: string;
49
+ updatedAt: string;
50
+ metadata: Record<string, string> | null;
51
+ content: string;
52
+ }>;
53
+ declare const upsertSkill: (db: AgentsManageDatabaseClient) => (data: SkillInsert) => Promise<{
54
+ id: string;
55
+ name: string;
56
+ description: string;
57
+ tenantId: string;
58
+ projectId: string;
59
+ createdAt: string;
60
+ updatedAt: string;
61
+ metadata: Record<string, string> | null;
62
+ content: string;
63
+ }>;
64
+ declare const updateSkill: (db: AgentsManageDatabaseClient) => (params: {
65
+ scopes: ProjectScopeConfig;
66
+ skillId: string;
67
+ data: SkillUpdate;
68
+ }) => Promise<{
69
+ createdAt: string;
70
+ updatedAt: string;
71
+ id: string;
72
+ name: string;
73
+ description: string;
74
+ content: string;
75
+ metadata: Record<string, string> | null;
76
+ projectId: string;
77
+ tenantId: string;
78
+ }>;
79
+ declare const deleteSkill: (db: AgentsManageDatabaseClient) => (params: {
80
+ scopes: ProjectScopeConfig;
81
+ skillId: string;
82
+ }) => Promise<boolean>;
83
+ declare const getSkillsForSubAgents: (db: AgentsManageDatabaseClient) => (params: {
84
+ scopes: AgentScopeConfig;
85
+ subAgentIds: string[];
86
+ }) => Promise<SubAgentSkillWithIndex[]>;
87
+ declare const upsertSubAgentSkill: (db: AgentsManageDatabaseClient) => (params: {
88
+ scopes: SubAgentScopeConfig;
89
+ skillId: string;
90
+ index: number;
91
+ alwaysLoaded?: boolean;
92
+ }) => Promise<{
93
+ id: string;
94
+ tenantId: string;
95
+ projectId: string;
96
+ agentId: string;
97
+ createdAt: string;
98
+ updatedAt: string;
99
+ index: number;
100
+ alwaysLoaded: boolean;
101
+ subAgentId: string;
102
+ skillId: string;
103
+ }>;
104
+ declare const deleteSubAgentSkill: (db: AgentsManageDatabaseClient) => (params: {
105
+ scopes: AgentScopeConfig;
106
+ subAgentSkillId: string;
107
+ }) => Promise<boolean>;
108
+ //#endregion
109
+ export { createSkill, deleteSkill, deleteSubAgentSkill, getSkillById, getSkillsForSubAgents, listSkills, updateSkill, upsertSkill, upsertSubAgentSkill };
@@ -0,0 +1,122 @@
1
+ import { skills, subAgentSkills } from "../../db/manage/manage-schema.js";
2
+ import { getLogger } from "../../utils/logger.js";
3
+ import { generateId } from "../../utils/conversations.js";
4
+ import "../../index.js";
5
+ import { and, asc, count, desc, eq, inArray } from "drizzle-orm";
6
+
7
+ //#region src/data-access/manage/skills.ts
8
+ const logger = getLogger("skills-dal");
9
+ const getSkillById = (db) => async (params) => {
10
+ return await db.query.skills.findFirst({ where: and(eq(skills.tenantId, params.scopes.tenantId), eq(skills.projectId, params.scopes.projectId), eq(skills.id, params.skillId)) }) ?? null;
11
+ };
12
+ const listSkills = (db) => async (params) => {
13
+ const page = params.pagination?.page || 1;
14
+ const limit = Math.min(params.pagination?.limit || 10, 100);
15
+ const offset = (page - 1) * limit;
16
+ const whereClause = and(eq(skills.tenantId, params.scopes.tenantId), eq(skills.projectId, params.scopes.projectId));
17
+ const [data, totalResult] = await Promise.all([db.select().from(skills).where(whereClause).limit(limit).offset(offset).orderBy(desc(skills.createdAt)), db.select({ count: count() }).from(skills).where(whereClause)]);
18
+ const total = totalResult[0]?.count || 0;
19
+ return {
20
+ data,
21
+ pagination: {
22
+ page,
23
+ limit,
24
+ total,
25
+ pages: Math.ceil(total / limit)
26
+ }
27
+ };
28
+ };
29
+ const createSkill = (db) => async (data) => {
30
+ const now = (/* @__PURE__ */ new Date()).toISOString();
31
+ const insertData = {
32
+ ...data,
33
+ id: data.name,
34
+ createdAt: now,
35
+ updatedAt: now
36
+ };
37
+ const [result] = await db.insert(skills).values(insertData).returning();
38
+ return result;
39
+ };
40
+ const upsertSkill = (db) => async (data) => {
41
+ const now = (/* @__PURE__ */ new Date()).toISOString();
42
+ const baseData = {
43
+ ...data,
44
+ id: data.name
45
+ };
46
+ if (await db.query.skills.findFirst({ where: and(eq(skills.tenantId, baseData.tenantId), eq(skills.projectId, baseData.projectId), eq(skills.id, baseData.id)) })) {
47
+ const [result$1] = await db.update(skills).set({
48
+ name: baseData.name,
49
+ description: baseData.description,
50
+ content: baseData.content,
51
+ metadata: baseData.metadata,
52
+ updatedAt: now
53
+ }).where(and(eq(skills.tenantId, baseData.tenantId), eq(skills.projectId, baseData.projectId), eq(skills.id, baseData.id))).returning();
54
+ logger.info({ skillId: baseData.id }, "Updated skill");
55
+ return result$1;
56
+ }
57
+ const insertData = {
58
+ ...baseData,
59
+ createdAt: now,
60
+ updatedAt: now
61
+ };
62
+ const [result] = await db.insert(skills).values(insertData).returning();
63
+ logger.info({ skillId: baseData.id }, "Created skill");
64
+ return result;
65
+ };
66
+ const updateSkill = (db) => async (params) => {
67
+ const { tenantId: _, projectId: _2, ...data } = params.data;
68
+ const updateData = {
69
+ ...data,
70
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
71
+ };
72
+ const [result] = await db.update(skills).set(updateData).where(and(eq(skills.tenantId, params.scopes.tenantId), eq(skills.projectId, params.scopes.projectId), eq(skills.id, params.skillId))).returning();
73
+ return result ?? null;
74
+ };
75
+ const deleteSkill = (db) => async (params) => {
76
+ return (await db.delete(skills).where(and(eq(skills.tenantId, params.scopes.tenantId), eq(skills.projectId, params.scopes.projectId), eq(skills.id, params.skillId))).returning()).length > 0;
77
+ };
78
+ const getSkillsForSubAgents = (db) => async (params) => {
79
+ if (!params.subAgentIds.length) return [];
80
+ return await db.select({
81
+ subAgentSkillId: subAgentSkills.id,
82
+ subAgentId: subAgentSkills.subAgentId,
83
+ index: subAgentSkills.index,
84
+ alwaysLoaded: subAgentSkills.alwaysLoaded,
85
+ id: skills.id,
86
+ name: skills.name,
87
+ description: skills.description,
88
+ content: skills.content,
89
+ metadata: skills.metadata,
90
+ createdAt: skills.createdAt,
91
+ updatedAt: skills.updatedAt
92
+ }).from(subAgentSkills).innerJoin(skills, and(eq(subAgentSkills.skillId, skills.id), eq(subAgentSkills.tenantId, skills.tenantId), eq(subAgentSkills.projectId, skills.projectId))).where(and(eq(subAgentSkills.tenantId, params.scopes.tenantId), eq(subAgentSkills.projectId, params.scopes.projectId), eq(subAgentSkills.agentId, params.scopes.agentId), inArray(subAgentSkills.subAgentId, params.subAgentIds))).orderBy(asc(subAgentSkills.index), asc(subAgentSkills.createdAt));
93
+ };
94
+ const upsertSubAgentSkill = (db) => async (params) => {
95
+ const now = (/* @__PURE__ */ new Date()).toISOString();
96
+ const existing = await db.query.subAgentSkills.findFirst({ where: and(eq(subAgentSkills.tenantId, params.scopes.tenantId), eq(subAgentSkills.projectId, params.scopes.projectId), eq(subAgentSkills.agentId, params.scopes.agentId), eq(subAgentSkills.subAgentId, params.scopes.subAgentId), eq(subAgentSkills.skillId, params.skillId)) });
97
+ if (existing) {
98
+ const [result$1] = await db.update(subAgentSkills).set({
99
+ index: params.index,
100
+ alwaysLoaded: params.alwaysLoaded ?? existing.alwaysLoaded,
101
+ updatedAt: now
102
+ }).where(eq(subAgentSkills.id, existing.id)).returning();
103
+ return result$1;
104
+ }
105
+ const insertData = {
106
+ ...params.scopes,
107
+ id: generateId(),
108
+ skillId: params.skillId,
109
+ index: params.index,
110
+ alwaysLoaded: params.alwaysLoaded ?? false,
111
+ createdAt: now,
112
+ updatedAt: now
113
+ };
114
+ const [result] = await db.insert(subAgentSkills).values(insertData).returning();
115
+ return result;
116
+ };
117
+ const deleteSubAgentSkill = (db) => async (params) => {
118
+ return (await db.delete(subAgentSkills).where(and(eq(subAgentSkills.tenantId, params.scopes.tenantId), eq(subAgentSkills.projectId, params.scopes.projectId), eq(subAgentSkills.agentId, params.scopes.agentId), eq(subAgentSkills.id, params.subAgentSkillId))).returning()).length > 0;
119
+ };
120
+
121
+ //#endregion
122
+ export { createSkill, deleteSkill, deleteSubAgentSkill, getSkillById, getSkillsForSubAgents, listSkills, updateSkill, upsertSkill, upsertSubAgentSkill };
@@ -51,8 +51,6 @@ declare const listTools: (db: AgentsManageDatabaseClient) => (params: {
51
51
  data: {
52
52
  createdAt: string;
53
53
  updatedAt: string;
54
- name: string;
55
- description: string | null;
56
54
  config: {
57
55
  type: "mcp";
58
56
  mcp: ToolMcpConfig;
@@ -64,6 +62,8 @@ declare const listTools: (db: AgentsManageDatabaseClient) => (params: {
64
62
  capabilities: ToolServerCapabilities | null;
65
63
  lastError: string | null;
66
64
  isWorkApp: boolean;
65
+ name: string;
66
+ description: string | null;
67
67
  projectId: string;
68
68
  tenantId: string;
69
69
  id: string;
@@ -102,8 +102,6 @@ declare const updateTool: (db: AgentsManageDatabaseClient) => (params: {
102
102
  }) => Promise<{
103
103
  createdAt: string;
104
104
  updatedAt: string;
105
- name: string;
106
- description: string | null;
107
105
  config: {
108
106
  type: "mcp";
109
107
  mcp: ToolMcpConfig;
@@ -115,6 +113,8 @@ declare const updateTool: (db: AgentsManageDatabaseClient) => (params: {
115
113
  capabilities: ToolServerCapabilities | null;
116
114
  lastError: string | null;
117
115
  isWorkApp: boolean;
116
+ name: string;
117
+ description: string | null;
118
118
  projectId: string;
119
119
  tenantId: string;
120
120
  id: string;
@@ -40,13 +40,13 @@ declare const listTriggersPaginated: (db: AgentsManageDatabaseClient) => (params
40
40
  algorithm: "sha256" | "sha512" | "sha384" | "sha1" | "md5";
41
41
  encoding: "hex" | "base64";
42
42
  signature: {
43
- source: "query" | "header" | "body";
43
+ source: "query" | "body" | "header";
44
44
  key: string;
45
45
  prefix?: string | undefined;
46
46
  regex?: string | undefined;
47
47
  };
48
48
  signedComponents: {
49
- source: "literal" | "header" | "body";
49
+ source: "literal" | "body" | "header";
50
50
  required: boolean;
51
51
  key?: string | undefined;
52
52
  value?: string | undefined;
@@ -0,0 +1,233 @@
1
+ import { AgentScopeConfig, PaginationConfig } from "../../types/utility.js";
2
+ import { AgentsRunDatabaseClient } from "../../db/runtime/runtime-client.js";
3
+ import { ScheduledTriggerInvocation, ScheduledTriggerInvocationInsert, ScheduledTriggerInvocationStatus, ScheduledTriggerInvocationUpdate } from "../../validation/schemas.js";
4
+
5
+ //#region src/data-access/runtime/scheduledTriggerInvocations.d.ts
6
+
7
+ /**
8
+ * Get a scheduled trigger invocation by ID (agent-scoped)
9
+ */
10
+ declare const getScheduledTriggerInvocationById: (db: AgentsRunDatabaseClient) => (params: {
11
+ scopes: AgentScopeConfig;
12
+ scheduledTriggerId: string;
13
+ invocationId: string;
14
+ }) => Promise<ScheduledTriggerInvocation | undefined>;
15
+ /**
16
+ * Get a scheduled trigger invocation by idempotency key
17
+ * Used to check if an invocation already exists for a given schedule
18
+ */
19
+ declare const getScheduledTriggerInvocationByIdempotencyKey: (db: AgentsRunDatabaseClient) => (params: {
20
+ idempotencyKey: string;
21
+ }) => Promise<ScheduledTriggerInvocation | undefined>;
22
+ /**
23
+ * List scheduled trigger invocations with optional filtering (agent-scoped)
24
+ */
25
+ declare const listScheduledTriggerInvocationsPaginated: (db: AgentsRunDatabaseClient) => (params: {
26
+ scopes: AgentScopeConfig;
27
+ scheduledTriggerId: string;
28
+ pagination?: PaginationConfig;
29
+ filters?: {
30
+ status?: ScheduledTriggerInvocationStatus;
31
+ from?: string;
32
+ to?: string;
33
+ };
34
+ }) => Promise<{
35
+ data: {
36
+ scheduledTriggerId: string;
37
+ status: "pending" | "failed" | "running" | "completed" | "cancelled";
38
+ scheduledFor: string;
39
+ startedAt: string | null;
40
+ completedAt: string | null;
41
+ resolvedPayload: Record<string, unknown> | null;
42
+ conversationIds: string[] | null;
43
+ attemptNumber: number;
44
+ idempotencyKey: string;
45
+ createdAt: string;
46
+ agentId: string;
47
+ projectId: string;
48
+ tenantId: string;
49
+ id: string;
50
+ }[];
51
+ pagination: {
52
+ page: number;
53
+ limit: number;
54
+ total: number;
55
+ pages: number;
56
+ };
57
+ }>;
58
+ /**
59
+ * List pending invocations for a trigger, ordered by scheduledFor (earliest first)
60
+ * Used by workflow to get the next invocation to execute
61
+ */
62
+ declare const listPendingScheduledTriggerInvocations: (db: AgentsRunDatabaseClient) => (params: {
63
+ scopes: AgentScopeConfig;
64
+ scheduledTriggerId: string;
65
+ limit?: number;
66
+ }) => Promise<ScheduledTriggerInvocation[]>;
67
+ /**
68
+ * Delete all pending invocations for a trigger
69
+ * Used when cron expression changes or trigger is disabled
70
+ */
71
+ declare const deletePendingInvocationsForTrigger: (db: AgentsRunDatabaseClient) => (params: {
72
+ scopes: AgentScopeConfig;
73
+ scheduledTriggerId: string;
74
+ }) => Promise<number>;
75
+ /**
76
+ * Create a new scheduled trigger invocation (agent-scoped)
77
+ */
78
+ declare const createScheduledTriggerInvocation: (db: AgentsRunDatabaseClient) => (params: ScheduledTriggerInvocationInsert) => Promise<ScheduledTriggerInvocation>;
79
+ /**
80
+ * Update scheduled trigger invocation status (agent-scoped)
81
+ */
82
+ declare const updateScheduledTriggerInvocationStatus: (db: AgentsRunDatabaseClient) => (params: {
83
+ scopes: AgentScopeConfig;
84
+ scheduledTriggerId: string;
85
+ invocationId: string;
86
+ data: ScheduledTriggerInvocationUpdate;
87
+ }) => Promise<ScheduledTriggerInvocation>;
88
+ /**
89
+ * Mark invocation as running
90
+ */
91
+ declare const markScheduledTriggerInvocationRunning: (db: AgentsRunDatabaseClient) => (params: {
92
+ scopes: AgentScopeConfig;
93
+ scheduledTriggerId: string;
94
+ invocationId: string;
95
+ }) => Promise<ScheduledTriggerInvocation>;
96
+ /**
97
+ * Mark invocation as completed
98
+ * Note: Will not update if status is already 'cancelled' to respect user cancellation
99
+ */
100
+ declare const markScheduledTriggerInvocationCompleted: (db: AgentsRunDatabaseClient) => (params: {
101
+ scopes: AgentScopeConfig;
102
+ scheduledTriggerId: string;
103
+ invocationId: string;
104
+ }) => Promise<ScheduledTriggerInvocation | undefined>;
105
+ /**
106
+ * Mark invocation as failed
107
+ * Note: Will not update if status is already 'cancelled' to respect user cancellation
108
+ */
109
+ declare const markScheduledTriggerInvocationFailed: (db: AgentsRunDatabaseClient) => (params: {
110
+ scopes: AgentScopeConfig;
111
+ scheduledTriggerId: string;
112
+ invocationId: string;
113
+ }) => Promise<ScheduledTriggerInvocation | undefined>;
114
+ /**
115
+ * Add a conversation ID to the invocation's conversationIds array
116
+ * Used to track all conversations created during retries
117
+ */
118
+ declare const addConversationIdToInvocation: (db: AgentsRunDatabaseClient) => (params: {
119
+ scopes: AgentScopeConfig;
120
+ scheduledTriggerId: string;
121
+ invocationId: string;
122
+ conversationId: string;
123
+ }) => Promise<ScheduledTriggerInvocation | undefined>;
124
+ /**
125
+ * Mark invocation as cancelled
126
+ */
127
+ declare const markScheduledTriggerInvocationCancelled: (db: AgentsRunDatabaseClient) => (params: {
128
+ scopes: AgentScopeConfig;
129
+ scheduledTriggerId: string;
130
+ invocationId: string;
131
+ }) => Promise<ScheduledTriggerInvocation>;
132
+ /**
133
+ * Cancel all pending invocations for a trigger
134
+ * Used when a trigger is deleted
135
+ */
136
+ declare const cancelPendingInvocationsForTrigger: (db: AgentsRunDatabaseClient) => (params: {
137
+ scopes: AgentScopeConfig;
138
+ scheduledTriggerId: string;
139
+ }) => Promise<number>;
140
+ /**
141
+ * Cancel only PAST pending invocations for a trigger (scheduledFor <= now)
142
+ * Used when a trigger is disabled - keeps future invocations pending
143
+ */
144
+ declare const cancelPastPendingInvocationsForTrigger: (db: AgentsRunDatabaseClient) => (params: {
145
+ scopes: AgentScopeConfig;
146
+ scheduledTriggerId: string;
147
+ }) => Promise<number>;
148
+ /**
149
+ * Get run info for multiple scheduled triggers in a single query
150
+ * Returns last run (completed/failed) and next pending run for each trigger
151
+ */
152
+ declare const getScheduledTriggerRunInfoBatch: (db: AgentsRunDatabaseClient) => (params: {
153
+ scopes: Omit<AgentScopeConfig, "agentId">;
154
+ triggerIds: Array<{
155
+ agentId: string;
156
+ triggerId: string;
157
+ }>;
158
+ }) => Promise<Map<string, {
159
+ lastRunAt: string | null;
160
+ lastRunStatus: "completed" | "failed" | null;
161
+ lastRunConversationIds: string[];
162
+ nextRunAt: string | null;
163
+ }>>;
164
+ /**
165
+ * List upcoming invocations across ALL triggers for an agent with pagination
166
+ * Used for the upcoming runs dashboard with full pagination support
167
+ */
168
+ declare const listUpcomingInvocationsForAgentPaginated: (db: AgentsRunDatabaseClient) => (params: {
169
+ scopes: Omit<AgentScopeConfig, "agentId"> & {
170
+ agentId: string;
171
+ };
172
+ pagination?: PaginationConfig;
173
+ includeRunning?: boolean;
174
+ }) => Promise<{
175
+ data: {
176
+ scheduledTriggerId: string;
177
+ status: "pending" | "failed" | "running" | "completed" | "cancelled";
178
+ scheduledFor: string;
179
+ startedAt: string | null;
180
+ completedAt: string | null;
181
+ resolvedPayload: Record<string, unknown> | null;
182
+ conversationIds: string[] | null;
183
+ attemptNumber: number;
184
+ idempotencyKey: string;
185
+ createdAt: string;
186
+ agentId: string;
187
+ projectId: string;
188
+ tenantId: string;
189
+ id: string;
190
+ }[];
191
+ pagination: {
192
+ page: number;
193
+ limit: number;
194
+ total: number;
195
+ pages: number;
196
+ };
197
+ }>;
198
+ /**
199
+ * List all invocations across ALL triggers for a PROJECT with pagination
200
+ * Used for the project-level invocations dashboard
201
+ */
202
+ declare const listProjectScheduledTriggerInvocationsPaginated: (db: AgentsRunDatabaseClient) => (params: {
203
+ scopes: Omit<AgentScopeConfig, "agentId">;
204
+ pagination?: PaginationConfig;
205
+ filters?: {
206
+ status?: ScheduledTriggerInvocationStatus;
207
+ };
208
+ }) => Promise<{
209
+ data: {
210
+ scheduledTriggerId: string;
211
+ status: "pending" | "failed" | "running" | "completed" | "cancelled";
212
+ scheduledFor: string;
213
+ startedAt: string | null;
214
+ completedAt: string | null;
215
+ resolvedPayload: Record<string, unknown> | null;
216
+ conversationIds: string[] | null;
217
+ attemptNumber: number;
218
+ idempotencyKey: string;
219
+ createdAt: string;
220
+ agentId: string;
221
+ projectId: string;
222
+ tenantId: string;
223
+ id: string;
224
+ }[];
225
+ pagination: {
226
+ page: number;
227
+ limit: number;
228
+ total: number;
229
+ pages: number;
230
+ };
231
+ }>;
232
+ //#endregion
233
+ export { addConversationIdToInvocation, cancelPastPendingInvocationsForTrigger, cancelPendingInvocationsForTrigger, createScheduledTriggerInvocation, deletePendingInvocationsForTrigger, getScheduledTriggerInvocationById, getScheduledTriggerInvocationByIdempotencyKey, getScheduledTriggerRunInfoBatch, listPendingScheduledTriggerInvocations, listProjectScheduledTriggerInvocationsPaginated, listScheduledTriggerInvocationsPaginated, listUpcomingInvocationsForAgentPaginated, markScheduledTriggerInvocationCancelled, markScheduledTriggerInvocationCompleted, markScheduledTriggerInvocationFailed, markScheduledTriggerInvocationRunning, updateScheduledTriggerInvocationStatus };