@inkeep/agents-core 0.1.4 → 0.1.7

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 (278) hide show
  1. package/README.md +2 -2
  2. package/SUPPLEMENTAL_TERMS.md +40 -0
  3. package/dist/chunk-BMKWVKI2.js +126 -0
  4. package/dist/chunk-H2F72PDA.js +15 -0
  5. package/dist/chunk-MKBO26DX.js +9 -0
  6. package/dist/chunk-MXQKLGQK.js +925 -0
  7. package/dist/chunk-R3VVJXX7.js +575 -0
  8. package/dist/chunk-SVGQSPW4.js +24 -0
  9. package/dist/client-exports.cjs +1702 -0
  10. package/dist/client-exports.js +202 -246
  11. package/dist/db/schema.cjs +922 -0
  12. package/dist/db/schema.js +1 -696
  13. package/dist/index.cjs +10122 -0
  14. package/dist/index.js +7989 -13
  15. package/dist/types/index.cjs +45 -0
  16. package/dist/types/index.js +2 -6
  17. package/dist/validation/index.cjs +1772 -0
  18. package/dist/validation/index.js +2 -5
  19. package/package.json +11 -6
  20. package/dist/__tests__/integration/helpers.d.ts +0 -5
  21. package/dist/__tests__/integration/helpers.d.ts.map +0 -1
  22. package/dist/__tests__/integration/helpers.js +0 -37
  23. package/dist/__tests__/integration/helpers.js.map +0 -1
  24. package/dist/__tests__/setup.d.ts +0 -3
  25. package/dist/__tests__/setup.d.ts.map +0 -1
  26. package/dist/__tests__/setup.js +0 -29
  27. package/dist/__tests__/setup.js.map +0 -1
  28. package/dist/client-exports.d.ts +0 -300
  29. package/dist/client-exports.d.ts.map +0 -1
  30. package/dist/client-exports.js.map +0 -1
  31. package/dist/context/ContextConfig.d.ts +0 -54
  32. package/dist/context/ContextConfig.d.ts.map +0 -1
  33. package/dist/context/ContextConfig.js +0 -302
  34. package/dist/context/ContextConfig.js.map +0 -1
  35. package/dist/context/ContextFetcher.d.ts +0 -64
  36. package/dist/context/ContextFetcher.d.ts.map +0 -1
  37. package/dist/context/ContextFetcher.js +0 -325
  38. package/dist/context/ContextFetcher.js.map +0 -1
  39. package/dist/context/ContextResolver.d.ts +0 -52
  40. package/dist/context/ContextResolver.d.ts.map +0 -1
  41. package/dist/context/ContextResolver.js +0 -298
  42. package/dist/context/ContextResolver.js.map +0 -1
  43. package/dist/context/TemplateEngine.d.ts +0 -46
  44. package/dist/context/TemplateEngine.d.ts.map +0 -1
  45. package/dist/context/TemplateEngine.js +0 -175
  46. package/dist/context/TemplateEngine.js.map +0 -1
  47. package/dist/context/context.d.ts +0 -8
  48. package/dist/context/context.d.ts.map +0 -1
  49. package/dist/context/context.js +0 -157
  50. package/dist/context/context.js.map +0 -1
  51. package/dist/context/contextCache.d.ts +0 -50
  52. package/dist/context/contextCache.d.ts.map +0 -1
  53. package/dist/context/contextCache.js +0 -175
  54. package/dist/context/contextCache.js.map +0 -1
  55. package/dist/context/index.d.ts +0 -11
  56. package/dist/context/index.d.ts.map +0 -1
  57. package/dist/context/index.js +0 -8
  58. package/dist/context/index.js.map +0 -1
  59. package/dist/credential-stores/CredentialStoreRegistry.d.ts +0 -39
  60. package/dist/credential-stores/CredentialStoreRegistry.d.ts.map +0 -1
  61. package/dist/credential-stores/CredentialStoreRegistry.js +0 -65
  62. package/dist/credential-stores/CredentialStoreRegistry.js.map +0 -1
  63. package/dist/credential-stores/defaults.d.ts +0 -6
  64. package/dist/credential-stores/defaults.d.ts.map +0 -1
  65. package/dist/credential-stores/defaults.js +0 -22
  66. package/dist/credential-stores/defaults.js.map +0 -1
  67. package/dist/credential-stores/index.d.ts +0 -6
  68. package/dist/credential-stores/index.d.ts.map +0 -1
  69. package/dist/credential-stores/index.js +0 -6
  70. package/dist/credential-stores/index.js.map +0 -1
  71. package/dist/credential-stores/keychain-store.d.ts +0 -100
  72. package/dist/credential-stores/keychain-store.d.ts.map +0 -1
  73. package/dist/credential-stores/keychain-store.js +0 -225
  74. package/dist/credential-stores/keychain-store.js.map +0 -1
  75. package/dist/credential-stores/memory-store.d.ts +0 -39
  76. package/dist/credential-stores/memory-store.d.ts.map +0 -1
  77. package/dist/credential-stores/memory-store.js +0 -58
  78. package/dist/credential-stores/memory-store.js.map +0 -1
  79. package/dist/credential-stores/nango-store.d.ts +0 -59
  80. package/dist/credential-stores/nango-store.d.ts.map +0 -1
  81. package/dist/credential-stores/nango-store.js +0 -264
  82. package/dist/credential-stores/nango-store.js.map +0 -1
  83. package/dist/credential-stuffer/CredentialStuffer.d.ts +0 -80
  84. package/dist/credential-stuffer/CredentialStuffer.d.ts.map +0 -1
  85. package/dist/credential-stuffer/CredentialStuffer.js +0 -186
  86. package/dist/credential-stuffer/CredentialStuffer.js.map +0 -1
  87. package/dist/credential-stuffer/index.d.ts +0 -2
  88. package/dist/credential-stuffer/index.d.ts.map +0 -1
  89. package/dist/credential-stuffer/index.js +0 -2
  90. package/dist/credential-stuffer/index.js.map +0 -1
  91. package/dist/data-access/agentDataComponents.d.ts +0 -1
  92. package/dist/data-access/agentDataComponents.d.ts.map +0 -1
  93. package/dist/data-access/agentDataComponents.js +0 -2
  94. package/dist/data-access/agentDataComponents.js.map +0 -1
  95. package/dist/data-access/agentGraphs.d.ts +0 -406
  96. package/dist/data-access/agentGraphs.d.ts.map +0 -1
  97. package/dist/data-access/agentGraphs.js +0 -551
  98. package/dist/data-access/agentGraphs.js.map +0 -1
  99. package/dist/data-access/agentRelations.d.ts +0 -456
  100. package/dist/data-access/agentRelations.d.ts.map +0 -1
  101. package/dist/data-access/agentRelations.js +0 -471
  102. package/dist/data-access/agentRelations.js.map +0 -1
  103. package/dist/data-access/agents.d.ts +0 -218
  104. package/dist/data-access/agents.d.ts.map +0 -1
  105. package/dist/data-access/agents.js +0 -130
  106. package/dist/data-access/agents.js.map +0 -1
  107. package/dist/data-access/apiKeys.d.ts +0 -114
  108. package/dist/data-access/apiKeys.d.ts.map +0 -1
  109. package/dist/data-access/apiKeys.js +0 -185
  110. package/dist/data-access/apiKeys.js.map +0 -1
  111. package/dist/data-access/artifactComponents.d.ts +0 -152
  112. package/dist/data-access/artifactComponents.d.ts.map +0 -1
  113. package/dist/data-access/artifactComponents.js +0 -214
  114. package/dist/data-access/artifactComponents.js.map +0 -1
  115. package/dist/data-access/contextCache.d.ts +0 -68
  116. package/dist/data-access/contextCache.d.ts.map +0 -1
  117. package/dist/data-access/contextCache.js +0 -160
  118. package/dist/data-access/contextCache.js.map +0 -1
  119. package/dist/data-access/contextConfigs.d.ts +0 -110
  120. package/dist/data-access/contextConfigs.d.ts.map +0 -1
  121. package/dist/data-access/contextConfigs.js +0 -156
  122. package/dist/data-access/contextConfigs.js.map +0 -1
  123. package/dist/data-access/conversations.d.ts +0 -125
  124. package/dist/data-access/conversations.d.ts.map +0 -1
  125. package/dist/data-access/conversations.js +0 -244
  126. package/dist/data-access/conversations.js.map +0 -1
  127. package/dist/data-access/credentialReferences.d.ts +0 -86
  128. package/dist/data-access/credentialReferences.d.ts.map +0 -1
  129. package/dist/data-access/credentialReferences.js +0 -175
  130. package/dist/data-access/credentialReferences.js.map +0 -1
  131. package/dist/data-access/dataComponents.d.ts +0 -129
  132. package/dist/data-access/dataComponents.d.ts.map +0 -1
  133. package/dist/data-access/dataComponents.js +0 -213
  134. package/dist/data-access/dataComponents.js.map +0 -1
  135. package/dist/data-access/externalAgents.d.ts +0 -83
  136. package/dist/data-access/externalAgents.d.ts.map +0 -1
  137. package/dist/data-access/externalAgents.js +0 -163
  138. package/dist/data-access/externalAgents.js.map +0 -1
  139. package/dist/data-access/graphFull.d.ts +0 -32
  140. package/dist/data-access/graphFull.d.ts.map +0 -1
  141. package/dist/data-access/graphFull.js +0 -996
  142. package/dist/data-access/graphFull.js.map +0 -1
  143. package/dist/data-access/index.d.ts +0 -21
  144. package/dist/data-access/index.d.ts.map +0 -1
  145. package/dist/data-access/index.js +0 -22
  146. package/dist/data-access/index.js.map +0 -1
  147. package/dist/data-access/ledgerArtifacts.d.ts +0 -49
  148. package/dist/data-access/ledgerArtifacts.d.ts.map +0 -1
  149. package/dist/data-access/ledgerArtifacts.js +0 -112
  150. package/dist/data-access/ledgerArtifacts.js.map +0 -1
  151. package/dist/data-access/messages.d.ts +0 -209
  152. package/dist/data-access/messages.d.ts.map +0 -1
  153. package/dist/data-access/messages.js +0 -100
  154. package/dist/data-access/messages.js.map +0 -1
  155. package/dist/data-access/projects.d.ts +0 -67
  156. package/dist/data-access/projects.d.ts.map +0 -1
  157. package/dist/data-access/projects.js +0 -337
  158. package/dist/data-access/projects.js.map +0 -1
  159. package/dist/data-access/tasks.d.ts +0 -37
  160. package/dist/data-access/tasks.d.ts.map +0 -1
  161. package/dist/data-access/tasks.js +0 -40
  162. package/dist/data-access/tasks.js.map +0 -1
  163. package/dist/data-access/tools.d.ts +0 -277
  164. package/dist/data-access/tools.d.ts.map +0 -1
  165. package/dist/data-access/tools.js +0 -183
  166. package/dist/data-access/tools.js.map +0 -1
  167. package/dist/data-access/validation.d.ts +0 -17
  168. package/dist/data-access/validation.d.ts.map +0 -1
  169. package/dist/data-access/validation.js +0 -52
  170. package/dist/data-access/validation.js.map +0 -1
  171. package/dist/db/clean.d.ts +0 -6
  172. package/dist/db/clean.d.ts.map +0 -1
  173. package/dist/db/clean.js +0 -81
  174. package/dist/db/clean.js.map +0 -1
  175. package/dist/db/client.d.ts +0 -19
  176. package/dist/db/client.d.ts.map +0 -1
  177. package/dist/db/client.js +0 -24
  178. package/dist/db/client.js.map +0 -1
  179. package/dist/db/schema.d.ts +0 -4337
  180. package/dist/db/schema.d.ts.map +0 -1
  181. package/dist/db/schema.js.map +0 -1
  182. package/dist/db/test-client.d.ts +0 -25
  183. package/dist/db/test-client.d.ts.map +0 -1
  184. package/dist/db/test-client.js +0 -136
  185. package/dist/db/test-client.js.map +0 -1
  186. package/dist/env.d.ts +0 -19
  187. package/dist/env.d.ts.map +0 -1
  188. package/dist/env.js +0 -49
  189. package/dist/env.js.map +0 -1
  190. package/dist/index.d.ts +0 -12
  191. package/dist/index.d.ts.map +0 -1
  192. package/dist/index.js.map +0 -1
  193. package/dist/middleware/contextValidation.d.ts +0 -49
  194. package/dist/middleware/contextValidation.d.ts.map +0 -1
  195. package/dist/middleware/contextValidation.js +0 -473
  196. package/dist/middleware/contextValidation.js.map +0 -1
  197. package/dist/middleware/index.d.ts +0 -2
  198. package/dist/middleware/index.d.ts.map +0 -1
  199. package/dist/middleware/index.js +0 -2
  200. package/dist/middleware/index.js.map +0 -1
  201. package/dist/server/BaseServer.d.ts +0 -83
  202. package/dist/server/BaseServer.d.ts.map +0 -1
  203. package/dist/server/BaseServer.js +0 -218
  204. package/dist/server/BaseServer.js.map +0 -1
  205. package/dist/types/a2a.d.ts +0 -373
  206. package/dist/types/a2a.d.ts.map +0 -1
  207. package/dist/types/a2a.js +0 -14
  208. package/dist/types/a2a.js.map +0 -1
  209. package/dist/types/entities.d.ts +0 -147
  210. package/dist/types/entities.d.ts.map +0 -1
  211. package/dist/types/entities.js +0 -2
  212. package/dist/types/entities.js.map +0 -1
  213. package/dist/types/index.d.ts +0 -5
  214. package/dist/types/index.d.ts.map +0 -1
  215. package/dist/types/index.js.map +0 -1
  216. package/dist/types/server.d.ts +0 -116
  217. package/dist/types/server.d.ts.map +0 -1
  218. package/dist/types/server.js +0 -2
  219. package/dist/types/server.js.map +0 -1
  220. package/dist/types/utility.d.ts +0 -213
  221. package/dist/types/utility.d.ts.map +0 -1
  222. package/dist/types/utility.js +0 -9
  223. package/dist/types/utility.js.map +0 -1
  224. package/dist/utils/apiKeys.d.ts +0 -32
  225. package/dist/utils/apiKeys.d.ts.map +0 -1
  226. package/dist/utils/apiKeys.js +0 -117
  227. package/dist/utils/apiKeys.js.map +0 -1
  228. package/dist/utils/auth-detection.d.ts +0 -23
  229. package/dist/utils/auth-detection.d.ts.map +0 -1
  230. package/dist/utils/auth-detection.js +0 -148
  231. package/dist/utils/auth-detection.js.map +0 -1
  232. package/dist/utils/credential-store-utils.d.ts +0 -11
  233. package/dist/utils/credential-store-utils.d.ts.map +0 -1
  234. package/dist/utils/credential-store-utils.js +0 -19
  235. package/dist/utils/credential-store-utils.js.map +0 -1
  236. package/dist/utils/error.d.ts +0 -526
  237. package/dist/utils/error.d.ts.map +0 -1
  238. package/dist/utils/error.js +0 -282
  239. package/dist/utils/error.js.map +0 -1
  240. package/dist/utils/execution.d.ts +0 -18
  241. package/dist/utils/execution.d.ts.map +0 -1
  242. package/dist/utils/execution.js +0 -25
  243. package/dist/utils/execution.js.map +0 -1
  244. package/dist/utils/index.d.ts +0 -9
  245. package/dist/utils/index.d.ts.map +0 -1
  246. package/dist/utils/index.js +0 -9
  247. package/dist/utils/index.js.map +0 -1
  248. package/dist/utils/logger.d.ts +0 -79
  249. package/dist/utils/logger.d.ts.map +0 -1
  250. package/dist/utils/logger.js +0 -102
  251. package/dist/utils/logger.js.map +0 -1
  252. package/dist/utils/logging.d.ts +0 -11
  253. package/dist/utils/logging.d.ts.map +0 -1
  254. package/dist/utils/logging.js +0 -6
  255. package/dist/utils/logging.js.map +0 -1
  256. package/dist/utils/mcp-client.d.ts +0 -48
  257. package/dist/utils/mcp-client.d.ts.map +0 -1
  258. package/dist/utils/mcp-client.js +0 -174
  259. package/dist/utils/mcp-client.js.map +0 -1
  260. package/dist/utils/tracer.d.ts +0 -24
  261. package/dist/utils/tracer.d.ts.map +0 -1
  262. package/dist/utils/tracer.js +0 -110
  263. package/dist/utils/tracer.js.map +0 -1
  264. package/dist/validation/graphFull.d.ts +0 -36
  265. package/dist/validation/graphFull.d.ts.map +0 -1
  266. package/dist/validation/graphFull.js +0 -128
  267. package/dist/validation/graphFull.js.map +0 -1
  268. package/dist/validation/id-validation.d.ts +0 -38
  269. package/dist/validation/id-validation.d.ts.map +0 -1
  270. package/dist/validation/id-validation.js +0 -60
  271. package/dist/validation/id-validation.js.map +0 -1
  272. package/dist/validation/index.d.ts +0 -4
  273. package/dist/validation/index.d.ts.map +0 -1
  274. package/dist/validation/index.js.map +0 -1
  275. package/dist/validation/schemas.d.ts +0 -7238
  276. package/dist/validation/schemas.d.ts.map +0 -1
  277. package/dist/validation/schemas.js +0 -575
  278. package/dist/validation/schemas.js.map +0 -1
@@ -1,157 +0,0 @@
1
- import { getAgentGraphWithDefaultAgent, getContextConfigById, getConversation, updateConversation, } from '@inkeep/agents-core';
2
- import { SpanStatusCode } from '@opentelemetry/api';
3
- import { getLogger } from '../utils/logger';
4
- import { createSpanName, forceFlushTracer, getGlobalTracer } from '../utils/tracer';
5
- import { ContextResolver } from './ContextResolver';
6
- const logger = getLogger('context');
7
- // Get tracer using centralized utility
8
- const tracer = getGlobalTracer();
9
- // Helper function to determine context resolution trigger
10
- async function determineContextTrigger(tenantId, projectId, conversationId, dbClient) {
11
- const conversation = await getConversation(dbClient)({
12
- scopes: { tenantId, projectId },
13
- conversationId,
14
- });
15
- // New conversation or no previous context resolution = initialization
16
- if (!conversation || !conversation.lastContextResolution) {
17
- return 'initialization';
18
- }
19
- // Existing conversation with previous context = invocation
20
- return 'invocation';
21
- }
22
- // Helper function to handle context config changes
23
- async function handleContextConfigChange(tenantId, projectId, conversationId, graphId, newContextConfigId, dbClient, credentialStores) {
24
- const conversation = await getConversation(dbClient)({
25
- scopes: { tenantId, projectId },
26
- conversationId,
27
- });
28
- if (!conversation)
29
- return;
30
- // For existing conversations, we conservatively clear cache when there's
31
- // a possibility of config change since we don't store contextConfigId in conversations
32
- if (conversation.lastContextResolution) {
33
- // Context config might have changed - clear cache for this conversation
34
- const contextResolver = new ContextResolver(tenantId, projectId, dbClient, credentialStores);
35
- await contextResolver.clearCache(tenantId, projectId, conversationId);
36
- logger.info({
37
- conversationId,
38
- graphId,
39
- contextConfigId: newContextConfigId,
40
- }, 'Potential context config change for existing conversation, cache cleared');
41
- }
42
- }
43
- // Enhanced context resolution function
44
- async function handleContextResolution(tenantId, projectId, conversationId, graphId, requestContext, dbClient, credentialStores) {
45
- // Create parent span for the entire context resolution process
46
- return tracer.startActiveSpan(createSpanName('context.handle_context_resolution'), {
47
- attributes: {
48
- 'context.request_context_keys': Object.keys(requestContext),
49
- },
50
- }, async (parentSpan) => {
51
- let agentGraph;
52
- let trigger;
53
- try {
54
- // 1. Get graph's context config
55
- agentGraph = await getAgentGraphWithDefaultAgent(dbClient)({
56
- scopes: { tenantId, projectId },
57
- graphId,
58
- });
59
- if (!agentGraph?.contextConfigId) {
60
- logger.debug({ graphId }, 'No context config found for graph');
61
- return null;
62
- }
63
- // 2. Handle context config changes (upsert scenario)
64
- await handleContextConfigChange(tenantId, projectId, conversationId, graphId, agentGraph.contextConfigId, dbClient, credentialStores);
65
- // 3. Determine trigger based on conversation state
66
- trigger = await determineContextTrigger(tenantId, projectId, conversationId, dbClient);
67
- // 4. Get context configuration directly from database
68
- const contextConfig = await getContextConfigById(dbClient)({
69
- scopes: { tenantId, projectId },
70
- id: agentGraph.contextConfigId,
71
- });
72
- if (!contextConfig) {
73
- logger.warn({ contextConfigId: agentGraph.contextConfigId }, 'Context config not found, proceeding without context resolution');
74
- parentSpan.setStatus({ code: SpanStatusCode.ERROR });
75
- parentSpan.addEvent('context.config_not_found', {
76
- contextConfigId: agentGraph.contextConfigId,
77
- });
78
- return null;
79
- }
80
- // 5. Resolve context based on trigger
81
- const contextResolver = new ContextResolver(tenantId, projectId, dbClient, credentialStores);
82
- // Resolve unified context with appropriate trigger for cache invalidation
83
- const contextResult = await contextResolver.resolve(contextConfig, {
84
- triggerEvent: trigger,
85
- conversationId,
86
- requestContext,
87
- tenantId,
88
- });
89
- // Add built-in variables to resolved context
90
- const resolvedContext = {
91
- ...contextResult.resolvedContext,
92
- $now: new Date().toISOString(),
93
- $env: process.env,
94
- };
95
- // Update conversation's last context resolution timestamp
96
- await updateConversation(dbClient)({
97
- scopes: { tenantId, projectId },
98
- conversationId,
99
- data: {
100
- lastContextResolution: new Date().toISOString(),
101
- },
102
- });
103
- // Check if there were any errors during context resolution
104
- if (contextResult.errors.length > 0) {
105
- // Mark span as failed if there are errors
106
- parentSpan.setStatus({
107
- code: SpanStatusCode.ERROR,
108
- message: `Context resolution completed with errors`,
109
- });
110
- }
111
- else {
112
- // Mark span as successful if no errors
113
- parentSpan.setStatus({ code: SpanStatusCode.OK });
114
- }
115
- // Force flush after critical context resolution span
116
- await forceFlushTracer();
117
- logger.info({
118
- conversationId,
119
- graphId,
120
- contextConfigId: contextConfig.id,
121
- trigger,
122
- resolvedKeys: Object.keys(resolvedContext),
123
- cacheHits: contextResult.cacheHits.length,
124
- cacheMisses: contextResult.cacheMisses.length,
125
- fetchedDefinitions: contextResult.fetchedDefinitions.length,
126
- errors: contextResult.errors.length,
127
- }, 'Context resolution completed (contextConfigId derived from graph)');
128
- return resolvedContext;
129
- }
130
- catch (error) {
131
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
132
- // Record error in parent span
133
- parentSpan.recordException(error);
134
- parentSpan.setAttributes({
135
- 'context.final_status': 'failed',
136
- 'context.error_message': errorMessage,
137
- });
138
- parentSpan.setStatus({
139
- code: SpanStatusCode.ERROR,
140
- message: errorMessage,
141
- });
142
- logger.error({
143
- error: errorMessage,
144
- contextConfigId: agentGraph?.contextConfigId,
145
- trigger: await determineContextTrigger(tenantId, projectId, conversationId, dbClient).catch(() => 'unknown'),
146
- }, 'Failed to resolve context, proceeding without context resolution');
147
- // Force flush after error to ensure error telemetry is sent
148
- await forceFlushTracer();
149
- return null;
150
- }
151
- finally {
152
- parentSpan.end();
153
- }
154
- });
155
- }
156
- export { handleContextResolution, determineContextTrigger, handleContextConfigChange };
157
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context/context.ts"],"names":[],"mappings":"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"}
@@ -1,50 +0,0 @@
1
- import type { DatabaseClient } from '../db/client';
2
- export interface CacheEntry {
3
- contextConfigId: string;
4
- contextVariableKey: string;
5
- conversationId: string;
6
- value: unknown;
7
- requestHash?: string;
8
- tenantId: string;
9
- }
10
- /**
11
- * Context cache with request hash-based invalidation and graceful error handling.
12
- *
13
- * Implements conversation-scoped caching with smart cache invalidation based on
14
- * request hash changes. All cache errors are treated as cache misses to ensure
15
- * system reliability.
16
- */
17
- export declare class ContextCache {
18
- private tenantId;
19
- private projectId;
20
- private dbClient;
21
- constructor(tenantId: string, projectId: string, dbClient: DatabaseClient);
22
- /**
23
- * Get cached context data for a conversation
24
- */
25
- get({ conversationId, contextConfigId, contextVariableKey, requestHash, }: {
26
- conversationId: string;
27
- contextConfigId: string;
28
- contextVariableKey: string;
29
- requestHash?: string;
30
- }): Promise<CacheEntry | null>;
31
- /**
32
- * Set cached context data for a conversation
33
- */
34
- set(entry: CacheEntry): Promise<void>;
35
- /**
36
- * Clear cache entries for a specific conversation
37
- */
38
- clearConversation(tenantId: string, projectId: string, conversationId: string): Promise<void>;
39
- /**
40
- * Clear all cache entries for a specific context configuration
41
- */
42
- clearContextConfig(tenantId: string, projectId: string, contextConfigId: string): Promise<void>;
43
- /**
44
- * Clean up expired or orphaned cache entries
45
- */
46
- cleanup(): Promise<void>;
47
- invalidateInvocationDefinitions(tenantId: string, projectId: string, conversationId: string, contextConfigId: string, definitionIds: string[]): Promise<void>;
48
- invalidateRequestContext(tenantId: string, projectId: string, conversationId: string, contextConfigId: string): Promise<void>;
49
- }
50
- //# sourceMappingURL=contextCache.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contextCache.d.ts","sourceRoot":"","sources":["../../src/context/contextCache.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAKnD,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAiB;gBAErB,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc;IAazE;;OAEG;IACG,GAAG,CAAC,EACR,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,WAAW,GACZ,EAAE;QACD,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAmC9B;;OAEG;IACG,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IA0C3C;;OAEG;IACG,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,IAAI,CAAC;IA0BhB;;OAEG;IACG,kBAAkB,CACtB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;IA0BhB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsBxB,+BAA+B,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,EACvB,aAAa,EAAE,MAAM,EAAE,GACtB,OAAO,CAAC,IAAI,CAAC;IASV,wBAAwB,CAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC;CAOjB"}
@@ -1,175 +0,0 @@
1
- import { nanoid } from 'nanoid';
2
- import { cleanupTenantCache, clearContextConfigCache, clearConversationCache, getCacheEntry, invalidateInvocationDefinitionsCache, invalidateRequestContextCache, setCacheEntry, } from '../data-access/index';
3
- import { getLogger } from '../utils/logger';
4
- const logger = getLogger('context-cache');
5
- /**
6
- * Context cache with request hash-based invalidation and graceful error handling.
7
- *
8
- * Implements conversation-scoped caching with smart cache invalidation based on
9
- * request hash changes. All cache errors are treated as cache misses to ensure
10
- * system reliability.
11
- */
12
- export class ContextCache {
13
- tenantId;
14
- projectId;
15
- dbClient;
16
- constructor(tenantId, projectId, dbClient) {
17
- this.tenantId = tenantId;
18
- this.projectId = projectId;
19
- this.dbClient = dbClient;
20
- logger.info({
21
- tenantId: this.tenantId,
22
- }, 'ContextCache initialized');
23
- }
24
- /**
25
- * Get cached context data for a conversation
26
- */
27
- async get({ conversationId, contextConfigId, contextVariableKey, requestHash, }) {
28
- try {
29
- const cacheEntry = await getCacheEntry(this.dbClient)({
30
- conversationId,
31
- contextConfigId,
32
- contextVariableKey,
33
- requestHash,
34
- });
35
- if (!cacheEntry) {
36
- return null;
37
- }
38
- return {
39
- contextConfigId: cacheEntry.contextConfigId,
40
- contextVariableKey: cacheEntry.contextVariableKey,
41
- conversationId: cacheEntry.conversationId,
42
- value: cacheEntry.value,
43
- requestHash: cacheEntry.requestHash || undefined,
44
- tenantId: this.tenantId,
45
- };
46
- }
47
- catch (error) {
48
- logger.error({
49
- conversationId,
50
- contextConfigId,
51
- contextVariableKey,
52
- error: error instanceof Error ? error.message : 'Unknown error',
53
- }, 'Failed to get cache entry');
54
- // Graceful degradation: treat cache errors as cache misses
55
- // This ensures the system continues to function even if caching fails
56
- return null;
57
- }
58
- }
59
- /**
60
- * Set cached context data for a conversation
61
- */
62
- async set(entry) {
63
- try {
64
- const cacheData = {
65
- id: nanoid(),
66
- tenantId: this.tenantId,
67
- projectId: this.projectId,
68
- conversationId: entry.conversationId,
69
- contextConfigId: entry.contextConfigId,
70
- contextVariableKey: entry.contextVariableKey,
71
- value: entry.value,
72
- requestHash: entry.requestHash,
73
- fetchedAt: new Date().toISOString(),
74
- fetchSource: `${entry.contextConfigId}:${entry.contextVariableKey}`,
75
- fetchDurationMs: 0, // Will be updated by the resolver
76
- createdAt: new Date().toISOString(),
77
- updatedAt: new Date().toISOString(),
78
- };
79
- await setCacheEntry(this.dbClient)(cacheData);
80
- logger.debug({
81
- conversationId: entry.conversationId,
82
- contextConfigId: entry.contextConfigId,
83
- contextVariableKey: entry.contextVariableKey,
84
- }, 'Cache entry set successfully');
85
- }
86
- catch (error) {
87
- logger.error({
88
- conversationId: entry.conversationId,
89
- contextConfigId: entry.contextConfigId,
90
- contextVariableKey: entry.contextVariableKey,
91
- error: error instanceof Error ? error.message : 'Unknown error',
92
- }, 'Failed to set cache entry');
93
- // Don't throw - caching failures shouldn't break context resolution
94
- }
95
- }
96
- /**
97
- * Clear cache entries for a specific conversation
98
- */
99
- async clearConversation(tenantId, projectId, conversationId) {
100
- try {
101
- const result = await clearConversationCache(this.dbClient)({
102
- scopes: { tenantId, projectId },
103
- conversationId,
104
- });
105
- logger.info({
106
- conversationId,
107
- rowsCleared: result,
108
- }, 'Conversation cache cleared successfully');
109
- }
110
- catch (error) {
111
- logger.error({
112
- conversationId,
113
- error: error instanceof Error ? error.message : 'Unknown error',
114
- }, 'Failed to clear conversation cache');
115
- throw error;
116
- }
117
- }
118
- /**
119
- * Clear all cache entries for a specific context configuration
120
- */
121
- async clearContextConfig(tenantId, projectId, contextConfigId) {
122
- try {
123
- const result = await clearContextConfigCache(this.dbClient)({
124
- scopes: { tenantId, projectId },
125
- contextConfigId,
126
- });
127
- logger.info({
128
- contextConfigId,
129
- rowsCleared: result,
130
- }, 'Context config cache cleared successfully');
131
- }
132
- catch (error) {
133
- logger.error({
134
- contextConfigId,
135
- error: error instanceof Error ? error.message : 'Unknown error',
136
- }, 'Failed to clear context config cache');
137
- throw error;
138
- }
139
- }
140
- /**
141
- * Clean up expired or orphaned cache entries
142
- */
143
- async cleanup() {
144
- try {
145
- const result = await cleanupTenantCache(this.dbClient)({
146
- scopes: { tenantId: this.tenantId, projectId: this.projectId },
147
- });
148
- logger.info({
149
- rowsCleared: result,
150
- }, 'Cache cleanup completed');
151
- }
152
- catch (error) {
153
- logger.error({
154
- error: error instanceof Error ? error.message : 'Unknown error',
155
- }, 'Failed to cleanup cache');
156
- throw error;
157
- }
158
- }
159
- async invalidateInvocationDefinitions(tenantId, projectId, conversationId, contextConfigId, definitionIds) {
160
- await invalidateInvocationDefinitionsCache(this.dbClient)({
161
- scopes: { tenantId, projectId },
162
- conversationId,
163
- contextConfigId,
164
- invocationDefinitionIds: definitionIds,
165
- });
166
- }
167
- async invalidateRequestContext(tenantId, projectId, conversationId, contextConfigId) {
168
- await invalidateRequestContextCache(this.dbClient)({
169
- scopes: { tenantId, projectId },
170
- conversationId,
171
- contextConfigId,
172
- });
173
- }
174
- }
175
- //# sourceMappingURL=contextCache.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contextCache.js","sourceRoot":"","sources":["../../src/context/contextCache.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- export type { ContextConfigBuilderOptions } from './ContextConfig';
2
- export { ContextConfigBuilder, contextConfig, createRequestSchema, fetchDefinition, } from './ContextConfig';
3
- export type { FetchResult } from './ContextFetcher';
4
- export { ContextFetcher } from './ContextFetcher';
5
- export type { ContextResolutionOptions, ContextResolutionResult, ResolvedContext, } from './ContextResolver';
6
- export { ContextResolver } from './ContextResolver';
7
- export { determineContextTrigger, handleContextConfigChange, handleContextResolution, } from './context';
8
- export { ContextCache } from './contextCache';
9
- export type { TemplateContext, TemplateRenderOptions, } from './TemplateEngine';
10
- export { TemplateEngine } from './TemplateEngine';
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EACV,eAAe,EACf,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,8 +0,0 @@
1
- // Context system exports
2
- export { ContextConfigBuilder, contextConfig, createRequestSchema, fetchDefinition, } from './ContextConfig';
3
- export { ContextFetcher } from './ContextFetcher';
4
- export { ContextResolver } from './ContextResolver';
5
- export { determineContextTrigger, handleContextConfigChange, handleContextResolution, } from './context';
6
- export { ContextCache } from './contextCache';
7
- export { TemplateEngine } from './TemplateEngine';
8
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA,yBAAyB;AAGzB,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,mBAAmB,EACnB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAMlD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,39 +0,0 @@
1
- import type { CredentialStore } from '../types/server';
2
- /**
3
- * Registry for managing credential stores in the application context
4
- * Provides methods to register, retrieve, and manage credential stores
5
- */
6
- export declare class CredentialStoreRegistry {
7
- private stores;
8
- private logger;
9
- constructor(initialStores?: CredentialStore[]);
10
- /**
11
- * Add a credential store to the registry
12
- */
13
- add(store: CredentialStore): void;
14
- /**
15
- * Get a credential store by ID
16
- */
17
- get(id: string): CredentialStore | undefined;
18
- /**
19
- * Get all registered credential stores
20
- */
21
- getAll(): CredentialStore[];
22
- /**
23
- * Get all credential store IDs
24
- */
25
- getIds(): string[];
26
- /**
27
- * Check if a credential store is registered
28
- */
29
- has(id: string): boolean;
30
- /**
31
- * Remove a credential store
32
- */
33
- remove(id: string): boolean;
34
- /**
35
- * Get the number of registered stores
36
- */
37
- size(): number;
38
- }
39
- //# sourceMappingURL=CredentialStoreRegistry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CredentialStoreRegistry.d.ts","sourceRoot":"","sources":["../../src/credential-stores/CredentialStoreRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvD;;;GAGG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,MAAM,CAA0C;gBAE5C,aAAa,GAAE,eAAe,EAAO;IAMjD;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAcjC;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI5C;;OAEG;IACH,MAAM,IAAI,eAAe,EAAE;IAI3B;;OAEG;IACH,MAAM,IAAI,MAAM,EAAE;IAIlB;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;OAEG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAQ3B;;OAEG;IACH,IAAI,IAAI,MAAM;CAGf"}
@@ -1,65 +0,0 @@
1
- import { getLogger } from '../utils/logger';
2
- /**
3
- * Registry for managing credential stores in the application context
4
- * Provides methods to register, retrieve, and manage credential stores
5
- */
6
- export class CredentialStoreRegistry {
7
- stores = new Map();
8
- logger = getLogger('credential-store-registry');
9
- constructor(initialStores = []) {
10
- for (const store of initialStores) {
11
- this.add(store);
12
- }
13
- }
14
- /**
15
- * Add a credential store to the registry
16
- */
17
- add(store) {
18
- if (this.stores.has(store.id)) {
19
- this.logger.warn({ storeId: store.id }, `Credential store ${store.id} already registered, replacing`);
20
- }
21
- this.stores.set(store.id, store);
22
- this.logger.info({ storeId: store.id, storeType: store.type }, `Registered credential store: ${store.id} (type: ${store.type})`);
23
- }
24
- /**
25
- * Get a credential store by ID
26
- */
27
- get(id) {
28
- return this.stores.get(id);
29
- }
30
- /**
31
- * Get all registered credential stores
32
- */
33
- getAll() {
34
- return Array.from(this.stores.values());
35
- }
36
- /**
37
- * Get all credential store IDs
38
- */
39
- getIds() {
40
- return Array.from(this.stores.keys());
41
- }
42
- /**
43
- * Check if a credential store is registered
44
- */
45
- has(id) {
46
- return this.stores.has(id);
47
- }
48
- /**
49
- * Remove a credential store
50
- */
51
- remove(id) {
52
- const removed = this.stores.delete(id);
53
- if (removed) {
54
- this.logger.info({ id }, `Removed credential store: ${id}`);
55
- }
56
- return removed;
57
- }
58
- /**
59
- * Get the number of registered stores
60
- */
61
- size() {
62
- return this.stores.size;
63
- }
64
- }
65
- //# sourceMappingURL=CredentialStoreRegistry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CredentialStoreRegistry.js","sourceRoot":"","sources":["../../src/credential-stores/CredentialStoreRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IAC1B,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC5C,MAAM,GAAG,SAAS,CAAC,2BAA2B,CAAC,CAAC;IAExD,YAAY,gBAAmC,EAAE;QAC/C,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,KAAsB;QACxB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,EACrB,oBAAoB,KAAK,CAAC,EAAE,gCAAgC,CAC7D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,EAC5C,gCAAgC,KAAK,CAAC,EAAE,WAAW,KAAK,CAAC,IAAI,GAAG,CACjE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,EAAU;QACf,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,6BAA6B,EAAE,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;CACF"}
@@ -1,6 +0,0 @@
1
- import type { CredentialStore } from '../types/server';
2
- /**
3
- * Create default credential stores based on environment variables
4
- */
5
- export declare function createDefaultCredentialStores(): CredentialStore[];
6
- //# sourceMappingURL=defaults.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/credential-stores/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAKvD;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,eAAe,EAAE,CAoBjE"}
@@ -1,22 +0,0 @@
1
- import { createKeyChainStore } from './keychain-store';
2
- import { InMemoryCredentialStore } from './memory-store';
3
- import { createNangoCredentialStore } from './nango-store';
4
- /**
5
- * Create default credential stores based on environment variables
6
- */
7
- export function createDefaultCredentialStores() {
8
- const stores = [];
9
- // Always include in-memory store
10
- stores.push(new InMemoryCredentialStore('memory-default'));
11
- // Include Nango store if NANGO_SECRET_KEY is set
12
- if (process.env.NANGO_SECRET_KEY) {
13
- stores.push(createNangoCredentialStore('nango-default', {
14
- apiUrl: process.env.NANGO_HOST || 'https://api.nango.dev',
15
- secretKey: process.env.NANGO_SECRET_KEY,
16
- }));
17
- }
18
- // Always include keychain store
19
- stores.push(createKeyChainStore('keychain-default'));
20
- return stores;
21
- }
22
- //# sourceMappingURL=defaults.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/credential-stores/defaults.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAE3D;;GAEG;AACH,MAAM,UAAU,6BAA6B;IAC3C,MAAM,MAAM,GAAsB,EAAE,CAAC;IAErC,iCAAiC;IACjC,MAAM,CAAC,IAAI,CAAC,IAAI,uBAAuB,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAE3D,iDAAiD;IACjD,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CACT,0BAA0B,CAAC,eAAe,EAAE;YAC1C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,uBAAuB;YACzD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB;SACxC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,gCAAgC;IAChC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAErD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,6 +0,0 @@
1
- export { CredentialStoreRegistry } from './CredentialStoreRegistry';
2
- export { createDefaultCredentialStores } from './defaults';
3
- export { createKeyChainStore, KeyChainStore } from './keychain-store';
4
- export { InMemoryCredentialStore } from './memory-store';
5
- export { createNangoCredentialStore, NangoCredentialStore } from './nango-store';
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/credential-stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
@@ -1,6 +0,0 @@
1
- export { CredentialStoreRegistry } from './CredentialStoreRegistry';
2
- export { createDefaultCredentialStores } from './defaults';
3
- export { createKeyChainStore, KeyChainStore } from './keychain-store';
4
- export { InMemoryCredentialStore } from './memory-store';
5
- export { createNangoCredentialStore, NangoCredentialStore } from './nango-store';
6
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/credential-stores/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}