@integrity-labs/agt-cli 0.28.452 → 0.28.454

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.
@@ -35119,15 +35119,24 @@ var FLAG_REGISTRY = [
35119
35119
  // a deliberate availability trade (the refusal is free, but it is still a
35120
35120
  // dispatch the operator previously suppressed), so flipping toward it is an
35121
35121
  // audited change (ADR-0022 sensitive-flag confirm).
35122
- sensitive: true
35123
- // ENG-8149: `since` is the agt-cli version that first carries
35124
- // resolveUsageLimitReactiveMode + the MCP watcher. It cannot be known before
35125
- // this lands (the auto-publish patch-bumps on merge), and an undefined
35126
- // `since` makes the flip-reach modal claim FULL reach - true for flags that
35127
- // predate the reach work, wrong for a NEW host-read flag whose reader older
35128
- // hosts simply do not have. Backfilled by a follow-up commit once the
35129
- // publishing run reports the version. Excluded from projectDefinition, so
35122
+ sensitive: true,
35123
+ // ENG-8149 / ENG-8229: the agt-cli that first carries
35124
+ // resolveUsageLimitReactiveMode in ALL THREE channel servers - published from
35125
+ // the ENG-8207 merge 0294fa1a8. Without this the flip-reach modal reports FULL
35126
+ // reach, because an undefined `since` means "every host can honour it" - true
35127
+ // for flags that predate the reach work, wrong for a NEW host-read flag whose
35128
+ // reader older hosts simply do not have. Excluded from projectDefinition, so
35130
35129
  // setting it does not roll FLAGS_SCHEMA_VERSION.
35130
+ //
35131
+ // Deliberately the LATER of the two versions this flag's reader shipped in.
35132
+ // Unlike its siblings, this reader landed in two stages: direct-chat at the
35133
+ // ENG-8201 Slice 2 publish, slack + telegram only at 0.28.450 (ENG-8207) - and
35134
+ // `since` is one version per flag, so it cannot express "partially honoured".
35135
+ // A host in between genuinely honours the flag for direct-chat and is still
35136
+ // classified `stale`. That understates reach rather than overstating it, which
35137
+ // is the safe direction, and it is the useful one while the flag sits at
35138
+ // enforce and slack/telegram adoption is what an operator needs to track.
35139
+ since: "0.28.450"
35131
35140
  },
35132
35141
  {
35133
35142
  key: "slack-hot-thread-guard",
@@ -35796,6 +35805,14 @@ function computeFlagsSchemaVersion() {
35796
35805
  }
35797
35806
  var FLAGS_SCHEMA_VERSION = computeFlagsSchemaVersion();
35798
35807
 
35808
+ // ../core/dist/restart/breaker-thresholds.js
35809
+ var RESTART_BREAKER_PROVISIONING_MAX = 5;
35810
+ var BIND_FAILURE_QUARANTINE_THRESHOLD = deriveBindFailureQuarantineThreshold(RESTART_BREAKER_PROVISIONING_MAX);
35811
+ function deriveBindFailureQuarantineThreshold(provisioningMax) {
35812
+ return Math.max(2, provisioningMax - 2);
35813
+ }
35814
+ var MIN_PROVISIONING_MAX_FOR_QUARANTINE_ORDERING = BIND_FAILURE_QUARANTINE_THRESHOLD + 1;
35815
+
35799
35816
  // src/usage-limit-notice.ts
35800
35817
  function usageLimitMarkerPath(codeName) {
35801
35818
  if (!codeName) return null;
@@ -40464,15 +40464,24 @@ var FLAG_REGISTRY = [
40464
40464
  // a deliberate availability trade (the refusal is free, but it is still a
40465
40465
  // dispatch the operator previously suppressed), so flipping toward it is an
40466
40466
  // audited change (ADR-0022 sensitive-flag confirm).
40467
- sensitive: true
40468
- // ENG-8149: `since` is the agt-cli version that first carries
40469
- // resolveUsageLimitReactiveMode + the MCP watcher. It cannot be known before
40470
- // this lands (the auto-publish patch-bumps on merge), and an undefined
40471
- // `since` makes the flip-reach modal claim FULL reach - true for flags that
40472
- // predate the reach work, wrong for a NEW host-read flag whose reader older
40473
- // hosts simply do not have. Backfilled by a follow-up commit once the
40474
- // publishing run reports the version. Excluded from projectDefinition, so
40467
+ sensitive: true,
40468
+ // ENG-8149 / ENG-8229: the agt-cli that first carries
40469
+ // resolveUsageLimitReactiveMode in ALL THREE channel servers - published from
40470
+ // the ENG-8207 merge 0294fa1a8. Without this the flip-reach modal reports FULL
40471
+ // reach, because an undefined `since` means "every host can honour it" - true
40472
+ // for flags that predate the reach work, wrong for a NEW host-read flag whose
40473
+ // reader older hosts simply do not have. Excluded from projectDefinition, so
40475
40474
  // setting it does not roll FLAGS_SCHEMA_VERSION.
40475
+ //
40476
+ // Deliberately the LATER of the two versions this flag's reader shipped in.
40477
+ // Unlike its siblings, this reader landed in two stages: direct-chat at the
40478
+ // ENG-8201 Slice 2 publish, slack + telegram only at 0.28.450 (ENG-8207) - and
40479
+ // `since` is one version per flag, so it cannot express "partially honoured".
40480
+ // A host in between genuinely honours the flag for direct-chat and is still
40481
+ // classified `stale`. That understates reach rather than overstating it, which
40482
+ // is the safe direction, and it is the useful one while the flag sits at
40483
+ // enforce and slack/telegram adoption is what an operator needs to track.
40484
+ since: "0.28.450"
40476
40485
  },
40477
40486
  {
40478
40487
  key: "slack-hot-thread-guard",
@@ -41141,6 +41150,14 @@ function computeFlagsSchemaVersion() {
41141
41150
  }
41142
41151
  var FLAGS_SCHEMA_VERSION = computeFlagsSchemaVersion();
41143
41152
 
41153
+ // ../core/dist/restart/breaker-thresholds.js
41154
+ var RESTART_BREAKER_PROVISIONING_MAX = 5;
41155
+ var BIND_FAILURE_QUARANTINE_THRESHOLD = deriveBindFailureQuarantineThreshold(RESTART_BREAKER_PROVISIONING_MAX);
41156
+ function deriveBindFailureQuarantineThreshold(provisioningMax) {
41157
+ return Math.max(2, provisioningMax - 2);
41158
+ }
41159
+ var MIN_PROVISIONING_MAX_FOR_QUARANTINE_ORDERING = BIND_FAILURE_QUARANTINE_THRESHOLD + 1;
41160
+
41144
41161
  // src/identity.ts
41145
41162
  var IdentityError = class extends Error {
41146
41163
  status;
@@ -7633,6 +7633,42 @@ var require__ = __commonJS({
7633
7633
  }
7634
7634
  });
7635
7635
 
7636
+ // ../core/dist/alerts/snooze.js
7637
+ var FIXED_SECONDS;
7638
+ var init_snooze = __esm({
7639
+ "../core/dist/alerts/snooze.js"() {
7640
+ "use strict";
7641
+ FIXED_SECONDS = {
7642
+ "15m": 15 * 60,
7643
+ "1h": 60 * 60,
7644
+ "4h": 4 * 60 * 60
7645
+ };
7646
+ }
7647
+ });
7648
+
7649
+ // ../core/dist/channels/slack-block-kit.js
7650
+ function decodeActionId(actionId) {
7651
+ const m = ACTION_ID_RE.exec(actionId);
7652
+ if (!m)
7653
+ return null;
7654
+ return { callbackId: m[1], token: m[2] };
7655
+ }
7656
+ function isRoutableActionId(actionId) {
7657
+ return decodeActionId(actionId) !== null;
7658
+ }
7659
+ function isLinkButton(element) {
7660
+ return typeof element.url === "string" && element.url.length > 0;
7661
+ }
7662
+ var ACTION_ID_RE, UNROUTABLE_ACTION_ID_MESSAGE;
7663
+ var init_slack_block_kit = __esm({
7664
+ "../core/dist/channels/slack-block-kit.js"() {
7665
+ "use strict";
7666
+ init_snooze();
7667
+ ACTION_ID_RE = /^aug:([0-9a-f-]{36}):([A-Za-z0-9_-]{1,200})$/;
7668
+ UNROUTABLE_ACTION_ID_MESSAGE = "interactive buttons must be created with the `request_buttons` tool \u2014 it mints the `aug:<callback-id>:<token>` action_id that makes a tap routable. A hand-written action_id renders fine but its click is silently dropped: the agent is never notified and the buttons are never swapped for the chosen value. For a non-interactive button, set `url` to make it a link button.";
7669
+ }
7670
+ });
7671
+
7636
7672
  // ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/nodes/identity.js
7637
7673
  var require_identity = __commonJS({
7638
7674
  "../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/nodes/identity.js"(exports) {
@@ -22561,7 +22597,7 @@ __export(slack_block_kit_runtime_exports, {
22561
22597
  apiCall: () => apiCall,
22562
22598
  buildAskUserBlocks: () => buildAskUserBlocks,
22563
22599
  createPendingInteraction: () => createPendingInteraction,
22564
- decodeActionId: () => decodeActionId,
22600
+ decodeActionId: () => decodeActionId2,
22565
22601
  encodeActionId: () => encodeActionId2,
22566
22602
  generateOptionToken: () => generateOptionToken,
22567
22603
  getMutedNotifyChannels: () => getMutedNotifyChannels,
@@ -22682,6 +22718,8 @@ function validateActionsBlock(b, path, push) {
22682
22718
  push(`${path}.elements[${i}].action_id`, "button requires a non-empty `action_id`");
22683
22719
  } else if (actionId.length > SLACK_LIMITS.identifierChars) {
22684
22720
  push(`${path}.elements[${i}].action_id`, `max ${SLACK_LIMITS.identifierChars} chars`);
22721
+ } else if (!isRoutableActionId(actionId) && !isLinkButton(el)) {
22722
+ push(`${path}.elements[${i}].action_id`, UNROUTABLE_ACTION_ID_MESSAGE);
22685
22723
  }
22686
22724
  const value = el.value;
22687
22725
  if (value !== void 0) {
@@ -22712,8 +22750,8 @@ function validateTextObject(text, path, maxChars, allowedTypes, push) {
22712
22750
  function encodeActionId2(callbackId, token) {
22713
22751
  return `aug:${callbackId}:${token}`;
22714
22752
  }
22715
- function decodeActionId(actionId) {
22716
- const m = ACTION_ID_RE.exec(actionId);
22753
+ function decodeActionId2(actionId) {
22754
+ const m = ACTION_ID_RE2.exec(actionId);
22717
22755
  if (!m) return null;
22718
22756
  return { callbackId: m[1], token: m[2] };
22719
22757
  }
@@ -22806,11 +22844,12 @@ async function getMutedNotifyChannels(cfg) {
22806
22844
  return [];
22807
22845
  }
22808
22846
  }
22809
- var SLACK_LIMITS, SUPPORTED_BLOCK_TYPES, SUPPORTED_ACTION_ELEMENTS, ACTION_ID_RE;
22847
+ var SLACK_LIMITS, SUPPORTED_BLOCK_TYPES, SUPPORTED_ACTION_ELEMENTS, ACTION_ID_RE2;
22810
22848
  var init_slack_block_kit_runtime = __esm({
22811
22849
  "src/slack-block-kit-runtime.ts"() {
22812
22850
  "use strict";
22813
22851
  init_ask_user_runtime();
22852
+ init_slack_block_kit();
22814
22853
  init_ask_user_runtime();
22815
22854
  SLACK_LIMITS = {
22816
22855
  blocksPerMessage: 50,
@@ -22825,7 +22864,7 @@ var init_slack_block_kit_runtime = __esm({
22825
22864
  };
22826
22865
  SUPPORTED_BLOCK_TYPES = ["header", "section", "divider", "context", "actions"];
22827
22866
  SUPPORTED_ACTION_ELEMENTS = ["button"];
22828
- ACTION_ID_RE = /^aug:([0-9a-f-]{36}):([A-Za-z0-9_-]{1,200})$/;
22867
+ ACTION_ID_RE2 = /^aug:([0-9a-f-]{36}):([A-Za-z0-9_-]{1,200})$/;
22829
22868
  }
22830
22869
  });
22831
22870
 
@@ -31308,12 +31347,8 @@ var compiledCharter = ajv.compile(charterSchema);
31308
31347
  var compiledTools = ajv.compile(toolsSchema);
31309
31348
  var compiledIntegrationMetadata = ajv.compile(integrationMetadataSchema);
31310
31349
 
31311
- // ../core/dist/alerts/snooze.js
31312
- var FIXED_SECONDS = {
31313
- "15m": 15 * 60,
31314
- "1h": 60 * 60,
31315
- "4h": 4 * 60 * 60
31316
- };
31350
+ // ../core/dist/integrations/integration-broker/card-renderer.js
31351
+ init_slack_block_kit();
31317
31352
 
31318
31353
  // ../core/dist/channels/registry.js
31319
31354
  var CHANNEL_REGISTRY = [
@@ -31779,6 +31814,7 @@ var MSTEAMS_SCOPE_PRESETS = {
31779
31814
  };
31780
31815
 
31781
31816
  // ../core/dist/channels/kanban-card-state.js
31817
+ init_slack_block_kit();
31782
31818
  var KANBAN_TERMINAL_STATUSES = /* @__PURE__ */ new Set([
31783
31819
  "done",
31784
31820
  "failed",
@@ -34061,6 +34097,9 @@ var WAITING_KINDS = [
34061
34097
  ];
34062
34098
  var WAITING_KIND_SET = new Set(WAITING_KINDS);
34063
34099
 
34100
+ // ../core/dist/alerts/index.js
34101
+ init_snooze();
34102
+
34064
34103
  // ../core/dist/conversations/metrics.js
34065
34104
  var PERIOD_CONFIG = {
34066
34105
  "24h": { windowMs: 24 * 60 * 60 * 1e3, bucket: "hour" },
@@ -34688,15 +34727,24 @@ var FLAG_REGISTRY = [
34688
34727
  // a deliberate availability trade (the refusal is free, but it is still a
34689
34728
  // dispatch the operator previously suppressed), so flipping toward it is an
34690
34729
  // audited change (ADR-0022 sensitive-flag confirm).
34691
- sensitive: true
34692
- // ENG-8149: `since` is the agt-cli version that first carries
34693
- // resolveUsageLimitReactiveMode + the MCP watcher. It cannot be known before
34694
- // this lands (the auto-publish patch-bumps on merge), and an undefined
34695
- // `since` makes the flip-reach modal claim FULL reach - true for flags that
34696
- // predate the reach work, wrong for a NEW host-read flag whose reader older
34697
- // hosts simply do not have. Backfilled by a follow-up commit once the
34698
- // publishing run reports the version. Excluded from projectDefinition, so
34730
+ sensitive: true,
34731
+ // ENG-8149 / ENG-8229: the agt-cli that first carries
34732
+ // resolveUsageLimitReactiveMode in ALL THREE channel servers - published from
34733
+ // the ENG-8207 merge 0294fa1a8. Without this the flip-reach modal reports FULL
34734
+ // reach, because an undefined `since` means "every host can honour it" - true
34735
+ // for flags that predate the reach work, wrong for a NEW host-read flag whose
34736
+ // reader older hosts simply do not have. Excluded from projectDefinition, so
34699
34737
  // setting it does not roll FLAGS_SCHEMA_VERSION.
34738
+ //
34739
+ // Deliberately the LATER of the two versions this flag's reader shipped in.
34740
+ // Unlike its siblings, this reader landed in two stages: direct-chat at the
34741
+ // ENG-8201 Slice 2 publish, slack + telegram only at 0.28.450 (ENG-8207) - and
34742
+ // `since` is one version per flag, so it cannot express "partially honoured".
34743
+ // A host in between genuinely honours the flag for direct-chat and is still
34744
+ // classified `stale`. That understates reach rather than overstating it, which
34745
+ // is the safe direction, and it is the useful one while the flag sits at
34746
+ // enforce and slack/telegram adoption is what an operator needs to track.
34747
+ since: "0.28.450"
34700
34748
  },
34701
34749
  {
34702
34750
  key: "slack-hot-thread-guard",
@@ -35365,6 +35413,14 @@ function computeFlagsSchemaVersion() {
35365
35413
  }
35366
35414
  var FLAGS_SCHEMA_VERSION = computeFlagsSchemaVersion();
35367
35415
 
35416
+ // ../core/dist/restart/breaker-thresholds.js
35417
+ var RESTART_BREAKER_PROVISIONING_MAX = 5;
35418
+ var BIND_FAILURE_QUARANTINE_THRESHOLD = deriveBindFailureQuarantineThreshold(RESTART_BREAKER_PROVISIONING_MAX);
35419
+ function deriveBindFailureQuarantineThreshold(provisioningMax) {
35420
+ return Math.max(2, provisioningMax - 2);
35421
+ }
35422
+ var MIN_PROVISIONING_MAX_FOR_QUARANTINE_ORDERING = BIND_FAILURE_QUARANTINE_THRESHOLD + 1;
35423
+
35368
35424
  // src/usage-limit-notice.ts
35369
35425
  function usageLimitMarkerPath(codeName) {
35370
35426
  if (!codeName) return null;
@@ -7633,6 +7633,42 @@ var require__ = __commonJS({
7633
7633
  }
7634
7634
  });
7635
7635
 
7636
+ // ../core/dist/alerts/snooze.js
7637
+ var FIXED_SECONDS;
7638
+ var init_snooze = __esm({
7639
+ "../core/dist/alerts/snooze.js"() {
7640
+ "use strict";
7641
+ FIXED_SECONDS = {
7642
+ "15m": 15 * 60,
7643
+ "1h": 60 * 60,
7644
+ "4h": 4 * 60 * 60
7645
+ };
7646
+ }
7647
+ });
7648
+
7649
+ // ../core/dist/channels/slack-block-kit.js
7650
+ function decodeActionId(actionId) {
7651
+ const m = ACTION_ID_RE.exec(actionId);
7652
+ if (!m)
7653
+ return null;
7654
+ return { callbackId: m[1], token: m[2] };
7655
+ }
7656
+ function isRoutableActionId(actionId) {
7657
+ return decodeActionId(actionId) !== null;
7658
+ }
7659
+ function isLinkButton(element) {
7660
+ return typeof element.url === "string" && element.url.length > 0;
7661
+ }
7662
+ var ACTION_ID_RE, UNROUTABLE_ACTION_ID_MESSAGE;
7663
+ var init_slack_block_kit = __esm({
7664
+ "../core/dist/channels/slack-block-kit.js"() {
7665
+ "use strict";
7666
+ init_snooze();
7667
+ ACTION_ID_RE = /^aug:([0-9a-f-]{36}):([A-Za-z0-9_-]{1,200})$/;
7668
+ UNROUTABLE_ACTION_ID_MESSAGE = "interactive buttons must be created with the `request_buttons` tool \u2014 it mints the `aug:<callback-id>:<token>` action_id that makes a tap routable. A hand-written action_id renders fine but its click is silently dropped: the agent is never notified and the buttons are never swapped for the chosen value. For a non-interactive button, set `url` to make it a link button.";
7669
+ }
7670
+ });
7671
+
7636
7672
  // ../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/nodes/identity.js
7637
7673
  var require_identity = __commonJS({
7638
7674
  "../../node_modules/.pnpm/yaml@2.8.4/node_modules/yaml/dist/nodes/identity.js"(exports) {
@@ -22561,7 +22597,7 @@ __export(slack_block_kit_runtime_exports, {
22561
22597
  apiCall: () => apiCall,
22562
22598
  buildAskUserBlocks: () => buildAskUserBlocks,
22563
22599
  createPendingInteraction: () => createPendingInteraction,
22564
- decodeActionId: () => decodeActionId,
22600
+ decodeActionId: () => decodeActionId2,
22565
22601
  encodeActionId: () => encodeActionId2,
22566
22602
  generateOptionToken: () => generateOptionToken,
22567
22603
  getMutedNotifyChannels: () => getMutedNotifyChannels,
@@ -22682,6 +22718,8 @@ function validateActionsBlock(b, path, push) {
22682
22718
  push(`${path}.elements[${i}].action_id`, "button requires a non-empty `action_id`");
22683
22719
  } else if (actionId.length > SLACK_LIMITS.identifierChars) {
22684
22720
  push(`${path}.elements[${i}].action_id`, `max ${SLACK_LIMITS.identifierChars} chars`);
22721
+ } else if (!isRoutableActionId(actionId) && !isLinkButton(el)) {
22722
+ push(`${path}.elements[${i}].action_id`, UNROUTABLE_ACTION_ID_MESSAGE);
22685
22723
  }
22686
22724
  const value = el.value;
22687
22725
  if (value !== void 0) {
@@ -22712,8 +22750,8 @@ function validateTextObject(text, path, maxChars, allowedTypes, push) {
22712
22750
  function encodeActionId2(callbackId, token) {
22713
22751
  return `aug:${callbackId}:${token}`;
22714
22752
  }
22715
- function decodeActionId(actionId) {
22716
- const m = ACTION_ID_RE.exec(actionId);
22753
+ function decodeActionId2(actionId) {
22754
+ const m = ACTION_ID_RE2.exec(actionId);
22717
22755
  if (!m) return null;
22718
22756
  return { callbackId: m[1], token: m[2] };
22719
22757
  }
@@ -22806,11 +22844,12 @@ async function getMutedNotifyChannels(cfg) {
22806
22844
  return [];
22807
22845
  }
22808
22846
  }
22809
- var SLACK_LIMITS, SUPPORTED_BLOCK_TYPES, SUPPORTED_ACTION_ELEMENTS, ACTION_ID_RE;
22847
+ var SLACK_LIMITS, SUPPORTED_BLOCK_TYPES, SUPPORTED_ACTION_ELEMENTS, ACTION_ID_RE2;
22810
22848
  var init_slack_block_kit_runtime = __esm({
22811
22849
  "src/slack-block-kit-runtime.ts"() {
22812
22850
  "use strict";
22813
22851
  init_ask_user_runtime();
22852
+ init_slack_block_kit();
22814
22853
  init_ask_user_runtime();
22815
22854
  SLACK_LIMITS = {
22816
22855
  blocksPerMessage: 50,
@@ -22825,7 +22864,7 @@ var init_slack_block_kit_runtime = __esm({
22825
22864
  };
22826
22865
  SUPPORTED_BLOCK_TYPES = ["header", "section", "divider", "context", "actions"];
22827
22866
  SUPPORTED_ACTION_ELEMENTS = ["button"];
22828
- ACTION_ID_RE = /^aug:([0-9a-f-]{36}):([A-Za-z0-9_-]{1,200})$/;
22867
+ ACTION_ID_RE2 = /^aug:([0-9a-f-]{36}):([A-Za-z0-9_-]{1,200})$/;
22829
22868
  }
22830
22869
  });
22831
22870
 
@@ -31610,12 +31649,8 @@ var compiledCharter = ajv.compile(charterSchema);
31610
31649
  var compiledTools = ajv.compile(toolsSchema);
31611
31650
  var compiledIntegrationMetadata = ajv.compile(integrationMetadataSchema);
31612
31651
 
31613
- // ../core/dist/alerts/snooze.js
31614
- var FIXED_SECONDS = {
31615
- "15m": 15 * 60,
31616
- "1h": 60 * 60,
31617
- "4h": 4 * 60 * 60
31618
- };
31652
+ // ../core/dist/integrations/integration-broker/card-renderer.js
31653
+ init_slack_block_kit();
31619
31654
 
31620
31655
  // ../core/dist/channels/registry.js
31621
31656
  var CHANNEL_REGISTRY = [
@@ -32081,6 +32116,7 @@ var MSTEAMS_SCOPE_PRESETS = {
32081
32116
  };
32082
32117
 
32083
32118
  // ../core/dist/channels/kanban-card-state.js
32119
+ init_slack_block_kit();
32084
32120
  var KANBAN_TERMINAL_STATUSES = /* @__PURE__ */ new Set([
32085
32121
  "done",
32086
32122
  "failed",
@@ -34363,6 +34399,9 @@ var WAITING_KINDS = [
34363
34399
  ];
34364
34400
  var WAITING_KIND_SET = new Set(WAITING_KINDS);
34365
34401
 
34402
+ // ../core/dist/alerts/index.js
34403
+ init_snooze();
34404
+
34366
34405
  // ../core/dist/conversations/metrics.js
34367
34406
  var PERIOD_CONFIG = {
34368
34407
  "24h": { windowMs: 24 * 60 * 60 * 1e3, bucket: "hour" },
@@ -34990,15 +35029,24 @@ var FLAG_REGISTRY = [
34990
35029
  // a deliberate availability trade (the refusal is free, but it is still a
34991
35030
  // dispatch the operator previously suppressed), so flipping toward it is an
34992
35031
  // audited change (ADR-0022 sensitive-flag confirm).
34993
- sensitive: true
34994
- // ENG-8149: `since` is the agt-cli version that first carries
34995
- // resolveUsageLimitReactiveMode + the MCP watcher. It cannot be known before
34996
- // this lands (the auto-publish patch-bumps on merge), and an undefined
34997
- // `since` makes the flip-reach modal claim FULL reach - true for flags that
34998
- // predate the reach work, wrong for a NEW host-read flag whose reader older
34999
- // hosts simply do not have. Backfilled by a follow-up commit once the
35000
- // publishing run reports the version. Excluded from projectDefinition, so
35032
+ sensitive: true,
35033
+ // ENG-8149 / ENG-8229: the agt-cli that first carries
35034
+ // resolveUsageLimitReactiveMode in ALL THREE channel servers - published from
35035
+ // the ENG-8207 merge 0294fa1a8. Without this the flip-reach modal reports FULL
35036
+ // reach, because an undefined `since` means "every host can honour it" - true
35037
+ // for flags that predate the reach work, wrong for a NEW host-read flag whose
35038
+ // reader older hosts simply do not have. Excluded from projectDefinition, so
35001
35039
  // setting it does not roll FLAGS_SCHEMA_VERSION.
35040
+ //
35041
+ // Deliberately the LATER of the two versions this flag's reader shipped in.
35042
+ // Unlike its siblings, this reader landed in two stages: direct-chat at the
35043
+ // ENG-8201 Slice 2 publish, slack + telegram only at 0.28.450 (ENG-8207) - and
35044
+ // `since` is one version per flag, so it cannot express "partially honoured".
35045
+ // A host in between genuinely honours the flag for direct-chat and is still
35046
+ // classified `stale`. That understates reach rather than overstating it, which
35047
+ // is the safe direction, and it is the useful one while the flag sits at
35048
+ // enforce and slack/telegram adoption is what an operator needs to track.
35049
+ since: "0.28.450"
35002
35050
  },
35003
35051
  {
35004
35052
  key: "slack-hot-thread-guard",
@@ -35667,6 +35715,14 @@ function computeFlagsSchemaVersion() {
35667
35715
  }
35668
35716
  var FLAGS_SCHEMA_VERSION = computeFlagsSchemaVersion();
35669
35717
 
35718
+ // ../core/dist/restart/breaker-thresholds.js
35719
+ var RESTART_BREAKER_PROVISIONING_MAX = 5;
35720
+ var BIND_FAILURE_QUARANTINE_THRESHOLD = deriveBindFailureQuarantineThreshold(RESTART_BREAKER_PROVISIONING_MAX);
35721
+ function deriveBindFailureQuarantineThreshold(provisioningMax) {
35722
+ return Math.max(2, provisioningMax - 2);
35723
+ }
35724
+ var MIN_PROVISIONING_MAX_FOR_QUARANTINE_ORDERING = BIND_FAILURE_QUARANTINE_THRESHOLD + 1;
35725
+
35670
35726
  // src/usage-limit-notice.ts
35671
35727
  function usageLimitMarkerPath(codeName) {
35672
35728
  if (!codeName) return null;
@@ -36,7 +36,7 @@ import {
36
36
  writeDirectChatSessionState,
37
37
  writeEgressAllowlist,
38
38
  writePersistentClaudeWrapper
39
- } from "./chunk-ESZRW7A3.js";
39
+ } from "./chunk-3NJHNIO3.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-7HZXY56P.js.map
80
+ //# sourceMappingURL=persistent-session-X5N7UFEF.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-ESZRW7A3.js";
3
+ } from "./chunk-3NJHNIO3.js";
4
4
  import "./chunk-XWVM4KPK.js";
5
5
 
6
6
  // src/lib/responsiveness-probe.ts
@@ -528,4 +528,4 @@ export {
528
528
  readAndResetSlackReplyBindingClassifications,
529
529
  readAndResetSlackReplyTargetClassifications
530
530
  };
531
- //# sourceMappingURL=responsiveness-probe-AIA7ZEBW.js.map
531
+ //# sourceMappingURL=responsiveness-probe-OAZ55KPC.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.452",
3
+ "version": "0.28.454",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {