@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.
Files changed (228) hide show
  1. package/dist/api-client/base-client.d.ts +87 -8
  2. package/dist/api-client/base-client.js +174 -1
  3. package/dist/api-client/eval-api-client.d.ts +47 -0
  4. package/dist/api-client/eval-api-client.js +65 -0
  5. package/dist/api-client/index.d.ts +4 -0
  6. package/dist/api-client/index.js +5 -0
  7. package/dist/api-client/manage-api-client.d.ts +34 -0
  8. package/dist/api-client/manage-api-client.js +104 -0
  9. package/dist/auth/auth.d.ts +86 -20
  10. package/dist/auth/auth.js +55 -1
  11. package/dist/auth/authz/client.d.ts +81 -0
  12. package/dist/auth/authz/client.js +189 -0
  13. package/dist/auth/authz/config.d.ts +76 -0
  14. package/dist/auth/authz/config.js +76 -0
  15. package/dist/auth/authz/index.d.ts +5 -0
  16. package/dist/auth/authz/index.js +6 -0
  17. package/dist/auth/authz/permissions.d.ts +57 -0
  18. package/dist/auth/authz/permissions.js +83 -0
  19. package/dist/auth/authz/sync.d.ts +85 -0
  20. package/dist/auth/authz/sync.js +237 -0
  21. package/dist/auth/permissions.d.ts +13 -13
  22. package/dist/auth/permissions.js +2 -181
  23. package/dist/client-exports.d.ts +8 -3
  24. package/dist/client-exports.js +3 -2
  25. package/dist/constants/context-breakdown.d.ts +61 -0
  26. package/dist/constants/context-breakdown.js +124 -0
  27. package/dist/constants/otel-attributes.d.ts +4 -0
  28. package/dist/constants/otel-attributes.js +4 -0
  29. package/dist/context/ContextConfig.d.ts +2 -2
  30. package/dist/context/ContextConfig.js +3 -3
  31. package/dist/context/TemplateEngine.js +0 -1
  32. package/dist/context/index.d.ts +1 -5
  33. package/dist/context/index.js +1 -5
  34. package/dist/credential-stuffer/CredentialStuffer.d.ts +1 -1
  35. package/dist/data-access/index.d.ts +34 -26
  36. package/dist/data-access/index.js +34 -26
  37. package/dist/data-access/manage/agentFull.d.ts +36 -0
  38. package/dist/data-access/{agentFull.js → manage/agentFull.js} +205 -7
  39. package/dist/data-access/{agents.d.ts → manage/agents.d.ts} +23 -22
  40. package/dist/data-access/{agents.js → manage/agents.js} +52 -7
  41. package/dist/data-access/{artifactComponents.d.ts → manage/artifactComponents.d.ts} +21 -21
  42. package/dist/data-access/{artifactComponents.js → manage/artifactComponents.js} +5 -5
  43. package/dist/data-access/{contextConfigs.d.ts → manage/contextConfigs.d.ts} +14 -14
  44. package/dist/data-access/{contextConfigs.js → manage/contextConfigs.js} +3 -3
  45. package/dist/data-access/{credentialReferences.d.ts → manage/credentialReferences.d.ts} +17 -17
  46. package/dist/data-access/{credentialReferences.js → manage/credentialReferences.js} +2 -2
  47. package/dist/data-access/{dataComponents.d.ts → manage/dataComponents.d.ts} +20 -20
  48. package/dist/data-access/{dataComponents.js → manage/dataComponents.js} +7 -7
  49. package/dist/data-access/manage/evalConfig.d.ts +221 -0
  50. package/dist/data-access/manage/evalConfig.js +275 -0
  51. package/dist/data-access/{externalAgents.d.ts → manage/externalAgents.d.ts} +16 -16
  52. package/dist/data-access/{externalAgents.js → manage/externalAgents.js} +2 -2
  53. package/dist/data-access/{functionTools.d.ts → manage/functionTools.d.ts} +65 -15
  54. package/dist/data-access/{functionTools.js → manage/functionTools.js} +90 -8
  55. package/dist/data-access/{functions.d.ts → manage/functions.d.ts} +9 -9
  56. package/dist/data-access/{functions.js → manage/functions.js} +3 -3
  57. package/dist/data-access/manage/projectFull.d.ts +38 -0
  58. package/dist/data-access/{projectFull.js → manage/projectFull.js} +64 -65
  59. package/dist/data-access/manage/projectLifecycle.d.ts +119 -0
  60. package/dist/data-access/manage/projectLifecycle.js +234 -0
  61. package/dist/data-access/manage/projects.d.ts +75 -0
  62. package/dist/data-access/{projects.js → manage/projects.js} +15 -16
  63. package/dist/data-access/{subAgentExternalAgentRelations.d.ts → manage/subAgentExternalAgentRelations.d.ts} +19 -19
  64. package/dist/data-access/{subAgentExternalAgentRelations.js → manage/subAgentExternalAgentRelations.js} +2 -2
  65. package/dist/data-access/{subAgentRelations.d.ts → manage/subAgentRelations.d.ts} +29 -29
  66. package/dist/data-access/{subAgentRelations.js → manage/subAgentRelations.js} +3 -3
  67. package/dist/data-access/{subAgentTeamAgentRelations.d.ts → manage/subAgentTeamAgentRelations.d.ts} +19 -19
  68. package/dist/data-access/{subAgentTeamAgentRelations.js → manage/subAgentTeamAgentRelations.js} +2 -2
  69. package/dist/data-access/{subAgents.d.ts → manage/subAgents.d.ts} +13 -13
  70. package/dist/data-access/{subAgents.js → manage/subAgents.js} +4 -4
  71. package/dist/data-access/{tools.d.ts → manage/tools.d.ts} +26 -19
  72. package/dist/data-access/{tools.js → manage/tools.js} +57 -35
  73. package/dist/data-access/manage/triggers.d.ts +80 -0
  74. package/dist/data-access/manage/triggers.js +81 -0
  75. package/dist/data-access/{apiKeys.d.ts → runtime/apiKeys.d.ts} +17 -17
  76. package/dist/data-access/{apiKeys.js → runtime/apiKeys.js} +3 -3
  77. package/dist/data-access/runtime/cascade-delete.d.ts +77 -0
  78. package/dist/data-access/runtime/cascade-delete.js +111 -0
  79. package/dist/data-access/{contextCache.d.ts → runtime/contextCache.d.ts} +13 -13
  80. package/dist/data-access/{contextCache.js → runtime/contextCache.js} +5 -5
  81. package/dist/data-access/{conversations.d.ts → runtime/conversations.d.ts} +68 -19
  82. package/dist/data-access/{conversations.js → runtime/conversations.js} +13 -7
  83. package/dist/data-access/runtime/evalRuns.d.ts +120 -0
  84. package/dist/data-access/runtime/evalRuns.js +168 -0
  85. package/dist/data-access/{ledgerArtifacts.d.ts → runtime/ledgerArtifacts.d.ts} +13 -13
  86. package/dist/data-access/{ledgerArtifacts.js → runtime/ledgerArtifacts.js} +3 -3
  87. package/dist/data-access/{messages.d.ts → runtime/messages.d.ts} +15 -15
  88. package/dist/data-access/{messages.js → runtime/messages.js} +2 -2
  89. package/dist/data-access/{organizations.d.ts → runtime/organizations.d.ts} +16 -7
  90. package/dist/data-access/{organizations.js → runtime/organizations.js} +15 -3
  91. package/dist/data-access/runtime/projects.d.ts +62 -0
  92. package/dist/data-access/runtime/projects.js +90 -0
  93. package/dist/data-access/runtime/tasks.d.ts +55 -0
  94. package/dist/data-access/{tasks.js → runtime/tasks.js} +2 -2
  95. package/dist/data-access/runtime/triggerInvocations.d.ts +62 -0
  96. package/dist/data-access/runtime/triggerInvocations.js +54 -0
  97. package/dist/data-access/runtime/users.d.ts +19 -0
  98. package/dist/data-access/{users.js → runtime/users.js} +2 -2
  99. package/dist/data-access/validation.d.ts +4 -4
  100. package/dist/data-access/validation.js +1 -1
  101. package/dist/db/clean.d.ts +8 -4
  102. package/dist/db/clean.js +14 -105
  103. package/dist/db/delete.d.ts +1 -1
  104. package/dist/db/delete.js +7 -10
  105. package/dist/db/manage/dolt-cleanup.d.ts +51 -0
  106. package/dist/db/manage/dolt-cleanup.js +132 -0
  107. package/dist/db/manage/manage-client.d.ts +26 -0
  108. package/dist/db/manage/manage-client.js +68 -0
  109. package/dist/db/{schema.d.ts → manage/manage-schema.d.ts} +1459 -1285
  110. package/dist/db/{schema.js → manage/manage-schema.js} +433 -341
  111. package/dist/db/manage/test-manage-client.d.ts +27 -0
  112. package/dist/db/manage/test-manage-client.js +68 -0
  113. package/dist/db/runtime/runtime-client.d.ts +20 -0
  114. package/dist/db/runtime/runtime-client.js +30 -0
  115. package/dist/db/runtime/runtime-schema.d.ts +2834 -0
  116. package/dist/db/runtime/runtime-schema.js +483 -0
  117. package/dist/db/runtime/test-runtime-client.d.ts +27 -0
  118. package/dist/db/{test-client.js → runtime/test-runtime-client.js} +11 -25
  119. package/dist/dolt/branch.d.ts +62 -0
  120. package/dist/dolt/branch.js +82 -0
  121. package/dist/dolt/branches-api.d.ts +108 -0
  122. package/dist/dolt/branches-api.js +162 -0
  123. package/dist/dolt/commit.d.ts +94 -0
  124. package/dist/dolt/commit.js +103 -0
  125. package/dist/dolt/diff.d.ts +27 -0
  126. package/dist/dolt/diff.js +21 -0
  127. package/dist/dolt/index.d.ts +10 -0
  128. package/dist/dolt/index.js +11 -0
  129. package/dist/dolt/merge.d.ts +63 -0
  130. package/dist/dolt/merge.js +81 -0
  131. package/dist/dolt/migrate-all-branches.d.ts +4 -0
  132. package/dist/dolt/migrate-all-branches.js +78 -0
  133. package/dist/dolt/migrate-dolt.d.ts +1 -0
  134. package/dist/dolt/migrate-dolt.js +22 -0
  135. package/dist/dolt/ref-helpers.d.ts +19 -0
  136. package/dist/dolt/ref-helpers.js +65 -0
  137. package/dist/dolt/ref-middleware.d.ts +82 -0
  138. package/dist/dolt/ref-middleware.js +217 -0
  139. package/dist/dolt/ref-scope.d.ts +101 -0
  140. package/dist/dolt/ref-scope.js +231 -0
  141. package/dist/dolt/schema-sync.d.ts +134 -0
  142. package/dist/dolt/schema-sync.js +246 -0
  143. package/dist/env.d.ts +6 -4
  144. package/dist/env.js +3 -2
  145. package/dist/index.d.ts +71 -44
  146. package/dist/index.js +74 -47
  147. package/dist/types/entities.d.ts +81 -2
  148. package/dist/types/index.d.ts +3 -3
  149. package/dist/types/utility.d.ts +45 -4
  150. package/dist/utils/JsonTransformer.d.ts +44 -0
  151. package/dist/utils/JsonTransformer.js +112 -0
  152. package/dist/utils/apiKeys.d.ts +5 -1
  153. package/dist/utils/apiKeys.js +11 -1
  154. package/dist/utils/colors.d.ts +34 -0
  155. package/dist/utils/colors.js +49 -0
  156. package/dist/utils/credential-store-utils.d.ts +1 -1
  157. package/dist/utils/format-messages.d.ts +1 -1
  158. package/dist/utils/index.d.ts +7 -3
  159. package/dist/utils/index.js +7 -3
  160. package/dist/utils/internal-service-auth.d.ts +79 -0
  161. package/dist/utils/internal-service-auth.js +140 -0
  162. package/dist/utils/jwt-helpers.d.ts +56 -0
  163. package/dist/utils/jwt-helpers.js +90 -0
  164. package/dist/utils/service-token-auth.d.ts +9 -27
  165. package/dist/utils/service-token-auth.js +48 -96
  166. package/dist/utils/template-interpolation.d.ts +22 -0
  167. package/dist/utils/template-interpolation.js +62 -0
  168. package/dist/utils/third-party-mcp-servers/composio-client.js +23 -23
  169. package/dist/utils/trigger-auth.d.ts +62 -0
  170. package/dist/utils/trigger-auth.js +125 -0
  171. package/dist/validation/agentFull.js +2 -4
  172. package/dist/validation/dolt-schemas.d.ts +49 -0
  173. package/dist/validation/dolt-schemas.js +44 -0
  174. package/dist/validation/drizzle-schema-helpers.d.ts +4 -26
  175. package/dist/validation/drizzle-schema-helpers.js +5 -151
  176. package/dist/validation/index.d.ts +4 -3
  177. package/dist/validation/index.js +3 -2
  178. package/dist/validation/schemas.d.ts +17647 -4789
  179. package/dist/validation/schemas.js +328 -11
  180. package/drizzle/manage/0000_tearful_rhodey.sql +414 -0
  181. package/drizzle/manage/0001_broken_wendell_vaughn.sql +19 -0
  182. package/drizzle/manage/0002_bent_sunfire.sql +1 -0
  183. package/drizzle/manage/meta/0000_snapshot.json +2987 -0
  184. package/drizzle/manage/meta/0001_snapshot.json +3115 -0
  185. package/drizzle/manage/meta/0002_snapshot.json +3115 -0
  186. package/drizzle/manage/meta/_journal.json +27 -0
  187. package/drizzle/runtime/0008_silly_preak.sql +127 -0
  188. package/drizzle/runtime/0009_freezing_leo.sql +17 -0
  189. package/drizzle/runtime/meta/0008_snapshot.json +2263 -0
  190. package/drizzle/runtime/meta/0009_snapshot.json +2397 -0
  191. package/drizzle/{meta → runtime/meta}/_journal.json +14 -0
  192. package/package.json +48 -15
  193. package/dist/context/ContextFetcher.d.ts +0 -73
  194. package/dist/context/ContextFetcher.js +0 -291
  195. package/dist/context/ContextResolver.d.ts +0 -60
  196. package/dist/context/ContextResolver.js +0 -278
  197. package/dist/context/context.d.ts +0 -27
  198. package/dist/context/context.js +0 -128
  199. package/dist/context/contextCache.d.ts +0 -58
  200. package/dist/context/contextCache.js +0 -177
  201. package/dist/data-access/agentFull.d.ts +0 -33
  202. package/dist/data-access/projectFull.d.ts +0 -32
  203. package/dist/data-access/projects.d.ts +0 -71
  204. package/dist/data-access/tasks.d.ts +0 -45
  205. package/dist/data-access/users.d.ts +0 -19
  206. package/dist/db/client.d.ts +0 -20
  207. package/dist/db/client.js +0 -28
  208. package/dist/db/test-client.d.ts +0 -31
  209. package/dist/middleware/contextValidation.d.ts +0 -46
  210. package/dist/middleware/contextValidation.js +0 -280
  211. package/dist/middleware/index.d.ts +0 -2
  212. package/dist/middleware/index.js +0 -3
  213. package/dist/utils/execution.d.ts +0 -22
  214. package/dist/utils/execution.js +0 -25
  215. /package/drizzle/{0000_exotic_mysterio.sql → runtime/0000_exotic_mysterio.sql} +0 -0
  216. /package/drizzle/{0001_calm_sheva_callister.sql → runtime/0001_calm_sheva_callister.sql} +0 -0
  217. /package/drizzle/{0002_puzzling_goblin_queen.sql → runtime/0002_puzzling_goblin_queen.sql} +0 -0
  218. /package/drizzle/{0003_sweet_human_robot.sql → runtime/0003_sweet_human_robot.sql} +0 -0
  219. /package/drizzle/{0004_cuddly_shooting_star.sql → runtime/0004_cuddly_shooting_star.sql} +0 -0
  220. /package/drizzle/{0005_reflective_starfox.sql → runtime/0005_reflective_starfox.sql} +0 -0
  221. /package/drizzle/{0006_stale_thaddeus_ross.sql → runtime/0006_stale_thaddeus_ross.sql} +0 -0
  222. /package/drizzle/{0007_slim_karma.sql → runtime/0007_slim_karma.sql} +0 -0
  223. /package/drizzle/{meta → runtime/meta}/0000_snapshot.json +0 -0
  224. /package/drizzle/{meta → runtime/meta}/0001_snapshot.json +0 -0
  225. /package/drizzle/{meta → runtime/meta}/0003_snapshot.json +0 -0
  226. /package/drizzle/{meta → runtime/meta}/0005_snapshot.json +0 -0
  227. /package/drizzle/{meta → runtime/meta}/0006_snapshot.json +0 -0
  228. /package/drizzle/{meta → runtime/meta}/0007_snapshot.json +0 -0
