@integrity-labs/agt-cli 0.28.1148 → 0.28.1149

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 (25) hide show
  1. package/dist/bin/agt.js +7 -7
  2. package/dist/{chunk-JZZW47PT.js → chunk-AJ2Z3VSN.js} +2 -2
  3. package/dist/{chunk-EZUCUG2W.js → chunk-LMJH26IW.js} +10 -10
  4. package/dist/{chunk-LAPK7BDU.js → chunk-NSX27ZTP.js} +4 -4
  5. package/dist/{chunk-2PGIZQIJ.js → chunk-OISSVMYG.js} +12 -12
  6. package/dist/{chunk-D25NK5E5.js → chunk-TLDY7AE4.js} +5 -1
  7. package/dist/{chunk-D25NK5E5.js.map → chunk-TLDY7AE4.js.map} +1 -1
  8. package/dist/{claude-code-updater-NJMCC77Q.js → claude-code-updater-JXL4CM2V.js} +3 -3
  9. package/dist/{claude-pair-runtime-VQJGKE4W.js → claude-pair-runtime-7QPXNON3.js} +74 -11
  10. package/dist/claude-pair-runtime-7QPXNON3.js.map +1 -0
  11. package/dist/lib/manager-worker.js +41 -48
  12. package/dist/lib/manager-worker.js.map +1 -1
  13. package/dist/{persistent-session-MFHKSBD5.js → persistent-session-YKRO5RLK.js} +4 -4
  14. package/dist/{responsiveness-probe-YLIBVLAR.js → responsiveness-probe-LVRBC2AA.js} +4 -4
  15. package/dist/{session-auth-dead-PUVWMX5P.js → session-auth-dead-FREXPXHN.js} +3 -3
  16. package/package.json +1 -1
  17. package/dist/claude-pair-runtime-VQJGKE4W.js.map +0 -1
  18. /package/dist/{chunk-JZZW47PT.js.map → chunk-AJ2Z3VSN.js.map} +0 -0
  19. /package/dist/{chunk-EZUCUG2W.js.map → chunk-LMJH26IW.js.map} +0 -0
  20. /package/dist/{chunk-LAPK7BDU.js.map → chunk-NSX27ZTP.js.map} +0 -0
  21. /package/dist/{chunk-2PGIZQIJ.js.map → chunk-OISSVMYG.js.map} +0 -0
  22. /package/dist/{claude-code-updater-NJMCC77Q.js.map → claude-code-updater-JXL4CM2V.js.map} +0 -0
  23. /package/dist/{persistent-session-MFHKSBD5.js.map → persistent-session-YKRO5RLK.js.map} +0 -0
  24. /package/dist/{responsiveness-probe-YLIBVLAR.js.map → responsiveness-probe-LVRBC2AA.js.map} +0 -0
  25. /package/dist/{session-auth-dead-PUVWMX5P.js.map → session-auth-dead-FREXPXHN.js.map} +0 -0
@@ -77,11 +77,11 @@ import {
77
77
  setConfigHash,
78
78
  shellGuard,
79
79
  tripClass
80
- } from "../chunk-EZUCUG2W.js";
80
+ } from "../chunk-LMJH26IW.js";
81
81
  import {
82
82
  CLAUDE_CODE_SECURITY_FLOOR,
83
83
  compareVersions
84
- } from "../chunk-LAPK7BDU.js";
84
+ } from "../chunk-NSX27ZTP.js";
85
85
  import {
86
86
  getProjectDir as getProjectDir2,
87
87
  getReadyTasks,
@@ -168,7 +168,7 @@ import {
168
168
  webFetchBaselineValue,
169
169
  webFetchRestartNeeded,
170
170
  writeEgressAllowlist
171
- } from "../chunk-2PGIZQIJ.js";
171
+ } from "../chunk-OISSVMYG.js";
172
172
  import {
173
173
  isAgentIdle,
174
174
  isStaleForToday,
@@ -177,7 +177,7 @@ import {
177
177
  sessionTranscriptDir,
178
178
  subagentActivityAgeSeconds,
179
179
  transcriptActivityAgeSeconds
180
- } from "../chunk-JZZW47PT.js";
180
+ } from "../chunk-AJ2Z3VSN.js";
181
181
  import {
182
182
  classifyUnanswerablePane,
183
183
  focusedConfirmDialogBlock,
@@ -190,6 +190,13 @@ import {
190
190
  parsePsRows,
191
191
  reapOrphanChannelMcps
192
192
  } from "../chunk-XWVM4KPK.js";
193
+ import {
194
+ CLAUDE_CONFIG_DIR_ENV,
195
+ claudeConfigDirFor,
196
+ claudeConfigDirIsReady,
197
+ effectiveClaudeJsonPath,
198
+ seedClaudeConfigFromLegacy
199
+ } from "../chunk-EL5MWGGH.js";
193
200
  import {
194
201
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
195
202
  AnchorSessionClient,
@@ -293,14 +300,7 @@ import {
293
300
  serializeAccountEnforcementMarker,
294
301
  stabiliseResetInstant,
295
302
  sumTranscriptUsageInWindow
296
- } from "../chunk-D25NK5E5.js";
297
- import {
298
- CLAUDE_CONFIG_DIR_ENV,
299
- claudeConfigDirFor,
300
- claudeConfigDirIsReady,
301
- effectiveClaudeJsonPath,
302
- seedClaudeConfigFromLegacy
303
- } from "../chunk-EL5MWGGH.js";
303
+ } from "../chunk-TLDY7AE4.js";
304
304
  import "../chunk-DGUM43GV.js";
305
305
 
306
306
  // src/lib/manager-worker.ts
@@ -14891,7 +14891,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
14891
14891
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
14892
14892
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
14893
14893
  async function channelInboundActivityAgeSecondsFor(codeName) {
14894
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-YLIBVLAR.js");
14894
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-LVRBC2AA.js");
14895
14895
  const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
14896
14896
  if (newest === null) return null;
14897
14897
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -15649,7 +15649,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
15649
15649
  var lastVersionCheckAt = 0;
15650
15650
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
15651
15651
  var lastResponsivenessProbeAt = 0;
15652
- var agtCliVersion = true ? "0.28.1148" : "dev";
15652
+ var agtCliVersion = true ? "0.28.1149" : "dev";
15653
15653
  function resolveBrewPath(execFileSync3) {
15654
15654
  try {
15655
15655
  const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -17424,7 +17424,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
17424
17424
  if (codeNames.length === 0) return;
17425
17425
  void (async () => {
17426
17426
  try {
17427
- const { collectDiagnostics } = await import("../persistent-session-MFHKSBD5.js");
17427
+ const { collectDiagnostics } = await import("../persistent-session-YKRO5RLK.js");
17428
17428
  await api.post("/host/heartbeat", {
17429
17429
  host_id: hostId,
17430
17430
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
@@ -17566,7 +17566,7 @@ async function pollCycleInner() {
17566
17566
  }
17567
17567
  try {
17568
17568
  const { detectHostSecurity } = await import("../host-security-KQYYZZVW.js");
17569
- const { collectDiagnostics } = await import("../persistent-session-MFHKSBD5.js");
17569
+ const { collectDiagnostics } = await import("../persistent-session-YKRO5RLK.js");
17570
17570
  const diagCodeNames = [...agentState.persistentSessionAgents];
17571
17571
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor) : void 0;
17572
17572
  let tailscaleHostname;
@@ -17766,7 +17766,7 @@ async function pollCycleInner() {
17766
17766
  setConfigHash(hbResp?.config_hash ?? null);
17767
17767
  try {
17768
17768
  const desiredClaudeCodeVersion = hbResp?.desired_claude_code_version?.trim();
17769
- const { maybeUpdateClaudeCode, shouldRunClaudeCodeUpdater } = await import("../claude-code-updater-NJMCC77Q.js");
17769
+ const { maybeUpdateClaudeCode, shouldRunClaudeCodeUpdater } = await import("../claude-code-updater-JXL4CM2V.js");
17770
17770
  if (desiredClaudeCodeVersion && shouldRunClaudeCodeUpdater({
17771
17771
  desiredVersion: desiredClaudeCodeVersion,
17772
17772
  installedVersion: cachedFrameworkVersion,
@@ -17791,7 +17791,7 @@ async function pollCycleInner() {
17791
17791
  collectPanelessActivityProbes,
17792
17792
  getResponsivenessIntervalMs,
17793
17793
  occupancyQualificationClassifications
17794
- } = await import("../responsiveness-probe-YLIBVLAR.js");
17794
+ } = await import("../responsiveness-probe-LVRBC2AA.js");
17795
17795
  const probeIntervalMs = getResponsivenessIntervalMs();
17796
17796
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
17797
17797
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -17908,7 +17908,7 @@ async function pollCycleInner() {
17908
17908
  collectResponsivenessProbes,
17909
17909
  livePendingInboundOldestAgeSeconds,
17910
17910
  parkPendingInbound
17911
- } = await import("../responsiveness-probe-YLIBVLAR.js");
17911
+ } = await import("../responsiveness-probe-LVRBC2AA.js");
17912
17912
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-M6AFZWNU.js");
17913
17913
  const wedgeNow = /* @__PURE__ */ new Date();
17914
17914
  const liveAgents = agentState.persistentSessionAgents;
@@ -18194,7 +18194,7 @@ async function pollCycleInner() {
18194
18194
  }
18195
18195
  }
18196
18196
  );
18197
- const { parkPendingInbound } = await import("../responsiveness-probe-YLIBVLAR.js");
18197
+ const { parkPendingInbound } = await import("../responsiveness-probe-LVRBC2AA.js");
18198
18198
  const { parked, deadLettered } = parkPendingInbound(codeName, new Date(fatalNowMs));
18199
18199
  paneFatalStreak.delete(codeName);
18200
18200
  paneFatalRestarts.set(codeName, [...history, fatalNowMs]);
@@ -18225,7 +18225,7 @@ async function pollCycleInner() {
18225
18225
  TRANSCRIPT_MOUNT_ESCALATION_REFRESH_MS,
18226
18226
  bindSourceEscalations
18227
18227
  } = await import("../transcript-mount-health-OHE6IVJV.js");
18228
- const { transcriptBindSourcesFor, ensureTranscriptBindSources } = await import("../persistent-session-MFHKSBD5.js");
18228
+ const { transcriptBindSourcesFor, ensureTranscriptBindSources } = await import("../persistent-session-YKRO5RLK.js");
18229
18229
  const mountConfig = resolveTranscriptMountConfig();
18230
18230
  const liveAgents = agentState.persistentSessionAgents;
18231
18231
  for (const tracked of [
@@ -18390,7 +18390,7 @@ async function pollCycleInner() {
18390
18390
  }
18391
18391
  try {
18392
18392
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-VR5QGP3J.js");
18393
- const { probeSessionAuth } = await import("../session-auth-dead-PUVWMX5P.js");
18393
+ const { probeSessionAuth } = await import("../session-auth-dead-FREXPXHN.js");
18394
18394
  const observations = [];
18395
18395
  const pendingCacheCommits = [];
18396
18396
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -23030,7 +23030,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
23030
23030
  try {
23031
23031
  const freshId = rotateSessionForWedge(codeName);
23032
23032
  consecutiveWedgeCycles.delete(codeName);
23033
- const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-YLIBVLAR.js");
23033
+ const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-LVRBC2AA.js");
23034
23034
  const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
23035
23035
  const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
23036
23036
  const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
@@ -23073,7 +23073,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
23073
23073
  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}`));
23074
23074
  void (async () => {
23075
23075
  try {
23076
- const { collectDiagnostics } = await import("../persistent-session-MFHKSBD5.js");
23076
+ const { collectDiagnostics } = await import("../persistent-session-YKRO5RLK.js");
23077
23077
  await api.post("/host/heartbeat", {
23078
23078
  host_id: hostId,
23079
23079
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
@@ -23124,7 +23124,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
23124
23124
  }
23125
23125
  try {
23126
23126
  const hostId = await getHostId();
23127
- const { collectDiagnostics } = await import("../persistent-session-MFHKSBD5.js");
23127
+ const { collectDiagnostics } = await import("../persistent-session-YKRO5RLK.js");
23128
23128
  await api.post("/host/heartbeat", {
23129
23129
  host_id: hostId,
23130
23130
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
@@ -23796,8 +23796,10 @@ async function processClaudePairSessions(agents) {
23796
23796
  // ENG-10862: the pre-submit mtime baseline. Taken here because finalize
23797
23797
  // cannot take it for itself — by the time it runs, the write it is looking
23798
23798
  // for may already have happened.
23799
- snapshotPairConfig
23800
- } = await import("../claude-pair-runtime-VQJGKE4W.js");
23799
+ snapshotPairConfig,
23800
+ // ENG-11659: result -> report body + the manager.log line that records it.
23801
+ planPairStartReport
23802
+ } = await import("../claude-pair-runtime-7QPXNON3.js");
23801
23803
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
23802
23804
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
23803
23805
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -23815,7 +23817,10 @@ async function processClaudePairSessions(agents) {
23815
23817
  "timeout"
23816
23818
  ]);
23817
23819
  async function reportAndCleanup(pairId, body) {
23818
- await api.post("/host/claude-pair/result", { pair_id: pairId, ...body });
23820
+ const resp = await api.post("/host/claude-pair/result", {
23821
+ pair_id: pairId,
23822
+ ...body
23823
+ });
23819
23824
  if (typeof body.status === "string" && TERMINAL.has(body.status)) {
23820
23825
  const isOnboardingFailure = typeof body.error_code === "string" && body.error_code.startsWith("onboarding_");
23821
23826
  if (body.status === "success" || isOnboardingFailure) {
@@ -23826,6 +23831,7 @@ async function processClaudePairSessions(agents) {
23826
23831
  spawnedPairIds.delete(pairId);
23827
23832
  }
23828
23833
  }
23834
+ return resp?.no_op !== true;
23829
23835
  }
23830
23836
  for (const session of pendingResp.pending) {
23831
23837
  const codeName = codeNameByAgentId.get(session.agent_id) ?? "<unassigned>";
@@ -23847,26 +23853,13 @@ async function processClaudePairSessions(agents) {
23847
23853
  spawnedPairIds.add(session.pair_id);
23848
23854
  log(`[claude-pair] dispatching /login (pair ${session.pair_id.slice(0, 8)})`);
23849
23855
  const result = await startClaudePair({ session: pairSession });
23850
- if (result.kind === "url") {
23851
- await api.post("/host/claude-pair/result", {
23852
- pair_id: session.pair_id,
23853
- status: "awaiting_code",
23854
- url: result.url
23855
- });
23856
- } else if (result.kind === "timeout") {
23857
- await reportAndCleanup(session.pair_id, {
23858
- status: "timeout",
23859
- error_code: "url_prompt_not_seen",
23860
- error_message: "Claude Code did not print the URL prompt within the deadline"
23861
- });
23862
- } else {
23863
- const errKind = result.error.kind;
23864
- const errMessage2 = "message" in result.error ? result.error.message : void 0;
23865
- await reportAndCleanup(session.pair_id, {
23866
- status: errKind === "no-session" ? "session_missing" : "failure",
23867
- error_code: errKind,
23868
- error_message: errMessage2
23869
- });
23856
+ const report = planPairStartReport(session.pair_id, result);
23857
+ log(report.logLine);
23858
+ const accepted = await reportAndCleanup(session.pair_id, report.body);
23859
+ if (!accepted) {
23860
+ log(
23861
+ `[claude-pair] result for pair ${session.pair_id.slice(0, 8)} was a server no_op: the row was already terminal (e.g. cancelled from the console) when it landed`
23862
+ );
23870
23863
  }
23871
23864
  } else if (session.status === "code_submitted" && session.code) {
23872
23865
  log(`[claude-pair] submitting code (pair ${session.pair_id.slice(0, 8)})`);