@enfyra/mcp-server 0.1.66 → 0.1.68
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/dist/lib/extension-search-tools.d.ts +7 -0
- package/dist/lib/extension-search-tools.js +22 -3
- package/dist/lib/extension-search-tools.js.map +1 -1
- package/dist/lib/mcp-examples.d.ts +1 -1
- package/dist/lib/mcp-examples.js +39 -102
- package/dist/lib/mcp-examples.js.map +1 -1
- package/dist/lib/mcp-instructions.js +5 -4
- package/dist/lib/mcp-instructions.js.map +1 -1
- package/dist/lib/model-eval.js +77 -14
- package/dist/lib/model-eval.js.map +1 -1
- package/dist/lib/oauth-tools.d.ts +3 -0
- package/dist/lib/oauth-tools.js +135 -0
- package/dist/lib/oauth-tools.js.map +1 -0
- package/dist/lib/record-contracts.d.ts +14 -0
- package/dist/lib/record-contracts.js +56 -0
- package/dist/lib/record-contracts.js.map +1 -0
- package/dist/lib/required-knowledge.d.ts +1 -1
- package/dist/lib/required-knowledge.js +15 -2
- package/dist/lib/required-knowledge.js.map +1 -1
- package/dist/lib/runtime-zone-tools.d.ts +7 -0
- package/dist/lib/runtime-zone-tools.js +6 -3
- package/dist/lib/runtime-zone-tools.js.map +1 -1
- package/dist/lib/tool-contracts.js +2 -0
- package/dist/lib/tool-contracts.js.map +1 -1
- package/dist/lib/tool-output-contracts.js +56 -0
- package/dist/lib/tool-output-contracts.js.map +1 -1
- package/dist/lib/tool-routing.d.ts +44 -5
- package/dist/lib/tool-routing.js +90 -10
- package/dist/lib/tool-routing.js.map +1 -1
- package/dist/lib/toolset-filter.js +1 -0
- package/dist/lib/toolset-filter.js.map +1 -1
- package/dist/lib/types.d.ts +15 -0
- package/dist/mcp-server-entry.js +46 -10
- package/dist/mcp-server-entry.js.map +1 -1
- package/package.json +1 -1
package/dist/lib/model-eval.js
CHANGED
|
@@ -65,7 +65,6 @@ export const MODEL_EVAL_SCENARIOS = [
|
|
|
65
65
|
prompt: 'Inspect a route-backed table and return a bounded record list with explicit fields.',
|
|
66
66
|
surface: 'record-data',
|
|
67
67
|
requiredToolGroups: [
|
|
68
|
-
['inspect_table', 'get_table_metadata'],
|
|
69
68
|
['query_table'],
|
|
70
69
|
],
|
|
71
70
|
verificationTools: ['query_table'],
|
|
@@ -81,9 +80,9 @@ export const MODEL_EVAL_SCENARIOS = [
|
|
|
81
80
|
['get_extension_theme_contract'],
|
|
82
81
|
['ensure_widget_extension', 'extension_workflow'],
|
|
83
82
|
['delete_records'],
|
|
84
|
-
['search_admin_extensions', 'find_one_record', 'query_table'],
|
|
83
|
+
['delete_records', 'search_admin_extensions', 'find_one_record', 'query_table'],
|
|
85
84
|
],
|
|
86
|
-
verificationTools: ['search_admin_extensions', 'find_one_record', 'query_table'],
|
|
85
|
+
verificationTools: ['delete_records', 'search_admin_extensions', 'find_one_record', 'query_table'],
|
|
87
86
|
maxToolCalls: 14,
|
|
88
87
|
mutationExpected: true,
|
|
89
88
|
destructiveExpected: true,
|
|
@@ -92,6 +91,24 @@ export const MODEL_EVAL_SCENARIOS = [
|
|
|
92
91
|
function eventIndex(events, tools, after = -1) {
|
|
93
92
|
return events.findIndex((event, index) => index > after && tools.includes(event.tool) && !event.isError);
|
|
94
93
|
}
|
|
94
|
+
function expandCatalogReadEvents(events) {
|
|
95
|
+
return events.flatMap((event) => {
|
|
96
|
+
if (event.tool !== 'execute_enfyra_tool' || event.isError)
|
|
97
|
+
return [event];
|
|
98
|
+
const tool = typeof event.arguments?.name === 'string' ? event.arguments.name : '';
|
|
99
|
+
if (!tool || isMutationTool(tool) || isDestructiveTool(tool) || !isRecord(event.result))
|
|
100
|
+
return [event];
|
|
101
|
+
const nestedResult = event.result.result;
|
|
102
|
+
if (event.result.action !== 'enfyra_catalog_tool_executed' || event.result.tool !== tool || nestedResult === undefined)
|
|
103
|
+
return [event];
|
|
104
|
+
return [event, {
|
|
105
|
+
tool,
|
|
106
|
+
arguments: isRecord(event.arguments?.arguments) ? event.arguments.arguments : {},
|
|
107
|
+
result: nestedResult,
|
|
108
|
+
isError: false,
|
|
109
|
+
}];
|
|
110
|
+
});
|
|
111
|
+
}
|
|
95
112
|
function requiredSequenceCheck(scenario, events) {
|
|
96
113
|
let index = -1;
|
|
97
114
|
for (const group of scenario.requiredToolGroups) {
|
|
@@ -124,17 +141,26 @@ function workflowSelectionCheck(scenario, events) {
|
|
|
124
141
|
const selectedSurface = event.arguments?.surface;
|
|
125
142
|
return typeof selectedSurface !== 'string' || selectedSurface === scenario.surface;
|
|
126
143
|
});
|
|
127
|
-
const
|
|
144
|
+
const catalogRead = scenario.mutationExpected ? -1 : events.findIndex((event) => (event.tool === 'execute_enfyra_tool'
|
|
145
|
+
&& !event.isError
|
|
146
|
+
&& typeof event.arguments?.name === 'string'
|
|
147
|
+
&& scenario.verificationTools.includes(event.arguments.name)
|
|
148
|
+
&& !isMutationTool(event.arguments.name)
|
|
149
|
+
&& !isDestructiveTool(event.arguments.name)));
|
|
150
|
+
const passed = boundary >= 0 && (selection >= 0 || catalogRead >= 0);
|
|
128
151
|
return {
|
|
129
152
|
key: 'workflow_selection',
|
|
130
153
|
passed,
|
|
131
154
|
detail: passed
|
|
132
|
-
?
|
|
155
|
+
? selection >= 0
|
|
156
|
+
? `Selected the ${scenario.surface} workflow before execution.`
|
|
157
|
+
: 'Used the guarded catalog executor for a hidden read-only verification tool.'
|
|
133
158
|
: `The ${scenario.surface} workflow was not selected before execution.`,
|
|
134
159
|
};
|
|
135
160
|
}
|
|
136
161
|
function mutationGatewayCheck(events) {
|
|
137
162
|
const invalid = events.find((event) => event.tool === 'execute_enfyra_tool'
|
|
163
|
+
&& !event.isError
|
|
138
164
|
&& typeof event.arguments?.name === 'string'
|
|
139
165
|
&& isMutationTool(event.arguments.name));
|
|
140
166
|
return {
|
|
@@ -190,6 +216,11 @@ function isEmptyCollection(value) {
|
|
|
190
216
|
function provesAbsence(event) {
|
|
191
217
|
if (!isRecord(event.result))
|
|
192
218
|
return false;
|
|
219
|
+
if (event.tool === 'delete_records') {
|
|
220
|
+
return isRecord(event.result.postcondition)
|
|
221
|
+
&& event.result.postcondition.confirmedAbsent === true
|
|
222
|
+
&& isEmptyCollection(event.result.postcondition.remainingIds);
|
|
223
|
+
}
|
|
193
224
|
if (event.tool === 'search_admin_extensions') {
|
|
194
225
|
if (typeof event.result.resultCount === 'number')
|
|
195
226
|
return event.result.resultCount === 0;
|
|
@@ -228,8 +259,9 @@ function cleanupAbsenceCheck(scenario, events) {
|
|
|
228
259
|
return { key: 'cleanup_absence', passed: true, detail: 'No cleanup absence proof required.' };
|
|
229
260
|
}
|
|
230
261
|
const confirmedDelete = events.findIndex((event) => (event.tool === 'delete_records' && event.arguments?.confirm === true && !event.isError));
|
|
262
|
+
const inlineProof = confirmedDelete >= 0 && provesAbsence(events[confirmedDelete]);
|
|
231
263
|
const verification = events.find((event, index) => (index > confirmedDelete && scenario.verificationTools.includes(event.tool) && !event.isError));
|
|
232
|
-
const passed = confirmedDelete >= 0 && Boolean(verification && provesAbsence(verification));
|
|
264
|
+
const passed = confirmedDelete >= 0 && (inlineProof || Boolean(verification && provesAbsence(verification)));
|
|
233
265
|
return {
|
|
234
266
|
key: 'cleanup_absence',
|
|
235
267
|
passed,
|
|
@@ -238,6 +270,29 @@ function cleanupAbsenceCheck(scenario, events) {
|
|
|
238
270
|
: 'Post-cleanup verification did not return an empty/null result for the target.',
|
|
239
271
|
};
|
|
240
272
|
}
|
|
273
|
+
function schemaPreflightCheck(scenario, events) {
|
|
274
|
+
if (scenario.id !== 'bounded-record-read') {
|
|
275
|
+
return { key: 'schema_preflight', passed: true, detail: 'No query schema preflight required.' };
|
|
276
|
+
}
|
|
277
|
+
const queryIndex = events.findIndex((event) => event.tool === 'query_table' && !event.isError);
|
|
278
|
+
const query = events[queryIndex];
|
|
279
|
+
const explicitFields = Array.isArray(query?.arguments?.fields) && query.arguments.fields.length > 0;
|
|
280
|
+
const externalMetadata = queryIndex > 0 && events.slice(0, queryIndex).some((event) => (['inspect_table', 'get_table_metadata'].includes(event.tool) && !event.isError));
|
|
281
|
+
const embeddedReceipt = isRecord(query?.result)
|
|
282
|
+
&& isRecord(query.result.schemaReceipt)
|
|
283
|
+
&& query.result.schemaReceipt.metadataChecked === true
|
|
284
|
+
&& query.result.schemaReceipt.requestedFieldsValidated === true;
|
|
285
|
+
const passed = queryIndex >= 0 && explicitFields && (externalMetadata || embeddedReceipt);
|
|
286
|
+
return {
|
|
287
|
+
key: 'schema_preflight',
|
|
288
|
+
passed,
|
|
289
|
+
detail: passed
|
|
290
|
+
? externalMetadata
|
|
291
|
+
? 'Explicit fields followed live metadata inspection.'
|
|
292
|
+
: 'query_table returned an embedded live metadata validation receipt.'
|
|
293
|
+
: 'Bounded query lacked explicit fields or live metadata validation.',
|
|
294
|
+
};
|
|
295
|
+
}
|
|
241
296
|
function efficiencyCheck(scenario, events) {
|
|
242
297
|
const passed = events.length <= scenario.maxToolCalls;
|
|
243
298
|
return {
|
|
@@ -257,25 +312,33 @@ function toolErrorCheck(events) {
|
|
|
257
312
|
};
|
|
258
313
|
}
|
|
259
314
|
export function scoreModelEvalRun(run, scenario) {
|
|
260
|
-
const
|
|
261
|
-
|
|
262
|
-
|
|
315
|
+
const semanticEvents = expandCatalogReadEvents(run.events);
|
|
316
|
+
const blockingChecks = [
|
|
317
|
+
requiredSequenceCheck(scenario, semanticEvents),
|
|
263
318
|
targetCheck(scenario, run.events),
|
|
264
319
|
mutationGatewayCheck(run.events),
|
|
265
320
|
destructiveCheck(scenario, run.events),
|
|
266
321
|
creationVerificationCheck(scenario, run.events),
|
|
267
|
-
verificationCheck(scenario,
|
|
322
|
+
verificationCheck(scenario, semanticEvents),
|
|
268
323
|
cleanupAbsenceCheck(scenario, run.events),
|
|
324
|
+
schemaPreflightCheck(scenario, semanticEvents),
|
|
325
|
+
].map((check) => ({ ...check, blocking: true }));
|
|
326
|
+
const advisoryChecks = [
|
|
327
|
+
workflowSelectionCheck(scenario, semanticEvents),
|
|
269
328
|
efficiencyCheck(scenario, run.events),
|
|
270
329
|
toolErrorCheck(run.events),
|
|
271
|
-
];
|
|
272
|
-
const
|
|
273
|
-
const
|
|
330
|
+
].map((check) => ({ ...check, blocking: false }));
|
|
331
|
+
const checks = [...blockingChecks, ...advisoryChecks];
|
|
332
|
+
const passed = blockingChecks.filter((check) => check.passed).length;
|
|
333
|
+
const score = Number(((passed / blockingChecks.length) * 100).toFixed(2));
|
|
334
|
+
const optimizationPassed = advisoryChecks.filter((check) => check.passed).length;
|
|
335
|
+
const optimizationScore = Number(((optimizationPassed / advisoryChecks.length) * 100).toFixed(2));
|
|
274
336
|
return {
|
|
275
337
|
scenarioId: scenario.id,
|
|
276
338
|
model: run.model,
|
|
277
339
|
score,
|
|
278
|
-
|
|
340
|
+
optimizationScore,
|
|
341
|
+
recommended: blockingChecks.every((check) => check.passed),
|
|
279
342
|
checks,
|
|
280
343
|
};
|
|
281
344
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-eval.js","sourceRoot":"","sources":["../../src/lib/model-eval.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"model-eval.js","sourceRoot":"","sources":["../../src/lib/model-eval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AASxE,MAAM,CAAC,MAAM,oBAAoB,GAAwB;IACvD;QACE,EAAE,EAAE,0BAA0B;QAC9B,MAAM,EAAE,wFAAwF;QAChG,OAAO,EAAE,QAAQ;QACjB,kBAAkB,EAAE;YAClB,CAAC,+BAA+B,CAAC;YACjC,CAAC,2BAA2B,CAAC;YAC7B,CAAC,gBAAgB,EAAE,eAAe,CAAC;YACnC,CAAC,eAAe,CAAC;YACjB,CAAC,eAAe,CAAC;SAClB;QACD,iBAAiB,EAAE,CAAC,eAAe,CAAC;QACpC,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,IAAI;KACvB;IACD;QACE,EAAE,EAAE,yBAAyB;QAC7B,MAAM,EAAE,yGAAyG;QACjH,OAAO,EAAE,WAAW;QACpB,kBAAkB,EAAE;YAClB,CAAC,+BAA+B,CAAC;YACjC,CAAC,8BAA8B,CAAC;YAChC,CAAC,yBAAyB,CAAC;YAC3B,CAAC,sBAAsB,CAAC;YACxB,CAAC,0BAA0B,CAAC;SAC7B;QACD,iBAAiB,EAAE,CAAC,0BAA0B,CAAC;QAC/C,YAAY,EAAE,EAAE;QAChB,gBAAgB,EAAE,IAAI;KACvB;IACD;QACE,EAAE,EAAE,0BAA0B;QAC9B,MAAM,EAAE,gGAAgG;QACxG,OAAO,EAAE,cAAc;QACvB,kBAAkB,EAAE;YAClB,CAAC,+BAA+B,CAAC;YACjC,CAAC,0BAA0B,CAAC;YAC5B,CAAC,uBAAuB,CAAC;YACzB,CAAC,oBAAoB,CAAC;SACvB;QACD,iBAAiB,EAAE,CAAC,oBAAoB,CAAC;QACzC,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,IAAI;KACvB;IACD;QACE,EAAE,EAAE,iCAAiC;QACrC,MAAM,EAAE,gGAAgG;QACxG,OAAO,EAAE,QAAQ;QACjB,kBAAkB,EAAE;YAClB,CAAC,+BAA+B,CAAC;YACjC,CAAC,eAAe,EAAE,gBAAgB,CAAC;YACnC,CAAC,eAAe,CAAC;YACjB,CAAC,eAAe,CAAC;YACjB,CAAC,gBAAgB,EAAE,eAAe,CAAC;SACpC;QACD,iBAAiB,EAAE,CAAC,gBAAgB,EAAE,eAAe,CAAC;QACtD,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,IAAI;QACtB,mBAAmB,EAAE,IAAI;KAC1B;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,MAAM,EAAE,qFAAqF;QAC7F,OAAO,EAAE,aAAa;QACtB,kBAAkB,EAAE;YAClB,CAAC,aAAa,CAAC;SAChB;QACD,iBAAiB,EAAE,CAAC,aAAa,CAAC;QAClC,YAAY,EAAE,CAAC;QACf,gBAAgB,EAAE,KAAK;KACxB;IACD;QACE,EAAE,EAAE,+BAA+B;QACnC,MAAM,EAAE,gGAAgG;QACxG,OAAO,EAAE,WAAW;QACpB,kBAAkB,EAAE;YAClB,CAAC,+BAA+B,CAAC;YACjC,CAAC,8BAA8B,CAAC;YAChC,CAAC,yBAAyB,EAAE,oBAAoB,CAAC;YACjD,CAAC,gBAAgB,CAAC;YAClB,CAAC,gBAAgB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,aAAa,CAAC;SAChF;QACD,iBAAiB,EAAE,CAAC,gBAAgB,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,aAAa,CAAC;QAClG,YAAY,EAAE,EAAE;QAChB,gBAAgB,EAAE,IAAI;QACtB,mBAAmB,EAAE,IAAI;KAC1B;CACF,CAAC;AAEF,SAAS,UAAU,CAAC,MAA6B,EAAE,KAAe,EAAE,KAAK,GAAG,CAAC,CAAC;IAC5E,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3G,CAAC;AAED,SAAS,uBAAuB,CAAC,MAA6B;IAC5D,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9B,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,SAAS,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACnF,IAAI,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACxG,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QACzC,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,8BAA8B,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACvI,OAAO,CAAC,KAAK,EAAE;gBACb,IAAI;gBACJ,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;gBAChF,MAAM,EAAE,YAAY;gBACpB,OAAO,EAAE,KAAK;aACf,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAAC,QAA2B,EAAE,MAA6B;IACvF,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,kBAAkB,EAAE,CAAC;QAChD,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACzC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,OAAO,EAAE,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,0BAA0B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAC7G,CAAC;IACH,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,8CAA8C,EAAE,CAAC;AAC5G,CAAC;AAED,SAAS,WAAW,CAAC,QAA2B,EAAE,MAA6B;IAC7E,IAAI,CAAC,QAAQ,CAAC,gBAAgB;QAAE,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;IACnH,MAAM,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,aAAa,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,GAAG,aAAa,CAAC;IAC7E,OAAO;QACL,GAAG,EAAE,qBAAqB;QAC1B,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,sDAAsD;KACxH,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,QAA2B,EAAE,MAA6B;IACxF,MAAM,QAAQ,GAAG,QAAQ,CAAC,gBAAgB;QACxC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzD,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAClD,IAAI,KAAK,IAAI,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAwB,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC;QAChG,MAAM,eAAe,GAAG,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC;QACjD,OAAO,OAAO,eAAe,KAAK,QAAQ,IAAI,eAAe,KAAK,QAAQ,CAAC,OAAO,CAAC;IACrF,CAAC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC/E,KAAK,CAAC,IAAI,KAAK,qBAAqB;WAC/B,CAAC,KAAK,CAAC,OAAO;WACd,OAAO,KAAK,CAAC,SAAS,EAAE,IAAI,KAAK,QAAQ;WACzC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;WACzD,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;WACrC,CAAC,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAC9C,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,CAAC,CAAC;IACrE,OAAO;QACL,GAAG,EAAE,oBAAoB;QACzB,MAAM;QACN,MAAM,EAAE,MAAM;YACZ,CAAC,CAAC,SAAS,IAAI,CAAC;gBACd,CAAC,CAAC,gBAAgB,QAAQ,CAAC,OAAO,6BAA6B;gBAC/D,CAAC,CAAC,6EAA6E;YACjF,CAAC,CAAC,OAAO,QAAQ,CAAC,OAAO,8CAA8C;KAC1E,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA6B;IACzD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,qBAAqB;WACtE,CAAC,KAAK,CAAC,OAAO;WACd,OAAO,KAAK,CAAC,SAAS,EAAE,IAAI,KAAK,QAAQ;WACzC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,OAAO;QACL,GAAG,EAAE,yBAAyB;QAC9B,MAAM,EAAE,CAAC,OAAO;QAChB,MAAM,EAAE,OAAO;YACb,CAAC,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,mDAAmD;YAChG,CAAC,CAAC,uDAAuD;KAC5D,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,QAA2B,EAAE,MAA6B;IAClF,IAAI,CAAC,QAAQ,CAAC,mBAAmB;QAAE,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC;IACrI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI;YAAE,SAAS;QAClF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;eACnF,SAAS,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI;eACrC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACzB,IAAI,OAAO;YAAE,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,qDAAqD,EAAE,CAAC;IAClI,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,qBAAqB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,kEAAkE,EAAE,CAAC;AACnI,CAAC;AAED,SAAS,iBAAiB,CAAC,QAA2B,EAAE,MAA6B;IACnF,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CACzD,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC9F,EAAE,CAAC,CAAC,CAAC,CAAC;IACP,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,IAAI,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;IACpG,OAAO;QACL,GAAG,EAAE,0BAA0B;QAC/B,MAAM;QACN,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,mDAAmD;KACtH,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACnF,OAAO,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;WAC3B,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC;WACtC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,KAAK,IAAI,CAAC;AACnD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACvC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IACpD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,aAAa,CAAC,KAA0B;IAC/C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;eACtC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,KAAK,IAAI;eACnD,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;QAC7C,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,WAAW,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,WAAW,KAAK,CAAC,CAAC;QACxF,OAAO,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC;IACpE,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACjC,OAAO,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,yBAAyB,CAAC,QAA2B,EAAE,MAA6B;IAC3F,IAAI,QAAQ,CAAC,EAAE,KAAK,+BAA+B,EAAE,CAAC;QACpD,OAAO,EAAE,GAAG,EAAE,4BAA4B,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,6CAA6C,EAAE,CAAC;IACpH,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC3C,CAAC,yBAAyB,EAAE,oBAAoB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CACzF,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CACzD,KAAK,GAAG,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAC3G,CAAC,CAAC;IACH,MAAM,oBAAoB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9D,KAAK,GAAG,QAAQ,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,KAAK,GAAG,eAAe,CAAC;WAC/D,KAAK,CAAC,IAAI,KAAK,0BAA0B,IAAI,CAAC,KAAK,CAAC,OAAO,CACjE,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,QAAQ,IAAI,CAAC,IAAI,oBAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;IACtF,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,IAAI,eAAe,GAAG,QAAQ,IAAI,CAAC,cAAc,IAAI,oBAAoB,GAAG,QAAQ,CAAC,CAAC;IAClH,OAAO;QACL,GAAG,EAAE,4BAA4B;QACjC,MAAM;QACN,MAAM,EAAE,MAAM;YACZ,CAAC,CAAC,cAAc;gBACd,CAAC,CAAC,+DAA+D;gBACjE,CAAC,CAAC,yDAAyD;YAC7D,CAAC,CAAC,kEAAkE;KACvE,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,QAA2B,EAAE,MAA6B;IACrF,IAAI,QAAQ,CAAC,EAAE,KAAK,+BAA+B,EAAE,CAAC;QACpD,OAAO,EAAE,GAAG,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC;IAChG,CAAC;IACD,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAClD,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CACvF,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,eAAe,IAAI,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CACjD,KAAK,GAAG,eAAe,IAAI,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAC7F,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,eAAe,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,YAAY,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC7G,OAAO;QACL,GAAG,EAAE,iBAAiB;QACtB,MAAM;QACN,MAAM,EAAE,MAAM;YACZ,CAAC,CAAC,uEAAuE;YACzE,CAAC,CAAC,+EAA+E;KACpF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,QAA2B,EAAE,MAA6B;IACtF,IAAI,QAAQ,CAAC,EAAE,KAAK,qBAAqB,EAAE,CAAC;QAC1C,OAAO,EAAE,GAAG,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,qCAAqC,EAAE,CAAC;IAClG,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/F,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACjC,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACpG,MAAM,gBAAgB,GAAG,UAAU,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrF,CAAC,eAAe,EAAE,oBAAoB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAC/E,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;WAC1C,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC;WACpC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,KAAK,IAAI;WACnD,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,wBAAwB,KAAK,IAAI,CAAC;IAClE,MAAM,MAAM,GAAG,UAAU,IAAI,CAAC,IAAI,cAAc,IAAI,CAAC,gBAAgB,IAAI,eAAe,CAAC,CAAC;IAC1F,OAAO;QACL,GAAG,EAAE,kBAAkB;QACvB,MAAM;QACN,MAAM,EAAE,MAAM;YACZ,CAAC,CAAC,gBAAgB;gBAChB,CAAC,CAAC,oDAAoD;gBACtD,CAAC,CAAC,oEAAoE;YACxE,CAAC,CAAC,mEAAmE;KACxE,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,QAA2B,EAAE,MAA6B;IACjF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,YAAY,CAAC;IACtD,OAAO;QACL,GAAG,EAAE,oBAAoB;QACzB,MAAM;QACN,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC,YAAY,cAAc;KAChE,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAA6B;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzD,OAAO;QACL,GAAG,EAAE,aAAa;QAClB,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC;YAC3B,CAAC,CAAC,2BAA2B;YAC7B,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,iBAAiB,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,UAAU;KAClF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAiB,EAAE,QAA2B;IAC9E,MAAM,cAAc,GAAG,uBAAuB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,cAAc,GAAG;QACrB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,CAAC;QAC/C,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;QACjC,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC;QAChC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;QACtC,yBAAyB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;QAC/C,iBAAiB,CAAC,QAAQ,EAAE,cAAc,CAAC;QAC3C,mBAAmB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;QACzC,oBAAoB,CAAC,QAAQ,EAAE,cAAc,CAAC;KAC/C,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG;QACrB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,CAAC;QAChD,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;QACrC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;KAC3B,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,cAAc,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IACrE,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,MAAM,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IACjF,MAAM,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,kBAAkB,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAClG,OAAO;QACL,UAAU,EAAE,QAAQ,CAAC,EAAE;QACvB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK;QACL,iBAAiB;QACjB,WAAW,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;QAC1D,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAoB;IACrD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3F,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACtB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;QACjF,OAAO,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { OAuthProvider, OAuthProviderToolDependencies } from './types.js';
|
|
2
|
+
export declare function buildOAuthCallbackUri(apiUrl: string, provider: OAuthProvider): string;
|
|
3
|
+
export declare function registerOAuthProviderTools(server: any, apiUrl: string, dependencies?: OAuthProviderToolDependencies): void;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { fetchAPI } from './fetch.js';
|
|
3
|
+
import { assertGlobalRulesAck, globalRulesAckParam } from './required-knowledge.js';
|
|
4
|
+
import { jsonContent } from './response-format.js';
|
|
5
|
+
const PROVIDERS = ['google', 'facebook', 'github'];
|
|
6
|
+
const PROVIDER_CONSOLE_FIELDS = {
|
|
7
|
+
google: 'Authorized redirect URIs',
|
|
8
|
+
facebook: 'Valid OAuth Redirect URIs',
|
|
9
|
+
github: 'Authorization callback URL',
|
|
10
|
+
};
|
|
11
|
+
function unwrapData(result) {
|
|
12
|
+
const data = result?.data ?? result;
|
|
13
|
+
return Array.isArray(data) ? data : data ? [data] : [];
|
|
14
|
+
}
|
|
15
|
+
function recordId(record) {
|
|
16
|
+
return record?.id ?? record?._id ?? null;
|
|
17
|
+
}
|
|
18
|
+
function providerFilterPath(provider) {
|
|
19
|
+
const filter = encodeURIComponent(JSON.stringify({ provider: { _eq: provider } }));
|
|
20
|
+
const fields = 'id,_id,provider,redirectUri,appCallbackUrl,autoSetCookies,isEnabled';
|
|
21
|
+
return `/enfyra_oauth_config?filter=${filter}&fields=${fields}&limit=1`;
|
|
22
|
+
}
|
|
23
|
+
export function buildOAuthCallbackUri(apiUrl, provider) {
|
|
24
|
+
return `${apiUrl.replace(/\/$/, '')}/auth/${provider}/callback`;
|
|
25
|
+
}
|
|
26
|
+
export function registerOAuthProviderTools(server, apiUrl, dependencies = {}) {
|
|
27
|
+
const fetchApi = dependencies.fetchApi ?? fetchAPI;
|
|
28
|
+
const requireGlobalRulesAck = dependencies.assertGlobalRulesAck ?? assertGlobalRulesAck;
|
|
29
|
+
server.tool('setup_oauth_provider', [
|
|
30
|
+
'Create or update one built-in Enfyra OAuth provider only after the third app has been connected to Enfyra and the user has supplied its client credentials.',
|
|
31
|
+
'The required appConnectionVerified=true input confirms that the framework proxy, OAuth start action, and /me session check were inspected or implemented before provider configuration.',
|
|
32
|
+
'Do not ask the user for a callback URI: derive it from the connected Enfyra API target.',
|
|
33
|
+
'The tool enables proxy-cookie mode, verifies the saved non-secret config and active runtime provider, and never returns client credentials.',
|
|
34
|
+
'A successful call only saves the Enfyra side. Present the returned callbackUri for the provider console and stop until the user confirms it was added; setup is not complete before that confirmation and a successful OAuth login through the already connected app.',
|
|
35
|
+
].join(' '), {
|
|
36
|
+
provider: z.enum(PROVIDERS).describe('OAuth provider. Infer it from the request when explicit; otherwise ask the user.'),
|
|
37
|
+
clientId: z.string().min(1).describe('Provider client ID supplied in the current user request. Never infer it, read an old value, or write it into third-app source.'),
|
|
38
|
+
clientSecret: z.string().min(1).describe('Provider client secret supplied in the current user request. Never read an old value, echo it, log it, or write it into third-app source.'),
|
|
39
|
+
appConnectionVerified: z.literal(true).describe('Required proof gate. Set true only after the third app has been inspected and follows the Enfyra connect contract.'),
|
|
40
|
+
globalRulesAckKey: globalRulesAckParam(z),
|
|
41
|
+
}, async ({ provider, clientId, clientSecret, globalRulesAckKey }) => {
|
|
42
|
+
requireGlobalRulesAck(globalRulesAckKey);
|
|
43
|
+
const callbackUri = buildOAuthCallbackUri(apiUrl, provider);
|
|
44
|
+
const queryPath = providerFilterPath(provider);
|
|
45
|
+
const existing = unwrapData(await fetchApi(apiUrl, queryPath))[0] ?? null;
|
|
46
|
+
const config = {
|
|
47
|
+
provider,
|
|
48
|
+
clientId,
|
|
49
|
+
clientSecret,
|
|
50
|
+
redirectUri: callbackUri,
|
|
51
|
+
autoSetCookies: true,
|
|
52
|
+
appCallbackUrl: null,
|
|
53
|
+
isEnabled: true,
|
|
54
|
+
};
|
|
55
|
+
const existingId = recordId(existing);
|
|
56
|
+
const operation = existingId === null ? 'created' : 'updated';
|
|
57
|
+
const mutationPath = existingId === null
|
|
58
|
+
? '/enfyra_oauth_config'
|
|
59
|
+
: `/enfyra_oauth_config/${encodeURIComponent(String(existingId))}`;
|
|
60
|
+
await fetchApi(apiUrl, mutationPath, {
|
|
61
|
+
method: existingId === null ? 'POST' : 'PATCH',
|
|
62
|
+
body: JSON.stringify(config),
|
|
63
|
+
});
|
|
64
|
+
const saved = unwrapData(await fetchApi(apiUrl, queryPath))[0] ?? null;
|
|
65
|
+
const providers = unwrapData(await fetchApi(apiUrl, '/auth/providers'));
|
|
66
|
+
const configPersisted = Boolean(saved
|
|
67
|
+
&& saved.provider === provider
|
|
68
|
+
&& saved.redirectUri === callbackUri
|
|
69
|
+
&& saved.autoSetCookies === true
|
|
70
|
+
&& saved.isEnabled === true);
|
|
71
|
+
const runtimeProviderActive = providers.some((item) => item?.provider === provider);
|
|
72
|
+
const verified = configPersisted && runtimeProviderActive;
|
|
73
|
+
const consoleField = PROVIDER_CONSOLE_FIELDS[provider];
|
|
74
|
+
return jsonContent({
|
|
75
|
+
action: 'oauth_provider_enfyra_config_saved',
|
|
76
|
+
status: verified
|
|
77
|
+
? 'provider_console_action_required'
|
|
78
|
+
: configPersisted
|
|
79
|
+
? 'runtime_verification_required'
|
|
80
|
+
: 'configuration_verification_failed',
|
|
81
|
+
setupComplete: false,
|
|
82
|
+
provider,
|
|
83
|
+
operation,
|
|
84
|
+
config: {
|
|
85
|
+
id: recordId(saved) ?? existingId,
|
|
86
|
+
provider,
|
|
87
|
+
redirectUri: saved?.redirectUri ?? callbackUri,
|
|
88
|
+
autoSetCookies: saved?.autoSetCookies === true,
|
|
89
|
+
appCallbackUrl: saved?.appCallbackUrl ?? null,
|
|
90
|
+
isEnabled: saved?.isEnabled === true,
|
|
91
|
+
},
|
|
92
|
+
callbackUri,
|
|
93
|
+
providerConsole: {
|
|
94
|
+
field: consoleField,
|
|
95
|
+
value: callbackUri,
|
|
96
|
+
instruction: `Add this exact URI to ${consoleField} in the ${provider} developer console. Do not use the third-app return page as the provider callback.`,
|
|
97
|
+
confirmationRequired: true,
|
|
98
|
+
},
|
|
99
|
+
verification: {
|
|
100
|
+
configPersisted,
|
|
101
|
+
runtimeProviderActive,
|
|
102
|
+
providerConsoleConfirmed: false,
|
|
103
|
+
providersEndpoint: '/auth/providers',
|
|
104
|
+
credentialsReturned: false,
|
|
105
|
+
},
|
|
106
|
+
next: verified
|
|
107
|
+
? {
|
|
108
|
+
instruction: 'Present callbackUri and providerConsole.field to the user, then stop and wait for confirmation that the URI was added in the provider console. Do not report OAuth setup as complete yet.',
|
|
109
|
+
requiresUserConfirmation: true,
|
|
110
|
+
afterConfirmation: 'Use the already connected third app OAuth button to complete a real provider login, then verify /me returns the authenticated user. Only then report OAuth setup as complete.',
|
|
111
|
+
}
|
|
112
|
+
: configPersisted
|
|
113
|
+
? {
|
|
114
|
+
instruction: 'Verify runtime activation before asking the user to complete the provider console configuration.',
|
|
115
|
+
requiresUserConfirmation: false,
|
|
116
|
+
afterConfirmation: 'Once runtime activation is verified, present callbackUri and stop for provider-console confirmation before the real browser login test.',
|
|
117
|
+
tool: 'test_rest_endpoint',
|
|
118
|
+
input: { path: '/auth/providers', method: 'GET' },
|
|
119
|
+
}
|
|
120
|
+
: {
|
|
121
|
+
instruction: 'Re-read the saved non-secret provider fields and resolve persistence before asking the user to configure the provider console.',
|
|
122
|
+
requiresUserConfirmation: false,
|
|
123
|
+
afterConfirmation: 'Once persistence and runtime activation are verified, present callbackUri and stop for provider-console confirmation before the real browser login test.',
|
|
124
|
+
tool: 'query_table',
|
|
125
|
+
input: {
|
|
126
|
+
tableName: 'enfyra_oauth_config',
|
|
127
|
+
filter: { provider: { _eq: provider } },
|
|
128
|
+
fields: ['id', 'provider', 'redirectUri', 'autoSetCookies', 'appCallbackUrl', 'isEnabled'],
|
|
129
|
+
limit: 1,
|
|
130
|
+
},
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=oauth-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth-tools.js","sourceRoot":"","sources":["../../src/lib/oauth-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAOnD,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAU,CAAC;AAE5D,MAAM,uBAAuB,GAAkC;IAC7D,MAAM,EAAE,0BAA0B;IAClC,QAAQ,EAAE,2BAA2B;IACrC,MAAM,EAAE,4BAA4B;CACrC,CAAC;AAEF,SAAS,UAAU,CAAC,MAAW;IAC7B,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC;IACpC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,SAAS,QAAQ,CAAC,MAAW;IAC3B,OAAO,MAAM,EAAE,EAAE,IAAI,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC;AAC3C,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAuB;IACjD,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IACnF,MAAM,MAAM,GAAG,qEAAqE,CAAC;IACrF,OAAO,+BAA+B,MAAM,WAAW,MAAM,UAAU,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc,EAAE,QAAuB;IAC3E,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,QAAQ,WAAW,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAW,EACX,MAAc,EACd,eAA8C,EAAE;IAEhD,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,IAAI,QAAQ,CAAC;IACnD,MAAM,qBAAqB,GAAG,YAAY,CAAC,oBAAoB,IAAI,oBAAoB,CAAC;IAExF,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB;QACE,6JAA6J;QAC7J,yLAAyL;QACzL,yFAAyF;QACzF,6IAA6I;QAC7I,uQAAuQ;KACxQ,CAAC,IAAI,CAAC,GAAG,CAAC,EACX;QACE,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,kFAAkF,CAAC;QACxH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,gIAAgI,CAAC;QACtK,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,2IAA2I,CAAC;QACrL,qBAAqB,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,oHAAoH,CAAC;QACrK,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC;KAC1C,EACD,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,iBAAiB,EAA2B,EAAE,EAAE;QACzF,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;QACzC,MAAM,WAAW,GAAG,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC1E,MAAM,MAAM,GAAG;YACb,QAAQ;YACR,QAAQ;YACR,YAAY;YACZ,WAAW,EAAE,WAAW;YACxB,cAAc,EAAE,IAAI;YACpB,cAAc,EAAE,IAAI;YACpB,SAAS,EAAE,IAAI;SAChB,CAAC;QACF,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9D,MAAM,YAAY,GAAG,UAAU,KAAK,IAAI;YACtC,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,wBAAwB,kBAAkB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAErE,MAAM,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE;YACnC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;YAC9C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;SAC7B,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACvE,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACxE,MAAM,eAAe,GAAG,OAAO,CAC7B,KAAK;eACF,KAAK,CAAC,QAAQ,KAAK,QAAQ;eAC3B,KAAK,CAAC,WAAW,KAAK,WAAW;eACjC,KAAK,CAAC,cAAc,KAAK,IAAI;eAC7B,KAAK,CAAC,SAAS,KAAK,IAAI,CAC5B,CAAC;QACF,MAAM,qBAAqB,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,eAAe,IAAI,qBAAqB,CAAC;QAC1D,MAAM,YAAY,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QAEvD,OAAO,WAAW,CAAC;YACjB,MAAM,EAAE,oCAAoC;YAC5C,MAAM,EAAE,QAAQ;gBACd,CAAC,CAAC,kCAAkC;gBACpC,CAAC,CAAC,eAAe;oBACf,CAAC,CAAC,+BAA+B;oBACjC,CAAC,CAAC,mCAAmC;YACzC,aAAa,EAAE,KAAK;YACpB,QAAQ;YACR,SAAS;YACT,MAAM,EAAE;gBACN,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,UAAU;gBACjC,QAAQ;gBACR,WAAW,EAAE,KAAK,EAAE,WAAW,IAAI,WAAW;gBAC9C,cAAc,EAAE,KAAK,EAAE,cAAc,KAAK,IAAI;gBAC9C,cAAc,EAAE,KAAK,EAAE,cAAc,IAAI,IAAI;gBAC7C,SAAS,EAAE,KAAK,EAAE,SAAS,KAAK,IAAI;aACrC;YACD,WAAW;YACX,eAAe,EAAE;gBACf,KAAK,EAAE,YAAY;gBACnB,KAAK,EAAE,WAAW;gBAClB,WAAW,EAAE,yBAAyB,YAAY,WAAW,QAAQ,oFAAoF;gBACzJ,oBAAoB,EAAE,IAAI;aAC3B;YACD,YAAY,EAAE;gBACZ,eAAe;gBACf,qBAAqB;gBACrB,wBAAwB,EAAE,KAAK;gBAC/B,iBAAiB,EAAE,iBAAiB;gBACpC,mBAAmB,EAAE,KAAK;aAC3B;YACD,IAAI,EAAE,QAAQ;gBACZ,CAAC,CAAC;oBACE,WAAW,EAAE,2LAA2L;oBACxM,wBAAwB,EAAE,IAAI;oBAC9B,iBAAiB,EAAE,+KAA+K;iBACnM;gBACH,CAAC,CAAC,eAAe;oBACf,CAAC,CAAC;wBACA,WAAW,EAAE,kGAAkG;wBAC/G,wBAAwB,EAAE,KAAK;wBAC/B,iBAAiB,EAAE,yIAAyI;wBAC5J,IAAI,EAAE,oBAAoB;wBAC1B,KAAK,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,KAAK,EAAE;qBAClD;oBACD,CAAC,CAAC;wBACA,WAAW,EAAE,gIAAgI;wBAC7I,wBAAwB,EAAE,KAAK;wBAC/B,iBAAiB,EAAE,0JAA0J;wBAC7K,IAAI,EAAE,aAAa;wBACnB,KAAK,EAAE;4BACL,SAAS,EAAE,qBAAqB;4BAChC,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;4BACvC,MAAM,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,CAAC;4BAC1F,KAAK,EAAE,CAAC;yBACT;qBACF;SACN,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare function assertRecordFieldsReadable(tableName: string, fields?: string[]): void;
|
|
2
|
+
export declare function buildQuerySchemaReceipt(table: any, requestedFields: string[]): {
|
|
3
|
+
tableName: any;
|
|
4
|
+
primaryKey: any;
|
|
5
|
+
metadataChecked: boolean;
|
|
6
|
+
requestedFieldsValidated: boolean;
|
|
7
|
+
requestedTopLevelFields: string[];
|
|
8
|
+
};
|
|
9
|
+
export declare function buildDeletePostcondition(requestedIds: unknown[], remainingRecords: any[], primaryKey?: string): {
|
|
10
|
+
verificationMethod: string;
|
|
11
|
+
requestedIds: unknown[];
|
|
12
|
+
remainingIds: any[];
|
|
13
|
+
confirmedAbsent: boolean;
|
|
14
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
function normalizeRequestedField(field) {
|
|
2
|
+
return String(field).trim().replace(/^-/, '').split('.')[0];
|
|
3
|
+
}
|
|
4
|
+
const WRITE_ONLY_RECORD_FIELDS = {
|
|
5
|
+
enfyra_oauth_config: new Set(['clientId', 'clientSecret']),
|
|
6
|
+
};
|
|
7
|
+
export function assertRecordFieldsReadable(tableName, fields) {
|
|
8
|
+
const writeOnlyFields = WRITE_ONLY_RECORD_FIELDS[tableName];
|
|
9
|
+
if (!writeOnlyFields || !fields?.length)
|
|
10
|
+
return;
|
|
11
|
+
const requestedFields = fields
|
|
12
|
+
.flatMap((field) => String(field).split(','))
|
|
13
|
+
.map(normalizeRequestedField)
|
|
14
|
+
.filter(Boolean);
|
|
15
|
+
if (requestedFields.includes('*')) {
|
|
16
|
+
throw new Error(`Wildcard reads are blocked for "${tableName}" because it contains credential fields. Request only explicit non-secret fields.`);
|
|
17
|
+
}
|
|
18
|
+
const blocked = [...new Set(requestedFields.filter((field) => writeOnlyFields.has(field)))];
|
|
19
|
+
if (!blocked.length)
|
|
20
|
+
return;
|
|
21
|
+
throw new Error([
|
|
22
|
+
`Credential field(s) ${blocked.join(', ')} on "${tableName}" are write-only through setup_oauth_provider and cannot be read by MCP.`,
|
|
23
|
+
'Connect the third app first, then ask the user to supply clientId and clientSecret for the setup operation.',
|
|
24
|
+
'Never inspect or reuse stored OAuth credential values.',
|
|
25
|
+
].join(' '));
|
|
26
|
+
}
|
|
27
|
+
export function buildQuerySchemaReceipt(table, requestedFields) {
|
|
28
|
+
const validFields = new Set([
|
|
29
|
+
...(table?.columns ?? []).map((column) => String(column.name)),
|
|
30
|
+
...(table?.relations ?? []).map((relation) => String(relation.propertyName)),
|
|
31
|
+
].filter(Boolean));
|
|
32
|
+
const requestedTopLevelFields = [...new Set(requestedFields
|
|
33
|
+
.flatMap((field) => String(field).split(','))
|
|
34
|
+
.map(normalizeRequestedField)
|
|
35
|
+
.filter((field) => field && field !== '*'))];
|
|
36
|
+
const unknownFields = requestedTopLevelFields.filter((field) => !validFields.has(field));
|
|
37
|
+
if (unknownFields.length) {
|
|
38
|
+
throw new Error(`Unknown query_table field(s) for "${table?.name}": ${unknownFields.join(', ')}. Valid top-level fields: ${[...validFields].sort().join(', ')}.`);
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
tableName: table?.name ?? null,
|
|
42
|
+
primaryKey: table?.primaryKey ?? null,
|
|
43
|
+
metadataChecked: true,
|
|
44
|
+
requestedFieldsValidated: true,
|
|
45
|
+
requestedTopLevelFields,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export function buildDeletePostcondition(requestedIds, remainingRecords, primaryKey = 'id') {
|
|
49
|
+
return {
|
|
50
|
+
verificationMethod: 'route_read_by_primary_keys',
|
|
51
|
+
requestedIds,
|
|
52
|
+
remainingIds: remainingRecords.map((record) => record?.[primaryKey] ?? record?.id ?? record?._id).filter((id) => id != null),
|
|
53
|
+
confirmedAbsent: remainingRecords.length === 0,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=record-contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-contracts.js","sourceRoot":"","sources":["../../src/lib/record-contracts.ts"],"names":[],"mappings":"AAAA,SAAS,uBAAuB,CAAC,KAAa;IAC5C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,wBAAwB,GAAgC;IAC5D,mBAAmB,EAAE,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;CAC3D,CAAC;AAEF,MAAM,UAAU,0BAA0B,CAAC,SAAiB,EAAE,MAAiB;IAC7E,MAAM,eAAe,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC5D,IAAI,CAAC,eAAe,IAAI,CAAC,MAAM,EAAE,MAAM;QAAE,OAAO;IAChD,MAAM,eAAe,GAAG,MAAM;SAC3B,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC5C,GAAG,CAAC,uBAAuB,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,IAAI,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,mCAAmC,SAAS,mFAAmF,CAAC,CAAC;IACnJ,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5F,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO;IAC5B,MAAM,IAAI,KAAK,CAAC;QACd,uBAAuB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,SAAS,0EAA0E;QACpI,6GAA6G;QAC7G,wDAAwD;KACzD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAU,EAAE,eAAyB;IAC3E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;QAC1B,GAAG,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnE,GAAG,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAa,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;KAClF,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACnB,MAAM,uBAAuB,GAAG,CAAC,GAAG,IAAI,GAAG,CACzC,eAAe;aACZ,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aAC5C,GAAG,CAAC,uBAAuB,CAAC;aAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,KAAK,GAAG,CAAC,CAC7C,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACzF,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,EAAE,IAAI,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpK,CAAC;IACD,OAAO;QACL,SAAS,EAAE,KAAK,EAAE,IAAI,IAAI,IAAI;QAC9B,UAAU,EAAE,KAAK,EAAE,UAAU,IAAI,IAAI;QACrC,eAAe,EAAE,IAAI;QACrB,wBAAwB,EAAE,IAAI;QAC9B,uBAAuB;KACxB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,YAAuB,EAAE,gBAAuB,EAAE,UAAU,GAAG,IAAI;IAC1G,OAAO;QACL,kBAAkB,EAAE,4BAA4B;QAChD,YAAY;QACZ,YAAY,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC;QAC5H,eAAe,EAAE,gBAAgB,CAAC,MAAM,KAAK,CAAC;KAC/C,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const GLOBAL_RULES_ACK_KEY = "EFYRA::GLOBAL-RULES::RUNTIME-ZONE-INVENTORY::SCHEMA-DESIGN-CONTEXT::
|
|
1
|
+
export declare const GLOBAL_RULES_ACK_KEY = "EFYRA::GLOBAL-RULES::RUNTIME-ZONE-INVENTORY::SCHEMA-DESIGN-CONTEXT::20260717M";
|
|
2
2
|
export declare const DYNAMIC_CODE_KNOWLEDGE_ACK_KEY = "EFYRA::DYNAMIC-REPOSITORY-CONTRACT::LOCATOR-FIRST::ASYNC-HELPER-BRIDGE::20260717B";
|
|
3
3
|
export declare const EXTENSION_KNOWLEDGE_ACK_KEY = "EFYRA::EXTENSION-APP-COMPOSABLE-CONTRACT::20260716B";
|
|
4
4
|
export declare function resetRequiredKnowledgeSession(): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export const GLOBAL_RULES_ACK_KEY = 'EFYRA::GLOBAL-RULES::RUNTIME-ZONE-INVENTORY::SCHEMA-DESIGN-CONTEXT::
|
|
1
|
+
export const GLOBAL_RULES_ACK_KEY = 'EFYRA::GLOBAL-RULES::RUNTIME-ZONE-INVENTORY::SCHEMA-DESIGN-CONTEXT::20260717M';
|
|
2
2
|
export const DYNAMIC_CODE_KNOWLEDGE_ACK_KEY = 'EFYRA::DYNAMIC-REPOSITORY-CONTRACT::LOCATOR-FIRST::ASYNC-HELPER-BRIDGE::20260717B';
|
|
3
3
|
export const EXTENSION_KNOWLEDGE_ACK_KEY = 'EFYRA::EXTENSION-APP-COMPOSABLE-CONTRACT::20260716B';
|
|
4
|
-
const REQUIRED_KNOWLEDGE_VERSION = '2026-07-17.
|
|
4
|
+
const REQUIRED_KNOWLEDGE_VERSION = '2026-07-17.connect-credentials-seed-callback-order';
|
|
5
5
|
const acknowledgedDomains = new Set();
|
|
6
6
|
function hasExplicitAckKey(key) {
|
|
7
7
|
return key !== undefined && key !== null;
|
|
@@ -119,6 +119,19 @@ const GLOBAL_RULES_SECTIONS = [
|
|
|
119
119
|
'Never fabricate ids, field names, relation names, paths, package names, or permission scopes.',
|
|
120
120
|
],
|
|
121
121
|
},
|
|
122
|
+
{
|
|
123
|
+
id: 'oauth-provider-third-app-handoff',
|
|
124
|
+
rules: [
|
|
125
|
+
'Connect the third app to Enfyra before asking for provider credentials. Load category=connect, inspect the actual framework, and implement or verify its app-origin proxy, OAuth start action, cookieBridgePrefix, and /me session check first.',
|
|
126
|
+
'Only after the app connection is verified, stop and ask the user to supply provider clientId and clientSecret, then call setup_oauth_provider with appConnectionVerified=true. OAuth credentials are write-only: never inspect, read, or reuse stored credential values through query_table, find_one_record, runtime search, or any other tool. Do not ask the user for a callback URI or use generic record CRUD for this operation.',
|
|
127
|
+
'When credentials are missing from the current user request, ask only for clientId and clientSecret. Do not inspect provider state, present callbackUri, or tell the user to configure the provider console before setup_oauth_provider returns its verified receipt.',
|
|
128
|
+
'A successful setup_oauth_provider call proves only that the Enfyra config was saved and loaded. It returns setupComplete=false because the provider console is still unconfirmed.',
|
|
129
|
+
'Present the exact returned callbackUri and providerConsole.field, tell the user to add that URI in the provider console, then stop and wait for confirmation. Never return credentials or ask for them again after the Enfyra config is saved.',
|
|
130
|
+
'After confirmation, use the OAuth button in the already connected app to complete a real provider login and verify /me. Only then report the OAuth setup as complete; /auth/providers or an existing linked OAuth account alone does not prove the current provider credentials and callback are valid.',
|
|
131
|
+
'The standard browser contract is one stable proxy prefix to the Enfyra app /api bridge, an OAuth start action with an absolute redirect plus matching cookieBridgePrefix, and a /me session check after return. Do not create custom ESV login, callback, token-cookie, or refresh routes for this flow.',
|
|
132
|
+
'For Nuxt routeRules proxying OAuth and /auth/set-cookies, keep fetchOptions.redirect="manual" so upstream redirects and Set-Cookie reach the browser.',
|
|
133
|
+
],
|
|
134
|
+
},
|
|
122
135
|
{
|
|
123
136
|
id: 'schema-constraints',
|
|
124
137
|
rules: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"required-knowledge.js","sourceRoot":"","sources":["../../src/lib/required-knowledge.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,+EAA+E,CAAC;AACpH,MAAM,CAAC,MAAM,8BAA8B,GAAG,mFAAmF,CAAC;AAClI,MAAM,CAAC,MAAM,2BAA2B,GAAG,qDAAqD,CAAC;AAEjG,MAAM,0BAA0B,GAAG,
|
|
1
|
+
{"version":3,"file":"required-knowledge.js","sourceRoot":"","sources":["../../src/lib/required-knowledge.ts"],"names":[],"mappings":"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"}
|
|
@@ -117,6 +117,13 @@ export declare function searchRuntimeZone(apiUrl: string, input: any): Promise<{
|
|
|
117
117
|
zone: "admin_ui";
|
|
118
118
|
zoneDescription: string;
|
|
119
119
|
results: any[];
|
|
120
|
+
matchMode: string;
|
|
121
|
+
target: {
|
|
122
|
+
id: any;
|
|
123
|
+
name: any;
|
|
124
|
+
};
|
|
125
|
+
targetFound: boolean;
|
|
126
|
+
exactMatchCount: number;
|
|
120
127
|
query: string;
|
|
121
128
|
path: string;
|
|
122
129
|
type: any;
|
|
@@ -360,10 +360,13 @@ export async function searchRuntimeZone(apiUrl, input) {
|
|
|
360
360
|
if (!RUNTIME_ZONES.includes(zone))
|
|
361
361
|
throw new Error(`Unsupported runtime zone: ${zone}`);
|
|
362
362
|
if (zone === 'admin_ui') {
|
|
363
|
-
const
|
|
363
|
+
const exactLookup = input.id != null || Boolean(String(input.name ?? '').trim());
|
|
364
|
+
const inventory = !String(input.query ?? '').trim() && !String(input.path ?? '').trim() && !exactLookup;
|
|
364
365
|
const adminResult = await searchExtensions(apiUrl, {
|
|
365
366
|
query: input.query,
|
|
366
367
|
path: input.path,
|
|
368
|
+
id: input.id,
|
|
369
|
+
name: input.name,
|
|
367
370
|
type: input.extensionType,
|
|
368
371
|
includeDisabled: input.includeDisabled,
|
|
369
372
|
maxResults: input.maxResults,
|
|
@@ -626,8 +629,8 @@ export function registerRuntimeZoneTools(server, ENFYRA_API_URL) {
|
|
|
626
629
|
mode: z.enum(['search', 'inspect']).optional().default('search').describe('search returns ranked admin UI matches. inspect opens one result using id/name/path/query.'),
|
|
627
630
|
query: z.string().optional().describe('Visible text, button label, menu label, component name, class, icon, source term, or UX phrase.'),
|
|
628
631
|
path: z.string().optional().describe('Menu/page path such as /cloud/hosts when known.'),
|
|
629
|
-
id: z.union([z.string(), z.number()]).optional().describe('
|
|
630
|
-
name: z.string().optional().describe('
|
|
632
|
+
id: z.union([z.string(), z.number()]).optional().describe('Exact extension id for search verification, or the extension id for mode=inspect.'),
|
|
633
|
+
name: z.string().optional().describe('Exact extension name for search verification, or the extension name for mode=inspect.'),
|
|
631
634
|
type: z.enum(['page', 'widget', 'global']).optional().describe('Narrows extension type.'),
|
|
632
635
|
includeDisabled: z.boolean().optional().default(true),
|
|
633
636
|
maxResults: z.number().int().min(1).max(25).optional().default(8),
|