@posthog/mcp 0.0.8 → 0.1.16
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 +307 -2
- package/README.md +186 -93
- package/dist/extensions/capture.d.ts +13 -0
- package/dist/extensions/capture.d.ts.map +1 -0
- package/dist/extensions/capture.js +80 -0
- package/dist/extensions/capture.mjs +46 -0
- package/dist/extensions/compatibility.d.ts +23 -0
- package/dist/extensions/compatibility.d.ts.map +1 -0
- package/dist/extensions/compatibility.js +113 -0
- package/dist/extensions/compatibility.mjs +67 -0
- package/dist/extensions/constants.d.ts +39 -0
- package/dist/extensions/constants.d.ts.map +1 -0
- package/dist/extensions/constants.js +86 -0
- package/dist/extensions/constants.mjs +37 -0
- package/dist/extensions/context-parameters.d.ts +31 -0
- package/dist/extensions/context-parameters.d.ts.map +1 -0
- package/dist/extensions/context-parameters.js +93 -0
- package/dist/extensions/context-parameters.mjs +50 -0
- package/dist/extensions/conversation-id.d.ts +52 -0
- package/dist/extensions/conversation-id.d.ts.map +1 -0
- package/dist/extensions/conversation-id.js +164 -0
- package/dist/extensions/conversation-id.mjs +103 -0
- package/dist/extensions/event-types.d.ts +21 -0
- package/dist/extensions/event-types.d.ts.map +1 -0
- package/dist/extensions/event-types.js +47 -0
- package/dist/extensions/event-types.mjs +13 -0
- package/dist/extensions/exceptions.d.ts +13 -0
- package/dist/extensions/exceptions.d.ts.map +1 -0
- package/dist/extensions/exceptions.js +58 -0
- package/dist/extensions/exceptions.mjs +24 -0
- package/dist/extensions/ids.d.ts +13 -0
- package/dist/extensions/ids.d.ts.map +1 -0
- package/dist/extensions/ids.js +55 -0
- package/dist/extensions/ids.mjs +18 -0
- package/dist/extensions/instrument-highlevel.d.ts +3 -0
- package/dist/extensions/instrument-highlevel.d.ts.map +1 -0
- package/dist/extensions/instrument-highlevel.js +229 -0
- package/dist/extensions/instrument-highlevel.mjs +195 -0
- package/dist/extensions/instrument-lowlevel.d.ts +8 -0
- package/dist/extensions/instrument-lowlevel.d.ts.map +1 -0
- package/dist/extensions/instrument-lowlevel.js +85 -0
- package/dist/extensions/instrument-lowlevel.mjs +51 -0
- package/dist/extensions/instrumentation.d.ts +59 -0
- package/dist/extensions/instrumentation.d.ts.map +1 -0
- package/dist/extensions/instrumentation.js +237 -0
- package/dist/extensions/instrumentation.mjs +194 -0
- package/dist/extensions/intent.d.ts +10 -0
- package/dist/extensions/intent.d.ts.map +1 -0
- package/dist/extensions/intent.js +84 -0
- package/dist/extensions/intent.mjs +44 -0
- package/dist/extensions/internal.d.ts +32 -0
- package/dist/extensions/internal.d.ts.map +1 -0
- package/dist/extensions/internal.js +158 -0
- package/dist/extensions/internal.mjs +106 -0
- package/dist/extensions/logger.d.ts +14 -0
- package/dist/extensions/logger.d.ts.map +1 -0
- package/dist/extensions/logger.js +47 -0
- package/dist/extensions/logger.mjs +10 -0
- package/dist/extensions/mcp-payloads.d.ts +5 -0
- package/dist/extensions/mcp-payloads.d.ts.map +1 -0
- package/dist/extensions/mcp-payloads.js +91 -0
- package/dist/extensions/mcp-payloads.mjs +54 -0
- package/dist/extensions/mcp-sdk-compat.d.ts +33 -0
- package/dist/extensions/mcp-sdk-compat.d.ts.map +1 -0
- package/dist/extensions/mcp-sdk-compat.js +112 -0
- package/dist/extensions/mcp-sdk-compat.mjs +60 -0
- package/dist/extensions/posthog-events.d.ts +14 -0
- package/dist/extensions/posthog-events.d.ts.map +1 -0
- package/dist/extensions/posthog-events.js +143 -0
- package/dist/extensions/posthog-events.mjs +109 -0
- package/dist/extensions/sanitization.d.ts +10 -0
- package/dist/extensions/sanitization.d.ts.map +1 -0
- package/dist/extensions/sanitization.js +96 -0
- package/dist/extensions/sanitization.mjs +62 -0
- package/dist/extensions/session.d.ts +20 -0
- package/dist/extensions/session.d.ts.map +1 -0
- package/dist/extensions/session.js +113 -0
- package/dist/extensions/session.mjs +67 -0
- package/dist/extensions/sink.d.ts +44 -0
- package/dist/extensions/sink.d.ts.map +1 -0
- package/dist/extensions/sink.js +102 -0
- package/dist/extensions/sink.mjs +65 -0
- package/dist/extensions/tools.d.ts +9 -0
- package/dist/extensions/tools.d.ts.map +1 -0
- package/dist/extensions/tools.js +79 -0
- package/dist/extensions/tools.mjs +39 -0
- package/dist/extensions/tracing-helpers.d.ts +29 -0
- package/dist/extensions/tracing-helpers.d.ts.map +1 -0
- package/dist/extensions/tracing-helpers.js +59 -0
- package/dist/extensions/tracing-helpers.mjs +16 -0
- package/dist/extensions/truncation.d.ts +25 -0
- package/dist/extensions/truncation.d.ts.map +1 -0
- package/dist/extensions/truncation.js +277 -0
- package/dist/extensions/truncation.mjs +228 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +132 -0
- package/dist/index.mjs +83 -2928
- package/dist/types.d.ts +220 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +18 -0
- package/dist/types.mjs +0 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +36 -0
- package/dist/version.mjs +2 -0
- package/package.json +55 -87
- package/src/extensions/capture.ts +68 -0
- package/src/extensions/compatibility.ts +138 -0
- package/src/extensions/constants.ts +48 -0
- package/src/extensions/context-parameters.ts +119 -0
- package/src/extensions/conversation-id.ts +177 -0
- package/src/extensions/event-types.ts +21 -0
- package/src/extensions/exceptions.ts +83 -0
- package/src/extensions/ids.ts +32 -0
- package/src/extensions/instrument-highlevel.ts +297 -0
- package/src/extensions/instrument-lowlevel.ts +83 -0
- package/src/extensions/instrumentation.ts +415 -0
- package/src/extensions/intent.ts +78 -0
- package/src/extensions/internal.ts +193 -0
- package/src/extensions/logger.ts +27 -0
- package/src/extensions/mcp-payloads.ts +98 -0
- package/src/extensions/mcp-sdk-compat.ts +160 -0
- package/src/extensions/posthog-events.ts +212 -0
- package/src/extensions/sanitization.ts +121 -0
- package/src/extensions/session.ts +117 -0
- package/src/extensions/sink.ts +130 -0
- package/src/extensions/tools.ts +50 -0
- package/src/extensions/tracing-helpers.ts +51 -0
- package/src/extensions/truncation.ts +453 -0
- package/src/index.ts +174 -0
- package/src/types.ts +244 -0
- package/src/version.ts +1 -0
- package/dist/index.cjs +0 -2936
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -264
- package/dist/index.d.mts +0 -263
- package/dist/index.mjs.map +0 -1
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
mergeIdentities: ()=>mergeIdentities,
|
|
28
|
+
areIdentitiesEqual: ()=>areIdentitiesEqual,
|
|
29
|
+
resolveEventProperties: ()=>resolveEventProperties,
|
|
30
|
+
handleIdentify: ()=>handleIdentify,
|
|
31
|
+
getServerTrackingData: ()=>getServerTrackingData,
|
|
32
|
+
IdentityCache: ()=>IdentityCache,
|
|
33
|
+
setServerTrackingData: ()=>setServerTrackingData
|
|
34
|
+
});
|
|
35
|
+
const external_event_types_js_namespaceObject = require("./event-types.js");
|
|
36
|
+
const external_logger_js_namespaceObject = require("./logger.js");
|
|
37
|
+
const external_capture_js_namespaceObject = require("./capture.js");
|
|
38
|
+
class IdentityCache {
|
|
39
|
+
constructor(maxSize = 1000){
|
|
40
|
+
this._cache = new Map();
|
|
41
|
+
this._maxSize = maxSize;
|
|
42
|
+
}
|
|
43
|
+
get(sessionId) {
|
|
44
|
+
const identity = this._cache.get(sessionId);
|
|
45
|
+
if (void 0 === identity) return;
|
|
46
|
+
this._cache.delete(sessionId);
|
|
47
|
+
this._cache.set(sessionId, identity);
|
|
48
|
+
return identity;
|
|
49
|
+
}
|
|
50
|
+
set(sessionId, identity) {
|
|
51
|
+
this._cache.delete(sessionId);
|
|
52
|
+
if (this._cache.size >= this._maxSize) {
|
|
53
|
+
const oldestKey = this._cache.keys().next().value;
|
|
54
|
+
if (void 0 !== oldestKey) this._cache.delete(oldestKey);
|
|
55
|
+
}
|
|
56
|
+
this._cache.set(sessionId, identity);
|
|
57
|
+
}
|
|
58
|
+
has(sessionId) {
|
|
59
|
+
return this._cache.has(sessionId);
|
|
60
|
+
}
|
|
61
|
+
size() {
|
|
62
|
+
return this._cache.size;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const _serverTracking = new WeakMap();
|
|
66
|
+
function getServerTrackingData(server) {
|
|
67
|
+
return _serverTracking.get(server);
|
|
68
|
+
}
|
|
69
|
+
function setServerTrackingData(server, data) {
|
|
70
|
+
_serverTracking.set(server, data);
|
|
71
|
+
}
|
|
72
|
+
function areIdentitiesEqual(a, b) {
|
|
73
|
+
if (a.distinctId !== b.distinctId) return false;
|
|
74
|
+
if (JSON.stringify(a.groups ?? {}) !== JSON.stringify(b.groups ?? {})) return false;
|
|
75
|
+
const aProps = a.properties || {};
|
|
76
|
+
const bProps = b.properties || {};
|
|
77
|
+
const aKeys = Object.keys(aProps);
|
|
78
|
+
const bKeys = Object.keys(bProps);
|
|
79
|
+
if (aKeys.length !== bKeys.length) return false;
|
|
80
|
+
for (const key of aKeys){
|
|
81
|
+
if (!(key in bProps)) return false;
|
|
82
|
+
if (JSON.stringify(aProps[key]) !== JSON.stringify(bProps[key])) return false;
|
|
83
|
+
}
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
function mergeIdentities(previous, next) {
|
|
87
|
+
if (!previous) return next;
|
|
88
|
+
return {
|
|
89
|
+
distinctId: next.distinctId,
|
|
90
|
+
properties: {
|
|
91
|
+
...previous.properties || {},
|
|
92
|
+
...next.properties || {}
|
|
93
|
+
},
|
|
94
|
+
groups: next.groups ?? previous.groups
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
async function handleIdentify(server, data, sessionId, request, extra) {
|
|
98
|
+
if (!data.options.identify) return;
|
|
99
|
+
const identifyEvent = {
|
|
100
|
+
sessionId,
|
|
101
|
+
resourceName: getRequestResourceName(request),
|
|
102
|
+
eventType: external_event_types_js_namespaceObject.MCPAnalyticsEventType.identify,
|
|
103
|
+
parameters: {
|
|
104
|
+
request,
|
|
105
|
+
extra
|
|
106
|
+
},
|
|
107
|
+
timestamp: new Date()
|
|
108
|
+
};
|
|
109
|
+
try {
|
|
110
|
+
const identityResult = 'function' == typeof data.options.identify ? await data.options.identify(request, extra) : data.options.identify;
|
|
111
|
+
if (identityResult) {
|
|
112
|
+
const previousIdentity = data.identifiedSessions.get(sessionId);
|
|
113
|
+
const mergedIdentity = mergeIdentities(previousIdentity, identityResult);
|
|
114
|
+
const hasChanged = !(previousIdentity && areIdentitiesEqual(previousIdentity, mergedIdentity));
|
|
115
|
+
data.identifiedSessions.set(sessionId, mergedIdentity);
|
|
116
|
+
if (hasChanged) {
|
|
117
|
+
(0, external_logger_js_namespaceObject.log)(`Identified session ${sessionId} with identity: ${JSON.stringify(mergedIdentity)}`);
|
|
118
|
+
(0, external_capture_js_namespaceObject.captureEvent)(server, identifyEvent);
|
|
119
|
+
}
|
|
120
|
+
} else (0, external_logger_js_namespaceObject.log)(`Warning: Supplied identify function returned null for session ${sessionId}`);
|
|
121
|
+
} catch (error) {
|
|
122
|
+
(0, external_logger_js_namespaceObject.log)(`Error: User supplied identify function threw an error while identifying session ${sessionId} - ${error}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
async function resolveEventProperties(data, request, extra) {
|
|
126
|
+
if (!data.options.eventProperties) return null;
|
|
127
|
+
try {
|
|
128
|
+
return await data.options.eventProperties(request, extra) ?? null;
|
|
129
|
+
} catch (e) {
|
|
130
|
+
(0, external_logger_js_namespaceObject.log)(`eventProperties callback error: ${e}`);
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function getRequestResourceName(request) {
|
|
135
|
+
if (!request || 'object' != typeof request || !('params' in request)) return 'Unknown';
|
|
136
|
+
const params = request.params;
|
|
137
|
+
if (!params || 'object' != typeof params || !('name' in params)) return 'Unknown';
|
|
138
|
+
return 'string' == typeof params.name ? params.name : 'Unknown';
|
|
139
|
+
}
|
|
140
|
+
exports.IdentityCache = __webpack_exports__.IdentityCache;
|
|
141
|
+
exports.areIdentitiesEqual = __webpack_exports__.areIdentitiesEqual;
|
|
142
|
+
exports.getServerTrackingData = __webpack_exports__.getServerTrackingData;
|
|
143
|
+
exports.handleIdentify = __webpack_exports__.handleIdentify;
|
|
144
|
+
exports.mergeIdentities = __webpack_exports__.mergeIdentities;
|
|
145
|
+
exports.resolveEventProperties = __webpack_exports__.resolveEventProperties;
|
|
146
|
+
exports.setServerTrackingData = __webpack_exports__.setServerTrackingData;
|
|
147
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
148
|
+
"IdentityCache",
|
|
149
|
+
"areIdentitiesEqual",
|
|
150
|
+
"getServerTrackingData",
|
|
151
|
+
"handleIdentify",
|
|
152
|
+
"mergeIdentities",
|
|
153
|
+
"resolveEventProperties",
|
|
154
|
+
"setServerTrackingData"
|
|
155
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
156
|
+
Object.defineProperty(exports, '__esModule', {
|
|
157
|
+
value: true
|
|
158
|
+
});
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { MCPAnalyticsEventType } from "./event-types.mjs";
|
|
2
|
+
import { log } from "./logger.mjs";
|
|
3
|
+
import { captureEvent } from "./capture.mjs";
|
|
4
|
+
class IdentityCache {
|
|
5
|
+
constructor(maxSize = 1000){
|
|
6
|
+
this._cache = new Map();
|
|
7
|
+
this._maxSize = maxSize;
|
|
8
|
+
}
|
|
9
|
+
get(sessionId) {
|
|
10
|
+
const identity = this._cache.get(sessionId);
|
|
11
|
+
if (void 0 === identity) return;
|
|
12
|
+
this._cache.delete(sessionId);
|
|
13
|
+
this._cache.set(sessionId, identity);
|
|
14
|
+
return identity;
|
|
15
|
+
}
|
|
16
|
+
set(sessionId, identity) {
|
|
17
|
+
this._cache.delete(sessionId);
|
|
18
|
+
if (this._cache.size >= this._maxSize) {
|
|
19
|
+
const oldestKey = this._cache.keys().next().value;
|
|
20
|
+
if (void 0 !== oldestKey) this._cache.delete(oldestKey);
|
|
21
|
+
}
|
|
22
|
+
this._cache.set(sessionId, identity);
|
|
23
|
+
}
|
|
24
|
+
has(sessionId) {
|
|
25
|
+
return this._cache.has(sessionId);
|
|
26
|
+
}
|
|
27
|
+
size() {
|
|
28
|
+
return this._cache.size;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const _serverTracking = new WeakMap();
|
|
32
|
+
function getServerTrackingData(server) {
|
|
33
|
+
return _serverTracking.get(server);
|
|
34
|
+
}
|
|
35
|
+
function setServerTrackingData(server, data) {
|
|
36
|
+
_serverTracking.set(server, data);
|
|
37
|
+
}
|
|
38
|
+
function areIdentitiesEqual(a, b) {
|
|
39
|
+
if (a.distinctId !== b.distinctId) return false;
|
|
40
|
+
if (JSON.stringify(a.groups ?? {}) !== JSON.stringify(b.groups ?? {})) return false;
|
|
41
|
+
const aProps = a.properties || {};
|
|
42
|
+
const bProps = b.properties || {};
|
|
43
|
+
const aKeys = Object.keys(aProps);
|
|
44
|
+
const bKeys = Object.keys(bProps);
|
|
45
|
+
if (aKeys.length !== bKeys.length) return false;
|
|
46
|
+
for (const key of aKeys){
|
|
47
|
+
if (!(key in bProps)) return false;
|
|
48
|
+
if (JSON.stringify(aProps[key]) !== JSON.stringify(bProps[key])) return false;
|
|
49
|
+
}
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
function mergeIdentities(previous, next) {
|
|
53
|
+
if (!previous) return next;
|
|
54
|
+
return {
|
|
55
|
+
distinctId: next.distinctId,
|
|
56
|
+
properties: {
|
|
57
|
+
...previous.properties || {},
|
|
58
|
+
...next.properties || {}
|
|
59
|
+
},
|
|
60
|
+
groups: next.groups ?? previous.groups
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
async function handleIdentify(server, data, sessionId, request, extra) {
|
|
64
|
+
if (!data.options.identify) return;
|
|
65
|
+
const identifyEvent = {
|
|
66
|
+
sessionId,
|
|
67
|
+
resourceName: getRequestResourceName(request),
|
|
68
|
+
eventType: MCPAnalyticsEventType.identify,
|
|
69
|
+
parameters: {
|
|
70
|
+
request,
|
|
71
|
+
extra
|
|
72
|
+
},
|
|
73
|
+
timestamp: new Date()
|
|
74
|
+
};
|
|
75
|
+
try {
|
|
76
|
+
const identityResult = 'function' == typeof data.options.identify ? await data.options.identify(request, extra) : data.options.identify;
|
|
77
|
+
if (identityResult) {
|
|
78
|
+
const previousIdentity = data.identifiedSessions.get(sessionId);
|
|
79
|
+
const mergedIdentity = mergeIdentities(previousIdentity, identityResult);
|
|
80
|
+
const hasChanged = !(previousIdentity && areIdentitiesEqual(previousIdentity, mergedIdentity));
|
|
81
|
+
data.identifiedSessions.set(sessionId, mergedIdentity);
|
|
82
|
+
if (hasChanged) {
|
|
83
|
+
log(`Identified session ${sessionId} with identity: ${JSON.stringify(mergedIdentity)}`);
|
|
84
|
+
captureEvent(server, identifyEvent);
|
|
85
|
+
}
|
|
86
|
+
} else log(`Warning: Supplied identify function returned null for session ${sessionId}`);
|
|
87
|
+
} catch (error) {
|
|
88
|
+
log(`Error: User supplied identify function threw an error while identifying session ${sessionId} - ${error}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async function resolveEventProperties(data, request, extra) {
|
|
92
|
+
if (!data.options.eventProperties) return null;
|
|
93
|
+
try {
|
|
94
|
+
return await data.options.eventProperties(request, extra) ?? null;
|
|
95
|
+
} catch (e) {
|
|
96
|
+
log(`eventProperties callback error: ${e}`);
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function getRequestResourceName(request) {
|
|
101
|
+
if (!request || 'object' != typeof request || !('params' in request)) return 'Unknown';
|
|
102
|
+
const params = request.params;
|
|
103
|
+
if (!params || 'object' != typeof params || !('name' in params)) return 'Unknown';
|
|
104
|
+
return 'string' == typeof params.name ? params.name : 'Unknown';
|
|
105
|
+
}
|
|
106
|
+
export { IdentityCache, areIdentitiesEqual, getServerTrackingData, handleIdentify, mergeIdentities, resolveEventProperties, setServerTrackingData };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STDIO-safe logger.
|
|
3
|
+
*
|
|
4
|
+
* MCP servers running over the STDIO transport use stdout/stderr to exchange
|
|
5
|
+
* protocol messages, so we cannot use the default `console.log`. We accept a
|
|
6
|
+
* `logger` option on the public API; when omitted, log calls are silently
|
|
7
|
+
* dropped. Errors that affect tracking should still be observable in apps that
|
|
8
|
+
* want them, so the consumer can plug in any function (e.g. `console.error`
|
|
9
|
+
* for non-STDIO transports, a file logger, etc.).
|
|
10
|
+
*/
|
|
11
|
+
export type LoggerFn = (message: string) => void;
|
|
12
|
+
export declare function setLogger(logger: LoggerFn | undefined): void;
|
|
13
|
+
export declare function log(message: string): void;
|
|
14
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/extensions/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;AAIhD,wBAAgB,SAAS,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,CAE5D;AAED,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQzC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
log: ()=>log,
|
|
28
|
+
setLogger: ()=>setLogger
|
|
29
|
+
});
|
|
30
|
+
let activeLogger;
|
|
31
|
+
function setLogger(logger) {
|
|
32
|
+
activeLogger = logger;
|
|
33
|
+
}
|
|
34
|
+
function log(message) {
|
|
35
|
+
if (activeLogger) try {
|
|
36
|
+
activeLogger(message);
|
|
37
|
+
} catch {}
|
|
38
|
+
}
|
|
39
|
+
exports.log = __webpack_exports__.log;
|
|
40
|
+
exports.setLogger = __webpack_exports__.setLogger;
|
|
41
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
42
|
+
"log",
|
|
43
|
+
"setLogger"
|
|
44
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
45
|
+
Object.defineProperty(exports, '__esModule', {
|
|
46
|
+
value: true
|
|
47
|
+
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-payloads.d.ts","sourceRoot":"","sources":["../../src/extensions/mcp-payloads.ts"],"names":[],"mappings":"AAQA,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAiBzC,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA0B7D;AA6BD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAiBvE"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
buildCapturedMcpParameters: ()=>buildCapturedMcpParameters,
|
|
28
|
+
sanitizeCapturedValue: ()=>sanitizeCapturedValue
|
|
29
|
+
});
|
|
30
|
+
const CONTEXT_ARGUMENT_NAME = 'context';
|
|
31
|
+
const REDACTED_VALUE = '[redacted]';
|
|
32
|
+
const BASE64_PATTERN = /^[A-Za-z0-9+/\n\r]+=*$/;
|
|
33
|
+
const SIZE_GATE = 10240;
|
|
34
|
+
const POSTHOG_TOKEN_PATTERN = /\bph[a-z]_[A-Za-z0-9_-]{20,}\b/g;
|
|
35
|
+
const SENSITIVE_KEY_PATTERN = /^(authorization|cookie|set-cookie|x-api-key|api[-_]?key|api[-_]?token|access[-_]?token|refresh[-_]?token|token|password|secret|client[-_]?secret|private[-_]?key)$/i;
|
|
36
|
+
function isRecord(value) {
|
|
37
|
+
return !!value && 'object' == typeof value && !Array.isArray(value);
|
|
38
|
+
}
|
|
39
|
+
function shouldRedactKey(key) {
|
|
40
|
+
return SENSITIVE_KEY_PATTERN.test(key);
|
|
41
|
+
}
|
|
42
|
+
function sanitizeString(value) {
|
|
43
|
+
if (value.length >= SIZE_GATE && BASE64_PATTERN.test(value)) return '[binary data redacted - not supported by PostHog MCP analytics]';
|
|
44
|
+
return value.replace(POSTHOG_TOKEN_PATTERN, REDACTED_VALUE);
|
|
45
|
+
}
|
|
46
|
+
function sanitizeCapturedValue(value) {
|
|
47
|
+
if (null == value) return value;
|
|
48
|
+
if ('string' == typeof value) return sanitizeString(value);
|
|
49
|
+
if (Array.isArray(value)) return value.map(sanitizeCapturedValue);
|
|
50
|
+
if (value instanceof Date) return value;
|
|
51
|
+
if ('object' != typeof value) return value;
|
|
52
|
+
const result = {};
|
|
53
|
+
for (const [key, nestedValue] of Object.entries(value))result[key] = shouldRedactKey(key) ? REDACTED_VALUE : sanitizeCapturedValue(nestedValue);
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
function buildCapturedMcpArguments(argumentsValue) {
|
|
57
|
+
if (!isRecord(argumentsValue)) return sanitizeCapturedValue(argumentsValue);
|
|
58
|
+
const capturedArguments = {};
|
|
59
|
+
for (const [key, value] of Object.entries(argumentsValue))if (key !== CONTEXT_ARGUMENT_NAME) capturedArguments[key] = sanitizeCapturedValue(value);
|
|
60
|
+
return capturedArguments;
|
|
61
|
+
}
|
|
62
|
+
function buildCapturedMcpParams(params) {
|
|
63
|
+
if (!isRecord(params)) return sanitizeCapturedValue(params);
|
|
64
|
+
const capturedParams = {};
|
|
65
|
+
for (const [key, value] of Object.entries(params))capturedParams[key] = 'arguments' === key ? buildCapturedMcpArguments(value) : sanitizeCapturedValue(value);
|
|
66
|
+
return capturedParams;
|
|
67
|
+
}
|
|
68
|
+
function buildCapturedMcpParameters(request) {
|
|
69
|
+
if (!isRecord(request)) return {
|
|
70
|
+
request: sanitizeCapturedValue(request)
|
|
71
|
+
};
|
|
72
|
+
const capturedRequest = {};
|
|
73
|
+
for (const key of [
|
|
74
|
+
'id',
|
|
75
|
+
'jsonrpc',
|
|
76
|
+
'method'
|
|
77
|
+
])if (key in request) capturedRequest[key] = sanitizeCapturedValue(request[key]);
|
|
78
|
+
if ('params' in request) capturedRequest.params = buildCapturedMcpParams(request.params);
|
|
79
|
+
return {
|
|
80
|
+
request: capturedRequest
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
exports.buildCapturedMcpParameters = __webpack_exports__.buildCapturedMcpParameters;
|
|
84
|
+
exports.sanitizeCapturedValue = __webpack_exports__.sanitizeCapturedValue;
|
|
85
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
86
|
+
"buildCapturedMcpParameters",
|
|
87
|
+
"sanitizeCapturedValue"
|
|
88
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
89
|
+
Object.defineProperty(exports, '__esModule', {
|
|
90
|
+
value: true
|
|
91
|
+
});
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
const CONTEXT_ARGUMENT_NAME = 'context';
|
|
2
|
+
const REDACTED_VALUE = '[redacted]';
|
|
3
|
+
const BASE64_PATTERN = /^[A-Za-z0-9+/\n\r]+=*$/;
|
|
4
|
+
const SIZE_GATE = 10240;
|
|
5
|
+
const POSTHOG_TOKEN_PATTERN = /\bph[a-z]_[A-Za-z0-9_-]{20,}\b/g;
|
|
6
|
+
const SENSITIVE_KEY_PATTERN = /^(authorization|cookie|set-cookie|x-api-key|api[-_]?key|api[-_]?token|access[-_]?token|refresh[-_]?token|token|password|secret|client[-_]?secret|private[-_]?key)$/i;
|
|
7
|
+
function isRecord(value) {
|
|
8
|
+
return !!value && 'object' == typeof value && !Array.isArray(value);
|
|
9
|
+
}
|
|
10
|
+
function shouldRedactKey(key) {
|
|
11
|
+
return SENSITIVE_KEY_PATTERN.test(key);
|
|
12
|
+
}
|
|
13
|
+
function sanitizeString(value) {
|
|
14
|
+
if (value.length >= SIZE_GATE && BASE64_PATTERN.test(value)) return '[binary data redacted - not supported by PostHog MCP analytics]';
|
|
15
|
+
return value.replace(POSTHOG_TOKEN_PATTERN, REDACTED_VALUE);
|
|
16
|
+
}
|
|
17
|
+
function sanitizeCapturedValue(value) {
|
|
18
|
+
if (null == value) return value;
|
|
19
|
+
if ('string' == typeof value) return sanitizeString(value);
|
|
20
|
+
if (Array.isArray(value)) return value.map(sanitizeCapturedValue);
|
|
21
|
+
if (value instanceof Date) return value;
|
|
22
|
+
if ('object' != typeof value) return value;
|
|
23
|
+
const result = {};
|
|
24
|
+
for (const [key, nestedValue] of Object.entries(value))result[key] = shouldRedactKey(key) ? REDACTED_VALUE : sanitizeCapturedValue(nestedValue);
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
function buildCapturedMcpArguments(argumentsValue) {
|
|
28
|
+
if (!isRecord(argumentsValue)) return sanitizeCapturedValue(argumentsValue);
|
|
29
|
+
const capturedArguments = {};
|
|
30
|
+
for (const [key, value] of Object.entries(argumentsValue))if (key !== CONTEXT_ARGUMENT_NAME) capturedArguments[key] = sanitizeCapturedValue(value);
|
|
31
|
+
return capturedArguments;
|
|
32
|
+
}
|
|
33
|
+
function buildCapturedMcpParams(params) {
|
|
34
|
+
if (!isRecord(params)) return sanitizeCapturedValue(params);
|
|
35
|
+
const capturedParams = {};
|
|
36
|
+
for (const [key, value] of Object.entries(params))capturedParams[key] = 'arguments' === key ? buildCapturedMcpArguments(value) : sanitizeCapturedValue(value);
|
|
37
|
+
return capturedParams;
|
|
38
|
+
}
|
|
39
|
+
function buildCapturedMcpParameters(request) {
|
|
40
|
+
if (!isRecord(request)) return {
|
|
41
|
+
request: sanitizeCapturedValue(request)
|
|
42
|
+
};
|
|
43
|
+
const capturedRequest = {};
|
|
44
|
+
for (const key of [
|
|
45
|
+
'id',
|
|
46
|
+
'jsonrpc',
|
|
47
|
+
'method'
|
|
48
|
+
])if (key in request) capturedRequest[key] = sanitizeCapturedValue(request[key]);
|
|
49
|
+
if ('params' in request) capturedRequest.params = buildCapturedMcpParams(request.params);
|
|
50
|
+
return {
|
|
51
|
+
request: capturedRequest
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export { buildCapturedMcpParameters, sanitizeCapturedValue };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP SDK Compatibility Helpers
|
|
3
|
+
*
|
|
4
|
+
* Internal utilities for handling differences between MCP SDK versions.
|
|
5
|
+
* These helpers abstract away SDK-internal details like:
|
|
6
|
+
* - Tool callback/handler property names (changed in SDK 1.24)
|
|
7
|
+
* - Zod schema internal structures (v3 vs v4)
|
|
8
|
+
*/
|
|
9
|
+
import type { RegisteredTool, ToolCallback } from '../types';
|
|
10
|
+
export type ToolFunctionKey = 'callback' | 'handler';
|
|
11
|
+
/**
|
|
12
|
+
* Returns the tool function (callback/handler) from a RegisteredTool.
|
|
13
|
+
* Supports both MCP SDK 1.23- (callback) and 1.24+ (handler).
|
|
14
|
+
*/
|
|
15
|
+
export declare function getToolFunction(tool: RegisteredTool): ToolCallback;
|
|
16
|
+
/**
|
|
17
|
+
* Returns the property key name used for the tool function ("callback" or "handler").
|
|
18
|
+
* This preserves the original property name when wrapping tools.
|
|
19
|
+
*/
|
|
20
|
+
export declare function getToolFunctionKey(tool: RegisteredTool): ToolFunctionKey;
|
|
21
|
+
/**
|
|
22
|
+
* Returns true if the tool has a callback or handler property.
|
|
23
|
+
*/
|
|
24
|
+
export declare function hasToolFunction(tool: unknown): tool is RegisteredTool;
|
|
25
|
+
/**
|
|
26
|
+
* Creates a new tool object with the wrapped function, preserving the original property name.
|
|
27
|
+
* This ensures MCP SDK 1.24+ gets back a tool with "handler" and 1.23- gets "callback".
|
|
28
|
+
*/
|
|
29
|
+
export declare function createWrappedTool(originalTool: RegisteredTool, wrappedFunction: ToolCallback): RegisteredTool;
|
|
30
|
+
export declare function isZ4Schema(schema: unknown): boolean;
|
|
31
|
+
export declare function getObjectShape(schema: unknown): Record<string, unknown> | undefined;
|
|
32
|
+
export declare function getLiteralValue(schema: unknown): unknown;
|
|
33
|
+
//# sourceMappingURL=mcp-sdk-compat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-sdk-compat.d.ts","sourceRoot":"","sources":["../../src/extensions/mcp-sdk-compat.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAK5D,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,SAAS,CAAA;AAEpD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,YAAY,CAQlE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,eAAe,CAKxE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,cAAc,CAMrE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,GAAG,cAAc,CAM7G;AAyBD,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAKnD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CA6BnF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAkCxD"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, definition)=>{
|
|
5
|
+
for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: definition[key]
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
})();
|
|
11
|
+
(()=>{
|
|
12
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
13
|
+
})();
|
|
14
|
+
(()=>{
|
|
15
|
+
__webpack_require__.r = (exports1)=>{
|
|
16
|
+
if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
17
|
+
value: 'Module'
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
20
|
+
value: true
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
var __webpack_exports__ = {};
|
|
25
|
+
__webpack_require__.r(__webpack_exports__);
|
|
26
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
+
createWrappedTool: ()=>createWrappedTool,
|
|
28
|
+
getLiteralValue: ()=>getLiteralValue,
|
|
29
|
+
getObjectShape: ()=>getObjectShape,
|
|
30
|
+
getToolFunction: ()=>getToolFunction,
|
|
31
|
+
getToolFunctionKey: ()=>getToolFunctionKey,
|
|
32
|
+
hasToolFunction: ()=>hasToolFunction,
|
|
33
|
+
isZ4Schema: ()=>isZ4Schema
|
|
34
|
+
});
|
|
35
|
+
function getToolFunction(tool) {
|
|
36
|
+
if ('handler' in tool && 'function' == typeof tool.handler) return tool.handler;
|
|
37
|
+
if ('callback' in tool && 'function' == typeof tool.callback) return tool.callback;
|
|
38
|
+
throw new Error('Tool has neither callback nor handler property');
|
|
39
|
+
}
|
|
40
|
+
function getToolFunctionKey(tool) {
|
|
41
|
+
if ('handler' in tool && 'function' == typeof tool.handler) return 'handler';
|
|
42
|
+
return 'callback';
|
|
43
|
+
}
|
|
44
|
+
function hasToolFunction(tool) {
|
|
45
|
+
if (!tool || 'object' != typeof tool) return false;
|
|
46
|
+
const t = tool;
|
|
47
|
+
return 'handler' in t && 'function' == typeof t.handler || 'callback' in t && 'function' == typeof t.callback;
|
|
48
|
+
}
|
|
49
|
+
function createWrappedTool(originalTool, wrappedFunction) {
|
|
50
|
+
const key = getToolFunctionKey(originalTool);
|
|
51
|
+
return {
|
|
52
|
+
...originalTool,
|
|
53
|
+
[key]: wrappedFunction
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function isZ4Schema(schema) {
|
|
57
|
+
if (!schema || 'object' != typeof schema) return false;
|
|
58
|
+
return !!schema._zod;
|
|
59
|
+
}
|
|
60
|
+
function getObjectShape(schema) {
|
|
61
|
+
if (!schema || 'object' != typeof schema) return;
|
|
62
|
+
let rawShape;
|
|
63
|
+
if (isZ4Schema(schema)) {
|
|
64
|
+
const v4Schema = schema;
|
|
65
|
+
rawShape = v4Schema._zod?.def?.shape;
|
|
66
|
+
} else {
|
|
67
|
+
const v3Schema = schema;
|
|
68
|
+
rawShape = v3Schema.shape ?? v3Schema._def?.shape;
|
|
69
|
+
}
|
|
70
|
+
if (!rawShape) return;
|
|
71
|
+
if ('function' == typeof rawShape) try {
|
|
72
|
+
return rawShape();
|
|
73
|
+
} catch {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
return rawShape;
|
|
77
|
+
}
|
|
78
|
+
function getLiteralValue(schema) {
|
|
79
|
+
if (!schema || 'object' != typeof schema) return;
|
|
80
|
+
if (isZ4Schema(schema)) {
|
|
81
|
+
const v4Schema = schema;
|
|
82
|
+
const def = v4Schema._zod?.def;
|
|
83
|
+
if (def?.value !== void 0) return def.value;
|
|
84
|
+
if (Array.isArray(def?.values) && def.values.length > 0) return def.values[0];
|
|
85
|
+
} else {
|
|
86
|
+
const v3Schema = schema;
|
|
87
|
+
const def = v3Schema._def;
|
|
88
|
+
if (def?.value !== void 0) return def.value;
|
|
89
|
+
if (Array.isArray(def?.values) && def.values.length > 0) return def.values[0];
|
|
90
|
+
}
|
|
91
|
+
const directValue = schema.value;
|
|
92
|
+
if (void 0 !== directValue) return directValue;
|
|
93
|
+
}
|
|
94
|
+
exports.createWrappedTool = __webpack_exports__.createWrappedTool;
|
|
95
|
+
exports.getLiteralValue = __webpack_exports__.getLiteralValue;
|
|
96
|
+
exports.getObjectShape = __webpack_exports__.getObjectShape;
|
|
97
|
+
exports.getToolFunction = __webpack_exports__.getToolFunction;
|
|
98
|
+
exports.getToolFunctionKey = __webpack_exports__.getToolFunctionKey;
|
|
99
|
+
exports.hasToolFunction = __webpack_exports__.hasToolFunction;
|
|
100
|
+
exports.isZ4Schema = __webpack_exports__.isZ4Schema;
|
|
101
|
+
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
102
|
+
"createWrappedTool",
|
|
103
|
+
"getLiteralValue",
|
|
104
|
+
"getObjectShape",
|
|
105
|
+
"getToolFunction",
|
|
106
|
+
"getToolFunctionKey",
|
|
107
|
+
"hasToolFunction",
|
|
108
|
+
"isZ4Schema"
|
|
109
|
+
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
110
|
+
Object.defineProperty(exports, '__esModule', {
|
|
111
|
+
value: true
|
|
112
|
+
});
|