@integrity-labs/agt-cli 0.28.984 → 0.28.985

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.
@@ -258,7 +258,7 @@ async function spawnPairSession(session) {
258
258
  return { ok: true };
259
259
  } catch {
260
260
  }
261
- const { resolveClaudeBinary } = await import("./persistent-session-R6WKQT2N.js");
261
+ const { resolveClaudeBinary } = await import("./persistent-session-UA7UEZUB.js");
262
262
  const claudeBin = resolveClaudeBinary();
263
263
  const pairEnv = {
264
264
  ...process.env,
@@ -580,4 +580,4 @@ export {
580
580
  startClaudePair,
581
581
  submitClaudePairCode
582
582
  };
583
- //# sourceMappingURL=claude-pair-runtime-YKJQT3SJ.js.map
583
+ //# sourceMappingURL=claude-pair-runtime-4E4UQNRR.js.map
@@ -63,7 +63,7 @@ import {
63
63
  safeWriteJsonAtomic,
64
64
  setConfigHash,
65
65
  tripClass
66
- } from "../chunk-PVMVQ5IL.js";
66
+ } from "../chunk-XPCEY3CL.js";
67
67
  import {
68
68
  getProjectDir as getProjectDir2,
69
69
  getReadyTasks,
@@ -140,7 +140,7 @@ import {
140
140
  takeZombieDetection,
141
141
  toOpencodeModel,
142
142
  writeEgressAllowlist
143
- } from "../chunk-72J5FCKI.js";
143
+ } from "../chunk-V5HXKGU3.js";
144
144
  import {
145
145
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
146
146
  AnchorSessionClient,
@@ -238,7 +238,7 @@ import {
238
238
  subagentActivityAgeSeconds,
239
239
  sumTranscriptUsageInWindow,
240
240
  transcriptActivityAgeSeconds
241
- } from "../chunk-DI4Q2OVR.js";
241
+ } from "../chunk-IOV5NDDZ.js";
242
242
  import "../chunk-DHWNVVX4.js";
243
243
  import {
244
244
  reapOrphanChannelMcps
@@ -13292,7 +13292,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
13292
13292
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
13293
13293
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
13294
13294
  async function channelInboundActivityAgeSecondsFor(codeName) {
13295
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-M3QTWJGG.js");
13295
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-WFCKAA6B.js");
13296
13296
  const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
13297
13297
  if (newest === null) return null;
13298
13298
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -14035,7 +14035,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
14035
14035
  var lastVersionCheckAt = 0;
14036
14036
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
14037
14037
  var lastResponsivenessProbeAt = 0;
14038
- var agtCliVersion = true ? "0.28.984" : "dev";
14038
+ var agtCliVersion = true ? "0.28.985" : "dev";
14039
14039
  function resolveBrewPath(execFileSync2) {
14040
14040
  try {
14041
14041
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -15651,7 +15651,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
15651
15651
  if (codeNames.length === 0) return;
15652
15652
  void (async () => {
15653
15653
  try {
15654
- const { collectDiagnostics } = await import("../persistent-session-R6WKQT2N.js");
15654
+ const { collectDiagnostics } = await import("../persistent-session-UA7UEZUB.js");
15655
15655
  await api.post("/host/heartbeat", {
15656
15656
  host_id: hostId,
15657
15657
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -15793,7 +15793,7 @@ async function pollCycleInner() {
15793
15793
  }
15794
15794
  try {
15795
15795
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
15796
- const { collectDiagnostics } = await import("../persistent-session-R6WKQT2N.js");
15796
+ const { collectDiagnostics } = await import("../persistent-session-UA7UEZUB.js");
15797
15797
  const diagCodeNames = [...agentState.persistentSessionAgents];
15798
15798
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
15799
15799
  let tailscaleHostname;
@@ -15969,7 +15969,7 @@ async function pollCycleInner() {
15969
15969
  collectPanelessActivityProbes,
15970
15970
  getResponsivenessIntervalMs,
15971
15971
  occupancyQualificationClassifications
15972
- } = await import("../responsiveness-probe-M3QTWJGG.js");
15972
+ } = await import("../responsiveness-probe-WFCKAA6B.js");
15973
15973
  const probeIntervalMs = getResponsivenessIntervalMs();
15974
15974
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
15975
15975
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -16086,7 +16086,7 @@ async function pollCycleInner() {
16086
16086
  collectResponsivenessProbes,
16087
16087
  livePendingInboundOldestAgeSeconds,
16088
16088
  parkPendingInbound
16089
- } = await import("../responsiveness-probe-M3QTWJGG.js");
16089
+ } = await import("../responsiveness-probe-WFCKAA6B.js");
16090
16090
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
16091
16091
  const wedgeNow = /* @__PURE__ */ new Date();
16092
16092
  const liveAgents = agentState.persistentSessionAgents;
@@ -16242,7 +16242,7 @@ async function pollCycleInner() {
16242
16242
  }
16243
16243
  try {
16244
16244
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
16245
- const { probeSessionAuth } = await import("../session-auth-dead-FQ3N3BJ5.js");
16245
+ const { probeSessionAuth } = await import("../session-auth-dead-LY6ZNPYR.js");
16246
16246
  const observations = [];
16247
16247
  const pendingCacheCommits = [];
16248
16248
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -20530,7 +20530,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20530
20530
  try {
20531
20531
  const freshId = rotateSessionForWedge(codeName);
20532
20532
  consecutiveWedgeCycles.delete(codeName);
20533
- const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-M3QTWJGG.js");
20533
+ const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-WFCKAA6B.js");
20534
20534
  const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
20535
20535
  const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
20536
20536
  const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
@@ -20573,7 +20573,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20573
20573
  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}`));
20574
20574
  void (async () => {
20575
20575
  try {
20576
- const { collectDiagnostics } = await import("../persistent-session-R6WKQT2N.js");
20576
+ const { collectDiagnostics } = await import("../persistent-session-UA7UEZUB.js");
20577
20577
  await api.post("/host/heartbeat", {
20578
20578
  host_id: hostId,
20579
20579
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20624,7 +20624,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
20624
20624
  }
20625
20625
  try {
20626
20626
  const hostId = await getHostId();
20627
- const { collectDiagnostics } = await import("../persistent-session-R6WKQT2N.js");
20627
+ const { collectDiagnostics } = await import("../persistent-session-UA7UEZUB.js");
20628
20628
  await api.post("/host/heartbeat", {
20629
20629
  host_id: hostId,
20630
20630
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -21268,7 +21268,7 @@ async function processClaudePairSessions(agents) {
21268
21268
  killPairSession,
21269
21269
  pairTmuxSession,
21270
21270
  finalizeClaudePairOnboarding
21271
- } = await import("../claude-pair-runtime-YKJQT3SJ.js");
21271
+ } = await import("../claude-pair-runtime-4E4UQNRR.js");
21272
21272
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
21273
21273
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
21274
21274
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -39859,6 +39859,34 @@ function computeStreamSlices(content, config2 = DEFAULT_STREAM_SLICE_CONFIG) {
39859
39859
  return slices;
39860
39860
  }
39861
39861
 
39862
+ // ../core/dist/channels/progress-step.js
39863
+ var AUTO_PROGRESS_FALLBACK_STEP = "Working\u2026";
39864
+ var VERBS = [
39865
+ ["Running", "Running a command"],
39866
+ ["Editing", "Editing a file"],
39867
+ ["Writing", "Writing a file"],
39868
+ ["Reading", "Reading a file"],
39869
+ ["Searching the web", "Searching the web"],
39870
+ ["Searching", "Searching"],
39871
+ ["Finding files", "Searching"],
39872
+ ["Fetching", "Fetching a page"],
39873
+ ["Working on", "Working on a subtask"],
39874
+ ["Using", "Using a tool"]
39875
+ ];
39876
+ function sanitizeAutoProgressStep(raw) {
39877
+ const text = raw.trim();
39878
+ if (!text)
39879
+ return "";
39880
+ for (const [prefix, label] of VERBS) {
39881
+ if (!text.startsWith(prefix))
39882
+ continue;
39883
+ const next = text.charAt(prefix.length);
39884
+ if (next === "" || next === " " || next === ":")
39885
+ return label;
39886
+ }
39887
+ return AUTO_PROGRESS_FALLBACK_STEP;
39888
+ }
39889
+
39862
39890
  // src/channel-progress.ts
39863
39891
  function channelLiveProgressEnabled() {
39864
39892
  return resolveHostBooleanFlag({
@@ -39915,7 +39943,7 @@ function parseProgressHeartbeat(raw) {
39915
39943
  if (!raw) return null;
39916
39944
  try {
39917
39945
  const obj = JSON.parse(raw);
39918
- const step = typeof obj.step === "string" ? obj.step.trim() : "";
39946
+ const step = typeof obj.step === "string" ? sanitizeAutoProgressStep(obj.step) : "";
39919
39947
  const updatedAtMs = typeof obj.updated_at_ms === "number" ? obj.updated_at_ms : NaN;
39920
39948
  if (!step || !Number.isFinite(updatedAtMs)) return null;
39921
39949
  return { step, updatedAtMs };
package/dist/mcp/index.js CHANGED
@@ -47212,7 +47212,7 @@ server.tool(
47212
47212
  source_external_id: external_exports.string().optional().describe('ID in the external system (e.g., "ENG-123")'),
47213
47213
  source_url: external_exports.string().optional().describe("Deep link URL to the external source"),
47214
47214
  deliver_to: external_exports.string().optional().describe(
47215
- "Optional: the Slack user id of the person who asked for this (the requester), so you can notify/deliver to them when the task needs their input or is done. If omitted on a card that came FROM a conversation, it defaults to the person you are talking to. It never defaults for a card created with no_channel_origin: true."
47215
+ 'Optional: the Slack user id of the person who asked for this (the requester), so you can notify/deliver to them when the task needs their input or is done. If omitted on a card that came FROM a conversation, it defaults to the person you are talking to. It never defaults for a card created with no_channel_origin: true. Pass the literal "none" to track the work without notifying the requester: no progress card is posted into the conversation and no completion card, result DM or waiting-on prompt is sent to them (reply to the person yourself when you have something for them). Operational escalation still happens: if the result cannot be delivered at all, the dead-letter path can notify the manager or team admins of the agent. Cannot be combined with notify_channel/notify_to.'
47216
47216
  ),
47217
47217
  no_channel_origin: external_exports.boolean().optional().describe(
47218
47218
  "Set true when this card did NOT come from a message someone sent you: work you started yourself, a scheduled/routine run, follow-up you decided to do, anything not answering a specific conversation. Without it, a card created shortly after any inbound message is attached to THAT conversation - its progress card posts into that person's thread and its result is addressed to them, even if the work has nothing to do with them. Leave it unset for a card that IS the answer to the message you are handling."
@@ -41781,6 +41781,34 @@ function removeRecoveryLedgerEntry(ledgerDir, markerName, unlink = (p2) => {
41781
41781
  }
41782
41782
  }
41783
41783
 
41784
+ // ../core/dist/channels/progress-step.js
41785
+ var AUTO_PROGRESS_FALLBACK_STEP = "Working\u2026";
41786
+ var VERBS = [
41787
+ ["Running", "Running a command"],
41788
+ ["Editing", "Editing a file"],
41789
+ ["Writing", "Writing a file"],
41790
+ ["Reading", "Reading a file"],
41791
+ ["Searching the web", "Searching the web"],
41792
+ ["Searching", "Searching"],
41793
+ ["Finding files", "Searching"],
41794
+ ["Fetching", "Fetching a page"],
41795
+ ["Working on", "Working on a subtask"],
41796
+ ["Using", "Using a tool"]
41797
+ ];
41798
+ function sanitizeAutoProgressStep(raw) {
41799
+ const text = raw.trim();
41800
+ if (!text)
41801
+ return "";
41802
+ for (const [prefix, label] of VERBS) {
41803
+ if (!text.startsWith(prefix))
41804
+ continue;
41805
+ const next = text.charAt(prefix.length);
41806
+ if (next === "" || next === " " || next === ":")
41807
+ return label;
41808
+ }
41809
+ return AUTO_PROGRESS_FALLBACK_STEP;
41810
+ }
41811
+
41784
41812
  // src/channel-progress.ts
41785
41813
  function channelLiveProgressEnabled() {
41786
41814
  return resolveHostBooleanFlag({
@@ -41837,7 +41865,7 @@ function parseProgressHeartbeat(raw) {
41837
41865
  if (!raw) return null;
41838
41866
  try {
41839
41867
  const obj = JSON.parse(raw);
41840
- const step = typeof obj.step === "string" ? obj.step.trim() : "";
41868
+ const step = typeof obj.step === "string" ? sanitizeAutoProgressStep(obj.step) : "";
41841
41869
  const updatedAtMs = typeof obj.updated_at_ms === "number" ? obj.updated_at_ms : NaN;
41842
41870
  if (!step || !Number.isFinite(updatedAtMs)) return null;
41843
41871
  return { step, updatedAtMs };
@@ -41765,6 +41765,34 @@ function telegramInboundId(chatId, messageId) {
41765
41765
  return hashInboundId(`${chatId}|${messageId}`);
41766
41766
  }
41767
41767
 
41768
+ // ../core/dist/channels/progress-step.js
41769
+ var AUTO_PROGRESS_FALLBACK_STEP = "Working\u2026";
41770
+ var VERBS = [
41771
+ ["Running", "Running a command"],
41772
+ ["Editing", "Editing a file"],
41773
+ ["Writing", "Writing a file"],
41774
+ ["Reading", "Reading a file"],
41775
+ ["Searching the web", "Searching the web"],
41776
+ ["Searching", "Searching"],
41777
+ ["Finding files", "Searching"],
41778
+ ["Fetching", "Fetching a page"],
41779
+ ["Working on", "Working on a subtask"],
41780
+ ["Using", "Using a tool"]
41781
+ ];
41782
+ function sanitizeAutoProgressStep(raw) {
41783
+ const text = raw.trim();
41784
+ if (!text)
41785
+ return "";
41786
+ for (const [prefix, label] of VERBS) {
41787
+ if (!text.startsWith(prefix))
41788
+ continue;
41789
+ const next = text.charAt(prefix.length);
41790
+ if (next === "" || next === " " || next === ":")
41791
+ return label;
41792
+ }
41793
+ return AUTO_PROGRESS_FALLBACK_STEP;
41794
+ }
41795
+
41768
41796
  // src/channel-progress.ts
41769
41797
  function channelLiveProgressEnabled() {
41770
41798
  return resolveHostBooleanFlag({
@@ -41821,7 +41849,7 @@ function parseProgressHeartbeat(raw) {
41821
41849
  if (!raw) return null;
41822
41850
  try {
41823
41851
  const obj = JSON.parse(raw);
41824
- const step = typeof obj.step === "string" ? obj.step.trim() : "";
41852
+ const step = typeof obj.step === "string" ? sanitizeAutoProgressStep(obj.step) : "";
41825
41853
  const updatedAtMs = typeof obj.updated_at_ms === "number" ? obj.updated_at_ms : NaN;
41826
41854
  if (!step || !Number.isFinite(updatedAtMs)) return null;
41827
41855
  return { step, updatedAtMs };
@@ -62,8 +62,8 @@ import {
62
62
  writeDirectChatSessionState,
63
63
  writeEgressAllowlist,
64
64
  writePersistentClaudeWrapper
65
- } from "./chunk-72J5FCKI.js";
66
- import "./chunk-DI4Q2OVR.js";
65
+ } from "./chunk-V5HXKGU3.js";
66
+ import "./chunk-IOV5NDDZ.js";
67
67
  import "./chunk-DHWNVVX4.js";
68
68
  import "./chunk-XWVM4KPK.js";
69
69
  export {
@@ -131,4 +131,4 @@ export {
131
131
  writeEgressAllowlist,
132
132
  writePersistentClaudeWrapper
133
133
  };
134
- //# sourceMappingURL=persistent-session-R6WKQT2N.js.map
134
+ //# sourceMappingURL=persistent-session-UA7UEZUB.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-72J5FCKI.js";
4
- import "./chunk-DI4Q2OVR.js";
3
+ } from "./chunk-V5HXKGU3.js";
4
+ import "./chunk-IOV5NDDZ.js";
5
5
  import "./chunk-DHWNVVX4.js";
6
6
  import "./chunk-XWVM4KPK.js";
7
7
 
@@ -800,4 +800,4 @@ export {
800
800
  readAndResetSlackReplyBindingClassifications,
801
801
  readAndResetSlackReplyTargetClassifications
802
802
  };
803
- //# sourceMappingURL=responsiveness-probe-M3QTWJGG.js.map
803
+ //# sourceMappingURL=responsiveness-probe-WFCKAA6B.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-DI4Q2OVR.js";
3
+ } from "./chunk-IOV5NDDZ.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-FQ3N3BJ5.js.map
206
+ //# sourceMappingURL=session-auth-dead-LY6ZNPYR.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.984",
3
+ "version": "0.28.985",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {