@integrity-labs/agt-cli 0.28.443 → 0.28.445

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.
@@ -34848,6 +34848,18 @@ var FLAG_REGISTRY = [
34848
34848
  // utilisation, so mutations require explicit confirmation.
34849
34849
  sensitive: true
34850
34850
  },
34851
+ {
34852
+ key: "account-enforcement-auto-billing",
34853
+ description: 'Auto-trip the ENG-7909 account-enforcement ladder on billing delinquency (the deferred auto-wire). When ON for an org, a Stripe subscription entering `past_due` (payment failed) creates an org-scoped kill_switches row at mode=warn, source=auto (agents keep running; the ladder appends the "there is an issue with your account" support notice); after the grace window (BillingEnforcementSweep, default 7d still past_due) it escalates warn\u2192mute (inbound intercepted). It NEVER auto-halts - halt stays a manual break-glass. Recovery (status back to active/trialing) clears the auto switch; a MANUAL switch is never touched. Off (default) = no auto switch is ever written, so past_due only tightens plan-cap entitlements as today. The mechanism (mode ladder, manual selector) shipped in Slices 1-3; this is the automatic trigger, so it ships dark - flip on per org from the admin Feature Flags page. Evaluated API-side only (webhook + cron); no host-side envVar (the manager materializes the resulting kill_switch, not this flag).',
34854
+ flagType: "boolean",
34855
+ // Declared safe value is `false` = no auto enforcement. Fail-safe direction: a
34856
+ // flag-DB read error must never start muting a customer's agents on its own.
34857
+ defaultValue: false,
34858
+ // Enforcement gate: turning it ON lets a billing event stop a customer's
34859
+ // inbound (mute) without an operator in the loop, so mutations require
34860
+ // explicit confirmation (ADR-0022 §4).
34861
+ sensitive: true
34862
+ },
34851
34863
  {
34852
34864
  key: "auto-pause",
34853
34865
  description: "Auto-pause agents on sustained hourly-cost breach (ENG-5561). Boolean gate; ships dark.",
@@ -35249,6 +35261,13 @@ var FLAG_REGISTRY = [
35249
35261
  defaultValue: true,
35250
35262
  envVar: "AGT_CLAUDE_MD_SKILLS_INDEX_ENABLED"
35251
35263
  },
35264
+ {
35265
+ key: "claude-md-integrations-section",
35266
+ description: "Manager injects the \"## Integrations\" bullet list (one line per installed integration, name + CLI binary + description) into the agent's project CLAUDE.md. Sibling of claude-md-skills-index and redundant for the same reason: every integration already reaches the model through a surface Claude Code presents natively - an `integration-*` skill for those that ship a skill bundle, and a dynamically-discovered MCP tool (`mcp__augmented__*`, fanned out from integration_definitions.metadata.tools via /host/mcp/tools/list) for those that do not. The list measured 2,302-3,466 chars per agent on agt-aws-1 (2026-07-27), against Claude Code's 40,000-char CLAUDE.md ceiling. Defaults OFF (ENG-8174), which also codifies the observed steady state: the section survives only ~3 minutes after each integration sync before the next provisioning pass strips it (ENG-8170), so the fleet has effectively been running without it - flip ON per org only to restore the list.",
35267
+ flagType: "boolean",
35268
+ defaultValue: false,
35269
+ envVar: "AGT_CLAUDE_MD_INTEGRATIONS_SECTION_ENABLED"
35270
+ },
35252
35271
  {
35253
35272
  key: "wedge-transient-notice",
35254
35273
  description: 'When a wedge-respawn was preceded by a transient LLM-API error (529/429/503/500 that exhausted its retries and wedged the turn), the manager writes the ENG-6058 give-up signal tagged reason=transient_overload so the channel sweeps post a friendly "I hit a brief overload \u2014 please resend" notice instead of leaving the user in silence (ENG-7360, extends ENG-6861 to the retry-exhaustion + wedge path). Boolean gate; ships dark \u2014 channel-visible copy soaks per host before going wide.',
@@ -40193,6 +40193,18 @@ var FLAG_REGISTRY = [
40193
40193
  // utilisation, so mutations require explicit confirmation.
40194
40194
  sensitive: true
40195
40195
  },
40196
+ {
40197
+ key: "account-enforcement-auto-billing",
40198
+ description: 'Auto-trip the ENG-7909 account-enforcement ladder on billing delinquency (the deferred auto-wire). When ON for an org, a Stripe subscription entering `past_due` (payment failed) creates an org-scoped kill_switches row at mode=warn, source=auto (agents keep running; the ladder appends the "there is an issue with your account" support notice); after the grace window (BillingEnforcementSweep, default 7d still past_due) it escalates warn\u2192mute (inbound intercepted). It NEVER auto-halts - halt stays a manual break-glass. Recovery (status back to active/trialing) clears the auto switch; a MANUAL switch is never touched. Off (default) = no auto switch is ever written, so past_due only tightens plan-cap entitlements as today. The mechanism (mode ladder, manual selector) shipped in Slices 1-3; this is the automatic trigger, so it ships dark - flip on per org from the admin Feature Flags page. Evaluated API-side only (webhook + cron); no host-side envVar (the manager materializes the resulting kill_switch, not this flag).',
40199
+ flagType: "boolean",
40200
+ // Declared safe value is `false` = no auto enforcement. Fail-safe direction: a
40201
+ // flag-DB read error must never start muting a customer's agents on its own.
40202
+ defaultValue: false,
40203
+ // Enforcement gate: turning it ON lets a billing event stop a customer's
40204
+ // inbound (mute) without an operator in the loop, so mutations require
40205
+ // explicit confirmation (ADR-0022 §4).
40206
+ sensitive: true
40207
+ },
40196
40208
  {
40197
40209
  key: "auto-pause",
40198
40210
  description: "Auto-pause agents on sustained hourly-cost breach (ENG-5561). Boolean gate; ships dark.",
@@ -40594,6 +40606,13 @@ var FLAG_REGISTRY = [
40594
40606
  defaultValue: true,
40595
40607
  envVar: "AGT_CLAUDE_MD_SKILLS_INDEX_ENABLED"
40596
40608
  },
40609
+ {
40610
+ key: "claude-md-integrations-section",
40611
+ description: "Manager injects the \"## Integrations\" bullet list (one line per installed integration, name + CLI binary + description) into the agent's project CLAUDE.md. Sibling of claude-md-skills-index and redundant for the same reason: every integration already reaches the model through a surface Claude Code presents natively - an `integration-*` skill for those that ship a skill bundle, and a dynamically-discovered MCP tool (`mcp__augmented__*`, fanned out from integration_definitions.metadata.tools via /host/mcp/tools/list) for those that do not. The list measured 2,302-3,466 chars per agent on agt-aws-1 (2026-07-27), against Claude Code's 40,000-char CLAUDE.md ceiling. Defaults OFF (ENG-8174), which also codifies the observed steady state: the section survives only ~3 minutes after each integration sync before the next provisioning pass strips it (ENG-8170), so the fleet has effectively been running without it - flip ON per org only to restore the list.",
40612
+ flagType: "boolean",
40613
+ defaultValue: false,
40614
+ envVar: "AGT_CLAUDE_MD_INTEGRATIONS_SECTION_ENABLED"
40615
+ },
40597
40616
  {
40598
40617
  key: "wedge-transient-notice",
40599
40618
  description: 'When a wedge-respawn was preceded by a transient LLM-API error (529/429/503/500 that exhausted its retries and wedged the turn), the manager writes the ENG-6058 give-up signal tagged reason=transient_overload so the channel sweeps post a friendly "I hit a brief overload \u2014 please resend" notice instead of leaving the user in silence (ENG-7360, extends ENG-6861 to the retry-exhaustion + wedge path). Boolean gate; ships dark \u2014 channel-visible copy soaks per host before going wide.',
@@ -34182,6 +34182,18 @@ var FLAG_REGISTRY = [
34182
34182
  // utilisation, so mutations require explicit confirmation.
34183
34183
  sensitive: true
34184
34184
  },
34185
+ {
34186
+ key: "account-enforcement-auto-billing",
34187
+ description: 'Auto-trip the ENG-7909 account-enforcement ladder on billing delinquency (the deferred auto-wire). When ON for an org, a Stripe subscription entering `past_due` (payment failed) creates an org-scoped kill_switches row at mode=warn, source=auto (agents keep running; the ladder appends the "there is an issue with your account" support notice); after the grace window (BillingEnforcementSweep, default 7d still past_due) it escalates warn\u2192mute (inbound intercepted). It NEVER auto-halts - halt stays a manual break-glass. Recovery (status back to active/trialing) clears the auto switch; a MANUAL switch is never touched. Off (default) = no auto switch is ever written, so past_due only tightens plan-cap entitlements as today. The mechanism (mode ladder, manual selector) shipped in Slices 1-3; this is the automatic trigger, so it ships dark - flip on per org from the admin Feature Flags page. Evaluated API-side only (webhook + cron); no host-side envVar (the manager materializes the resulting kill_switch, not this flag).',
34188
+ flagType: "boolean",
34189
+ // Declared safe value is `false` = no auto enforcement. Fail-safe direction: a
34190
+ // flag-DB read error must never start muting a customer's agents on its own.
34191
+ defaultValue: false,
34192
+ // Enforcement gate: turning it ON lets a billing event stop a customer's
34193
+ // inbound (mute) without an operator in the loop, so mutations require
34194
+ // explicit confirmation (ADR-0022 §4).
34195
+ sensitive: true
34196
+ },
34185
34197
  {
34186
34198
  key: "auto-pause",
34187
34199
  description: "Auto-pause agents on sustained hourly-cost breach (ENG-5561). Boolean gate; ships dark.",
@@ -34583,6 +34595,13 @@ var FLAG_REGISTRY = [
34583
34595
  defaultValue: true,
34584
34596
  envVar: "AGT_CLAUDE_MD_SKILLS_INDEX_ENABLED"
34585
34597
  },
34598
+ {
34599
+ key: "claude-md-integrations-section",
34600
+ description: "Manager injects the \"## Integrations\" bullet list (one line per installed integration, name + CLI binary + description) into the agent's project CLAUDE.md. Sibling of claude-md-skills-index and redundant for the same reason: every integration already reaches the model through a surface Claude Code presents natively - an `integration-*` skill for those that ship a skill bundle, and a dynamically-discovered MCP tool (`mcp__augmented__*`, fanned out from integration_definitions.metadata.tools via /host/mcp/tools/list) for those that do not. The list measured 2,302-3,466 chars per agent on agt-aws-1 (2026-07-27), against Claude Code's 40,000-char CLAUDE.md ceiling. Defaults OFF (ENG-8174), which also codifies the observed steady state: the section survives only ~3 minutes after each integration sync before the next provisioning pass strips it (ENG-8170), so the fleet has effectively been running without it - flip ON per org only to restore the list.",
34601
+ flagType: "boolean",
34602
+ defaultValue: false,
34603
+ envVar: "AGT_CLAUDE_MD_INTEGRATIONS_SECTION_ENABLED"
34604
+ },
34586
34605
  {
34587
34606
  key: "wedge-transient-notice",
34588
34607
  description: 'When a wedge-respawn was preceded by a transient LLM-API error (529/429/503/500 that exhausted its retries and wedged the turn), the manager writes the ENG-6058 give-up signal tagged reason=transient_overload so the channel sweeps post a friendly "I hit a brief overload \u2014 please resend" notice instead of leaving the user in silence (ENG-7360, extends ENG-6861 to the retry-exhaustion + wedge path). Boolean gate; ships dark \u2014 channel-visible copy soaks per host before going wide.',
@@ -35459,6 +35478,15 @@ function shouldReplayMarker(i) {
35459
35478
  }
35460
35479
  return true;
35461
35480
  }
35481
+ function markerGcThresholdMs(i) {
35482
+ if (i.discretionary) {
35483
+ return i.discretionaryThresholdMs != null ? Math.min(i.thresholdMs, i.discretionaryThresholdMs) : i.thresholdMs;
35484
+ }
35485
+ if (i.replayEnabled && i.hasPayload && i.replayCount === 0) {
35486
+ return Math.max(i.thresholdMs, i.hardCeilingMs);
35487
+ }
35488
+ return i.thresholdMs;
35489
+ }
35462
35490
  function isMarkerGenuinelyAged(receivedAt, nowMs, thresholdMs) {
35463
35491
  const t = Date.parse(receivedAt ?? "");
35464
35492
  return Number.isFinite(t) && t <= nowMs && nowMs - t >= thresholdMs;
@@ -40081,6 +40109,7 @@ function sweepSlackStaleMarkers(thresholdMs) {
40081
40109
  return;
40082
40110
  }
40083
40111
  const now = Date.now();
40112
+ const replayEnabled = channelReplayEnabled();
40084
40113
  let cleared = 0;
40085
40114
  for (const filename of filenames) {
40086
40115
  if (!filename.endsWith(".json")) continue;
@@ -40102,7 +40131,15 @@ function sweepSlackStaleMarkers(thresholdMs) {
40102
40131
  continue;
40103
40132
  }
40104
40133
  const { channel, thread_ts, message_ts, received_at } = marker;
40105
- const effectiveThresholdMs = marker.discretionary ? Math.min(thresholdMs, DISCRETIONARY_MARKER_MS) : thresholdMs;
40134
+ const effectiveThresholdMs = markerGcThresholdMs({
40135
+ thresholdMs,
40136
+ hardCeilingMs: STALE_MARKER_MS,
40137
+ discretionaryThresholdMs: DISCRETIONARY_MARKER_MS,
40138
+ discretionary: marker.discretionary,
40139
+ hasPayload: Boolean(marker.payload),
40140
+ replayCount: marker.replay_count ?? 0,
40141
+ replayEnabled
40142
+ });
40106
40143
  const structurallyBroken = !channel || !thread_ts || !message_ts;
40107
40144
  const timeStale = isPendingMarkerStale(received_at, now, effectiveThresholdMs);
40108
40145
  if (structurallyBroken || timeStale) {
@@ -34484,6 +34484,18 @@ var FLAG_REGISTRY = [
34484
34484
  // utilisation, so mutations require explicit confirmation.
34485
34485
  sensitive: true
34486
34486
  },
34487
+ {
34488
+ key: "account-enforcement-auto-billing",
34489
+ description: 'Auto-trip the ENG-7909 account-enforcement ladder on billing delinquency (the deferred auto-wire). When ON for an org, a Stripe subscription entering `past_due` (payment failed) creates an org-scoped kill_switches row at mode=warn, source=auto (agents keep running; the ladder appends the "there is an issue with your account" support notice); after the grace window (BillingEnforcementSweep, default 7d still past_due) it escalates warn\u2192mute (inbound intercepted). It NEVER auto-halts - halt stays a manual break-glass. Recovery (status back to active/trialing) clears the auto switch; a MANUAL switch is never touched. Off (default) = no auto switch is ever written, so past_due only tightens plan-cap entitlements as today. The mechanism (mode ladder, manual selector) shipped in Slices 1-3; this is the automatic trigger, so it ships dark - flip on per org from the admin Feature Flags page. Evaluated API-side only (webhook + cron); no host-side envVar (the manager materializes the resulting kill_switch, not this flag).',
34490
+ flagType: "boolean",
34491
+ // Declared safe value is `false` = no auto enforcement. Fail-safe direction: a
34492
+ // flag-DB read error must never start muting a customer's agents on its own.
34493
+ defaultValue: false,
34494
+ // Enforcement gate: turning it ON lets a billing event stop a customer's
34495
+ // inbound (mute) without an operator in the loop, so mutations require
34496
+ // explicit confirmation (ADR-0022 §4).
34497
+ sensitive: true
34498
+ },
34487
34499
  {
34488
34500
  key: "auto-pause",
34489
34501
  description: "Auto-pause agents on sustained hourly-cost breach (ENG-5561). Boolean gate; ships dark.",
@@ -34885,6 +34897,13 @@ var FLAG_REGISTRY = [
34885
34897
  defaultValue: true,
34886
34898
  envVar: "AGT_CLAUDE_MD_SKILLS_INDEX_ENABLED"
34887
34899
  },
34900
+ {
34901
+ key: "claude-md-integrations-section",
34902
+ description: "Manager injects the \"## Integrations\" bullet list (one line per installed integration, name + CLI binary + description) into the agent's project CLAUDE.md. Sibling of claude-md-skills-index and redundant for the same reason: every integration already reaches the model through a surface Claude Code presents natively - an `integration-*` skill for those that ship a skill bundle, and a dynamically-discovered MCP tool (`mcp__augmented__*`, fanned out from integration_definitions.metadata.tools via /host/mcp/tools/list) for those that do not. The list measured 2,302-3,466 chars per agent on agt-aws-1 (2026-07-27), against Claude Code's 40,000-char CLAUDE.md ceiling. Defaults OFF (ENG-8174), which also codifies the observed steady state: the section survives only ~3 minutes after each integration sync before the next provisioning pass strips it (ENG-8170), so the fleet has effectively been running without it - flip ON per org only to restore the list.",
34903
+ flagType: "boolean",
34904
+ defaultValue: false,
34905
+ envVar: "AGT_CLAUDE_MD_INTEGRATIONS_SECTION_ENABLED"
34906
+ },
34888
34907
  {
34889
34908
  key: "wedge-transient-notice",
34890
34909
  description: 'When a wedge-respawn was preceded by a transient LLM-API error (529/429/503/500 that exhausted its retries and wedged the turn), the manager writes the ENG-6058 give-up signal tagged reason=transient_overload so the channel sweeps post a friendly "I hit a brief overload \u2014 please resend" notice instead of leaving the user in silence (ENG-7360, extends ENG-6861 to the retry-exhaustion + wedge path). Boolean gate; ships dark \u2014 channel-visible copy soaks per host before going wide.',
@@ -37905,6 +37924,15 @@ function shouldReplayMarker(i) {
37905
37924
  }
37906
37925
  return true;
37907
37926
  }
37927
+ function markerGcThresholdMs(i) {
37928
+ if (i.discretionary) {
37929
+ return i.discretionaryThresholdMs != null ? Math.min(i.thresholdMs, i.discretionaryThresholdMs) : i.thresholdMs;
37930
+ }
37931
+ if (i.replayEnabled && i.hasPayload && i.replayCount === 0) {
37932
+ return Math.max(i.thresholdMs, i.hardCeilingMs);
37933
+ }
37934
+ return i.thresholdMs;
37935
+ }
37908
37936
  function isMarkerGenuinelyAged(receivedAt, nowMs, thresholdMs) {
37909
37937
  const t = Date.parse(receivedAt ?? "");
37910
37938
  return Number.isFinite(t) && t <= nowMs && nowMs - t >= thresholdMs;
@@ -39851,6 +39879,7 @@ function sweepTelegramStaleMarkers(thresholdMs) {
39851
39879
  return;
39852
39880
  }
39853
39881
  const now = Date.now();
39882
+ const replayEnabled = channelReplayEnabled();
39854
39883
  let cleared = 0;
39855
39884
  for (const filename of filenames) {
39856
39885
  if (!filename.endsWith(".json")) continue;
@@ -39872,10 +39901,17 @@ function sweepTelegramStaleMarkers(thresholdMs) {
39872
39901
  continue;
39873
39902
  }
39874
39903
  const { chat_id, message_id, received_at } = marker;
39904
+ const effectiveThresholdMs = markerGcThresholdMs({
39905
+ thresholdMs,
39906
+ hardCeilingMs: STALE_MARKER_MS,
39907
+ hasPayload: Boolean(marker.payload),
39908
+ replayCount: marker.replay_count ?? 0,
39909
+ replayEnabled
39910
+ });
39875
39911
  const structurallyBroken = !chat_id || !message_id;
39876
- const timeStale = isPendingMarkerStale(received_at, now, thresholdMs);
39912
+ const timeStale = isPendingMarkerStale(received_at, now, effectiveThresholdMs);
39877
39913
  if (structurallyBroken || timeStale) {
39878
- if (!structurallyBroken && isMarkerGenuinelyAged(received_at, now, thresholdMs) && marker.payload) {
39914
+ if (!structurallyBroken && isMarkerGenuinelyAged(received_at, now, effectiveThresholdMs) && marker.payload) {
39879
39915
  recordChannelDeflection(
39880
39916
  AGENT_DIR,
39881
39917
  "telegram",
@@ -36,7 +36,7 @@ import {
36
36
  writeDirectChatSessionState,
37
37
  writeEgressAllowlist,
38
38
  writePersistentClaudeWrapper
39
- } from "./chunk-IQX7TMYZ.js";
39
+ } from "./chunk-3CTWN3L4.js";
40
40
  import "./chunk-XWVM4KPK.js";
41
41
  export {
42
42
  EGRESS_BASELINE_DOMAINS,
@@ -77,4 +77,4 @@ export {
77
77
  writeEgressAllowlist,
78
78
  writePersistentClaudeWrapper
79
79
  };
80
- //# sourceMappingURL=persistent-session-6SCIPYQI.js.map
80
+ //# sourceMappingURL=persistent-session-NTHAZ2LZ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-IQX7TMYZ.js";
3
+ } from "./chunk-3CTWN3L4.js";
4
4
  import "./chunk-XWVM4KPK.js";
5
5
 
6
6
  // src/lib/responsiveness-probe.ts
@@ -471,4 +471,4 @@ export {
471
471
  readAndResetSlackReplyBindingClassifications,
472
472
  readAndResetSlackReplyTargetClassifications
473
473
  };
474
- //# sourceMappingURL=responsiveness-probe-WHDWK62P.js.map
474
+ //# sourceMappingURL=responsiveness-probe-7FDKX4N6.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.443",
3
+ "version": "0.28.445",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {