@integrity-labs/agt-cli 0.28.852 → 0.28.854

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/dist/bin/agt.js +5 -5
  2. package/dist/{chunk-XCAI3GSF.js → chunk-2E2NKILK.js} +2 -2
  3. package/dist/{chunk-WUXQVP7A.js → chunk-4Z4GFQAD.js} +143 -3
  4. package/dist/chunk-4Z4GFQAD.js.map +1 -0
  5. package/dist/{chunk-SFKO7OVI.js → chunk-FHOLG6VL.js} +4 -4
  6. package/dist/{claude-pair-runtime-CJXQTVSC.js → claude-pair-runtime-63TA3LT5.js} +2 -2
  7. package/dist/lib/manager-worker.js +35 -13
  8. package/dist/lib/manager-worker.js.map +1 -1
  9. package/dist/mcp/direct-chat-channel.js +104 -0
  10. package/dist/mcp/index.js +104 -0
  11. package/dist/mcp/origami.js +104 -0
  12. package/dist/mcp/slack-channel.js +104 -0
  13. package/dist/mcp/telegram-channel.js +104 -0
  14. package/dist/{persistent-session-YGK7YHPR.js → persistent-session-N4DJ4VXZ.js} +3 -3
  15. package/dist/{responsiveness-probe-NGWO3JK3.js → responsiveness-probe-GYE5MIVB.js} +3 -3
  16. package/dist/{session-auth-dead-4UZR5655.js → session-auth-dead-K6B6D3WR.js} +2 -2
  17. package/package.json +1 -1
  18. package/dist/chunk-WUXQVP7A.js.map +0 -1
  19. /package/dist/{chunk-XCAI3GSF.js.map → chunk-2E2NKILK.js.map} +0 -0
  20. /package/dist/{chunk-SFKO7OVI.js.map → chunk-FHOLG6VL.js.map} +0 -0
  21. /package/dist/{claude-pair-runtime-CJXQTVSC.js.map → claude-pair-runtime-63TA3LT5.js.map} +0 -0
  22. /package/dist/{persistent-session-YGK7YHPR.js.map → persistent-session-N4DJ4VXZ.js.map} +0 -0
  23. /package/dist/{responsiveness-probe-NGWO3JK3.js.map → responsiveness-probe-GYE5MIVB.js.map} +0 -0
  24. /package/dist/{session-auth-dead-4UZR5655.js.map → session-auth-dead-K6B6D3WR.js.map} +0 -0
@@ -16,7 +16,7 @@ import {
16
16
  parseEnvIntegrations,
17
17
  shellQuote,
18
18
  summarizeUnanswerablePane
19
- } from "./chunk-XCAI3GSF.js";
19
+ } from "./chunk-2E2NKILK.js";
20
20
  import {
21
21
  BIND_FAILURE_QUARANTINE_THRESHOLD,
22
22
  INTEGRATIONS_SECTION_END,
@@ -76,7 +76,7 @@ import {
76
76
  sessionTranscriptDir,
77
77
  worseConnectivityOutcome,
78
78
  wrapScheduledTaskPrompt
79
- } from "./chunk-WUXQVP7A.js";
79
+ } from "./chunk-4Z4GFQAD.js";
80
80
  import {
81
81
  parsePsRows
82
82
  } from "./chunk-XWVM4KPK.js";
@@ -6566,7 +6566,7 @@ function exchangeFailureKind(err) {
6566
6566
  }
6567
6567
 
6568
6568
  // src/lib/api-client.ts
6569
- var agtCliVersion = true ? "0.28.852" : "dev";
6569
+ var agtCliVersion = true ? "0.28.854" : "dev";
6570
6570
  var lastConfigHash = null;
6571
6571
  function setConfigHash(hash) {
6572
6572
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -10924,4 +10924,4 @@ export {
10924
10924
  managerInstallSystemUnitCommand,
10925
10925
  managerUninstallSystemUnitCommand
10926
10926
  };
10927
- //# sourceMappingURL=chunk-SFKO7OVI.js.map
10927
+ //# sourceMappingURL=chunk-FHOLG6VL.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-YGK7YHPR.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-N4DJ4VXZ.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-CJXQTVSC.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-63TA3LT5.js.map
@@ -60,7 +60,7 @@ import {
60
60
  safeWriteJsonAtomic,
61
61
  setConfigHash,
62
62
  tripClass
63
- } from "../chunk-SFKO7OVI.js";
63
+ } from "../chunk-FHOLG6VL.js";
64
64
  import {
65
65
  getProjectDir as getProjectDir2,
66
66
  getReadyTasks,
@@ -126,7 +126,7 @@ import {
126
126
  takeZombieDetection,
127
127
  toOpencodeModel,
128
128
  writeEgressAllowlist
129
- } from "../chunk-XCAI3GSF.js";
129
+ } from "../chunk-2E2NKILK.js";
130
130
  import {
131
131
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
132
132
  AnchorSessionClient,
@@ -221,7 +221,7 @@ import {
221
221
  subagentActivityAgeSeconds,
222
222
  sumTranscriptUsageInWindow,
223
223
  transcriptActivityAgeSeconds
224
- } from "../chunk-WUXQVP7A.js";
224
+ } from "../chunk-4Z4GFQAD.js";
225
225
  import {
226
226
  reapOrphanChannelMcps
227
227
  } from "../chunk-XWVM4KPK.js";
@@ -11222,6 +11222,10 @@ function decideWedgeRestart(input, config2) {
11222
11222
  if (!isWedgeCandidateCycle(input, config2)) return "none";
11223
11223
  return input.consecutiveWedgeCycles >= config2.minCycles ? "wedged" : "none";
11224
11224
  }
11225
+ function shouldForceFreshOnManualRestart(consecutiveWedgeCycles2, config2) {
11226
+ if (config2.mode === "off") return false;
11227
+ return consecutiveWedgeCycles2 >= config2.minCycles;
11228
+ }
11225
11229
 
11226
11230
  // src/lib/wedge-poison-card.ts
11227
11231
  var DEFAULTS2 = {
@@ -12996,7 +13000,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
12996
13000
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
12997
13001
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
12998
13002
  async function channelInboundActivityAgeSecondsFor(codeName) {
12999
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-NGWO3JK3.js");
13003
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-GYE5MIVB.js");
13000
13004
  const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
13001
13005
  if (newest === null) return null;
13002
13006
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -13664,7 +13668,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
13664
13668
  var lastVersionCheckAt = 0;
13665
13669
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
13666
13670
  var lastResponsivenessProbeAt = 0;
13667
- var agtCliVersion = true ? "0.28.852" : "dev";
13671
+ var agtCliVersion = true ? "0.28.854" : "dev";
13668
13672
  function resolveBrewPath(execFileSync2) {
13669
13673
  try {
13670
13674
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -15254,7 +15258,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
15254
15258
  if (codeNames.length === 0) return;
15255
15259
  void (async () => {
15256
15260
  try {
15257
- const { collectDiagnostics } = await import("../persistent-session-YGK7YHPR.js");
15261
+ const { collectDiagnostics } = await import("../persistent-session-N4DJ4VXZ.js");
15258
15262
  await api.post("/host/heartbeat", {
15259
15263
  host_id: hostId,
15260
15264
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -15396,7 +15400,7 @@ async function pollCycleInner() {
15396
15400
  }
15397
15401
  try {
15398
15402
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
15399
- const { collectDiagnostics } = await import("../persistent-session-YGK7YHPR.js");
15403
+ const { collectDiagnostics } = await import("../persistent-session-N4DJ4VXZ.js");
15400
15404
  const diagCodeNames = [...agentState.persistentSessionAgents];
15401
15405
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
15402
15406
  let tailscaleHostname;
@@ -15565,7 +15569,7 @@ async function pollCycleInner() {
15565
15569
  collectPanelessActivityProbes,
15566
15570
  getResponsivenessIntervalMs,
15567
15571
  occupancyQualificationClassifications
15568
- } = await import("../responsiveness-probe-NGWO3JK3.js");
15572
+ } = await import("../responsiveness-probe-GYE5MIVB.js");
15569
15573
  const probeIntervalMs = getResponsivenessIntervalMs();
15570
15574
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
15571
15575
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -15682,7 +15686,7 @@ async function pollCycleInner() {
15682
15686
  collectResponsivenessProbes,
15683
15687
  livePendingInboundOldestAgeSeconds,
15684
15688
  parkPendingInbound
15685
- } = await import("../responsiveness-probe-NGWO3JK3.js");
15689
+ } = await import("../responsiveness-probe-GYE5MIVB.js");
15686
15690
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
15687
15691
  const wedgeNow = /* @__PURE__ */ new Date();
15688
15692
  const liveAgents = agentState.persistentSessionAgents;
@@ -15838,7 +15842,7 @@ async function pollCycleInner() {
15838
15842
  }
15839
15843
  try {
15840
15844
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
15841
- const { probeSessionAuth } = await import("../session-auth-dead-4UZR5655.js");
15845
+ const { probeSessionAuth } = await import("../session-auth-dead-K6B6D3WR.js");
15842
15846
  const observations = [];
15843
15847
  const pendingCacheCommits = [];
15844
15848
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -20046,6 +20050,24 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20046
20050
  const refreshData = await fetchSpawnRefreshData(agentId, codeName, "restart-lane");
20047
20051
  if (!refreshData) return;
20048
20052
  const displayName = refreshData.agent?.display_name ?? codeName;
20053
+ const wedgeStreakAtRestart = consecutiveWedgeCycles.get(codeName) ?? 0;
20054
+ if (shouldForceFreshOnManualRestart(wedgeStreakAtRestart, resolveWedgeConfig())) {
20055
+ try {
20056
+ const freshId = rotateSessionForWedge(codeName);
20057
+ consecutiveWedgeCycles.delete(codeName);
20058
+ const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-GYE5MIVB.js");
20059
+ const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
20060
+ const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
20061
+ const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
20062
+ log(
20063
+ `[restart-lane] '${codeName}' reads wedged (cycles=${wedgeStreakAtRestart}) \u2014 forcing a FRESH session ${freshId} instead of resuming the wedged transcript (transcript preserved${parkNote}${deadNote}) (CS-1680)`
20064
+ );
20065
+ } catch (err) {
20066
+ log(
20067
+ `[restart-lane] force-fresh failed for '${codeName}': ${err.message} \u2014 continuing with a normal respawn (CS-1680)`
20068
+ );
20069
+ }
20070
+ }
20049
20071
  const framework = refreshData.agent?.framework ?? agentFrameworkCache.get(codeName) ?? DEFAULT_FRAMEWORK;
20050
20072
  if (restartTargetsOpencodeServe(framework)) {
20051
20073
  stopOpencodeSession(codeName, log);
@@ -20071,7 +20093,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20071
20093
  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}`));
20072
20094
  void (async () => {
20073
20095
  try {
20074
- const { collectDiagnostics } = await import("../persistent-session-YGK7YHPR.js");
20096
+ const { collectDiagnostics } = await import("../persistent-session-N4DJ4VXZ.js");
20075
20097
  await api.post("/host/heartbeat", {
20076
20098
  host_id: hostId,
20077
20099
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20117,7 +20139,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
20117
20139
  }
20118
20140
  try {
20119
20141
  const hostId = await getHostId();
20120
- const { collectDiagnostics } = await import("../persistent-session-YGK7YHPR.js");
20142
+ const { collectDiagnostics } = await import("../persistent-session-N4DJ4VXZ.js");
20121
20143
  await api.post("/host/heartbeat", {
20122
20144
  host_id: hostId,
20123
20145
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20753,7 +20775,7 @@ async function processClaudePairSessions(agents) {
20753
20775
  killPairSession,
20754
20776
  pairTmuxSession,
20755
20777
  finalizeClaudePairOnboarding
20756
- } = await import("../claude-pair-runtime-CJXQTVSC.js");
20778
+ } = await import("../claude-pair-runtime-63TA3LT5.js");
20757
20779
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
20758
20780
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
20759
20781
  const killed = await killPairSession(pairTmuxSession(pairId));