@integrity-labs/agt-cli 0.28.1106 → 0.28.1108

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.
@@ -16,7 +16,7 @@ import {
16
16
  parseEnvFileEntries,
17
17
  parseEnvIntegrations,
18
18
  shellQuote
19
- } from "./chunk-UUCJYW6D.js";
19
+ } from "./chunk-4PTXGOVO.js";
20
20
  import {
21
21
  BIND_FAILURE_QUARANTINE_THRESHOLD,
22
22
  INTEGRATIONS_SECTION_END,
@@ -79,7 +79,7 @@ import {
79
79
  sessionTranscriptDir,
80
80
  worseConnectivityOutcome,
81
81
  wrapScheduledTaskPrompt
82
- } from "./chunk-FWWOW7YA.js";
82
+ } from "./chunk-TZM6YVE7.js";
83
83
  import {
84
84
  classifyUnanswerablePane,
85
85
  isConsumerTermsDialogVisible,
@@ -7518,7 +7518,7 @@ function exchangeFailureKind(err) {
7518
7518
  }
7519
7519
 
7520
7520
  // src/lib/api-client.ts
7521
- var agtCliVersion = true ? "0.28.1106" : "dev";
7521
+ var agtCliVersion = true ? "0.28.1108" : "dev";
7522
7522
  var lastConfigHash = null;
7523
7523
  function setConfigHash(hash) {
7524
7524
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -12492,4 +12492,4 @@ export {
12492
12492
  managerInstallSystemUnitCommand,
12493
12493
  managerUninstallSystemUnitCommand
12494
12494
  };
12495
- //# sourceMappingURL=chunk-IU4PRYD3.js.map
12495
+ //# sourceMappingURL=chunk-VJIOJTSC.js.map
@@ -266,7 +266,7 @@ async function spawnPairSession(session) {
266
266
  return { ok: true };
267
267
  } catch {
268
268
  }
269
- const { resolveClaudeBinary } = await import("./persistent-session-SE2HUCIQ.js");
269
+ const { resolveClaudeBinary } = await import("./persistent-session-HSYN3SQ2.js");
270
270
  const claudeBin = resolveClaudeBinary();
271
271
  const pairEnv = {
272
272
  ...process.env,
@@ -734,4 +734,4 @@ export {
734
734
  startClaudePair,
735
735
  submitClaudePairCode
736
736
  };
737
- //# sourceMappingURL=claude-pair-runtime-4YLAYMDB.js.map
737
+ //# sourceMappingURL=claude-pair-runtime-L7KXG3DD.js.map
@@ -68,7 +68,7 @@ import {
68
68
  safeWriteJsonAtomic,
69
69
  setConfigHash,
70
70
  tripClass
71
- } from "../chunk-IU4PRYD3.js";
71
+ } from "../chunk-VJIOJTSC.js";
72
72
  import {
73
73
  getProjectDir as getProjectDir2,
74
74
  getReadyTasks,
@@ -155,7 +155,7 @@ import {
155
155
  webFetchBaselineValue,
156
156
  webFetchRestartNeeded,
157
157
  writeEgressAllowlist
158
- } from "../chunk-UUCJYW6D.js";
158
+ } from "../chunk-4PTXGOVO.js";
159
159
  import {
160
160
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
161
161
  AnchorSessionClient,
@@ -265,7 +265,7 @@ import {
265
265
  subagentActivityAgeSeconds,
266
266
  sumTranscriptUsageInWindow,
267
267
  transcriptActivityAgeSeconds
268
- } from "../chunk-FWWOW7YA.js";
268
+ } from "../chunk-TZM6YVE7.js";
269
269
  import {
270
270
  classifyUnanswerablePane,
271
271
  paneRemedy
@@ -14143,7 +14143,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
14143
14143
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
14144
14144
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
14145
14145
  async function channelInboundActivityAgeSecondsFor(codeName) {
14146
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-C2KROIRU.js");
14146
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-MO4L5O6F.js");
14147
14147
  const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
14148
14148
  if (newest === null) return null;
14149
14149
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -14901,7 +14901,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
14901
14901
  var lastVersionCheckAt = 0;
14902
14902
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
14903
14903
  var lastResponsivenessProbeAt = 0;
14904
- var agtCliVersion = true ? "0.28.1106" : "dev";
14904
+ var agtCliVersion = true ? "0.28.1108" : "dev";
14905
14905
  function resolveBrewPath(execFileSync3) {
14906
14906
  try {
14907
14907
  const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -16518,7 +16518,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
16518
16518
  if (codeNames.length === 0) return;
16519
16519
  void (async () => {
16520
16520
  try {
16521
- const { collectDiagnostics } = await import("../persistent-session-SE2HUCIQ.js");
16521
+ const { collectDiagnostics } = await import("../persistent-session-HSYN3SQ2.js");
16522
16522
  await api.post("/host/heartbeat", {
16523
16523
  host_id: hostId,
16524
16524
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
@@ -16660,7 +16660,7 @@ async function pollCycleInner() {
16660
16660
  }
16661
16661
  try {
16662
16662
  const { detectHostSecurity } = await import("../host-security-KQYYZZVW.js");
16663
- const { collectDiagnostics } = await import("../persistent-session-SE2HUCIQ.js");
16663
+ const { collectDiagnostics } = await import("../persistent-session-HSYN3SQ2.js");
16664
16664
  const diagCodeNames = [...agentState.persistentSessionAgents];
16665
16665
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor) : void 0;
16666
16666
  let tailscaleHostname;
@@ -16868,7 +16868,7 @@ async function pollCycleInner() {
16868
16868
  collectPanelessActivityProbes,
16869
16869
  getResponsivenessIntervalMs,
16870
16870
  occupancyQualificationClassifications
16871
- } = await import("../responsiveness-probe-C2KROIRU.js");
16871
+ } = await import("../responsiveness-probe-MO4L5O6F.js");
16872
16872
  const probeIntervalMs = getResponsivenessIntervalMs();
16873
16873
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
16874
16874
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -16985,7 +16985,7 @@ async function pollCycleInner() {
16985
16985
  collectResponsivenessProbes,
16986
16986
  livePendingInboundOldestAgeSeconds,
16987
16987
  parkPendingInbound
16988
- } = await import("../responsiveness-probe-C2KROIRU.js");
16988
+ } = await import("../responsiveness-probe-MO4L5O6F.js");
16989
16989
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-M6AFZWNU.js");
16990
16990
  const wedgeNow = /* @__PURE__ */ new Date();
16991
16991
  const liveAgents = agentState.persistentSessionAgents;
@@ -17271,7 +17271,7 @@ async function pollCycleInner() {
17271
17271
  }
17272
17272
  }
17273
17273
  );
17274
- const { parkPendingInbound } = await import("../responsiveness-probe-C2KROIRU.js");
17274
+ const { parkPendingInbound } = await import("../responsiveness-probe-MO4L5O6F.js");
17275
17275
  const { parked, deadLettered } = parkPendingInbound(codeName, new Date(fatalNowMs));
17276
17276
  paneFatalStreak.delete(codeName);
17277
17277
  paneFatalRestarts.set(codeName, [...history, fatalNowMs]);
@@ -17302,7 +17302,7 @@ async function pollCycleInner() {
17302
17302
  TRANSCRIPT_MOUNT_ESCALATION_REFRESH_MS,
17303
17303
  bindSourceEscalations
17304
17304
  } = await import("../transcript-mount-health-OHE6IVJV.js");
17305
- const { transcriptBindSourcesFor, ensureTranscriptBindSources } = await import("../persistent-session-SE2HUCIQ.js");
17305
+ const { transcriptBindSourcesFor, ensureTranscriptBindSources } = await import("../persistent-session-HSYN3SQ2.js");
17306
17306
  const mountConfig = resolveTranscriptMountConfig();
17307
17307
  const liveAgents = agentState.persistentSessionAgents;
17308
17308
  for (const tracked of [
@@ -17467,7 +17467,7 @@ async function pollCycleInner() {
17467
17467
  }
17468
17468
  try {
17469
17469
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-VR5QGP3J.js");
17470
- const { probeSessionAuth } = await import("../session-auth-dead-CXGA6GYP.js");
17470
+ const { probeSessionAuth } = await import("../session-auth-dead-ZKI4XCSI.js");
17471
17471
  const observations = [];
17472
17472
  const pendingCacheCommits = [];
17473
17473
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -22054,7 +22054,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
22054
22054
  try {
22055
22055
  const freshId = rotateSessionForWedge(codeName);
22056
22056
  consecutiveWedgeCycles.delete(codeName);
22057
- const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-C2KROIRU.js");
22057
+ const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-MO4L5O6F.js");
22058
22058
  const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
22059
22059
  const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
22060
22060
  const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
@@ -22097,7 +22097,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
22097
22097
  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}`));
22098
22098
  void (async () => {
22099
22099
  try {
22100
- const { collectDiagnostics } = await import("../persistent-session-SE2HUCIQ.js");
22100
+ const { collectDiagnostics } = await import("../persistent-session-HSYN3SQ2.js");
22101
22101
  await api.post("/host/heartbeat", {
22102
22102
  host_id: hostId,
22103
22103
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
@@ -22148,7 +22148,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
22148
22148
  }
22149
22149
  try {
22150
22150
  const hostId = await getHostId();
22151
- const { collectDiagnostics } = await import("../persistent-session-SE2HUCIQ.js");
22151
+ const { collectDiagnostics } = await import("../persistent-session-HSYN3SQ2.js");
22152
22152
  await api.post("/host/heartbeat", {
22153
22153
  host_id: hostId,
22154
22154
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
@@ -22821,7 +22821,7 @@ async function processClaudePairSessions(agents) {
22821
22821
  // cannot take it for itself — by the time it runs, the write it is looking
22822
22822
  // for may already have happened.
22823
22823
  snapshotPairConfig
22824
- } = await import("../claude-pair-runtime-4YLAYMDB.js");
22824
+ } = await import("../claude-pair-runtime-L7KXG3DD.js");
22825
22825
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
22826
22826
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
22827
22827
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -34051,7 +34051,7 @@ var INTEGRATION_REGISTRY = [
34051
34051
  id: "video-gen",
34052
34052
  name: "Video Generation",
34053
34053
  category: "media",
34054
- description: "AI video generation from a text prompt or an input image. An agent passes a prompt (plus optionally image_url) to generate_video and gets back a short generated video with audio, which it can deliver to a chat channel. Ninjafy manages the model access for you - there is no key to enter. Generation runs direct against xAI Grok Imagine: text-to-video on the base grok-imagine-video model, image-to-video on grok-imagine-video-1.5. It is a PREMIUM, usage-billed capability: gated on a per-org opt-in and a monthly USD budget, and metered per second of generated video.",
34054
+ description: 'AI video generation from a text prompt or an input image. An agent passes a prompt (plus optionally image_url) to generate_video and gets back a short generated video with audio, which it can deliver to a chat channel. Ninjafy manages the model access for you - there is no key to enter. Generation runs direct against xAI Grok Imagine: text-to-video on the base grok-imagine-video model, image-to-video on grok-imagine-video-1.5, or both modes on the lower-cost grok-imagine-video-1.5-lite when the agent asks for model "lite". It is a PREMIUM, usage-billed capability: gated on a per-org opt-in and a monthly USD budget, and metered per second of generated video.',
34055
34055
  // Platform-key model (mirrors Grok Voice / ADR-0031): Ninjafy holds one xAI
34056
34056
  // account key (XAI_API_KEY) and every customer render bills back to it, so
34057
34057
  // auth is `none` - customers never enter a key.
@@ -34086,7 +34086,12 @@ var INTEGRATION_REGISTRY = [
34086
34086
  { event_type: "grok_imagine_video_1_5_720p", unit: "second" },
34087
34087
  // 1080p is image-to-video only (xAI restriction); metered when the
34088
34088
  // agent supplies image_url (ENG-7675).
34089
- { event_type: "grok_imagine_video_1_5_1080p", unit: "second" }
34089
+ { event_type: "grok_imagine_video_1_5_1080p", unit: "second" },
34090
+ // ENG-11426: the lite tier (grok-imagine-video-1.5-lite) runs both modes
34091
+ // and reaches 1080p in either (upscaled from 720p), so all three map.
34092
+ { event_type: "grok_imagine_video_1_5_lite_480p", unit: "second" },
34093
+ { event_type: "grok_imagine_video_1_5_lite_720p", unit: "second" },
34094
+ { event_type: "grok_imagine_video_1_5_lite_1080p", unit: "second" }
34090
34095
  ]
34091
34096
  }
34092
34097
  },
@@ -38279,7 +38284,7 @@ var FLAG_REGISTRY = [
38279
38284
  },
38280
38285
  {
38281
38286
  key: "approval-unified-authority",
38282
- description: "One authority check for every approval ingress (ENG-11207, ADR-0124 Phase 0b): canDecide() runs inside tryDispatchApprovalCore for console, Slack (channel, alerts, Socket Mode, which also carries Telegram) and Direct Chat taps alike. off = not computed. shadow = compute the verdict, including the verb's declared approver boundary (ENG-11337), and log approval_authority_would_reject (ingress, verb, org, reason, boundary) for every tap it would refuse and approval_authority_would_admit (ingress, verb, org, basis, boundary) for every tap it would admit, then decide exactly as today. enforce = reserved for the per-(org, verb) allowlist slice; until that ships it behaves as shadow. Evaluated per-org. Ships dark.",
38287
+ description: "One authority check for every approval ingress (ENG-11207, ADR-0124 Phase 0b): canDecide() runs inside tryDispatchApprovalCore for console, Slack (channel, alerts, Socket Mode, which also carries Telegram) and Direct Chat taps alike. off = not computed. shadow = compute the verdict, including the verb's declared approver boundary (ENG-11337), and log approval_authority_would_reject (ingress, verb, org, reason, boundary) for every tap it would refuse and approval_authority_would_admit (ingress, verb, org, basis, boundary) for every tap it would admit, then decide exactly as today. enforce = ENFORCE the verdict, but only for verbs with a live row in approval_authority_enforced_pairs for the org (ENG-11210, staff-only allowlist); every other verb stays shadow. Reverting a pair or setting the org back to shadow takes effect without a deploy. Evaluated per-org. Ships dark.",
38283
38288
  flagType: "enum",
38284
38289
  allowedValues: ["off", "shadow", "enforce"],
38285
38290
  // Safe/default value is `off` (no computation, no extra reads on the tap path). A flag-DB read
package/dist/mcp/index.js CHANGED
@@ -26554,7 +26554,7 @@ var INTEGRATION_REGISTRY = [
26554
26554
  id: "video-gen",
26555
26555
  name: "Video Generation",
26556
26556
  category: "media",
26557
- description: "AI video generation from a text prompt or an input image. An agent passes a prompt (plus optionally image_url) to generate_video and gets back a short generated video with audio, which it can deliver to a chat channel. Ninjafy manages the model access for you - there is no key to enter. Generation runs direct against xAI Grok Imagine: text-to-video on the base grok-imagine-video model, image-to-video on grok-imagine-video-1.5. It is a PREMIUM, usage-billed capability: gated on a per-org opt-in and a monthly USD budget, and metered per second of generated video.",
26557
+ description: 'AI video generation from a text prompt or an input image. An agent passes a prompt (plus optionally image_url) to generate_video and gets back a short generated video with audio, which it can deliver to a chat channel. Ninjafy manages the model access for you - there is no key to enter. Generation runs direct against xAI Grok Imagine: text-to-video on the base grok-imagine-video model, image-to-video on grok-imagine-video-1.5, or both modes on the lower-cost grok-imagine-video-1.5-lite when the agent asks for model "lite". It is a PREMIUM, usage-billed capability: gated on a per-org opt-in and a monthly USD budget, and metered per second of generated video.',
26558
26558
  // Platform-key model (mirrors Grok Voice / ADR-0031): Ninjafy holds one xAI
26559
26559
  // account key (XAI_API_KEY) and every customer render bills back to it, so
26560
26560
  // auth is `none` - customers never enter a key.
@@ -26589,7 +26589,12 @@ var INTEGRATION_REGISTRY = [
26589
26589
  { event_type: "grok_imagine_video_1_5_720p", unit: "second" },
26590
26590
  // 1080p is image-to-video only (xAI restriction); metered when the
26591
26591
  // agent supplies image_url (ENG-7675).
26592
- { event_type: "grok_imagine_video_1_5_1080p", unit: "second" }
26592
+ { event_type: "grok_imagine_video_1_5_1080p", unit: "second" },
26593
+ // ENG-11426: the lite tier (grok-imagine-video-1.5-lite) runs both modes
26594
+ // and reaches 1080p in either (upscaled from 720p), so all three map.
26595
+ { event_type: "grok_imagine_video_1_5_lite_480p", unit: "second" },
26596
+ { event_type: "grok_imagine_video_1_5_lite_720p", unit: "second" },
26597
+ { event_type: "grok_imagine_video_1_5_lite_1080p", unit: "second" }
26593
26598
  ]
26594
26599
  }
26595
26600
  },
@@ -30497,7 +30502,7 @@ var FLAG_REGISTRY = [
30497
30502
  },
30498
30503
  {
30499
30504
  key: "approval-unified-authority",
30500
- description: "One authority check for every approval ingress (ENG-11207, ADR-0124 Phase 0b): canDecide() runs inside tryDispatchApprovalCore for console, Slack (channel, alerts, Socket Mode, which also carries Telegram) and Direct Chat taps alike. off = not computed. shadow = compute the verdict, including the verb's declared approver boundary (ENG-11337), and log approval_authority_would_reject (ingress, verb, org, reason, boundary) for every tap it would refuse and approval_authority_would_admit (ingress, verb, org, basis, boundary) for every tap it would admit, then decide exactly as today. enforce = reserved for the per-(org, verb) allowlist slice; until that ships it behaves as shadow. Evaluated per-org. Ships dark.",
30505
+ description: "One authority check for every approval ingress (ENG-11207, ADR-0124 Phase 0b): canDecide() runs inside tryDispatchApprovalCore for console, Slack (channel, alerts, Socket Mode, which also carries Telegram) and Direct Chat taps alike. off = not computed. shadow = compute the verdict, including the verb's declared approver boundary (ENG-11337), and log approval_authority_would_reject (ingress, verb, org, reason, boundary) for every tap it would refuse and approval_authority_would_admit (ingress, verb, org, basis, boundary) for every tap it would admit, then decide exactly as today. enforce = ENFORCE the verdict, but only for verbs with a live row in approval_authority_enforced_pairs for the org (ENG-11210, staff-only allowlist); every other verb stays shadow. Reverting a pair or setting the org back to shadow takes effect without a deploy. Evaluated per-org. Ships dark.",
30501
30506
  flagType: "enum",
30502
30507
  allowedValues: ["off", "shadow", "enforce"],
30503
30508
  // Safe/default value is `off` (no computation, no extra reads on the tap path). A flag-DB read
@@ -40703,7 +40703,7 @@ var INTEGRATION_REGISTRY = [
40703
40703
  id: "video-gen",
40704
40704
  name: "Video Generation",
40705
40705
  category: "media",
40706
- description: "AI video generation from a text prompt or an input image. An agent passes a prompt (plus optionally image_url) to generate_video and gets back a short generated video with audio, which it can deliver to a chat channel. Ninjafy manages the model access for you - there is no key to enter. Generation runs direct against xAI Grok Imagine: text-to-video on the base grok-imagine-video model, image-to-video on grok-imagine-video-1.5. It is a PREMIUM, usage-billed capability: gated on a per-org opt-in and a monthly USD budget, and metered per second of generated video.",
40706
+ description: 'AI video generation from a text prompt or an input image. An agent passes a prompt (plus optionally image_url) to generate_video and gets back a short generated video with audio, which it can deliver to a chat channel. Ninjafy manages the model access for you - there is no key to enter. Generation runs direct against xAI Grok Imagine: text-to-video on the base grok-imagine-video model, image-to-video on grok-imagine-video-1.5, or both modes on the lower-cost grok-imagine-video-1.5-lite when the agent asks for model "lite". It is a PREMIUM, usage-billed capability: gated on a per-org opt-in and a monthly USD budget, and metered per second of generated video.',
40707
40707
  // Platform-key model (mirrors Grok Voice / ADR-0031): Ninjafy holds one xAI
40708
40708
  // account key (XAI_API_KEY) and every customer render bills back to it, so
40709
40709
  // auth is `none` - customers never enter a key.
@@ -40738,7 +40738,12 @@ var INTEGRATION_REGISTRY = [
40738
40738
  { event_type: "grok_imagine_video_1_5_720p", unit: "second" },
40739
40739
  // 1080p is image-to-video only (xAI restriction); metered when the
40740
40740
  // agent supplies image_url (ENG-7675).
40741
- { event_type: "grok_imagine_video_1_5_1080p", unit: "second" }
40741
+ { event_type: "grok_imagine_video_1_5_1080p", unit: "second" },
40742
+ // ENG-11426: the lite tier (grok-imagine-video-1.5-lite) runs both modes
40743
+ // and reaches 1080p in either (upscaled from 720p), so all three map.
40744
+ { event_type: "grok_imagine_video_1_5_lite_480p", unit: "second" },
40745
+ { event_type: "grok_imagine_video_1_5_lite_720p", unit: "second" },
40746
+ { event_type: "grok_imagine_video_1_5_lite_1080p", unit: "second" }
40742
40747
  ]
40743
40748
  }
40744
40749
  },
@@ -44443,7 +44448,7 @@ var FLAG_REGISTRY = [
44443
44448
  },
44444
44449
  {
44445
44450
  key: "approval-unified-authority",
44446
- description: "One authority check for every approval ingress (ENG-11207, ADR-0124 Phase 0b): canDecide() runs inside tryDispatchApprovalCore for console, Slack (channel, alerts, Socket Mode, which also carries Telegram) and Direct Chat taps alike. off = not computed. shadow = compute the verdict, including the verb's declared approver boundary (ENG-11337), and log approval_authority_would_reject (ingress, verb, org, reason, boundary) for every tap it would refuse and approval_authority_would_admit (ingress, verb, org, basis, boundary) for every tap it would admit, then decide exactly as today. enforce = reserved for the per-(org, verb) allowlist slice; until that ships it behaves as shadow. Evaluated per-org. Ships dark.",
44451
+ description: "One authority check for every approval ingress (ENG-11207, ADR-0124 Phase 0b): canDecide() runs inside tryDispatchApprovalCore for console, Slack (channel, alerts, Socket Mode, which also carries Telegram) and Direct Chat taps alike. off = not computed. shadow = compute the verdict, including the verb's declared approver boundary (ENG-11337), and log approval_authority_would_reject (ingress, verb, org, reason, boundary) for every tap it would refuse and approval_authority_would_admit (ingress, verb, org, basis, boundary) for every tap it would admit, then decide exactly as today. enforce = ENFORCE the verdict, but only for verbs with a live row in approval_authority_enforced_pairs for the org (ENG-11210, staff-only allowlist); every other verb stays shadow. Reverting a pair or setting the org back to shadow takes effect without a deploy. Evaluated per-org. Ships dark.",
44447
44452
  flagType: "enum",
44448
44453
  allowedValues: ["off", "shadow", "enforce"],
44449
44454
  // Safe/default value is `off` (no computation, no extra reads on the tap path). A flag-DB read
@@ -34895,7 +34895,7 @@ var INTEGRATION_REGISTRY = [
34895
34895
  id: "video-gen",
34896
34896
  name: "Video Generation",
34897
34897
  category: "media",
34898
- description: "AI video generation from a text prompt or an input image. An agent passes a prompt (plus optionally image_url) to generate_video and gets back a short generated video with audio, which it can deliver to a chat channel. Ninjafy manages the model access for you - there is no key to enter. Generation runs direct against xAI Grok Imagine: text-to-video on the base grok-imagine-video model, image-to-video on grok-imagine-video-1.5. It is a PREMIUM, usage-billed capability: gated on a per-org opt-in and a monthly USD budget, and metered per second of generated video.",
34898
+ description: 'AI video generation from a text prompt or an input image. An agent passes a prompt (plus optionally image_url) to generate_video and gets back a short generated video with audio, which it can deliver to a chat channel. Ninjafy manages the model access for you - there is no key to enter. Generation runs direct against xAI Grok Imagine: text-to-video on the base grok-imagine-video model, image-to-video on grok-imagine-video-1.5, or both modes on the lower-cost grok-imagine-video-1.5-lite when the agent asks for model "lite". It is a PREMIUM, usage-billed capability: gated on a per-org opt-in and a monthly USD budget, and metered per second of generated video.',
34899
34899
  // Platform-key model (mirrors Grok Voice / ADR-0031): Ninjafy holds one xAI
34900
34900
  // account key (XAI_API_KEY) and every customer render bills back to it, so
34901
34901
  // auth is `none` - customers never enter a key.
@@ -34930,7 +34930,12 @@ var INTEGRATION_REGISTRY = [
34930
34930
  { event_type: "grok_imagine_video_1_5_720p", unit: "second" },
34931
34931
  // 1080p is image-to-video only (xAI restriction); metered when the
34932
34932
  // agent supplies image_url (ENG-7675).
34933
- { event_type: "grok_imagine_video_1_5_1080p", unit: "second" }
34933
+ { event_type: "grok_imagine_video_1_5_1080p", unit: "second" },
34934
+ // ENG-11426: the lite tier (grok-imagine-video-1.5-lite) runs both modes
34935
+ // and reaches 1080p in either (upscaled from 720p), so all three map.
34936
+ { event_type: "grok_imagine_video_1_5_lite_480p", unit: "second" },
34937
+ { event_type: "grok_imagine_video_1_5_lite_720p", unit: "second" },
34938
+ { event_type: "grok_imagine_video_1_5_lite_1080p", unit: "second" }
34934
34939
  ]
34935
34940
  }
34936
34941
  },
@@ -39051,7 +39056,7 @@ var FLAG_REGISTRY = [
39051
39056
  },
39052
39057
  {
39053
39058
  key: "approval-unified-authority",
39054
- description: "One authority check for every approval ingress (ENG-11207, ADR-0124 Phase 0b): canDecide() runs inside tryDispatchApprovalCore for console, Slack (channel, alerts, Socket Mode, which also carries Telegram) and Direct Chat taps alike. off = not computed. shadow = compute the verdict, including the verb's declared approver boundary (ENG-11337), and log approval_authority_would_reject (ingress, verb, org, reason, boundary) for every tap it would refuse and approval_authority_would_admit (ingress, verb, org, basis, boundary) for every tap it would admit, then decide exactly as today. enforce = reserved for the per-(org, verb) allowlist slice; until that ships it behaves as shadow. Evaluated per-org. Ships dark.",
39059
+ description: "One authority check for every approval ingress (ENG-11207, ADR-0124 Phase 0b): canDecide() runs inside tryDispatchApprovalCore for console, Slack (channel, alerts, Socket Mode, which also carries Telegram) and Direct Chat taps alike. off = not computed. shadow = compute the verdict, including the verb's declared approver boundary (ENG-11337), and log approval_authority_would_reject (ingress, verb, org, reason, boundary) for every tap it would refuse and approval_authority_would_admit (ingress, verb, org, basis, boundary) for every tap it would admit, then decide exactly as today. enforce = ENFORCE the verdict, but only for verbs with a live row in approval_authority_enforced_pairs for the org (ENG-11210, staff-only allowlist); every other verb stays shadow. Reverting a pair or setting the org back to shadow takes effect without a deploy. Evaluated per-org. Ships dark.",
39055
39060
  flagType: "enum",
39056
39061
  allowedValues: ["off", "shadow", "enforce"],
39057
39062
  // Safe/default value is `off` (no computation, no extra reads on the tap path). A flag-DB read
@@ -35001,7 +35001,7 @@ var INTEGRATION_REGISTRY = [
35001
35001
  id: "video-gen",
35002
35002
  name: "Video Generation",
35003
35003
  category: "media",
35004
- description: "AI video generation from a text prompt or an input image. An agent passes a prompt (plus optionally image_url) to generate_video and gets back a short generated video with audio, which it can deliver to a chat channel. Ninjafy manages the model access for you - there is no key to enter. Generation runs direct against xAI Grok Imagine: text-to-video on the base grok-imagine-video model, image-to-video on grok-imagine-video-1.5. It is a PREMIUM, usage-billed capability: gated on a per-org opt-in and a monthly USD budget, and metered per second of generated video.",
35004
+ description: 'AI video generation from a text prompt or an input image. An agent passes a prompt (plus optionally image_url) to generate_video and gets back a short generated video with audio, which it can deliver to a chat channel. Ninjafy manages the model access for you - there is no key to enter. Generation runs direct against xAI Grok Imagine: text-to-video on the base grok-imagine-video model, image-to-video on grok-imagine-video-1.5, or both modes on the lower-cost grok-imagine-video-1.5-lite when the agent asks for model "lite". It is a PREMIUM, usage-billed capability: gated on a per-org opt-in and a monthly USD budget, and metered per second of generated video.',
35005
35005
  // Platform-key model (mirrors Grok Voice / ADR-0031): Ninjafy holds one xAI
35006
35006
  // account key (XAI_API_KEY) and every customer render bills back to it, so
35007
35007
  // auth is `none` - customers never enter a key.
@@ -35036,7 +35036,12 @@ var INTEGRATION_REGISTRY = [
35036
35036
  { event_type: "grok_imagine_video_1_5_720p", unit: "second" },
35037
35037
  // 1080p is image-to-video only (xAI restriction); metered when the
35038
35038
  // agent supplies image_url (ENG-7675).
35039
- { event_type: "grok_imagine_video_1_5_1080p", unit: "second" }
35039
+ { event_type: "grok_imagine_video_1_5_1080p", unit: "second" },
35040
+ // ENG-11426: the lite tier (grok-imagine-video-1.5-lite) runs both modes
35041
+ // and reaches 1080p in either (upscaled from 720p), so all three map.
35042
+ { event_type: "grok_imagine_video_1_5_lite_480p", unit: "second" },
35043
+ { event_type: "grok_imagine_video_1_5_lite_720p", unit: "second" },
35044
+ { event_type: "grok_imagine_video_1_5_lite_1080p", unit: "second" }
35040
35045
  ]
35041
35046
  }
35042
35047
  },
@@ -39157,7 +39162,7 @@ var FLAG_REGISTRY = [
39157
39162
  },
39158
39163
  {
39159
39164
  key: "approval-unified-authority",
39160
- description: "One authority check for every approval ingress (ENG-11207, ADR-0124 Phase 0b): canDecide() runs inside tryDispatchApprovalCore for console, Slack (channel, alerts, Socket Mode, which also carries Telegram) and Direct Chat taps alike. off = not computed. shadow = compute the verdict, including the verb's declared approver boundary (ENG-11337), and log approval_authority_would_reject (ingress, verb, org, reason, boundary) for every tap it would refuse and approval_authority_would_admit (ingress, verb, org, basis, boundary) for every tap it would admit, then decide exactly as today. enforce = reserved for the per-(org, verb) allowlist slice; until that ships it behaves as shadow. Evaluated per-org. Ships dark.",
39165
+ description: "One authority check for every approval ingress (ENG-11207, ADR-0124 Phase 0b): canDecide() runs inside tryDispatchApprovalCore for console, Slack (channel, alerts, Socket Mode, which also carries Telegram) and Direct Chat taps alike. off = not computed. shadow = compute the verdict, including the verb's declared approver boundary (ENG-11337), and log approval_authority_would_reject (ingress, verb, org, reason, boundary) for every tap it would refuse and approval_authority_would_admit (ingress, verb, org, basis, boundary) for every tap it would admit, then decide exactly as today. enforce = ENFORCE the verdict, but only for verbs with a live row in approval_authority_enforced_pairs for the org (ENG-11210, staff-only allowlist); every other verb stays shadow. Reverting a pair or setting the org back to shadow takes effect without a deploy. Evaluated per-org. Ships dark.",
39161
39166
  flagType: "enum",
39162
39167
  allowedValues: ["off", "shadow", "enforce"],
39163
39168
  // Safe/default value is `off` (no computation, no extra reads on the tap path). A flag-DB read
@@ -68,8 +68,8 @@ import {
68
68
  writeDirectChatSessionState,
69
69
  writeEgressAllowlist,
70
70
  writePersistentClaudeWrapper
71
- } from "./chunk-UUCJYW6D.js";
72
- import "./chunk-FWWOW7YA.js";
71
+ } from "./chunk-4PTXGOVO.js";
72
+ import "./chunk-TZM6YVE7.js";
73
73
  import "./chunk-OCMJ5E6J.js";
74
74
  import "./chunk-XWVM4KPK.js";
75
75
  import "./chunk-EL5MWGGH.js";
@@ -145,4 +145,4 @@ export {
145
145
  writeEgressAllowlist,
146
146
  writePersistentClaudeWrapper
147
147
  };
148
- //# sourceMappingURL=persistent-session-SE2HUCIQ.js.map
148
+ //# sourceMappingURL=persistent-session-HSYN3SQ2.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-UUCJYW6D.js";
4
- import "./chunk-FWWOW7YA.js";
3
+ } from "./chunk-4PTXGOVO.js";
4
+ import "./chunk-TZM6YVE7.js";
5
5
  import "./chunk-OCMJ5E6J.js";
6
6
  import "./chunk-XWVM4KPK.js";
7
7
  import "./chunk-EL5MWGGH.js";
@@ -802,4 +802,4 @@ export {
802
802
  readAndResetSlackReplyBindingClassifications,
803
803
  readAndResetSlackReplyTargetClassifications
804
804
  };
805
- //# sourceMappingURL=responsiveness-probe-C2KROIRU.js.map
805
+ //# sourceMappingURL=responsiveness-probe-MO4L5O6F.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-FWWOW7YA.js";
3
+ } from "./chunk-TZM6YVE7.js";
4
4
  import "./chunk-DGUM43GV.js";
5
5
 
6
6
  // src/lib/session-auth-dead.ts
@@ -204,4 +204,4 @@ export {
204
204
  decideSessionAuthState,
205
205
  probeSessionAuth
206
206
  };
207
- //# sourceMappingURL=session-auth-dead-CXGA6GYP.js.map
207
+ //# sourceMappingURL=session-auth-dead-ZKI4XCSI.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.1106",
3
+ "version": "0.28.1108",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {