@integrity-labs/agt-cli 0.28.1195 → 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 (29) hide show
  1. package/dist/bin/agt.js +6 -6
  2. package/dist/{chunk-YTM5HQRH.js → chunk-2IQ6KNPD.js} +5 -5
  3. package/dist/{chunk-2HAH3TZ4.js → chunk-I2ZT7SV2.js} +21 -2
  4. package/dist/chunk-I2ZT7SV2.js.map +1 -0
  5. package/dist/{chunk-MLIFIEIF.js → chunk-LBQSZVUX.js} +2 -2
  6. package/dist/{chunk-KL35IHP2.js → chunk-QAOYRG2J.js} +3 -3
  7. package/dist/{chunk-WUYF7RDA.js → chunk-W4WVX7D4.js} +2 -2
  8. package/dist/{claude-code-updater-DLTAAQOT.js → claude-code-updater-MO64U3D6.js} +3 -3
  9. package/dist/{claude-pair-runtime-XAUZPAUP.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 +20 -1
  12. package/dist/mcp/index.js +20 -1
  13. package/dist/mcp/origami.js +20 -1
  14. package/dist/mcp/slack-channel.js +20 -1
  15. package/dist/mcp/telegram-channel.js +20 -1
  16. package/dist/{persistent-session-TV4FIBN4.js → persistent-session-FMSMQ34K.js} +4 -4
  17. package/dist/{responsiveness-probe-BBAAYANU.js → responsiveness-probe-AZOLKKQD.js} +4 -4
  18. package/dist/{session-auth-dead-JMYATIQN.js → session-auth-dead-SXJSD34M.js} +3 -3
  19. package/package.json +1 -1
  20. package/dist/chunk-2HAH3TZ4.js.map +0 -1
  21. /package/dist/{chunk-YTM5HQRH.js.map → chunk-2IQ6KNPD.js.map} +0 -0
  22. /package/dist/{chunk-MLIFIEIF.js.map → chunk-LBQSZVUX.js.map} +0 -0
  23. /package/dist/{chunk-KL35IHP2.js.map → chunk-QAOYRG2J.js.map} +0 -0
  24. /package/dist/{chunk-WUYF7RDA.js.map → chunk-W4WVX7D4.js.map} +0 -0
  25. /package/dist/{claude-code-updater-DLTAAQOT.js.map → claude-code-updater-MO64U3D6.js.map} +0 -0
  26. /package/dist/{claude-pair-runtime-XAUZPAUP.js.map → claude-pair-runtime-HDMTFKOY.js.map} +0 -0
  27. /package/dist/{persistent-session-TV4FIBN4.js.map → persistent-session-FMSMQ34K.js.map} +0 -0
  28. /package/dist/{responsiveness-probe-BBAAYANU.js.map → responsiveness-probe-AZOLKKQD.js.map} +0 -0
  29. /package/dist/{session-auth-dead-JMYATIQN.js.map → session-auth-dead-SXJSD34M.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  encodeClaudeProjectPath
3
- } from "./chunk-2HAH3TZ4.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-MLIFIEIF.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-MLIFIEIF.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-2HAH3TZ4.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-KL35IHP2.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-2HAH3TZ4.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-WUYF7RDA.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-WUYF7RDA.js";
16
+ } from "./chunk-W4WVX7D4.js";
17
17
  import "./chunk-XWVM4KPK.js";
18
- import "./chunk-2HAH3TZ4.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-DLTAAQOT.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-2HAH3TZ4.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-TV4FIBN4.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-XAUZPAUP.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-YTM5HQRH.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-WUYF7RDA.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-KL35IHP2.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-MLIFIEIF.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-2HAH3TZ4.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-BBAAYANU.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.1195" : "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-TV4FIBN4.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-TV4FIBN4.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-DLTAAQOT.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-BBAAYANU.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-BBAAYANU.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-BBAAYANU.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-TV4FIBN4.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-JMYATIQN.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-BBAAYANU.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-TV4FIBN4.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-TV4FIBN4.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-XAUZPAUP.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 = {
@@ -44251,6 +44252,14 @@ var FLAG_REGISTRY = [
44251
44252
  // be in the browser-exposed public map.
44252
44253
  public: true
44253
44254
  },
44255
+ {
44256
+ key: "host-wizard-managed-tokens",
44257
+ description: 'ENG-11861: show the "Ninjafy supplies the tokens" (OpenRouter, claude_auth_mode=openrouter) option in the new-host wizard, including onboarding. Off = customers are offered BYO Claude Max (and BYO API key outside onboarding) only. Hides the CHOICE only: the mode itself, existing OpenRouter hosts, admin tooling and ENG-7515 auto-failover are untouched. Ships dark; turn on per org for anyone who should still be offered it.',
44258
+ flagType: "boolean",
44259
+ defaultValue: false,
44260
+ // Read client-side by the new-host wizard (usePublicBooleanFlag).
44261
+ public: true
44262
+ },
44254
44263
  {
44255
44264
  key: "opencode-live-view",
44256
44265
  description: "opencode-native Live View / Diagnostics (ENG-7927): the agent Diagnostics tab renders a structured session transcript (messages + tool calls + reasoning) for opencode agents instead of the tmux pane, by polling GET /admin/agents/:id/opencode-transcript (which SSM-reads a redacted snapshot the manager writes) ~every 3s for a bounded window. Boolean gate; ships dark; when OFF the route returns feature_disabled and opencode agents show the static diagnostics snapshot. Claude Code agents are unaffected (they keep the tmux pane).",
@@ -46668,7 +46677,7 @@ var FLAG_REGISTRY = [
46668
46677
  sensitive: true
46669
46678
  // Not public: the browser makes no decision from this. The only consumer is
46670
46679
  // packages/api/src/middleware/ip-allowlist.ts.
46671
- }
46680
+ },
46672
46681
  // THERE IS DELIBERATELY NO `ip-allowlist-enforce-mcp` FLAG.
46673
46682
  //
46674
46683
  // The per-agent MCP surface (POST /agents/:codeName/mcp) is allowlist
@@ -46704,6 +46713,16 @@ var FLAG_REGISTRY = [
46704
46713
  // adding the flag here and a key in ENFORCE_FLAG is a small diff - but it is a
46705
46714
  // decision to own someone else's egress, not a discovery that the population
46706
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
+ }
46707
46726
  ];
46708
46727
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
46709
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 = {
@@ -29889,6 +29890,14 @@ var FLAG_REGISTRY = [
29889
29890
  // be in the browser-exposed public map.
29890
29891
  public: true
29891
29892
  },
29893
+ {
29894
+ key: "host-wizard-managed-tokens",
29895
+ description: 'ENG-11861: show the "Ninjafy supplies the tokens" (OpenRouter, claude_auth_mode=openrouter) option in the new-host wizard, including onboarding. Off = customers are offered BYO Claude Max (and BYO API key outside onboarding) only. Hides the CHOICE only: the mode itself, existing OpenRouter hosts, admin tooling and ENG-7515 auto-failover are untouched. Ships dark; turn on per org for anyone who should still be offered it.',
29896
+ flagType: "boolean",
29897
+ defaultValue: false,
29898
+ // Read client-side by the new-host wizard (usePublicBooleanFlag).
29899
+ public: true
29900
+ },
29892
29901
  {
29893
29902
  key: "opencode-live-view",
29894
29903
  description: "opencode-native Live View / Diagnostics (ENG-7927): the agent Diagnostics tab renders a structured session transcript (messages + tool calls + reasoning) for opencode agents instead of the tmux pane, by polling GET /admin/agents/:id/opencode-transcript (which SSM-reads a redacted snapshot the manager writes) ~every 3s for a bounded window. Boolean gate; ships dark; when OFF the route returns feature_disabled and opencode agents show the static diagnostics snapshot. Claude Code agents are unaffected (they keep the tmux pane).",
@@ -32306,7 +32315,7 @@ var FLAG_REGISTRY = [
32306
32315
  sensitive: true
32307
32316
  // Not public: the browser makes no decision from this. The only consumer is
32308
32317
  // packages/api/src/middleware/ip-allowlist.ts.
32309
- }
32318
+ },
32310
32319
  // THERE IS DELIBERATELY NO `ip-allowlist-enforce-mcp` FLAG.
32311
32320
  //
32312
32321
  // The per-agent MCP surface (POST /agents/:codeName/mcp) is allowlist
@@ -32342,6 +32351,16 @@ var FLAG_REGISTRY = [
32342
32351
  // adding the flag here and a key in ENFORCE_FLAG is a small diff - but it is a
32343
32352
  // decision to own someone else's egress, not a discovery that the population
32344
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
+ }
32345
32364
  ];
32346
32365
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
32347
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 = {
@@ -43757,6 +43758,14 @@ var FLAG_REGISTRY = [
43757
43758
  // be in the browser-exposed public map.
43758
43759
  public: true
43759
43760
  },
43761
+ {
43762
+ key: "host-wizard-managed-tokens",
43763
+ description: 'ENG-11861: show the "Ninjafy supplies the tokens" (OpenRouter, claude_auth_mode=openrouter) option in the new-host wizard, including onboarding. Off = customers are offered BYO Claude Max (and BYO API key outside onboarding) only. Hides the CHOICE only: the mode itself, existing OpenRouter hosts, admin tooling and ENG-7515 auto-failover are untouched. Ships dark; turn on per org for anyone who should still be offered it.',
43764
+ flagType: "boolean",
43765
+ defaultValue: false,
43766
+ // Read client-side by the new-host wizard (usePublicBooleanFlag).
43767
+ public: true
43768
+ },
43760
43769
  {
43761
43770
  key: "opencode-live-view",
43762
43771
  description: "opencode-native Live View / Diagnostics (ENG-7927): the agent Diagnostics tab renders a structured session transcript (messages + tool calls + reasoning) for opencode agents instead of the tmux pane, by polling GET /admin/agents/:id/opencode-transcript (which SSM-reads a redacted snapshot the manager writes) ~every 3s for a bounded window. Boolean gate; ships dark; when OFF the route returns feature_disabled and opencode agents show the static diagnostics snapshot. Claude Code agents are unaffected (they keep the tmux pane).",
@@ -46174,7 +46183,7 @@ var FLAG_REGISTRY = [
46174
46183
  sensitive: true
46175
46184
  // Not public: the browser makes no decision from this. The only consumer is
46176
46185
  // packages/api/src/middleware/ip-allowlist.ts.
46177
- }
46186
+ },
46178
46187
  // THERE IS DELIBERATELY NO `ip-allowlist-enforce-mcp` FLAG.
46179
46188
  //
46180
46189
  // The per-agent MCP surface (POST /agents/:codeName/mcp) is allowlist
@@ -46210,6 +46219,16 @@ var FLAG_REGISTRY = [
46210
46219
  // adding the flag here and a key in ENFORCE_FLAG is a small diff - but it is a
46211
46220
  // decision to own someone else's egress, not a discovery that the population
46212
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
+ }
46213
46232
  ];
46214
46233
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
46215
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 = {
@@ -38588,6 +38589,14 @@ var FLAG_REGISTRY = [
38588
38589
  // be in the browser-exposed public map.
38589
38590
  public: true
38590
38591
  },
38592
+ {
38593
+ key: "host-wizard-managed-tokens",
38594
+ description: 'ENG-11861: show the "Ninjafy supplies the tokens" (OpenRouter, claude_auth_mode=openrouter) option in the new-host wizard, including onboarding. Off = customers are offered BYO Claude Max (and BYO API key outside onboarding) only. Hides the CHOICE only: the mode itself, existing OpenRouter hosts, admin tooling and ENG-7515 auto-failover are untouched. Ships dark; turn on per org for anyone who should still be offered it.',
38595
+ flagType: "boolean",
38596
+ defaultValue: false,
38597
+ // Read client-side by the new-host wizard (usePublicBooleanFlag).
38598
+ public: true
38599
+ },
38591
38600
  {
38592
38601
  key: "opencode-live-view",
38593
38602
  description: "opencode-native Live View / Diagnostics (ENG-7927): the agent Diagnostics tab renders a structured session transcript (messages + tool calls + reasoning) for opencode agents instead of the tmux pane, by polling GET /admin/agents/:id/opencode-transcript (which SSM-reads a redacted snapshot the manager writes) ~every 3s for a bounded window. Boolean gate; ships dark; when OFF the route returns feature_disabled and opencode agents show the static diagnostics snapshot. Claude Code agents are unaffected (they keep the tmux pane).",
@@ -41005,7 +41014,7 @@ var FLAG_REGISTRY = [
41005
41014
  sensitive: true
41006
41015
  // Not public: the browser makes no decision from this. The only consumer is
41007
41016
  // packages/api/src/middleware/ip-allowlist.ts.
41008
- }
41017
+ },
41009
41018
  // THERE IS DELIBERATELY NO `ip-allowlist-enforce-mcp` FLAG.
41010
41019
  //
41011
41020
  // The per-agent MCP surface (POST /agents/:codeName/mcp) is allowlist
@@ -41041,6 +41050,16 @@ var FLAG_REGISTRY = [
41041
41050
  // adding the flag here and a key in ENFORCE_FLAG is a small diff - but it is a
41042
41051
  // decision to own someone else's egress, not a discovery that the population
41043
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
+ }
41044
41063
  ];
41045
41064
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
41046
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 = {
@@ -38799,6 +38800,14 @@ var FLAG_REGISTRY = [
38799
38800
  // be in the browser-exposed public map.
38800
38801
  public: true
38801
38802
  },
38803
+ {
38804
+ key: "host-wizard-managed-tokens",
38805
+ description: 'ENG-11861: show the "Ninjafy supplies the tokens" (OpenRouter, claude_auth_mode=openrouter) option in the new-host wizard, including onboarding. Off = customers are offered BYO Claude Max (and BYO API key outside onboarding) only. Hides the CHOICE only: the mode itself, existing OpenRouter hosts, admin tooling and ENG-7515 auto-failover are untouched. Ships dark; turn on per org for anyone who should still be offered it.',
38806
+ flagType: "boolean",
38807
+ defaultValue: false,
38808
+ // Read client-side by the new-host wizard (usePublicBooleanFlag).
38809
+ public: true
38810
+ },
38802
38811
  {
38803
38812
  key: "opencode-live-view",
38804
38813
  description: "opencode-native Live View / Diagnostics (ENG-7927): the agent Diagnostics tab renders a structured session transcript (messages + tool calls + reasoning) for opencode agents instead of the tmux pane, by polling GET /admin/agents/:id/opencode-transcript (which SSM-reads a redacted snapshot the manager writes) ~every 3s for a bounded window. Boolean gate; ships dark; when OFF the route returns feature_disabled and opencode agents show the static diagnostics snapshot. Claude Code agents are unaffected (they keep the tmux pane).",
@@ -41216,7 +41225,7 @@ var FLAG_REGISTRY = [
41216
41225
  sensitive: true
41217
41226
  // Not public: the browser makes no decision from this. The only consumer is
41218
41227
  // packages/api/src/middleware/ip-allowlist.ts.
41219
- }
41228
+ },
41220
41229
  // THERE IS DELIBERATELY NO `ip-allowlist-enforce-mcp` FLAG.
41221
41230
  //
41222
41231
  // The per-agent MCP surface (POST /agents/:codeName/mcp) is allowlist
@@ -41252,6 +41261,16 @@ var FLAG_REGISTRY = [
41252
41261
  // adding the flag here and a key in ENFORCE_FLAG is a small diff - but it is a
41253
41262
  // decision to own someone else's egress, not a discovery that the population
41254
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
+ }
41255
41274
  ];
41256
41275
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
41257
41276
 
@@ -68,12 +68,12 @@ import {
68
68
  writeDirectChatSessionState,
69
69
  writeEgressAllowlist,
70
70
  writePersistentClaudeWrapper
71
- } from "./chunk-KL35IHP2.js";
72
- import "./chunk-MLIFIEIF.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-2HAH3TZ4.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-TV4FIBN4.js.map
150
+ //# sourceMappingURL=persistent-session-FMSMQ34K.js.map
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-KL35IHP2.js";
4
- import "./chunk-MLIFIEIF.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-2HAH3TZ4.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-BBAAYANU.js.map
807
+ //# sourceMappingURL=responsiveness-probe-AZOLKKQD.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-MLIFIEIF.js";
4
- import "./chunk-2HAH3TZ4.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-JMYATIQN.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.1195",
3
+ "version": "0.28.1197",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {