@integrity-labs/agt-cli 0.28.124 → 0.28.125

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.
@@ -3,7 +3,7 @@ import {
3
3
  formatMissingVar,
4
4
  isClaudeFastMode,
5
5
  probeMcpEnvSubstitution
6
- } from "./chunk-CJGLCXS7.js";
6
+ } from "./chunk-FRIT5ONP.js";
7
7
  import {
8
8
  reapOrphanChannelMcps
9
9
  } from "./chunk-XWVM4KPK.js";
@@ -1568,4 +1568,4 @@ export {
1568
1568
  stopAllSessionsAndWait,
1569
1569
  getProjectDir
1570
1570
  };
1571
- //# sourceMappingURL=chunk-FTI6BPE7.js.map
1571
+ //# sourceMappingURL=chunk-J2HTSR2L.js.map
@@ -22,7 +22,7 @@ import {
22
22
  resolveConnectivityProbe,
23
23
  worseConnectivityOutcome,
24
24
  wrapScheduledTaskPrompt
25
- } from "./chunk-CJGLCXS7.js";
25
+ } from "./chunk-FRIT5ONP.js";
26
26
 
27
27
  // ../../packages/core/dist/integrations/registry.js
28
28
  var INTEGRATION_REGISTRY = [
@@ -7653,7 +7653,7 @@ function requireHost() {
7653
7653
  }
7654
7654
 
7655
7655
  // src/lib/api-client.ts
7656
- var agtCliVersion = true ? "0.28.124" : "dev";
7656
+ var agtCliVersion = true ? "0.28.125" : "dev";
7657
7657
  var lastConfigHash = null;
7658
7658
  function setConfigHash(hash) {
7659
7659
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -8950,4 +8950,4 @@ export {
8950
8950
  managerInstallSystemUnitCommand,
8951
8951
  managerUninstallSystemUnitCommand
8952
8952
  };
8953
- //# sourceMappingURL=chunk-P3IYLX6T.js.map
8953
+ //# sourceMappingURL=chunk-YOCNO6HS.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-VH4DQ7JX.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-QEPPYDUA.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-SOCMU6MK.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-UGYPA6VO.js.map
@@ -28,7 +28,7 @@ import {
28
28
  requireHost,
29
29
  safeWriteJsonAtomic,
30
30
  setConfigHash
31
- } from "../chunk-P3IYLX6T.js";
31
+ } from "../chunk-YOCNO6HS.js";
32
32
  import {
33
33
  getProjectDir as getProjectDir2,
34
34
  getReadyTasks,
@@ -72,7 +72,7 @@ import {
72
72
  takeZombieDetection,
73
73
  transcriptActivityAgeSeconds,
74
74
  writeEgressAllowlist
75
- } from "../chunk-FTI6BPE7.js";
75
+ } from "../chunk-J2HTSR2L.js";
76
76
  import {
77
77
  FLAGS_SCHEMA_VERSION,
78
78
  FLAG_REGISTRY,
@@ -108,7 +108,7 @@ import {
108
108
  resolveDmTarget,
109
109
  sumTranscriptUsageInWindow,
110
110
  wrapScheduledTaskPrompt
111
- } from "../chunk-CJGLCXS7.js";
111
+ } from "../chunk-FRIT5ONP.js";
112
112
  import {
113
113
  parsePsRows,
114
114
  reapOrphanChannelMcps
@@ -7005,7 +7005,7 @@ var cachedMaintenanceWindow = null;
7005
7005
  var lastVersionCheckAt = 0;
7006
7006
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
7007
7007
  var lastResponsivenessProbeAt = 0;
7008
- var agtCliVersion = true ? "0.28.124" : "dev";
7008
+ var agtCliVersion = true ? "0.28.125" : "dev";
7009
7009
  function resolveBrewPath(execFileSync4) {
7010
7010
  try {
7011
7011
  const out = execFileSync4("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -8132,7 +8132,7 @@ async function pollCycle() {
8132
8132
  }
8133
8133
  try {
8134
8134
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
8135
- const { collectDiagnostics } = await import("../persistent-session-VH4DQ7JX.js");
8135
+ const { collectDiagnostics } = await import("../persistent-session-QEPPYDUA.js");
8136
8136
  const diagCodeNames = [...agentState.persistentSessionAgents];
8137
8137
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
8138
8138
  let tailscaleHostname;
@@ -8233,7 +8233,7 @@ async function pollCycle() {
8233
8233
  const {
8234
8234
  collectResponsivenessProbes,
8235
8235
  getResponsivenessIntervalMs
8236
- } = await import("../responsiveness-probe-6ZOOSQXR.js");
8236
+ } = await import("../responsiveness-probe-W5AQDRYT.js");
8237
8237
  const probeIntervalMs = getResponsivenessIntervalMs();
8238
8238
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
8239
8239
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -8265,7 +8265,7 @@ async function pollCycle() {
8265
8265
  collectResponsivenessProbes,
8266
8266
  livePendingInboundOldestAgeSeconds,
8267
8267
  parkPendingInbound
8268
- } = await import("../responsiveness-probe-6ZOOSQXR.js");
8268
+ } = await import("../responsiveness-probe-W5AQDRYT.js");
8269
8269
  const { getProjectDir: wedgeProjectDir } = await import("../claude-scheduler-FATCLHDM.js");
8270
8270
  const wedgeNow = /* @__PURE__ */ new Date();
8271
8271
  const liveAgents = agentState.persistentSessionAgents;
@@ -11797,7 +11797,7 @@ async function processClaudePairSessions(agents) {
11797
11797
  killPairSession,
11798
11798
  pairTmuxSession,
11799
11799
  finalizeClaudePairOnboarding
11800
- } = await import("../claude-pair-runtime-SOCMU6MK.js");
11800
+ } = await import("../claude-pair-runtime-UGYPA6VO.js");
11801
11801
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
11802
11802
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
11803
11803
  const killed = await killPairSession(pairTmuxSession(pairId));
package/dist/mcp/index.js CHANGED
@@ -21248,6 +21248,30 @@ function formatKanbanLogResult(label, data) {
21248
21248
  };
21249
21249
  }
21250
21250
 
21251
+ // src/assign-human.ts
21252
+ function describeAssignHumanResult(resp, email2) {
21253
+ if (!resp.ok) {
21254
+ return {
21255
+ text: `Could not assign the task${resp.error ? `: ${resp.error}` : "."}`,
21256
+ isError: true
21257
+ };
21258
+ }
21259
+ const who = resp.assignee_display_name || email2;
21260
+ const n = resp.notification;
21261
+ let notice;
21262
+ if (n?.enabled && n.delivered) {
21263
+ notice = ` They were notified${n.channel ? ` via ${n.channel}` : ""}.`;
21264
+ } else if (n?.enabled && n.attempted) {
21265
+ notice = " A notification couldn't be delivered, but they'll see it on their My Tasks page.";
21266
+ } else {
21267
+ notice = " They'll see it on their My Tasks page.";
21268
+ }
21269
+ return {
21270
+ text: `Assigned "${resp.title ?? ""}" to ${who}.${notice}`,
21271
+ isError: false
21272
+ };
21273
+ }
21274
+
21251
21275
  // src/index.ts
21252
21276
  import { spawn } from "child_process";
21253
21277
  var DeliveryTargetSchema = external_exports.union([
@@ -21769,6 +21793,42 @@ server.tool(
21769
21793
  }
21770
21794
  }
21771
21795
  );
21796
+ server.tool(
21797
+ "assign_kanban_to_human",
21798
+ `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.`,
21799
+ {
21800
+ assignee_email: external_exports.string().describe("The teammate's email. Must be a person in your team's organization."),
21801
+ title: external_exports.string().describe("Task title (max 200 chars)"),
21802
+ description: external_exports.string().optional().describe("Detailed description of what needs doing"),
21803
+ priority: external_exports.number().int().min(1).max(3).optional().describe("Priority: 1=high, 2=medium (default), 3=low"),
21804
+ deliverable: external_exports.string().optional().describe("Expected output/deliverable from the person")
21805
+ },
21806
+ async (params) => {
21807
+ try {
21808
+ const data = await apiPost("/host/kanban/assign-human", {
21809
+ agent_id: AGT_AGENT_ID,
21810
+ assignee_email: params.assignee_email,
21811
+ title: params.title,
21812
+ description: params.description,
21813
+ priority: params.priority ?? 2,
21814
+ deliverable: params.deliverable
21815
+ });
21816
+ const { text, isError } = describeAssignHumanResult(data, params.assignee_email);
21817
+ return { content: [{ type: "text", text }], ...isError ? { isError: true } : {} };
21818
+ } catch (err) {
21819
+ const msg = err instanceof Error ? err.message : String(err);
21820
+ let text;
21821
+ if (/returned 404/.test(msg)) {
21822
+ text = `Could not assign: no teammate found for "${params.assignee_email}" in your team's organization. Check the email address.`;
21823
+ } else if (/returned 409/.test(msg)) {
21824
+ text = `Could not assign: "${params.assignee_email}" matches more than one person. Use a unique email address.`;
21825
+ } else {
21826
+ text = `Could not assign the task to ${params.assignee_email}: ${msg}`;
21827
+ }
21828
+ return { content: [{ type: "text", text }], isError: true };
21829
+ }
21830
+ }
21831
+ );
21772
21832
  server.tool(
21773
21833
  "status_standup",
21774
21834
  "Submit a daily standup update with yesterday, today, and blockers.",
@@ -22872,6 +22932,7 @@ var LOCAL_TOOL_NAMES = /* @__PURE__ */ new Set([
22872
22932
  "kanban_progress",
22873
22933
  "kanban_done",
22874
22934
  "kanban_assign",
22935
+ "assign_kanban_to_human",
22875
22936
  "status_standup",
22876
22937
  "status_update",
22877
22938
  "drift_report",
@@ -34,8 +34,8 @@ import {
34
34
  writeDirectChatSessionState,
35
35
  writeEgressAllowlist,
36
36
  writePersistentClaudeWrapper
37
- } from "./chunk-FTI6BPE7.js";
38
- import "./chunk-CJGLCXS7.js";
37
+ } from "./chunk-J2HTSR2L.js";
38
+ import "./chunk-FRIT5ONP.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-VH4DQ7JX.js.map
77
+ //# sourceMappingURL=persistent-session-QEPPYDUA.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-FTI6BPE7.js";
4
- import "./chunk-CJGLCXS7.js";
3
+ } from "./chunk-J2HTSR2L.js";
4
+ import "./chunk-FRIT5ONP.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-6ZOOSQXR.js.map
307
+ //# sourceMappingURL=responsiveness-probe-W5AQDRYT.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.124",
3
+ "version": "0.28.125",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {