@integrity-labs/agt-cli 0.28.259 → 0.28.261

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-XHJIV3VJ.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-2SO5QQ56.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-7ZP2OZ5T.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-OVZ4NZK5.js.map
@@ -37,7 +37,7 @@ import {
37
37
  requireHost,
38
38
  safeWriteJsonAtomic,
39
39
  setConfigHash
40
- } from "../chunk-VPDUKN7W.js";
40
+ } from "../chunk-6R7TDVCE.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-22BZ2WQM.js";
125
+ } from "../chunk-RPM3FGSV.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.259" : "dev";
6672
+ var agtCliVersion = true ? "0.28.261" : "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-XHJIV3VJ.js");
7522
+ const { collectDiagnostics } = await import("../persistent-session-2SO5QQ56.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-XHJIV3VJ.js");
7620
+ const { collectDiagnostics } = await import("../persistent-session-2SO5QQ56.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-JMPLO34I.js");
7768
+ } = await import("../responsiveness-probe-XAMFIB2G.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-JMPLO34I.js");
7800
+ } = await import("../responsiveness-probe-XAMFIB2G.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-XHJIV3VJ.js");
10626
+ const { collectDiagnostics } = await import("../persistent-session-2SO5QQ56.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-XHJIV3VJ.js");
10676
+ const { collectDiagnostics } = await import("../persistent-session-2SO5QQ56.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-7ZP2OZ5T.js");
11067
+ } = await import("../claude-pair-runtime-OVZ4NZK5.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));
package/dist/mcp/index.js CHANGED
@@ -21506,7 +21506,14 @@ async function refreshToken() {
21506
21506
  const res = await fetch(`${AGT_HOST}/host/exchange`, {
21507
21507
  method: "POST",
21508
21508
  headers: { "Content-Type": "application/json" },
21509
- body: JSON.stringify({ host_key: AGT_API_KEY })
21509
+ // ENG-7449 (ADR-0042 P1): scope the main agent token to its own agent. The
21510
+ // general-purpose token verifies AS self (`body.agent_id = AGT_AGENT_ID`) on
21511
+ // every host route; cross-agent tools (kanban_assign / move) carry the peer
21512
+ // as `target_agent` and are gated by the cross-team peer-consent model, NOT
21513
+ // this token's host binding — so self-scope bounds the token without
21514
+ // breaking cross-agent delegation. `agent_id` drops out if AGT_AGENT_ID is
21515
+ // unset (claim-less, unchanged).
21516
+ body: JSON.stringify({ host_key: AGT_API_KEY, agent_id: AGT_AGENT_ID })
21510
21517
  });
21511
21518
  if (!res.ok) {
21512
21519
  const text = await res.text().catch(() => res.statusText);
@@ -38429,9 +38429,12 @@ var INTEGRATION_REGISTRY = [
38429
38429
  name: "GitHub",
38430
38430
  category: "code",
38431
38431
  description: "Source code hosting, pull requests, and CI/CD",
38432
- supported_auth_types: ["api_key", "oauth2"],
38432
+ // CS-1441: `github_app` adds BYO GitHub App installation auth (bot identity,
38433
+ // per-repo least-privilege, survives personnel changes) alongside the
38434
+ // existing user OAuth + PAT options.
38435
+ supported_auth_types: ["api_key", "oauth2", "github_app"],
38433
38436
  // ENG-7015: customer-installable native — OAuth-first in the connect UI.
38434
- installable: { category: "Code", authTypes: ["oauth2", "api_key"] },
38437
+ installable: { category: "Code", authTypes: ["oauth2", "api_key", "github_app"] },
38435
38438
  capabilities: [
38436
38439
  { id: "github:read-repos", name: "Read Repositories", description: "View repos, issues, and PRs", access: "read" },
38437
38440
  { id: "github:write-code", name: "Write Code", description: "Push commits and create PRs", access: "write" },
@@ -17459,7 +17459,11 @@ function createCrossTeamPeerAuditClient(args) {
17459
17459
  const resp = await fetchImpl(`${base}/host/exchange`, {
17460
17460
  method: "POST",
17461
17461
  headers: { "Content-Type": "application/json" },
17462
- body: JSON.stringify({ host_key: apiKey }),
17462
+ // ENG-7449 (ADR-0042 P1): scope the exchanged token to this agent. This
17463
+ // client acts strictly AS self (every event is posted with
17464
+ // `agent_id: agentId`); the foreign `peer_agent_id` is audit DATA, never
17465
+ // the auth subject, so a self-scoped token is correct and complete.
17466
+ body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
17463
17467
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS2)
17464
17468
  });
17465
17469
  if (!resp.ok) {
@@ -15480,7 +15480,10 @@ function createDefaultPeerRateApiClient(args) {
15480
15480
  const resp = await fetchImpl(`${base}/host/exchange`, {
15481
15481
  method: "POST",
15482
15482
  headers: { "Content-Type": "application/json" },
15483
- body: JSON.stringify({ host_key: args.agtApiKey })
15483
+ // ENG-7449 (ADR-0042 P1): scope the token to this agent. Every rate event
15484
+ // is recorded/queried with `agent_id: args.agentId` (self); `peer_bot_id`
15485
+ // is a Telegram bot id, not an agent, so self-scope is correct.
15486
+ body: JSON.stringify({ host_key: args.agtApiKey, agent_id: args.agentId })
15484
15487
  });
15485
15488
  if (!resp.ok) {
15486
15489
  const body = await resp.text().catch(() => "");
@@ -15553,7 +15556,11 @@ function createCrossTeamPeerAuditClient(args) {
15553
15556
  const resp = await fetchImpl(`${base}/host/exchange`, {
15554
15557
  method: "POST",
15555
15558
  headers: { "Content-Type": "application/json" },
15556
- body: JSON.stringify({ host_key: apiKey }),
15559
+ // ENG-7449 (ADR-0042 P1): scope the exchanged token to this agent. This
15560
+ // client acts strictly AS self (every event is posted with
15561
+ // `agent_id: agentId`); the foreign `peer_agent_id` is audit DATA, never
15562
+ // the auth subject, so a self-scoped token is correct and complete.
15563
+ body: JSON.stringify({ host_key: apiKey, agent_id: agentId }),
15557
15564
  signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS)
15558
15565
  });
15559
15566
  if (!resp.ok) {
@@ -36,7 +36,7 @@ import {
36
36
  writeDirectChatSessionState,
37
37
  writeEgressAllowlist,
38
38
  writePersistentClaudeWrapper
39
- } from "./chunk-22BZ2WQM.js";
39
+ } from "./chunk-RPM3FGSV.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-XHJIV3VJ.js.map
80
+ //# sourceMappingURL=persistent-session-2SO5QQ56.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-22BZ2WQM.js";
3
+ } from "./chunk-RPM3FGSV.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-JMPLO34I.js.map
421
+ //# sourceMappingURL=responsiveness-probe-XAMFIB2G.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.259",
3
+ "version": "0.28.261",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {