@inkeep/agents-core 0.0.0-chat-to-edit-20251119071712
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +56 -0
- package/README.md +458 -0
- package/SUPPLEMENTAL_TERMS.md +40 -0
- package/dist/auth-detection-CGqhPDnj.d.cts +435 -0
- package/dist/auth-detection-CGqhPDnj.d.ts +435 -0
- package/dist/chunk-7CLFCY6J.js +36 -0
- package/dist/chunk-A6JWG7FI.js +1689 -0
- package/dist/chunk-CMNLBV2A.js +39 -0
- package/dist/chunk-E6R6PML7.js +19 -0
- package/dist/chunk-OP3KPT4T.js +442 -0
- package/dist/chunk-TLSKVSBR.js +1234 -0
- package/dist/chunk-WG46C2WU.js +394 -0
- package/dist/chunk-YECQCT5N.js +223 -0
- package/dist/chunk-YFHT5M2R.js +18 -0
- package/dist/client-exports.cjs +3421 -0
- package/dist/client-exports.d.cts +292 -0
- package/dist/client-exports.d.ts +292 -0
- package/dist/client-exports.js +178 -0
- package/dist/constants/models.cjs +40 -0
- package/dist/constants/models.d.cts +42 -0
- package/dist/constants/models.d.ts +42 -0
- package/dist/constants/models.js +1 -0
- package/dist/db/schema.cjs +1686 -0
- package/dist/db/schema.d.cts +7 -0
- package/dist/db/schema.d.ts +7 -0
- package/dist/db/schema.js +1 -0
- package/dist/index.cjs +229792 -0
- package/dist/index.d.cts +5138 -0
- package/dist/index.d.ts +5138 -0
- package/dist/index.js +224908 -0
- package/dist/props-validation-BMR1qNiy.d.cts +15 -0
- package/dist/props-validation-BMR1qNiy.d.ts +15 -0
- package/dist/schema-C90zXlqp.d.ts +8012 -0
- package/dist/schema-keglUDw0.d.cts +8012 -0
- package/dist/types/index.cjs +64 -0
- package/dist/types/index.d.cts +175 -0
- package/dist/types/index.d.ts +175 -0
- package/dist/types/index.js +2 -0
- package/dist/utility-CXEG5391.d.cts +17265 -0
- package/dist/utility-CXEG5391.d.ts +17265 -0
- package/dist/utils/schema-conversion.cjs +236 -0
- package/dist/utils/schema-conversion.d.cts +26 -0
- package/dist/utils/schema-conversion.d.ts +26 -0
- package/dist/utils/schema-conversion.js +1 -0
- package/dist/validation/index.cjs +3521 -0
- package/dist/validation/index.d.cts +279 -0
- package/dist/validation/index.d.ts +279 -0
- package/dist/validation/index.js +2 -0
- package/drizzle/0000_exotic_mysterio.sql +398 -0
- package/drizzle/0001_greedy_the_phantom.sql +4 -0
- package/drizzle/0002_add_evaluation_features.sql +252 -0
- package/drizzle/0003_brave_micromax.sql +2 -0
- package/drizzle/meta/0000_snapshot.json +2519 -0
- package/drizzle/meta/0001_snapshot.json +2892 -0
- package/drizzle/meta/0002_snapshot.json +4485 -0
- package/drizzle/meta/_journal.json +34 -0
- package/package.json +133 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// src/types/a2a.ts
|
|
2
|
+
var TaskState = /* @__PURE__ */ ((TaskState2) => {
|
|
3
|
+
TaskState2["Submitted"] = "submitted";
|
|
4
|
+
TaskState2["Working"] = "working";
|
|
5
|
+
TaskState2["InputRequired"] = "input-required";
|
|
6
|
+
TaskState2["Completed"] = "completed";
|
|
7
|
+
TaskState2["Canceled"] = "canceled";
|
|
8
|
+
TaskState2["Failed"] = "failed";
|
|
9
|
+
TaskState2["Rejected"] = "rejected";
|
|
10
|
+
TaskState2["AuthRequired"] = "auth-required";
|
|
11
|
+
TaskState2["Unknown"] = "unknown";
|
|
12
|
+
return TaskState2;
|
|
13
|
+
})(TaskState || {});
|
|
14
|
+
|
|
15
|
+
// src/types/tool-policies.ts
|
|
16
|
+
function normalizeToolSelections(selections) {
|
|
17
|
+
if (!selections || selections.length === 0) {
|
|
18
|
+
return { selectedTools: [], toolPolicies: {} };
|
|
19
|
+
}
|
|
20
|
+
const selectedTools = [];
|
|
21
|
+
const toolPolicies = {};
|
|
22
|
+
for (const selection of selections) {
|
|
23
|
+
if (typeof selection === "string") {
|
|
24
|
+
selectedTools.push(selection);
|
|
25
|
+
} else {
|
|
26
|
+
selectedTools.push(selection.name);
|
|
27
|
+
const policy = {};
|
|
28
|
+
if (selection.needsApproval !== void 0) {
|
|
29
|
+
policy.needsApproval = selection.needsApproval;
|
|
30
|
+
}
|
|
31
|
+
if (Object.keys(policy).length > 0) {
|
|
32
|
+
toolPolicies[selection.name] = policy;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return { selectedTools, toolPolicies };
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export { TaskState, normalizeToolSelections };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
3
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
5
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
6
|
+
}) : x)(function(x) {
|
|
7
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
8
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
9
|
+
});
|
|
10
|
+
var __commonJS = (cb, mod) => function __require2() {
|
|
11
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
12
|
+
};
|
|
13
|
+
var __export = (target, all) => {
|
|
14
|
+
for (var name in all)
|
|
15
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
16
|
+
};
|
|
17
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
18
|
+
|
|
19
|
+
export { __commonJS, __export, __publicField, __require };
|
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
import { registerClient, startAuthorization, exchangeAuthorization, discoverOAuthProtectedResourceMetadata, discoverAuthorizationServerMetadata } from '@modelcontextprotocol/sdk/client/auth.js';
|
|
2
|
+
|
|
3
|
+
// src/constants/otel-attributes.ts
|
|
4
|
+
var DELEGATION_FROM_SUB_AGENT_ID = "delegation.from_sub_agent_id";
|
|
5
|
+
var DELEGATION_TO_SUB_AGENT_ID = "delegation.to_sub_agent_id";
|
|
6
|
+
var DELEGATION_ID = "delegation.id";
|
|
7
|
+
var TRANSFER_FROM_SUB_AGENT_ID = "transfer.from_sub_agent_id";
|
|
8
|
+
var TRANSFER_TO_SUB_AGENT_ID = "transfer.to_sub_agent_id";
|
|
9
|
+
var SPAN_NAMES = {
|
|
10
|
+
AI_TOOL_CALL: "ai.toolCall",
|
|
11
|
+
CONTEXT_RESOLUTION: "context-resolver.resolve_single_fetch_definition",
|
|
12
|
+
CONTEXT_HANDLE: "context.handle_context_resolution",
|
|
13
|
+
AGENT_GENERATION: "agent.generate",
|
|
14
|
+
CONTEXT_FETCHER: "context-fetcher.http-request",
|
|
15
|
+
ARTIFACT_PROCESSING: "agent_session.process_artifact"
|
|
16
|
+
};
|
|
17
|
+
var AI_OPERATIONS = {
|
|
18
|
+
GENERATE_TEXT: "ai.generateText.doGenerate",
|
|
19
|
+
STREAM_TEXT: "ai.streamText.doStream",
|
|
20
|
+
STREAM_OBJECT: "ai.streamObject.doStream"
|
|
21
|
+
};
|
|
22
|
+
var SPAN_KEYS = {
|
|
23
|
+
// Core span attributes
|
|
24
|
+
SPAN_ID: "spanID",
|
|
25
|
+
TRACE_ID: "traceID",
|
|
26
|
+
DURATION_NANO: "durationNano",
|
|
27
|
+
TIMESTAMP: "timestamp",
|
|
28
|
+
HAS_ERROR: "hasError",
|
|
29
|
+
STATUS_MESSAGE: "status_message",
|
|
30
|
+
OTEL_STATUS_CODE: "otel.status_code",
|
|
31
|
+
OTEL_STATUS_DESCRIPTION: "otel.status_description",
|
|
32
|
+
// Agent attributesa
|
|
33
|
+
AGENT_ID: "agent.id",
|
|
34
|
+
AGENT_NAME: "agent.name",
|
|
35
|
+
TENANT_ID: "tenant.id",
|
|
36
|
+
PROJECT_ID: "project.id",
|
|
37
|
+
SUB_AGENT_NAME: "subAgent.name",
|
|
38
|
+
SUB_AGENT_ID: "subAgent.id",
|
|
39
|
+
// AI/Agent attributes
|
|
40
|
+
AI_OPERATION_ID: "ai.operationId",
|
|
41
|
+
AI_RESPONSE_TIMESTAMP: "ai.response.timestamp",
|
|
42
|
+
AI_RESPONSE_CONTENT: "ai.response.content",
|
|
43
|
+
AI_RESPONSE_TEXT: "ai.response.text",
|
|
44
|
+
AI_RESPONSE_OBJECT: "ai.response.object",
|
|
45
|
+
AI_RESPONSE_MODEL: "ai.response.model",
|
|
46
|
+
AI_RESPONSE_TOOL_CALLS: "ai.response.toolCalls",
|
|
47
|
+
AI_PROMPT_MESSAGES: "ai.prompt.messages",
|
|
48
|
+
AI_MODEL_PROVIDER: "ai.model.provider",
|
|
49
|
+
AI_TELEMETRY_FUNCTION_ID: "ai.telemetry.functionId",
|
|
50
|
+
AI_TELEMETRY_SUB_AGENT_ID: "ai.telemetry.metadata.subAgentId",
|
|
51
|
+
AI_TELEMETRY_SUB_AGENT_NAME: "ai.telemetry.metadata.subAgentName",
|
|
52
|
+
AI_MODEL_ID: "ai.model.id",
|
|
53
|
+
// Tool attributes
|
|
54
|
+
AI_TOOL_CALL_NAME: "ai.toolCall.name",
|
|
55
|
+
AI_TOOL_CALL_RESULT: "ai.toolCall.result",
|
|
56
|
+
AI_TOOL_CALL_ARGS: "ai.toolCall.args",
|
|
57
|
+
AI_TOOL_CALL_ID: "ai.toolCall.id",
|
|
58
|
+
AI_TOOL_TYPE: "ai.toolType",
|
|
59
|
+
TOOL_PURPOSE: "tool.purpose",
|
|
60
|
+
// Token usage
|
|
61
|
+
GEN_AI_USAGE_INPUT_TOKENS: "gen_ai.usage.input_tokens",
|
|
62
|
+
GEN_AI_USAGE_OUTPUT_TOKENS: "gen_ai.usage.output_tokens",
|
|
63
|
+
// Context attributes
|
|
64
|
+
CONTEXT_URL: "context.url",
|
|
65
|
+
CONTEXT_CONFIG_ID: "context.context_config_id",
|
|
66
|
+
CONTEXT_AGENT_ID: "context.agent_id",
|
|
67
|
+
CONTEXT_HEADERS_KEYS: "context.headers_keys",
|
|
68
|
+
// Message attributes
|
|
69
|
+
MESSAGE_CONTENT: "message.content",
|
|
70
|
+
MESSAGE_TIMESTAMP: "message.timestamp",
|
|
71
|
+
MCP_TOOL_DESCRIPTION: "mcp.tool.description",
|
|
72
|
+
// Delegation/Transfer attributes
|
|
73
|
+
DELEGATION_FROM_SUB_AGENT_ID,
|
|
74
|
+
DELEGATION_TO_SUB_AGENT_ID,
|
|
75
|
+
DELEGATION_ID,
|
|
76
|
+
TRANSFER_FROM_SUB_AGENT_ID,
|
|
77
|
+
TRANSFER_TO_SUB_AGENT_ID,
|
|
78
|
+
// HTTP attributes
|
|
79
|
+
HTTP_URL: "http.url",
|
|
80
|
+
HTTP_STATUS_CODE: "http.status_code",
|
|
81
|
+
HTTP_RESPONSE_BODY_SIZE: "http.response.body_size",
|
|
82
|
+
// Core attributes
|
|
83
|
+
NAME: "name",
|
|
84
|
+
PARENT_SPAN_ID: "parentSpanID",
|
|
85
|
+
CONVERSATION_ID: "conversation.id",
|
|
86
|
+
// Artifact processing attributes
|
|
87
|
+
ARTIFACT_ID: "artifact.id",
|
|
88
|
+
ARTIFACT_TYPE: "artifact.type",
|
|
89
|
+
ARTIFACT_TOOL_CALL_ID: "artifact.tool_call_id",
|
|
90
|
+
ARTIFACT_DATA: "artifact.data",
|
|
91
|
+
ARTIFACT_NAME: "artifact.name",
|
|
92
|
+
ARTIFACT_DESCRIPTION: "artifact.description"
|
|
93
|
+
};
|
|
94
|
+
var UNKNOWN_VALUE = "unknown";
|
|
95
|
+
var ACTIVITY_TYPES = {
|
|
96
|
+
TOOL_CALL: "tool_call",
|
|
97
|
+
AI_GENERATION: "ai_generation",
|
|
98
|
+
AGENT_GENERATION: "agent_generation",
|
|
99
|
+
CONTEXT_FETCH: "context_fetch",
|
|
100
|
+
CONTEXT_RESOLUTION: "context_resolution",
|
|
101
|
+
USER_MESSAGE: "user_message",
|
|
102
|
+
AI_ASSISTANT_MESSAGE: "ai_assistant_message",
|
|
103
|
+
AI_MODEL_STREAMED_TEXT: "ai_model_streamed_text",
|
|
104
|
+
AI_MODEL_STREAMED_OBJECT: "ai_model_streamed_object"
|
|
105
|
+
};
|
|
106
|
+
var ACTIVITY_STATUS = {
|
|
107
|
+
SUCCESS: "success",
|
|
108
|
+
ERROR: "error",
|
|
109
|
+
PENDING: "pending"
|
|
110
|
+
};
|
|
111
|
+
var AGENT_IDS = {
|
|
112
|
+
USER: "user",
|
|
113
|
+
AI_ASSISTANT: "ai-assistant"
|
|
114
|
+
};
|
|
115
|
+
var ACTIVITY_NAMES = {
|
|
116
|
+
CONTEXT_FETCH: "Context Fetch",
|
|
117
|
+
USER_MESSAGE: "User Message",
|
|
118
|
+
AI_ASSISTANT_MESSAGE: "AI Assistant Message",
|
|
119
|
+
AI_TEXT_GENERATION: "AI Text Generation",
|
|
120
|
+
AI_STREAMING_TEXT: "AI Streaming Text",
|
|
121
|
+
AI_STREAMING_OBJECT: "AI Streaming Object",
|
|
122
|
+
UNKNOWN_AGENT: "Unknown Agent",
|
|
123
|
+
USER: "User"
|
|
124
|
+
};
|
|
125
|
+
var AI_TOOL_TYPES = {
|
|
126
|
+
MCP: "mcp",
|
|
127
|
+
TRANSFER: "transfer",
|
|
128
|
+
DELEGATION: "delegation"
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
// src/constants/signoz-queries.ts
|
|
132
|
+
var DATA_TYPES = {
|
|
133
|
+
STRING: "string",
|
|
134
|
+
INT64: "int64",
|
|
135
|
+
FLOAT64: "float64",
|
|
136
|
+
BOOL: "bool"
|
|
137
|
+
};
|
|
138
|
+
var FIELD_TYPES = {
|
|
139
|
+
TAG: "tag",
|
|
140
|
+
RESOURCE: "resource"
|
|
141
|
+
};
|
|
142
|
+
var QUERY_FIELD_CONFIGS = {
|
|
143
|
+
// String tag fields
|
|
144
|
+
STRING_TAG: {
|
|
145
|
+
dataType: DATA_TYPES.STRING,
|
|
146
|
+
type: FIELD_TYPES.TAG,
|
|
147
|
+
isColumn: false
|
|
148
|
+
},
|
|
149
|
+
STRING_TAG_COLUMN: {
|
|
150
|
+
dataType: DATA_TYPES.STRING,
|
|
151
|
+
type: FIELD_TYPES.TAG,
|
|
152
|
+
isColumn: true
|
|
153
|
+
},
|
|
154
|
+
// Numeric tag fields
|
|
155
|
+
INT64_TAG: {
|
|
156
|
+
dataType: DATA_TYPES.INT64,
|
|
157
|
+
type: FIELD_TYPES.TAG,
|
|
158
|
+
isColumn: false
|
|
159
|
+
},
|
|
160
|
+
INT64_TAG_COLUMN: {
|
|
161
|
+
dataType: DATA_TYPES.INT64,
|
|
162
|
+
type: FIELD_TYPES.TAG,
|
|
163
|
+
isColumn: true
|
|
164
|
+
},
|
|
165
|
+
FLOAT64_TAG: {
|
|
166
|
+
dataType: DATA_TYPES.FLOAT64,
|
|
167
|
+
type: FIELD_TYPES.TAG,
|
|
168
|
+
isColumn: false
|
|
169
|
+
},
|
|
170
|
+
FLOAT64_TAG_COLUMN: {
|
|
171
|
+
dataType: DATA_TYPES.FLOAT64,
|
|
172
|
+
type: FIELD_TYPES.TAG,
|
|
173
|
+
isColumn: true
|
|
174
|
+
},
|
|
175
|
+
// Boolean tag fields
|
|
176
|
+
BOOL_TAG: {
|
|
177
|
+
dataType: DATA_TYPES.BOOL,
|
|
178
|
+
type: FIELD_TYPES.TAG,
|
|
179
|
+
isColumn: false
|
|
180
|
+
},
|
|
181
|
+
BOOL_TAG_COLUMN: {
|
|
182
|
+
dataType: DATA_TYPES.BOOL,
|
|
183
|
+
type: FIELD_TYPES.TAG,
|
|
184
|
+
isColumn: true
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
var OPERATORS = {
|
|
188
|
+
// Comparison operators
|
|
189
|
+
EQUALS: "=",
|
|
190
|
+
NOT_EQUALS: "!=",
|
|
191
|
+
LESS_THAN: "<",
|
|
192
|
+
GREATER_THAN: ">",
|
|
193
|
+
LESS_THAN_OR_EQUAL: "<=",
|
|
194
|
+
GREATER_THAN_OR_EQUAL: ">=",
|
|
195
|
+
// String operators
|
|
196
|
+
LIKE: "like",
|
|
197
|
+
NOT_LIKE: "nlike",
|
|
198
|
+
// Existence operators
|
|
199
|
+
EXISTS: "exists",
|
|
200
|
+
NOT_EXISTS: "nexists",
|
|
201
|
+
// Set operators
|
|
202
|
+
IN: "in",
|
|
203
|
+
NOT_IN: "nin",
|
|
204
|
+
// Logical operators
|
|
205
|
+
AND: "AND",
|
|
206
|
+
OR: "OR"
|
|
207
|
+
};
|
|
208
|
+
var QUERY_EXPRESSIONS = {
|
|
209
|
+
SPAN_NAMES: "spanNames",
|
|
210
|
+
AGENT_MODEL_CALLS: "agentModelCalls",
|
|
211
|
+
MODEL_CALLS: "modelCalls",
|
|
212
|
+
LAST_ACTIVITY: "lastActivity",
|
|
213
|
+
CONVERSATION_METADATA: "conversationMetadata",
|
|
214
|
+
FILTERED_CONVERSATIONS: "filteredConversations",
|
|
215
|
+
TOOLS: "tools",
|
|
216
|
+
TRANSFERS: "transfers",
|
|
217
|
+
DELEGATIONS: "delegations",
|
|
218
|
+
AI_CALLS: "aiCalls",
|
|
219
|
+
CONTEXT_ERRORS: "contextErrors",
|
|
220
|
+
AGENT_GENERATION_ERRORS: "agentGenerationErrors",
|
|
221
|
+
USER_MESSAGES: "userMessages",
|
|
222
|
+
UNIQUE_AGENTS: "uniqueAgents",
|
|
223
|
+
UNIQUE_MODELS: "uniqueModels",
|
|
224
|
+
// Route-specific query names
|
|
225
|
+
TOOL_CALLS: "toolCalls",
|
|
226
|
+
CONTEXT_RESOLUTION: "contextResolution",
|
|
227
|
+
CONTEXT_HANDLE: "contextHandle",
|
|
228
|
+
AI_ASSISTANT_MESSAGES: "aiAssistantMessages",
|
|
229
|
+
AI_GENERATIONS: "aiGenerations",
|
|
230
|
+
AI_STREAMING_TEXT: "aiStreamingText",
|
|
231
|
+
AI_STREAMING_OBJECT: "aiStreamingObject",
|
|
232
|
+
CONTEXT_FETCHERS: "contextFetchers",
|
|
233
|
+
DURATION_SPANS: "durationSpans",
|
|
234
|
+
AGENT_GENERATIONS: "agentGenerations",
|
|
235
|
+
SPANS_WITH_ERRORS: "spansWithErrors",
|
|
236
|
+
ARTIFACT_PROCESSING: "artifactProcessing"
|
|
237
|
+
};
|
|
238
|
+
var REDUCE_OPERATIONS = {
|
|
239
|
+
SUM: "sum",
|
|
240
|
+
MAX: "max",
|
|
241
|
+
MIN: "min",
|
|
242
|
+
AVG: "avg",
|
|
243
|
+
COUNT: "count"
|
|
244
|
+
};
|
|
245
|
+
var ORDER_DIRECTIONS = {
|
|
246
|
+
ASC: "asc",
|
|
247
|
+
DESC: "desc"
|
|
248
|
+
};
|
|
249
|
+
var QUERY_TYPES = {
|
|
250
|
+
BUILDER: "builder",
|
|
251
|
+
CLICKHOUSE: "clickhouse",
|
|
252
|
+
PROMQL: "promql"
|
|
253
|
+
};
|
|
254
|
+
var PANEL_TYPES = {
|
|
255
|
+
LIST: "list",
|
|
256
|
+
TABLE: "table",
|
|
257
|
+
AGENT: "agent",
|
|
258
|
+
VALUE: "value"
|
|
259
|
+
};
|
|
260
|
+
var DATA_SOURCES = {
|
|
261
|
+
TRACES: "traces",
|
|
262
|
+
METRICS: "metrics",
|
|
263
|
+
LOGS: "logs"
|
|
264
|
+
};
|
|
265
|
+
var AGGREGATE_OPERATORS = {
|
|
266
|
+
COUNT: "count",
|
|
267
|
+
COUNT_DISTINCT: "count_distinct",
|
|
268
|
+
SUM: "sum",
|
|
269
|
+
AVG: "avg",
|
|
270
|
+
MIN: "min",
|
|
271
|
+
MAX: "max",
|
|
272
|
+
NOOP: "noop"
|
|
273
|
+
};
|
|
274
|
+
var QUERY_DEFAULTS = {
|
|
275
|
+
STEP: 60,
|
|
276
|
+
STEP_INTERVAL: 60,
|
|
277
|
+
OFFSET: 0,
|
|
278
|
+
DISABLED: false,
|
|
279
|
+
HAVING: [],
|
|
280
|
+
LEGEND: "",
|
|
281
|
+
LIMIT_UNLIMITED: 1e4,
|
|
282
|
+
EMPTY_GROUP_BY: []
|
|
283
|
+
};
|
|
284
|
+
function discoverScopes(resourceMetadata, metadata) {
|
|
285
|
+
const resourceScopes = resourceMetadata?.scopes_supported;
|
|
286
|
+
const oauthScopes = metadata?.scopes_supported;
|
|
287
|
+
const scopes = (resourceScopes?.length ? resourceScopes : oauthScopes) || [];
|
|
288
|
+
return scopes.length > 0 ? scopes.join(" ") : void 0;
|
|
289
|
+
}
|
|
290
|
+
async function discoverMcpMetadata(mcpServerUrl, logger) {
|
|
291
|
+
try {
|
|
292
|
+
let resourceMetadata = null;
|
|
293
|
+
let authServerUrl = new URL(mcpServerUrl);
|
|
294
|
+
try {
|
|
295
|
+
resourceMetadata = await discoverOAuthProtectedResourceMetadata(mcpServerUrl);
|
|
296
|
+
if (resourceMetadata?.authorization_servers?.length && resourceMetadata.authorization_servers[0]) {
|
|
297
|
+
authServerUrl = new URL(resourceMetadata.authorization_servers[0]);
|
|
298
|
+
}
|
|
299
|
+
} catch {
|
|
300
|
+
}
|
|
301
|
+
const metadata = await discoverAuthorizationServerMetadata(authServerUrl.href);
|
|
302
|
+
if (!metadata) {
|
|
303
|
+
throw new Error("Failed to discover OAuth authorization server metadata");
|
|
304
|
+
}
|
|
305
|
+
logger?.debug(
|
|
306
|
+
{
|
|
307
|
+
tokenEndpoint: metadata.token_endpoint,
|
|
308
|
+
authEndpoint: metadata.authorization_endpoint
|
|
309
|
+
},
|
|
310
|
+
"MCP metadata discovery successful"
|
|
311
|
+
);
|
|
312
|
+
const discoveredScopes = discoverScopes(resourceMetadata ?? void 0, metadata);
|
|
313
|
+
return {
|
|
314
|
+
success: true,
|
|
315
|
+
metadata,
|
|
316
|
+
...resourceMetadata && { resourceMetadata },
|
|
317
|
+
...discoveredScopes && { scopes: discoveredScopes }
|
|
318
|
+
};
|
|
319
|
+
} catch (err) {
|
|
320
|
+
const errorMessage = err instanceof Error ? err.message : String(err);
|
|
321
|
+
logger?.debug({ error: errorMessage }, "MCP metadata discovery failed");
|
|
322
|
+
return { success: false, error: errorMessage };
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
async function initiateMcpOAuthFlow({
|
|
326
|
+
mcpServerUrl,
|
|
327
|
+
redirectUri,
|
|
328
|
+
state,
|
|
329
|
+
clientName = "Inkeep Agent Framework",
|
|
330
|
+
clientUri = "https://inkeep.com",
|
|
331
|
+
logoUri,
|
|
332
|
+
defaultClientId = "mcp-client",
|
|
333
|
+
logger
|
|
334
|
+
}) {
|
|
335
|
+
const discoveryResult = await discoverMcpMetadata(mcpServerUrl, logger);
|
|
336
|
+
if (!discoveryResult.success || !discoveryResult.metadata) {
|
|
337
|
+
throw new Error(`OAuth not supported by this server: ${discoveryResult.error}`);
|
|
338
|
+
}
|
|
339
|
+
const { metadata, resourceMetadata, scopes: discoveredScopes } = discoveryResult;
|
|
340
|
+
const clientMetadata = {
|
|
341
|
+
redirect_uris: [redirectUri],
|
|
342
|
+
token_endpoint_auth_method: "none",
|
|
343
|
+
// PKCE - no client secret
|
|
344
|
+
grant_types: ["authorization_code", "refresh_token"],
|
|
345
|
+
response_types: ["code"],
|
|
346
|
+
client_name: clientName,
|
|
347
|
+
client_uri: clientUri,
|
|
348
|
+
...logoUri && { logo_uri: logoUri }
|
|
349
|
+
};
|
|
350
|
+
let clientInformation;
|
|
351
|
+
if (metadata.registration_endpoint) {
|
|
352
|
+
clientInformation = await registerClient(mcpServerUrl, {
|
|
353
|
+
metadata,
|
|
354
|
+
clientMetadata
|
|
355
|
+
});
|
|
356
|
+
} else {
|
|
357
|
+
clientInformation = {
|
|
358
|
+
client_id: defaultClientId,
|
|
359
|
+
...clientMetadata
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
const resource = resourceMetadata?.resource ? new globalThis.URL(resourceMetadata.resource) : void 0;
|
|
363
|
+
const authResult = await startAuthorization(mcpServerUrl, {
|
|
364
|
+
metadata,
|
|
365
|
+
clientInformation,
|
|
366
|
+
redirectUrl: redirectUri,
|
|
367
|
+
state,
|
|
368
|
+
scope: discoveredScopes || "",
|
|
369
|
+
...resource && { resource }
|
|
370
|
+
});
|
|
371
|
+
logger?.debug(
|
|
372
|
+
{
|
|
373
|
+
authorizationUrl: authResult.authorizationUrl.href,
|
|
374
|
+
scopes: discoveredScopes,
|
|
375
|
+
clientId: clientInformation.client_id
|
|
376
|
+
},
|
|
377
|
+
"MCP OAuth flow initiated successfully"
|
|
378
|
+
);
|
|
379
|
+
return {
|
|
380
|
+
authorizationUrl: authResult.authorizationUrl.href,
|
|
381
|
+
codeVerifier: authResult.codeVerifier,
|
|
382
|
+
state,
|
|
383
|
+
clientInformation,
|
|
384
|
+
metadata,
|
|
385
|
+
resourceUrl: resource?.href || void 0,
|
|
386
|
+
...discoveredScopes && { scopes: discoveredScopes }
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
async function exchangeMcpAuthorizationCode({
|
|
390
|
+
mcpServerUrl,
|
|
391
|
+
metadata,
|
|
392
|
+
clientInformation,
|
|
393
|
+
authorizationCode,
|
|
394
|
+
codeVerifier,
|
|
395
|
+
redirectUri,
|
|
396
|
+
resourceUrl,
|
|
397
|
+
logger
|
|
398
|
+
}) {
|
|
399
|
+
const resource = resourceUrl ? new globalThis.URL(resourceUrl) : void 0;
|
|
400
|
+
const tokens = await exchangeAuthorization(mcpServerUrl, {
|
|
401
|
+
metadata,
|
|
402
|
+
clientInformation,
|
|
403
|
+
authorizationCode,
|
|
404
|
+
codeVerifier,
|
|
405
|
+
redirectUri,
|
|
406
|
+
...resource && { resource }
|
|
407
|
+
});
|
|
408
|
+
logger?.debug(
|
|
409
|
+
{
|
|
410
|
+
tokenType: tokens.token_type,
|
|
411
|
+
hasRefreshToken: !!tokens.refresh_token,
|
|
412
|
+
expiresIn: tokens.expires_in
|
|
413
|
+
},
|
|
414
|
+
"MCP token exchange successful"
|
|
415
|
+
);
|
|
416
|
+
return {
|
|
417
|
+
access_token: tokens.access_token,
|
|
418
|
+
refresh_token: tokens.refresh_token,
|
|
419
|
+
expires_at: tokens.expires_in ? new Date(Date.now() + tokens.expires_in * 1e3) : void 0,
|
|
420
|
+
token_type: tokens.token_type || "Bearer",
|
|
421
|
+
scope: tokens.scope
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
var detectAuthenticationRequired = async ({
|
|
425
|
+
serverUrl,
|
|
426
|
+
error,
|
|
427
|
+
logger
|
|
428
|
+
}) => {
|
|
429
|
+
try {
|
|
430
|
+
const discoveryResult = await discoverMcpMetadata(serverUrl, logger);
|
|
431
|
+
if (discoveryResult.success && discoveryResult.metadata) {
|
|
432
|
+
logger?.info({ serverUrl }, "MCP OAuth support confirmed via metadata discovery");
|
|
433
|
+
return true;
|
|
434
|
+
}
|
|
435
|
+
} catch (discoveryError) {
|
|
436
|
+
logger?.debug({ discoveryError }, "MCP OAuth metadata discovery failed");
|
|
437
|
+
}
|
|
438
|
+
logger?.debug({ error: error?.message }, "No MCP OAuth authentication requirement detected");
|
|
439
|
+
return false;
|
|
440
|
+
};
|
|
441
|
+
|
|
442
|
+
export { ACTIVITY_NAMES, ACTIVITY_STATUS, ACTIVITY_TYPES, AGENT_IDS, AGGREGATE_OPERATORS, AI_OPERATIONS, AI_TOOL_TYPES, DATA_SOURCES, DATA_TYPES, DELEGATION_FROM_SUB_AGENT_ID, DELEGATION_ID, DELEGATION_TO_SUB_AGENT_ID, FIELD_TYPES, OPERATORS, ORDER_DIRECTIONS, PANEL_TYPES, QUERY_DEFAULTS, QUERY_EXPRESSIONS, QUERY_FIELD_CONFIGS, QUERY_TYPES, REDUCE_OPERATIONS, SPAN_KEYS, SPAN_NAMES, TRANSFER_FROM_SUB_AGENT_ID, TRANSFER_TO_SUB_AGENT_ID, UNKNOWN_VALUE, detectAuthenticationRequired, exchangeMcpAuthorizationCode, initiateMcpOAuthFlow };
|