@integrity-labs/agt-cli 0.28.198 → 0.28.199

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.
@@ -17,7 +17,7 @@ import {
17
17
  resolveConnectivityProbe,
18
18
  worseConnectivityOutcome,
19
19
  wrapScheduledTaskPrompt
20
- } from "./chunk-CE6U2IAF.js";
20
+ } from "./chunk-KOZN2FW2.js";
21
21
 
22
22
  // ../../packages/core/dist/provisioning/mcp-config-guards.js
23
23
  import { chmodSync, existsSync, readFileSync, renameSync, writeFileSync, unlinkSync } from "fs";
@@ -5525,7 +5525,7 @@ function requireHost() {
5525
5525
  }
5526
5526
 
5527
5527
  // src/lib/api-client.ts
5528
- var agtCliVersion = true ? "0.28.198" : "dev";
5528
+ var agtCliVersion = true ? "0.28.199" : "dev";
5529
5529
  var lastConfigHash = null;
5530
5530
  function setConfigHash(hash) {
5531
5531
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -6829,4 +6829,4 @@ export {
6829
6829
  managerInstallSystemUnitCommand,
6830
6830
  managerUninstallSystemUnitCommand
6831
6831
  };
6832
- //# sourceMappingURL=chunk-75XCRB6E.js.map
6832
+ //# sourceMappingURL=chunk-YVNG7VKX.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-PG3OFGDB.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-QKYQDE5W.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-RW4N6OQU.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-67OI4BHG.js.map
@@ -27,7 +27,7 @@ import {
27
27
  requireHost,
28
28
  safeWriteJsonAtomic,
29
29
  setConfigHash
30
- } from "../chunk-75XCRB6E.js";
30
+ } from "../chunk-YVNG7VKX.js";
31
31
  import {
32
32
  getProjectDir as getProjectDir2,
33
33
  getReadyTasks,
@@ -69,7 +69,7 @@ import {
69
69
  takeZombieDetection,
70
70
  transcriptActivityAgeSeconds,
71
71
  writeEgressAllowlist
72
- } from "../chunk-PCYEFPBE.js";
72
+ } from "../chunk-4CBRFYUJ.js";
73
73
  import {
74
74
  CONVERSATION_FAILURE_CATEGORIES,
75
75
  DEFAULT_FRAMEWORK,
@@ -113,7 +113,7 @@ import {
113
113
  resolveChannels,
114
114
  resolveDmTarget,
115
115
  sumTranscriptUsageInWindow
116
- } from "../chunk-CE6U2IAF.js";
116
+ } from "../chunk-KOZN2FW2.js";
117
117
  import {
118
118
  parsePsRows,
119
119
  reapOrphanChannelMcps
@@ -6681,7 +6681,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
6681
6681
  var lastVersionCheckAt = 0;
6682
6682
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
6683
6683
  var lastResponsivenessProbeAt = 0;
6684
- var agtCliVersion = true ? "0.28.198" : "dev";
6684
+ var agtCliVersion = true ? "0.28.199" : "dev";
6685
6685
  function resolveBrewPath(execFileSync4) {
6686
6686
  try {
6687
6687
  const out = execFileSync4("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -7574,7 +7574,7 @@ async function pollCycle() {
7574
7574
  }
7575
7575
  try {
7576
7576
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
7577
- const { collectDiagnostics } = await import("../persistent-session-PG3OFGDB.js");
7577
+ const { collectDiagnostics } = await import("../persistent-session-QKYQDE5W.js");
7578
7578
  const diagCodeNames = [...agentState.persistentSessionAgents];
7579
7579
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
7580
7580
  let tailscaleHostname;
@@ -7722,7 +7722,7 @@ async function pollCycle() {
7722
7722
  const {
7723
7723
  collectResponsivenessProbes,
7724
7724
  getResponsivenessIntervalMs
7725
- } = await import("../responsiveness-probe-MMHGI5FC.js");
7725
+ } = await import("../responsiveness-probe-YE2F22RF.js");
7726
7726
  const probeIntervalMs = getResponsivenessIntervalMs();
7727
7727
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
7728
7728
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -7754,7 +7754,7 @@ async function pollCycle() {
7754
7754
  collectResponsivenessProbes,
7755
7755
  livePendingInboundOldestAgeSeconds,
7756
7756
  parkPendingInbound
7757
- } = await import("../responsiveness-probe-MMHGI5FC.js");
7757
+ } = await import("../responsiveness-probe-YE2F22RF.js");
7758
7758
  const { getProjectDir: wedgeProjectDir } = await import("../claude-scheduler-FATCLHDM.js");
7759
7759
  const wedgeNow = /* @__PURE__ */ new Date();
7760
7760
  const liveAgents = agentState.persistentSessionAgents;
@@ -10754,7 +10754,7 @@ async function processClaudePairSessions(agents) {
10754
10754
  killPairSession,
10755
10755
  pairTmuxSession,
10756
10756
  finalizeClaudePairOnboarding
10757
- } = await import("../claude-pair-runtime-RW4N6OQU.js");
10757
+ } = await import("../claude-pair-runtime-67OI4BHG.js");
10758
10758
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
10759
10759
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
10760
10760
  const killed = await killPairSession(pairTmuxSession(pairId));
package/dist/mcp/index.js CHANGED
@@ -21216,6 +21216,37 @@ function describeFormRequestResult(resp) {
21216
21216
  };
21217
21217
  }
21218
21218
 
21219
+ // src/buttons-request.ts
21220
+ function findDuplicateButtonOption(options) {
21221
+ const seenLabels = /* @__PURE__ */ new Set();
21222
+ const seenValues = /* @__PURE__ */ new Set();
21223
+ for (const opt of options) {
21224
+ if (seenLabels.has(opt.label)) {
21225
+ return `Duplicate button label "${opt.label}". Each button label must be unique so the tapped choice is unambiguous.`;
21226
+ }
21227
+ if (seenValues.has(opt.value)) {
21228
+ return `Duplicate button value "${opt.value}". Each button value must be unique so the tapped choice is unambiguous.`;
21229
+ }
21230
+ seenLabels.add(opt.label);
21231
+ seenValues.add(opt.value);
21232
+ }
21233
+ return null;
21234
+ }
21235
+ function describeButtonsRequestResult(resp, channelId, optionCount) {
21236
+ if (!resp.ok) {
21237
+ const detail = resp.error ? `: ${resp.error}` : resp.status ? ` (status ${resp.status})` : "";
21238
+ return {
21239
+ text: `Could not post the buttons${detail}. Fix the issue (often the channel id) and try again, or tell your operator.`,
21240
+ isError: true
21241
+ };
21242
+ }
21243
+ const rid = resp.request_id ?? resp.interaction_id ?? "(unknown)";
21244
+ return {
21245
+ text: `Posted ${optionCount} buttons to ${channelId} (request \`${rid}\`). END YOUR TURN now - the user's tap arrives later as a direct-chat message (payload.kind = "button_click", payload.value / payload.label) carrying source_channel so you reply in the original conversation. Do not wait or poll.`,
21246
+ isError: false
21247
+ };
21248
+ }
21249
+
21219
21250
  // src/approval-tools.ts
21220
21251
  function statusToOutcome(status) {
21221
21252
  switch (status) {
@@ -22411,6 +22442,13 @@ server.tool(
22411
22442
  isError: true
22412
22443
  };
22413
22444
  }
22445
+ const dupError = findDuplicateButtonOption(params.options);
22446
+ if (dupError) {
22447
+ return {
22448
+ content: [{ type: "text", text: `Buttons request rejected: ${dupError}` }],
22449
+ isError: true
22450
+ };
22451
+ }
22414
22452
  let resp;
22415
22453
  try {
22416
22454
  resp = await apiPost("/host/request-buttons", {
@@ -22443,14 +22481,14 @@ server.tool(
22443
22481
  isError: true
22444
22482
  };
22445
22483
  }
22446
- const rid = resp.request_id ?? resp.interaction_id ?? "(unknown)";
22484
+ const { text, isError } = describeButtonsRequestResult(
22485
+ resp,
22486
+ params.channel_id,
22487
+ params.options.length
22488
+ );
22447
22489
  return {
22448
- content: [
22449
- {
22450
- type: "text",
22451
- text: `Posted ${params.options.length} buttons to ${params.channel_id} (request \`${rid}\`). END YOUR TURN now \u2014 the user's tap arrives later as a direct-chat message (payload.kind = "button_click", payload.value / payload.label) carrying source_channel so you reply in the original conversation. Do not wait or poll.`
22452
- }
22453
- ]
22490
+ content: [{ type: "text", text }],
22491
+ ...isError ? { isError: true } : {}
22454
22492
  };
22455
22493
  }
22456
22494
  );
@@ -34,8 +34,8 @@ import {
34
34
  writeDirectChatSessionState,
35
35
  writeEgressAllowlist,
36
36
  writePersistentClaudeWrapper
37
- } from "./chunk-PCYEFPBE.js";
38
- import "./chunk-CE6U2IAF.js";
37
+ } from "./chunk-4CBRFYUJ.js";
38
+ import "./chunk-KOZN2FW2.js";
39
39
  import "./chunk-XWVM4KPK.js";
40
40
  export {
41
41
  EGRESS_BASELINE_DOMAINS,
@@ -74,4 +74,4 @@ export {
74
74
  writeEgressAllowlist,
75
75
  writePersistentClaudeWrapper
76
76
  };
77
- //# sourceMappingURL=persistent-session-PG3OFGDB.js.map
77
+ //# sourceMappingURL=persistent-session-QKYQDE5W.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-PCYEFPBE.js";
4
- import "./chunk-CE6U2IAF.js";
3
+ } from "./chunk-4CBRFYUJ.js";
4
+ import "./chunk-KOZN2FW2.js";
5
5
  import "./chunk-XWVM4KPK.js";
6
6
 
7
7
  // src/lib/responsiveness-probe.ts
@@ -304,4 +304,4 @@ export {
304
304
  readAndResetChannelDeflections,
305
305
  readAndResetChannelLaneClassifications
306
306
  };
307
- //# sourceMappingURL=responsiveness-probe-MMHGI5FC.js.map
307
+ //# sourceMappingURL=responsiveness-probe-YE2F22RF.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.198",
3
+ "version": "0.28.199",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {