@inkeep/agents-core 0.47.4 → 0.48.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.
Files changed (75) hide show
  1. package/README.md +1 -1
  2. package/dist/auth/auth-validation-schemas.d.ts +17 -17
  3. package/dist/auth/auth.d.ts +1 -1
  4. package/dist/client-exports.d.ts +13 -2
  5. package/dist/client-exports.js +5 -4
  6. package/dist/data-access/index.d.ts +6 -1
  7. package/dist/data-access/index.js +6 -1
  8. package/dist/data-access/manage/agentFull.js +154 -1
  9. package/dist/data-access/manage/agents.d.ts +4 -4
  10. package/dist/data-access/manage/agents.js +56 -4
  11. package/dist/data-access/manage/artifactComponents.d.ts +41 -5
  12. package/dist/data-access/manage/dataComponents.d.ts +2 -2
  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/subAgentRelations.d.ts +6 -6
  22. package/dist/data-access/manage/tools.d.ts +4 -4
  23. package/dist/data-access/manage/triggers.d.ts +2 -2
  24. package/dist/data-access/runtime/conversations.d.ts +4 -4
  25. package/dist/data-access/runtime/scheduledTriggerInvocations.d.ts +233 -0
  26. package/dist/data-access/runtime/scheduledTriggerInvocations.js +226 -0
  27. package/dist/data-access/runtime/tasks.d.ts +2 -2
  28. package/dist/data-access/runtime/workAppSlack.d.ts +55 -0
  29. package/dist/data-access/runtime/workAppSlack.js +146 -0
  30. package/dist/db/manage/manage-schema.d.ts +1440 -510
  31. package/dist/db/manage/manage-schema.js +240 -15
  32. package/dist/db/runtime/runtime-schema.d.ts +1236 -234
  33. package/dist/db/runtime/runtime-schema.js +108 -3
  34. package/dist/index.d.ts +15 -6
  35. package/dist/index.js +13 -5
  36. package/dist/types/entities.d.ts +15 -2
  37. package/dist/types/index.d.ts +2 -2
  38. package/dist/utils/index.d.ts +5 -2
  39. package/dist/utils/index.js +5 -2
  40. package/dist/utils/slack-link-token.d.ts +57 -0
  41. package/dist/utils/slack-link-token.js +112 -0
  42. package/dist/utils/slack-user-token.d.ts +65 -0
  43. package/dist/utils/slack-user-token.js +129 -0
  44. package/dist/utils/sse-parser.d.ts +35 -0
  45. package/dist/utils/sse-parser.js +71 -0
  46. package/dist/utils/tracer-factory.d.ts +11 -2
  47. package/dist/utils/tracer-factory.js +24 -5
  48. package/dist/utils/tracer.d.ts +2 -2
  49. package/dist/utils/tracer.js +2 -2
  50. package/dist/utils/trigger-auth.d.ts +1 -1
  51. package/dist/validation/drizzle-schema-helpers.d.ts +3 -3
  52. package/dist/validation/extend-schemas.d.ts +34 -0
  53. package/dist/validation/extend-schemas.js +33 -0
  54. package/dist/validation/index.d.ts +2 -2
  55. package/dist/validation/index.js +2 -2
  56. package/dist/validation/json-schemas.d.ts +28 -0
  57. package/dist/validation/json-schemas.js +56 -0
  58. package/dist/validation/schemas.d.ts +5875 -2585
  59. package/dist/validation/schemas.js +159 -38
  60. package/dist/validation/stream-event-schemas.d.ts +0 -2
  61. package/dist/validation/stream-event-schemas.js +1 -2
  62. package/drizzle/manage/0007_nice_lilandra.sql +3 -0
  63. package/drizzle/manage/0008_friendly_mentallo.sql +32 -0
  64. package/drizzle/manage/0009_chilly_old_lace.sql +39 -0
  65. package/drizzle/manage/meta/0007_snapshot.json +3148 -0
  66. package/drizzle/manage/meta/0008_snapshot.json +3391 -0
  67. package/drizzle/manage/meta/0009_snapshot.json +3670 -0
  68. package/drizzle/manage/meta/_journal.json +21 -0
  69. package/drizzle/runtime/0012_greedy_hulk.sql +84 -0
  70. package/drizzle/runtime/0013_huge_white_queen.sql +19 -0
  71. package/drizzle/runtime/meta/0007_snapshot.json +1 -1
  72. package/drizzle/runtime/meta/0012_snapshot.json +3622 -0
  73. package/drizzle/runtime/meta/0013_snapshot.json +3746 -0
  74. package/drizzle/runtime/meta/_journal.json +14 -0
  75. package/package.json +1 -1
@@ -0,0 +1,146 @@
1
+ import { workAppSlackChannelAgentConfigs, workAppSlackUserMappings, workAppSlackWorkspaces } from "../../db/runtime/runtime-schema.js";
2
+ import { and, eq } from "drizzle-orm";
3
+ import { nanoid } from "nanoid";
4
+
5
+ //#region src/data-access/runtime/workAppSlack.ts
6
+ const DEFAULT_CLIENT_ID = "work-apps-slack";
7
+ const createWorkAppSlackWorkspace = (db) => async (data) => {
8
+ const id = `wsw_${nanoid(21)}`;
9
+ const now = (/* @__PURE__ */ new Date()).toISOString();
10
+ const [result] = await db.insert(workAppSlackWorkspaces).values({
11
+ id,
12
+ ...data,
13
+ createdAt: now,
14
+ updatedAt: now
15
+ }).returning();
16
+ return result;
17
+ };
18
+ const findWorkAppSlackWorkspaceByTeamId = (db) => async (tenantId, slackTeamId) => {
19
+ return (await db.select().from(workAppSlackWorkspaces).where(and(eq(workAppSlackWorkspaces.tenantId, tenantId), eq(workAppSlackWorkspaces.slackTeamId, slackTeamId))).limit(1))[0] || null;
20
+ };
21
+ /**
22
+ * Find a workspace by Slack team ID only (without tenant filter).
23
+ * Slack team IDs are globally unique, so this is safe for resolving
24
+ * the tenant from an incoming Slack event where tenant is unknown.
25
+ */
26
+ const findWorkAppSlackWorkspaceBySlackTeamId = (db) => async (slackTeamId) => {
27
+ return (await db.select().from(workAppSlackWorkspaces).where(eq(workAppSlackWorkspaces.slackTeamId, slackTeamId)).limit(1))[0] || null;
28
+ };
29
+ /**
30
+ * Find a workspace by its Nango connection ID.
31
+ *
32
+ * One Nango connection = one OAuth token = one Slack workspace.
33
+ * The nangoConnectionId should be globally unique (not per-tenant).
34
+ * The schema has a unique constraint on nangoConnectionId ensuring this.
35
+ */
36
+ const findWorkAppSlackWorkspaceByNangoConnectionId = (db) => async (nangoConnectionId) => {
37
+ return (await db.select().from(workAppSlackWorkspaces).where(eq(workAppSlackWorkspaces.nangoConnectionId, nangoConnectionId)))[0] || null;
38
+ };
39
+ const listWorkAppSlackWorkspacesByTenant = (db) => async (tenantId) => {
40
+ return db.select().from(workAppSlackWorkspaces).where(eq(workAppSlackWorkspaces.tenantId, tenantId));
41
+ };
42
+ const updateWorkAppSlackWorkspace = (db) => async (id, data) => {
43
+ const [result] = await db.update(workAppSlackWorkspaces).set({
44
+ ...data,
45
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString()
46
+ }).where(eq(workAppSlackWorkspaces.id, id)).returning();
47
+ return result || null;
48
+ };
49
+ const deleteWorkAppSlackWorkspace = (db) => async (id) => {
50
+ return (await db.delete(workAppSlackWorkspaces).where(eq(workAppSlackWorkspaces.id, id)).returning()).length > 0;
51
+ };
52
+ const deleteWorkAppSlackWorkspaceByNangoConnectionId = (db) => async (nangoConnectionId) => {
53
+ return (await db.delete(workAppSlackWorkspaces).where(eq(workAppSlackWorkspaces.nangoConnectionId, nangoConnectionId)).returning()).length > 0;
54
+ };
55
+ const findWorkAppSlackUserMapping = (db) => async (tenantId, slackUserId, slackTeamId, clientId = DEFAULT_CLIENT_ID) => {
56
+ return (await db.select().from(workAppSlackUserMappings).where(and(eq(workAppSlackUserMappings.tenantId, tenantId), eq(workAppSlackUserMappings.clientId, clientId), eq(workAppSlackUserMappings.slackUserId, slackUserId), eq(workAppSlackUserMappings.slackTeamId, slackTeamId))).limit(1))[0] || null;
57
+ };
58
+ const findWorkAppSlackUserMappingByInkeepUserId = (db) => async (inkeepUserId) => {
59
+ return db.select().from(workAppSlackUserMappings).where(eq(workAppSlackUserMappings.inkeepUserId, inkeepUserId));
60
+ };
61
+ /**
62
+ * Find a user mapping by Slack user ID and team ID only (ignores tenant).
63
+ * Use this when you need to find the user's tenant from their mapping.
64
+ */
65
+ const findWorkAppSlackUserMappingBySlackUser = (db) => async (slackUserId, slackTeamId, clientId = DEFAULT_CLIENT_ID) => {
66
+ return (await db.select().from(workAppSlackUserMappings).where(and(eq(workAppSlackUserMappings.clientId, clientId), eq(workAppSlackUserMappings.slackUserId, slackUserId), eq(workAppSlackUserMappings.slackTeamId, slackTeamId))).limit(1))[0] || null;
67
+ };
68
+ const listWorkAppSlackUserMappingsByTeam = (db) => async (tenantId, slackTeamId) => {
69
+ return db.select().from(workAppSlackUserMappings).where(and(eq(workAppSlackUserMappings.tenantId, tenantId), eq(workAppSlackUserMappings.slackTeamId, slackTeamId)));
70
+ };
71
+ const createWorkAppSlackUserMapping = (db) => async (data) => {
72
+ const id = `wsum_${nanoid(21)}`;
73
+ const now = (/* @__PURE__ */ new Date()).toISOString();
74
+ const [result] = await db.insert(workAppSlackUserMappings).values({
75
+ id,
76
+ clientId: data.clientId || DEFAULT_CLIENT_ID,
77
+ ...data,
78
+ linkedAt: now,
79
+ createdAt: now,
80
+ updatedAt: now
81
+ }).returning();
82
+ return result;
83
+ };
84
+ const deleteWorkAppSlackUserMapping = (db) => async (tenantId, slackUserId, slackTeamId, clientId = DEFAULT_CLIENT_ID) => {
85
+ return (await db.delete(workAppSlackUserMappings).where(and(eq(workAppSlackUserMappings.tenantId, tenantId), eq(workAppSlackUserMappings.clientId, clientId), eq(workAppSlackUserMappings.slackUserId, slackUserId), eq(workAppSlackUserMappings.slackTeamId, slackTeamId))).returning()).length > 0;
86
+ };
87
+ const deleteAllWorkAppSlackUserMappingsByTeam = (db) => async (tenantId, slackTeamId, clientId = DEFAULT_CLIENT_ID) => {
88
+ return (await db.delete(workAppSlackUserMappings).where(and(eq(workAppSlackUserMappings.tenantId, tenantId), eq(workAppSlackUserMappings.clientId, clientId), eq(workAppSlackUserMappings.slackTeamId, slackTeamId))).returning()).length;
89
+ };
90
+ const createWorkAppSlackChannelAgentConfig = (db) => async (data) => {
91
+ const id = `wscac_${nanoid(21)}`;
92
+ const now = (/* @__PURE__ */ new Date()).toISOString();
93
+ const [result] = await db.insert(workAppSlackChannelAgentConfigs).values({
94
+ id,
95
+ ...data,
96
+ createdAt: now,
97
+ updatedAt: now
98
+ }).returning();
99
+ return result;
100
+ };
101
+ const findWorkAppSlackChannelAgentConfig = (db) => async (tenantId, slackTeamId, slackChannelId) => {
102
+ return (await db.select().from(workAppSlackChannelAgentConfigs).where(and(eq(workAppSlackChannelAgentConfigs.tenantId, tenantId), eq(workAppSlackChannelAgentConfigs.slackTeamId, slackTeamId), eq(workAppSlackChannelAgentConfigs.slackChannelId, slackChannelId))).limit(1))[0] || null;
103
+ };
104
+ const listWorkAppSlackChannelAgentConfigsByTeam = (db) => async (tenantId, slackTeamId) => {
105
+ return db.select().from(workAppSlackChannelAgentConfigs).where(and(eq(workAppSlackChannelAgentConfigs.tenantId, tenantId), eq(workAppSlackChannelAgentConfigs.slackTeamId, slackTeamId)));
106
+ };
107
+ /**
108
+ * Atomic upsert using onConflictDoUpdate to avoid TOCTOU race conditions.
109
+ * Uses the unique constraint on (tenantId, slackTeamId, slackChannelId).
110
+ */
111
+ const upsertWorkAppSlackChannelAgentConfig = (db) => async (data) => {
112
+ const id = `wscac_${nanoid(21)}`;
113
+ const now = (/* @__PURE__ */ new Date()).toISOString();
114
+ const [result] = await db.insert(workAppSlackChannelAgentConfigs).values({
115
+ id,
116
+ ...data,
117
+ createdAt: now,
118
+ updatedAt: now
119
+ }).onConflictDoUpdate({
120
+ target: [
121
+ workAppSlackChannelAgentConfigs.tenantId,
122
+ workAppSlackChannelAgentConfigs.slackTeamId,
123
+ workAppSlackChannelAgentConfigs.slackChannelId
124
+ ],
125
+ set: {
126
+ projectId: data.projectId,
127
+ agentId: data.agentId,
128
+ agentName: data.agentName,
129
+ slackChannelName: data.slackChannelName,
130
+ slackChannelType: data.slackChannelType,
131
+ enabled: data.enabled,
132
+ configuredByUserId: data.configuredByUserId,
133
+ updatedAt: now
134
+ }
135
+ }).returning();
136
+ return result;
137
+ };
138
+ const deleteWorkAppSlackChannelAgentConfig = (db) => async (tenantId, slackTeamId, slackChannelId) => {
139
+ return (await db.delete(workAppSlackChannelAgentConfigs).where(and(eq(workAppSlackChannelAgentConfigs.tenantId, tenantId), eq(workAppSlackChannelAgentConfigs.slackTeamId, slackTeamId), eq(workAppSlackChannelAgentConfigs.slackChannelId, slackChannelId))).returning()).length > 0;
140
+ };
141
+ const deleteAllWorkAppSlackChannelAgentConfigsByTeam = (db) => async (tenantId, slackTeamId) => {
142
+ return (await db.delete(workAppSlackChannelAgentConfigs).where(and(eq(workAppSlackChannelAgentConfigs.tenantId, tenantId), eq(workAppSlackChannelAgentConfigs.slackTeamId, slackTeamId))).returning()).length;
143
+ };
144
+
145
+ //#endregion
146
+ export { createWorkAppSlackChannelAgentConfig, createWorkAppSlackUserMapping, createWorkAppSlackWorkspace, deleteAllWorkAppSlackChannelAgentConfigsByTeam, deleteAllWorkAppSlackUserMappingsByTeam, deleteWorkAppSlackChannelAgentConfig, deleteWorkAppSlackUserMapping, deleteWorkAppSlackWorkspace, deleteWorkAppSlackWorkspaceByNangoConnectionId, findWorkAppSlackChannelAgentConfig, findWorkAppSlackUserMapping, findWorkAppSlackUserMappingByInkeepUserId, findWorkAppSlackUserMappingBySlackUser, findWorkAppSlackWorkspaceByNangoConnectionId, findWorkAppSlackWorkspaceBySlackTeamId, findWorkAppSlackWorkspaceByTeamId, listWorkAppSlackChannelAgentConfigsByTeam, listWorkAppSlackUserMappingsByTeam, listWorkAppSlackWorkspacesByTenant, updateWorkAppSlackWorkspace, upsertWorkAppSlackChannelAgentConfig };