@integrity-labs/agt-cli 0.28.902 → 0.28.903

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
  parseEnvIntegrations,
17
17
  shellQuote,
18
18
  summarizeUnanswerablePane
19
- } from "./chunk-BSFQVMNO.js";
19
+ } from "./chunk-2LV6SJ7W.js";
20
20
  import {
21
21
  BIND_FAILURE_QUARANTINE_THRESHOLD,
22
22
  INTEGRATIONS_SECTION_END,
@@ -76,7 +76,7 @@ import {
76
76
  sessionTranscriptDir,
77
77
  worseConnectivityOutcome,
78
78
  wrapScheduledTaskPrompt
79
- } from "./chunk-5MATVCQ3.js";
79
+ } from "./chunk-Q2GQY64J.js";
80
80
  import {
81
81
  parsePsRows
82
82
  } from "./chunk-XWVM4KPK.js";
@@ -6841,7 +6841,7 @@ function exchangeFailureKind(err) {
6841
6841
  }
6842
6842
 
6843
6843
  // src/lib/api-client.ts
6844
- var agtCliVersion = true ? "0.28.902" : "dev";
6844
+ var agtCliVersion = true ? "0.28.903" : "dev";
6845
6845
  var lastConfigHash = null;
6846
6846
  function setConfigHash(hash) {
6847
6847
  lastConfigHash = hash && hash.length > 0 ? hash : null;
@@ -11451,4 +11451,4 @@ export {
11451
11451
  managerInstallSystemUnitCommand,
11452
11452
  managerUninstallSystemUnitCommand
11453
11453
  };
11454
- //# sourceMappingURL=chunk-JULXOS6K.js.map
11454
+ //# sourceMappingURL=chunk-WL2PIPOM.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-4N3JK3P6.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-TPADZX4C.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-RSQD6NA4.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-UZPPOEIB.js.map
@@ -63,7 +63,7 @@ import {
63
63
  safeWriteJsonAtomic,
64
64
  setConfigHash,
65
65
  tripClass
66
- } from "../chunk-JULXOS6K.js";
66
+ } from "../chunk-WL2PIPOM.js";
67
67
  import {
68
68
  getProjectDir as getProjectDir2,
69
69
  getReadyTasks,
@@ -136,7 +136,7 @@ import {
136
136
  takeZombieDetection,
137
137
  toOpencodeModel,
138
138
  writeEgressAllowlist
139
- } from "../chunk-BSFQVMNO.js";
139
+ } from "../chunk-2LV6SJ7W.js";
140
140
  import {
141
141
  ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
142
142
  AnchorSessionClient,
@@ -231,7 +231,7 @@ import {
231
231
  subagentActivityAgeSeconds,
232
232
  sumTranscriptUsageInWindow,
233
233
  transcriptActivityAgeSeconds
234
- } from "../chunk-5MATVCQ3.js";
234
+ } from "../chunk-Q2GQY64J.js";
235
235
  import {
236
236
  reapOrphanChannelMcps
237
237
  } from "../chunk-XWVM4KPK.js";
@@ -13053,7 +13053,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
13053
13053
  var dayRolloverInboundHold = /* @__PURE__ */ new Map();
13054
13054
  var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
13055
13055
  async function channelInboundActivityAgeSecondsFor(codeName) {
13056
- const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-M67GFG47.js");
13056
+ const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-P2L74AKB.js");
13057
13057
  const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
13058
13058
  if (newest === null) return null;
13059
13059
  return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
@@ -13721,7 +13721,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
13721
13721
  var lastVersionCheckAt = 0;
13722
13722
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
13723
13723
  var lastResponsivenessProbeAt = 0;
13724
- var agtCliVersion = true ? "0.28.902" : "dev";
13724
+ var agtCliVersion = true ? "0.28.903" : "dev";
13725
13725
  function resolveBrewPath(execFileSync2) {
13726
13726
  try {
13727
13727
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -15311,7 +15311,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
15311
15311
  if (codeNames.length === 0) return;
15312
15312
  void (async () => {
15313
15313
  try {
15314
- const { collectDiagnostics } = await import("../persistent-session-4N3JK3P6.js");
15314
+ const { collectDiagnostics } = await import("../persistent-session-TPADZX4C.js");
15315
15315
  await api.post("/host/heartbeat", {
15316
15316
  host_id: hostId,
15317
15317
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -15453,7 +15453,7 @@ async function pollCycleInner() {
15453
15453
  }
15454
15454
  try {
15455
15455
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
15456
- const { collectDiagnostics } = await import("../persistent-session-4N3JK3P6.js");
15456
+ const { collectDiagnostics } = await import("../persistent-session-TPADZX4C.js");
15457
15457
  const diagCodeNames = [...agentState.persistentSessionAgents];
15458
15458
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor) : void 0;
15459
15459
  let tailscaleHostname;
@@ -15622,7 +15622,7 @@ async function pollCycleInner() {
15622
15622
  collectPanelessActivityProbes,
15623
15623
  getResponsivenessIntervalMs,
15624
15624
  occupancyQualificationClassifications
15625
- } = await import("../responsiveness-probe-M67GFG47.js");
15625
+ } = await import("../responsiveness-probe-P2L74AKB.js");
15626
15626
  const probeIntervalMs = getResponsivenessIntervalMs();
15627
15627
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
15628
15628
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -15739,7 +15739,7 @@ async function pollCycleInner() {
15739
15739
  collectResponsivenessProbes,
15740
15740
  livePendingInboundOldestAgeSeconds,
15741
15741
  parkPendingInbound
15742
- } = await import("../responsiveness-probe-M67GFG47.js");
15742
+ } = await import("../responsiveness-probe-P2L74AKB.js");
15743
15743
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
15744
15744
  const wedgeNow = /* @__PURE__ */ new Date();
15745
15745
  const liveAgents = agentState.persistentSessionAgents;
@@ -15895,7 +15895,7 @@ async function pollCycleInner() {
15895
15895
  }
15896
15896
  try {
15897
15897
  const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-JA437JIB.js");
15898
- const { probeSessionAuth } = await import("../session-auth-dead-Z7I2KPES.js");
15898
+ const { probeSessionAuth } = await import("../session-auth-dead-YKD22CHZ.js");
15899
15899
  const observations = [];
15900
15900
  const pendingCacheCommits = [];
15901
15901
  const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
@@ -20153,7 +20153,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20153
20153
  try {
20154
20154
  const freshId = rotateSessionForWedge(codeName);
20155
20155
  consecutiveWedgeCycles.delete(codeName);
20156
- const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-M67GFG47.js");
20156
+ const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-P2L74AKB.js");
20157
20157
  const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
20158
20158
  const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
20159
20159
  const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
@@ -20196,7 +20196,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
20196
20196
  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}`));
20197
20197
  void (async () => {
20198
20198
  try {
20199
- const { collectDiagnostics } = await import("../persistent-session-4N3JK3P6.js");
20199
+ const { collectDiagnostics } = await import("../persistent-session-TPADZX4C.js");
20200
20200
  await api.post("/host/heartbeat", {
20201
20201
  host_id: hostId,
20202
20202
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20247,7 +20247,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
20247
20247
  }
20248
20248
  try {
20249
20249
  const hostId = await getHostId();
20250
- const { collectDiagnostics } = await import("../persistent-session-4N3JK3P6.js");
20250
+ const { collectDiagnostics } = await import("../persistent-session-TPADZX4C.js");
20251
20251
  await api.post("/host/heartbeat", {
20252
20252
  host_id: hostId,
20253
20253
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor)
@@ -20889,7 +20889,7 @@ async function processClaudePairSessions(agents) {
20889
20889
  killPairSession,
20890
20890
  pairTmuxSession,
20891
20891
  finalizeClaudePairOnboarding
20892
- } = await import("../claude-pair-runtime-RSQD6NA4.js");
20892
+ } = await import("../claude-pair-runtime-UZPPOEIB.js");
20893
20893
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
20894
20894
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
20895
20895
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -33220,18 +33220,18 @@ var INTEGRATION_REGISTRY = [
33220
33220
  // and migrations). "Deck Browser" makes the computer-use purpose obvious.
33221
33221
  name: "Deck Browser",
33222
33222
  category: "workspace-productivity",
33223
- description: "Computer-use agents that operate any software through its real interface (no API required) and return schema-validated results. A higher-level alternative to Anchor Browser: Deck owns the auth lifecycle (encrypted credential vault, login, MFA, CAPTCHA) and provisions isolated desktop sessions on demand. Augmented Team manages Deck access for you and gives each agent its own isolated Deck workspace, so there is no credential to enter.",
33223
+ description: "Computer-use agents that operate any software through its real interface (no API required) and return schema-validated results. A higher-level alternative to Anchor Browser: Deck owns the auth lifecycle (encrypted credential vault, login, MFA, CAPTCHA) and provisions isolated desktop sessions on demand. Ninjafy manages Deck access for you and gives each agent its own isolated Deck workspace, so there is no credential to enter.",
33224
33224
  // Deck is REST-only (base https://api.deck.co/v2, Bearer `sk_live_` account
33225
33225
  // key) — it ships NO MCP server, so unlike anchor-browser there is no
33226
33226
  // `remoteMcp`/`nativeMcp` drop-in; the agent-facing tools are brokered
33227
33227
  // server-side (deck-broker.ts). Deck is the first PREMIUM integration:
33228
- // Augmented owns ONE Deck account that every customer agent's runs bill back
33228
+ // Ninjafy owns ONE Deck account that every customer agent's runs bill back
33229
33229
  // to (per-org charging is tracked in ENG-6920, not yet live), so the account
33230
33230
  // key is a single platform-held secret (`DECK_ACCOUNT_KEY`), NOT a per-agent
33231
33231
  // credential. Auth type is therefore `none` — customers never enter a key.
33232
33232
  // Per-agent isolation is modelled on Deck's first-class resources: that one
33233
33233
  // key provisions one Deck agent (`agt_`) + vault credential (`cred_`) per
33234
- // Augmented agent via POST /:id/provision-deck; the ids land in
33234
+ // Ninjafy agent via POST /:id/provision-deck; the ids land in
33235
33235
  // `agent_integrations.config` (deck_agent_id / deck_credential_id), so
33236
33236
  // revocation + audit happen at the per-agent Deck-resource level without a
33237
33237
  // distinct API key per agent (Deck exposes no key-minting admin API).
@@ -33244,7 +33244,7 @@ var INTEGRATION_REGISTRY = [
33244
33244
  docs_url: "https://docs.deck.co/",
33245
33245
  beta: true,
33246
33246
  // ENG-6920: Deck is the first PREMIUM integration. Unlike the customer-auth
33247
- // integrations, every Deck run bills back to Augmented's single account
33247
+ // integrations, every Deck run bills back to Ninjafy's single account
33248
33248
  // key, and Deck is usage-priced, so it is gated on a per-org opt-in and
33249
33249
  // metered. ENG-7032: `meters` declares the billable operations; the priced
33250
33250
  // rate card (integration_rate_cards) holds the amounts. Each event_type must
@@ -33267,11 +33267,11 @@ var INTEGRATION_REGISTRY = [
33267
33267
  id: "browserbase",
33268
33268
  name: "Browserbase",
33269
33269
  category: "workspace-productivity",
33270
- description: "A hosted browser your agents drive to operate real websites, behind residential proxies and staying signed in via a per-agent encrypted login profile. An operator logs an agent into a site once through a secure live view; every later session reuses that authenticated profile - no credential to enter and the agent never handles the login. A lower-level, self-driven alternative to Deck Browser: Augmented Team manages the Browserbase account for you and gives each agent its own isolated login profile.",
33270
+ description: "A hosted browser your agents drive to operate real websites, behind residential proxies and staying signed in via a per-agent encrypted login profile. An operator logs an agent into a site once through a secure live view; every later session reuses that authenticated profile - no credential to enter and the agent never handles the login. A lower-level, self-driven alternative to Deck Browser: Ninjafy manages the Browserbase account for you and gives each agent its own isolated login profile.",
33271
33271
  // Browserbase is REST-only (base https://api.browserbase.com/v1, `X-BB-API-Key`
33272
33272
  // header - NOT Bearer) and ships NO MCP server, so the agent-facing tools are
33273
33273
  // brokered server-side (browserbase-broker.ts). It is a PREMIUM integration on
33274
- // the Deck model (ENG-7947): Augmented owns ONE Browserbase account that every
33274
+ // the Deck model (ENG-7947): Ninjafy owns ONE Browserbase account that every
33275
33275
  // customer agent's sessions bill back to, so the account key is a single
33276
33276
  // platform-held secret (`BROWSERBASE_ACCOUNT_KEY`), NOT a per-agent credential.
33277
33277
  // Auth type is `none` - customers never enter a key. Per-agent isolation is a
@@ -33290,7 +33290,7 @@ var INTEGRATION_REGISTRY = [
33290
33290
  ],
33291
33291
  docs_url: "https://docs.browserbase.com/",
33292
33292
  beta: true,
33293
- // ENG-7947: PREMIUM, usage-priced. Every session bills back to Augmented's
33293
+ // ENG-7947: PREMIUM, usage-priced. Every session bills back to Ninjafy's
33294
33294
  // single account key as proxy data + session time, so it is gated on a per-org
33295
33295
  // opt-in and metered. `meters` declares the billable operations; the priced
33296
33296
  // rate card (integration_rate_cards) holds the amounts. Each event_type must
@@ -33328,11 +33328,11 @@ var INTEGRATION_REGISTRY = [
33328
33328
  id: "elevenlabs",
33329
33329
  name: "ElevenLabs",
33330
33330
  category: "media",
33331
- description: "Speech-to-text for inbound voice notes. When a teammate sends an agent a voice message (Slack, Telegram, etc.), the agent uploads the audio and gets back an accurate transcript via ElevenLabs Scribe, so a voice note is no longer a black box. Augmented Team manages ElevenLabs access for you - there is no key to enter.",
33331
+ description: "Speech-to-text for inbound voice notes. When a teammate sends an agent a voice message (Slack, Telegram, etc.), the agent uploads the audio and gets back an accurate transcript via ElevenLabs Scribe, so a voice note is no longer a black box. Ninjafy manages ElevenLabs access for you - there is no key to enter.",
33332
33332
  // ElevenLabs is REST-only for our use (POST /v1/speech-to-text, `xi-api-key`
33333
33333
  // header, NOT Bearer) — it ships no MCP server, so the agent-facing tools are
33334
33334
  // brokered server-side (scribe-broker.ts). It is a PREMIUM integration on the
33335
- // Deck model (ADR-0031, epic ENG-6920): Augmented owns ONE ElevenLabs account
33335
+ // Deck model (ADR-0031, epic ENG-6920): Ninjafy owns ONE ElevenLabs account
33336
33336
  // that every customer agent's transcriptions bill back to, so the account key
33337
33337
  // is a single platform-held secret (`ELEVENLABS_ACCOUNT_KEY`), NOT a per-agent
33338
33338
  // credential. Auth type is therefore `none` — customers never enter a key.
@@ -33381,7 +33381,7 @@ var INTEGRATION_REGISTRY = [
33381
33381
  tts: { meterEventType: "tts" }
33382
33382
  },
33383
33383
  // ENG-7005 / ENG-7048: premium (billable). Both surfaces bill back to
33384
- // Augmented's single account key and are usage-priced, so the integration is
33384
+ // Ninjafy's single account key and are usage-priced, so the integration is
33385
33385
  // gated on a per-org opt-in and metered. The two surfaces share the one
33386
33386
  // `elevenlabs` definition (and so the one per-org monthly budget). Pricing
33387
33387
  // amounts live in integration_rate_cards; this only declares the model.
@@ -33406,9 +33406,9 @@ var INTEGRATION_REGISTRY = [
33406
33406
  id: "grok-voice",
33407
33407
  name: "Grok Voice",
33408
33408
  category: "media",
33409
- description: "Real-time two-way voice for your agent, powered by xAI Grok. Speak to the agent and hear it reply. Augmented Team manages Grok Voice access for you - there is no key to enter.",
33409
+ description: "Real-time two-way voice for your agent, powered by xAI Grok. Speak to the agent and hear it reply. Ninjafy manages Grok Voice access for you - there is no key to enter.",
33410
33410
  // Grok Voice is a PREMIUM integration on the platform-key model (mirrors
33411
- // ElevenLabs / ADR-0031): Augmented holds one xAI account key and every
33411
+ // ElevenLabs / ADR-0031): Ninjafy holds one xAI account key and every
33412
33412
  // customer agent's voice minutes bill back to it, so auth_type is `none` -
33413
33413
  // customers never enter a key. Enabling this integration (resolved via the
33414
33414
  // agent/team/org scope chain) is what unlocks voice in Direct Chat; it
@@ -33431,7 +33431,7 @@ var INTEGRATION_REGISTRY = [
33431
33431
  realtime: { meterEventType: "voice_session", listVoices: true },
33432
33432
  stt: { meterEventType: "transcription" }
33433
33433
  },
33434
- // Premium (billable): voice minutes bill back to Augmented's xAI account key,
33434
+ // Premium (billable): voice minutes bill back to Ninjafy's xAI account key,
33435
33435
  // usage-priced and gated on a per-org opt-in. Pricing amounts live in
33436
33436
  // integration_rate_cards; this only declares the model + meter.
33437
33437
  premium: {
@@ -33482,8 +33482,8 @@ var INTEGRATION_REGISTRY = [
33482
33482
  id: "image-gen",
33483
33483
  name: "Image Generation",
33484
33484
  category: "media",
33485
- description: "AI image generation from a text prompt. An agent passes a prompt to generate_image and gets back a generated raster image, which it can deliver to a chat channel or embed on an Augmented Live page (ENG-7535). Augmented Team manages the model access for you - there is no key to enter. Generation runs through the Vercel AI Gateway (OpenAI gpt-image-2 today). It is a PREMIUM, usage-billed capability: gated on a per-org opt-in and a monthly USD budget, and metered per generated image.",
33486
- // No vendor key to enter: Augmented owns the shared Vercel AI Gateway virtual
33485
+ description: "AI image generation from a text prompt. An agent passes a prompt to generate_image and gets back a generated raster image, which it can deliver to a chat channel or embed on an Augmented Live page (ENG-7535). Ninjafy manages the model access for you - there is no key to enter. Generation runs through the Vercel AI Gateway (OpenAI gpt-image-2 today). It is a PREMIUM, usage-billed capability: gated on a per-org opt-in and a monthly USD budget, and metered per generated image.",
33486
+ // No vendor key to enter: Ninjafy owns the shared Vercel AI Gateway virtual
33487
33487
  // key (AI_GATEWAY_API_KEY) that fronts the image providers, so auth is `none`
33488
33488
  // (customers never enter a key), same as ElevenLabs.
33489
33489
  supported_auth_types: ["none"],
@@ -33492,7 +33492,7 @@ var INTEGRATION_REGISTRY = [
33492
33492
  ],
33493
33493
  docs_url: "https://platform.openai.com/docs/guides/images",
33494
33494
  beta: true,
33495
- // ENG-7472: premium (billable). Image gen bills back to Augmented's shared
33495
+ // ENG-7472: premium (billable). Image gen bills back to Ninjafy's shared
33496
33496
  // Vercel AI Gateway key and is usage-priced per generated image, so it is gated
33497
33497
  // on a per-org opt-in (isOrgEntitledToPremium) + a per-org monthly USD budget,
33498
33498
  // and metered on integration_usage_events. This budget is PER-ORG, distinct
@@ -33516,8 +33516,8 @@ var INTEGRATION_REGISTRY = [
33516
33516
  id: "video-gen",
33517
33517
  name: "Video Generation",
33518
33518
  category: "media",
33519
- 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. Augmented Team 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.",
33520
- // Platform-key model (mirrors Grok Voice / ADR-0031): Augmented holds one xAI
33519
+ 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.",
33520
+ // Platform-key model (mirrors Grok Voice / ADR-0031): Ninjafy holds one xAI
33521
33521
  // account key (XAI_API_KEY) and every customer render bills back to it, so
33522
33522
  // auth is `none` - customers never enter a key.
33523
33523
  supported_auth_types: ["none"],
@@ -33526,7 +33526,7 @@ var INTEGRATION_REGISTRY = [
33526
33526
  ],
33527
33527
  docs_url: "https://docs.x.ai/developers/model-capabilities/video/generation",
33528
33528
  beta: true,
33529
- // Premium (billable): renders bill back to Augmented's xAI account key,
33529
+ // Premium (billable): renders bill back to Ninjafy's xAI account key,
33530
33530
  // usage-priced per second of output video, so it is gated on a per-org opt-in
33531
33531
  // (isOrgEntitledToPremium) + a per-org monthly USD budget, and metered on
33532
33532
  // integration_usage_events. Pricing lives in integration_rate_cards; this only
@@ -33604,7 +33604,7 @@ var INTEGRATION_REGISTRY = [
33604
33604
  // under the MCP.
33605
33605
  //
33606
33606
  // Bring-your-own-key: generations bill to the customer's own Higgsfield
33607
- // account, so an install is never metered by Augmented Team.
33607
+ // account, so an install is never metered by Ninjafy.
33608
33608
  //
33609
33609
  // NOTE: this entry carries no `remoteMcp`, so it contributes nothing to
33610
33610
  // `registryRemoteMcpKeys` and cannot prune the `higgsfield` key an older
@@ -34044,12 +34044,12 @@ var INTEGRATION_REGISTRY = [
34044
34044
  beta: true,
34045
34045
  capabilities: [
34046
34046
  { id: "augmented-support:read-diagnostics", name: "Read Diagnostics", description: "Read your own org's agents, hosts, integrations, alerts, flags, and audit log (projection only - never credentials or transcripts).", access: "read" },
34047
- { id: "augmented-support:file-requests", name: "File Requests", description: "File bug / feature / integration requests to Augmented Team support.", access: "write" },
34047
+ { id: "augmented-support:file-requests", name: "File Requests", description: "File bug / feature / integration requests to Ninjafy support.", access: "write" },
34048
34048
  { id: "augmented-support:propose-writes", name: "Propose Self-Remediation", description: "Propose creating an agent in your own org; executed only after a human approves a server-rendered diff.", access: "write" }
34049
34049
  ]
34050
34050
  },
34051
34051
  {
34052
- // ENG-8332: the Augmented Team HELP knowledge base, split out of
34052
+ // ENG-8332: the Ninjafy HELP knowledge base, split out of
34053
34053
  // `augmented-support` so an agent can be given the docs WITHOUT also being
34054
34054
  // given a ticket-filing button, an agent-proposal button, and org-wide read
34055
34055
  // of agents, hosts, integrations, alerts, flags and the audit log. That
@@ -34077,14 +34077,14 @@ var INTEGRATION_REGISTRY = [
34077
34077
  // ENG-8804: Granted centrally (ENG-8542 auto-grant), never connected by a human.
34078
34078
  platform_internal: true,
34079
34079
  category: "knowledge",
34080
- description: "The Augmented Team help knowledge base: search and read the shared, published product documentation (how-tos, common fixes, FAQs). Identical for every organization and org-neutral by design - it grants no view of your org's own state, and cannot file tickets or propose changes. Distinct from your organization's own knowledge store.",
34080
+ description: "The Ninjafy help knowledge base: search and read the shared, published product documentation (how-tos, common fixes, FAQs). Identical for every organization and org-neutral by design - it grants no view of your org's own state, and cannot file tickets or propose changes. Distinct from your organization's own knowledge store.",
34081
34081
  supported_auth_types: ["none"],
34082
34082
  beta: true,
34083
34083
  capabilities: [
34084
34084
  {
34085
34085
  id: "augmented-help-kb:read",
34086
34086
  name: "Read Help Docs",
34087
- description: "Search and read published Augmented Team help articles (org-neutral product documentation). Read-only; no ticket filing, no agent proposals, no org-state reads.",
34087
+ description: "Search and read published Ninjafy help articles (org-neutral product documentation). Read-only; no ticket filing, no agent proposals, no org-state reads.",
34088
34088
  access: "read"
34089
34089
  }
34090
34090
  ]
@@ -34097,7 +34097,7 @@ var INTEGRATION_REGISTRY = [
34097
34097
  // ENG-7217: Firecrawl migrates from a customer-API-key stdio MCP
34098
34098
  // (`npx firecrawl-mcp`, FIRECRAWL_API_KEY) to a PREMIUM, platform-managed
34099
34099
  // integration on the Deck / ElevenLabs model (ADR-0031, epic ENG-6920):
34100
- // Augmented holds ONE Firecrawl account key (`FIRECRAWL_ACCOUNT_KEY`) that
34100
+ // Ninjafy holds ONE Firecrawl account key (`FIRECRAWL_ACCOUNT_KEY`) that
34101
34101
  // every customer agent's web-data calls bill back to. The agent-facing tools
34102
34102
  // are brokered server-side (firecrawl-broker.ts, reusing the official
34103
34103
  // @mendable/firecrawl-js SDK) rather than via the stdio MCP, so managed usage
@@ -34256,9 +34256,9 @@ var INTEGRATION_REGISTRY = [
34256
34256
  id: "ayrshare",
34257
34257
  name: "Ayrshare",
34258
34258
  category: "social",
34259
- description: "Read and report on your social media - post history, analytics, and connected-account status - across LinkedIn, Instagram, Facebook, TikTok, YouTube, Pinterest, and more. Augmented Team manages Ayrshare access for you - there is no key to enter; connect your social accounts once. Publishing on your behalf ships in a later release.",
34259
+ description: "Read and report on your social media - post history, analytics, and connected-account status - across LinkedIn, Instagram, Facebook, TikTok, YouTube, Pinterest, and more. Ninjafy manages Ayrshare access for you - there is no key to enter; connect your social accounts once. Publishing on your behalf ships in a later release.",
34260
34260
  // ENG-7722 / ADR-0046: Ayrshare is a PREMIUM, platform-managed integration on
34261
- // the Deck / Firecrawl model (ADR-0031, epic ENG-6920): Augmented owns ONE
34261
+ // the Deck / Firecrawl model (ADR-0031, epic ENG-6920): Ninjafy owns ONE
34262
34262
  // Business Plan account (`AYRSHARE_API_KEY`) and every customer agent's profile
34263
34263
  // + posts bill back to it, so the key is a single platform-held secret, NOT a
34264
34264
  // per-agent credential. Auth type is therefore `none` - customers never enter a
@@ -34293,7 +34293,7 @@ var INTEGRATION_REGISTRY = [
34293
34293
  },
34294
34294
  {
34295
34295
  // ENG-7439: X Search is a PREMIUM, platform-managed integration on the
34296
- // Deck / Firecrawl / ElevenLabs model (ADR-0031, epic ENG-6920): Augmented
34296
+ // Deck / Firecrawl / ElevenLabs model (ADR-0031, epic ENG-6920): Ninjafy
34297
34297
  // holds ONE X (Twitter) developer app whose OAuth2 app-only bearer
34298
34298
  // (X_APP_BEARER_TOKEN) every customer agent's search bills back to, so the
34299
34299
  // key is a single platform-held secret, NOT a per-agent credential. Auth
@@ -34311,7 +34311,7 @@ var INTEGRATION_REGISTRY = [
34311
34311
  id: "x-search",
34312
34312
  name: "X Search",
34313
34313
  category: "social",
34314
- description: "Read-only X (Twitter) search: recent public posts by keyword, hashtag, author, or any X search operator - for sentiment sweeps, topic monitoring, and trend research. Augmented Team manages X access for you - there is no key to enter.",
34314
+ description: "Read-only X (Twitter) search: recent public posts by keyword, hashtag, author, or any X search operator - for sentiment sweeps, topic monitoring, and trend research. Ninjafy manages X access for you - there is no key to enter.",
34315
34315
  supported_auth_types: ["none"],
34316
34316
  capabilities: [
34317
34317
  { id: "x-search:read", name: "Search Posts", description: "Search recent public X posts (last ~7 days) via x_search_recent.", access: "read" }
@@ -34343,7 +34343,7 @@ var INTEGRATION_REGISTRY = [
34343
34343
  // per definition, so an org can take Local Business Data without taking the
34344
34344
  // pricier, more ToS-sensitive social scraping.
34345
34345
  //
34346
- // Augmented holds ONE Apify account whose token (APIFY_API_TOKEN, read
34346
+ // Ninjafy holds ONE Apify account whose token (APIFY_API_TOKEN, read
34347
34347
  // from SSM - the API Lambda env is at the 4KB cap) every customer run bills
34348
34348
  // back to, so the key is a single platform-held secret, NOT a per-agent
34349
34349
  // credential. Auth type is `none` - customers never enter a key. Tools run on
@@ -34365,7 +34365,7 @@ var INTEGRATION_REGISTRY = [
34365
34365
  id: "social-scraping",
34366
34366
  name: "Social Scraping",
34367
34367
  category: "social",
34368
- description: "Pull public posts and videos from TikTok, Instagram and YouTube - captions, media, engagement counts and URLs - for brand, competitor and campaign research. Augmented Team manages the scraping account for you; there is no key to enter.",
34368
+ description: "Pull public posts and videos from TikTok, Instagram and YouTube - captions, media, engagement counts and URLs - for brand, competitor and campaign research. Ninjafy manages the scraping account for you; there is no key to enter.",
34369
34369
  supported_auth_types: ["none"],
34370
34370
  capabilities: [
34371
34371
  { id: "social-scraping:scrape", name: "Scrape Social Posts", description: "Scrape public TikTok, Instagram and YouTube content (social_scrape_tiktok, social_scrape_instagram, social_scrape_youtube).", access: "write" },
@@ -34411,7 +34411,7 @@ var INTEGRATION_REGISTRY = [
34411
34411
  id: "local-business-data",
34412
34412
  name: "Local Business Data",
34413
34413
  category: "knowledge",
34414
- description: "Find local businesses on Google Maps and pull their public listing details - name, address, phone, website, category, rating and review count - for local market research, competitor lists and lead research. Augmented Team manages the data account for you; there is no key to enter.",
34414
+ description: "Find local businesses on Google Maps and pull their public listing details - name, address, phone, website, category, rating and review count - for local market research, competitor lists and lead research. Ninjafy manages the data account for you; there is no key to enter.",
34415
34415
  supported_auth_types: ["none"],
34416
34416
  capabilities: [
34417
34417
  { id: "local-business-data:search", name: "Search Local Businesses", description: "Search Google Maps for businesses and return their public listing details (local_business_search).", access: "write" },
@@ -34511,7 +34511,7 @@ var INTEGRATION_REGISTRY = [
34511
34511
  // here rather than read from the rate card, which is a real drift
34512
34512
  // hazard — so it is held by a test that reprices both from the migration
34513
34513
  // and fails if they disagree, rather than by anyone remembering.
34514
- description: "Let an agent advise on a meeting while it is happening. Audio is transcribed on the Mac as usual; short passages are then checked by Augmented Team to decide when the agent should speak up, and the agent sees those moments in real time. Off until you turn it on. Billed per minute the advisor is armed \u2014 about $0.90 for a half-hour advised meeting (A$1.50 in Australian dollars); a meeting you record without arming the advisor costs nothing.",
34514
+ description: "Let an agent advise on a meeting while it is happening. Audio is transcribed on the Mac as usual; short passages are then checked by Ninjafy to decide when the agent should speak up, and the agent sees those moments in real time. Off until you turn it on. Billed per minute the advisor is armed \u2014 about $0.90 for a half-hour advised meeting (A$1.50 in Australian dollars); a meeting you record without arming the advisor costs nothing.",
34515
34515
  access: "write",
34516
34516
  requires_org_opt_in: true
34517
34517
  }