@@ -57,6 +57,20 @@
57
57
  "when": 1767651466654,
58
58
  "tag": "0007_slim_karma",
59
59
  "breakpoints": true
60
+ },
61
+ {
62
+ "idx": 8,
63
+ "version": "7",
64
+ "when": 1768240742352,
65
+ "tag": "0008_silly_preak",
66
+ "breakpoints": true
67
+ },
68
+ {
69
+ "idx": 9,
70
+ "version": "7",
71
+ "when": 1768646273355,
72
+ "tag": "0009_freezing_leo",
73
+ "breakpoints": true
60
74
  }
61
75
  ]
62
76
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/agents-core",
3
- "version": "0.41.2",
3
+ "version": "0.42.0",
4
4
  "description": "Agents Core contains the database schema, types, and validation schemas for Inkeep Agent Framework, along with core components.",
5
5
  "type": "module",
6
6
  "license": "SEE LICENSE IN LICENSE.md",
@@ -10,13 +10,29 @@
10
10
  "types": "./dist/index.d.ts",
11
11
  "default": "./dist/index.js"
12
12
  },
13
- "./schema": {
14
- "types": "./dist/db/schema.d.ts",
15
- "import": "./dist/db/schema.js"
13
+ "./db/manage-schema": {
14
+ "types": "./dist/db/manage/manage-schema.d.ts",
15
+ "import": "./dist/db/manage/manage-schema.js"
16
16
  },
17
- "./db/schema": {
18
- "types": "./dist/db/schema.d.ts",
19
- "import": "./dist/db/schema.js"
17
+ "./db/run-schema": {
18
+ "types": "./dist/db/runtime/runtime-schema.d.ts",
19
+ "import": "./dist/db/runtime/runtime-schema.js"
20
+ },
21
+ "./db/manage-client": {
22
+ "types": "./dist/db/manage/manage-client.d.ts",
23
+ "import": "./dist/db/manage/manage-client.js"
24
+ },
25
+ "./db/test-manage-client": {
26
+ "types": "./dist/db/manage/test-manage-client.d.ts",
27
+ "import": "./dist/db/manage/test-manage-client.js"
28
+ },
29
+ "./db/test-runtime-client": {
30
+ "types": "./dist/db/runtime/test-runtime-client.d.ts",
31
+ "import": "./dist/db/runtime/test-runtime-client.js"
32
+ },
33
+ "./db/run-client": {
34
+ "types": "./dist/db/runtime/runtime-client.d.ts",
35
+ "import": "./dist/db/runtime/runtime-client.js"
20
36
  },
21
37
  "./types": {
22
38
  "types": "./dist/types/index.d.ts",
@@ -66,16 +82,21 @@
66
82
  "types": "./dist/auth/permissions.d.ts",
67
83
  "import": "./dist/auth/permissions.js"
68
84
  },
85
+ "./auth/authz": {
86
+ "types": "./dist/auth/authz/index.d.ts",
87
+ "import": "./dist/auth/authz/index.js"
88
+ },
69
89
  "./drizzle": "./drizzle/",
70
90
  "./package.json": "./package.json"
71
91
  },
72
92
  "dependencies": {
73
- "@ai-sdk/azure": "^3.0.4",
74
93
  "@ai-sdk/anthropic": "3.0.7",
94
+ "@ai-sdk/azure": "^3.0.4",
75
95
  "@ai-sdk/gateway": "3.0.9",
76
96
  "@ai-sdk/google": "3.0.4",
77
97
  "@ai-sdk/openai": "3.0.7",
78
98
  "@ai-sdk/openai-compatible": "2.0.4",
99
+ "@authzed/authzed-node": "^1.6.1",
79
100
  "@better-auth/sso": "~1.4.10",
80
101
  "@composio/core": "^0.2.4",
81
102
  "@electric-sql/pglite": "^0.3.13",
@@ -95,12 +116,14 @@
95
116
  "exit-hook": "^4.0.0",
96
117
  "find-up": "^7.0.0",
97
118
  "hono": "^4.10.4",
119
+ "iwanthue": "^2.0.0",
98
120
  "jmespath": "^0.16.0",
99
121
  "jose": "^6.1.0",
100
122
  "nanoid": "^5.0.9",
101
123
  "pg": "^8.16.3",
102
124
  "pino": "^9.11.0",
103
125
  "pino-pretty": "^13.1.1",
126
+ "postgres": "^3.4.8",
104
127
  "traverse": "^0.6.10",
105
128
  "ts-pattern": "^5.7.1"
106
129
  },
@@ -154,8 +177,7 @@
154
177
  "build": "tsdown",
155
178
  "dev": "pnpm build --watch",
156
179
  "test": "vitest --run",
157
- "test:unit": "vitest --run src/__tests__ --exclude src/__tests__/integration/**",
158
- "test:integration": "vitest --run src/__tests__/integration/",
180
+ "test:integration": "vitest --run --config vitest.integration.config.ts src/__tests__/integration/",
159
181
  "test:coverage": "vitest --run --coverage",
160
182
  "test:watch": "vitest --watch",
161
183
  "lint": "biome lint --error-on-warnings",
@@ -164,13 +186,24 @@
164
186
  "format:check": "biome format src",
165
187
  "typecheck": "tsc --noEmit",
166
188
  "typecheck:watch": "tsc --noEmit --watch",
167
- "db:generate": "drizzle-kit generate",
168
- "db:migrate": "drizzle-kit migrate",
169
- "db:drop": "drizzle-kit drop",
189
+ "db:generate": "pnpm db:manage:generate && pnpm db:run:generate",
190
+ "db:migrate": "pnpm db:manage:migrate && pnpm db:run:migrate",
191
+ "db:drop": "pnpm db:manage:drop && pnpm db:run:drop",
170
192
  "db:clean": "tsx src/db/clean.ts",
171
193
  "db:delete": "tsx src/db/delete.ts",
172
194
  "db:reset": "pnpm db:delete && pnpm db:migrate",
173
- "db:studio": "drizzle-kit studio",
174
- "db:check": "drizzle-kit check"
195
+ "db:studio": "echo 'Use db:manage:studio or db:run:studio'",
196
+ "db:check": "pnpm db:manage:check && pnpm db:run:check",
197
+ "db:manage:generate": "drizzle-kit generate --config=drizzle.manage.config.ts",
198
+ "db:manage:migrate": "tsx src/dolt/migrate-dolt.ts",
199
+ "db:manage:sync-all-branches": "tsx src/dolt/migrate-all-branches.ts",
200
+ "db:manage:drop": "drizzle-kit drop --config=drizzle.manage.config.ts",
201
+ "db:manage:studio": "drizzle-kit studio --config=drizzle.manage.config.ts",
202
+ "db:manage:check": "drizzle-kit check --config=drizzle.manage.config.ts",
203
+ "db:run:generate": "drizzle-kit generate --config=drizzle.run.config.ts",
204
+ "db:run:migrate": "drizzle-kit migrate --config=drizzle.run.config.ts",
205
+ "db:run:drop": "drizzle-kit drop --config=drizzle.run.config.ts",
206
+ "db:run:studio": "drizzle-kit studio --config=drizzle.run.config.ts",
207
+ "db:run:check": "drizzle-kit check --config=drizzle.run.config.ts"
175
208
  }
176
209
  }
@@ -1,73 +0,0 @@
1
- import { CredentialStoreRegistry } from "../credential-stores/CredentialStoreRegistry.js";
2
- import { TemplateContext } from "./TemplateEngine.js";
3
- import { ContextFetchDefinition } from "../types/utility.js";
4
- import { DatabaseClient } from "../db/client.js";
5
-
6
- //#region src/context/ContextFetcher.d.ts
7
- declare class MissingRequiredVariableError extends Error {
8
- constructor(variable: string);
9
- }
10
- interface FetchResult {
11
- data: unknown;
12
- source: string;
13
- durationMs: number;
14
- }
15
- declare class ContextFetcher {
16
- private tenantId;
17
- private projectId;
18
- private defaultTimeout;
19
- private credentialStuffer?;
20
- private dbClient;
21
- constructor(tenantId: string, projectId: string, dbClient: DatabaseClient, credentialStoreRegistry?: CredentialStoreRegistry, defaultTimeout?: number);
22
- /**
23
- * Fetch data according to a fetch definition
24
- */
25
- fetch(definition: ContextFetchDefinition, context: TemplateContext): Promise<{
26
- data: unknown;
27
- resolvedUrl: string;
28
- }>;
29
- private getCredential;
30
- /**
31
- * Resolve template variables in fetch configuration and inject credential headers
32
- */
33
- private resolveTemplateVariables;
34
- /**
35
- * Interpolate template variables in a string using TemplateEngine
36
- */
37
- private interpolateTemplate;
38
- /**
39
- * Interpolate template variables in an object recursively using TemplateEngine
40
- */
41
- private interpolateObjectTemplates;
42
- /**
43
- * Perform HTTP request
44
- */
45
- private performRequest;
46
- /**
47
- * Transform response data using JMESPath
48
- */
49
- private transformResponse;
50
- /**
51
- * Validate response against JSON Schema
52
- */
53
- private validateResponseWithJsonSchema;
54
- /**
55
- * Test a fetch definition without caching
56
- */
57
- test(definition: ContextFetchDefinition, context: TemplateContext): Promise<{
58
- success: boolean;
59
- data?: unknown;
60
- resolvedUrl?: string;
61
- error?: string;
62
- durationMs: number;
63
- }>;
64
- /**
65
- * Get fetcher statistics
66
- */
67
- getStats(): {
68
- tenantId: string;
69
- defaultTimeout: number;
70
- };
71
- }
72
- //#endregion
73
- export { ContextFetcher, FetchResult, MissingRequiredVariableError };
@@ -1,291 +0,0 @@
1
- import { getLogger } from "../utils/logger.js";
2
- import { TemplateEngine } from "./TemplateEngine.js";
3
- import { CredentialStuffer } from "../credential-stuffer/CredentialStuffer.js";
4
- import { getCredentialReference } from "../data-access/credentialReferences.js";
5
- import "../data-access/index.js";
6
- import { validateAgainstJsonSchema } from "../middleware/contextValidation.js";
7
- import "../middleware/index.js";
8
- import jmespath from "jmespath";
9
-
10
- //#region src/context/ContextFetcher.ts
11
- const logger = getLogger("context-fetcher");
12
- var MissingRequiredVariableError = class extends Error {
13
- constructor(variable) {
14
- super(`Missing required variable: ${variable}`);
15
- this.name = "MissingRequiredVariableError";
16
- }
17
- };
18
- /**
19
- * GraphQL error checker - validates response for GraphQL errors and throws if found
20
- */
21
- const checkGraphQLErrors = (data) => {
22
- if (data && typeof data === "object" && "errors" in data) {
23
- const errorObj = data;
24
- if (Array.isArray(errorObj.errors) && errorObj.errors.length > 0) {
25
- const agentqlErrors = errorObj.errors;
26
- const errorMessage = `GraphQL request failed with ${agentqlErrors.length} errors: ${agentqlErrors.map((e) => e.message || "Unknown error").join(", ")}`;
27
- throw new Error(errorMessage);
28
- }
29
- }
30
- };
31
- const responseErrorCheckers = [checkGraphQLErrors];
32
- var ContextFetcher = class {
33
- tenantId;
34
- projectId;
35
- defaultTimeout;
36
- credentialStuffer;
37
- dbClient;
38
- constructor(tenantId, projectId, dbClient, credentialStoreRegistry, defaultTimeout = 1e4) {
39
- this.tenantId = tenantId;
40
- this.projectId = projectId;
41
- this.defaultTimeout = defaultTimeout;
42
- if (credentialStoreRegistry) this.credentialStuffer = new CredentialStuffer(credentialStoreRegistry);
43
- this.dbClient = dbClient;
44
- logger.info({
45
- tenantId: this.tenantId,
46
- defaultTimeout: this.defaultTimeout,
47
- hasCredentialSupport: !!this.credentialStuffer
48
- }, "ContextFetcher initialized");
49
- }
50
- /**
51
- * Fetch data according to a fetch definition
52
- */
53
- async fetch(definition, context) {
54
- const startTime = Date.now();
55
- logger.info({
56
- definitionId: definition.id,
57
- url: definition.fetchConfig.url
58
- }, "Starting context fetch");
59
- try {
60
- const resolvedConfig = await this.resolveTemplateVariables(definition.fetchConfig, context, definition.credentialReferenceId);
61
- const response = await this.performRequest(resolvedConfig);
62
- let transformedData = response.data;
63
- if (definition.fetchConfig.transform) transformedData = this.transformResponse(response.data, definition.fetchConfig.transform);
64
- if (definition.responseSchema) this.validateResponseWithJsonSchema(transformedData, definition.responseSchema, definition.id);
65
- const durationMs = Date.now() - startTime;
66
- logger.info({
67
- definitionId: definition.id,
68
- source: response.source,
69
- durationMs
70
- }, "Context fetch completed successfully");
71
- return {
72
- data: transformedData,
73
- resolvedUrl: resolvedConfig.url
74
- };
75
- } catch (error) {
76
- const durationMs = Date.now() - startTime;
77
- const errorMessage = error instanceof Error ? error.message : "Unknown error";
78
- if (error instanceof MissingRequiredVariableError) logger.error({
79
- definitionId: definition.id,
80
- error: errorMessage,
81
- durationMs
82
- }, "Context fetch skipped due to missing required variable");
83
- logger.error({
84
- definitionId: definition.id,
85
- error: errorMessage,
86
- durationMs
87
- }, "Context fetch failed");
88
- throw error;
89
- }
90
- }
91
- async getCredential(credentialReferenceId) {
92
- try {
93
- const credentialReference = await getCredentialReference(this.dbClient)({
94
- scopes: {
95
- tenantId: this.tenantId,
96
- projectId: this.projectId
97
- },
98
- id: credentialReferenceId
99
- });
100
- logger.info({ credentialReference }, "Credential reference");
101
- if (!credentialReference || !this.credentialStuffer) throw new Error(`Credential store not found for reference ID: ${credentialReferenceId}`);
102
- const credentialContext = {
103
- tenantId: this.tenantId,
104
- projectId: this.projectId
105
- };
106
- const storeReference = {
107
- credentialStoreId: credentialReference.credentialStoreId,
108
- retrievalParams: credentialReference.retrievalParams || {}
109
- };
110
- return await this.credentialStuffer.getCredentials(credentialContext, storeReference);
111
- } catch (error) {
112
- logger.error({
113
- credentialReferenceId,
114
- error: error instanceof Error ? error.message : "Unknown error"
115
- }, "Failed to resolve credentials for fetch request");
116
- throw error;
117
- }
118
- }
119
- /**
120
- * Resolve template variables in fetch configuration and inject credential headers
121
- */
122
- async resolveTemplateVariables(fetchConfig, context, credentialReferenceId) {
123
- const resolved = { ...fetchConfig };
124
- const filteredRequiredToFetch = fetchConfig.requiredToFetch?.filter((variable) => variable.startsWith("{{") && variable.endsWith("}}"));
125
- if (filteredRequiredToFetch) for (const variable of filteredRequiredToFetch) {
126
- let resolvedVariable;
127
- try {
128
- resolvedVariable = this.interpolateTemplate(variable, context);
129
- } catch {
130
- throw new MissingRequiredVariableError(variable);
131
- }
132
- if (resolvedVariable === "" || resolvedVariable === variable) throw new MissingRequiredVariableError(variable);
133
- }
134
- resolved.url = this.interpolateTemplate(fetchConfig.url, context);
135
- logger.info({ resolvedUrl: resolved.url }, "Resolved URL");
136
- if (fetchConfig.headers) {
137
- resolved.headers = {};
138
- for (const [key, value] of Object.entries(fetchConfig.headers)) resolved.headers[key] = this.interpolateTemplate(value, context);
139
- }
140
- if (fetchConfig.body) resolved.body = this.interpolateObjectTemplates(fetchConfig.body, context);
141
- if (credentialReferenceId && this.credentialStuffer) try {
142
- const credentialHeaders = (await this.getCredential(credentialReferenceId))?.headers;
143
- if (credentialHeaders) {
144
- resolved.headers = {
145
- ...resolved.headers,
146
- ...credentialHeaders
147
- };
148
- logger.info({ credentialReferenceId }, "Added credential headers to fetch request");
149
- }
150
- } catch (error) {
151
- logger.error({
152
- credentialReferenceId,
153
- error: error instanceof Error ? error.message : "Unknown error"
154
- }, "Failed to resolve credentials for fetch request");
155
- throw error;
156
- }
157
- return resolved;
158
- }
159
- /**
160
- * Interpolate template variables in a string using TemplateEngine
161
- */
162
- interpolateTemplate(template, context) {
163
- try {
164
- return TemplateEngine.render(template, context, {
165
- strict: false,
166
- preserveUnresolved: true
167
- });
168
- } catch (error) {
169
- logger.error({
170
- template,
171
- error: error instanceof Error ? error.message : "Unknown error"
172
- }, "Failed to interpolate template variable");
173
- return template;
174
- }
175
- }
176
- /**
177
- * Interpolate template variables in an object recursively using TemplateEngine
178
- */
179
- interpolateObjectTemplates(obj, context) {
180
- const result = {};
181
- for (const [key, value] of Object.entries(obj)) if (typeof value === "string") result[key] = this.interpolateTemplate(value, context);
182
- else if (value && typeof value === "object" && !Array.isArray(value)) result[key] = this.interpolateObjectTemplates(value, context);
183
- else result[key] = value;
184
- return result;
185
- }
186
- /**
187
- * Perform HTTP request
188
- */
189
- async performRequest(config) {
190
- const startTime = Date.now();
191
- try {
192
- logger.debug({
193
- url: config.url,
194
- method: config.method
195
- }, "Performing HTTP request");
196
- const response = await fetch(config.url, {
197
- method: config.method,
198
- headers: config.headers,
199
- body: config.body ? JSON.stringify(config.body) : void 0,
200
- signal: AbortSignal.timeout(config.timeout || this.defaultTimeout)
201
- });
202
- if (!response.ok) {
203
- const errorText = await response.text();
204
- throw /* @__PURE__ */ new Error(`HTTP ${response.status}: ${response.statusText} - ${errorText}`);
205
- }
206
- const contentType = response.headers.get("content-type") || "";
207
- let data;
208
- if (contentType.includes("application/json")) data = await response.json();
209
- else data = await response.text();
210
- const durationMs = Date.now() - startTime;
211
- for (const checker of responseErrorCheckers) checker(data);
212
- return {
213
- data,
214
- source: config.url,
215
- durationMs
216
- };
217
- } catch (error) {
218
- const durationMs = Date.now() - startTime;
219
- const requestError = error instanceof Error ? error : /* @__PURE__ */ new Error("Unknown error");
220
- logger.warn({
221
- url: config.url,
222
- error: requestError.message,
223
- durationMs
224
- }, "HTTP request failed");
225
- throw requestError;
226
- }
227
- }
228
- /**
229
- * Transform response data using JMESPath
230
- */
231
- transformResponse(data, transform) {
232
- try {
233
- return jmespath.search(data, transform);
234
- } catch (error) {
235
- logger.error({
236
- transform,
237
- error: error instanceof Error ? error.message : "Unknown error"
238
- }, "Failed to transform response data");
239
- return data;
240
- }
241
- }
242
- /**
243
- * Validate response against JSON Schema
244
- */
245
- validateResponseWithJsonSchema(data, jsonSchema, definitionId) {
246
- try {
247
- if (!validateAgainstJsonSchema(jsonSchema, data)) throw new Error("Data does not match JSON Schema");
248
- } catch (error) {
249
- const errorMessage = error instanceof Error ? error.message : "Unknown validation error";
250
- logger.error({
251
- definitionId,
252
- jsonSchema,
253
- error: errorMessage
254
- }, "JSON Schema response validation failed");
255
- throw new Error(`Response validation failed: ${errorMessage}`);
256
- }
257
- }
258
- /**
259
- * Test a fetch definition without caching
260
- */
261
- async test(definition, context) {
262
- const startTime = Date.now();
263
- try {
264
- const result = await this.fetch(definition, context);
265
- return {
266
- success: true,
267
- data: result.data,
268
- resolvedUrl: result.resolvedUrl,
269
- durationMs: Date.now() - startTime
270
- };
271
- } catch (error) {
272
- return {
273
- success: false,
274
- error: error instanceof Error ? error.message : "Unknown error",
275
- durationMs: Date.now() - startTime
276
- };
277
- }
278
- }
279
- /**
280
- * Get fetcher statistics
281
- */
282
- getStats() {
283
- return {
284
- tenantId: this.tenantId,
285
- defaultTimeout: this.defaultTimeout
286
- };
287
- }
288
- };
289
-
290
- //#endregion
291
- export { ContextFetcher, MissingRequiredVariableError };
@@ -1,60 +0,0 @@
1
- import { ContextConfigSelect } from "../types/entities.js";
2
- import "../types/index.js";
3
- import { CredentialStoreRegistry } from "../credential-stores/CredentialStoreRegistry.js";
4
- import { DatabaseClient } from "../db/client.js";
5
-
6
- //#region src/context/ContextResolver.d.ts
7
- interface ResolvedContext {
8
- [templateKey: string]: unknown;
9
- }
10
- interface ContextResolutionOptions {
11
- triggerEvent: 'initialization' | 'invocation';
12
- conversationId: string;
13
- headers?: Record<string, unknown>;
14
- tenantId: string;
15
- }
16
- interface ContextResolutionResult {
17
- resolvedContext: ResolvedContext;
18
- headers: Record<string, unknown>;
19
- fetchedDefinitions: string[];
20
- cacheHits: string[];
21
- cacheMisses: string[];
22
- errors: Array<{
23
- definitionId: string;
24
- error: string;
25
- }>;
26
- skipped: Array<{
27
- definitionId: string;
28
- reason: string;
29
- }>;
30
- totalDurationMs: number;
31
- }
32
- declare class ContextResolver {
33
- private fetcher;
34
- private cache;
35
- private tenantId;
36
- private projectId;
37
- constructor(tenantId: string, projectId: string, dbClient: DatabaseClient, credentialStoreRegistry?: CredentialStoreRegistry);
38
- /**
39
- * Resolve all contexts for a given configuration and trigger event
40
- */
41
- resolve(contextConfig: ContextConfigSelect, options: ContextResolutionOptions): Promise<ContextResolutionResult>;
42
- /**
43
- * Resolve a single context variable
44
- */
45
- private resolveSingleFetchDefinition;
46
- /**
47
- * Resolve the headers for a given conversation
48
- */
49
- resolveHeaders(conversationId: string, contextConfigId: string): Promise<Record<string, unknown>>;
50
- /**
51
- * Create a hash of the headers for cache invalidation
52
- */
53
- private createRequestHash;
54
- /**
55
- * Clear cache
56
- */
57
- clearCache(tenantId: string, projectId: string, conversationId: string): Promise<void>;
58
- }
59
- //#endregion
60
- export { ContextResolutionOptions, ContextResolutionResult, ContextResolver, ResolvedContext };