@integrity-labs/agt-cli 0.28.925 → 0.28.927

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.
@@ -100,7 +100,7 @@ async function spawnPairSession(session) {
100
100
  return { ok: true };
101
101
  } catch {
102
102
  }
103
- const { resolveClaudeBinary } = await import("./persistent-session-PKHXX4LZ.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-O3AKW6IW.js");
104
104
  const claudeBin = resolveClaudeBinary();
105
105
  const pairEnv = {
106
106
  ...process.env,
@@ -373,4 +373,4 @@ export {
373
373
  startClaudePair,
374
374
  submitClaudePairCode
375
375
  };
376
- //# sourceMappingURL=claude-pair-runtime-PVJNKWJC.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-RFY57WC3.js.map
@@ -63,7 +63,7 @@ import {
63
63
  safeWriteJsonAtomic,
64
64
  setConfigHash,
65
65
  tripClass
66
- } from "../chunk-BNEM6AZ6.js";
66
+ } from "../chunk-LWLTSFH3.js";
67
67
  import {
68
68
  getProjectDir as getProjectDir2,
69
69
  getReadyTasks,
@@ -136,7 +136,7 @@ import {
136
136
  takeZombieDetection,
137
137
  toOpencodeModel,
138
138
  writeEgressAllowlist
139
- } from "../chunk-6SKPDXGU.js";
139
+ } from "../chunk-NIUBYSLW.js";
140
140
  import {
141
141
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
142
142
  AnchorSessionClient,
@@ -231,7 +231,7 @@ import {
231
231
  subagentActivityAgeSeconds,
232
232
  sumTranscriptUsageInWindow,
233
233
  transcriptActivityAgeSeconds
234
- } from "../chunk-UBXUNYTR.js";
234
+ } from "../chunk-Y7ERASS6.js";
235
235
  import {
236
236
  reapOrphanChannelMcps
237
237
  } from "../chunk-XWVM4KPK.js";
@@ -13187,7 +13187,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
13187
13187
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
13188
13188
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
13189
13189
  async function channelInboundActivityAgeSecondsFor(codeName) {
13190
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-JX2TNGQ2.js");
13190
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-MIPUX3BG.js");
13191
13191
  const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
13192
13192
  if (newest === null) return null;
13193
13193
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -13872,7 +13872,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
13872
13872
  var lastVersionCheckAt = 0;
13873
13873
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
13874
13874
  var lastResponsivenessProbeAt = 0;
13875
- var agtCliVersion = true ? "0.28.925" : "dev";
13875
+ var agtCliVersion = true ? "0.28.927" : "dev";
13876
13876
  function resolveBrewPath(execFileSync2) {
13877
13877
  try {
13878
13878
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -15462,7 +15462,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
15462
15462
  if (codeNames.length === 0) return;
15463
15463
  void (async () => {
15464
15464
  try {
15465
- const { collectDiagnostics } = await import("../persistent-session-PKHXX4LZ.js");
15465
+ const { collectDiagnostics } = await import("../persistent-session-O3AKW6IW.js");
15466
15466
  await api.post("/host/heartbeat", {
15467
15467
  host_id: hostId,
15468
15468
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -15604,7 +15604,7 @@ async function pollCycleInner() {
15604
15604
  }
15605
15605
  try {
15606
15606
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
15607
- const { collectDiagnostics } = await import("../persistent-session-PKHXX4LZ.js");
15607
+ const { collectDiagnostics } = await import("../persistent-session-O3AKW6IW.js");
15608
15608
  const diagCodeNames = [...agentState.persistentSessionAgents];
15609
15609
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
15610
15610
  let tailscaleHostname;
@@ -15779,7 +15779,7 @@ async function pollCycleInner() {
15779
15779
  collectPanelessActivityProbes,
15780
15780
  getResponsivenessIntervalMs,
15781
15781
  occupancyQualificationClassifications
15782
- } = await import("../responsiveness-probe-JX2TNGQ2.js");
15782
+ } = await import("../responsiveness-probe-MIPUX3BG.js");
15783
15783
  const probeIntervalMs = getResponsivenessIntervalMs();
15784
15784
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
15785
15785
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -15896,7 +15896,7 @@ async function pollCycleInner() {
15896
15896
  collectResponsivenessProbes,
15897
15897
  livePendingInboundOldestAgeSeconds,
15898
15898
  parkPendingInbound
15899
- } = await import("../responsiveness-probe-JX2TNGQ2.js");
15899
+ } = await import("../responsiveness-probe-MIPUX3BG.js");
15900
15900
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
15901
15901
  const wedgeNow = /* @__PURE__ */ new Date();
15902
15902
  const liveAgents = agentState.persistentSessionAgents;
@@ -16052,7 +16052,7 @@ async function pollCycleInner() {
16052
16052
  }
16053
16053
  try {
16054
16054
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
16055
- const { probeSessionAuth } = await import("../session-auth-dead-2W2OFAZR.js");
16055
+ const { probeSessionAuth } = await import("../session-auth-dead-ZGZZLE4X.js");
16056
16056
  const observations = [];
16057
16057
  const pendingCacheCommits = [];
16058
16058
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -20316,7 +20316,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20316
20316
  try {
20317
20317
  const freshId = rotateSessionForWedge(codeName);
20318
20318
  consecutiveWedgeCycles.delete(codeName);
20319
- const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-JX2TNGQ2.js");
20319
+ const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-MIPUX3BG.js");
20320
20320
  const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
20321
20321
  const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
20322
20322
  const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
@@ -20359,7 +20359,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20359
20359
  void api.post("/host/restart-ack", { host_id: hostId, agent_id: agentId, restart_requested_at: requestedAt }).catch((err) => log(`[restart-lane] ack failed for '${codeName}': ${err.message}`));
20360
20360
  void (async () => {
20361
20361
  try {
20362
- const { collectDiagnostics } = await import("../persistent-session-PKHXX4LZ.js");
20362
+ const { collectDiagnostics } = await import("../persistent-session-O3AKW6IW.js");
20363
20363
  await api.post("/host/heartbeat", {
20364
20364
  host_id: hostId,
20365
20365
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20410,7 +20410,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
20410
20410
  }
20411
20411
  try {
20412
20412
  const hostId = await getHostId();
20413
- const { collectDiagnostics } = await import("../persistent-session-PKHXX4LZ.js");
20413
+ const { collectDiagnostics } = await import("../persistent-session-O3AKW6IW.js");
20414
20414
  await api.post("/host/heartbeat", {
20415
20415
  host_id: hostId,
20416
20416
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -21052,7 +21052,7 @@ async function processClaudePairSessions(agents) {
21052
21052
  killPairSession,
21053
21053
  pairTmuxSession,
21054
21054
  finalizeClaudePairOnboarding
21055
- } = await import("../claude-pair-runtime-PVJNKWJC.js");
21055
+ } = await import("../claude-pair-runtime-RFY57WC3.js");
21056
21056
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
21057
21057
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
21058
21058
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -32947,6 +32947,55 @@ OAUTH_PROVIDERS["xero-control-plane"] = {
32947
32947
  // ../core/dist/integrations/composio-account-probe.js
32948
32948
  var BODY_MAX_BYTES = 1024 * 1024;
32949
32949
 
32950
+ // ../core/dist/integrations/composio-approved-egress.json
32951
+ var composio_approved_egress_default = {
32952
+ $comment: [
32953
+ "ADR-0032 Part 3, gate item 2 + gate item 3 (ENG-9684). THE single recorded source",
32954
+ "for the addresses Composio's per-key IP allowlist is expected to hold. Read by BOTH",
32955
+ "scripts/fleet-egress-enum.sh (the operator's pre-arming instrument) and the",
32956
+ "ComposioEgressAddressDrift cron (the between-armings watch). They must agree, which",
32957
+ "is why neither carries its own copy.",
32958
+ "",
32959
+ "WHY A REPO FILE AND NOT SSM. Composio's allowlist has no read API, so its contents",
32960
+ "can never be queried - only inferred from a refusal. This file is therefore not a",
32961
+ "cache of vendor state; it is a DECLARATION of what a human pasted into a dashboard.",
32962
+ "A PR is the right ceremony for changing a security boundary nobody can read back.",
32963
+ "SSM would also hit registerCron's five-parameter grant scope (ENG-9940), where a",
32964
+ "sixth parameter fails silently.",
32965
+ "",
32966
+ "THE COMPARISON IS ON `ip` AND NOTHING ELSE. `seenAsGateway` is informational. A NAT",
32967
+ "rebuild that re-adopts the same EIP keeps egress correct while changing the gateway",
32968
+ "id, so comparing ids would red on the safe case - which is precisely the case Part 2's",
32969
+ "EIP adoption exists to create.",
32970
+ "",
32971
+ "WHEN ENG-9426 LANDS THIS GOES RED UNTIL IT IS UPDATED. That is the forcing function",
32972
+ "working, not a fault. ENG-9426 adds a NAT in ap-southeast-2b, i.e. a THIRD egress",
32973
+ "address: add it here in the same change that lands it, or the detector correctly",
32974
+ "reports that hosts are leaving from an address no key allows. Do not loosen the check."
32975
+ ],
32976
+ account: "711726113003",
32977
+ homeRegion: "ap-southeast-2",
32978
+ addresses: [
32979
+ {
32980
+ ip: "32.236.6.24",
32981
+ stage: "prod",
32982
+ seenAsGateway: "nat-00a3dac969c0641a6",
32983
+ note: "Prod hosts NAT. Measured 2026-09-12 (ENG-10392): 25 of 25 active prod host instances route 0.0.0.0/0 here."
32984
+ },
32985
+ {
32986
+ ip: "15.135.204.192",
32987
+ stage: "dev",
32988
+ seenAsGateway: "nat-01122e6efaf4c4eaa",
32989
+ note: "Dev-stage hosts NAT, same account. 2 instances measured 2026-09-12; their host rows live in the dev Supabase project."
32990
+ }
32991
+ ]
32992
+ };
32993
+
32994
+ // ../core/dist/integrations/composio-approved-egress.js
32995
+ var APPROVED_EGRESS_ACCOUNT = composio_approved_egress_default.account;
32996
+ var APPROVED_EGRESS_HOME_REGION = composio_approved_egress_default.homeRegion;
32997
+ var APPROVED_EGRESS_ADDRESSES = composio_approved_egress_default.addresses;
32998
+
32950
32999
  // ../core/dist/integrations/remote-mcp-proxy-env.js
32951
33000
  var REMOTE_MCP_PROXY_ENV = {
32952
33001
  url: "AGT_REMOTE_MCP_URL",
package/dist/mcp/index.js CHANGED
@@ -25548,6 +25548,55 @@ OAUTH_PROVIDERS["xero-control-plane"] = {
25548
25548
  // ../core/dist/integrations/composio-account-probe.js
25549
25549
  var BODY_MAX_BYTES = 1024 * 1024;
25550
25550
 
25551
+ // ../core/dist/integrations/composio-approved-egress.json
25552
+ var composio_approved_egress_default = {
25553
+ $comment: [
25554
+ "ADR-0032 Part 3, gate item 2 + gate item 3 (ENG-9684). THE single recorded source",
25555
+ "for the addresses Composio's per-key IP allowlist is expected to hold. Read by BOTH",
25556
+ "scripts/fleet-egress-enum.sh (the operator's pre-arming instrument) and the",
25557
+ "ComposioEgressAddressDrift cron (the between-armings watch). They must agree, which",
25558
+ "is why neither carries its own copy.",
25559
+ "",
25560
+ "WHY A REPO FILE AND NOT SSM. Composio's allowlist has no read API, so its contents",
25561
+ "can never be queried - only inferred from a refusal. This file is therefore not a",
25562
+ "cache of vendor state; it is a DECLARATION of what a human pasted into a dashboard.",
25563
+ "A PR is the right ceremony for changing a security boundary nobody can read back.",
25564
+ "SSM would also hit registerCron's five-parameter grant scope (ENG-9940), where a",
25565
+ "sixth parameter fails silently.",
25566
+ "",
25567
+ "THE COMPARISON IS ON `ip` AND NOTHING ELSE. `seenAsGateway` is informational. A NAT",
25568
+ "rebuild that re-adopts the same EIP keeps egress correct while changing the gateway",
25569
+ "id, so comparing ids would red on the safe case - which is precisely the case Part 2's",
25570
+ "EIP adoption exists to create.",
25571
+ "",
25572
+ "WHEN ENG-9426 LANDS THIS GOES RED UNTIL IT IS UPDATED. That is the forcing function",
25573
+ "working, not a fault. ENG-9426 adds a NAT in ap-southeast-2b, i.e. a THIRD egress",
25574
+ "address: add it here in the same change that lands it, or the detector correctly",
25575
+ "reports that hosts are leaving from an address no key allows. Do not loosen the check."
25576
+ ],
25577
+ account: "711726113003",
25578
+ homeRegion: "ap-southeast-2",
25579
+ addresses: [
25580
+ {
25581
+ ip: "32.236.6.24",
25582
+ stage: "prod",
25583
+ seenAsGateway: "nat-00a3dac969c0641a6",
25584
+ note: "Prod hosts NAT. Measured 2026-09-12 (ENG-10392): 25 of 25 active prod host instances route 0.0.0.0/0 here."
25585
+ },
25586
+ {
25587
+ ip: "15.135.204.192",
25588
+ stage: "dev",
25589
+ seenAsGateway: "nat-01122e6efaf4c4eaa",
25590
+ note: "Dev-stage hosts NAT, same account. 2 instances measured 2026-09-12; their host rows live in the dev Supabase project."
25591
+ }
25592
+ ]
25593
+ };
25594
+
25595
+ // ../core/dist/integrations/composio-approved-egress.js
25596
+ var APPROVED_EGRESS_ACCOUNT = composio_approved_egress_default.account;
25597
+ var APPROVED_EGRESS_HOME_REGION = composio_approved_egress_default.homeRegion;
25598
+ var APPROVED_EGRESS_ADDRESSES = composio_approved_egress_default.addresses;
25599
+
25551
25600
  // ../core/dist/integrations/remote-mcp-proxy-env.js
25552
25601
  var REMOTE_MCP_PROXY_ENV = {
25553
25602
  url: "AGT_REMOTE_MCP_URL",
@@ -39652,6 +39652,55 @@ OAUTH_PROVIDERS["xero-control-plane"] = {
39652
39652
  // ../core/dist/integrations/composio-account-probe.js
39653
39653
  var BODY_MAX_BYTES = 1024 * 1024;
39654
39654
 
39655
+ // ../core/dist/integrations/composio-approved-egress.json
39656
+ var composio_approved_egress_default = {
39657
+ $comment: [
39658
+ "ADR-0032 Part 3, gate item 2 + gate item 3 (ENG-9684). THE single recorded source",
39659
+ "for the addresses Composio's per-key IP allowlist is expected to hold. Read by BOTH",
39660
+ "scripts/fleet-egress-enum.sh (the operator's pre-arming instrument) and the",
39661
+ "ComposioEgressAddressDrift cron (the between-armings watch). They must agree, which",
39662
+ "is why neither carries its own copy.",
39663
+ "",
39664
+ "WHY A REPO FILE AND NOT SSM. Composio's allowlist has no read API, so its contents",
39665
+ "can never be queried - only inferred from a refusal. This file is therefore not a",
39666
+ "cache of vendor state; it is a DECLARATION of what a human pasted into a dashboard.",
39667
+ "A PR is the right ceremony for changing a security boundary nobody can read back.",
39668
+ "SSM would also hit registerCron's five-parameter grant scope (ENG-9940), where a",
39669
+ "sixth parameter fails silently.",
39670
+ "",
39671
+ "THE COMPARISON IS ON `ip` AND NOTHING ELSE. `seenAsGateway` is informational. A NAT",
39672
+ "rebuild that re-adopts the same EIP keeps egress correct while changing the gateway",
39673
+ "id, so comparing ids would red on the safe case - which is precisely the case Part 2's",
39674
+ "EIP adoption exists to create.",
39675
+ "",
39676
+ "WHEN ENG-9426 LANDS THIS GOES RED UNTIL IT IS UPDATED. That is the forcing function",
39677
+ "working, not a fault. ENG-9426 adds a NAT in ap-southeast-2b, i.e. a THIRD egress",
39678
+ "address: add it here in the same change that lands it, or the detector correctly",
39679
+ "reports that hosts are leaving from an address no key allows. Do not loosen the check."
39680
+ ],
39681
+ account: "711726113003",
39682
+ homeRegion: "ap-southeast-2",
39683
+ addresses: [
39684
+ {
39685
+ ip: "32.236.6.24",
39686
+ stage: "prod",
39687
+ seenAsGateway: "nat-00a3dac969c0641a6",
39688
+ note: "Prod hosts NAT. Measured 2026-09-12 (ENG-10392): 25 of 25 active prod host instances route 0.0.0.0/0 here."
39689
+ },
39690
+ {
39691
+ ip: "15.135.204.192",
39692
+ stage: "dev",
39693
+ seenAsGateway: "nat-01122e6efaf4c4eaa",
39694
+ note: "Dev-stage hosts NAT, same account. 2 instances measured 2026-09-12; their host rows live in the dev Supabase project."
39695
+ }
39696
+ ]
39697
+ };
39698
+
39699
+ // ../core/dist/integrations/composio-approved-egress.js
39700
+ var APPROVED_EGRESS_ACCOUNT = composio_approved_egress_default.account;
39701
+ var APPROVED_EGRESS_HOME_REGION = composio_approved_egress_default.homeRegion;
39702
+ var APPROVED_EGRESS_ADDRESSES = composio_approved_egress_default.addresses;
39703
+
39655
39704
  // ../core/dist/integrations/remote-mcp-proxy-env.js
39656
39705
  var REMOTE_MCP_PROXY_ENV = {
39657
39706
  url: "AGT_REMOTE_MCP_URL",
@@ -33892,6 +33892,55 @@ OAUTH_PROVIDERS["xero-control-plane"] = {
33892
33892
  // ../core/dist/integrations/composio-account-probe.js
33893
33893
  var BODY_MAX_BYTES = 1024 * 1024;
33894
33894
 
33895
+ // ../core/dist/integrations/composio-approved-egress.json
33896
+ var composio_approved_egress_default = {
33897
+ $comment: [
33898
+ "ADR-0032 Part 3, gate item 2 + gate item 3 (ENG-9684). THE single recorded source",
33899
+ "for the addresses Composio's per-key IP allowlist is expected to hold. Read by BOTH",
33900
+ "scripts/fleet-egress-enum.sh (the operator's pre-arming instrument) and the",
33901
+ "ComposioEgressAddressDrift cron (the between-armings watch). They must agree, which",
33902
+ "is why neither carries its own copy.",
33903
+ "",
33904
+ "WHY A REPO FILE AND NOT SSM. Composio's allowlist has no read API, so its contents",
33905
+ "can never be queried - only inferred from a refusal. This file is therefore not a",
33906
+ "cache of vendor state; it is a DECLARATION of what a human pasted into a dashboard.",
33907
+ "A PR is the right ceremony for changing a security boundary nobody can read back.",
33908
+ "SSM would also hit registerCron's five-parameter grant scope (ENG-9940), where a",
33909
+ "sixth parameter fails silently.",
33910
+ "",
33911
+ "THE COMPARISON IS ON `ip` AND NOTHING ELSE. `seenAsGateway` is informational. A NAT",
33912
+ "rebuild that re-adopts the same EIP keeps egress correct while changing the gateway",
33913
+ "id, so comparing ids would red on the safe case - which is precisely the case Part 2's",
33914
+ "EIP adoption exists to create.",
33915
+ "",
33916
+ "WHEN ENG-9426 LANDS THIS GOES RED UNTIL IT IS UPDATED. That is the forcing function",
33917
+ "working, not a fault. ENG-9426 adds a NAT in ap-southeast-2b, i.e. a THIRD egress",
33918
+ "address: add it here in the same change that lands it, or the detector correctly",
33919
+ "reports that hosts are leaving from an address no key allows. Do not loosen the check."
33920
+ ],
33921
+ account: "711726113003",
33922
+ homeRegion: "ap-southeast-2",
33923
+ addresses: [
33924
+ {
33925
+ ip: "32.236.6.24",
33926
+ stage: "prod",
33927
+ seenAsGateway: "nat-00a3dac969c0641a6",
33928
+ note: "Prod hosts NAT. Measured 2026-09-12 (ENG-10392): 25 of 25 active prod host instances route 0.0.0.0/0 here."
33929
+ },
33930
+ {
33931
+ ip: "15.135.204.192",
33932
+ stage: "dev",
33933
+ seenAsGateway: "nat-01122e6efaf4c4eaa",
33934
+ note: "Dev-stage hosts NAT, same account. 2 instances measured 2026-09-12; their host rows live in the dev Supabase project."
33935
+ }
33936
+ ]
33937
+ };
33938
+
33939
+ // ../core/dist/integrations/composio-approved-egress.js
33940
+ var APPROVED_EGRESS_ACCOUNT = composio_approved_egress_default.account;
33941
+ var APPROVED_EGRESS_HOME_REGION = composio_approved_egress_default.homeRegion;
33942
+ var APPROVED_EGRESS_ADDRESSES = composio_approved_egress_default.addresses;
33943
+
33895
33944
  // ../core/dist/integrations/remote-mcp-proxy-env.js
33896
33945
  var REMOTE_MCP_PROXY_ENV = {
33897
33946
  url: "AGT_REMOTE_MCP_URL",
@@ -33934,6 +33934,55 @@ OAUTH_PROVIDERS["xero-control-plane"] = {
33934
33934
  // ../core/dist/integrations/composio-account-probe.js
33935
33935
  var BODY_MAX_BYTES = 1024 * 1024;
33936
33936
 
33937
+ // ../core/dist/integrations/composio-approved-egress.json
33938
+ var composio_approved_egress_default = {
33939
+ $comment: [
33940
+ "ADR-0032 Part 3, gate item 2 + gate item 3 (ENG-9684). THE single recorded source",
33941
+ "for the addresses Composio's per-key IP allowlist is expected to hold. Read by BOTH",
33942
+ "scripts/fleet-egress-enum.sh (the operator's pre-arming instrument) and the",
33943
+ "ComposioEgressAddressDrift cron (the between-armings watch). They must agree, which",
33944
+ "is why neither carries its own copy.",
33945
+ "",
33946
+ "WHY A REPO FILE AND NOT SSM. Composio's allowlist has no read API, so its contents",
33947
+ "can never be queried - only inferred from a refusal. This file is therefore not a",
33948
+ "cache of vendor state; it is a DECLARATION of what a human pasted into a dashboard.",
33949
+ "A PR is the right ceremony for changing a security boundary nobody can read back.",
33950
+ "SSM would also hit registerCron's five-parameter grant scope (ENG-9940), where a",
33951
+ "sixth parameter fails silently.",
33952
+ "",
33953
+ "THE COMPARISON IS ON `ip` AND NOTHING ELSE. `seenAsGateway` is informational. A NAT",
33954
+ "rebuild that re-adopts the same EIP keeps egress correct while changing the gateway",
33955
+ "id, so comparing ids would red on the safe case - which is precisely the case Part 2's",
33956
+ "EIP adoption exists to create.",
33957
+ "",
33958
+ "WHEN ENG-9426 LANDS THIS GOES RED UNTIL IT IS UPDATED. That is the forcing function",
33959
+ "working, not a fault. ENG-9426 adds a NAT in ap-southeast-2b, i.e. a THIRD egress",
33960
+ "address: add it here in the same change that lands it, or the detector correctly",
33961
+ "reports that hosts are leaving from an address no key allows. Do not loosen the check."
33962
+ ],
33963
+ account: "711726113003",
33964
+ homeRegion: "ap-southeast-2",
33965
+ addresses: [
33966
+ {
33967
+ ip: "32.236.6.24",
33968
+ stage: "prod",
33969
+ seenAsGateway: "nat-00a3dac969c0641a6",
33970
+ note: "Prod hosts NAT. Measured 2026-09-12 (ENG-10392): 25 of 25 active prod host instances route 0.0.0.0/0 here."
33971
+ },
33972
+ {
33973
+ ip: "15.135.204.192",
33974
+ stage: "dev",
33975
+ seenAsGateway: "nat-01122e6efaf4c4eaa",
33976
+ note: "Dev-stage hosts NAT, same account. 2 instances measured 2026-09-12; their host rows live in the dev Supabase project."
33977
+ }
33978
+ ]
33979
+ };
33980
+
33981
+ // ../core/dist/integrations/composio-approved-egress.js
33982
+ var APPROVED_EGRESS_ACCOUNT = composio_approved_egress_default.account;
33983
+ var APPROVED_EGRESS_HOME_REGION = composio_approved_egress_default.homeRegion;
33984
+ var APPROVED_EGRESS_ADDRESSES = composio_approved_egress_default.addresses;
33985
+
33937
33986
  // ../core/dist/integrations/remote-mcp-proxy-env.js
33938
33987
  var REMOTE_MCP_PROXY_ENV = {
33939
33988
  url: "AGT_REMOTE_MCP_URL",
@@ -62,8 +62,8 @@ import {
62
62
  writeDirectChatSessionState,
63
63
  writeEgressAllowlist,
64
64
  writePersistentClaudeWrapper
65
- } from "./chunk-6SKPDXGU.js";
66
- import "./chunk-UBXUNYTR.js";
65
+ } from "./chunk-NIUBYSLW.js";
66
+ import "./chunk-Y7ERASS6.js";
67
67
  import "./chunk-XWVM4KPK.js";
68
68
  export {
69
69
  CLAUDE_HOST_WIDE,
@@ -130,4 +130,4 @@ export {
130
130
  writeEgressAllowlist,
131
131
  writePersistentClaudeWrapper
132
132
  };
133
- //# sourceMappingURL=persistent-session-PKHXX4LZ.js.map
133
+ //# sourceMappingURL=persistent-session-O3AKW6IW.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-6SKPDXGU.js";
4
- import "./chunk-UBXUNYTR.js";
3
+ } from "./chunk-NIUBYSLW.js";
4
+ import "./chunk-Y7ERASS6.js";
5
5
  import "./chunk-XWVM4KPK.js";
6
6
 
7
7
  // src/lib/responsiveness-probe.ts
@@ -799,4 +799,4 @@ export {
799
799
  readAndResetSlackReplyBindingClassifications,
800
800
  readAndResetSlackReplyTargetClassifications
801
801
  };
802
- //# sourceMappingURL=responsiveness-probe-JX2TNGQ2.js.map
802
+ //# sourceMappingURL=responsiveness-probe-MIPUX3BG.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-UBXUNYTR.js";
3
+ } from "./chunk-Y7ERASS6.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-2W2OFAZR.js.map
206
+ //# sourceMappingURL=session-auth-dead-ZGZZLE4X.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.925",
3
+ "version": "0.28.927",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {