@integrity-labs/agt-cli 0.28.605 → 0.28.606

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.
@@ -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-4GJXG3PK.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-HOFUHGKI.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-DW3XFIV6.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-3Y6ZICI3.js.map
@@ -53,7 +53,7 @@ import {
53
53
  safeWriteJsonAtomic,
54
54
  setConfigHash,
55
55
  tripClass
56
- } from "../chunk-2NXKEFGS.js";
56
+ } from "../chunk-2JB2MJAV.js";
57
57
  import {
58
58
  getProjectDir as getProjectDir2,
59
59
  getReadyTasks,
@@ -109,7 +109,7 @@ import {
109
109
  takeZombieDetection,
110
110
  toOpencodeModel,
111
111
  writeEgressAllowlist
112
- } from "../chunk-4MYANQKP.js";
112
+ } from "../chunk-DESCRVVM.js";
113
113
  import {
114
114
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
115
115
  AnchorSessionClient,
@@ -186,7 +186,7 @@ import {
186
186
  subagentActivityAgeSeconds,
187
187
  sumTranscriptUsageInWindow,
188
188
  transcriptActivityAgeSeconds
189
- } from "../chunk-7F64BKXG.js";
189
+ } from "../chunk-FF7H4K7I.js";
190
190
  import {
191
191
  reapOrphanChannelMcps
192
192
  } from "../chunk-XWVM4KPK.js";
@@ -11880,7 +11880,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
11880
11880
  var lastVersionCheckAt = 0;
11881
11881
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
11882
11882
  var lastResponsivenessProbeAt = 0;
11883
- var agtCliVersion = true ? "0.28.605" : "dev";
11883
+ var agtCliVersion = true ? "0.28.606" : "dev";
11884
11884
  function resolveBrewPath(execFileSync3) {
11885
11885
  try {
11886
11886
  const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -13187,7 +13187,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
13187
13187
  if (codeNames.length === 0) return;
13188
13188
  void (async () => {
13189
13189
  try {
13190
- const { collectDiagnostics } = await import("../persistent-session-4GJXG3PK.js");
13190
+ const { collectDiagnostics } = await import("../persistent-session-HOFUHGKI.js");
13191
13191
  await api.post("/host/heartbeat", {
13192
13192
  host_id: hostId,
13193
13193
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
@@ -13295,7 +13295,7 @@ async function pollCycle() {
13295
13295
  }
13296
13296
  try {
13297
13297
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
13298
- const { collectDiagnostics } = await import("../persistent-session-4GJXG3PK.js");
13298
+ const { collectDiagnostics } = await import("../persistent-session-HOFUHGKI.js");
13299
13299
  const diagCodeNames = [...agentState.persistentSessionAgents];
13300
13300
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor) : void 0;
13301
13301
  let tailscaleHostname;
@@ -13418,7 +13418,7 @@ async function pollCycle() {
13418
13418
  collectPanelessActivityProbes,
13419
13419
  getResponsivenessIntervalMs,
13420
13420
  occupancyQualificationClassifications
13421
- } = await import("../responsiveness-probe-YXNVZ7SO.js");
13421
+ } = await import("../responsiveness-probe-KQGY6RMW.js");
13422
13422
  const probeIntervalMs = getResponsivenessIntervalMs();
13423
13423
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
13424
13424
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -13509,7 +13509,7 @@ async function pollCycle() {
13509
13509
  collectResponsivenessProbes,
13510
13510
  livePendingInboundOldestAgeSeconds,
13511
13511
  parkPendingInbound
13512
- } = await import("../responsiveness-probe-YXNVZ7SO.js");
13512
+ } = await import("../responsiveness-probe-KQGY6RMW.js");
13513
13513
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
13514
13514
  const wedgeNow = /* @__PURE__ */ new Date();
13515
13515
  const liveAgents = agentState.persistentSessionAgents;
@@ -13665,7 +13665,7 @@ async function pollCycle() {
13665
13665
  }
13666
13666
  try {
13667
13667
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
13668
- const { probeSessionAuth } = await import("../session-auth-dead-7DNO4XES.js");
13668
+ const { probeSessionAuth } = await import("../session-auth-dead-Q6AY5HC7.js");
13669
13669
  const observations = [];
13670
13670
  const pendingCacheCommits = [];
13671
13671
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -17093,7 +17093,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
17093
17093
  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}`));
17094
17094
  void (async () => {
17095
17095
  try {
17096
- const { collectDiagnostics } = await import("../persistent-session-4GJXG3PK.js");
17096
+ const { collectDiagnostics } = await import("../persistent-session-HOFUHGKI.js");
17097
17097
  await api.post("/host/heartbeat", {
17098
17098
  host_id: hostId,
17099
17099
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
@@ -17144,7 +17144,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
17144
17144
  }
17145
17145
  try {
17146
17146
  const hostId = await getHostId();
17147
- const { collectDiagnostics } = await import("../persistent-session-4GJXG3PK.js");
17147
+ const { collectDiagnostics } = await import("../persistent-session-HOFUHGKI.js");
17148
17148
  await api.post("/host/heartbeat", {
17149
17149
  host_id: hostId,
17150
17150
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor)
@@ -17740,7 +17740,7 @@ async function processClaudePairSessions(agents) {
17740
17740
  killPairSession,
17741
17741
  pairTmuxSession,
17742
17742
  finalizeClaudePairOnboarding
17743
- } = await import("../claude-pair-runtime-DW3XFIV6.js");
17743
+ } = await import("../claude-pair-runtime-3Y6ZICI3.js");
17744
17744
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
17745
17745
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
17746
17746
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -35602,6 +35602,28 @@ var FLAG_REGISTRY = [
35602
35602
  // to migrate (ADR-0022).
35603
35603
  defaultValue: false
35604
35604
  },
35605
+ {
35606
+ key: "kanban-nudge-before-reap",
35607
+ description: "Ask a quiet agent before reaping its card (ENG-8906). The kanban stale-reaper decides an in_progress card is dead from silence on a clock, and silence is identical for a BUSY agent and a WEDGED one - ENG-8669 was parked as stalled while its agent was healthily blocked on CI polls and a 15-20 minute SST deploy. When ON, a card that passes the quiet threshold gets up to MAX_KANBAN_NUDGES (2) targeted direct-chat nudges over the existing ENG-4892 probe rail before any verdict is taken; the card is only reaped if it is still not renewed. Renewal must come from a kanban_progress call that moves lease_expires_at - a chat reply proves the session is responsive, not that the agent still holds the card, so answering in chat alone does NOT save it. Metered / OpenRouter agents are never nudged unless synthetic-probe-on-metered-hosts is also ON (ENG-7235: a nudge there is real customer spend), and keep the passive clock path. When OFF (default) the sweep is byte-identical to its pre-ENG-8906 behaviour. Evaluated as a global stage value by the kanban-stale-item-reaper cron. Boolean gate; ships dark.",
35608
+ flagType: "boolean",
35609
+ // Declared safe value is `false` = do not nudge. Two independent reasons,
35610
+ // and both point the same way:
35611
+ //
35612
+ // COST - a nudge is a model round-trip. It is a cheap one (AC1 measured
35613
+ // a mid-turn nudge at ~43-46K input-equivalent tokens against ~294-469K
35614
+ // to wake an idle agent, 6.8x-10.2x cheaper), but "cheap" is not "free"
35615
+ // and a flag-DB error must not silently arm fleet-wide message volume.
35616
+ //
35617
+ // CORRECTNESS - `nudge` is a third StaleReapAction, and any consumer that
35618
+ // has not been taught about it branches `action === 'auto_return' ? todo
35619
+ // : needs_attention` and would DEAD-LETTER the card. Off is the state in
35620
+ // which no un-taught caller can be handed the new action.
35621
+ //
35622
+ // So the cron's flag read fails closed: an error degrades to today's
35623
+ // behaviour rather than to a live experiment. No envVar - net-new control
35624
+ // with no pre-flags env gate to migrate (ADR-0022).
35625
+ defaultValue: false
35626
+ },
35605
35627
  {
35606
35628
  key: "skill-dreaming",
35607
35629
  description: "Memory-driven skill improvement (ENG-6500): the nightly dreaming cron analyzes each agent's promoted agent_memories against its in-scope skills (agent/team/org/global) and auto-drafts concrete skill improvements as status=draft skill_definitions. Drafts carry their evidence memories + rationale + confidence as provenance and flow through the existing scan \u2192 Pending-Skills review \u2192 publish funnel \u2014 never auto-published. Boolean gate; ships dark \u2014 when off the cron drafts nothing, so 0 skill-dreaming drafts is the expected steady state until an org is armed from the admin Feature Flags page.",
@@ -41493,6 +41493,28 @@ var FLAG_REGISTRY = [
41493
41493
  // to migrate (ADR-0022).
41494
41494
  defaultValue: false
41495
41495
  },
41496
+ {
41497
+ key: "kanban-nudge-before-reap",
41498
+ description: "Ask a quiet agent before reaping its card (ENG-8906). The kanban stale-reaper decides an in_progress card is dead from silence on a clock, and silence is identical for a BUSY agent and a WEDGED one - ENG-8669 was parked as stalled while its agent was healthily blocked on CI polls and a 15-20 minute SST deploy. When ON, a card that passes the quiet threshold gets up to MAX_KANBAN_NUDGES (2) targeted direct-chat nudges over the existing ENG-4892 probe rail before any verdict is taken; the card is only reaped if it is still not renewed. Renewal must come from a kanban_progress call that moves lease_expires_at - a chat reply proves the session is responsive, not that the agent still holds the card, so answering in chat alone does NOT save it. Metered / OpenRouter agents are never nudged unless synthetic-probe-on-metered-hosts is also ON (ENG-7235: a nudge there is real customer spend), and keep the passive clock path. When OFF (default) the sweep is byte-identical to its pre-ENG-8906 behaviour. Evaluated as a global stage value by the kanban-stale-item-reaper cron. Boolean gate; ships dark.",
41499
+ flagType: "boolean",
41500
+ // Declared safe value is `false` = do not nudge. Two independent reasons,
41501
+ // and both point the same way:
41502
+ //
41503
+ // COST - a nudge is a model round-trip. It is a cheap one (AC1 measured
41504
+ // a mid-turn nudge at ~43-46K input-equivalent tokens against ~294-469K
41505
+ // to wake an idle agent, 6.8x-10.2x cheaper), but "cheap" is not "free"
41506
+ // and a flag-DB error must not silently arm fleet-wide message volume.
41507
+ //
41508
+ // CORRECTNESS - `nudge` is a third StaleReapAction, and any consumer that
41509
+ // has not been taught about it branches `action === 'auto_return' ? todo
41510
+ // : needs_attention` and would DEAD-LETTER the card. Off is the state in
41511
+ // which no un-taught caller can be handed the new action.
41512
+ //
41513
+ // So the cron's flag read fails closed: an error degrades to today's
41514
+ // behaviour rather than to a live experiment. No envVar - net-new control
41515
+ // with no pre-flags env gate to migrate (ADR-0022).
41516
+ defaultValue: false
41517
+ },
41496
41518
  {
41497
41519
  key: "skill-dreaming",
41498
41520
  description: "Memory-driven skill improvement (ENG-6500): the nightly dreaming cron analyzes each agent's promoted agent_memories against its in-scope skills (agent/team/org/global) and auto-drafts concrete skill improvements as status=draft skill_definitions. Drafts carry their evidence memories + rationale + confidence as provenance and flow through the existing scan \u2192 Pending-Skills review \u2192 publish funnel \u2014 never auto-published. Boolean gate; ships dark \u2014 when off the cron drafts nothing, so 0 skill-dreaming drafts is the expected steady state until an org is armed from the admin Feature Flags page.",
@@ -35938,6 +35938,28 @@ var FLAG_REGISTRY = [
35938
35938
  // to migrate (ADR-0022).
35939
35939
  defaultValue: false
35940
35940
  },
35941
+ {
35942
+ key: "kanban-nudge-before-reap",
35943
+ description: "Ask a quiet agent before reaping its card (ENG-8906). The kanban stale-reaper decides an in_progress card is dead from silence on a clock, and silence is identical for a BUSY agent and a WEDGED one - ENG-8669 was parked as stalled while its agent was healthily blocked on CI polls and a 15-20 minute SST deploy. When ON, a card that passes the quiet threshold gets up to MAX_KANBAN_NUDGES (2) targeted direct-chat nudges over the existing ENG-4892 probe rail before any verdict is taken; the card is only reaped if it is still not renewed. Renewal must come from a kanban_progress call that moves lease_expires_at - a chat reply proves the session is responsive, not that the agent still holds the card, so answering in chat alone does NOT save it. Metered / OpenRouter agents are never nudged unless synthetic-probe-on-metered-hosts is also ON (ENG-7235: a nudge there is real customer spend), and keep the passive clock path. When OFF (default) the sweep is byte-identical to its pre-ENG-8906 behaviour. Evaluated as a global stage value by the kanban-stale-item-reaper cron. Boolean gate; ships dark.",
35944
+ flagType: "boolean",
35945
+ // Declared safe value is `false` = do not nudge. Two independent reasons,
35946
+ // and both point the same way:
35947
+ //
35948
+ // COST - a nudge is a model round-trip. It is a cheap one (AC1 measured
35949
+ // a mid-turn nudge at ~43-46K input-equivalent tokens against ~294-469K
35950
+ // to wake an idle agent, 6.8x-10.2x cheaper), but "cheap" is not "free"
35951
+ // and a flag-DB error must not silently arm fleet-wide message volume.
35952
+ //
35953
+ // CORRECTNESS - `nudge` is a third StaleReapAction, and any consumer that
35954
+ // has not been taught about it branches `action === 'auto_return' ? todo
35955
+ // : needs_attention` and would DEAD-LETTER the card. Off is the state in
35956
+ // which no un-taught caller can be handed the new action.
35957
+ //
35958
+ // So the cron's flag read fails closed: an error degrades to today's
35959
+ // behaviour rather than to a live experiment. No envVar - net-new control
35960
+ // with no pre-flags env gate to migrate (ADR-0022).
35961
+ defaultValue: false
35962
+ },
35941
35963
  {
35942
35964
  key: "skill-dreaming",
35943
35965
  description: "Memory-driven skill improvement (ENG-6500): the nightly dreaming cron analyzes each agent's promoted agent_memories against its in-scope skills (agent/team/org/global) and auto-drafts concrete skill improvements as status=draft skill_definitions. Drafts carry their evidence memories + rationale + confidence as provenance and flow through the existing scan \u2192 Pending-Skills review \u2192 publish funnel \u2014 never auto-published. Boolean gate; ships dark \u2014 when off the cron drafts nothing, so 0 skill-dreaming drafts is the expected steady state until an org is armed from the admin Feature Flags page.",
@@ -36097,6 +36097,28 @@ var FLAG_REGISTRY = [
36097
36097
  // to migrate (ADR-0022).
36098
36098
  defaultValue: false
36099
36099
  },
36100
+ {
36101
+ key: "kanban-nudge-before-reap",
36102
+ description: "Ask a quiet agent before reaping its card (ENG-8906). The kanban stale-reaper decides an in_progress card is dead from silence on a clock, and silence is identical for a BUSY agent and a WEDGED one - ENG-8669 was parked as stalled while its agent was healthily blocked on CI polls and a 15-20 minute SST deploy. When ON, a card that passes the quiet threshold gets up to MAX_KANBAN_NUDGES (2) targeted direct-chat nudges over the existing ENG-4892 probe rail before any verdict is taken; the card is only reaped if it is still not renewed. Renewal must come from a kanban_progress call that moves lease_expires_at - a chat reply proves the session is responsive, not that the agent still holds the card, so answering in chat alone does NOT save it. Metered / OpenRouter agents are never nudged unless synthetic-probe-on-metered-hosts is also ON (ENG-7235: a nudge there is real customer spend), and keep the passive clock path. When OFF (default) the sweep is byte-identical to its pre-ENG-8906 behaviour. Evaluated as a global stage value by the kanban-stale-item-reaper cron. Boolean gate; ships dark.",
36103
+ flagType: "boolean",
36104
+ // Declared safe value is `false` = do not nudge. Two independent reasons,
36105
+ // and both point the same way:
36106
+ //
36107
+ // COST - a nudge is a model round-trip. It is a cheap one (AC1 measured
36108
+ // a mid-turn nudge at ~43-46K input-equivalent tokens against ~294-469K
36109
+ // to wake an idle agent, 6.8x-10.2x cheaper), but "cheap" is not "free"
36110
+ // and a flag-DB error must not silently arm fleet-wide message volume.
36111
+ //
36112
+ // CORRECTNESS - `nudge` is a third StaleReapAction, and any consumer that
36113
+ // has not been taught about it branches `action === 'auto_return' ? todo
36114
+ // : needs_attention` and would DEAD-LETTER the card. Off is the state in
36115
+ // which no un-taught caller can be handed the new action.
36116
+ //
36117
+ // So the cron's flag read fails closed: an error degrades to today's
36118
+ // behaviour rather than to a live experiment. No envVar - net-new control
36119
+ // with no pre-flags env gate to migrate (ADR-0022).
36120
+ defaultValue: false
36121
+ },
36100
36122
  {
36101
36123
  key: "skill-dreaming",
36102
36124
  description: "Memory-driven skill improvement (ENG-6500): the nightly dreaming cron analyzes each agent's promoted agent_memories against its in-scope skills (agent/team/org/global) and auto-drafts concrete skill improvements as status=draft skill_definitions. Drafts carry their evidence memories + rationale + confidence as provenance and flow through the existing scan \u2192 Pending-Skills review \u2192 publish funnel \u2014 never auto-published. Boolean gate; ships dark \u2014 when off the cron drafts nothing, so 0 skill-dreaming drafts is the expected steady state until an org is armed from the admin Feature Flags page.",
@@ -43,8 +43,8 @@ import {
43
43
  writeDirectChatSessionState,
44
44
  writeEgressAllowlist,
45
45
  writePersistentClaudeWrapper
46
- } from "./chunk-4MYANQKP.js";
47
- import "./chunk-7F64BKXG.js";
46
+ } from "./chunk-DESCRVVM.js";
47
+ import "./chunk-FF7H4K7I.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-4GJXG3PK.js.map
95
+ //# sourceMappingURL=persistent-session-HOFUHGKI.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-4MYANQKP.js";
4
- import "./chunk-7F64BKXG.js";
3
+ } from "./chunk-DESCRVVM.js";
4
+ import "./chunk-FF7H4K7I.js";
5
5
  import "./chunk-XWVM4KPK.js";
6
6
 
7
7
  // src/lib/responsiveness-probe.ts
@@ -690,4 +690,4 @@ export {
690
690
  readAndResetSlackReplyBindingClassifications,
691
691
  readAndResetSlackReplyTargetClassifications
692
692
  };
693
- //# sourceMappingURL=responsiveness-probe-YXNVZ7SO.js.map
693
+ //# sourceMappingURL=responsiveness-probe-KQGY6RMW.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-7F64BKXG.js";
3
+ } from "./chunk-FF7H4K7I.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-7DNO4XES.js.map
206
+ //# sourceMappingURL=session-auth-dead-Q6AY5HC7.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.605",
3
+ "version": "0.28.606",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {