@integrity-labs/agt-cli 0.28.1196 → 0.28.1197

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.
Files changed (28) hide show
  1. package/dist/bin/agt.js +6 -6
  2. package/dist/{chunk-YYUYLLIX.js → chunk-2IQ6KNPD.js} +5 -5
  3. package/dist/{chunk-2NWHS53N.js → chunk-I2ZT7SV2.js} +13 -2
  4. package/dist/{chunk-2NWHS53N.js.map → chunk-I2ZT7SV2.js.map} +1 -1
  5. package/dist/{chunk-L5QCDOM2.js → chunk-LBQSZVUX.js} +2 -2
  6. package/dist/{chunk-O5LKHDN7.js → chunk-QAOYRG2J.js} +3 -3
  7. package/dist/{chunk-AGRBHK4X.js → chunk-W4WVX7D4.js} +2 -2
  8. package/dist/{claude-code-updater-BJYGOVTF.js → claude-code-updater-MO64U3D6.js} +3 -3
  9. package/dist/{claude-pair-runtime-5OY4AZCI.js → claude-pair-runtime-HDMTFKOY.js} +3 -3
  10. package/dist/lib/manager-worker.js +19 -19
  11. package/dist/mcp/direct-chat-channel.js +12 -1
  12. package/dist/mcp/index.js +12 -1
  13. package/dist/mcp/origami.js +12 -1
  14. package/dist/mcp/slack-channel.js +12 -1
  15. package/dist/mcp/telegram-channel.js +12 -1
  16. package/dist/{persistent-session-BYF4LRJD.js → persistent-session-FMSMQ34K.js} +4 -4
  17. package/dist/{responsiveness-probe-NDUJDMXI.js → responsiveness-probe-AZOLKKQD.js} +4 -4
  18. package/dist/{session-auth-dead-KVBAILUJ.js → session-auth-dead-SXJSD34M.js} +3 -3
  19. package/package.json +1 -1
  20. /package/dist/{chunk-YYUYLLIX.js.map → chunk-2IQ6KNPD.js.map} +0 -0
  21. /package/dist/{chunk-L5QCDOM2.js.map → chunk-LBQSZVUX.js.map} +0 -0
  22. /package/dist/{chunk-O5LKHDN7.js.map → chunk-QAOYRG2J.js.map} +0 -0
  23. /package/dist/{chunk-AGRBHK4X.js.map → chunk-W4WVX7D4.js.map} +0 -0
  24. /package/dist/{claude-code-updater-BJYGOVTF.js.map → claude-code-updater-MO64U3D6.js.map} +0 -0
  25. /package/dist/{claude-pair-runtime-5OY4AZCI.js.map → claude-pair-runtime-HDMTFKOY.js.map} +0 -0
  26. /package/dist/{persistent-session-BYF4LRJD.js.map → persistent-session-FMSMQ34K.js.map} +0 -0
  27. /package/dist/{responsiveness-probe-NDUJDMXI.js.map → responsiveness-probe-AZOLKKQD.js.map} +0 -0
  28. /package/dist/{session-auth-dead-KVBAILUJ.js.map → session-auth-dead-SXJSD34M.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  encodeClaudeProjectPath
3
- } from "./chunk-2NWHS53N.js";
3
+ } from "./chunk-I2ZT7SV2.js";
4
4
 
5
5
  // src/lib/daily-session.ts
6
6
  import { randomUUID } from "crypto";
@@ -240,4 +240,4 @@ export {
240
240
  peekPreviousSession,
241
241
  readDailySessionPin
242
242
  };
243
- //# sourceMappingURL=chunk-L5QCDOM2.js.map
243
+ //# sourceMappingURL=chunk-LBQSZVUX.js.map
@@ -4,7 +4,7 @@ import {
4
4
  rotateDailySession,
5
5
  sessionFileExists,
6
6
  todayLocalIso
7
- } from "./chunk-L5QCDOM2.js";
7
+ } from "./chunk-LBQSZVUX.js";
8
8
  import {
9
9
  classifyUnanswerablePane,
10
10
  customApiKeyDialogKeys,
@@ -51,7 +51,7 @@ import {
51
51
  remoteMcpConnectionEnvInfix,
52
52
  remoteMcpConnectionLabel,
53
53
  remoteMcpConnectionScopedEnvVar
54
- } from "./chunk-2NWHS53N.js";
54
+ } from "./chunk-I2ZT7SV2.js";
55
55
  import {
56
56
  CLAUDE_CONFIG_DIR_ENV,
57
57
  approveApiKeyInClaudeConfig,
@@ -6173,4 +6173,4 @@ export {
6173
6173
  stopAllSessionsAndWait,
6174
6174
  getProjectDir
6175
6175
  };
6176
- //# sourceMappingURL=chunk-O5LKHDN7.js.map
6176
+ //# sourceMappingURL=chunk-QAOYRG2J.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-XWVM4KPK.js";
5
5
  import {
6
6
  FORCED_UPDATE_HARD_DEADLINE_MS
7
- } from "./chunk-2NWHS53N.js";
7
+ } from "./chunk-I2ZT7SV2.js";
8
8
  import {
9
9
  effectiveClaudeJsonPath
10
10
  } from "./chunk-AIUIMEUS.js";
@@ -722,4 +722,4 @@ export {
722
722
  probeClaudeInstalls,
723
723
  maybeUpdateClaudeCode
724
724
  };
725
- //# sourceMappingURL=chunk-AGRBHK4X.js.map
725
+ //# sourceMappingURL=chunk-W4WVX7D4.js.map
@@ -13,9 +13,9 @@ import {
13
13
  probeClaudeInstalls,
14
14
  readsAsNativeInstall,
15
15
  shouldRunClaudeCodeUpdater
16
- } from "./chunk-AGRBHK4X.js";
16
+ } from "./chunk-W4WVX7D4.js";
17
17
  import "./chunk-XWVM4KPK.js";
18
- import "./chunk-2NWHS53N.js";
18
+ import "./chunk-I2ZT7SV2.js";
19
19
  import "./chunk-AIUIMEUS.js";
20
20
  import "./chunk-DGUM43GV.js";
21
21
  export {
@@ -34,4 +34,4 @@ export {
34
34
  readsAsNativeInstall,
35
35
  shouldRunClaudeCodeUpdater
36
36
  };
37
- //# sourceMappingURL=claude-code-updater-BJYGOVTF.js.map
37
+ //# sourceMappingURL=claude-code-updater-MO64U3D6.js.map
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  redactPaneFrame,
10
10
  sanitizeTerminalFrame
11
- } from "./chunk-2NWHS53N.js";
11
+ } from "./chunk-I2ZT7SV2.js";
12
12
  import {
13
13
  CLAUDE_CONFIG_DIR_ENV,
14
14
  claudeConfigDirFor,
@@ -321,7 +321,7 @@ async function spawnPairSession(session) {
321
321
  return { ok: true };
322
322
  } catch {
323
323
  }
324
- const { resolveClaudeBinary } = await import("./persistent-session-BYF4LRJD.js");
324
+ const { resolveClaudeBinary } = await import("./persistent-session-FMSMQ34K.js");
325
325
  const claudeBin = resolveClaudeBinary();
326
326
  const pairEnv = {
327
327
  ...process.env,
@@ -836,4 +836,4 @@ export {
836
836
  startClaudePair,
837
837
  submitClaudePairCode
838
838
  };
839
- //# sourceMappingURL=claude-pair-runtime-5OY4AZCI.js.map
839
+ //# sourceMappingURL=claude-pair-runtime-HDMTFKOY.js.map
@@ -84,7 +84,7 @@ import {
84
84
  tripClass,
85
85
  writeEtcEnvironment,
86
86
  writeProfileDScript
87
- } from "../chunk-YYUYLLIX.js";
87
+ } from "../chunk-2IQ6KNPD.js";
88
88
  import {
89
89
  CLAUDE_CODE_SECURITY_FLOOR,
90
90
  SELF_UPDATE_TIMEOUTS,
@@ -98,7 +98,7 @@ import {
98
98
  runSafeCleanup,
99
99
  tightestDiskStat,
100
100
  withPackageCacheLock
101
- } from "../chunk-AGRBHK4X.js";
101
+ } from "../chunk-W4WVX7D4.js";
102
102
  import {
103
103
  rewriteSupervisorApiKey,
104
104
  supervisorChannelsRefusing
@@ -191,7 +191,7 @@ import {
191
191
  webFetchBaselineValue,
192
192
  webFetchRestartNeeded,
193
193
  writeEgressAllowlist
194
- } from "../chunk-O5LKHDN7.js";
194
+ } from "../chunk-QAOYRG2J.js";
195
195
  import {
196
196
  isAgentIdle,
197
197
  isStaleForToday,
@@ -201,7 +201,7 @@ import {
201
201
  sessionTranscriptDir,
202
202
  subagentActivityAgeSeconds,
203
203
  transcriptActivityAgeSeconds
204
- } from "../chunk-L5QCDOM2.js";
204
+ } from "../chunk-LBQSZVUX.js";
205
205
  import {
206
206
  classifyUnanswerablePane,
207
207
  focusedConfirmDialogBlock,
@@ -329,7 +329,7 @@ import {
329
329
  stabiliseResetInstant,
330
330
  sumTranscriptUsageInWindow,
331
331
  summarizeTranscriptActivity
332
- } from "../chunk-2NWHS53N.js";
332
+ } from "../chunk-I2ZT7SV2.js";
333
333
  import {
334
334
  CLAUDE_CONFIG_DIR_ENV,
335
335
  claudeConfigDirFor,
@@ -15560,7 +15560,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
15560
15560
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
15561
15561
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
15562
15562
  async function channelInboundActivityAgeSecondsFor(codeName) {
15563
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-NDUJDMXI.js");
15563
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-AZOLKKQD.js");
15564
15564
  const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
15565
15565
  if (newest === null) return null;
15566
15566
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -16357,7 +16357,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
16357
16357
  var lastVersionCheckAt = 0;
16358
16358
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
16359
16359
  var lastResponsivenessProbeAt = 0;
16360
- var agtCliVersion = true ? "0.28.1196" : "dev";
16360
+ var agtCliVersion = true ? "0.28.1197" : "dev";
16361
16361
  function resolveBrewPath(execFileSync3) {
16362
16362
  try {
16363
16363
  const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -18261,7 +18261,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
18261
18261
  if (codeNames.length === 0) return;
18262
18262
  void (async () => {
18263
18263
  try {
18264
- const { collectDiagnostics } = await import("../persistent-session-BYF4LRJD.js");
18264
+ const { collectDiagnostics } = await import("../persistent-session-FMSMQ34K.js");
18265
18265
  await api.post("/host/heartbeat", {
18266
18266
  host_id: hostId,
18267
18267
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor, sessionActivityFor)
@@ -18404,7 +18404,7 @@ async function pollCycleInner() {
18404
18404
  }
18405
18405
  try {
18406
18406
  const { detectHostSecurity } = await import("../host-security-KQYYZZVW.js");
18407
- const { collectDiagnostics } = await import("../persistent-session-BYF4LRJD.js");
18407
+ const { collectDiagnostics } = await import("../persistent-session-FMSMQ34K.js");
18408
18408
  const diagCodeNames = [...agentState.persistentSessionAgents];
18409
18409
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor, sessionActivityFor) : void 0;
18410
18410
  let tailscaleHostname;
@@ -18662,7 +18662,7 @@ async function pollCycleInner() {
18662
18662
  }
18663
18663
  try {
18664
18664
  const desiredClaudeCodeVersion = hbResp?.desired_claude_code_version?.trim();
18665
- const { maybeUpdateClaudeCode, shouldRunClaudeCodeUpdater } = await import("../claude-code-updater-BJYGOVTF.js");
18665
+ const { maybeUpdateClaudeCode, shouldRunClaudeCodeUpdater } = await import("../claude-code-updater-MO64U3D6.js");
18666
18666
  const securityFloor = currentSecurityFloor();
18667
18667
  claudeUpdaterInFlight = true;
18668
18668
  if (desiredClaudeCodeVersion && (claudePairLoop.busy || claudePairingInProgress())) {
@@ -18697,7 +18697,7 @@ async function pollCycleInner() {
18697
18697
  collectPanelessActivityProbes,
18698
18698
  getResponsivenessIntervalMs,
18699
18699
  occupancyQualificationClassifications
18700
- } = await import("../responsiveness-probe-NDUJDMXI.js");
18700
+ } = await import("../responsiveness-probe-AZOLKKQD.js");
18701
18701
  const probeIntervalMs = getResponsivenessIntervalMs();
18702
18702
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
18703
18703
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -18814,7 +18814,7 @@ async function pollCycleInner() {
18814
18814
  collectResponsivenessProbes,
18815
18815
  livePendingInboundOldestAgeSeconds,
18816
18816
  parkPendingInbound
18817
- } = await import("../responsiveness-probe-NDUJDMXI.js");
18817
+ } = await import("../responsiveness-probe-AZOLKKQD.js");
18818
18818
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-M6AFZWNU.js");
18819
18819
  const wedgeNow = /* @__PURE__ */ new Date();
18820
18820
  const liveAgents = agentState.persistentSessionAgents;
@@ -19100,7 +19100,7 @@ async function pollCycleInner() {
19100
19100
  }
19101
19101
  }
19102
19102
  );
19103
- const { parkPendingInbound } = await import("../responsiveness-probe-NDUJDMXI.js");
19103
+ const { parkPendingInbound } = await import("../responsiveness-probe-AZOLKKQD.js");
19104
19104
  const { parked, deadLettered } = parkPendingInbound(codeName, new Date(fatalNowMs));
19105
19105
  paneFatalStreak.delete(codeName);
19106
19106
  paneFatalRestarts.set(codeName, [...history, fatalNowMs]);
@@ -19131,7 +19131,7 @@ async function pollCycleInner() {
19131
19131
  TRANSCRIPT_MOUNT_ESCALATION_REFRESH_MS,
19132
19132
  bindSourceEscalations
19133
19133
  } = await import("../transcript-mount-health-OHE6IVJV.js");
19134
- const { transcriptBindSourcesFor, ensureTranscriptBindSources } = await import("../persistent-session-BYF4LRJD.js");
19134
+ const { transcriptBindSourcesFor, ensureTranscriptBindSources } = await import("../persistent-session-FMSMQ34K.js");
19135
19135
  const mountConfig = resolveTranscriptMountConfig();
19136
19136
  const liveAgents = agentState.persistentSessionAgents;
19137
19137
  for (const tracked of [
@@ -19296,7 +19296,7 @@ async function pollCycleInner() {
19296
19296
  }
19297
19297
  try {
19298
19298
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-VR5QGP3J.js");
19299
- const { probeSessionAuth } = await import("../session-auth-dead-KVBAILUJ.js");
19299
+ const { probeSessionAuth } = await import("../session-auth-dead-SXJSD34M.js");
19300
19300
  const observations = [];
19301
19301
  const pendingCacheCommits = [];
19302
19302
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -24026,7 +24026,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
24026
24026
  try {
24027
24027
  const freshId = rotateSessionForWedge(codeName);
24028
24028
  consecutiveWedgeCycles.delete(codeName);
24029
- const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-NDUJDMXI.js");
24029
+ const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-AZOLKKQD.js");
24030
24030
  const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
24031
24031
  const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
24032
24032
  const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
@@ -24069,7 +24069,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
24069
24069
  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}`));
24070
24070
  void (async () => {
24071
24071
  try {
24072
- const { collectDiagnostics } = await import("../persistent-session-BYF4LRJD.js");
24072
+ const { collectDiagnostics } = await import("../persistent-session-FMSMQ34K.js");
24073
24073
  await api.post("/host/heartbeat", {
24074
24074
  host_id: hostId,
24075
24075
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor, sessionActivityFor)
@@ -24120,7 +24120,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
24120
24120
  }
24121
24121
  try {
24122
24122
  const hostId = await getHostId();
24123
- const { collectDiagnostics } = await import("../persistent-session-BYF4LRJD.js");
24123
+ const { collectDiagnostics } = await import("../persistent-session-FMSMQ34K.js");
24124
24124
  await api.post("/host/heartbeat", {
24125
24125
  host_id: hostId,
24126
24126
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor, sessionActivityFor)
@@ -24822,7 +24822,7 @@ async function processClaudePairSessions(agents) {
24822
24822
  snapshotPairConfig,
24823
24823
  // ENG-11659: result -> report body + the manager.log line that records it.
24824
24824
  planPairStartReport
24825
- } = await import("../claude-pair-runtime-5OY4AZCI.js");
24825
+ } = await import("../claude-pair-runtime-HDMTFKOY.js");
24826
24826
  const { resetClaudeSignin, describeSigninResetForLog, describeSigninResetFailure } = await import("../claude-signin-reset-6IJMMVYG.js");
24827
24827
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
24828
24828
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
@@ -42182,6 +42182,7 @@ var APPROVED_EGRESS_ACCOUNT = composio_approved_egress_default.account;
42182
42182
  var APPROVED_EGRESS_HOME_REGION = composio_approved_egress_default.homeRegion;
42183
42183
  var APPROVED_EGRESS_ADDRESSES = composio_approved_egress_default.addresses;
42184
42184
  var ORG_EGRESS_ADDRESSES = composio_approved_egress_default.orgAddresses ?? {};
42185
+ var SELF_HOST_SILENCE_WINDOW_MS = 7 * 24 * 60 * 60 * 1e3;
42185
42186
 
42186
42187
  // ../core/dist/integrations/remote-mcp-proxy-env.js
42187
42188
  var REMOTE_MCP_PROXY_ENV = {
@@ -46676,7 +46677,7 @@ var FLAG_REGISTRY = [
46676
46677
  sensitive: true
46677
46678
  // Not public: the browser makes no decision from this. The only consumer is
46678
46679
  // packages/api/src/middleware/ip-allowlist.ts.
46679
- }
46680
+ },
46680
46681
  // THERE IS DELIBERATELY NO `ip-allowlist-enforce-mcp` FLAG.
46681
46682
  //
46682
46683
  // The per-agent MCP surface (POST /agents/:codeName/mcp) is allowlist
@@ -46712,6 +46713,16 @@ var FLAG_REGISTRY = [
46712
46713
  // adding the flag here and a key in ENFORCE_FLAG is a small diff - but it is a
46713
46714
  // decision to own someone else's egress, not a discovery that the population
46714
46715
  // was allowlistable all along.
46716
+ {
46717
+ key: "composio-arm-key-at-mint",
46718
+ description: "ENG-11446 - mint a new org's Composio project key with its IP allowlist already set, from composio-approved-egress.json. OFF (default) = keys are minted unrestricted, as before, and an operator arms them in the dashboard. ON = armed in the create call. Off by default because a wrong set is unrepairable from here: there is no API to read or edit the allowlist, so every key minted from a stale file refuses its callers until someone edits it by hand. Turn on per stage only after the file is confirmed current and a key armed from it returns 200 from an agt-hosts instance (probe-allowed-ips.ts --host-verify). Prod only for now: the file holds prod addresses, so an armed test-stage key would refuse test hosts. Turning it off affects future mints only; keys already armed stay armed.",
46719
+ flagType: "boolean",
46720
+ defaultValue: false,
46721
+ sensitive: true,
46722
+ // Fleet-wide security posture, not an org's choice: an org override must not be able
46723
+ // to arm or unarm its own keys (CodeRabbit on #7359).
46724
+ platformAdminOnly: true
46725
+ }
46715
46726
  ];
46716
46727
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
46717
46728
 
package/dist/mcp/index.js CHANGED
@@ -28250,6 +28250,7 @@ var APPROVED_EGRESS_ACCOUNT = composio_approved_egress_default.account;
28250
28250
  var APPROVED_EGRESS_HOME_REGION = composio_approved_egress_default.homeRegion;
28251
28251
  var APPROVED_EGRESS_ADDRESSES = composio_approved_egress_default.addresses;
28252
28252
  var ORG_EGRESS_ADDRESSES = composio_approved_egress_default.orgAddresses ?? {};
28253
+ var SELF_HOST_SILENCE_WINDOW_MS = 7 * 24 * 60 * 60 * 1e3;
28253
28254
 
28254
28255
  // ../core/dist/integrations/remote-mcp-proxy-env.js
28255
28256
  var REMOTE_MCP_PROXY_ENV = {
@@ -32314,7 +32315,7 @@ var FLAG_REGISTRY = [
32314
32315
  sensitive: true
32315
32316
  // Not public: the browser makes no decision from this. The only consumer is
32316
32317
  // packages/api/src/middleware/ip-allowlist.ts.
32317
- }
32318
+ },
32318
32319
  // THERE IS DELIBERATELY NO `ip-allowlist-enforce-mcp` FLAG.
32319
32320
  //
32320
32321
  // The per-agent MCP surface (POST /agents/:codeName/mcp) is allowlist
@@ -32350,6 +32351,16 @@ var FLAG_REGISTRY = [
32350
32351
  // adding the flag here and a key in ENFORCE_FLAG is a small diff - but it is a
32351
32352
  // decision to own someone else's egress, not a discovery that the population
32352
32353
  // was allowlistable all along.
32354
+ {
32355
+ key: "composio-arm-key-at-mint",
32356
+ description: "ENG-11446 - mint a new org's Composio project key with its IP allowlist already set, from composio-approved-egress.json. OFF (default) = keys are minted unrestricted, as before, and an operator arms them in the dashboard. ON = armed in the create call. Off by default because a wrong set is unrepairable from here: there is no API to read or edit the allowlist, so every key minted from a stale file refuses its callers until someone edits it by hand. Turn on per stage only after the file is confirmed current and a key armed from it returns 200 from an agt-hosts instance (probe-allowed-ips.ts --host-verify). Prod only for now: the file holds prod addresses, so an armed test-stage key would refuse test hosts. Turning it off affects future mints only; keys already armed stay armed.",
32357
+ flagType: "boolean",
32358
+ defaultValue: false,
32359
+ sensitive: true,
32360
+ // Fleet-wide security posture, not an org's choice: an org override must not be able
32361
+ // to arm or unarm its own keys (CodeRabbit on #7359).
32362
+ platformAdminOnly: true
32363
+ }
32353
32364
  ];
32354
32365
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
32355
32366
 
@@ -42339,6 +42339,7 @@ var APPROVED_EGRESS_ACCOUNT = composio_approved_egress_default.account;
42339
42339
  var APPROVED_EGRESS_HOME_REGION = composio_approved_egress_default.homeRegion;
42340
42340
  var APPROVED_EGRESS_ADDRESSES = composio_approved_egress_default.addresses;
42341
42341
  var ORG_EGRESS_ADDRESSES = composio_approved_egress_default.orgAddresses ?? {};
42342
+ var SELF_HOST_SILENCE_WINDOW_MS = 7 * 24 * 60 * 60 * 1e3;
42342
42343
 
42343
42344
  // ../core/dist/integrations/remote-mcp-proxy-env.js
42344
42345
  var REMOTE_MCP_PROXY_ENV = {
@@ -46182,7 +46183,7 @@ var FLAG_REGISTRY = [
46182
46183
  sensitive: true
46183
46184
  // Not public: the browser makes no decision from this. The only consumer is
46184
46185
  // packages/api/src/middleware/ip-allowlist.ts.
46185
- }
46186
+ },
46186
46187
  // THERE IS DELIBERATELY NO `ip-allowlist-enforce-mcp` FLAG.
46187
46188
  //
46188
46189
  // The per-agent MCP surface (POST /agents/:codeName/mcp) is allowlist
@@ -46218,6 +46219,16 @@ var FLAG_REGISTRY = [
46218
46219
  // adding the flag here and a key in ENFORCE_FLAG is a small diff - but it is a
46219
46220
  // decision to own someone else's egress, not a discovery that the population
46220
46221
  // was allowlistable all along.
46222
+ {
46223
+ key: "composio-arm-key-at-mint",
46224
+ description: "ENG-11446 - mint a new org's Composio project key with its IP allowlist already set, from composio-approved-egress.json. OFF (default) = keys are minted unrestricted, as before, and an operator arms them in the dashboard. ON = armed in the create call. Off by default because a wrong set is unrepairable from here: there is no API to read or edit the allowlist, so every key minted from a stale file refuses its callers until someone edits it by hand. Turn on per stage only after the file is confirmed current and a key armed from it returns 200 from an agt-hosts instance (probe-allowed-ips.ts --host-verify). Prod only for now: the file holds prod addresses, so an armed test-stage key would refuse test hosts. Turning it off affects future mints only; keys already armed stay armed.",
46225
+ flagType: "boolean",
46226
+ defaultValue: false,
46227
+ sensitive: true,
46228
+ // Fleet-wide security posture, not an org's choice: an org override must not be able
46229
+ // to arm or unarm its own keys (CodeRabbit on #7359).
46230
+ platformAdminOnly: true
46231
+ }
46221
46232
  ];
46222
46233
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
46223
46234
 
@@ -36748,6 +36748,7 @@ var APPROVED_EGRESS_ACCOUNT = composio_approved_egress_default.account;
36748
36748
  var APPROVED_EGRESS_HOME_REGION = composio_approved_egress_default.homeRegion;
36749
36749
  var APPROVED_EGRESS_ADDRESSES = composio_approved_egress_default.addresses;
36750
36750
  var ORG_EGRESS_ADDRESSES = composio_approved_egress_default.orgAddresses ?? {};
36751
+ var SELF_HOST_SILENCE_WINDOW_MS = 7 * 24 * 60 * 60 * 1e3;
36751
36752
 
36752
36753
  // ../core/dist/integrations/remote-mcp-proxy-env.js
36753
36754
  var REMOTE_MCP_PROXY_ENV = {
@@ -41013,7 +41014,7 @@ var FLAG_REGISTRY = [
41013
41014
  sensitive: true
41014
41015
  // Not public: the browser makes no decision from this. The only consumer is
41015
41016
  // packages/api/src/middleware/ip-allowlist.ts.
41016
- }
41017
+ },
41017
41018
  // THERE IS DELIBERATELY NO `ip-allowlist-enforce-mcp` FLAG.
41018
41019
  //
41019
41020
  // The per-agent MCP surface (POST /agents/:codeName/mcp) is allowlist
@@ -41049,6 +41050,16 @@ var FLAG_REGISTRY = [
41049
41050
  // adding the flag here and a key in ENFORCE_FLAG is a small diff - but it is a
41050
41051
  // decision to own someone else's egress, not a discovery that the population
41051
41052
  // was allowlistable all along.
41053
+ {
41054
+ key: "composio-arm-key-at-mint",
41055
+ description: "ENG-11446 - mint a new org's Composio project key with its IP allowlist already set, from composio-approved-egress.json. OFF (default) = keys are minted unrestricted, as before, and an operator arms them in the dashboard. ON = armed in the create call. Off by default because a wrong set is unrepairable from here: there is no API to read or edit the allowlist, so every key minted from a stale file refuses its callers until someone edits it by hand. Turn on per stage only after the file is confirmed current and a key armed from it returns 200 from an agt-hosts instance (probe-allowed-ips.ts --host-verify). Prod only for now: the file holds prod addresses, so an armed test-stage key would refuse test hosts. Turning it off affects future mints only; keys already armed stay armed.",
41056
+ flagType: "boolean",
41057
+ defaultValue: false,
41058
+ sensitive: true,
41059
+ // Fleet-wide security posture, not an org's choice: an org override must not be able
41060
+ // to arm or unarm its own keys (CodeRabbit on #7359).
41061
+ platformAdminOnly: true
41062
+ }
41052
41063
  ];
41053
41064
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
41054
41065
 
@@ -36965,6 +36965,7 @@ var APPROVED_EGRESS_ACCOUNT = composio_approved_egress_default.account;
36965
36965
  var APPROVED_EGRESS_HOME_REGION = composio_approved_egress_default.homeRegion;
36966
36966
  var APPROVED_EGRESS_ADDRESSES = composio_approved_egress_default.addresses;
36967
36967
  var ORG_EGRESS_ADDRESSES = composio_approved_egress_default.orgAddresses ?? {};
36968
+ var SELF_HOST_SILENCE_WINDOW_MS = 7 * 24 * 60 * 60 * 1e3;
36968
36969
 
36969
36970
  // ../core/dist/integrations/remote-mcp-proxy-env.js
36970
36971
  var REMOTE_MCP_PROXY_ENV = {
@@ -41224,7 +41225,7 @@ var FLAG_REGISTRY = [
41224
41225
  sensitive: true
41225
41226
  // Not public: the browser makes no decision from this. The only consumer is
41226
41227
  // packages/api/src/middleware/ip-allowlist.ts.
41227
- }
41228
+ },
41228
41229
  // THERE IS DELIBERATELY NO `ip-allowlist-enforce-mcp` FLAG.
41229
41230
  //
41230
41231
  // The per-agent MCP surface (POST /agents/:codeName/mcp) is allowlist
@@ -41260,6 +41261,16 @@ var FLAG_REGISTRY = [
41260
41261
  // adding the flag here and a key in ENFORCE_FLAG is a small diff - but it is a
41261
41262
  // decision to own someone else's egress, not a discovery that the population
41262
41263
  // was allowlistable all along.
41264
+ {
41265
+ key: "composio-arm-key-at-mint",
41266
+ description: "ENG-11446 - mint a new org's Composio project key with its IP allowlist already set, from composio-approved-egress.json. OFF (default) = keys are minted unrestricted, as before, and an operator arms them in the dashboard. ON = armed in the create call. Off by default because a wrong set is unrepairable from here: there is no API to read or edit the allowlist, so every key minted from a stale file refuses its callers until someone edits it by hand. Turn on per stage only after the file is confirmed current and a key armed from it returns 200 from an agt-hosts instance (probe-allowed-ips.ts --host-verify). Prod only for now: the file holds prod addresses, so an armed test-stage key would refuse test hosts. Turning it off affects future mints only; keys already armed stay armed.",
41267
+ flagType: "boolean",
41268
+ defaultValue: false,
41269
+ sensitive: true,
41270
+ // Fleet-wide security posture, not an org's choice: an org override must not be able
41271
+ // to arm or unarm its own keys (CodeRabbit on #7359).
41272
+ platformAdminOnly: true
41273
+ }
41263
41274
  ];
41264
41275
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
41265
41276
 
@@ -68,12 +68,12 @@ import {
68
68
  writeDirectChatSessionState,
69
69
  writeEgressAllowlist,
70
70
  writePersistentClaudeWrapper
71
- } from "./chunk-O5LKHDN7.js";
72
- import "./chunk-L5QCDOM2.js";
71
+ } from "./chunk-QAOYRG2J.js";
72
+ import "./chunk-LBQSZVUX.js";
73
73
  import "./chunk-OO36JBFI.js";
74
74
  import "./chunk-6HBXEJHO.js";
75
75
  import "./chunk-XWVM4KPK.js";
76
- import "./chunk-2NWHS53N.js";
76
+ import "./chunk-I2ZT7SV2.js";
77
77
  import "./chunk-AIUIMEUS.js";
78
78
  import "./chunk-DGUM43GV.js";
79
79
  export {
@@ -147,4 +147,4 @@ export {
147
147
  writeEgressAllowlist,
148
148
  writePersistentClaudeWrapper
149
149
  };
150
- //# sourceMappingURL=persistent-session-BYF4LRJD.js.map
150
+ //# sourceMappingURL=persistent-session-FMSMQ34K.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-O5LKHDN7.js";
4
- import "./chunk-L5QCDOM2.js";
3
+ } from "./chunk-QAOYRG2J.js";
4
+ import "./chunk-LBQSZVUX.js";
5
5
  import "./chunk-OO36JBFI.js";
6
6
  import "./chunk-6HBXEJHO.js";
7
7
  import "./chunk-XWVM4KPK.js";
8
- import "./chunk-2NWHS53N.js";
8
+ import "./chunk-I2ZT7SV2.js";
9
9
  import "./chunk-AIUIMEUS.js";
10
10
  import "./chunk-DGUM43GV.js";
11
11
 
@@ -804,4 +804,4 @@ export {
804
804
  readAndResetSlackReplyBindingClassifications,
805
805
  readAndResetSlackReplyTargetClassifications
806
806
  };
807
- //# sourceMappingURL=responsiveness-probe-NDUJDMXI.js.map
807
+ //# sourceMappingURL=responsiveness-probe-AZOLKKQD.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-L5QCDOM2.js";
4
- import "./chunk-2NWHS53N.js";
3
+ } from "./chunk-LBQSZVUX.js";
4
+ import "./chunk-I2ZT7SV2.js";
5
5
  import "./chunk-DGUM43GV.js";
6
6
 
7
7
  // src/lib/session-auth-dead.ts
@@ -205,4 +205,4 @@ export {
205
205
  decideSessionAuthState,
206
206
  probeSessionAuth
207
207
  };
208
- //# sourceMappingURL=session-auth-dead-KVBAILUJ.js.map
208
+ //# sourceMappingURL=session-auth-dead-SXJSD34M.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.1196",
3
+ "version": "0.28.1197",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {