@integrity-labs/agt-cli 0.28.158 → 0.28.159

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.
@@ -3,7 +3,7 @@ import {
3
3
  formatMissingVar,
4
4
  isClaudeFastMode,
5
5
  probeMcpEnvSubstitution
6
- } from "./chunk-TLX6ORJ5.js";
6
+ } from "./chunk-SAAK2IP4.js";
7
7
  import {
8
8
  reapOrphanChannelMcps
9
9
  } from "./chunk-XWVM4KPK.js";
@@ -1588,4 +1588,4 @@ export {
1588
1588
  stopAllSessionsAndWait,
1589
1589
  getProjectDir
1590
1590
  };
1591
- //# sourceMappingURL=chunk-E6ABR63O.js.map
1591
+ //# sourceMappingURL=chunk-TNKKZHEQ.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-N7WFONZC.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-K5CFAUY7.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-SXO5Q5R6.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-E2E2FJHS.js.map
@@ -28,7 +28,7 @@ import {
28
28
  requireHost,
29
29
  safeWriteJsonAtomic,
30
30
  setConfigHash
31
- } from "../chunk-3OLFOA4F.js";
31
+ } from "../chunk-PGW3CTYR.js";
32
32
  import {
33
33
  getProjectDir as getProjectDir2,
34
34
  getReadyTasks,
@@ -70,8 +70,9 @@ import {
70
70
  takeZombieDetection,
71
71
  transcriptActivityAgeSeconds,
72
72
  writeEgressAllowlist
73
- } from "../chunk-E6ABR63O.js";
73
+ } from "../chunk-TNKKZHEQ.js";
74
74
  import {
75
+ CONVERSATION_FAILURE_CATEGORIES,
75
76
  FLAGS_SCHEMA_VERSION,
76
77
  FLAG_REGISTRY,
77
78
  KANBAN_CHECK_COMMAND,
@@ -80,6 +81,7 @@ import {
80
81
  StreamEncoder,
81
82
  appendDmFooter,
82
83
  attributeTranscriptUsageByRun,
84
+ buildFailureCategoryPromptLines,
83
85
  buildScheduledTaskContextBlocks,
84
86
  classifyActor,
85
87
  classifyOutput,
@@ -89,6 +91,7 @@ import {
89
91
  formatActorId,
90
92
  formatRunMarker,
91
93
  getFramework,
94
+ isConversationFailureCategory,
92
95
  isEmptyTotals,
93
96
  isOnboardingArea,
94
97
  isParseError,
@@ -107,7 +110,7 @@ import {
107
110
  resolveChannels,
108
111
  resolveDmTarget,
109
112
  sumTranscriptUsageInWindow
110
- } from "../chunk-TLX6ORJ5.js";
113
+ } from "../chunk-SAAK2IP4.js";
111
114
  import {
112
115
  parsePsRows,
113
116
  reapOrphanChannelMcps
@@ -2498,9 +2501,10 @@ Score the agent's success:
2498
2501
  - score: integer 0-100 (0 = ignored/unhelpful/wrong, 100 = fully resolved the user's need)
2499
2502
  - verdict: "success" (need clearly met), "partial" (some help but incomplete/ambiguous), or "failure" (did not help / made it worse)
2500
2503
  - summary: ONE short sentence (max 140 chars) explaining the score. Do NOT quote sensitive user content.
2504
+ - failure_category: ONLY when verdict is "failure", the single best-fitting reason from this exact set: ${buildFailureCategoryPromptLines()}. Use null when verdict is "success" or "partial".
2501
2505
 
2502
2506
  Respond with ONLY a JSON object, no other text:
2503
- {"score": 0-100, "verdict": "success|partial|failure", "summary": "..."}`;
2507
+ {"score": 0-100, "verdict": "success|partial|failure", "summary": "...", "failure_category": "${CONVERSATION_FAILURE_CATEGORIES.join("|")} or null"}`;
2504
2508
  }
2505
2509
  function parseVerdict(raw) {
2506
2510
  const match = raw.match(/\{[\s\S]*\}/);
@@ -2515,7 +2519,8 @@ function parseVerdict(raw) {
2515
2519
  if (!Number.isFinite(score) || score < 0 || score > 100) return null;
2516
2520
  if (obj.verdict !== "success" && obj.verdict !== "partial" && obj.verdict !== "failure") return null;
2517
2521
  const summary = typeof obj.summary === "string" ? obj.summary.slice(0, 140) : "";
2518
- return { score: Math.round(score), verdict: obj.verdict, summary };
2522
+ const failureCategory = obj.verdict === "failure" && isConversationFailureCategory(obj.failure_category) ? obj.failure_category : null;
2523
+ return { score: Math.round(score), verdict: obj.verdict, summary, failureCategory };
2519
2524
  }
2520
2525
  async function maybeEvaluateConversations(args) {
2521
2526
  const { api: api2, backend, codeName, agentId, log: log2 } = args;
@@ -2585,6 +2590,7 @@ async function maybeEvaluateConversations(args) {
2585
2590
  score: verdict.score,
2586
2591
  verdict: verdict.verdict,
2587
2592
  summary: verdict.summary,
2593
+ failure_category: verdict.failureCategory,
2588
2594
  model: backend.model
2589
2595
  });
2590
2596
  log2(
@@ -6871,7 +6877,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
6871
6877
  var lastVersionCheckAt = 0;
6872
6878
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
6873
6879
  var lastResponsivenessProbeAt = 0;
6874
- var agtCliVersion = true ? "0.28.158" : "dev";
6880
+ var agtCliVersion = true ? "0.28.159" : "dev";
6875
6881
  function resolveBrewPath(execFileSync4) {
6876
6882
  try {
6877
6883
  const out = execFileSync4("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -8004,7 +8010,7 @@ async function pollCycle() {
8004
8010
  }
8005
8011
  try {
8006
8012
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
8007
- const { collectDiagnostics } = await import("../persistent-session-N7WFONZC.js");
8013
+ const { collectDiagnostics } = await import("../persistent-session-K5CFAUY7.js");
8008
8014
  const diagCodeNames = [...agentState.persistentSessionAgents];
8009
8015
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
8010
8016
  let tailscaleHostname;
@@ -8152,7 +8158,7 @@ async function pollCycle() {
8152
8158
  const {
8153
8159
  collectResponsivenessProbes,
8154
8160
  getResponsivenessIntervalMs
8155
- } = await import("../responsiveness-probe-UXJY4YRL.js");
8161
+ } = await import("../responsiveness-probe-5BQI3RNU.js");
8156
8162
  const probeIntervalMs = getResponsivenessIntervalMs();
8157
8163
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
8158
8164
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -8184,7 +8190,7 @@ async function pollCycle() {
8184
8190
  collectResponsivenessProbes,
8185
8191
  livePendingInboundOldestAgeSeconds,
8186
8192
  parkPendingInbound
8187
- } = await import("../responsiveness-probe-UXJY4YRL.js");
8193
+ } = await import("../responsiveness-probe-5BQI3RNU.js");
8188
8194
  const { getProjectDir: wedgeProjectDir } = await import("../claude-scheduler-FATCLHDM.js");
8189
8195
  const wedgeNow = /* @__PURE__ */ new Date();
8190
8196
  const liveAgents = agentState.persistentSessionAgents;
@@ -11685,7 +11691,7 @@ async function processClaudePairSessions(agents) {
11685
11691
  killPairSession,
11686
11692
  pairTmuxSession,
11687
11693
  finalizeClaudePairOnboarding
11688
- } = await import("../claude-pair-runtime-SXO5Q5R6.js");
11694
+ } = await import("../claude-pair-runtime-E2E2FJHS.js");
11689
11695
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
11690
11696
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
11691
11697
  const killed = await killPairSession(pairTmuxSession(pairId));