@burdenoff/mcp-libs 2026.1026.1 → 2026.1028.1
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/{chunk-S2DM4KCX.js → chunk-GTKSADBI.js} +3 -3
- package/dist/{chunk-S2DM4KCX.js.map → chunk-GTKSADBI.js.map} +1 -1
- package/dist/{chunk-FHXCNP2U.js → chunk-J74ZKEXL.js} +75 -7
- package/dist/chunk-J74ZKEXL.js.map +1 -0
- package/dist/core/index.cjs +74 -4
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.js +1 -1
- package/dist/core/server.d.ts +3 -0
- package/dist/core/tool-governance.d.ts +11 -0
- package/dist/index.cjs +65 -5
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/modules/adaptercloud/index.cjs +1 -0
- package/dist/modules/adaptercloud/index.cjs.map +1 -1
- package/dist/modules/adaptercloud/index.js +1 -1
- package/dist/modules/artistrybase/index.cjs +1 -0
- package/dist/modules/artistrybase/index.cjs.map +1 -1
- package/dist/modules/artistrybase/index.js +1 -1
- package/dist/modules/assethandler/index.cjs +1 -0
- package/dist/modules/assethandler/index.cjs.map +1 -1
- package/dist/modules/assethandler/index.js +1 -1
- package/dist/modules/atheletebridge/index.cjs +1 -0
- package/dist/modules/atheletebridge/index.cjs.map +1 -1
- package/dist/modules/atheletebridge/index.js +1 -1
- package/dist/modules/auth/index.cjs +1 -0
- package/dist/modules/auth/index.cjs.map +1 -1
- package/dist/modules/auth/index.js +3 -3
- package/dist/modules/billing/index.cjs +1 -0
- package/dist/modules/billing/index.cjs.map +1 -1
- package/dist/modules/billing/index.js +1 -1
- package/dist/modules/brainyrich/index.cjs +1 -0
- package/dist/modules/brainyrich/index.cjs.map +1 -1
- package/dist/modules/brainyrich/index.js +1 -1
- package/dist/modules/buildmyiq/index.cjs +1 -0
- package/dist/modules/buildmyiq/index.cjs.map +1 -1
- package/dist/modules/buildmyiq/index.js +1 -1
- package/dist/modules/channels/index.cjs +1 -0
- package/dist/modules/channels/index.cjs.map +1 -1
- package/dist/modules/channels/index.js +1 -1
- package/dist/modules/collabkin/index.cjs +1 -0
- package/dist/modules/collabkin/index.cjs.map +1 -1
- package/dist/modules/collabkin/index.js +1 -1
- package/dist/modules/comradecircle/index.cjs +1 -0
- package/dist/modules/comradecircle/index.cjs.map +1 -1
- package/dist/modules/comradecircle/index.js +1 -1
- package/dist/modules/conversations/index.cjs +1 -0
- package/dist/modules/conversations/index.cjs.map +1 -1
- package/dist/modules/conversations/index.js +1 -1
- package/dist/modules/coolandlovely/index.cjs +1 -0
- package/dist/modules/coolandlovely/index.cjs.map +1 -1
- package/dist/modules/coolandlovely/index.js +1 -1
- package/dist/modules/cosmicintersection/index.cjs +1 -0
- package/dist/modules/cosmicintersection/index.cjs.map +1 -1
- package/dist/modules/cosmicintersection/index.js +1 -1
- package/dist/modules/crewfoundry/index.cjs +1 -0
- package/dist/modules/crewfoundry/index.cjs.map +1 -1
- package/dist/modules/crewfoundry/index.js +1 -1
- package/dist/modules/devportal/index.cjs +1 -0
- package/dist/modules/devportal/index.cjs.map +1 -1
- package/dist/modules/devportal/index.js +1 -1
- package/dist/modules/ecoimpacthub/index.cjs +1 -0
- package/dist/modules/ecoimpacthub/index.cjs.map +1 -1
- package/dist/modules/ecoimpacthub/index.js +1 -1
- package/dist/modules/eventfullymanaged/index.cjs +1 -0
- package/dist/modules/eventfullymanaged/index.cjs.map +1 -1
- package/dist/modules/eventfullymanaged/index.js +1 -1
- package/dist/modules/export/index.cjs +1 -0
- package/dist/modules/export/index.cjs.map +1 -1
- package/dist/modules/export/index.js +1 -1
- package/dist/modules/files/index.cjs +1 -0
- package/dist/modules/files/index.cjs.map +1 -1
- package/dist/modules/files/index.js +1 -1
- package/dist/modules/fluidgrids/index.cjs +1 -0
- package/dist/modules/fluidgrids/index.cjs.map +1 -1
- package/dist/modules/fluidgrids/index.js +1 -1
- package/dist/modules/ggnomad/index.cjs +1 -0
- package/dist/modules/ggnomad/index.cjs.map +1 -1
- package/dist/modules/ggnomad/index.js +1 -1
- package/dist/modules/govcitizenhub/index.cjs +1 -0
- package/dist/modules/govcitizenhub/index.cjs.map +1 -1
- package/dist/modules/govcitizenhub/index.js +1 -1
- package/dist/modules/groups/index.cjs +1 -0
- package/dist/modules/groups/index.cjs.map +1 -1
- package/dist/modules/groups/index.js +1 -1
- package/dist/modules/headshotmarketing/index.cjs +1 -0
- package/dist/modules/headshotmarketing/index.cjs.map +1 -1
- package/dist/modules/headshotmarketing/index.js +1 -1
- package/dist/modules/health/index.cjs +1 -0
- package/dist/modules/health/index.cjs.map +1 -1
- package/dist/modules/health/index.js +1 -1
- package/dist/modules/healthybowl/index.cjs +1 -0
- package/dist/modules/healthybowl/index.cjs.map +1 -1
- package/dist/modules/healthybowl/index.js +1 -1
- package/dist/modules/hookmovies/index.cjs +1 -0
- package/dist/modules/hookmovies/index.cjs.map +1 -1
- package/dist/modules/hookmovies/index.js +1 -1
- package/dist/modules/housingvista/index.cjs +1 -0
- package/dist/modules/housingvista/index.cjs.map +1 -1
- package/dist/modules/housingvista/index.js +1 -1
- package/dist/modules/integrations/index.cjs +1 -0
- package/dist/modules/integrations/index.cjs.map +1 -1
- package/dist/modules/integrations/index.js +1 -1
- package/dist/modules/intelwatchtower/index.cjs +1 -0
- package/dist/modules/intelwatchtower/index.cjs.map +1 -1
- package/dist/modules/intelwatchtower/index.js +1 -1
- package/dist/modules/kadaikodi/index.cjs +1 -0
- package/dist/modules/kadaikodi/index.cjs.map +1 -1
- package/dist/modules/kadaikodi/index.js +1 -1
- package/dist/modules/labsofscience/index.cjs +1 -0
- package/dist/modules/labsofscience/index.cjs.map +1 -1
- package/dist/modules/labsofscience/index.js +1 -1
- package/dist/modules/manufacturedops/index.cjs +1 -0
- package/dist/modules/manufacturedops/index.cjs.map +1 -1
- package/dist/modules/manufacturedops/index.js +1 -1
- package/dist/modules/movethewheels/index.cjs +1 -0
- package/dist/modules/movethewheels/index.cjs.map +1 -1
- package/dist/modules/movethewheels/index.js +1 -1
- package/dist/modules/mybodyshield/index.cjs +1 -0
- package/dist/modules/mybodyshield/index.cjs.map +1 -1
- package/dist/modules/mybodyshield/index.js +1 -1
- package/dist/modules/notifications/index.cjs +1 -0
- package/dist/modules/notifications/index.cjs.map +1 -1
- package/dist/modules/notifications/index.js +1 -1
- package/dist/modules/organizations/index.cjs +1 -0
- package/dist/modules/organizations/index.cjs.map +1 -1
- package/dist/modules/organizations/index.js +1 -1
- package/dist/modules/planmagnet/index.js +1 -1
- package/dist/modules/products/index.cjs +1 -0
- package/dist/modules/products/index.cjs.map +1 -1
- package/dist/modules/products/index.js +1 -1
- package/dist/modules/proserviceworld/index.cjs +1 -0
- package/dist/modules/proserviceworld/index.cjs.map +1 -1
- package/dist/modules/proserviceworld/index.js +1 -1
- package/dist/modules/rbac/index.cjs +1 -0
- package/dist/modules/rbac/index.cjs.map +1 -1
- package/dist/modules/rbac/index.js +1 -1
- package/dist/modules/sandbox/index.cjs +1 -0
- package/dist/modules/sandbox/index.cjs.map +1 -1
- package/dist/modules/sandbox/index.js +1 -1
- package/dist/modules/scheduler/index.cjs +1 -0
- package/dist/modules/scheduler/index.cjs.map +1 -1
- package/dist/modules/scheduler/index.js +1 -1
- package/dist/modules/security/index.cjs +1 -0
- package/dist/modules/security/index.cjs.map +1 -1
- package/dist/modules/security/index.js +1 -1
- package/dist/modules/semanticfed/index.cjs +1 -0
- package/dist/modules/semanticfed/index.cjs.map +1 -1
- package/dist/modules/semanticfed/index.js +1 -1
- package/dist/modules/store/index.cjs +1 -0
- package/dist/modules/store/index.cjs.map +1 -1
- package/dist/modules/store/index.js +1 -1
- package/dist/modules/subscriberbot/index.cjs +1 -0
- package/dist/modules/subscriberbot/index.cjs.map +1 -1
- package/dist/modules/subscriberbot/index.js +1 -1
- package/dist/modules/support/index.cjs +1 -0
- package/dist/modules/support/index.cjs.map +1 -1
- package/dist/modules/support/index.js +1 -1
- package/dist/modules/tags/index.cjs +1 -0
- package/dist/modules/tags/index.cjs.map +1 -1
- package/dist/modules/tags/index.js +1 -1
- package/dist/modules/technospam/index.cjs +1 -0
- package/dist/modules/technospam/index.cjs.map +1 -1
- package/dist/modules/technospam/index.js +1 -1
- package/dist/modules/theculturepost/index.cjs +1 -0
- package/dist/modules/theculturepost/index.cjs.map +1 -1
- package/dist/modules/theculturepost/index.js +1 -1
- package/dist/modules/theglobalfuel/index.cjs +1 -0
- package/dist/modules/theglobalfuel/index.cjs.map +1 -1
- package/dist/modules/theglobalfuel/index.js +1 -1
- package/dist/modules/timecampus/index.cjs +1 -0
- package/dist/modules/timecampus/index.cjs.map +1 -1
- package/dist/modules/timecampus/index.js +1 -1
- package/dist/modules/tours/index.cjs +1 -0
- package/dist/modules/tours/index.cjs.map +1 -1
- package/dist/modules/tours/index.js +1 -1
- package/dist/modules/vibecontrols/index.cjs +1 -0
- package/dist/modules/vibecontrols/index.cjs.map +1 -1
- package/dist/modules/vibecontrols/index.js +2 -2
- package/dist/modules/workspaces/index.cjs +1 -0
- package/dist/modules/workspaces/index.cjs.map +1 -1
- package/dist/modules/workspaces/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-FHXCNP2U.js.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -7,9 +7,9 @@ var graphqlRequest = require('graphql-request');
|
|
|
7
7
|
var fetch = require('cross-fetch');
|
|
8
8
|
var mcp_js = require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
9
9
|
var types_js = require('@modelcontextprotocol/sdk/types.js');
|
|
10
|
+
var crypto = require('crypto');
|
|
10
11
|
var zod = require('zod');
|
|
11
12
|
var stdio_js = require('@modelcontextprotocol/sdk/server/stdio.js');
|
|
12
|
-
var crypto = require('crypto');
|
|
13
13
|
var streamableHttp_js = require('@modelcontextprotocol/sdk/server/streamableHttp.js');
|
|
14
14
|
|
|
15
15
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
@@ -731,6 +731,56 @@ function inferReadOnlyHint(toolName) {
|
|
|
731
731
|
}
|
|
732
732
|
|
|
733
733
|
// src/core/tool-governance.ts
|
|
734
|
+
function canonicalJson(value, seen = /* @__PURE__ */ new Set()) {
|
|
735
|
+
if (value === null || value === void 0) return "null";
|
|
736
|
+
if (typeof value === "number") return Number.isFinite(value) ? JSON.stringify(value) : "null";
|
|
737
|
+
if (typeof value === "string" || typeof value === "boolean") return JSON.stringify(value);
|
|
738
|
+
if (typeof value === "bigint") return JSON.stringify(value.toString());
|
|
739
|
+
if (typeof value !== "object") return "null";
|
|
740
|
+
if (seen.has(value)) return "null";
|
|
741
|
+
seen.add(value);
|
|
742
|
+
try {
|
|
743
|
+
if (Array.isArray(value))
|
|
744
|
+
return `[${value.map((item) => canonicalJson(item, seen)).join(",")}]`;
|
|
745
|
+
const record = value;
|
|
746
|
+
const members = Object.keys(record).filter((key) => record[key] !== void 0).sort().map((key) => `${JSON.stringify(key)}:${canonicalJson(record[key], seen)}`);
|
|
747
|
+
return `{${members.join(",")}}`;
|
|
748
|
+
} finally {
|
|
749
|
+
seen.delete(value);
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
function toolArgsSha256(args) {
|
|
753
|
+
return crypto.createHash("sha256").update(canonicalJson(args), "utf8").digest("hex");
|
|
754
|
+
}
|
|
755
|
+
function isErrorResult(result) {
|
|
756
|
+
return typeof result === "object" && result !== null && result.isError === true;
|
|
757
|
+
}
|
|
758
|
+
function wrapAuditedHandler(name, handler, onToolCall) {
|
|
759
|
+
return async (...callbackArgs) => {
|
|
760
|
+
const started = Date.now();
|
|
761
|
+
const args = callbackArgs.length === 2 ? callbackArgs[0] : {};
|
|
762
|
+
const report = (status, error) => {
|
|
763
|
+
try {
|
|
764
|
+
onToolCall({
|
|
765
|
+
name,
|
|
766
|
+
argsSha256: toolArgsSha256(args),
|
|
767
|
+
status,
|
|
768
|
+
durationMs: Date.now() - started,
|
|
769
|
+
...error ? { error } : {}
|
|
770
|
+
});
|
|
771
|
+
} catch {
|
|
772
|
+
}
|
|
773
|
+
};
|
|
774
|
+
try {
|
|
775
|
+
const result = await handler(...callbackArgs);
|
|
776
|
+
report(isErrorResult(result) ? "error" : "ok");
|
|
777
|
+
return result;
|
|
778
|
+
} catch (error) {
|
|
779
|
+
report("error", error instanceof Error ? error.message : String(error));
|
|
780
|
+
throw error;
|
|
781
|
+
}
|
|
782
|
+
};
|
|
783
|
+
}
|
|
734
784
|
var CONFIRM_FIELD_DESCRIPTION = "Must be true to execute this destructive tool. The call is rejected (no changes made) if omitted or false.";
|
|
735
785
|
function resolveAnnotations(name, declared) {
|
|
736
786
|
const destructiveHint = declared?.destructiveHint ?? inferDestructiveHint(name);
|
|
@@ -765,10 +815,11 @@ function wrapServerWithToolGovernance(server, options = {}) {
|
|
|
765
815
|
const enforceConfirmation = options.enforceDestructiveConfirmation ?? false;
|
|
766
816
|
const target = server;
|
|
767
817
|
const originalRegisterTool = target.registerTool.bind(target);
|
|
768
|
-
|
|
818
|
+
const register = (name, config, handler) => {
|
|
769
819
|
const annotations = resolveAnnotations(name, config.annotations);
|
|
820
|
+
const audited = options.onToolCall ? wrapAuditedHandler(name, handler, options.onToolCall) : handler;
|
|
770
821
|
if (!enforceConfirmation || !annotations.destructiveHint) {
|
|
771
|
-
return originalRegisterTool(name, { ...config, annotations },
|
|
822
|
+
return originalRegisterTool(name, { ...config, annotations }, audited);
|
|
772
823
|
}
|
|
773
824
|
const gatedInputSchema = {
|
|
774
825
|
...config.inputSchema ?? {},
|
|
@@ -777,9 +828,16 @@ function wrapServerWithToolGovernance(server, options = {}) {
|
|
|
777
828
|
return originalRegisterTool(
|
|
778
829
|
name,
|
|
779
830
|
{ ...config, inputSchema: gatedInputSchema, annotations },
|
|
780
|
-
wrapDestructiveHandler(name,
|
|
831
|
+
wrapDestructiveHandler(name, audited)
|
|
781
832
|
);
|
|
782
833
|
};
|
|
834
|
+
target.registerTool = (name, config, handler) => {
|
|
835
|
+
const registered = register(name, config, handler);
|
|
836
|
+
if (options.toolFilter && !options.toolFilter(name)) {
|
|
837
|
+
registered?.disable?.();
|
|
838
|
+
}
|
|
839
|
+
return registered;
|
|
840
|
+
};
|
|
783
841
|
return server;
|
|
784
842
|
}
|
|
785
843
|
|
|
@@ -807,7 +865,9 @@ function createMcpServer(ctx, modules, opts) {
|
|
|
807
865
|
{ capabilities: toServerCapabilities(capabilities) }
|
|
808
866
|
);
|
|
809
867
|
wrapServerWithToolGovernance(server, {
|
|
810
|
-
enforceDestructiveConfirmation: opts.enforceDestructiveConfirmation
|
|
868
|
+
enforceDestructiveConfirmation: opts.enforceDestructiveConfirmation,
|
|
869
|
+
toolFilter: opts.toolFilter,
|
|
870
|
+
onToolCall: opts.onToolCall
|
|
811
871
|
});
|
|
812
872
|
ctx._internal.serverRef.current = server;
|
|
813
873
|
const inner = server.server ?? server;
|