@integrity-labs/agt-cli 0.28.670 → 0.28.671

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.
@@ -9,7 +9,7 @@ import {
9
9
  isolationMode,
10
10
  log,
11
11
  parseEnvIntegrations
12
- } from "./chunk-5GDKWIB3.js";
12
+ } from "./chunk-57XP5OG6.js";
13
13
  import {
14
14
  BIND_FAILURE_QUARANTINE_THRESHOLD,
15
15
  INTEGRATIONS_SECTION_END,
@@ -56,7 +56,7 @@ import {
56
56
  resolveConnectivityProbe,
57
57
  worseConnectivityOutcome,
58
58
  wrapScheduledTaskPrompt
59
- } from "./chunk-HGVJVYKW.js";
59
+ } from "./chunk-DWFN5PMF.js";
60
60
  import {
61
61
  parsePsRows
62
62
  } from "./chunk-XWVM4KPK.js";
@@ -6347,7 +6347,7 @@ function exchangeFailureKind(err) {
6347
6347
  }
6348
6348
 
6349
6349
  // src/lib/api-client.ts
6350
- var agtCliVersion = true ? "0.28.670" : "dev";
6350
+ var agtCliVersion = true ? "0.28.671" : "dev";
6351
6351
  var lastConfigHash = null;
6352
6352
  function setConfigHash(hash) {
6353
6353
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -10089,4 +10089,4 @@ export {
10089
10089
  managerInstallSystemUnitCommand,
10090
10090
  managerUninstallSystemUnitCommand
10091
10091
  };
10092
- //# sourceMappingURL=chunk-Z4O42VGJ.js.map
10092
+ //# sourceMappingURL=chunk-ZU2BHLUS.js.map
@@ -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-RZH67PNC.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-LTFB4M53.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-W6KBVHK4.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-ANNQRKO4.js.map
@@ -55,7 +55,7 @@ import {
55
55
  safeWriteJsonAtomic,
56
56
  setConfigHash,
57
57
  tripClass
58
- } from "../chunk-Z4O42VGJ.js";
58
+ } from "../chunk-ZU2BHLUS.js";
59
59
  import {
60
60
  getProjectDir as getProjectDir2,
61
61
  getReadyTasks,
@@ -111,7 +111,7 @@ import {
111
111
  takeZombieDetection,
112
112
  toOpencodeModel,
113
113
  writeEgressAllowlist
114
- } from "../chunk-5GDKWIB3.js";
114
+ } from "../chunk-57XP5OG6.js";
115
115
  import {
116
116
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
117
117
  AnchorSessionClient,
@@ -192,7 +192,7 @@ import {
192
192
  subagentActivityAgeSeconds,
193
193
  sumTranscriptUsageInWindow,
194
194
  transcriptActivityAgeSeconds
195
- } from "../chunk-HGVJVYKW.js";
195
+ } from "../chunk-DWFN5PMF.js";
196
196
  import {
197
197
  reapOrphanChannelMcps
198
198
  } from "../chunk-XWVM4KPK.js";
@@ -11611,7 +11611,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
11611
11611
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
11612
11612
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
11613
11613
  async function channelInboundActivityAgeSecondsFor(codeName) {
11614
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-NPNMNOFF.js");
11614
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-P2S3UMRE.js");
11615
11615
  const newest = newestPendingInboundActivityMtimeMs(dirname10(paneLogPath(codeName)));
11616
11616
  if (newest === null) return null;
11617
11617
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -12256,7 +12256,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
12256
12256
  var lastVersionCheckAt = 0;
12257
12257
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
12258
12258
  var lastResponsivenessProbeAt = 0;
12259
- var agtCliVersion = true ? "0.28.670" : "dev";
12259
+ var agtCliVersion = true ? "0.28.671" : "dev";
12260
12260
  function resolveBrewPath(execFileSync3) {
12261
12261
  try {
12262
12262
  const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -13620,7 +13620,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
13620
13620
  if (codeNames.length === 0) return;
13621
13621
  void (async () => {
13622
13622
  try {
13623
- const { collectDiagnostics } = await import("../persistent-session-RZH67PNC.js");
13623
+ const { collectDiagnostics } = await import("../persistent-session-LTFB4M53.js");
13624
13624
  await api.post("/host/heartbeat", {
13625
13625
  host_id: hostId,
13626
13626
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
@@ -13736,7 +13736,7 @@ async function pollCycleInner() {
13736
13736
  }
13737
13737
  try {
13738
13738
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
13739
- const { collectDiagnostics } = await import("../persistent-session-RZH67PNC.js");
13739
+ const { collectDiagnostics } = await import("../persistent-session-LTFB4M53.js");
13740
13740
  const diagCodeNames = [...agentState.persistentSessionAgents];
13741
13741
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor) : void 0;
13742
13742
  let tailscaleHostname;
@@ -13888,7 +13888,7 @@ async function pollCycleInner() {
13888
13888
  collectPanelessActivityProbes,
13889
13889
  getResponsivenessIntervalMs,
13890
13890
  occupancyQualificationClassifications
13891
- } = await import("../responsiveness-probe-NPNMNOFF.js");
13891
+ } = await import("../responsiveness-probe-P2S3UMRE.js");
13892
13892
  const probeIntervalMs = getResponsivenessIntervalMs();
13893
13893
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
13894
13894
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -13998,7 +13998,7 @@ async function pollCycleInner() {
13998
13998
  collectResponsivenessProbes,
13999
13999
  livePendingInboundOldestAgeSeconds,
14000
14000
  parkPendingInbound
14001
- } = await import("../responsiveness-probe-NPNMNOFF.js");
14001
+ } = await import("../responsiveness-probe-P2S3UMRE.js");
14002
14002
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
14003
14003
  const wedgeNow = /* @__PURE__ */ new Date();
14004
14004
  const liveAgents = agentState.persistentSessionAgents;
@@ -14154,7 +14154,7 @@ async function pollCycleInner() {
14154
14154
  }
14155
14155
  try {
14156
14156
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
14157
- const { probeSessionAuth } = await import("../session-auth-dead-CFAYSZ43.js");
14157
+ const { probeSessionAuth } = await import("../session-auth-dead-YHSQBOB4.js");
14158
14158
  const observations = [];
14159
14159
  const pendingCacheCommits = [];
14160
14160
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -17891,7 +17891,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
17891
17891
  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}`));
17892
17892
  void (async () => {
17893
17893
  try {
17894
- const { collectDiagnostics } = await import("../persistent-session-RZH67PNC.js");
17894
+ const { collectDiagnostics } = await import("../persistent-session-LTFB4M53.js");
17895
17895
  await api.post("/host/heartbeat", {
17896
17896
  host_id: hostId,
17897
17897
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
@@ -17942,7 +17942,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
17942
17942
  }
17943
17943
  try {
17944
17944
  const hostId = await getHostId();
17945
- const { collectDiagnostics } = await import("../persistent-session-RZH67PNC.js");
17945
+ const { collectDiagnostics } = await import("../persistent-session-LTFB4M53.js");
17946
17946
  await api.post("/host/heartbeat", {
17947
17947
  host_id: hostId,
17948
17948
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
@@ -18573,7 +18573,7 @@ async function processClaudePairSessions(agents) {
18573
18573
  killPairSession,
18574
18574
  pairTmuxSession,
18575
18575
  finalizeClaudePairOnboarding
18576
- } = await import("../claude-pair-runtime-W6KBVHK4.js");
18576
+ } = await import("../claude-pair-runtime-ANNQRKO4.js");
18577
18577
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
18578
18578
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
18579
18579
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -36599,6 +36599,27 @@ var FLAG_REGISTRY = [
36599
36599
  // never auto-attach an integration nobody asked for, and both ENG-8332
36600
36600
  // prerequisites above are still open.
36601
36601
  defaultValue: false
36602
+ },
36603
+ {
36604
+ key: "host-right-sizing",
36605
+ description: 'ADR-0072. Gates the HostRightSizer cron, which evaluates every managed EC2 host against 7 days of memory and CPU and (at enforce) resizes it one rung inside the host\'s own maintenance window. off = the cron returns immediately: nothing is read, nothing is written. shadow = evaluate, persist a verdict row per host, and post the weekly summary \u2014 NO resize, and no actor code runs. enforce = as shadow, plus enqueue resizes. AS OF PHASE 1 (ENG-9324) THERE IS NO ACTOR, SO `enforce` BEHAVES EXACTLY LIKE `shadow`: selecting it records the mode on each verdict row and changes nothing else, and no host is resized. This note comes out when the Phase 3 actor lands; until then treat enforce as shadow-with-a-label, not as an armed fleet. Ships dark: this mechanism ends in a stop/start of a customer production host, so an unreachable flag store must resolve to NOT acting. TWO BOUNDS WORTH KNOWING BEFORE FLIPPING. (1) off is not a stop button for in-flight work \u2014 HostResizeDispatcher reads only ec2_pending_instance_type and knows nothing about this flag, so flipping to off stops new enqueues and lets every already-enqueued host complete its stop/modify/start; combined with the ~5-minute eval cache the true blast unit is one tick of open windows. A real kill switch has to live inside the dispatcher. (2) BYO hosts (ADR-0028) are EXCLUDED in Phase 1, not merely clamped to shadow: their instances live in the customer AWS account while the cron authenticates only with the platform provisioner role, so their metrics read as empty and every evaluation would land as unknown. ADR-0072 \xA79 intends them to be shadow-only ("we recommend; they resize") and making that real needs the per-host cross_account_role_arn resolved - its own slice. Pool hosts (ADR-0042) are excluded too, while host_kind is unset in prod. Both are eligibility predicates applied by the cron, documented here so the admin page showing enforce for such an org is not read as behaviour.',
36606
+ flagType: "enum",
36607
+ allowedValues: ["off", "shadow", "enforce"],
36608
+ // Ships dark at `off`, NOT `shadow`. Diverging deliberately from
36609
+ // slack-scheduled-channel-guard, whose shadow is a free local log line:
36610
+ // THIS shadow spends a fleet-wide CloudWatch GetMetricData sweep per tick
36611
+ // and writes a row per host, so defaulting to shadow would newly bill and
36612
+ // newly write for every org that never opted in. shadow is the per-canary
36613
+ // opt-in; enforce is the audited flip after the Phase 2 review.
36614
+ defaultValue: "off",
36615
+ // Evaluated centrally, in the API cron — there is no host-side reader, so
36616
+ // no `since` and no dependence on fleet agt-cli convergence.
36617
+ // NOTE: deliberately NO envVar. ADR-0072 §9 wants this gate scoped per
36618
+ // org/host, and an envVar would be highest-precedence (ADR-0022) — a
36619
+ // literal in sst.config.ts would pin every stage and make the admin page a
36620
+ // control that does nothing, which is the ENG-8303 class exactly.
36621
+ // enforce arms automated downtime on a customer's production host.
36622
+ sensitive: true
36602
36623
  }
36603
36624
  ];
36604
36625
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
package/dist/mcp/index.js CHANGED
@@ -43538,6 +43538,27 @@ var FLAG_REGISTRY = [
43538
43538
  // never auto-attach an integration nobody asked for, and both ENG-8332
43539
43539
  // prerequisites above are still open.
43540
43540
  defaultValue: false
43541
+ },
43542
+ {
43543
+ key: "host-right-sizing",
43544
+ description: 'ADR-0072. Gates the HostRightSizer cron, which evaluates every managed EC2 host against 7 days of memory and CPU and (at enforce) resizes it one rung inside the host\'s own maintenance window. off = the cron returns immediately: nothing is read, nothing is written. shadow = evaluate, persist a verdict row per host, and post the weekly summary \u2014 NO resize, and no actor code runs. enforce = as shadow, plus enqueue resizes. AS OF PHASE 1 (ENG-9324) THERE IS NO ACTOR, SO `enforce` BEHAVES EXACTLY LIKE `shadow`: selecting it records the mode on each verdict row and changes nothing else, and no host is resized. This note comes out when the Phase 3 actor lands; until then treat enforce as shadow-with-a-label, not as an armed fleet. Ships dark: this mechanism ends in a stop/start of a customer production host, so an unreachable flag store must resolve to NOT acting. TWO BOUNDS WORTH KNOWING BEFORE FLIPPING. (1) off is not a stop button for in-flight work \u2014 HostResizeDispatcher reads only ec2_pending_instance_type and knows nothing about this flag, so flipping to off stops new enqueues and lets every already-enqueued host complete its stop/modify/start; combined with the ~5-minute eval cache the true blast unit is one tick of open windows. A real kill switch has to live inside the dispatcher. (2) BYO hosts (ADR-0028) are EXCLUDED in Phase 1, not merely clamped to shadow: their instances live in the customer AWS account while the cron authenticates only with the platform provisioner role, so their metrics read as empty and every evaluation would land as unknown. ADR-0072 \xA79 intends them to be shadow-only ("we recommend; they resize") and making that real needs the per-host cross_account_role_arn resolved - its own slice. Pool hosts (ADR-0042) are excluded too, while host_kind is unset in prod. Both are eligibility predicates applied by the cron, documented here so the admin page showing enforce for such an org is not read as behaviour.',
43545
+ flagType: "enum",
43546
+ allowedValues: ["off", "shadow", "enforce"],
43547
+ // Ships dark at `off`, NOT `shadow`. Diverging deliberately from
43548
+ // slack-scheduled-channel-guard, whose shadow is a free local log line:
43549
+ // THIS shadow spends a fleet-wide CloudWatch GetMetricData sweep per tick
43550
+ // and writes a row per host, so defaulting to shadow would newly bill and
43551
+ // newly write for every org that never opted in. shadow is the per-canary
43552
+ // opt-in; enforce is the audited flip after the Phase 2 review.
43553
+ defaultValue: "off",
43554
+ // Evaluated centrally, in the API cron — there is no host-side reader, so
43555
+ // no `since` and no dependence on fleet agt-cli convergence.
43556
+ // NOTE: deliberately NO envVar. ADR-0072 §9 wants this gate scoped per
43557
+ // org/host, and an envVar would be highest-precedence (ADR-0022) — a
43558
+ // literal in sst.config.ts would pin every stage and make the admin page a
43559
+ // control that does nothing, which is the ENG-8303 class exactly.
43560
+ // enforce arms automated downtime on a customer's production host.
43561
+ sensitive: true
43541
43562
  }
43542
43563
  ];
43543
43564
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
@@ -42349,6 +42349,27 @@ var FLAG_REGISTRY = [
42349
42349
  // never auto-attach an integration nobody asked for, and both ENG-8332
42350
42350
  // prerequisites above are still open.
42351
42351
  defaultValue: false
42352
+ },
42353
+ {
42354
+ key: "host-right-sizing",
42355
+ description: 'ADR-0072. Gates the HostRightSizer cron, which evaluates every managed EC2 host against 7 days of memory and CPU and (at enforce) resizes it one rung inside the host\'s own maintenance window. off = the cron returns immediately: nothing is read, nothing is written. shadow = evaluate, persist a verdict row per host, and post the weekly summary \u2014 NO resize, and no actor code runs. enforce = as shadow, plus enqueue resizes. AS OF PHASE 1 (ENG-9324) THERE IS NO ACTOR, SO `enforce` BEHAVES EXACTLY LIKE `shadow`: selecting it records the mode on each verdict row and changes nothing else, and no host is resized. This note comes out when the Phase 3 actor lands; until then treat enforce as shadow-with-a-label, not as an armed fleet. Ships dark: this mechanism ends in a stop/start of a customer production host, so an unreachable flag store must resolve to NOT acting. TWO BOUNDS WORTH KNOWING BEFORE FLIPPING. (1) off is not a stop button for in-flight work \u2014 HostResizeDispatcher reads only ec2_pending_instance_type and knows nothing about this flag, so flipping to off stops new enqueues and lets every already-enqueued host complete its stop/modify/start; combined with the ~5-minute eval cache the true blast unit is one tick of open windows. A real kill switch has to live inside the dispatcher. (2) BYO hosts (ADR-0028) are EXCLUDED in Phase 1, not merely clamped to shadow: their instances live in the customer AWS account while the cron authenticates only with the platform provisioner role, so their metrics read as empty and every evaluation would land as unknown. ADR-0072 \xA79 intends them to be shadow-only ("we recommend; they resize") and making that real needs the per-host cross_account_role_arn resolved - its own slice. Pool hosts (ADR-0042) are excluded too, while host_kind is unset in prod. Both are eligibility predicates applied by the cron, documented here so the admin page showing enforce for such an org is not read as behaviour.',
42356
+ flagType: "enum",
42357
+ allowedValues: ["off", "shadow", "enforce"],
42358
+ // Ships dark at `off`, NOT `shadow`. Diverging deliberately from
42359
+ // slack-scheduled-channel-guard, whose shadow is a free local log line:
42360
+ // THIS shadow spends a fleet-wide CloudWatch GetMetricData sweep per tick
42361
+ // and writes a row per host, so defaulting to shadow would newly bill and
42362
+ // newly write for every org that never opted in. shadow is the per-canary
42363
+ // opt-in; enforce is the audited flip after the Phase 2 review.
42364
+ defaultValue: "off",
42365
+ // Evaluated centrally, in the API cron — there is no host-side reader, so
42366
+ // no `since` and no dependence on fleet agt-cli convergence.
42367
+ // NOTE: deliberately NO envVar. ADR-0072 §9 wants this gate scoped per
42368
+ // org/host, and an envVar would be highest-precedence (ADR-0022) — a
42369
+ // literal in sst.config.ts would pin every stage and make the admin page a
42370
+ // control that does nothing, which is the ENG-8303 class exactly.
42371
+ // enforce arms automated downtime on a customer's production host.
42372
+ sensitive: true
42352
42373
  }
42353
42374
  ];
42354
42375
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
@@ -36832,6 +36832,27 @@ var FLAG_REGISTRY = [
36832
36832
  // never auto-attach an integration nobody asked for, and both ENG-8332
36833
36833
  // prerequisites above are still open.
36834
36834
  defaultValue: false
36835
+ },
36836
+ {
36837
+ key: "host-right-sizing",
36838
+ description: 'ADR-0072. Gates the HostRightSizer cron, which evaluates every managed EC2 host against 7 days of memory and CPU and (at enforce) resizes it one rung inside the host\'s own maintenance window. off = the cron returns immediately: nothing is read, nothing is written. shadow = evaluate, persist a verdict row per host, and post the weekly summary \u2014 NO resize, and no actor code runs. enforce = as shadow, plus enqueue resizes. AS OF PHASE 1 (ENG-9324) THERE IS NO ACTOR, SO `enforce` BEHAVES EXACTLY LIKE `shadow`: selecting it records the mode on each verdict row and changes nothing else, and no host is resized. This note comes out when the Phase 3 actor lands; until then treat enforce as shadow-with-a-label, not as an armed fleet. Ships dark: this mechanism ends in a stop/start of a customer production host, so an unreachable flag store must resolve to NOT acting. TWO BOUNDS WORTH KNOWING BEFORE FLIPPING. (1) off is not a stop button for in-flight work \u2014 HostResizeDispatcher reads only ec2_pending_instance_type and knows nothing about this flag, so flipping to off stops new enqueues and lets every already-enqueued host complete its stop/modify/start; combined with the ~5-minute eval cache the true blast unit is one tick of open windows. A real kill switch has to live inside the dispatcher. (2) BYO hosts (ADR-0028) are EXCLUDED in Phase 1, not merely clamped to shadow: their instances live in the customer AWS account while the cron authenticates only with the platform provisioner role, so their metrics read as empty and every evaluation would land as unknown. ADR-0072 \xA79 intends them to be shadow-only ("we recommend; they resize") and making that real needs the per-host cross_account_role_arn resolved - its own slice. Pool hosts (ADR-0042) are excluded too, while host_kind is unset in prod. Both are eligibility predicates applied by the cron, documented here so the admin page showing enforce for such an org is not read as behaviour.',
36839
+ flagType: "enum",
36840
+ allowedValues: ["off", "shadow", "enforce"],
36841
+ // Ships dark at `off`, NOT `shadow`. Diverging deliberately from
36842
+ // slack-scheduled-channel-guard, whose shadow is a free local log line:
36843
+ // THIS shadow spends a fleet-wide CloudWatch GetMetricData sweep per tick
36844
+ // and writes a row per host, so defaulting to shadow would newly bill and
36845
+ // newly write for every org that never opted in. shadow is the per-canary
36846
+ // opt-in; enforce is the audited flip after the Phase 2 review.
36847
+ defaultValue: "off",
36848
+ // Evaluated centrally, in the API cron — there is no host-side reader, so
36849
+ // no `since` and no dependence on fleet agt-cli convergence.
36850
+ // NOTE: deliberately NO envVar. ADR-0072 §9 wants this gate scoped per
36851
+ // org/host, and an envVar would be highest-precedence (ADR-0022) — a
36852
+ // literal in sst.config.ts would pin every stage and make the admin page a
36853
+ // control that does nothing, which is the ENG-8303 class exactly.
36854
+ // enforce arms automated downtime on a customer's production host.
36855
+ sensitive: true
36835
36856
  }
36836
36857
  ];
36837
36858
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
@@ -36976,6 +36976,27 @@ var FLAG_REGISTRY = [
36976
36976
  // never auto-attach an integration nobody asked for, and both ENG-8332
36977
36977
  // prerequisites above are still open.
36978
36978
  defaultValue: false
36979
+ },
36980
+ {
36981
+ key: "host-right-sizing",
36982
+ description: 'ADR-0072. Gates the HostRightSizer cron, which evaluates every managed EC2 host against 7 days of memory and CPU and (at enforce) resizes it one rung inside the host\'s own maintenance window. off = the cron returns immediately: nothing is read, nothing is written. shadow = evaluate, persist a verdict row per host, and post the weekly summary \u2014 NO resize, and no actor code runs. enforce = as shadow, plus enqueue resizes. AS OF PHASE 1 (ENG-9324) THERE IS NO ACTOR, SO `enforce` BEHAVES EXACTLY LIKE `shadow`: selecting it records the mode on each verdict row and changes nothing else, and no host is resized. This note comes out when the Phase 3 actor lands; until then treat enforce as shadow-with-a-label, not as an armed fleet. Ships dark: this mechanism ends in a stop/start of a customer production host, so an unreachable flag store must resolve to NOT acting. TWO BOUNDS WORTH KNOWING BEFORE FLIPPING. (1) off is not a stop button for in-flight work \u2014 HostResizeDispatcher reads only ec2_pending_instance_type and knows nothing about this flag, so flipping to off stops new enqueues and lets every already-enqueued host complete its stop/modify/start; combined with the ~5-minute eval cache the true blast unit is one tick of open windows. A real kill switch has to live inside the dispatcher. (2) BYO hosts (ADR-0028) are EXCLUDED in Phase 1, not merely clamped to shadow: their instances live in the customer AWS account while the cron authenticates only with the platform provisioner role, so their metrics read as empty and every evaluation would land as unknown. ADR-0072 \xA79 intends them to be shadow-only ("we recommend; they resize") and making that real needs the per-host cross_account_role_arn resolved - its own slice. Pool hosts (ADR-0042) are excluded too, while host_kind is unset in prod. Both are eligibility predicates applied by the cron, documented here so the admin page showing enforce for such an org is not read as behaviour.',
36983
+ flagType: "enum",
36984
+ allowedValues: ["off", "shadow", "enforce"],
36985
+ // Ships dark at `off`, NOT `shadow`. Diverging deliberately from
36986
+ // slack-scheduled-channel-guard, whose shadow is a free local log line:
36987
+ // THIS shadow spends a fleet-wide CloudWatch GetMetricData sweep per tick
36988
+ // and writes a row per host, so defaulting to shadow would newly bill and
36989
+ // newly write for every org that never opted in. shadow is the per-canary
36990
+ // opt-in; enforce is the audited flip after the Phase 2 review.
36991
+ defaultValue: "off",
36992
+ // Evaluated centrally, in the API cron — there is no host-side reader, so
36993
+ // no `since` and no dependence on fleet agt-cli convergence.
36994
+ // NOTE: deliberately NO envVar. ADR-0072 §9 wants this gate scoped per
36995
+ // org/host, and an envVar would be highest-precedence (ADR-0022) — a
36996
+ // literal in sst.config.ts would pin every stage and make the admin page a
36997
+ // control that does nothing, which is the ENG-8303 class exactly.
36998
+ // enforce arms automated downtime on a customer's production host.
36999
+ sensitive: true
36979
37000
  }
36980
37001
  ];
36981
37002
  var REGISTRY_BY_KEY = new Map(FLAG_REGISTRY.map((definition) => [definition.key, definition]));
@@ -43,8 +43,8 @@ import {
43
43
  writeDirectChatSessionState,
44
44
  writeEgressAllowlist,
45
45
  writePersistentClaudeWrapper
46
- } from "./chunk-5GDKWIB3.js";
47
- import "./chunk-HGVJVYKW.js";
46
+ } from "./chunk-57XP5OG6.js";
47
+ import "./chunk-DWFN5PMF.js";
48
48
  import "./chunk-XWVM4KPK.js";
49
49
  export {
50
50
  EGRESS_BASELINE_DOMAINS,
@@ -92,4 +92,4 @@ export {
92
92
  writeEgressAllowlist,
93
93
  writePersistentClaudeWrapper
94
94
  };
95
- //# sourceMappingURL=persistent-session-RZH67PNC.js.map
95
+ //# sourceMappingURL=persistent-session-LTFB4M53.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-5GDKWIB3.js";
4
- import "./chunk-HGVJVYKW.js";
3
+ } from "./chunk-57XP5OG6.js";
4
+ import "./chunk-DWFN5PMF.js";
5
5
  import "./chunk-XWVM4KPK.js";
6
6
 
7
7
  // src/lib/responsiveness-probe.ts
@@ -727,4 +727,4 @@ export {
727
727
  readAndResetSlackReplyBindingClassifications,
728
728
  readAndResetSlackReplyTargetClassifications
729
729
  };
730
- //# sourceMappingURL=responsiveness-probe-NPNMNOFF.js.map
730
+ //# sourceMappingURL=responsiveness-probe-P2S3UMRE.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-HGVJVYKW.js";
3
+ } from "./chunk-DWFN5PMF.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-CFAYSZ43.js.map
206
+ //# sourceMappingURL=session-auth-dead-YHSQBOB4.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.670",
3
+ "version": "0.28.671",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {