@integrity-labs/agt-cli 0.28.257 → 0.28.259

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.
@@ -18,7 +18,7 @@ import {
18
18
  resolveConnectivityProbe,
19
19
  worseConnectivityOutcome,
20
20
  wrapScheduledTaskPrompt
21
- } from "./chunk-L2GVB37X.js";
21
+ } from "./chunk-22BZ2WQM.js";
22
22
  import {
23
23
  parsePsRows
24
24
  } from "./chunk-XWVM4KPK.js";
@@ -5832,7 +5832,7 @@ function requireHost() {
5832
5832
  }
5833
5833
 
5834
5834
  // src/lib/api-client.ts
5835
- var agtCliVersion = true ? "0.28.257" : "dev";
5835
+ var agtCliVersion = true ? "0.28.259" : "dev";
5836
5836
  var lastConfigHash = null;
5837
5837
  function setConfigHash(hash) {
5838
5838
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -8102,4 +8102,4 @@ export {
8102
8102
  managerInstallSystemUnitCommand,
8103
8103
  managerUninstallSystemUnitCommand
8104
8104
  };
8105
- //# sourceMappingURL=chunk-FKVH7UZA.js.map
8105
+ //# sourceMappingURL=chunk-VPDUKN7W.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-W4K5XKD7.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-XHJIV3VJ.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-HM6XZJWB.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-7ZP2OZ5T.js.map
@@ -37,7 +37,7 @@ import {
37
37
  requireHost,
38
38
  safeWriteJsonAtomic,
39
39
  setConfigHash
40
- } from "../chunk-FKVH7UZA.js";
40
+ } from "../chunk-VPDUKN7W.js";
41
41
  import {
42
42
  getProjectDir as getProjectDir2,
43
43
  getReadyTasks,
@@ -122,7 +122,7 @@ import {
122
122
  takeZombieDetection,
123
123
  transcriptActivityAgeSeconds,
124
124
  writeEgressAllowlist
125
- } from "../chunk-L2GVB37X.js";
125
+ } from "../chunk-22BZ2WQM.js";
126
126
  import {
127
127
  reapOrphanChannelMcps
128
128
  } from "../chunk-XWVM4KPK.js";
@@ -6669,7 +6669,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
6669
6669
  var lastVersionCheckAt = 0;
6670
6670
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
6671
6671
  var lastResponsivenessProbeAt = 0;
6672
- var agtCliVersion = true ? "0.28.257" : "dev";
6672
+ var agtCliVersion = true ? "0.28.259" : "dev";
6673
6673
  function resolveBrewPath(execFileSync2) {
6674
6674
  try {
6675
6675
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -7519,7 +7519,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
7519
7519
  if (codeNames.length === 0) return;
7520
7520
  void (async () => {
7521
7521
  try {
7522
- const { collectDiagnostics } = await import("../persistent-session-W4K5XKD7.js");
7522
+ const { collectDiagnostics } = await import("../persistent-session-XHJIV3VJ.js");
7523
7523
  await api.post("/host/heartbeat", {
7524
7524
  host_id: hostId,
7525
7525
  agent_diagnostics: collectDiagnostics(codeNames)
@@ -7617,7 +7617,7 @@ async function pollCycle() {
7617
7617
  }
7618
7618
  try {
7619
7619
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
7620
- const { collectDiagnostics } = await import("../persistent-session-W4K5XKD7.js");
7620
+ const { collectDiagnostics } = await import("../persistent-session-XHJIV3VJ.js");
7621
7621
  const diagCodeNames = [...agentState.persistentSessionAgents];
7622
7622
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
7623
7623
  let tailscaleHostname;
@@ -7765,7 +7765,7 @@ async function pollCycle() {
7765
7765
  const {
7766
7766
  collectResponsivenessProbes,
7767
7767
  getResponsivenessIntervalMs
7768
- } = await import("../responsiveness-probe-Y4FBRFRW.js");
7768
+ } = await import("../responsiveness-probe-JMPLO34I.js");
7769
7769
  const probeIntervalMs = getResponsivenessIntervalMs();
7770
7770
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
7771
7771
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -7797,7 +7797,7 @@ async function pollCycle() {
7797
7797
  collectResponsivenessProbes,
7798
7798
  livePendingInboundOldestAgeSeconds,
7799
7799
  parkPendingInbound
7800
- } = await import("../responsiveness-probe-Y4FBRFRW.js");
7800
+ } = await import("../responsiveness-probe-JMPLO34I.js");
7801
7801
  const { getProjectDir: wedgeProjectDir } = await import("../claude-scheduler-FATCLHDM.js");
7802
7802
  const wedgeNow = /* @__PURE__ */ new Date();
7803
7803
  const liveAgents = agentState.persistentSessionAgents;
@@ -10623,7 +10623,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
10623
10623
  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}`));
10624
10624
  void (async () => {
10625
10625
  try {
10626
- const { collectDiagnostics } = await import("../persistent-session-W4K5XKD7.js");
10626
+ const { collectDiagnostics } = await import("../persistent-session-XHJIV3VJ.js");
10627
10627
  await api.post("/host/heartbeat", {
10628
10628
  host_id: hostId,
10629
10629
  agent_diagnostics: collectDiagnostics([codeName])
@@ -10673,7 +10673,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
10673
10673
  }
10674
10674
  try {
10675
10675
  const hostId = await getHostId();
10676
- const { collectDiagnostics } = await import("../persistent-session-W4K5XKD7.js");
10676
+ const { collectDiagnostics } = await import("../persistent-session-XHJIV3VJ.js");
10677
10677
  await api.post("/host/heartbeat", {
10678
10678
  host_id: hostId,
10679
10679
  agent_diagnostics: collectDiagnostics([codeName])
@@ -11064,7 +11064,7 @@ async function processClaudePairSessions(agents) {
11064
11064
  killPairSession,
11065
11065
  pairTmuxSession,
11066
11066
  finalizeClaudePairOnboarding
11067
- } = await import("../claude-pair-runtime-HM6XZJWB.js");
11067
+ } = await import("../claude-pair-runtime-7ZP2OZ5T.js");
11068
11068
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
11069
11069
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
11070
11070
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -13880,7 +13880,7 @@ function createInboundContextClient(args) {
13880
13880
  const resp = await fetchImpl(`${base}/host/exchange`, {
13881
13881
  method: "POST",
13882
13882
  headers: { "Content-Type": "application/json" },
13883
- // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0041 P1).
13883
+ // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0042 P1).
13884
13884
  body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
13885
13885
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS)
13886
13886
  });
@@ -14699,7 +14699,7 @@ function createKanbanCardActiveClient(args) {
14699
14699
  const resp = await fetchImpl(`${base}/host/exchange`, {
14700
14700
  method: "POST",
14701
14701
  headers: { "Content-Type": "application/json" },
14702
- // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0041 P1).
14702
+ // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0042 P1).
14703
14703
  body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
14704
14704
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS2)
14705
14705
  });
@@ -14929,7 +14929,7 @@ async function getAuthToken() {
14929
14929
  const res = await fetchWithTimeout(`${AGT_HOST}/host/exchange`, {
14930
14930
  method: "POST",
14931
14931
  headers: { "Content-Type": "application/json" },
14932
- // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0041 P1).
14932
+ // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0042 P1).
14933
14933
  // AGT_AGENT_ID undefined => JSON drops it => host-wide (backward compatible).
14934
14934
  body: JSON.stringify({ host_key: AGT_API_KEY, agent_id: AGT_AGENT_ID })
14935
14935
  }, HTTP_TIMEOUT_MS);
package/dist/mcp/index.js CHANGED
@@ -21989,7 +21989,10 @@ server.tool(
21989
21989
  status: external_exports.enum(["backlog", "todo", "in_progress"]).optional().describe(
21990
21990
  "Which column the card lands in on the recipient's board (default: todo). Use 'backlog' to stage it as not-yet-actionable work the teammate will pull later, 'todo' for ready-to-work, 'in_progress' if they should start immediately."
21991
21991
  ),
21992
- deliverable: external_exports.string().optional().describe("Expected output/deliverable from the target")
21992
+ deliverable: external_exports.string().optional().describe("Expected output/deliverable from the target"),
21993
+ deliver_to: external_exports.string().trim().regex(/^[UW][A-Z0-9]{6,}$/, "deliver_to must be a Slack user id (e.g. U01234567)").optional().describe(
21994
+ "Optional: a Slack user id (e.g. U01234567) to DM the completion notice to directly when the target finishes, in ADDITION to the notice landing on your board. Use this to deliver the result straight to the person who wanted it (e.g. the requester's Slack id from the originating message) instead of hand-forwarding it yourself. Must be a Slack user id, not a @handle or display name."
21995
+ )
21993
21996
  },
21994
21997
  async (params) => {
21995
21998
  try {
@@ -22007,7 +22010,9 @@ server.tool(
22007
22010
  // ENG-6967: only send status when set, so the route applies its default
22008
22011
  // ('todo') and the same-team handoff path stays byte-for-byte unchanged.
22009
22012
  ...params.status !== void 0 ? { status: params.status } : {},
22010
- deliverable: params.deliverable
22013
+ deliverable: params.deliverable,
22014
+ // CS-1438: only sent when set; the route treats absence as board-ack-only.
22015
+ ...params.deliver_to !== void 0 ? { deliver_to: params.deliver_to } : {}
22011
22016
  });
22012
22017
  const where = data.cross_team ? ` on team ${data.target_team ?? params.target_team}` : "";
22013
22018
  return {
@@ -39740,6 +39740,19 @@ var FLAG_REGISTRY = [
39740
39740
  defaultValue: false,
39741
39741
  public: true
39742
39742
  },
39743
+ {
39744
+ key: "onboarding-auto-deploy",
39745
+ description: `Auto-deploy the first agent during onboarding (ENG-7378): the agent edit page's Deploy & Test tab fires the existing deploy (draft -> active) automatically once the agent's host is fully deployed (active + manager heartbeating, not provisioning) AND Claude-authenticated (claude_auth_status=valid), replacing the manual "Deploy Agent" click in the recruit funnel. Only draft, non-system_support agents; a failed or timed-out attempt falls back to the manual button (no auto-retry loop).`,
39746
+ flagType: "boolean",
39747
+ // PUBLIC (ADR-0022 §2): a browser-read UI-behaviour gate (mirrors
39748
+ // direct-chat-drawer). Declared safe value is `false`: auto-deploy flips an
39749
+ // agent's status by itself, so a flag-read error must never switch it on.
39750
+ // Ships dark; enable per-org (or fleet-wide) from the admin Feature Flags
39751
+ // page. When off, the recruit funnel keeps the manual Deploy button. No
39752
+ // envVar: a browser-only gate has no host-side override.
39753
+ defaultValue: false,
39754
+ public: true
39755
+ },
39743
39756
  {
39744
39757
  key: "manager-failure-notify",
39745
39758
  description: "Route terminal integration-failure notifications to the agent's human manager (reports_to \u2192 preferred channel) instead of only the agent's own direct-chat (ENG-6334). Boolean gate; ships dark.",
@@ -6819,7 +6819,7 @@ async function getAuthToken(cfg) {
6819
6819
  const res = await fetch(`${cfg.apiHost}/host/exchange`, {
6820
6820
  method: "POST",
6821
6821
  headers: { "Content-Type": "application/json" },
6822
- // ENG-7436 (ADR-0041 P1): scope the exchange to this agent so the API can
6822
+ // ENG-7436 (ADR-0042 P1): scope the exchange to this agent so the API can
6823
6823
  // enforce the per-agent org gate and bind the token to one agent. This is a
6824
6824
  // per-agent in-container caller (RuntimeConfig.agentId), so it is the
6825
6825
  // natural place to send agent_id; the host-level manager exchange stays
@@ -16071,7 +16071,7 @@ function createKanbanCardActiveClient(args) {
16071
16071
  const resp = await fetchImpl(`${base}/host/exchange`, {
16072
16072
  method: "POST",
16073
16073
  headers: { "Content-Type": "application/json" },
16074
- // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0041 P1).
16074
+ // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0042 P1).
16075
16075
  body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
16076
16076
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS)
16077
16077
  });
@@ -17526,7 +17526,7 @@ function createConversationIngestClient(args) {
17526
17526
  method: "POST",
17527
17527
  headers: { "Content-Type": "application/json" },
17528
17528
  // ENG-7438: scope the exchange to this agent so the API can apply the
17529
- // per-agent org gate (ADR-0041 P1). Self-scoped caller.
17529
+ // per-agent org gate (ADR-0042 P1). Self-scoped caller.
17530
17530
  body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
17531
17531
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS3)
17532
17532
  });
@@ -17599,7 +17599,7 @@ function createInboundContextClient(args) {
17599
17599
  const resp = await fetchImpl(`${base}/host/exchange`, {
17600
17600
  method: "POST",
17601
17601
  headers: { "Content-Type": "application/json" },
17602
- // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0041 P1).
17602
+ // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0042 P1).
17603
17603
  body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
17604
17604
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS4)
17605
17605
  });
@@ -17670,7 +17670,7 @@ function createSlackBotUserIdClient(args) {
17670
17670
  const resp = await fetchImpl(`${base}/host/exchange`, {
17671
17671
  method: "POST",
17672
17672
  headers: { "Content-Type": "application/json" },
17673
- // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0041 P1).
17673
+ // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0042 P1).
17674
17674
  body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
17675
17675
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS5)
17676
17676
  });
@@ -14441,7 +14441,7 @@ function startMsteamsInboundPuller(args) {
14441
14441
  const resp = await fetchImpl(`${base}/host/exchange`, {
14442
14442
  method: "POST",
14443
14443
  headers: { "Content-Type": "application/json" },
14444
- // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0041 P1).
14444
+ // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0042 P1).
14445
14445
  body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
14446
14446
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS)
14447
14447
  });
@@ -14578,7 +14578,7 @@ function createInboundContextClient(args) {
14578
14578
  const resp = await fetchImpl(`${base}/host/exchange`, {
14579
14579
  method: "POST",
14580
14580
  headers: { "Content-Type": "application/json" },
14581
- // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0041 P1).
14581
+ // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0042 P1).
14582
14582
  body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
14583
14583
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS2)
14584
14584
  });
@@ -6819,7 +6819,7 @@ async function getAuthToken(cfg) {
6819
6819
  const res = await fetch(`${cfg.apiHost}/host/exchange`, {
6820
6820
  method: "POST",
6821
6821
  headers: { "Content-Type": "application/json" },
6822
- // ENG-7436 (ADR-0041 P1): scope the exchange to this agent so the API can
6822
+ // ENG-7436 (ADR-0042 P1): scope the exchange to this agent so the API can
6823
6823
  // enforce the per-agent org gate and bind the token to one agent. This is a
6824
6824
  // per-agent in-container caller (RuntimeConfig.agentId), so it is the
6825
6825
  // natural place to send agent_id; the host-level manager exchange stays
@@ -15619,7 +15619,7 @@ function createDiagnosticEventClient(args) {
15619
15619
  const resp = await fetchImpl(`${base}/host/exchange`, {
15620
15620
  method: "POST",
15621
15621
  headers: { "Content-Type": "application/json" },
15622
- // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0041 P1).
15622
+ // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0042 P1).
15623
15623
  body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
15624
15624
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS2)
15625
15625
  });
@@ -16244,7 +16244,7 @@ function createObservedChatClient(args) {
16244
16244
  const resp = await fetchImpl(`${base}/host/exchange`, {
16245
16245
  method: "POST",
16246
16246
  headers: { "Content-Type": "application/json" },
16247
- // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0041 P1).
16247
+ // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0042 P1).
16248
16248
  body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
16249
16249
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS3)
16250
16250
  });
@@ -16327,7 +16327,7 @@ function createConversationIngestClient(args) {
16327
16327
  method: "POST",
16328
16328
  headers: { "Content-Type": "application/json" },
16329
16329
  // ENG-7438: scope the exchange to this agent so the API can apply the
16330
- // per-agent org gate (ADR-0041 P1). Self-scoped caller.
16330
+ // per-agent org gate (ADR-0042 P1). Self-scoped caller.
16331
16331
  body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
16332
16332
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS4)
16333
16333
  });
@@ -16400,7 +16400,7 @@ function createInboundContextClient(args) {
16400
16400
  const resp = await fetchImpl(`${base}/host/exchange`, {
16401
16401
  method: "POST",
16402
16402
  headers: { "Content-Type": "application/json" },
16403
- // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0041 P1).
16403
+ // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0042 P1).
16404
16404
  body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
16405
16405
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS5)
16406
16406
  });
@@ -16952,7 +16952,7 @@ function createKanbanCardActiveClient(args) {
16952
16952
  const resp = await fetchImpl(`${base}/host/exchange`, {
16953
16953
  method: "POST",
16954
16954
  headers: { "Content-Type": "application/json" },
16955
- // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0041 P1).
16955
+ // ENG-7438: scope the exchange to this agent (per-agent org gate, ADR-0042 P1).
16956
16956
  body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
16957
16957
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS6)
16958
16958
  });
@@ -36,7 +36,7 @@ import {
36
36
  writeDirectChatSessionState,
37
37
  writeEgressAllowlist,
38
38
  writePersistentClaudeWrapper
39
- } from "./chunk-L2GVB37X.js";
39
+ } from "./chunk-22BZ2WQM.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-W4K5XKD7.js.map
80
+ //# sourceMappingURL=persistent-session-XHJIV3VJ.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-L2GVB37X.js";
3
+ } from "./chunk-22BZ2WQM.js";
4
4
  import "./chunk-XWVM4KPK.js";
5
5
 
6
6
  // src/lib/responsiveness-probe.ts
@@ -418,4 +418,4 @@ export {
418
418
  readAndResetSlackReplyBindingClassifications,
419
419
  readAndResetSlackReplyTargetClassifications
420
420
  };
421
- //# sourceMappingURL=responsiveness-probe-Y4FBRFRW.js.map
421
+ //# sourceMappingURL=responsiveness-probe-JMPLO34I.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.257",
3
+ "version": "0.28.259",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {