@integrity-labs/agt-cli 0.28.791 → 0.28.792

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.
@@ -14,7 +14,7 @@ import {
14
14
  parseEnvFileEntries,
15
15
  parseEnvIntegrations,
16
16
  shellQuote
17
- } from "./chunk-5YVKL47B.js";
17
+ } from "./chunk-RBRA7WOL.js";
18
18
  import {
19
19
  BIND_FAILURE_QUARANTINE_THRESHOLD,
20
20
  INTEGRATIONS_SECTION_END,
@@ -66,7 +66,7 @@ import {
66
66
  sessionTranscriptDir,
67
67
  worseConnectivityOutcome,
68
68
  wrapScheduledTaskPrompt
69
- } from "./chunk-LZOCRUOY.js";
69
+ } from "./chunk-6DWVW3Y3.js";
70
70
  import {
71
71
  parsePsRows
72
72
  } from "./chunk-XWVM4KPK.js";
@@ -6518,7 +6518,7 @@ function exchangeFailureKind(err) {
6518
6518
  }
6519
6519
 
6520
6520
  // src/lib/api-client.ts
6521
- var agtCliVersion = true ? "0.28.791" : "dev";
6521
+ var agtCliVersion = true ? "0.28.792" : "dev";
6522
6522
  var lastConfigHash = null;
6523
6523
  function setConfigHash(hash) {
6524
6524
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -10755,4 +10755,4 @@ export {
10755
10755
  managerInstallSystemUnitCommand,
10756
10756
  managerUninstallSystemUnitCommand
10757
10757
  };
10758
- //# sourceMappingURL=chunk-EPMGQHEU.js.map
10758
+ //# sourceMappingURL=chunk-GQLJGQVM.js.map
@@ -18,7 +18,7 @@ import {
18
18
  rotateDailySession,
19
19
  sessionFileExists,
20
20
  todayLocalIso
21
- } from "./chunk-LZOCRUOY.js";
21
+ } from "./chunk-6DWVW3Y3.js";
22
22
  import {
23
23
  reapOrphanChannelMcps
24
24
  } from "./chunk-XWVM4KPK.js";
@@ -5155,4 +5155,4 @@ export {
5155
5155
  stopAllSessionsAndWait,
5156
5156
  getProjectDir
5157
5157
  };
5158
- //# sourceMappingURL=chunk-5YVKL47B.js.map
5158
+ //# sourceMappingURL=chunk-RBRA7WOL.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-R4K7B522.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-56YC375I.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-VCMX27JL.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-WKQRAJMK.js.map
@@ -58,7 +58,7 @@ import {
58
58
  safeWriteJsonAtomic,
59
59
  setConfigHash,
60
60
  tripClass
61
- } from "../chunk-EPMGQHEU.js";
61
+ } from "../chunk-GQLJGQVM.js";
62
62
  import {
63
63
  getProjectDir as getProjectDir2,
64
64
  getReadyTasks,
@@ -120,7 +120,7 @@ import {
120
120
  takeZombieDetection,
121
121
  toOpencodeModel,
122
122
  writeEgressAllowlist
123
- } from "../chunk-5YVKL47B.js";
123
+ } from "../chunk-RBRA7WOL.js";
124
124
  import {
125
125
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
126
126
  AnchorSessionClient,
@@ -212,7 +212,7 @@ import {
212
212
  subagentActivityAgeSeconds,
213
213
  sumTranscriptUsageInWindow,
214
214
  transcriptActivityAgeSeconds
215
- } from "../chunk-LZOCRUOY.js";
215
+ } from "../chunk-6DWVW3Y3.js";
216
216
  import {
217
217
  reapOrphanChannelMcps
218
218
  } from "../chunk-XWVM4KPK.js";
@@ -12915,7 +12915,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
12915
12915
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
12916
12916
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
12917
12917
  async function channelInboundActivityAgeSecondsFor(codeName) {
12918
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-3FKARAJC.js");
12918
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-PW4RGBR4.js");
12919
12919
  const newest = newestPendingInboundActivityMtimeMs(dirname10(paneLogPath(codeName)));
12920
12920
  if (newest === null) return null;
12921
12921
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -13575,7 +13575,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
13575
13575
  var lastVersionCheckAt = 0;
13576
13576
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
13577
13577
  var lastResponsivenessProbeAt = 0;
13578
- var agtCliVersion = true ? "0.28.791" : "dev";
13578
+ var agtCliVersion = true ? "0.28.792" : "dev";
13579
13579
  function resolveBrewPath(execFileSync2) {
13580
13580
  try {
13581
13581
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -15122,7 +15122,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
15122
15122
  if (codeNames.length === 0) return;
15123
15123
  void (async () => {
15124
15124
  try {
15125
- const { collectDiagnostics } = await import("../persistent-session-R4K7B522.js");
15125
+ const { collectDiagnostics } = await import("../persistent-session-56YC375I.js");
15126
15126
  await api.post("/host/heartbeat", {
15127
15127
  host_id: hostId,
15128
15128
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -15263,7 +15263,7 @@ async function pollCycleInner() {
15263
15263
  }
15264
15264
  try {
15265
15265
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
15266
- const { collectDiagnostics } = await import("../persistent-session-R4K7B522.js");
15266
+ const { collectDiagnostics } = await import("../persistent-session-56YC375I.js");
15267
15267
  const diagCodeNames = [...agentState.persistentSessionAgents];
15268
15268
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
15269
15269
  let tailscaleHostname;
@@ -15432,7 +15432,7 @@ async function pollCycleInner() {
15432
15432
  collectPanelessActivityProbes,
15433
15433
  getResponsivenessIntervalMs,
15434
15434
  occupancyQualificationClassifications
15435
- } = await import("../responsiveness-probe-3FKARAJC.js");
15435
+ } = await import("../responsiveness-probe-PW4RGBR4.js");
15436
15436
  const probeIntervalMs = getResponsivenessIntervalMs();
15437
15437
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
15438
15438
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -15542,7 +15542,7 @@ async function pollCycleInner() {
15542
15542
  collectResponsivenessProbes,
15543
15543
  livePendingInboundOldestAgeSeconds,
15544
15544
  parkPendingInbound
15545
- } = await import("../responsiveness-probe-3FKARAJC.js");
15545
+ } = await import("../responsiveness-probe-PW4RGBR4.js");
15546
15546
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
15547
15547
  const wedgeNow = /* @__PURE__ */ new Date();
15548
15548
  const liveAgents = agentState.persistentSessionAgents;
@@ -15698,7 +15698,7 @@ async function pollCycleInner() {
15698
15698
  }
15699
15699
  try {
15700
15700
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
15701
- const { probeSessionAuth } = await import("../session-auth-dead-66SI667U.js");
15701
+ const { probeSessionAuth } = await import("../session-auth-dead-4GZDGAWS.js");
15702
15702
  const observations = [];
15703
15703
  const pendingCacheCommits = [];
15704
15704
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -19799,7 +19799,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
19799
19799
  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}`));
19800
19800
  void (async () => {
19801
19801
  try {
19802
- const { collectDiagnostics } = await import("../persistent-session-R4K7B522.js");
19802
+ const { collectDiagnostics } = await import("../persistent-session-56YC375I.js");
19803
19803
  await api.post("/host/heartbeat", {
19804
19804
  host_id: hostId,
19805
19805
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -19845,7 +19845,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
19845
19845
  }
19846
19846
  try {
19847
19847
  const hostId = await getHostId();
19848
- const { collectDiagnostics } = await import("../persistent-session-R4K7B522.js");
19848
+ const { collectDiagnostics } = await import("../persistent-session-56YC375I.js");
19849
19849
  await api.post("/host/heartbeat", {
19850
19850
  host_id: hostId,
19851
19851
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20481,7 +20481,7 @@ async function processClaudePairSessions(agents) {
20481
20481
  killPairSession,
20482
20482
  pairTmuxSession,
20483
20483
  finalizeClaudePairOnboarding
20484
- } = await import("../claude-pair-runtime-VCMX27JL.js");
20484
+ } = await import("../claude-pair-runtime-WKQRAJMK.js");
20485
20485
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
20486
20486
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
20487
20487
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -33806,7 +33806,29 @@ var INTEGRATION_REGISTRY = [
33806
33806
  premium: {
33807
33807
  pricing: "usage",
33808
33808
  note: "Billed per minute of real-time voice conversation.",
33809
- meters: [{ event_type: "voice_session", unit: "minute" }]
33809
+ meters: [
33810
+ { event_type: "voice_session", unit: "minute" },
33811
+ // ENG-9870. Ninja Notes cloud transcription, on the SAME definition id
33812
+ // and therefore the SAME $50/org pool as voice conversation — Brad's
33813
+ // call on 2026-09-03, against a recommendation to separate it. Sharing
33814
+ // is by construction rather than by wiring: `evaluateUsageBudget`
33815
+ // iterates every event type under the definition.
33816
+ //
33817
+ // `audio_hour`, not `minute`. The vendor prices per hour and the sell
33818
+ // price is per hour, so hours store exactly (50 minor) where minutes
33819
+ // would be 0.8333 repeating; `integration_usage_events.units` is
33820
+ // `numeric`, so a 30-minute meeting records 0.5 units precisely. This
33821
+ // is the answer to ENG-9773 §10.1's open question about whether hours
33822
+ // convert to minutes or the vocabulary gains hours.
33823
+ //
33824
+ // NOTHING RECORDS THIS EVENT YET. Metering belongs at the chokepoint
33825
+ // where audio is actually sent, and ENG-9868 left the transport
33826
+ // injected with no implementation. The rate card exists first
33827
+ // deliberately: a billable event with no USD rate makes
33828
+ // `evaluateUsageBudget` throw, and on a SHARED pool that would break
33829
+ // Voice Chat's budget check, not just this one.
33830
+ { event_type: "transcription", unit: "audio_hour" }
33831
+ ]
33810
33832
  }
33811
33833
  },
33812
33834
  {
package/dist/mcp/index.js CHANGED
@@ -41329,7 +41329,29 @@ var INTEGRATION_REGISTRY = [
41329
41329
  premium: {
41330
41330
  pricing: "usage",
41331
41331
  note: "Billed per minute of real-time voice conversation.",
41332
- meters: [{ event_type: "voice_session", unit: "minute" }]
41332
+ meters: [
41333
+ { event_type: "voice_session", unit: "minute" },
41334
+ // ENG-9870. Ninja Notes cloud transcription, on the SAME definition id
41335
+ // and therefore the SAME $50/org pool as voice conversation — Brad's
41336
+ // call on 2026-09-03, against a recommendation to separate it. Sharing
41337
+ // is by construction rather than by wiring: `evaluateUsageBudget`
41338
+ // iterates every event type under the definition.
41339
+ //
41340
+ // `audio_hour`, not `minute`. The vendor prices per hour and the sell
41341
+ // price is per hour, so hours store exactly (50 minor) where minutes
41342
+ // would be 0.8333 repeating; `integration_usage_events.units` is
41343
+ // `numeric`, so a 30-minute meeting records 0.5 units precisely. This
41344
+ // is the answer to ENG-9773 §10.1's open question about whether hours
41345
+ // convert to minutes or the vocabulary gains hours.
41346
+ //
41347
+ // NOTHING RECORDS THIS EVENT YET. Metering belongs at the chokepoint
41348
+ // where audio is actually sent, and ENG-9868 left the transport
41349
+ // injected with no implementation. The rate card exists first
41350
+ // deliberately: a billable event with no USD rate makes
41351
+ // `evaluateUsageBudget` throw, and on a SHARED pool that would break
41352
+ // Voice Chat's budget check, not just this one.
41353
+ { event_type: "transcription", unit: "audio_hour" }
41354
+ ]
41333
41355
  }
41334
41356
  },
41335
41357
  {
@@ -39990,7 +39990,29 @@ var INTEGRATION_REGISTRY = [
39990
39990
  premium: {
39991
39991
  pricing: "usage",
39992
39992
  note: "Billed per minute of real-time voice conversation.",
39993
- meters: [{ event_type: "voice_session", unit: "minute" }]
39993
+ meters: [
39994
+ { event_type: "voice_session", unit: "minute" },
39995
+ // ENG-9870. Ninja Notes cloud transcription, on the SAME definition id
39996
+ // and therefore the SAME $50/org pool as voice conversation — Brad's
39997
+ // call on 2026-09-03, against a recommendation to separate it. Sharing
39998
+ // is by construction rather than by wiring: `evaluateUsageBudget`
39999
+ // iterates every event type under the definition.
40000
+ //
40001
+ // `audio_hour`, not `minute`. The vendor prices per hour and the sell
40002
+ // price is per hour, so hours store exactly (50 minor) where minutes
40003
+ // would be 0.8333 repeating; `integration_usage_events.units` is
40004
+ // `numeric`, so a 30-minute meeting records 0.5 units precisely. This
40005
+ // is the answer to ENG-9773 §10.1's open question about whether hours
40006
+ // convert to minutes or the vocabulary gains hours.
40007
+ //
40008
+ // NOTHING RECORDS THIS EVENT YET. Metering belongs at the chokepoint
40009
+ // where audio is actually sent, and ENG-9868 left the transport
40010
+ // injected with no implementation. The rate card exists first
40011
+ // deliberately: a billable event with no USD rate makes
40012
+ // `evaluateUsageBudget` throw, and on a SHARED pool that would break
40013
+ // Voice Chat's budget check, not just this one.
40014
+ { event_type: "transcription", unit: "audio_hour" }
40015
+ ]
39994
40016
  }
39995
40017
  },
39996
40018
  {
@@ -34106,7 +34106,29 @@ var INTEGRATION_REGISTRY = [
34106
34106
  premium: {
34107
34107
  pricing: "usage",
34108
34108
  note: "Billed per minute of real-time voice conversation.",
34109
- meters: [{ event_type: "voice_session", unit: "minute" }]
34109
+ meters: [
34110
+ { event_type: "voice_session", unit: "minute" },
34111
+ // ENG-9870. Ninja Notes cloud transcription, on the SAME definition id
34112
+ // and therefore the SAME $50/org pool as voice conversation — Brad's
34113
+ // call on 2026-09-03, against a recommendation to separate it. Sharing
34114
+ // is by construction rather than by wiring: `evaluateUsageBudget`
34115
+ // iterates every event type under the definition.
34116
+ //
34117
+ // `audio_hour`, not `minute`. The vendor prices per hour and the sell
34118
+ // price is per hour, so hours store exactly (50 minor) where minutes
34119
+ // would be 0.8333 repeating; `integration_usage_events.units` is
34120
+ // `numeric`, so a 30-minute meeting records 0.5 units precisely. This
34121
+ // is the answer to ENG-9773 §10.1's open question about whether hours
34122
+ // convert to minutes or the vocabulary gains hours.
34123
+ //
34124
+ // NOTHING RECORDS THIS EVENT YET. Metering belongs at the chokepoint
34125
+ // where audio is actually sent, and ENG-9868 left the transport
34126
+ // injected with no implementation. The rate card exists first
34127
+ // deliberately: a billable event with no USD rate makes
34128
+ // `evaluateUsageBudget` throw, and on a SHARED pool that would break
34129
+ // Voice Chat's budget check, not just this one.
34130
+ { event_type: "transcription", unit: "audio_hour" }
34131
+ ]
34110
34132
  }
34111
34133
  },
34112
34134
  {
@@ -34264,7 +34264,29 @@ var INTEGRATION_REGISTRY = [
34264
34264
  premium: {
34265
34265
  pricing: "usage",
34266
34266
  note: "Billed per minute of real-time voice conversation.",
34267
- meters: [{ event_type: "voice_session", unit: "minute" }]
34267
+ meters: [
34268
+ { event_type: "voice_session", unit: "minute" },
34269
+ // ENG-9870. Ninja Notes cloud transcription, on the SAME definition id
34270
+ // and therefore the SAME $50/org pool as voice conversation — Brad's
34271
+ // call on 2026-09-03, against a recommendation to separate it. Sharing
34272
+ // is by construction rather than by wiring: `evaluateUsageBudget`
34273
+ // iterates every event type under the definition.
34274
+ //
34275
+ // `audio_hour`, not `minute`. The vendor prices per hour and the sell
34276
+ // price is per hour, so hours store exactly (50 minor) where minutes
34277
+ // would be 0.8333 repeating; `integration_usage_events.units` is
34278
+ // `numeric`, so a 30-minute meeting records 0.5 units precisely. This
34279
+ // is the answer to ENG-9773 §10.1's open question about whether hours
34280
+ // convert to minutes or the vocabulary gains hours.
34281
+ //
34282
+ // NOTHING RECORDS THIS EVENT YET. Metering belongs at the chokepoint
34283
+ // where audio is actually sent, and ENG-9868 left the transport
34284
+ // injected with no implementation. The rate card exists first
34285
+ // deliberately: a billable event with no USD rate makes
34286
+ // `evaluateUsageBudget` throw, and on a SHARED pool that would break
34287
+ // Voice Chat's budget check, not just this one.
34288
+ { event_type: "transcription", unit: "audio_hour" }
34289
+ ]
34268
34290
  }
34269
34291
  },
34270
34292
  {
@@ -49,8 +49,8 @@ import {
49
49
  writeDirectChatSessionState,
50
50
  writeEgressAllowlist,
51
51
  writePersistentClaudeWrapper
52
- } from "./chunk-5YVKL47B.js";
53
- import "./chunk-LZOCRUOY.js";
52
+ } from "./chunk-RBRA7WOL.js";
53
+ import "./chunk-6DWVW3Y3.js";
54
54
  import "./chunk-XWVM4KPK.js";
55
55
  export {
56
56
  EGRESS_BASELINE_DOMAINS,
@@ -104,4 +104,4 @@ export {
104
104
  writeEgressAllowlist,
105
105
  writePersistentClaudeWrapper
106
106
  };
107
- //# sourceMappingURL=persistent-session-R4K7B522.js.map
107
+ //# sourceMappingURL=persistent-session-56YC375I.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-5YVKL47B.js";
4
- import "./chunk-LZOCRUOY.js";
3
+ } from "./chunk-RBRA7WOL.js";
4
+ import "./chunk-6DWVW3Y3.js";
5
5
  import "./chunk-XWVM4KPK.js";
6
6
 
7
7
  // src/lib/responsiveness-probe.ts
@@ -745,4 +745,4 @@ export {
745
745
  readAndResetSlackReplyBindingClassifications,
746
746
  readAndResetSlackReplyTargetClassifications
747
747
  };
748
- //# sourceMappingURL=responsiveness-probe-3FKARAJC.js.map
748
+ //# sourceMappingURL=responsiveness-probe-PW4RGBR4.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-LZOCRUOY.js";
3
+ } from "./chunk-6DWVW3Y3.js";
4
4
 
5
5
  // src/lib/session-auth-dead.ts
6
6
  import { closeSync, openSync, readSync, readdirSync, statSync } from "fs";
@@ -203,4 +203,4 @@ export {
203
203
  decideSessionAuthState,
204
204
  probeSessionAuth
205
205
  };
206
- //# sourceMappingURL=session-auth-dead-66SI667U.js.map
206
+ //# sourceMappingURL=session-auth-dead-4GZDGAWS.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.791",
3
+ "version": "0.28.792",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {