@integrity-labs/agt-cli 0.28.870 → 0.28.872

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.
@@ -18,7 +18,7 @@ import {
18
18
  rotateDailySession,
19
19
  sessionFileExists,
20
20
  todayLocalIso
21
- } from "./chunk-EOEAZDKE.js";
21
+ } from "./chunk-6SRLNMAP.js";
22
22
  import {
23
23
  reapOrphanChannelMcps
24
24
  } from "./chunk-XWVM4KPK.js";
@@ -5431,4 +5431,4 @@ export {
5431
5431
  stopAllSessionsAndWait,
5432
5432
  getProjectDir
5433
5433
  };
5434
- //# sourceMappingURL=chunk-EK7QNCEO.js.map
5434
+ //# sourceMappingURL=chunk-TD2ZUI3R.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-Y4W3CMW5.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-DKTBTMAQ.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-6TB4LL5B.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-7QJJLP2A.js.map
@@ -63,7 +63,7 @@ import {
63
63
  safeWriteJsonAtomic,
64
64
  setConfigHash,
65
65
  tripClass
66
- } from "../chunk-NZFBUFF6.js";
66
+ } from "../chunk-NYL5IUK4.js";
67
67
  import {
68
68
  getProjectDir as getProjectDir2,
69
69
  getReadyTasks,
@@ -129,7 +129,7 @@ import {
129
129
  takeZombieDetection,
130
130
  toOpencodeModel,
131
131
  writeEgressAllowlist
132
- } from "../chunk-EK7QNCEO.js";
132
+ } from "../chunk-TD2ZUI3R.js";
133
133
  import {
134
134
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
135
135
  AnchorSessionClient,
@@ -224,7 +224,7 @@ import {
224
224
  subagentActivityAgeSeconds,
225
225
  sumTranscriptUsageInWindow,
226
226
  transcriptActivityAgeSeconds
227
- } from "../chunk-EOEAZDKE.js";
227
+ } from "../chunk-6SRLNMAP.js";
228
228
  import {
229
229
  reapOrphanChannelMcps
230
230
  } from "../chunk-XWVM4KPK.js";
@@ -13010,7 +13010,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
13010
13010
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
13011
13011
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
13012
13012
  async function channelInboundActivityAgeSecondsFor(codeName) {
13013
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-LKW5CCKO.js");
13013
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-4DP2CQRR.js");
13014
13014
  const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
13015
13015
  if (newest === null) return null;
13016
13016
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -13678,7 +13678,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
13678
13678
  var lastVersionCheckAt = 0;
13679
13679
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
13680
13680
  var lastResponsivenessProbeAt = 0;
13681
- var agtCliVersion = true ? "0.28.870" : "dev";
13681
+ var agtCliVersion = true ? "0.28.872" : "dev";
13682
13682
  function resolveBrewPath(execFileSync2) {
13683
13683
  try {
13684
13684
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -15268,7 +15268,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
15268
15268
  if (codeNames.length === 0) return;
15269
15269
  void (async () => {
15270
15270
  try {
15271
- const { collectDiagnostics } = await import("../persistent-session-Y4W3CMW5.js");
15271
+ const { collectDiagnostics } = await import("../persistent-session-DKTBTMAQ.js");
15272
15272
  await api.post("/host/heartbeat", {
15273
15273
  host_id: hostId,
15274
15274
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -15410,7 +15410,7 @@ async function pollCycleInner() {
15410
15410
  }
15411
15411
  try {
15412
15412
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
15413
- const { collectDiagnostics } = await import("../persistent-session-Y4W3CMW5.js");
15413
+ const { collectDiagnostics } = await import("../persistent-session-DKTBTMAQ.js");
15414
15414
  const diagCodeNames = [...agentState.persistentSessionAgents];
15415
15415
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
15416
15416
  let tailscaleHostname;
@@ -15579,7 +15579,7 @@ async function pollCycleInner() {
15579
15579
  collectPanelessActivityProbes,
15580
15580
  getResponsivenessIntervalMs,
15581
15581
  occupancyQualificationClassifications
15582
- } = await import("../responsiveness-probe-LKW5CCKO.js");
15582
+ } = await import("../responsiveness-probe-4DP2CQRR.js");
15583
15583
  const probeIntervalMs = getResponsivenessIntervalMs();
15584
15584
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
15585
15585
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -15696,7 +15696,7 @@ async function pollCycleInner() {
15696
15696
  collectResponsivenessProbes,
15697
15697
  livePendingInboundOldestAgeSeconds,
15698
15698
  parkPendingInbound
15699
- } = await import("../responsiveness-probe-LKW5CCKO.js");
15699
+ } = await import("../responsiveness-probe-4DP2CQRR.js");
15700
15700
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
15701
15701
  const wedgeNow = /* @__PURE__ */ new Date();
15702
15702
  const liveAgents = agentState.persistentSessionAgents;
@@ -15852,7 +15852,7 @@ async function pollCycleInner() {
15852
15852
  }
15853
15853
  try {
15854
15854
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
15855
- const { probeSessionAuth } = await import("../session-auth-dead-WBEU4O4G.js");
15855
+ const { probeSessionAuth } = await import("../session-auth-dead-YR6I6RNT.js");
15856
15856
  const observations = [];
15857
15857
  const pendingCacheCommits = [];
15858
15858
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -20097,7 +20097,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20097
20097
  try {
20098
20098
  const freshId = rotateSessionForWedge(codeName);
20099
20099
  consecutiveWedgeCycles.delete(codeName);
20100
- const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-LKW5CCKO.js");
20100
+ const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-4DP2CQRR.js");
20101
20101
  const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
20102
20102
  const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
20103
20103
  const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
@@ -20135,7 +20135,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20135
20135
  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}`));
20136
20136
  void (async () => {
20137
20137
  try {
20138
- const { collectDiagnostics } = await import("../persistent-session-Y4W3CMW5.js");
20138
+ const { collectDiagnostics } = await import("../persistent-session-DKTBTMAQ.js");
20139
20139
  await api.post("/host/heartbeat", {
20140
20140
  host_id: hostId,
20141
20141
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20181,7 +20181,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
20181
20181
  }
20182
20182
  try {
20183
20183
  const hostId = await getHostId();
20184
- const { collectDiagnostics } = await import("../persistent-session-Y4W3CMW5.js");
20184
+ const { collectDiagnostics } = await import("../persistent-session-DKTBTMAQ.js");
20185
20185
  await api.post("/host/heartbeat", {
20186
20186
  host_id: hostId,
20187
20187
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20817,7 +20817,7 @@ async function processClaudePairSessions(agents) {
20817
20817
  killPairSession,
20818
20818
  pairTmuxSession,
20819
20819
  finalizeClaudePairOnboarding
20820
- } = await import("../claude-pair-runtime-6TB4LL5B.js");
20820
+ } = await import("../claude-pair-runtime-7QJJLP2A.js");
20821
20821
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
20822
20822
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
20823
20823
  const killed = await killPairSession(pairTmuxSession(pairId));
package/dist/mcp/index.js CHANGED
@@ -30057,6 +30057,17 @@ function kanbanGetErrorMessage(status, id, fallbackMessage) {
30057
30057
  return `Could not read the card: ${fallbackMessage}`;
30058
30058
  }
30059
30059
 
30060
+ // src/knowledge-body-render.ts
30061
+ function renderKnowledgeBody(content) {
30062
+ if (content === void 0 || content === null) {
30063
+ return "(!) CONTRACT FAILURE: the API returned no `content` field for this entry. This is NOT an empty entry \u2014 the body was not delivered. Do not treat this as the entry text, and do not knowledge_update from it: an update replaces the whole body and would erase the real one. Report this as a bug.";
30064
+ }
30065
+ if (content.length === 0) {
30066
+ return "(empty \u2014 this entry genuinely has no body text)";
30067
+ }
30068
+ return content;
30069
+ }
30070
+
30060
30071
  // src/index.ts
30061
30072
  import { homedir as homedir3 } from "os";
30062
30073
  import { basename, isAbsolute as isAbsolute2, join as join6, resolve as pathResolve, sep as sep2 } from "path";
@@ -48283,7 +48294,7 @@ server.tool(
48283
48294
  const header = [
48284
48295
  `# ${k.title}`,
48285
48296
  `id: ${k.id} \xB7 slug: ${k.slug} \xB7 scope: ${k.scope} \xB7 ${k.is_active ? "active" : "INACTIVE"}`,
48286
- `length: ${k.full_length} chars \xB7 source: ${k.source_type}${k.source_url ? ` (${k.source_url})` : ""} \xB7 updated: ${k.updated_at}`
48297
+ `length: ${k.full_length} chars \xB7 source: ${k.source_type ?? "unknown"}${k.source_url ? ` (${k.source_url})` : ""} \xB7 updated: ${k.updated_at}`
48287
48298
  ];
48288
48299
  if (k.truncated) {
48289
48300
  header.push(
@@ -48292,9 +48303,22 @@ server.tool(
48292
48303
  }
48293
48304
  return {
48294
48305
  content: [
48295
- { type: "text", text: `${header.join("\n")}
48306
+ {
48307
+ type: "text",
48308
+ // THREE OUTCOMES, NOT TWO. `?? '(empty)'` was the original bug: a
48309
+ // field the API never sent rendered identically to an entry that is
48310
+ // genuinely blank, so a broken contract read as "this entry has no
48311
+ // text". My first fix only checked length, which still collapsed
48312
+ // missing and empty into the same `(empty)` — the same defect, one
48313
+ // layer up, inside the fix for it. Caught on review.
48314
+ //
48315
+ // Nullish now says so LOUDLY and names it as a contract failure,
48316
+ // because that is the one case where the right response is to
48317
+ // disbelieve the tool rather than the entry.
48318
+ text: `${header.join("\n")}
48296
48319
 
48297
- ${k.content ?? "(empty)"}` }
48320
+ ${renderKnowledgeBody(k.content)}`
48321
+ }
48298
48322
  ]
48299
48323
  };
48300
48324
  }
@@ -54,8 +54,8 @@ import {
54
54
  writeDirectChatSessionState,
55
55
  writeEgressAllowlist,
56
56
  writePersistentClaudeWrapper
57
- } from "./chunk-EK7QNCEO.js";
58
- import "./chunk-EOEAZDKE.js";
57
+ } from "./chunk-TD2ZUI3R.js";
58
+ import "./chunk-6SRLNMAP.js";
59
59
  import "./chunk-XWVM4KPK.js";
60
60
  export {
61
61
  EGRESS_BASELINE_DOMAINS,
@@ -114,4 +114,4 @@ export {
114
114
  writeEgressAllowlist,
115
115
  writePersistentClaudeWrapper
116
116
  };
117
- //# sourceMappingURL=persistent-session-Y4W3CMW5.js.map
117
+ //# sourceMappingURL=persistent-session-DKTBTMAQ.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-EK7QNCEO.js";
4
- import "./chunk-EOEAZDKE.js";
3
+ } from "./chunk-TD2ZUI3R.js";
4
+ import "./chunk-6SRLNMAP.js";
5
5
  import "./chunk-XWVM4KPK.js";
6
6
 
7
7
  // src/lib/responsiveness-probe.ts
@@ -764,4 +764,4 @@ export {
764
764
  readAndResetSlackReplyBindingClassifications,
765
765
  readAndResetSlackReplyTargetClassifications
766
766
  };
767
- //# sourceMappingURL=responsiveness-probe-LKW5CCKO.js.map
767
+ //# sourceMappingURL=responsiveness-probe-4DP2CQRR.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-EOEAZDKE.js";
3
+ } from "./chunk-6SRLNMAP.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-WBEU4O4G.js.map
206
+ //# sourceMappingURL=session-auth-dead-YR6I6RNT.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.870",
3
+ "version": "0.28.872",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {