@integrity-labs/agt-cli 0.28.359 → 0.28.360

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-R7JOZNIC.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-7XG63YFS.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-ASRAOWWQ.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-JX2ZYSZC.js.map
@@ -50,7 +50,7 @@ import {
50
50
  safeWriteJsonAtomic,
51
51
  setConfigHash,
52
52
  toOpencodeModel
53
- } from "../chunk-TVFNWNSP.js";
53
+ } from "../chunk-U62E42YH.js";
54
54
  import {
55
55
  getProjectDir as getProjectDir2,
56
56
  getReadyTasks,
@@ -141,7 +141,7 @@ import {
141
141
  takeZombieDetection,
142
142
  transcriptActivityAgeSeconds,
143
143
  writeEgressAllowlist
144
- } from "../chunk-FAGXXKWZ.js";
144
+ } from "../chunk-Z7QR2YEJ.js";
145
145
  import {
146
146
  reapOrphanChannelMcps
147
147
  } from "../chunk-XWVM4KPK.js";
@@ -9532,7 +9532,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
9532
9532
  var lastVersionCheckAt = 0;
9533
9533
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
9534
9534
  var lastResponsivenessProbeAt = 0;
9535
- var agtCliVersion = true ? "0.28.359" : "dev";
9535
+ var agtCliVersion = true ? "0.28.360" : "dev";
9536
9536
  function resolveBrewPath(execFileSync2) {
9537
9537
  try {
9538
9538
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -10551,7 +10551,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
10551
10551
  if (codeNames.length === 0) return;
10552
10552
  void (async () => {
10553
10553
  try {
10554
- const { collectDiagnostics } = await import("../persistent-session-R7JOZNIC.js");
10554
+ const { collectDiagnostics } = await import("../persistent-session-7XG63YFS.js");
10555
10555
  await api.post("/host/heartbeat", {
10556
10556
  host_id: hostId,
10557
10557
  agent_diagnostics: collectDiagnostics(codeNames)
@@ -10650,7 +10650,7 @@ async function pollCycle() {
10650
10650
  }
10651
10651
  try {
10652
10652
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
10653
- const { collectDiagnostics } = await import("../persistent-session-R7JOZNIC.js");
10653
+ const { collectDiagnostics } = await import("../persistent-session-7XG63YFS.js");
10654
10654
  const diagCodeNames = [...agentState.persistentSessionAgents];
10655
10655
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames) : void 0;
10656
10656
  let tailscaleHostname;
@@ -10805,7 +10805,7 @@ async function pollCycle() {
10805
10805
  const {
10806
10806
  collectResponsivenessProbes,
10807
10807
  getResponsivenessIntervalMs
10808
- } = await import("../responsiveness-probe-7SUERVWL.js");
10808
+ } = await import("../responsiveness-probe-JV6PRDKD.js");
10809
10809
  const probeIntervalMs = getResponsivenessIntervalMs();
10810
10810
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
10811
10811
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -10837,7 +10837,7 @@ async function pollCycle() {
10837
10837
  collectResponsivenessProbes,
10838
10838
  livePendingInboundOldestAgeSeconds,
10839
10839
  parkPendingInbound
10840
- } = await import("../responsiveness-probe-7SUERVWL.js");
10840
+ } = await import("../responsiveness-probe-JV6PRDKD.js");
10841
10841
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-HYOOQV4A.js");
10842
10842
  const wedgeNow = /* @__PURE__ */ new Date();
10843
10843
  const liveAgents = agentState.persistentSessionAgents;
@@ -13992,7 +13992,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
13992
13992
  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}`));
13993
13993
  void (async () => {
13994
13994
  try {
13995
- const { collectDiagnostics } = await import("../persistent-session-R7JOZNIC.js");
13995
+ const { collectDiagnostics } = await import("../persistent-session-7XG63YFS.js");
13996
13996
  await api.post("/host/heartbeat", {
13997
13997
  host_id: hostId,
13998
13998
  agent_diagnostics: collectDiagnostics([codeName])
@@ -14042,7 +14042,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
14042
14042
  }
14043
14043
  try {
14044
14044
  const hostId = await getHostId();
14045
- const { collectDiagnostics } = await import("../persistent-session-R7JOZNIC.js");
14045
+ const { collectDiagnostics } = await import("../persistent-session-7XG63YFS.js");
14046
14046
  await api.post("/host/heartbeat", {
14047
14047
  host_id: hostId,
14048
14048
  agent_diagnostics: collectDiagnostics([codeName])
@@ -14540,7 +14540,7 @@ async function processClaudePairSessions(agents) {
14540
14540
  killPairSession,
14541
14541
  pairTmuxSession,
14542
14542
  finalizeClaudePairOnboarding
14543
- } = await import("../claude-pair-runtime-ASRAOWWQ.js");
14543
+ } = await import("../claude-pair-runtime-JX2ZYSZC.js");
14544
14544
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
14545
14545
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
14546
14546
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -34781,6 +34781,19 @@ var FLAG_REGISTRY = [
34781
34781
  // deliberate, audited per-org flip (ADR-0022 §4).
34782
34782
  sensitive: true
34783
34783
  },
34784
+ {
34785
+ key: "email-guard-require-approval-enabled",
34786
+ description: "Platform enable-gate for the email-domain guardrail REQUIRE_APPROVAL stage (ENG-7939). When ON for an org, a scope at email_guard_stage=require_approval routes a send to a non-allowed domain into Human Approval (an Approve/Deny card) instead of a hard block: the rollout UI unlocks the option and the write routes accept require_approval. When OFF (default) the write routes reject require_approval and the UI shows it as not yet available, so no scope can select it. Structurally also depends on hitl-approval-routing being on (the approval broker fails closed to a hard block when routing is off). Evaluated per-org. Ships dark.",
34787
+ flagType: "boolean",
34788
+ // Declared safe value is `false` (require_approval is unselectable / inert). A flag-DB read
34789
+ // error degrades here, so a flags outage can never start routing customer email through a
34790
+ // half-wired approval path - the fail-closed direction. No envVar: net-new control with no
34791
+ // pre-flags env gate to migrate (ADR-0022).
34792
+ defaultValue: false,
34793
+ // Ungates a stage that changes how real customer email is handled (block becomes approval),
34794
+ // so it is a deliberate, audited per-org flip (ADR-0022 §4).
34795
+ sensitive: true
34796
+ },
34784
34797
  {
34785
34798
  key: "slack-reply-binding",
34786
34799
  description: "Slack reply-target binding (ENG-7396 / WS2, cross-thread reply routing): the model names which inbound it answers (inbound_id) and the server resolves the destination from its own verified record. shadow = classify + count only, routing unchanged; warn = same routing plus a tool-result note so the model self-corrects; enforce = route a bound reply to the registry thread and REJECT a reply whose target matches no inbound this process delivered. The channel server can't evaluate flags, so the manager materializes the resolved value into the AGT_SLACK_REPLY_BINDING spawn env (the operator/canary override, ADR-0022). Ships shadow.",
@@ -40544,6 +40544,19 @@ var FLAG_REGISTRY = [
40544
40544
  // deliberate, audited per-org flip (ADR-0022 §4).
40545
40545
  sensitive: true
40546
40546
  },
40547
+ {
40548
+ key: "email-guard-require-approval-enabled",
40549
+ description: "Platform enable-gate for the email-domain guardrail REQUIRE_APPROVAL stage (ENG-7939). When ON for an org, a scope at email_guard_stage=require_approval routes a send to a non-allowed domain into Human Approval (an Approve/Deny card) instead of a hard block: the rollout UI unlocks the option and the write routes accept require_approval. When OFF (default) the write routes reject require_approval and the UI shows it as not yet available, so no scope can select it. Structurally also depends on hitl-approval-routing being on (the approval broker fails closed to a hard block when routing is off). Evaluated per-org. Ships dark.",
40550
+ flagType: "boolean",
40551
+ // Declared safe value is `false` (require_approval is unselectable / inert). A flag-DB read
40552
+ // error degrades here, so a flags outage can never start routing customer email through a
40553
+ // half-wired approval path - the fail-closed direction. No envVar: net-new control with no
40554
+ // pre-flags env gate to migrate (ADR-0022).
40555
+ defaultValue: false,
40556
+ // Ungates a stage that changes how real customer email is handled (block becomes approval),
40557
+ // so it is a deliberate, audited per-org flip (ADR-0022 §4).
40558
+ sensitive: true
40559
+ },
40547
40560
  {
40548
40561
  key: "slack-reply-binding",
40549
40562
  description: "Slack reply-target binding (ENG-7396 / WS2, cross-thread reply routing): the model names which inbound it answers (inbound_id) and the server resolves the destination from its own verified record. shadow = classify + count only, routing unchanged; warn = same routing plus a tool-result note so the model self-corrects; enforce = route a bound reply to the registry thread and REJECT a reply whose target matches no inbound this process delivered. The channel server can't evaluate flags, so the manager materializes the resolved value into the AGT_SLACK_REPLY_BINDING spawn env (the operator/canary override, ADR-0022). Ships shadow.",
@@ -34463,6 +34463,19 @@ var FLAG_REGISTRY = [
34463
34463
  // deliberate, audited per-org flip (ADR-0022 §4).
34464
34464
  sensitive: true
34465
34465
  },
34466
+ {
34467
+ key: "email-guard-require-approval-enabled",
34468
+ description: "Platform enable-gate for the email-domain guardrail REQUIRE_APPROVAL stage (ENG-7939). When ON for an org, a scope at email_guard_stage=require_approval routes a send to a non-allowed domain into Human Approval (an Approve/Deny card) instead of a hard block: the rollout UI unlocks the option and the write routes accept require_approval. When OFF (default) the write routes reject require_approval and the UI shows it as not yet available, so no scope can select it. Structurally also depends on hitl-approval-routing being on (the approval broker fails closed to a hard block when routing is off). Evaluated per-org. Ships dark.",
34469
+ flagType: "boolean",
34470
+ // Declared safe value is `false` (require_approval is unselectable / inert). A flag-DB read
34471
+ // error degrades here, so a flags outage can never start routing customer email through a
34472
+ // half-wired approval path - the fail-closed direction. No envVar: net-new control with no
34473
+ // pre-flags env gate to migrate (ADR-0022).
34474
+ defaultValue: false,
34475
+ // Ungates a stage that changes how real customer email is handled (block becomes approval),
34476
+ // so it is a deliberate, audited per-org flip (ADR-0022 §4).
34477
+ sensitive: true
34478
+ },
34466
34479
  {
34467
34480
  key: "slack-reply-binding",
34468
34481
  description: "Slack reply-target binding (ENG-7396 / WS2, cross-thread reply routing): the model names which inbound it answers (inbound_id) and the server resolves the destination from its own verified record. shadow = classify + count only, routing unchanged; warn = same routing plus a tool-result note so the model self-corrects; enforce = route a bound reply to the registry thread and REJECT a reply whose target matches no inbound this process delivered. The channel server can't evaluate flags, so the manager materializes the resolved value into the AGT_SLACK_REPLY_BINDING spawn env (the operator/canary override, ADR-0022). Ships shadow.",
@@ -34813,6 +34813,19 @@ var FLAG_REGISTRY = [
34813
34813
  // deliberate, audited per-org flip (ADR-0022 §4).
34814
34814
  sensitive: true
34815
34815
  },
34816
+ {
34817
+ key: "email-guard-require-approval-enabled",
34818
+ description: "Platform enable-gate for the email-domain guardrail REQUIRE_APPROVAL stage (ENG-7939). When ON for an org, a scope at email_guard_stage=require_approval routes a send to a non-allowed domain into Human Approval (an Approve/Deny card) instead of a hard block: the rollout UI unlocks the option and the write routes accept require_approval. When OFF (default) the write routes reject require_approval and the UI shows it as not yet available, so no scope can select it. Structurally also depends on hitl-approval-routing being on (the approval broker fails closed to a hard block when routing is off). Evaluated per-org. Ships dark.",
34819
+ flagType: "boolean",
34820
+ // Declared safe value is `false` (require_approval is unselectable / inert). A flag-DB read
34821
+ // error degrades here, so a flags outage can never start routing customer email through a
34822
+ // half-wired approval path - the fail-closed direction. No envVar: net-new control with no
34823
+ // pre-flags env gate to migrate (ADR-0022).
34824
+ defaultValue: false,
34825
+ // Ungates a stage that changes how real customer email is handled (block becomes approval),
34826
+ // so it is a deliberate, audited per-org flip (ADR-0022 §4).
34827
+ sensitive: true
34828
+ },
34816
34829
  {
34817
34830
  key: "slack-reply-binding",
34818
34831
  description: "Slack reply-target binding (ENG-7396 / WS2, cross-thread reply routing): the model names which inbound it answers (inbound_id) and the server resolves the destination from its own verified record. shadow = classify + count only, routing unchanged; warn = same routing plus a tool-result note so the model self-corrects; enforce = route a bound reply to the registry thread and REJECT a reply whose target matches no inbound this process delivered. The channel server can't evaluate flags, so the manager materializes the resolved value into the AGT_SLACK_REPLY_BINDING spawn env (the operator/canary override, ADR-0022). Ships shadow.",
@@ -36,7 +36,7 @@ import {
36
36
  writeDirectChatSessionState,
37
37
  writeEgressAllowlist,
38
38
  writePersistentClaudeWrapper
39
- } from "./chunk-FAGXXKWZ.js";
39
+ } from "./chunk-Z7QR2YEJ.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-R7JOZNIC.js.map
80
+ //# sourceMappingURL=persistent-session-7XG63YFS.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-FAGXXKWZ.js";
3
+ } from "./chunk-Z7QR2YEJ.js";
4
4
  import "./chunk-XWVM4KPK.js";
5
5
 
6
6
  // src/lib/responsiveness-probe.ts
@@ -437,4 +437,4 @@ export {
437
437
  readAndResetSlackReplyBindingClassifications,
438
438
  readAndResetSlackReplyTargetClassifications
439
439
  };
440
- //# sourceMappingURL=responsiveness-probe-7SUERVWL.js.map
440
+ //# sourceMappingURL=responsiveness-probe-JV6PRDKD.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.359",
3
+ "version": "0.28.360",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {