@integrity-labs/agt-cli 0.28.441 → 0.28.442

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-PWLMLDVX.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-VMWQYV5B.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-YU6KOA6R.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-G4M27XXA.js.map
@@ -42,7 +42,7 @@ import {
42
42
  resolveEffectivePinRaw,
43
43
  safeWriteJsonAtomic,
44
44
  setConfigHash
45
- } from "../chunk-6KTN6GTT.js";
45
+ } from "../chunk-JIZ6Z6EX.js";
46
46
  import {
47
47
  getProjectDir as getProjectDir2,
48
48
  getReadyTasks,
@@ -157,7 +157,7 @@ import {
157
157
  toOpencodeModel,
158
158
  transcriptActivityAgeSeconds,
159
159
  writeEgressAllowlist
160
- } from "../chunk-NQP2W2RD.js";
160
+ } from "../chunk-XMJ5VMWV.js";
161
161
  import {
162
162
  reapOrphanChannelMcps
163
163
  } from "../chunk-XWVM4KPK.js";
@@ -9812,7 +9812,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
9812
9812
  var lastVersionCheckAt = 0;
9813
9813
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
9814
9814
  var lastResponsivenessProbeAt = 0;
9815
- var agtCliVersion = true ? "0.28.441" : "dev";
9815
+ var agtCliVersion = true ? "0.28.442" : "dev";
9816
9816
  function resolveBrewPath(execFileSync2) {
9817
9817
  try {
9818
9818
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -10970,7 +10970,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
10970
10970
  if (codeNames.length === 0) return;
10971
10971
  void (async () => {
10972
10972
  try {
10973
- const { collectDiagnostics } = await import("../persistent-session-PWLMLDVX.js");
10973
+ const { collectDiagnostics } = await import("../persistent-session-VMWQYV5B.js");
10974
10974
  await api.post("/host/heartbeat", {
10975
10975
  host_id: hostId,
10976
10976
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor)
@@ -11077,7 +11077,7 @@ async function pollCycle() {
11077
11077
  }
11078
11078
  try {
11079
11079
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
11080
- const { collectDiagnostics } = await import("../persistent-session-PWLMLDVX.js");
11080
+ const { collectDiagnostics } = await import("../persistent-session-VMWQYV5B.js");
11081
11081
  const diagCodeNames = [...agentState.persistentSessionAgents];
11082
11082
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor) : void 0;
11083
11083
  let tailscaleHostname;
@@ -11191,7 +11191,7 @@ async function pollCycle() {
11191
11191
  collectResponsivenessProbes,
11192
11192
  collectPanelessActivityProbes,
11193
11193
  getResponsivenessIntervalMs
11194
- } = await import("../responsiveness-probe-ZKUDFRIU.js");
11194
+ } = await import("../responsiveness-probe-WMJEL7IZ.js");
11195
11195
  const probeIntervalMs = getResponsivenessIntervalMs();
11196
11196
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
11197
11197
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -11255,7 +11255,7 @@ async function pollCycle() {
11255
11255
  collectResponsivenessProbes,
11256
11256
  livePendingInboundOldestAgeSeconds,
11257
11257
  parkPendingInbound
11258
- } = await import("../responsiveness-probe-ZKUDFRIU.js");
11258
+ } = await import("../responsiveness-probe-WMJEL7IZ.js");
11259
11259
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
11260
11260
  const wedgeNow = /* @__PURE__ */ new Date();
11261
11261
  const liveAgents = agentState.persistentSessionAgents;
@@ -14609,7 +14609,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
14609
14609
  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}`));
14610
14610
  void (async () => {
14611
14611
  try {
14612
- const { collectDiagnostics } = await import("../persistent-session-PWLMLDVX.js");
14612
+ const { collectDiagnostics } = await import("../persistent-session-VMWQYV5B.js");
14613
14613
  await api.post("/host/heartbeat", {
14614
14614
  host_id: hostId,
14615
14615
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor)
@@ -14659,7 +14659,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
14659
14659
  }
14660
14660
  try {
14661
14661
  const hostId = await getHostId();
14662
- const { collectDiagnostics } = await import("../persistent-session-PWLMLDVX.js");
14662
+ const { collectDiagnostics } = await import("../persistent-session-VMWQYV5B.js");
14663
14663
  await api.post("/host/heartbeat", {
14664
14664
  host_id: hostId,
14665
14665
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor)
@@ -15112,7 +15112,7 @@ async function processClaudePairSessions(agents) {
15112
15112
  killPairSession,
15113
15113
  pairTmuxSession,
15114
15114
  finalizeClaudePairOnboarding
15115
- } = await import("../claude-pair-runtime-YU6KOA6R.js");
15115
+ } = await import("../claude-pair-runtime-G4M27XXA.js");
15116
15116
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
15117
15117
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
15118
15118
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -31989,8 +31989,31 @@ var DEFAULT_SCOPES = [
31989
31989
  // links an inbound Slack sender to their organization_people record (inbound
31990
31990
  // identity reconcile). Existing installs without it degrade gracefully - the
31991
31991
  // reconcile no-ops until the bot is re-authorised with the wider scope set.
31992
- "users:read.email",
31993
- "users.profile:write"
31992
+ "users:read.email"
31993
+ // ENG-8203: 'users.profile:write' is deliberately NOT here.
31994
+ //
31995
+ // It is registered with `token_type: 'user'` (ENG-4812 — Slack rejects it
31996
+ // under oauth_config.scopes.bot with `illegal_bot_scopes`). The MANIFEST
31997
+ // generator partitions on that flag; the OAuth install-URL builder does not —
31998
+ // `buildSlackAuthorizeUrl` puts every stored scope into `scope=` — so a
31999
+ // default-scoped OAuth install sent a user-only scope as a bot scope and
32000
+ // Slack rejected the whole authorization with "Invalid permissions
32001
+ // requested". That blocked EVERY new install on the default set.
32002
+ //
32003
+ // Removing it rather than routing it to `user_scope=` is deliberate: the
32004
+ // callback destructures `authed_user?: { id?: string }` and persists only the
32005
+ // BOT token (oauth-callback/route.ts:217,246). `authed_user.access_token` is
32006
+ // never read, so asking for the scope would put an extra consent screen in
32007
+ // front of the installing admin and then discard the token it returned.
32008
+ //
32009
+ // Nothing is lost. `users.profile.set` needs an `xoxp-` user token, which no
32010
+ // OAuth-installed agent has ever had — the bot-status/live-presence indicator
32011
+ // only ever worked where an operator pasted a user token into the wizard by
32012
+ // hand, and that path is untouched. The registry definition stays so existing
32013
+ // configs still render and the `token_type: 'user'` knowledge is preserved.
32014
+ //
32015
+ // Wiring the indicator for OAuth installs means persisting
32016
+ // `authed_user.access_token` first, THEN adding `user_scope=`. Separate work.
31994
32017
  ];
31995
32018
  var SLACK_SCOPE_PRESETS = {
31996
32019
  minimal: [
@@ -37627,8 +37627,31 @@ var DEFAULT_SCOPES = [
37627
37627
  // links an inbound Slack sender to their organization_people record (inbound
37628
37628
  // identity reconcile). Existing installs without it degrade gracefully - the
37629
37629
  // reconcile no-ops until the bot is re-authorised with the wider scope set.
37630
- "users:read.email",
37631
- "users.profile:write"
37630
+ "users:read.email"
37631
+ // ENG-8203: 'users.profile:write' is deliberately NOT here.
37632
+ //
37633
+ // It is registered with `token_type: 'user'` (ENG-4812 — Slack rejects it
37634
+ // under oauth_config.scopes.bot with `illegal_bot_scopes`). The MANIFEST
37635
+ // generator partitions on that flag; the OAuth install-URL builder does not —
37636
+ // `buildSlackAuthorizeUrl` puts every stored scope into `scope=` — so a
37637
+ // default-scoped OAuth install sent a user-only scope as a bot scope and
37638
+ // Slack rejected the whole authorization with "Invalid permissions
37639
+ // requested". That blocked EVERY new install on the default set.
37640
+ //
37641
+ // Removing it rather than routing it to `user_scope=` is deliberate: the
37642
+ // callback destructures `authed_user?: { id?: string }` and persists only the
37643
+ // BOT token (oauth-callback/route.ts:217,246). `authed_user.access_token` is
37644
+ // never read, so asking for the scope would put an extra consent screen in
37645
+ // front of the installing admin and then discard the token it returned.
37646
+ //
37647
+ // Nothing is lost. `users.profile.set` needs an `xoxp-` user token, which no
37648
+ // OAuth-installed agent has ever had — the bot-status/live-presence indicator
37649
+ // only ever worked where an operator pasted a user token into the wizard by
37650
+ // hand, and that path is untouched. The registry definition stays so existing
37651
+ // configs still render and the `token_type: 'user'` knowledge is preserved.
37652
+ //
37653
+ // Wiring the indicator for OAuth installs means persisting
37654
+ // `authed_user.access_token` first, THEN adding `user_scope=`. Separate work.
37632
37655
  ];
37633
37656
  var SLACK_SCOPE_PRESETS = {
37634
37657
  minimal: [
@@ -31558,8 +31558,31 @@ var DEFAULT_SCOPES = [
31558
31558
  // links an inbound Slack sender to their organization_people record (inbound
31559
31559
  // identity reconcile). Existing installs without it degrade gracefully - the
31560
31560
  // reconcile no-ops until the bot is re-authorised with the wider scope set.
31561
- "users:read.email",
31562
- "users.profile:write"
31561
+ "users:read.email"
31562
+ // ENG-8203: 'users.profile:write' is deliberately NOT here.
31563
+ //
31564
+ // It is registered with `token_type: 'user'` (ENG-4812 — Slack rejects it
31565
+ // under oauth_config.scopes.bot with `illegal_bot_scopes`). The MANIFEST
31566
+ // generator partitions on that flag; the OAuth install-URL builder does not —
31567
+ // `buildSlackAuthorizeUrl` puts every stored scope into `scope=` — so a
31568
+ // default-scoped OAuth install sent a user-only scope as a bot scope and
31569
+ // Slack rejected the whole authorization with "Invalid permissions
31570
+ // requested". That blocked EVERY new install on the default set.
31571
+ //
31572
+ // Removing it rather than routing it to `user_scope=` is deliberate: the
31573
+ // callback destructures `authed_user?: { id?: string }` and persists only the
31574
+ // BOT token (oauth-callback/route.ts:217,246). `authed_user.access_token` is
31575
+ // never read, so asking for the scope would put an extra consent screen in
31576
+ // front of the installing admin and then discard the token it returned.
31577
+ //
31578
+ // Nothing is lost. `users.profile.set` needs an `xoxp-` user token, which no
31579
+ // OAuth-installed agent has ever had — the bot-status/live-presence indicator
31580
+ // only ever worked where an operator pasted a user token into the wizard by
31581
+ // hand, and that path is untouched. The registry definition stays so existing
31582
+ // configs still render and the `token_type: 'user'` knowledge is preserved.
31583
+ //
31584
+ // Wiring the indicator for OAuth installs means persisting
31585
+ // `authed_user.access_token` first, THEN adding `user_scope=`. Separate work.
31563
31586
  ];
31564
31587
  var SLACK_SCOPE_PRESETS = {
31565
31588
  minimal: [
@@ -31860,8 +31860,31 @@ var DEFAULT_SCOPES = [
31860
31860
  // links an inbound Slack sender to their organization_people record (inbound
31861
31861
  // identity reconcile). Existing installs without it degrade gracefully - the
31862
31862
  // reconcile no-ops until the bot is re-authorised with the wider scope set.
31863
- "users:read.email",
31864
- "users.profile:write"
31863
+ "users:read.email"
31864
+ // ENG-8203: 'users.profile:write' is deliberately NOT here.
31865
+ //
31866
+ // It is registered with `token_type: 'user'` (ENG-4812 — Slack rejects it
31867
+ // under oauth_config.scopes.bot with `illegal_bot_scopes`). The MANIFEST
31868
+ // generator partitions on that flag; the OAuth install-URL builder does not —
31869
+ // `buildSlackAuthorizeUrl` puts every stored scope into `scope=` — so a
31870
+ // default-scoped OAuth install sent a user-only scope as a bot scope and
31871
+ // Slack rejected the whole authorization with "Invalid permissions
31872
+ // requested". That blocked EVERY new install on the default set.
31873
+ //
31874
+ // Removing it rather than routing it to `user_scope=` is deliberate: the
31875
+ // callback destructures `authed_user?: { id?: string }` and persists only the
31876
+ // BOT token (oauth-callback/route.ts:217,246). `authed_user.access_token` is
31877
+ // never read, so asking for the scope would put an extra consent screen in
31878
+ // front of the installing admin and then discard the token it returned.
31879
+ //
31880
+ // Nothing is lost. `users.profile.set` needs an `xoxp-` user token, which no
31881
+ // OAuth-installed agent has ever had — the bot-status/live-presence indicator
31882
+ // only ever worked where an operator pasted a user token into the wizard by
31883
+ // hand, and that path is untouched. The registry definition stays so existing
31884
+ // configs still render and the `token_type: 'user'` knowledge is preserved.
31885
+ //
31886
+ // Wiring the indicator for OAuth installs means persisting
31887
+ // `authed_user.access_token` first, THEN adding `user_scope=`. Separate work.
31865
31888
  ];
31866
31889
  var SLACK_SCOPE_PRESETS = {
31867
31890
  minimal: [
@@ -36,7 +36,7 @@ import {
36
36
  writeDirectChatSessionState,
37
37
  writeEgressAllowlist,
38
38
  writePersistentClaudeWrapper
39
- } from "./chunk-NQP2W2RD.js";
39
+ } from "./chunk-XMJ5VMWV.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-PWLMLDVX.js.map
80
+ //# sourceMappingURL=persistent-session-VMWQYV5B.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-NQP2W2RD.js";
3
+ } from "./chunk-XMJ5VMWV.js";
4
4
  import "./chunk-XWVM4KPK.js";
5
5
 
6
6
  // src/lib/responsiveness-probe.ts
@@ -471,4 +471,4 @@ export {
471
471
  readAndResetSlackReplyBindingClassifications,
472
472
  readAndResetSlackReplyTargetClassifications
473
473
  };
474
- //# sourceMappingURL=responsiveness-probe-ZKUDFRIU.js.map
474
+ //# sourceMappingURL=responsiveness-probe-WMJEL7IZ.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.441",
3
+ "version": "0.28.442",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {