@integrity-labs/agt-cli 0.28.17 → 0.28.18

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.
package/dist/bin/agt.js CHANGED
@@ -33,7 +33,7 @@ import {
33
33
  success,
34
34
  table,
35
35
  warn
36
- } from "../chunk-TORLV2SF.js";
36
+ } from "../chunk-VPMNDODG.js";
37
37
  import {
38
38
  CHANNEL_REGISTRY,
39
39
  DEPLOYMENT_TEMPLATES,
@@ -60,7 +60,7 @@ import {
60
60
  renderTemplate,
61
61
  resolveChannels,
62
62
  serializeManifestForSlackCli
63
- } from "../chunk-FW5TXDQC.js";
63
+ } from "../chunk-6UXSC4TR.js";
64
64
 
65
65
  // src/bin/agt.ts
66
66
  import { join as join21 } from "path";
@@ -4773,7 +4773,7 @@ import { execFileSync, execSync } from "child_process";
4773
4773
  import { existsSync as existsSync10, realpathSync as realpathSync2 } from "fs";
4774
4774
  import chalk18 from "chalk";
4775
4775
  import ora16 from "ora";
4776
- var cliVersion = true ? "0.28.17" : "dev";
4776
+ var cliVersion = true ? "0.28.18" : "dev";
4777
4777
  async function fetchLatestVersion() {
4778
4778
  const host2 = getHost();
4779
4779
  if (!host2) return null;
@@ -5696,7 +5696,7 @@ function handleError(err) {
5696
5696
  }
5697
5697
 
5698
5698
  // src/bin/agt.ts
5699
- var cliVersion2 = true ? "0.28.17" : "dev";
5699
+ var cliVersion2 = true ? "0.28.18" : "dev";
5700
5700
  var program = new Command();
5701
5701
  program.name("agt").description("Augmented CLI \u2014 agent provisioning and management").version(cliVersion2).option("--json", "Emit machine-readable JSON output (suppress spinners and colors)").option("--skip-update-check", "Skip the automatic update check on startup");
5702
5702
  program.hook("preAction", async (thisCommand, actionCommand) => {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  claudeModelAlias,
3
3
  isClaudeFastMode
4
- } from "./chunk-FW5TXDQC.js";
4
+ } from "./chunk-6UXSC4TR.js";
5
5
  import {
6
6
  reapOrphanChannelMcps
7
7
  } from "./chunk-XWVM4KPK.js";
@@ -1487,4 +1487,4 @@ export {
1487
1487
  stopAllSessionsAndWait,
1488
1488
  getProjectDir
1489
1489
  };
1490
- //# sourceMappingURL=chunk-F3RMS762.js.map
1490
+ //# sourceMappingURL=chunk-5DIMLYS5.js.map
@@ -5166,4 +5166,4 @@ export {
5166
5166
  coerceEnvValue,
5167
5167
  FLAGS_SCHEMA_VERSION
5168
5168
  };
5169
- //# sourceMappingURL=chunk-FW5TXDQC.js.map
5169
+ //# sourceMappingURL=chunk-6UXSC4TR.js.map
@@ -14,7 +14,7 @@ import {
14
14
  registerFramework,
15
15
  resolveAvatarEnvUrl,
16
16
  wrapScheduledTaskPrompt
17
- } from "./chunk-FW5TXDQC.js";
17
+ } from "./chunk-6UXSC4TR.js";
18
18
 
19
19
  // ../../packages/core/dist/integrations/registry.js
20
20
  var INTEGRATION_REGISTRY = [
@@ -8275,4 +8275,4 @@ export {
8275
8275
  managerInstallSystemUnitCommand,
8276
8276
  managerUninstallSystemUnitCommand
8277
8277
  };
8278
- //# sourceMappingURL=chunk-TORLV2SF.js.map
8278
+ //# sourceMappingURL=chunk-VPMNDODG.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-MIRJWKG7.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-RANQKKKC.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-VQWI5YXW.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-CFUSOOVY.js.map
@@ -22,7 +22,7 @@ import {
22
22
  provisionStopHook,
23
23
  requireHost,
24
24
  safeWriteJsonAtomic
25
- } from "../chunk-TORLV2SF.js";
25
+ } from "../chunk-VPMNDODG.js";
26
26
  import {
27
27
  getProjectDir as getProjectDir2,
28
28
  getReadyTasks,
@@ -64,7 +64,7 @@ import {
64
64
  takeWatchdogGiveUpCount,
65
65
  takeZombieDetection,
66
66
  transcriptActivityAgeSeconds
67
- } from "../chunk-F3RMS762.js";
67
+ } from "../chunk-5DIMLYS5.js";
68
68
  import {
69
69
  FLAGS_SCHEMA_VERSION,
70
70
  KANBAN_CHECK_COMMAND,
@@ -96,7 +96,7 @@ import {
96
96
  sumTranscriptUsageInWindow,
97
97
  worseConnectivityOutcome,
98
98
  wrapScheduledTaskPrompt
99
- } from "../chunk-FW5TXDQC.js";
99
+ } from "../chunk-6UXSC4TR.js";
100
100
  import {
101
101
  parsePsRows,
102
102
  reapOrphanChannelMcps
@@ -5266,7 +5266,7 @@ var cachedMaintenanceWindow = null;
5266
5266
  var lastVersionCheckAt = 0;
5267
5267
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
5268
5268
  var lastResponsivenessProbeAt = 0;
5269
- var agtCliVersion = true ? "0.28.17" : "dev";
5269
+ var agtCliVersion = true ? "0.28.18" : "dev";
5270
5270
  function resolveBrewPath(execFileSync4) {
5271
5271
  try {
5272
5272
  const out = execFileSync4("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -6375,7 +6375,7 @@ async function pollCycle() {
6375
6375
  }
6376
6376
  try {
6377
6377
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
6378
- const { collectDiagnostics } = await import("../persistent-session-MIRJWKG7.js");
6378
+ const { collectDiagnostics } = await import("../persistent-session-RANQKKKC.js");
6379
6379
  const diagCodeNames = [...agentState.persistentSessionAgents];
6380
6380
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
6381
6381
  let tailscaleHostname;
@@ -6469,7 +6469,7 @@ async function pollCycle() {
6469
6469
  const {
6470
6470
  collectResponsivenessProbes,
6471
6471
  getResponsivenessIntervalMs
6472
- } = await import("../responsiveness-probe-3G7C4AP4.js");
6472
+ } = await import("../responsiveness-probe-KQP6MY5N.js");
6473
6473
  const probeIntervalMs = getResponsivenessIntervalMs();
6474
6474
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
6475
6475
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -6501,7 +6501,7 @@ async function pollCycle() {
6501
6501
  collectResponsivenessProbes,
6502
6502
  livePendingInboundOldestAgeSeconds,
6503
6503
  parkPendingInbound
6504
- } = await import("../responsiveness-probe-3G7C4AP4.js");
6504
+ } = await import("../responsiveness-probe-KQP6MY5N.js");
6505
6505
  const { getProjectDir: wedgeProjectDir } = await import("../claude-scheduler-FATCLHDM.js");
6506
6506
  const wedgeNow = /* @__PURE__ */ new Date();
6507
6507
  const liveAgents = agentState.persistentSessionAgents;
@@ -11092,7 +11092,7 @@ async function processClaudePairSessions(agents) {
11092
11092
  killPairSession,
11093
11093
  pairTmuxSession,
11094
11094
  finalizeClaudePairOnboarding
11095
- } = await import("../claude-pair-runtime-VQWI5YXW.js");
11095
+ } = await import("../claude-pair-runtime-CFUSOOVY.js");
11096
11096
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
11097
11097
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
11098
11098
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -14222,8 +14222,9 @@ var mcp = new Server(
14222
14222
  "CRITICAL: every response to a direct-chat <channel> tag MUST go through direct_chat.reply (passing the session_id verbatim). Text in your session WITHOUT a direct_chat.reply call never reaches the operator \u2014 the reply dies inside the agent process.",
14223
14223
  'Messages from the webapp Direct Chat arrive as <channel source="direct-chat" session_id="..." user="...">.',
14224
14224
  "Reply using the direct_chat.reply tool, passing the session_id from the tag.",
14225
- "Always reply to every direct chat message \u2014 the user is waiting in the webapp.",
14226
- "In the rare case you deliberately handle a message without replying (e.g. an internal command), call direct_chat.consume with the session_id so it is not treated as undelivered and redelivered.",
14225
+ "Always reply to every direct chat message that expects a reply (its meta has requires_reply=true, or no requires_reply field) \u2014 the user is waiting in the webapp.",
14226
+ "NEVER call direct_chat.reply for a NOTICE \u2014 a notification whose meta has requires_reply=false (ENG-6381). It is an informational FYI (e.g. an integration-status update), not a question, and it has ALREADY been acknowledged for you. Replying would wrongly post into the operator\u2019s chat history and burn a turn. Just take it into account and carry on.",
14227
+ "In the rare case you deliberately handle a reply-expecting message without replying (e.g. an internal command), call direct_chat.consume with the session_id so it is not treated as undelivered and redelivered.",
14227
14228
  "Keep replies concise and helpful. You have full access to all your MCP tools."
14228
14229
  ].join(" ")
14229
14230
  }
@@ -14384,14 +14385,20 @@ async function pollForMessages(sinceMs) {
14384
14385
  });
14385
14386
  if (!res.ok) return;
14386
14387
  const data = await res.json();
14387
- for (const msg of data.messages ?? []) {
14388
- if (processedIds.has(msg.id)) continue;
14389
- processedIds.add(msg.id);
14388
+ const markProcessed = (id) => {
14389
+ processedIds.add(id);
14390
14390
  if (processedIds.size > 500) {
14391
14391
  const ids = [...processedIds];
14392
14392
  for (let i = 0; i < 250; i++) processedIds.delete(ids[i]);
14393
14393
  }
14394
- claimTracker.track(msg.session_id, msg.id);
14394
+ };
14395
+ for (const msg of data.messages ?? []) {
14396
+ if (processedIds.has(msg.id)) continue;
14397
+ const isNotice = msg.kind === "notice";
14398
+ if (!isNotice) {
14399
+ markProcessed(msg.id);
14400
+ claimTracker.track(msg.session_id, msg.id);
14401
+ }
14395
14402
  await mcp.notification({
14396
14403
  method: "notifications/claude/channel",
14397
14404
  params: {
@@ -14399,10 +14406,28 @@ async function pollForMessages(sinceMs) {
14399
14406
  meta: {
14400
14407
  session_id: msg.session_id,
14401
14408
  user: "webapp",
14402
- source: "direct-chat"
14409
+ source: "direct-chat",
14410
+ requires_reply: !isNotice
14403
14411
  }
14404
14412
  }
14405
14413
  });
14414
+ if (isNotice) {
14415
+ try {
14416
+ const res2 = await apiPost("/host/direct-chat/consume", {
14417
+ agent_id: AGT_AGENT_ID,
14418
+ session_id: msg.session_id,
14419
+ message_ids: [msg.id]
14420
+ });
14421
+ if (!res2.ok) throw new Error(`consume returned HTTP ${res2.status}`);
14422
+ markProcessed(msg.id);
14423
+ } catch (err) {
14424
+ process.stderr.write(
14425
+ `direct-chat-channel: notice push/consume failed for ${msg.id}: ${err.message} \u2014 will retry
14426
+ `
14427
+ );
14428
+ continue;
14429
+ }
14430
+ }
14406
14431
  inboundContextClient?.recordInbound({
14407
14432
  sourceIntegration: "direct-chat",
14408
14433
  sourceExternalId: msg.session_id
@@ -25,8 +25,8 @@ import {
25
25
  takeZombieDetection,
26
26
  writeDirectChatSessionState,
27
27
  writePersistentClaudeWrapper
28
- } from "./chunk-F3RMS762.js";
29
- import "./chunk-FW5TXDQC.js";
28
+ } from "./chunk-5DIMLYS5.js";
29
+ import "./chunk-6UXSC4TR.js";
30
30
  import "./chunk-XWVM4KPK.js";
31
31
  export {
32
32
  SEND_KEYS_ENTER_DELAY_MS,
@@ -56,4 +56,4 @@ export {
56
56
  writeDirectChatSessionState,
57
57
  writePersistentClaudeWrapper
58
58
  };
59
- //# sourceMappingURL=persistent-session-MIRJWKG7.js.map
59
+ //# sourceMappingURL=persistent-session-RANQKKKC.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-F3RMS762.js";
4
- import "./chunk-FW5TXDQC.js";
3
+ } from "./chunk-5DIMLYS5.js";
4
+ import "./chunk-6UXSC4TR.js";
5
5
  import "./chunk-XWVM4KPK.js";
6
6
 
7
7
  // src/lib/responsiveness-probe.ts
@@ -250,4 +250,4 @@ export {
250
250
  parkPendingInbound,
251
251
  readAndResetChannelDeflections
252
252
  };
253
- //# sourceMappingURL=responsiveness-probe-3G7C4AP4.js.map
253
+ //# sourceMappingURL=responsiveness-probe-KQP6MY5N.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.17",
3
+ "version": "0.28.18",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {