@integrity-labs/agt-cli 0.28.513 → 0.28.514

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.
@@ -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-QNYR2ZJA.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-RM5ZY2SB.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-C7FJTY3F.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-YGKYLV4M.js.map
@@ -53,7 +53,7 @@ import {
53
53
  safeWriteJsonAtomic,
54
54
  setConfigHash,
55
55
  tripClass
56
- } from "../chunk-PZ3RIMNA.js";
56
+ } from "../chunk-GJ6U2XU6.js";
57
57
  import {
58
58
  getProjectDir as getProjectDir2,
59
59
  getReadyTasks,
@@ -173,7 +173,7 @@ import {
173
173
  toOpencodeModel,
174
174
  transcriptActivityAgeSeconds,
175
175
  writeEgressAllowlist
176
- } from "../chunk-MDEA3PIS.js";
176
+ } from "../chunk-S5RR4UHQ.js";
177
177
  import {
178
178
  reapOrphanChannelMcps
179
179
  } from "../chunk-XWVM4KPK.js";
@@ -10071,7 +10071,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
10071
10071
  var lastVersionCheckAt = 0;
10072
10072
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
10073
10073
  var lastResponsivenessProbeAt = 0;
10074
- var agtCliVersion = true ? "0.28.513" : "dev";
10074
+ var agtCliVersion = true ? "0.28.514" : "dev";
10075
10075
  function resolveBrewPath(execFileSync2) {
10076
10076
  try {
10077
10077
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -11278,7 +11278,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
11278
11278
  if (codeNames.length === 0) return;
11279
11279
  void (async () => {
11280
11280
  try {
11281
- const { collectDiagnostics } = await import("../persistent-session-QNYR2ZJA.js");
11281
+ const { collectDiagnostics } = await import("../persistent-session-RM5ZY2SB.js");
11282
11282
  await api.post("/host/heartbeat", {
11283
11283
  host_id: hostId,
11284
11284
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor)
@@ -11385,7 +11385,7 @@ async function pollCycle() {
11385
11385
  }
11386
11386
  try {
11387
11387
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
11388
- const { collectDiagnostics } = await import("../persistent-session-QNYR2ZJA.js");
11388
+ const { collectDiagnostics } = await import("../persistent-session-RM5ZY2SB.js");
11389
11389
  const diagCodeNames = [...agentState.persistentSessionAgents];
11390
11390
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor) : void 0;
11391
11391
  let tailscaleHostname;
@@ -11500,7 +11500,7 @@ async function pollCycle() {
11500
11500
  collectResponsivenessProbes,
11501
11501
  collectPanelessActivityProbes,
11502
11502
  getResponsivenessIntervalMs
11503
- } = await import("../responsiveness-probe-X3PAOSNA.js");
11503
+ } = await import("../responsiveness-probe-C4KMTKWR.js");
11504
11504
  const probeIntervalMs = getResponsivenessIntervalMs();
11505
11505
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
11506
11506
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -11564,7 +11564,7 @@ async function pollCycle() {
11564
11564
  collectResponsivenessProbes,
11565
11565
  livePendingInboundOldestAgeSeconds,
11566
11566
  parkPendingInbound
11567
- } = await import("../responsiveness-probe-X3PAOSNA.js");
11567
+ } = await import("../responsiveness-probe-C4KMTKWR.js");
11568
11568
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
11569
11569
  const wedgeNow = /* @__PURE__ */ new Date();
11570
11570
  const liveAgents = agentState.persistentSessionAgents;
@@ -15072,7 +15072,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
15072
15072
  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}`));
15073
15073
  void (async () => {
15074
15074
  try {
15075
- const { collectDiagnostics } = await import("../persistent-session-QNYR2ZJA.js");
15075
+ const { collectDiagnostics } = await import("../persistent-session-RM5ZY2SB.js");
15076
15076
  await api.post("/host/heartbeat", {
15077
15077
  host_id: hostId,
15078
15078
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor)
@@ -15122,7 +15122,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
15122
15122
  }
15123
15123
  try {
15124
15124
  const hostId = await getHostId();
15125
- const { collectDiagnostics } = await import("../persistent-session-QNYR2ZJA.js");
15125
+ const { collectDiagnostics } = await import("../persistent-session-RM5ZY2SB.js");
15126
15126
  await api.post("/host/heartbeat", {
15127
15127
  host_id: hostId,
15128
15128
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor)
@@ -15640,7 +15640,7 @@ async function processClaudePairSessions(agents) {
15640
15640
  killPairSession,
15641
15641
  pairTmuxSession,
15642
15642
  finalizeClaudePairOnboarding
15643
- } = await import("../claude-pair-runtime-C7FJTY3F.js");
15643
+ } = await import("../claude-pair-runtime-YGKYLV4M.js");
15644
15644
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
15645
15645
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
15646
15646
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -33579,7 +33579,19 @@ var MB2 = 1024 * 1024;
33579
33579
  var DIRECT_CHAT_UPLOAD_MAX_BYTES = 10 * MB2;
33580
33580
 
33581
33581
  // ../core/dist/direct-chat/notice-display.js
33582
- var AGENT_DIRECTED_NOTICE_KINDS = ["scheduled_task_nudge", "kanban_check"];
33582
+ var AGENT_DIRECTED_NOTICE_KINDS = [
33583
+ "scheduled_task_nudge",
33584
+ "kanban_check",
33585
+ // ENG-8394. These two were originally cited BELOW as examples of user-facing
33586
+ // notices; reading their content builders shows the opposite. The manager
33587
+ // feedback notice opens "Your manager just completed a performance review of
33588
+ // your work" and closes "Please reflect on this feedback and act on it now";
33589
+ // the form-timeout notice ends "do NOT keep waiting for this form" and quotes
33590
+ // a raw request id and Slack channel id. Both are second-person instructions
33591
+ // to the agent and were being rendered verbatim to the customer.
33592
+ "manager_feedback",
33593
+ "form_timeout"
33594
+ ];
33583
33595
  var AGENT_DIRECTED_KIND_SET = new Set(AGENT_DIRECTED_NOTICE_KINDS);
33584
33596
 
33585
33597
  // ../core/dist/direct-chat/cursor-advance.js
package/dist/mcp/index.js CHANGED
@@ -21756,33 +21756,62 @@ function describeAssignHumanResult(resp, email2) {
21756
21756
  }
21757
21757
 
21758
21758
  // src/directory.ts
21759
+ function scopedCount(n, scope) {
21760
+ const org = orgLabel(scope);
21761
+ if (!org) return `${n}`;
21762
+ return `${n} in ${org} \u2014 this directory cannot see other organizations`;
21763
+ }
21764
+ function orgLabel(scope) {
21765
+ if (scope?.cross_org !== false) return null;
21766
+ const named = scope.organization_name?.trim();
21767
+ if (named) return named;
21768
+ return scope.organization_id ? "your organization" : null;
21769
+ }
21770
+ function scopeFooter(scope) {
21771
+ const org = orgLabel(scope);
21772
+ if (!org) return null;
21773
+ const visible = scope?.teams_visible;
21774
+ const total = scope?.teams_in_org;
21775
+ const teams = typeof visible === "number" && typeof total === "number" ? ` (${visible} of ${total} team${total === 1 ? "" : "s"} visible to you)` : "";
21776
+ return `Scope: ${org} only${teams}. Other organizations are not searchable from here, so one match is not proof it is the only one, and no match is not proof there is none.`;
21777
+ }
21759
21778
  function formatDirectoryResult(data, query, slackUserId) {
21760
21779
  const agents = data.agents ?? [];
21761
21780
  const people = data.people ?? [];
21781
+ const footer = scopeFooter(data.scope);
21762
21782
  if (agents.length === 0 && people.length === 0) {
21763
21783
  if (slackUserId) {
21764
21784
  return {
21765
- text: `No agent or person in your directory matches Slack id ${slackUserId}. Either they are not someone you're authorised to see, or they haven't linked their Slack account. Do not guess who it is.`
21785
+ text: `No agent or person in your directory matches Slack id ${slackUserId}. Either they are not someone you're authorised to see, or they haven't linked their Slack account. Do not guess who it is.` + (footer ? `
21786
+
21787
+ ${footer}` : "")
21766
21788
  };
21767
21789
  }
21768
21790
  return {
21769
- text: query ? `No agents or people match "${query}" in your directory.` : "No agents or people are visible in your directory."
21791
+ text: (query ? `No agents or people match "${query}" in your directory.` : "No agents or people are visible in your directory.") + (footer ? `
21792
+
21793
+ ${footer}` : "")
21770
21794
  };
21771
21795
  }
21772
21796
  const slackTag = (id) => id ? ` \u2014 Slack <@${id}>` : "";
21773
21797
  const agentLines = agents.map((a) => {
21774
21798
  const scope = a.same_team ? "your team" : `team ${a.team_slug}`;
21775
21799
  const assignHint = a.same_team ? `kanban_assign target_agent="${a.code_name}"` : `kanban_assign target_agent="${a.code_name}" target_team="${a.team_slug}"`;
21776
- return ` \u2022 ${a.code_name} (${a.display_name}) - ${scope} [${a.team_name}]${slackTag(a.slack_user_id)} \u2192 ${assignHint}`;
21800
+ return ` \u2022 ${a.code_name} (${a.display_name}) - ${scope} [team: ${a.team_name}]${slackTag(a.slack_user_id)} \u2192 ${assignHint}`;
21777
21801
  });
21778
21802
  const peopleLines = people.map(
21779
21803
  (p) => ` \u2022 ${p.name ?? p.email} <${p.email}>${slackTag(p.slack_user_id)} \u2192 assign_kanban_to_human assignee_email="${p.email}"`
21780
21804
  );
21781
21805
  const sections = [];
21782
- if (agents.length > 0) sections.push(`Agents (${agents.length}):
21806
+ if (agents.length > 0) {
21807
+ sections.push(`Agents (${scopedCount(agents.length, data.scope)}):
21783
21808
  ${agentLines.join("\n")}`);
21784
- if (people.length > 0) sections.push(`People (${people.length}):
21809
+ }
21810
+ if (people.length > 0) {
21811
+ sections.push(`People (${scopedCount(people.length, data.scope)}):
21785
21812
  ${peopleLines.join("\n")}`);
21813
+ }
21814
+ if (footer) sections.push(footer);
21786
21815
  return { text: sections.join("\n\n") };
21787
21816
  }
21788
21817
 
@@ -39917,7 +39917,19 @@ var MB2 = 1024 * 1024;
39917
39917
  var DIRECT_CHAT_UPLOAD_MAX_BYTES = 10 * MB2;
39918
39918
 
39919
39919
  // ../core/dist/direct-chat/notice-display.js
39920
- var AGENT_DIRECTED_NOTICE_KINDS = ["scheduled_task_nudge", "kanban_check"];
39920
+ var AGENT_DIRECTED_NOTICE_KINDS = [
39921
+ "scheduled_task_nudge",
39922
+ "kanban_check",
39923
+ // ENG-8394. These two were originally cited BELOW as examples of user-facing
39924
+ // notices; reading their content builders shows the opposite. The manager
39925
+ // feedback notice opens "Your manager just completed a performance review of
39926
+ // your work" and closes "Please reflect on this feedback and act on it now";
39927
+ // the form-timeout notice ends "do NOT keep waiting for this form" and quotes
39928
+ // a raw request id and Slack channel id. Both are second-person instructions
39929
+ // to the agent and were being rendered verbatim to the customer.
39930
+ "manager_feedback",
39931
+ "form_timeout"
39932
+ ];
39921
39933
  var AGENT_DIRECTED_KIND_SET = new Set(AGENT_DIRECTED_NOTICE_KINDS);
39922
39934
 
39923
39935
  // ../core/dist/direct-chat/cursor-advance.js
@@ -33801,7 +33801,19 @@ var MB2 = 1024 * 1024;
33801
33801
  var DIRECT_CHAT_UPLOAD_MAX_BYTES = 10 * MB2;
33802
33802
 
33803
33803
  // ../core/dist/direct-chat/notice-display.js
33804
- var AGENT_DIRECTED_NOTICE_KINDS = ["scheduled_task_nudge", "kanban_check"];
33804
+ var AGENT_DIRECTED_NOTICE_KINDS = [
33805
+ "scheduled_task_nudge",
33806
+ "kanban_check",
33807
+ // ENG-8394. These two were originally cited BELOW as examples of user-facing
33808
+ // notices; reading their content builders shows the opposite. The manager
33809
+ // feedback notice opens "Your manager just completed a performance review of
33810
+ // your work" and closes "Please reflect on this feedback and act on it now";
33811
+ // the form-timeout notice ends "do NOT keep waiting for this form" and quotes
33812
+ // a raw request id and Slack channel id. Both are second-person instructions
33813
+ // to the agent and were being rendered verbatim to the customer.
33814
+ "manager_feedback",
33815
+ "form_timeout"
33816
+ ];
33805
33817
  var AGENT_DIRECTED_KIND_SET = new Set(AGENT_DIRECTED_NOTICE_KINDS);
33806
33818
 
33807
33819
  // ../core/dist/direct-chat/cursor-advance.js
@@ -34127,7 +34127,19 @@ var MB2 = 1024 * 1024;
34127
34127
  var DIRECT_CHAT_UPLOAD_MAX_BYTES = 10 * MB2;
34128
34128
 
34129
34129
  // ../core/dist/direct-chat/notice-display.js
34130
- var AGENT_DIRECTED_NOTICE_KINDS = ["scheduled_task_nudge", "kanban_check"];
34130
+ var AGENT_DIRECTED_NOTICE_KINDS = [
34131
+ "scheduled_task_nudge",
34132
+ "kanban_check",
34133
+ // ENG-8394. These two were originally cited BELOW as examples of user-facing
34134
+ // notices; reading their content builders shows the opposite. The manager
34135
+ // feedback notice opens "Your manager just completed a performance review of
34136
+ // your work" and closes "Please reflect on this feedback and act on it now";
34137
+ // the form-timeout notice ends "do NOT keep waiting for this form" and quotes
34138
+ // a raw request id and Slack channel id. Both are second-person instructions
34139
+ // to the agent and were being rendered verbatim to the customer.
34140
+ "manager_feedback",
34141
+ "form_timeout"
34142
+ ];
34131
34143
  var AGENT_DIRECTED_KIND_SET = new Set(AGENT_DIRECTED_NOTICE_KINDS);
34132
34144
 
34133
34145
  // ../core/dist/direct-chat/cursor-advance.js
@@ -37,7 +37,7 @@ import {
37
37
  writeDirectChatSessionState,
38
38
  writeEgressAllowlist,
39
39
  writePersistentClaudeWrapper
40
- } from "./chunk-MDEA3PIS.js";
40
+ } from "./chunk-S5RR4UHQ.js";
41
41
  import "./chunk-XWVM4KPK.js";
42
42
  export {
43
43
  EGRESS_BASELINE_DOMAINS,
@@ -79,4 +79,4 @@ export {
79
79
  writeEgressAllowlist,
80
80
  writePersistentClaudeWrapper
81
81
  };
82
- //# sourceMappingURL=persistent-session-QNYR2ZJA.js.map
82
+ //# sourceMappingURL=persistent-session-RM5ZY2SB.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-MDEA3PIS.js";
3
+ } from "./chunk-S5RR4UHQ.js";
4
4
  import "./chunk-XWVM4KPK.js";
5
5
 
6
6
  // src/lib/responsiveness-probe.ts
@@ -662,4 +662,4 @@ export {
662
662
  readAndResetSlackReplyBindingClassifications,
663
663
  readAndResetSlackReplyTargetClassifications
664
664
  };
665
- //# sourceMappingURL=responsiveness-probe-X3PAOSNA.js.map
665
+ //# sourceMappingURL=responsiveness-probe-C4KMTKWR.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.513",
3
+ "version": "0.28.514",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {