@integrity-labs/agt-cli 0.28.173 → 0.28.174

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.
@@ -16,7 +16,7 @@ import {
16
16
  resolveConnectivityProbe,
17
17
  worseConnectivityOutcome,
18
18
  wrapScheduledTaskPrompt
19
- } from "./chunk-OMC7BHRP.js";
19
+ } from "./chunk-NFJIFCWR.js";
20
20
 
21
21
  // ../../packages/core/dist/provisioning/mcp-config-guards.js
22
22
  import { chmodSync, existsSync, readFileSync, renameSync, writeFileSync, unlinkSync } from "fs";
@@ -5964,7 +5964,7 @@ function requireHost() {
5964
5964
  }
5965
5965
 
5966
5966
  // src/lib/api-client.ts
5967
- var agtCliVersion = true ? "0.28.173" : "dev";
5967
+ var agtCliVersion = true ? "0.28.174" : "dev";
5968
5968
  var lastConfigHash = null;
5969
5969
  function setConfigHash(hash) {
5970
5970
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -7269,4 +7269,4 @@ export {
7269
7269
  managerInstallSystemUnitCommand,
7270
7270
  managerUninstallSystemUnitCommand
7271
7271
  };
7272
- //# sourceMappingURL=chunk-M4G5DGVD.js.map
7272
+ //# sourceMappingURL=chunk-YCPOBKU7.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-4HC7YFSU.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-PO252GNB.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-XIVBNVSR.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-ABQYSKDJ.js.map
@@ -28,7 +28,7 @@ import {
28
28
  requireHost,
29
29
  safeWriteJsonAtomic,
30
30
  setConfigHash
31
- } from "../chunk-M4G5DGVD.js";
31
+ } from "../chunk-YCPOBKU7.js";
32
32
  import {
33
33
  getProjectDir as getProjectDir2,
34
34
  getReadyTasks,
@@ -70,7 +70,7 @@ import {
70
70
  takeZombieDetection,
71
71
  transcriptActivityAgeSeconds,
72
72
  writeEgressAllowlist
73
- } from "../chunk-N25WAF7G.js";
73
+ } from "../chunk-ET5DSDYO.js";
74
74
  import {
75
75
  CONVERSATION_FAILURE_CATEGORIES,
76
76
  DEFAULT_FRAMEWORK,
@@ -111,7 +111,7 @@ import {
111
111
  resolveChannels,
112
112
  resolveDmTarget,
113
113
  sumTranscriptUsageInWindow
114
- } from "../chunk-OMC7BHRP.js";
114
+ } from "../chunk-NFJIFCWR.js";
115
115
  import {
116
116
  parsePsRows,
117
117
  reapOrphanChannelMcps
@@ -6590,7 +6590,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
6590
6590
  var lastVersionCheckAt = 0;
6591
6591
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
6592
6592
  var lastResponsivenessProbeAt = 0;
6593
- var agtCliVersion = true ? "0.28.173" : "dev";
6593
+ var agtCliVersion = true ? "0.28.174" : "dev";
6594
6594
  function resolveBrewPath(execFileSync4) {
6595
6595
  try {
6596
6596
  const out = execFileSync4("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -7483,7 +7483,7 @@ async function pollCycle() {
7483
7483
  }
7484
7484
  try {
7485
7485
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
7486
- const { collectDiagnostics } = await import("../persistent-session-4HC7YFSU.js");
7486
+ const { collectDiagnostics } = await import("../persistent-session-PO252GNB.js");
7487
7487
  const diagCodeNames = [...agentState.persistentSessionAgents];
7488
7488
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
7489
7489
  let tailscaleHostname;
@@ -7631,7 +7631,7 @@ async function pollCycle() {
7631
7631
  const {
7632
7632
  collectResponsivenessProbes,
7633
7633
  getResponsivenessIntervalMs
7634
- } = await import("../responsiveness-probe-W4PCY6HC.js");
7634
+ } = await import("../responsiveness-probe-D27JQGDZ.js");
7635
7635
  const probeIntervalMs = getResponsivenessIntervalMs();
7636
7636
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
7637
7637
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -7663,7 +7663,7 @@ async function pollCycle() {
7663
7663
  collectResponsivenessProbes,
7664
7664
  livePendingInboundOldestAgeSeconds,
7665
7665
  parkPendingInbound
7666
- } = await import("../responsiveness-probe-W4PCY6HC.js");
7666
+ } = await import("../responsiveness-probe-D27JQGDZ.js");
7667
7667
  const { getProjectDir: wedgeProjectDir } = await import("../claude-scheduler-FATCLHDM.js");
7668
7668
  const wedgeNow = /* @__PURE__ */ new Date();
7669
7669
  const liveAgents = agentState.persistentSessionAgents;
@@ -10638,7 +10638,7 @@ async function processClaudePairSessions(agents) {
10638
10638
  killPairSession,
10639
10639
  pairTmuxSession,
10640
10640
  finalizeClaudePairOnboarding
10641
- } = await import("../claude-pair-runtime-XIVBNVSR.js");
10641
+ } = await import("../claude-pair-runtime-ABQYSKDJ.js");
10642
10642
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
10643
10643
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
10644
10644
  const killed = await killPairSession(pairTmuxSession(pairId));
package/dist/mcp/index.js CHANGED
@@ -21967,6 +21967,54 @@ server.tool(
21967
21967
  }
21968
21968
  }
21969
21969
  );
21970
+ server.tool(
21971
+ "kanban_reassign",
21972
+ "Move an EXISTING kanban card to ANOTHER agent\u2019s board, preserving its id, history, comments, priority and status. Use this to re-home a task you already have (e.g. you picked up a card but it\u2019s really another specialist\u2019s job) - it removes the card from the current board and places the same card on the target agent\u2019s board. This is different from kanban_assign, which CREATES a new card. The card must currently live on your team. To move across teams in your organization, also pass `target_team` (same cross-team rules as kanban_assign). Don\u2019t know the agent code_name or team slug? Call directory_lookup first.",
21973
+ {
21974
+ task_id: external_exports.string().describe("The id of the existing kanban card to move."),
21975
+ target_agent: external_exports.string().describe(
21976
+ "The new owner: their agent code_name (kebab-case) or agent UUID. On your own team unless target_team is also set."
21977
+ ),
21978
+ target_team: external_exports.string().trim().min(1).optional().describe(
21979
+ "Optional: the slug (or UUID) of ANOTHER team in your organization to move the card across teams. Omit for a same-team move. Requires the org to have cross-team assignment enabled and a peer grant; otherwise the target reads as not-found."
21980
+ )
21981
+ },
21982
+ async (params) => {
21983
+ try {
21984
+ const data = await apiPost("/host/kanban/reassign", {
21985
+ agent_id: AGT_AGENT_ID,
21986
+ task_id: params.task_id,
21987
+ target_agent: params.target_agent,
21988
+ ...params.target_team !== void 0 ? { target_team: params.target_team } : {}
21989
+ });
21990
+ const where = data.cross_team ? ` on team ${data.target_team ?? params.target_team}` : "";
21991
+ let text;
21992
+ if (!data.ok) {
21993
+ text = `Failed to reassign card ${params.task_id} to ${params.target_agent}.`;
21994
+ } else if (data.reassigned === false) {
21995
+ text = data.message ?? `Card is already on ${data.target_agent}\u2019s board.`;
21996
+ } else {
21997
+ text = `Moved "${data.title ?? params.task_id}" to ${data.target_agent}${where}. It will appear on their board on their next refresh; it\u2019s no longer on the previous board.`;
21998
+ }
21999
+ return { content: [{ type: "text", text }] };
22000
+ } catch (err) {
22001
+ const msg = err instanceof Error ? err.message : String(err);
22002
+ const notFound = /returned 404/.test(msg);
22003
+ let notFoundText;
22004
+ if (notFound && /Task not found/.test(msg)) {
22005
+ notFoundText = `Could not reassign: no card "${params.task_id}" found on your team (it may not exist, belong to another team, or be assigned to a human).`;
22006
+ } else if (notFound) {
22007
+ notFoundText = params.target_team ? `Could not reassign: no agent "${params.target_agent}" reachable on team "${params.target_team}". Check the team slug and agent code_name, and note cross-team moves only work when your org has enabled it and a peer grant links the teams.` : `Could not reassign: no agent "${params.target_agent}" found on your team. Check the code_name and make sure they\u2019re a teammate on the same team.`;
22008
+ } else {
22009
+ notFoundText = `Could not reassign card ${params.task_id} to ${params.target_agent}: ${msg}`;
22010
+ }
22011
+ return {
22012
+ content: [{ type: "text", text: notFoundText }],
22013
+ isError: true
22014
+ };
22015
+ }
22016
+ }
22017
+ );
21970
22018
  server.tool(
21971
22019
  "assign_kanban_to_human",
21972
22020
  `Assign a task to a HUMAN teammate (a person on your team), not an agent. Use this to hand work to a person - e.g. "ask Brad to approve the contract" or routing something only a human can do. Identify them by their email. The task appears on their personal "My Tasks" page, and if your org has it enabled they also get a notification. This is different from kanban_assign (which targets another AGENT) and kanban_add (your own board). If your team hasn't enabled this, you'll get a clear message - tell your operator rather than retrying. Don't know the person's email? Call directory_lookup first to find people you can assign to.`,
@@ -23114,6 +23162,7 @@ var LOCAL_TOOL_NAMES = /* @__PURE__ */ new Set([
23114
23162
  "kanban_progress",
23115
23163
  "kanban_done",
23116
23164
  "kanban_assign",
23165
+ "kanban_reassign",
23117
23166
  "assign_kanban_to_human",
23118
23167
  // ENG-6953: agent + people directory lookup (always registered locally).
23119
23168
  "directory_lookup",
@@ -34,8 +34,8 @@ import {
34
34
  writeDirectChatSessionState,
35
35
  writeEgressAllowlist,
36
36
  writePersistentClaudeWrapper
37
- } from "./chunk-N25WAF7G.js";
38
- import "./chunk-OMC7BHRP.js";
37
+ } from "./chunk-ET5DSDYO.js";
38
+ import "./chunk-NFJIFCWR.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-4HC7YFSU.js.map
77
+ //# sourceMappingURL=persistent-session-PO252GNB.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-N25WAF7G.js";
4
- import "./chunk-OMC7BHRP.js";
3
+ } from "./chunk-ET5DSDYO.js";
4
+ import "./chunk-NFJIFCWR.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-W4PCY6HC.js.map
307
+ //# sourceMappingURL=responsiveness-probe-D27JQGDZ.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.173",
3
+ "version": "0.28.174",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {