@integrity-labs/agt-cli 0.28.464 → 0.28.465

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-HRVZVAIL.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-UYMZ2MEI.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-VTW57E4U.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-63X4ERBM.js.map
@@ -42,7 +42,7 @@ import {
42
42
  resolveEffectivePinRaw,
43
43
  safeWriteJsonAtomic,
44
44
  setConfigHash
45
- } from "../chunk-Q5GHZOXL.js";
45
+ } from "../chunk-2X7LDBRB.js";
46
46
  import {
47
47
  getProjectDir as getProjectDir2,
48
48
  getReadyTasks,
@@ -164,7 +164,7 @@ import {
164
164
  toOpencodeModel,
165
165
  transcriptActivityAgeSeconds,
166
166
  writeEgressAllowlist
167
- } from "../chunk-QZUECTC7.js";
167
+ } from "../chunk-GPSEUO2D.js";
168
168
  import {
169
169
  reapOrphanChannelMcps
170
170
  } from "../chunk-XWVM4KPK.js";
@@ -9976,7 +9976,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
9976
9976
  var lastVersionCheckAt = 0;
9977
9977
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
9978
9978
  var lastResponsivenessProbeAt = 0;
9979
- var agtCliVersion = true ? "0.28.464" : "dev";
9979
+ var agtCliVersion = true ? "0.28.465" : "dev";
9980
9980
  function resolveBrewPath(execFileSync2) {
9981
9981
  try {
9982
9982
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -11137,7 +11137,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
11137
11137
  if (codeNames.length === 0) return;
11138
11138
  void (async () => {
11139
11139
  try {
11140
- const { collectDiagnostics } = await import("../persistent-session-HRVZVAIL.js");
11140
+ const { collectDiagnostics } = await import("../persistent-session-UYMZ2MEI.js");
11141
11141
  await api.post("/host/heartbeat", {
11142
11142
  host_id: hostId,
11143
11143
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor)
@@ -11244,7 +11244,7 @@ async function pollCycle() {
11244
11244
  }
11245
11245
  try {
11246
11246
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
11247
- const { collectDiagnostics } = await import("../persistent-session-HRVZVAIL.js");
11247
+ const { collectDiagnostics } = await import("../persistent-session-UYMZ2MEI.js");
11248
11248
  const diagCodeNames = [...agentState.persistentSessionAgents];
11249
11249
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor) : void 0;
11250
11250
  let tailscaleHostname;
@@ -11358,7 +11358,7 @@ async function pollCycle() {
11358
11358
  collectResponsivenessProbes,
11359
11359
  collectPanelessActivityProbes,
11360
11360
  getResponsivenessIntervalMs
11361
- } = await import("../responsiveness-probe-UUVXQIQ4.js");
11361
+ } = await import("../responsiveness-probe-WXHKKJ7N.js");
11362
11362
  const probeIntervalMs = getResponsivenessIntervalMs();
11363
11363
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
11364
11364
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -11422,7 +11422,7 @@ async function pollCycle() {
11422
11422
  collectResponsivenessProbes,
11423
11423
  livePendingInboundOldestAgeSeconds,
11424
11424
  parkPendingInbound
11425
- } = await import("../responsiveness-probe-UUVXQIQ4.js");
11425
+ } = await import("../responsiveness-probe-WXHKKJ7N.js");
11426
11426
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
11427
11427
  const wedgeNow = /* @__PURE__ */ new Date();
11428
11428
  const liveAgents = agentState.persistentSessionAgents;
@@ -14861,7 +14861,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
14861
14861
  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}`));
14862
14862
  void (async () => {
14863
14863
  try {
14864
- const { collectDiagnostics } = await import("../persistent-session-HRVZVAIL.js");
14864
+ const { collectDiagnostics } = await import("../persistent-session-UYMZ2MEI.js");
14865
14865
  await api.post("/host/heartbeat", {
14866
14866
  host_id: hostId,
14867
14867
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor)
@@ -14911,7 +14911,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
14911
14911
  }
14912
14912
  try {
14913
14913
  const hostId = await getHostId();
14914
- const { collectDiagnostics } = await import("../persistent-session-HRVZVAIL.js");
14914
+ const { collectDiagnostics } = await import("../persistent-session-UYMZ2MEI.js");
14915
14915
  await api.post("/host/heartbeat", {
14916
14916
  host_id: hostId,
14917
14917
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor)
@@ -15369,7 +15369,7 @@ async function processClaudePairSessions(agents) {
15369
15369
  killPairSession,
15370
15370
  pairTmuxSession,
15371
15371
  finalizeClaudePairOnboarding
15372
- } = await import("../claude-pair-runtime-VTW57E4U.js");
15372
+ } = await import("../claude-pair-runtime-63X4ERBM.js");
15373
15373
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
15374
15374
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
15375
15375
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -21091,6 +21091,10 @@ var AdminDebugClient = class _AdminDebugClient {
21091
21091
  getAgent(agentId) {
21092
21092
  return this.get(`/admin/debug/agents/${encodeURIComponent(agentId)}`);
21093
21093
  }
21094
+ /** The agent's effective integration set — agent + team + org, scope-attributed (ENG-8271). */
21095
+ getAgentIntegrations(agentId) {
21096
+ return this.get(`/admin/debug/agents/${encodeURIComponent(agentId)}/integrations`);
21097
+ }
21094
21098
  searchHosts(args) {
21095
21099
  return this.get("/admin/debug/hosts", _AdminDebugClient.cleanQuery(args));
21096
21100
  }
@@ -21289,6 +21293,9 @@ var searchOrgsSchema = external_exports.object({
21289
21293
  var getAgentSchema = external_exports.object({
21290
21294
  agent_id: external_exports.string().min(1).max(64).describe("The agent UUID to fetch a composite diagnostic for.")
21291
21295
  });
21296
+ var getAgentIntegrationsSchema = external_exports.object({
21297
+ agent_id: external_exports.string().min(1).max(64).describe("The agent UUID whose effective integration set to resolve.")
21298
+ });
21292
21299
  var searchHostsSchema = external_exports.object({
21293
21300
  q: external_exports.string().max(128).optional().describe("Case-insensitive substring match on host name."),
21294
21301
  status: external_exports.string().max(32).optional().describe("Filter by host status (active | decommissioned)."),
@@ -21529,7 +21536,7 @@ server.tool(
21529
21536
  );
21530
21537
  server.tool(
21531
21538
  "debug_get_agent",
21532
- 'Fetch a composite diagnostic for ONE agent: the agent projection plus its host (heartbeat verdict, framework, EC2/auth status), its integrations (status + connectivity verdicts, never credentials), and recent alerts. The primary "why is this agent unhealthy?" read. Pass { agent_id }.',
21539
+ 'Fetch a composite diagnostic for ONE agent: the agent projection plus its host (heartbeat verdict, framework, EC2/auth status), its integrations, and recent alerts. The primary "why is this agent unhealthy?" read. Never returns credentials. Pass { agent_id }.\n\nThe payload carries TWO integration reads, and confusing them produces wrong root-cause (ENG-8271):\n \u2022 `effective_integrations` \u2014 the COMPLETE set the agent runs with: agent + team + ORG scope, each entry carrying `scope` ("agent" | "team" | "org") and `source_id`. Read THIS to answer "does this agent have integration X?". `effective_count` equals the manager\'s `Integrations provisioned for \'<code_name>\' (N)`, so the two reconcile; `by_scope`, `inherited_definition_ids`, `scopes_skipped`, `excluded_control_plane_only`, `shadowed_by_more_specific` and `duplicate_merge_keys` attribute any row that did not make the count.\n \u2022 `agent_integrations` \u2014 PER-AGENT rows only, kept for compatibility. Team- and org-scoped installs are ABSENT. Do NOT infer "not installed" from an absence here: an org-level install is genuinely missing from this array while being fully present on the agent. Same warning ships in-payload as `agent_integrations_note`.',
21533
21540
  getAgentSchema.shape,
21534
21541
  async (args) => {
21535
21542
  try {
@@ -21540,6 +21547,19 @@ server.tool(
21540
21547
  }
21541
21548
  }
21542
21549
  );
21550
+ server.tool(
21551
+ "debug_get_agent_integrations",
21552
+ 'Resolve ONE agent\'s EFFECTIVE integration set \u2014 the focused read for "does this agent have integration X, and where is it installed from?" (ENG-8271). Same resolution as `debug_get_agent`\'s `effective_integrations`, without the host/alerts payload.\n\nReturns { agent_id, code_name, team_id, organization_id, effective_integrations: { effective_count, by_scope, inherited_definition_ids, excluded_control_plane_only, shadowed_by_more_specific, duplicate_merge_keys, scopes_queried, scopes_skipped, integrations[] } } - the same `effective_integrations` object `debug_get_agent` returns, so one shape covers both tools. Each entry: { definition_id, display_name, connection_key, scope ("agent" | "team" | "org"), source_id, status, status_message, auth_type, last_connectivity_check_at, last_connectivity_status, consecutive_connectivity_failures, wired_verdict, last_session_tool_bind_at }. Never credentials.\n\nPrefer this over reading `agent_integrations`: TEAM/ORG-scope installs are invisible to a per-agent read, so absence there is not evidence. `effective_count` reconciles against the manager\'s `Integrations provisioned for \'<code_name>\' (N)` or the tool-bind probe\'s `due=N`; docs/runbooks/admin-debug-dogfood.md lists the benign divergences to rule out before treating a mismatch as a bug. `wired_verdict` is the host\'s last session-tool-bind result (bound | missing | unreachable | unknown), the closest available answer to "is it in the agent\'s .mcp.json right now?"; `null` means never probed, which is NOT "not wired".\n\nFails closed (uniform not-found) for an unauthorized/unknown agent; a failed scope query returns an error rather than a smaller count. Audited as a cross-org access. Pass { agent_id }.',
21553
+ getAgentIntegrationsSchema.shape,
21554
+ async (args) => {
21555
+ try {
21556
+ const result = await client.getAgentIntegrations(args.agent_id);
21557
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
21558
+ } catch (err) {
21559
+ return { content: [{ type: "text", text: formatError2(err) }], isError: true };
21560
+ }
21561
+ }
21562
+ );
21543
21563
  server.tool(
21544
21564
  "debug_search_hosts",
21545
21565
  "Search managed hosts across authorized orgs. Returns a projection per host (name, org, status, framework version, last-seen verdict, EC2 + Claude auth status) \u2014 no api-key fingerprints or secrets. Filter with { q, status, limit }.",
@@ -36,7 +36,7 @@ import {
36
36
  writeDirectChatSessionState,
37
37
  writeEgressAllowlist,
38
38
  writePersistentClaudeWrapper
39
- } from "./chunk-QZUECTC7.js";
39
+ } from "./chunk-GPSEUO2D.js";
40
40
  import "./chunk-XWVM4KPK.js";
41
41
  export {
42
42
  EGRESS_BASELINE_DOMAINS,
@@ -77,4 +77,4 @@ export {
77
77
  writeEgressAllowlist,
78
78
  writePersistentClaudeWrapper
79
79
  };
80
- //# sourceMappingURL=persistent-session-HRVZVAIL.js.map
80
+ //# sourceMappingURL=persistent-session-UYMZ2MEI.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-QZUECTC7.js";
3
+ } from "./chunk-GPSEUO2D.js";
4
4
  import "./chunk-XWVM4KPK.js";
5
5
 
6
6
  // src/lib/responsiveness-probe.ts
@@ -596,4 +596,4 @@ export {
596
596
  readAndResetSlackReplyBindingClassifications,
597
597
  readAndResetSlackReplyTargetClassifications
598
598
  };
599
- //# sourceMappingURL=responsiveness-probe-UUVXQIQ4.js.map
599
+ //# sourceMappingURL=responsiveness-probe-WXHKKJ7N.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.464",
3
+ "version": "0.28.465",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {