@integrity-labs/agt-cli 0.28.990 → 0.28.992
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/bin/agt.js +5 -5
- package/dist/{chunk-TGCA3LTI.js → chunk-C72SNMP6.js} +26 -5
- package/dist/chunk-C72SNMP6.js.map +1 -0
- package/dist/{chunk-6KYXH6ZZ.js → chunk-NF7LESJA.js} +73 -6
- package/dist/chunk-NF7LESJA.js.map +1 -0
- package/dist/{chunk-P7B5IRH5.js → chunk-PNQCXCEY.js} +19 -8
- package/dist/chunk-PNQCXCEY.js.map +1 -0
- package/dist/{claude-pair-runtime-GQM26I3M.js → claude-pair-runtime-EVAYZI57.js} +2 -2
- package/dist/lib/manager-worker.js +33 -15
- package/dist/lib/manager-worker.js.map +1 -1
- package/dist/mcp/direct-chat-channel.js +15 -1
- package/dist/mcp/index.js +15 -1
- package/dist/mcp/origami.js +15 -1
- package/dist/mcp/remote-oauth-proxy.js +120 -29
- package/dist/mcp/slack-channel.js +15 -1
- package/dist/mcp/telegram-channel.js +15 -1
- package/dist/{persistent-session-PYYD53GZ.js → persistent-session-HBUVJYYR.js} +5 -3
- package/dist/{responsiveness-probe-JENZOOKG.js → responsiveness-probe-AIBA25OP.js} +3 -3
- package/dist/{session-auth-dead-BGXRQB27.js → session-auth-dead-XTMVOHUX.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-6KYXH6ZZ.js.map +0 -1
- package/dist/chunk-P7B5IRH5.js.map +0 -1
- package/dist/chunk-TGCA3LTI.js.map +0 -1
- /package/dist/{claude-pair-runtime-GQM26I3M.js.map → claude-pair-runtime-EVAYZI57.js.map} +0 -0
- /package/dist/{persistent-session-PYYD53GZ.js.map → persistent-session-HBUVJYYR.js.map} +0 -0
- /package/dist/{responsiveness-probe-JENZOOKG.js.map → responsiveness-probe-AIBA25OP.js.map} +0 -0
- /package/dist/{session-auth-dead-BGXRQB27.js.map → session-auth-dead-XTMVOHUX.js.map} +0 -0
|
@@ -33253,7 +33253,21 @@ var REMOTE_MCP_PROXY_ENV = {
|
|
|
33253
33253
|
// success. Deliberately NOT in REMOTE_MCP_AUTH_ENV_KEYS: it shapes which calls
|
|
33254
33254
|
// we forward, not what an outbound request looks like, so the probe (which
|
|
33255
33255
|
// never issues a tools/call) has nothing to reconstruct from it.
|
|
33256
|
-
argRejects: "AGT_REMOTE_MCP_ARG_REJECTS"
|
|
33256
|
+
argRejects: "AGT_REMOTE_MCP_ARG_REJECTS",
|
|
33257
|
+
// ENG-10614: the per-tool HITL floor table, as JSON `{ "<tool>": "<tier>" }`.
|
|
33258
|
+
//
|
|
33259
|
+
// WHY THIS EXISTS AT ALL. A hosted API-key remote MCP is called by Claude Code
|
|
33260
|
+
// straight at the vendor, so none of the three brokered HITL gates
|
|
33261
|
+
// (`enforceComposioHitlGate`, `hitlGateForBrokerCall`, the CLI lane) is in the
|
|
33262
|
+
// path, and `tool_definitions.min_hitl_tier` was read by nothing on this lane
|
|
33263
|
+
// — measured: zero hits for that column under `packages/core/src/provisioning`,
|
|
33264
|
+
// `packages/mcp/src` or `apps/cli/src`. The catalog said `delete_item` needed
|
|
33265
|
+
// approval and the call went straight out.
|
|
33266
|
+
//
|
|
33267
|
+
// Deliberately NOT in REMOTE_MCP_AUTH_ENV_KEYS, for the same reason as
|
|
33268
|
+
// `argRejects`: it shapes WHICH calls we forward, not what an outbound request
|
|
33269
|
+
// looks like, so the connectivity probe has nothing to reconstruct from it.
|
|
33270
|
+
toolTiers: "AGT_REMOTE_MCP_TOOL_TIERS"
|
|
33257
33271
|
};
|
|
33258
33272
|
var REMOTE_MCP_AUTH_ENV_KEYS = [
|
|
33259
33273
|
REMOTE_MCP_PROXY_ENV.tokenVar,
|
package/dist/mcp/index.js
CHANGED
|
@@ -25835,7 +25835,21 @@ var REMOTE_MCP_PROXY_ENV = {
|
|
|
25835
25835
|
// success. Deliberately NOT in REMOTE_MCP_AUTH_ENV_KEYS: it shapes which calls
|
|
25836
25836
|
// we forward, not what an outbound request looks like, so the probe (which
|
|
25837
25837
|
// never issues a tools/call) has nothing to reconstruct from it.
|
|
25838
|
-
argRejects: "AGT_REMOTE_MCP_ARG_REJECTS"
|
|
25838
|
+
argRejects: "AGT_REMOTE_MCP_ARG_REJECTS",
|
|
25839
|
+
// ENG-10614: the per-tool HITL floor table, as JSON `{ "<tool>": "<tier>" }`.
|
|
25840
|
+
//
|
|
25841
|
+
// WHY THIS EXISTS AT ALL. A hosted API-key remote MCP is called by Claude Code
|
|
25842
|
+
// straight at the vendor, so none of the three brokered HITL gates
|
|
25843
|
+
// (`enforceComposioHitlGate`, `hitlGateForBrokerCall`, the CLI lane) is in the
|
|
25844
|
+
// path, and `tool_definitions.min_hitl_tier` was read by nothing on this lane
|
|
25845
|
+
// — measured: zero hits for that column under `packages/core/src/provisioning`,
|
|
25846
|
+
// `packages/mcp/src` or `apps/cli/src`. The catalog said `delete_item` needed
|
|
25847
|
+
// approval and the call went straight out.
|
|
25848
|
+
//
|
|
25849
|
+
// Deliberately NOT in REMOTE_MCP_AUTH_ENV_KEYS, for the same reason as
|
|
25850
|
+
// `argRejects`: it shapes WHICH calls we forward, not what an outbound request
|
|
25851
|
+
// looks like, so the connectivity probe has nothing to reconstruct from it.
|
|
25852
|
+
toolTiers: "AGT_REMOTE_MCP_TOOL_TIERS"
|
|
25839
25853
|
};
|
|
25840
25854
|
var REMOTE_MCP_AUTH_ENV_KEYS = [
|
|
25841
25855
|
REMOTE_MCP_PROXY_ENV.tokenVar,
|
package/dist/mcp/origami.js
CHANGED
|
@@ -39986,7 +39986,21 @@ var REMOTE_MCP_PROXY_ENV = {
|
|
|
39986
39986
|
// success. Deliberately NOT in REMOTE_MCP_AUTH_ENV_KEYS: it shapes which calls
|
|
39987
39987
|
// we forward, not what an outbound request looks like, so the probe (which
|
|
39988
39988
|
// never issues a tools/call) has nothing to reconstruct from it.
|
|
39989
|
-
argRejects: "AGT_REMOTE_MCP_ARG_REJECTS"
|
|
39989
|
+
argRejects: "AGT_REMOTE_MCP_ARG_REJECTS",
|
|
39990
|
+
// ENG-10614: the per-tool HITL floor table, as JSON `{ "<tool>": "<tier>" }`.
|
|
39991
|
+
//
|
|
39992
|
+
// WHY THIS EXISTS AT ALL. A hosted API-key remote MCP is called by Claude Code
|
|
39993
|
+
// straight at the vendor, so none of the three brokered HITL gates
|
|
39994
|
+
// (`enforceComposioHitlGate`, `hitlGateForBrokerCall`, the CLI lane) is in the
|
|
39995
|
+
// path, and `tool_definitions.min_hitl_tier` was read by nothing on this lane
|
|
39996
|
+
// — measured: zero hits for that column under `packages/core/src/provisioning`,
|
|
39997
|
+
// `packages/mcp/src` or `apps/cli/src`. The catalog said `delete_item` needed
|
|
39998
|
+
// approval and the call went straight out.
|
|
39999
|
+
//
|
|
40000
|
+
// Deliberately NOT in REMOTE_MCP_AUTH_ENV_KEYS, for the same reason as
|
|
40001
|
+
// `argRejects`: it shapes WHICH calls we forward, not what an outbound request
|
|
40002
|
+
// looks like, so the connectivity probe has nothing to reconstruct from it.
|
|
40003
|
+
toolTiers: "AGT_REMOTE_MCP_TOOL_TIERS"
|
|
39990
40004
|
};
|
|
39991
40005
|
var REMOTE_MCP_AUTH_ENV_KEYS = [
|
|
39992
40006
|
REMOTE_MCP_PROXY_ENV.tokenVar,
|
|
@@ -24,7 +24,21 @@ var REMOTE_MCP_PROXY_ENV = {
|
|
|
24
24
|
// success. Deliberately NOT in REMOTE_MCP_AUTH_ENV_KEYS: it shapes which calls
|
|
25
25
|
// we forward, not what an outbound request looks like, so the probe (which
|
|
26
26
|
// never issues a tools/call) has nothing to reconstruct from it.
|
|
27
|
-
argRejects: "AGT_REMOTE_MCP_ARG_REJECTS"
|
|
27
|
+
argRejects: "AGT_REMOTE_MCP_ARG_REJECTS",
|
|
28
|
+
// ENG-10614: the per-tool HITL floor table, as JSON `{ "<tool>": "<tier>" }`.
|
|
29
|
+
//
|
|
30
|
+
// WHY THIS EXISTS AT ALL. A hosted API-key remote MCP is called by Claude Code
|
|
31
|
+
// straight at the vendor, so none of the three brokered HITL gates
|
|
32
|
+
// (`enforceComposioHitlGate`, `hitlGateForBrokerCall`, the CLI lane) is in the
|
|
33
|
+
// path, and `tool_definitions.min_hitl_tier` was read by nothing on this lane
|
|
34
|
+
// — measured: zero hits for that column under `packages/core/src/provisioning`,
|
|
35
|
+
// `packages/mcp/src` or `apps/cli/src`. The catalog said `delete_item` needed
|
|
36
|
+
// approval and the call went straight out.
|
|
37
|
+
//
|
|
38
|
+
// Deliberately NOT in REMOTE_MCP_AUTH_ENV_KEYS, for the same reason as
|
|
39
|
+
// `argRejects`: it shapes WHICH calls we forward, not what an outbound request
|
|
40
|
+
// looks like, so the connectivity probe has nothing to reconstruct from it.
|
|
41
|
+
toolTiers: "AGT_REMOTE_MCP_TOOL_TIERS"
|
|
28
42
|
};
|
|
29
43
|
var REMOTE_MCP_AUTH_ENV_KEYS = [
|
|
30
44
|
REMOTE_MCP_PROXY_ENV.tokenVar,
|
|
@@ -75,6 +89,7 @@ var TOKEN_VAR_ENV = REMOTE_MCP_PROXY_ENV.tokenVar;
|
|
|
75
89
|
var ALLOWLIST_ENV = REMOTE_MCP_PROXY_ENV.toolAllowlist;
|
|
76
90
|
var PREENABLE_ENV = REMOTE_MCP_PROXY_ENV.preEnableToolsets;
|
|
77
91
|
var ARG_REJECTS_ENV = REMOTE_MCP_PROXY_ENV.argRejects;
|
|
92
|
+
var TOOL_TIERS_ENV = REMOTE_MCP_PROXY_ENV.toolTiers;
|
|
78
93
|
var REMOTE_FETCH_TIMEOUT_MS = 3e4;
|
|
79
94
|
var remoteUrl = process.env[URL_ENV] ?? "";
|
|
80
95
|
var tokenFile = process.env[TOKEN_FILE_ENV] ?? "";
|
|
@@ -83,6 +98,7 @@ var label = process.env[REMOTE_MCP_PROXY_ENV.label] || tokenVar || "remote-oauth
|
|
|
83
98
|
var toolAllowlist = parseToolAllowlist(process.env[ALLOWLIST_ENV] ?? "");
|
|
84
99
|
var preEnableToolsets = parsePreEnableToolsets(process.env[PREENABLE_ENV] ?? "");
|
|
85
100
|
var argRejects = parseArgRejects(process.env[ARG_REJECTS_ENV] ?? "");
|
|
101
|
+
var toolTiers = parseToolTiers(process.env[TOOL_TIERS_ENV]);
|
|
86
102
|
var { authHeader: authHeaderName, extras: extraHeaderSpecs } = readRemoteMcpAuthConfig(process.env);
|
|
87
103
|
function logErr(msg) {
|
|
88
104
|
process.stderr.write(`[remote-oauth-proxy:${label}] ${msg}
|
|
@@ -300,7 +316,40 @@ function isToolArgRejected(method, params, rules) {
|
|
|
300
316
|
}
|
|
301
317
|
return none;
|
|
302
318
|
}
|
|
303
|
-
|
|
319
|
+
var AUTO_EXECUTE_TIERS = /* @__PURE__ */ new Set(["read", "write"]);
|
|
320
|
+
function parseToolTiers(raw) {
|
|
321
|
+
if (raw === void 0 || raw.trim() === "") return { kind: "absent" };
|
|
322
|
+
let parsed;
|
|
323
|
+
try {
|
|
324
|
+
parsed = JSON.parse(raw);
|
|
325
|
+
} catch (err) {
|
|
326
|
+
return { kind: "unusable", detail: `not valid JSON (${err.message})` };
|
|
327
|
+
}
|
|
328
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
329
|
+
return { kind: "unusable", detail: "not a JSON object of tool -> tier" };
|
|
330
|
+
}
|
|
331
|
+
const tiers = /* @__PURE__ */ new Map();
|
|
332
|
+
for (const [tool, tier] of Object.entries(parsed)) {
|
|
333
|
+
if (typeof tier !== "string" || tier === "") {
|
|
334
|
+
return { kind: "unusable", detail: `tool "${tool}" has a non-string tier` };
|
|
335
|
+
}
|
|
336
|
+
tiers.set(tool, tier);
|
|
337
|
+
}
|
|
338
|
+
return { kind: "table", tiers };
|
|
339
|
+
}
|
|
340
|
+
function isToolCallTierGated(method, params, table) {
|
|
341
|
+
const none = { gated: false, name: "", tier: null, reason: null };
|
|
342
|
+
if (method !== "tools/call") return none;
|
|
343
|
+
if (table.kind === "absent") return none;
|
|
344
|
+
const name = params && typeof params === "object" && typeof params.name === "string" ? params.name : "";
|
|
345
|
+
if (table.kind === "unusable") return { gated: true, name, tier: null, reason: "unusable" };
|
|
346
|
+
if (!name) return { gated: true, name: "", tier: null, reason: "unknown" };
|
|
347
|
+
const tier = table.tiers.get(name);
|
|
348
|
+
if (tier === void 0) return { gated: true, name, tier: null, reason: "unknown" };
|
|
349
|
+
if (AUTO_EXECUTE_TIERS.has(tier)) return { gated: false, name, tier, reason: null };
|
|
350
|
+
return { gated: true, name, tier, reason: "gated" };
|
|
351
|
+
}
|
|
352
|
+
function callRefusal(method, params, allow, rules, label2, tiers) {
|
|
304
353
|
const block = isToolCallBlocked(method, params, allow);
|
|
305
354
|
if (block.blocked) {
|
|
306
355
|
return {
|
|
@@ -309,6 +358,30 @@ function callRefusal(method, params, allow, rules, label2) {
|
|
|
309
358
|
message: `${label2}: tool "${block.name}" is not enabled for this integration`
|
|
310
359
|
};
|
|
311
360
|
}
|
|
361
|
+
const tierCheck = isToolCallTierGated(method, params, tiers);
|
|
362
|
+
if (tierCheck.gated) {
|
|
363
|
+
const named = tierCheck.name || "(unnamed)";
|
|
364
|
+
const code = -32001;
|
|
365
|
+
if (tierCheck.reason === "unusable") {
|
|
366
|
+
return {
|
|
367
|
+
log: `refused tools/call "${named}": ${TOOL_TIERS_ENV} is set but unusable (${tiers.kind === "unusable" ? tiers.detail : "unknown"}), refusing every call`,
|
|
368
|
+
code,
|
|
369
|
+
message: `${label2}: this integration's approval-tier table could not be read, so every tool call is refused rather than forwarded un-gated. Nothing was sent to the remote. Ask your operator to re-provision this agent.`
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
if (tierCheck.reason === "unknown") {
|
|
373
|
+
return {
|
|
374
|
+
log: `refused tools/call "${named}": no catalogued HITL tier`,
|
|
375
|
+
code,
|
|
376
|
+
message: `${label2}: "${named}" has no approval tier in the catalog, so it is refused rather than run un-gated. Nothing was sent to the remote. The catalog covers the tools in this integration's curated scopes, so a name outside them is unclassified rather than necessarily new - ask your operator to seed a tool_definitions row for it.`
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
return {
|
|
380
|
+
log: `refused tools/call "${named}": tier ${tierCheck.tier} requires human approval, which this lane cannot yet file`,
|
|
381
|
+
code,
|
|
382
|
+
message: `${label2}: "${named}" is catalogued ${tierCheck.tier}, which requires human approval. Nothing was sent to the remote. This lane cannot file an approval yet, so the call is refused rather than executed un-approved - if you need it, ask a human to run it or to lower the tool's tier.`
|
|
383
|
+
};
|
|
384
|
+
}
|
|
312
385
|
const argReject = isToolArgRejected(method, params, rules);
|
|
313
386
|
if (argReject.rejected) {
|
|
314
387
|
return {
|
|
@@ -555,43 +628,57 @@ function isMissingConfig() {
|
|
|
555
628
|
if (!tokenVar) return TOKEN_VAR_ENV;
|
|
556
629
|
return null;
|
|
557
630
|
}
|
|
631
|
+
function handleInboundLine(line, deps) {
|
|
632
|
+
const { writeReplies, inflight } = deps;
|
|
633
|
+
const text = line.trim();
|
|
634
|
+
if (!text) return;
|
|
635
|
+
let parsed;
|
|
636
|
+
try {
|
|
637
|
+
parsed = JSON.parse(text);
|
|
638
|
+
} catch {
|
|
639
|
+
logErr("dropping non-JSON stdin line");
|
|
640
|
+
return;
|
|
641
|
+
}
|
|
642
|
+
const isNotification = !("id" in parsed);
|
|
643
|
+
const id = parsed.id;
|
|
644
|
+
const refusal = callRefusal(parsed.method, parsed.params, toolAllowlist, argRejects, label, toolTiers);
|
|
645
|
+
if (refusal) {
|
|
646
|
+
logErr(isNotification ? `${refusal.log} (notification, no reply sent)` : refusal.log);
|
|
647
|
+
if (isNotification) return;
|
|
648
|
+
const task2 = writeReplies([jsonRpcError(id, refusal.code, refusal.message)]).catch(
|
|
649
|
+
(err) => logErr(`handler error: ${err.message}`)
|
|
650
|
+
);
|
|
651
|
+
inflight.add(task2);
|
|
652
|
+
void task2.finally(() => inflight.delete(task2));
|
|
653
|
+
return;
|
|
654
|
+
}
|
|
655
|
+
const task = forward(text, id, isNotification, parsed.method, parsed.params).then(writeReplies).catch((err) => {
|
|
656
|
+
logErr(`handler error: ${err.message}`);
|
|
657
|
+
});
|
|
658
|
+
inflight.add(task);
|
|
659
|
+
void task.finally(() => inflight.delete(task));
|
|
660
|
+
}
|
|
558
661
|
async function main() {
|
|
559
662
|
const missing = isMissingConfig();
|
|
560
663
|
if (missing) {
|
|
561
664
|
logErr(`missing required env ${missing}; exiting`);
|
|
562
665
|
process.exit(1);
|
|
563
666
|
}
|
|
667
|
+
if (toolTiers.kind === "absent") {
|
|
668
|
+
logErr(`no ${TOOL_TIERS_ENV} set: tool calls are NOT gated by catalogued HITL tier`);
|
|
669
|
+
} else if (toolTiers.kind === "unusable") {
|
|
670
|
+
logErr(`${TOOL_TIERS_ENV} is set but unusable (${toolTiers.detail}); refusing every tools/call`);
|
|
671
|
+
} else {
|
|
672
|
+
const gated = [...toolTiers.tiers.entries()].filter(([, t]) => !AUTO_EXECUTE_TIERS.has(t));
|
|
673
|
+
logErr(
|
|
674
|
+
`tier gate active: ${toolTiers.tiers.size} catalogued tools, ${gated.length} require approval` + (gated.length > 0 ? ` (${gated.map(([n, t]) => `${n}=${t}`).join(", ")})` : "")
|
|
675
|
+
);
|
|
676
|
+
}
|
|
564
677
|
const rl = createInterface({ input: process.stdin, crlfDelay: Infinity });
|
|
565
678
|
const writeReplies = createStdoutReplyWriter();
|
|
566
679
|
const inflight = /* @__PURE__ */ new Set();
|
|
567
680
|
rl.on("line", (line) => {
|
|
568
|
-
|
|
569
|
-
if (!text) return;
|
|
570
|
-
let parsed;
|
|
571
|
-
try {
|
|
572
|
-
parsed = JSON.parse(text);
|
|
573
|
-
} catch {
|
|
574
|
-
logErr("dropping non-JSON stdin line");
|
|
575
|
-
return;
|
|
576
|
-
}
|
|
577
|
-
const isNotification = !("id" in parsed);
|
|
578
|
-
const id = parsed.id;
|
|
579
|
-
const refusal = callRefusal(parsed.method, parsed.params, toolAllowlist, argRejects, label);
|
|
580
|
-
if (refusal) {
|
|
581
|
-
logErr(isNotification ? `${refusal.log} (notification, no reply sent)` : refusal.log);
|
|
582
|
-
if (isNotification) return;
|
|
583
|
-
const task2 = writeReplies([jsonRpcError(id, refusal.code, refusal.message)]).catch(
|
|
584
|
-
(err) => logErr(`handler error: ${err.message}`)
|
|
585
|
-
);
|
|
586
|
-
inflight.add(task2);
|
|
587
|
-
void task2.finally(() => inflight.delete(task2));
|
|
588
|
-
return;
|
|
589
|
-
}
|
|
590
|
-
const task = forward(text, id, isNotification, parsed.method, parsed.params).then(writeReplies).catch((err) => {
|
|
591
|
-
logErr(`handler error: ${err.message}`);
|
|
592
|
-
});
|
|
593
|
-
inflight.add(task);
|
|
594
|
-
void task.finally(() => inflight.delete(task));
|
|
681
|
+
handleInboundLine(line, { writeReplies, inflight });
|
|
595
682
|
});
|
|
596
683
|
await new Promise((resolve) => rl.on("close", () => resolve()));
|
|
597
684
|
await Promise.all([...inflight]);
|
|
@@ -611,6 +698,7 @@ if (invokedDirectly) {
|
|
|
611
698
|
}
|
|
612
699
|
export {
|
|
613
700
|
ACTIVATION_TOOL,
|
|
701
|
+
AUTO_EXECUTE_TIERS,
|
|
614
702
|
activationRefusalMessage,
|
|
615
703
|
awaitDrain,
|
|
616
704
|
buildEnableToolsetRequest,
|
|
@@ -625,16 +713,19 @@ export {
|
|
|
625
713
|
extractToolsArray,
|
|
626
714
|
filterToolsListMessage,
|
|
627
715
|
forward,
|
|
716
|
+
handleInboundLine,
|
|
628
717
|
handleStdoutWriteFailure,
|
|
629
718
|
isManagedActivationCall,
|
|
630
719
|
isToolArgRejected,
|
|
631
720
|
isToolCallBlocked,
|
|
721
|
+
isToolCallTierGated,
|
|
632
722
|
main,
|
|
633
723
|
parseArgRejects,
|
|
634
724
|
parseEnableToolsetResponse,
|
|
635
725
|
parseExtraHeaders,
|
|
636
726
|
parsePreEnableToolsets,
|
|
637
727
|
parseToolAllowlist,
|
|
728
|
+
parseToolTiers,
|
|
638
729
|
readCurrentToken,
|
|
639
730
|
stripActivationTool,
|
|
640
731
|
toolName,
|
|
@@ -34203,7 +34203,21 @@ var REMOTE_MCP_PROXY_ENV = {
|
|
|
34203
34203
|
// success. Deliberately NOT in REMOTE_MCP_AUTH_ENV_KEYS: it shapes which calls
|
|
34204
34204
|
// we forward, not what an outbound request looks like, so the probe (which
|
|
34205
34205
|
// never issues a tools/call) has nothing to reconstruct from it.
|
|
34206
|
-
argRejects: "AGT_REMOTE_MCP_ARG_REJECTS"
|
|
34206
|
+
argRejects: "AGT_REMOTE_MCP_ARG_REJECTS",
|
|
34207
|
+
// ENG-10614: the per-tool HITL floor table, as JSON `{ "<tool>": "<tier>" }`.
|
|
34208
|
+
//
|
|
34209
|
+
// WHY THIS EXISTS AT ALL. A hosted API-key remote MCP is called by Claude Code
|
|
34210
|
+
// straight at the vendor, so none of the three brokered HITL gates
|
|
34211
|
+
// (`enforceComposioHitlGate`, `hitlGateForBrokerCall`, the CLI lane) is in the
|
|
34212
|
+
// path, and `tool_definitions.min_hitl_tier` was read by nothing on this lane
|
|
34213
|
+
// — measured: zero hits for that column under `packages/core/src/provisioning`,
|
|
34214
|
+
// `packages/mcp/src` or `apps/cli/src`. The catalog said `delete_item` needed
|
|
34215
|
+
// approval and the call went straight out.
|
|
34216
|
+
//
|
|
34217
|
+
// Deliberately NOT in REMOTE_MCP_AUTH_ENV_KEYS, for the same reason as
|
|
34218
|
+
// `argRejects`: it shapes WHICH calls we forward, not what an outbound request
|
|
34219
|
+
// looks like, so the connectivity probe has nothing to reconstruct from it.
|
|
34220
|
+
toolTiers: "AGT_REMOTE_MCP_TOOL_TIERS"
|
|
34207
34221
|
};
|
|
34208
34222
|
var REMOTE_MCP_AUTH_ENV_KEYS = [
|
|
34209
34223
|
REMOTE_MCP_PROXY_ENV.tokenVar,
|
|
@@ -34223,7 +34223,21 @@ var REMOTE_MCP_PROXY_ENV = {
|
|
|
34223
34223
|
// success. Deliberately NOT in REMOTE_MCP_AUTH_ENV_KEYS: it shapes which calls
|
|
34224
34224
|
// we forward, not what an outbound request looks like, so the probe (which
|
|
34225
34225
|
// never issues a tools/call) has nothing to reconstruct from it.
|
|
34226
|
-
argRejects: "AGT_REMOTE_MCP_ARG_REJECTS"
|
|
34226
|
+
argRejects: "AGT_REMOTE_MCP_ARG_REJECTS",
|
|
34227
|
+
// ENG-10614: the per-tool HITL floor table, as JSON `{ "<tool>": "<tier>" }`.
|
|
34228
|
+
//
|
|
34229
|
+
// WHY THIS EXISTS AT ALL. A hosted API-key remote MCP is called by Claude Code
|
|
34230
|
+
// straight at the vendor, so none of the three brokered HITL gates
|
|
34231
|
+
// (`enforceComposioHitlGate`, `hitlGateForBrokerCall`, the CLI lane) is in the
|
|
34232
|
+
// path, and `tool_definitions.min_hitl_tier` was read by nothing on this lane
|
|
34233
|
+
// — measured: zero hits for that column under `packages/core/src/provisioning`,
|
|
34234
|
+
// `packages/mcp/src` or `apps/cli/src`. The catalog said `delete_item` needed
|
|
34235
|
+
// approval and the call went straight out.
|
|
34236
|
+
//
|
|
34237
|
+
// Deliberately NOT in REMOTE_MCP_AUTH_ENV_KEYS, for the same reason as
|
|
34238
|
+
// `argRejects`: it shapes WHICH calls we forward, not what an outbound request
|
|
34239
|
+
// looks like, so the connectivity probe has nothing to reconstruct from it.
|
|
34240
|
+
toolTiers: "AGT_REMOTE_MCP_TOOL_TIERS"
|
|
34227
34241
|
};
|
|
34228
34242
|
var REMOTE_MCP_AUTH_ENV_KEYS = [
|
|
34229
34243
|
REMOTE_MCP_PROXY_ENV.tokenVar,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CLAUDE_HOST_WIDE,
|
|
3
|
+
CLAUDE_MANAGED_SETTINGS_DIR,
|
|
3
4
|
CLAUDE_NULLED_FILES,
|
|
4
5
|
CLAUDE_PER_AGENT_DIRS,
|
|
5
6
|
EGRESS_BASELINE_DOMAINS,
|
|
@@ -62,12 +63,13 @@ import {
|
|
|
62
63
|
writeDirectChatSessionState,
|
|
63
64
|
writeEgressAllowlist,
|
|
64
65
|
writePersistentClaudeWrapper
|
|
65
|
-
} from "./chunk-
|
|
66
|
-
import "./chunk-
|
|
66
|
+
} from "./chunk-NF7LESJA.js";
|
|
67
|
+
import "./chunk-C72SNMP6.js";
|
|
67
68
|
import "./chunk-DHWNVVX4.js";
|
|
68
69
|
import "./chunk-XWVM4KPK.js";
|
|
69
70
|
export {
|
|
70
71
|
CLAUDE_HOST_WIDE,
|
|
72
|
+
CLAUDE_MANAGED_SETTINGS_DIR,
|
|
71
73
|
CLAUDE_NULLED_FILES,
|
|
72
74
|
CLAUDE_PER_AGENT_DIRS,
|
|
73
75
|
EGRESS_BASELINE_DOMAINS,
|
|
@@ -131,4 +133,4 @@ export {
|
|
|
131
133
|
writeEgressAllowlist,
|
|
132
134
|
writePersistentClaudeWrapper
|
|
133
135
|
};
|
|
134
|
-
//# sourceMappingURL=persistent-session-
|
|
136
|
+
//# sourceMappingURL=persistent-session-HBUVJYYR.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-NF7LESJA.js";
|
|
4
|
+
import "./chunk-C72SNMP6.js";
|
|
5
5
|
import "./chunk-DHWNVVX4.js";
|
|
6
6
|
import "./chunk-XWVM4KPK.js";
|
|
7
7
|
|
|
@@ -800,4 +800,4 @@ export {
|
|
|
800
800
|
readAndResetSlackReplyBindingClassifications,
|
|
801
801
|
readAndResetSlackReplyTargetClassifications
|
|
802
802
|
};
|
|
803
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
803
|
+
//# sourceMappingURL=responsiveness-probe-AIBA25OP.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-C72SNMP6.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/session-auth-dead.ts
|
|
6
6
|
import { closeSync, openSync, readSync, readdirSync, statSync } from "fs";
|
|
@@ -203,4 +203,4 @@ export {
|
|
|
203
203
|
decideSessionAuthState,
|
|
204
204
|
probeSessionAuth
|
|
205
205
|
};
|
|
206
|
-
//# sourceMappingURL=session-auth-dead-
|
|
206
|
+
//# sourceMappingURL=session-auth-dead-XTMVOHUX.js.map
|