@integrity-labs/agt-cli 0.28.511 → 0.28.513

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-CMG4VWT6.js");
103
+ const { resolveClaudeBinary } = await import("./persistent-session-QNYR2ZJA.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-AK6RLKSR.js.map
376
+ //# sourceMappingURL=claude-pair-runtime-C7FJTY3F.js.map
@@ -53,7 +53,7 @@ import {
53
53
  safeWriteJsonAtomic,
54
54
  setConfigHash,
55
55
  tripClass
56
- } from "../chunk-I3DZ3LI5.js";
56
+ } from "../chunk-PZ3RIMNA.js";
57
57
  import {
58
58
  getProjectDir as getProjectDir2,
59
59
  getReadyTasks,
@@ -173,7 +173,7 @@ import {
173
173
  toOpencodeModel,
174
174
  transcriptActivityAgeSeconds,
175
175
  writeEgressAllowlist
176
- } from "../chunk-OQBHTDWK.js";
176
+ } from "../chunk-MDEA3PIS.js";
177
177
  import {
178
178
  reapOrphanChannelMcps
179
179
  } from "../chunk-XWVM4KPK.js";
@@ -10071,7 +10071,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
10071
10071
  var lastVersionCheckAt = 0;
10072
10072
  var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
10073
10073
  var lastResponsivenessProbeAt = 0;
10074
- var agtCliVersion = true ? "0.28.511" : "dev";
10074
+ var agtCliVersion = true ? "0.28.513" : "dev";
10075
10075
  function resolveBrewPath(execFileSync2) {
10076
10076
  try {
10077
10077
  const out = execFileSync2("which", ["brew"], { timeout: 5e3 }).toString().trim();
@@ -11278,7 +11278,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
11278
11278
  if (codeNames.length === 0) return;
11279
11279
  void (async () => {
11280
11280
  try {
11281
- const { collectDiagnostics } = await import("../persistent-session-CMG4VWT6.js");
11281
+ const { collectDiagnostics } = await import("../persistent-session-QNYR2ZJA.js");
11282
11282
  await api.post("/host/heartbeat", {
11283
11283
  host_id: hostId,
11284
11284
  agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor)
@@ -11385,7 +11385,7 @@ async function pollCycle() {
11385
11385
  }
11386
11386
  try {
11387
11387
  const { detectHostSecurity } = await import("../host-security-6PDFG7F5.js");
11388
- const { collectDiagnostics } = await import("../persistent-session-CMG4VWT6.js");
11388
+ const { collectDiagnostics } = await import("../persistent-session-QNYR2ZJA.js");
11389
11389
  const diagCodeNames = [...agentState.persistentSessionAgents];
11390
11390
  const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor) : void 0;
11391
11391
  let tailscaleHostname;
@@ -11500,7 +11500,7 @@ async function pollCycle() {
11500
11500
  collectResponsivenessProbes,
11501
11501
  collectPanelessActivityProbes,
11502
11502
  getResponsivenessIntervalMs
11503
- } = await import("../responsiveness-probe-COMUJVPF.js");
11503
+ } = await import("../responsiveness-probe-X3PAOSNA.js");
11504
11504
  const probeIntervalMs = getResponsivenessIntervalMs();
11505
11505
  if (now - lastResponsivenessProbeAt > probeIntervalMs) {
11506
11506
  const probeCodeNames = [...agentState.persistentSessionAgents];
@@ -11564,7 +11564,7 @@ async function pollCycle() {
11564
11564
  collectResponsivenessProbes,
11565
11565
  livePendingInboundOldestAgeSeconds,
11566
11566
  parkPendingInbound
11567
- } = await import("../responsiveness-probe-COMUJVPF.js");
11567
+ } = await import("../responsiveness-probe-X3PAOSNA.js");
11568
11568
  const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-NDP36U7O.js");
11569
11569
  const wedgeNow = /* @__PURE__ */ new Date();
11570
11570
  const liveAgents = agentState.persistentSessionAgents;
@@ -15072,7 +15072,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
15072
15072
  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}`));
15073
15073
  void (async () => {
15074
15074
  try {
15075
- const { collectDiagnostics } = await import("../persistent-session-CMG4VWT6.js");
15075
+ const { collectDiagnostics } = await import("../persistent-session-QNYR2ZJA.js");
15076
15076
  await api.post("/host/heartbeat", {
15077
15077
  host_id: hostId,
15078
15078
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor)
@@ -15122,7 +15122,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
15122
15122
  }
15123
15123
  try {
15124
15124
  const hostId = await getHostId();
15125
- const { collectDiagnostics } = await import("../persistent-session-CMG4VWT6.js");
15125
+ const { collectDiagnostics } = await import("../persistent-session-QNYR2ZJA.js");
15126
15126
  await api.post("/host/heartbeat", {
15127
15127
  host_id: hostId,
15128
15128
  agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor)
@@ -15640,7 +15640,7 @@ async function processClaudePairSessions(agents) {
15640
15640
  killPairSession,
15641
15641
  pairTmuxSession,
15642
15642
  finalizeClaudePairOnboarding
15643
- } = await import("../claude-pair-runtime-AK6RLKSR.js");
15643
+ } = await import("../claude-pair-runtime-C7FJTY3F.js");
15644
15644
  for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
15645
15645
  log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
15646
15646
  const killed = await killPairSession(pairTmuxSession(pairId));
@@ -30945,6 +30945,11 @@ var integration_metadata_v1_default = {
30945
30945
  pattern: "^https://",
30946
30946
  description: "Absolute HTTPS URL the broker uses as the vendor API root. Required when any tool descriptor relies on http_templater (i.e. whenever `tools[]` is non-empty)."
30947
30947
  },
30948
+ auth_scheme: {
30949
+ type: "string",
30950
+ pattern: "^[A-Za-z0-9!#$%&'*+.^_`|~-]+$",
30951
+ description: "Authorization scheme word placed before the credential, e.g. `Key` for Higgsfield's `Authorization: Key KEY_ID:KEY_SECRET` (ENG-8440). Omit for the `Bearer` default. Constrained to a single RFC 7230 token because it is concatenated straight into a header value."
30952
+ },
30948
30953
  runtime_scopes: {
30949
30954
  type: "object",
30950
30955
  description: "Per-runtime-scope support map. Each slot is either null (the integration does not support installs at this scope) or an object describing how token resolution and auth work for that scope.",
@@ -32939,16 +32944,43 @@ var INTEGRATION_REGISTRY = [
32939
32944
  id: "higgsfield",
32940
32945
  name: "Higgsfield",
32941
32946
  category: "media",
32942
- description: "Generative media \u2014 image (Soul, Nano Banana) and video (Kling, Veo, Seedance) generation, character training (Soul ID), and generation history. Remote streamable-HTTP MCP at https://mcp.higgsfield.ai/mcp.",
32943
- // Same OAuth pattern as Granola: Claude Code brokers the browser
32944
- // sign-in at runtime; nothing for the manager API to provision.
32945
- supported_auth_types: ["none"],
32947
+ description: "Generative media \u2014 Soul text-to-image with style presets and trained-character consistency, DoP image-to-video with motion presets, and lip-synced talking video. Uses Higgsfield's REST API with your own API key.",
32948
+ // ENG-8440: api_key, NOT the host-brokered MCP this used to be.
32949
+ //
32950
+ // Higgsfield MCP (`https://mcp.higgsfield.ai/mcp`) cannot be completed from
32951
+ // the console, and that is a vendor constraint rather than a gap in our
32952
+ // plumbing. Its `oauth-protected-resource` metadata offers two flows and
32953
+ // names the clients each is for: the redirect flow lists
32954
+ // ["anthropic","claude","claude-ai","claude-code"] and the device-code flow
32955
+ // lists ["openclaw","hermes","memoclaw"]. Our console appears in neither,
32956
+ // and the device authorization server
32957
+ // (`fnf-device-auth.higgsfield.ai/.well-known/oauth-authorization-server`)
32958
+ // still returns 404, so there is no discovery document to probe either.
32959
+ // The only client Higgsfield permits is Claude Code on the agent's own
32960
+ // host, driven by an operator in tmux — no console work removes that step.
32961
+ //
32962
+ // The REST API (`platform.higgsfield.ai`) has none of those constraints: a
32963
+ // static key pair the customer creates in their own Higgsfield account,
32964
+ // sent as `Authorization: Key KEY_ID:KEY_SECRET`. That makes this an
32965
+ // ordinary paste-a-key integration, and it means WE hold the credential —
32966
+ // storable, rotatable, revocable and auditable, none of which was true
32967
+ // under the MCP.
32968
+ //
32969
+ // Bring-your-own-key: generations bill to the customer's own Higgsfield
32970
+ // account, so an install is never metered by Augmented Team.
32971
+ //
32972
+ // NOTE: this entry carries no `remoteMcp`, so it contributes nothing to
32973
+ // `registryRemoteMcpKeys` and cannot prune the `higgsfield` key an older
32974
+ // host already wrote to `.mcp.json`. That pruning is why `'higgsfield'` is
32975
+ // a literal in `integrationDerivedKeys` in the claudecode adapter — do not
32976
+ // drop it while any host may still be carrying the retired MCP entry.
32977
+ supported_auth_types: ["api_key"],
32946
32978
  capabilities: [
32947
- { id: "higgsfield:generate-image", name: "Generate Image", description: "Create images via Soul, Nano Banana, and other image models \u2014 up to 4K. Includes Soul ID character consistency.", access: "write" },
32948
- { id: "higgsfield:generate-video", name: "Generate Video", description: "Create videos via Kling, Veo, Seedance \u2014 up to 15s. Includes UGC, product review, TV spot presets.", access: "write" },
32949
- { id: "higgsfield:read-history", name: "Read History", description: "Browse generation history for iterative workflows; reuse prior outputs as references.", access: "read" }
32979
+ { id: "higgsfield:generate-image", name: "Generate Image", description: "Create stills with Soul \u2014 style presets, plus trained-character consistency for a repeated face or product.", access: "write" },
32980
+ { id: "higgsfield:generate-video", name: "Generate Video", description: "Animate a still into a short clip with DoP motion presets, or lip-sync a talking video from an image plus audio.", access: "write" },
32981
+ { id: "higgsfield:read-jobs", name: "Poll Jobs & Presets", description: "Poll asynchronous generations to completion, and list the style and motion presets the generate tools accept.", access: "read" }
32950
32982
  ],
32951
- docs_url: "https://higgsfield.ai/mcp",
32983
+ docs_url: "https://docs.higgsfield.ai/",
32952
32984
  beta: true
32953
32985
  },
32954
32986
  {
@@ -37100,6 +37100,11 @@ var integration_metadata_v1_default = {
37100
37100
  pattern: "^https://",
37101
37101
  description: "Absolute HTTPS URL the broker uses as the vendor API root. Required when any tool descriptor relies on http_templater (i.e. whenever `tools[]` is non-empty)."
37102
37102
  },
37103
+ auth_scheme: {
37104
+ type: "string",
37105
+ pattern: "^[A-Za-z0-9!#$%&'*+.^_`|~-]+$",
37106
+ description: "Authorization scheme word placed before the credential, e.g. `Key` for Higgsfield's `Authorization: Key KEY_ID:KEY_SECRET` (ENG-8440). Omit for the `Bearer` default. Constrained to a single RFC 7230 token because it is concatenated straight into a header value."
37107
+ },
37103
37108
  runtime_scopes: {
37104
37109
  type: "object",
37105
37110
  description: "Per-runtime-scope support map. Each slot is either null (the integration does not support installs at this scope) or an object describing how token resolution and auth work for that scope.",
@@ -37254,7 +37259,7 @@ var FIXED_SECONDS = {
37254
37259
  // ../core/dist/integrations/integration-broker/http-templater.js
37255
37260
  var PLACEHOLDER_RE = /\{([a-zA-Z_][a-zA-Z0-9_]*)\}/g;
37256
37261
  function buildHttpRequest(input) {
37257
- const { tool, args, baseUrl, bearerToken, requestId, extraHeaders } = input;
37262
+ const { tool, args, baseUrl, bearerToken, authScheme, requestId, extraHeaders } = input;
37258
37263
  const { method, path_template, query_template, headers_template, body_template, idempotency_key_header } = tool.http;
37259
37264
  const path = templatePath(path_template, args);
37260
37265
  const query = query_template ? buildQueryString(query_template, args) : "";
@@ -37263,7 +37268,7 @@ function buildHttpRequest(input) {
37263
37268
  Accept: "application/json"
37264
37269
  };
37265
37270
  if (bearerToken) {
37266
- headers["Authorization"] = `Bearer ${bearerToken}`;
37271
+ headers["Authorization"] = `${resolveAuthScheme(authScheme)} ${bearerToken}`;
37267
37272
  }
37268
37273
  if (method !== "GET") {
37269
37274
  const headerName = idempotency_key_header ?? "Idempotency-Key";
@@ -37341,6 +37346,17 @@ function omitKeys(args, keys) {
37341
37346
  }
37342
37347
  return out;
37343
37348
  }
37349
+ function resolveAuthScheme(scheme) {
37350
+ if (scheme === void 0)
37351
+ return "Bearer";
37352
+ const trimmed = scheme.trim();
37353
+ if (trimmed === "")
37354
+ return "Bearer";
37355
+ if (!isValidHeaderName(trimmed)) {
37356
+ throw new TemplateError(`invalid auth_scheme: ${trimmed}`);
37357
+ }
37358
+ return trimmed;
37359
+ }
37344
37360
  function isValidHeaderName(name) {
37345
37361
  return /^[A-Za-z0-9!#$%&'*+.^_`|~-]+$/.test(name);
37346
37362
  }
@@ -39266,16 +39282,43 @@ var INTEGRATION_REGISTRY = [
39266
39282
  id: "higgsfield",
39267
39283
  name: "Higgsfield",
39268
39284
  category: "media",
39269
- description: "Generative media \u2014 image (Soul, Nano Banana) and video (Kling, Veo, Seedance) generation, character training (Soul ID), and generation history. Remote streamable-HTTP MCP at https://mcp.higgsfield.ai/mcp.",
39270
- // Same OAuth pattern as Granola: Claude Code brokers the browser
39271
- // sign-in at runtime; nothing for the manager API to provision.
39272
- supported_auth_types: ["none"],
39285
+ description: "Generative media \u2014 Soul text-to-image with style presets and trained-character consistency, DoP image-to-video with motion presets, and lip-synced talking video. Uses Higgsfield's REST API with your own API key.",
39286
+ // ENG-8440: api_key, NOT the host-brokered MCP this used to be.
39287
+ //
39288
+ // Higgsfield MCP (`https://mcp.higgsfield.ai/mcp`) cannot be completed from
39289
+ // the console, and that is a vendor constraint rather than a gap in our
39290
+ // plumbing. Its `oauth-protected-resource` metadata offers two flows and
39291
+ // names the clients each is for: the redirect flow lists
39292
+ // ["anthropic","claude","claude-ai","claude-code"] and the device-code flow
39293
+ // lists ["openclaw","hermes","memoclaw"]. Our console appears in neither,
39294
+ // and the device authorization server
39295
+ // (`fnf-device-auth.higgsfield.ai/.well-known/oauth-authorization-server`)
39296
+ // still returns 404, so there is no discovery document to probe either.
39297
+ // The only client Higgsfield permits is Claude Code on the agent's own
39298
+ // host, driven by an operator in tmux — no console work removes that step.
39299
+ //
39300
+ // The REST API (`platform.higgsfield.ai`) has none of those constraints: a
39301
+ // static key pair the customer creates in their own Higgsfield account,
39302
+ // sent as `Authorization: Key KEY_ID:KEY_SECRET`. That makes this an
39303
+ // ordinary paste-a-key integration, and it means WE hold the credential —
39304
+ // storable, rotatable, revocable and auditable, none of which was true
39305
+ // under the MCP.
39306
+ //
39307
+ // Bring-your-own-key: generations bill to the customer's own Higgsfield
39308
+ // account, so an install is never metered by Augmented Team.
39309
+ //
39310
+ // NOTE: this entry carries no `remoteMcp`, so it contributes nothing to
39311
+ // `registryRemoteMcpKeys` and cannot prune the `higgsfield` key an older
39312
+ // host already wrote to `.mcp.json`. That pruning is why `'higgsfield'` is
39313
+ // a literal in `integrationDerivedKeys` in the claudecode adapter — do not
39314
+ // drop it while any host may still be carrying the retired MCP entry.
39315
+ supported_auth_types: ["api_key"],
39273
39316
  capabilities: [
39274
- { id: "higgsfield:generate-image", name: "Generate Image", description: "Create images via Soul, Nano Banana, and other image models \u2014 up to 4K. Includes Soul ID character consistency.", access: "write" },
39275
- { id: "higgsfield:generate-video", name: "Generate Video", description: "Create videos via Kling, Veo, Seedance \u2014 up to 15s. Includes UGC, product review, TV spot presets.", access: "write" },
39276
- { id: "higgsfield:read-history", name: "Read History", description: "Browse generation history for iterative workflows; reuse prior outputs as references.", access: "read" }
39317
+ { id: "higgsfield:generate-image", name: "Generate Image", description: "Create stills with Soul \u2014 style presets, plus trained-character consistency for a repeated face or product.", access: "write" },
39318
+ { id: "higgsfield:generate-video", name: "Generate Video", description: "Animate a still into a short clip with DoP motion presets, or lip-sync a talking video from an image plus audio.", access: "write" },
39319
+ { id: "higgsfield:read-jobs", name: "Poll Jobs & Presets", description: "Poll asynchronous generations to completion, and list the style and motion presets the generate tools accept.", access: "read" }
39277
39320
  ],
39278
- docs_url: "https://higgsfield.ai/mcp",
39321
+ docs_url: "https://docs.higgsfield.ai/",
39279
39322
  beta: true
39280
39323
  },
39281
39324
  {
@@ -31170,6 +31170,11 @@ var integration_metadata_v1_default = {
31170
31170
  pattern: "^https://",
31171
31171
  description: "Absolute HTTPS URL the broker uses as the vendor API root. Required when any tool descriptor relies on http_templater (i.e. whenever `tools[]` is non-empty)."
31172
31172
  },
31173
+ auth_scheme: {
31174
+ type: "string",
31175
+ pattern: "^[A-Za-z0-9!#$%&'*+.^_`|~-]+$",
31176
+ description: "Authorization scheme word placed before the credential, e.g. `Key` for Higgsfield's `Authorization: Key KEY_ID:KEY_SECRET` (ENG-8440). Omit for the `Bearer` default. Constrained to a single RFC 7230 token because it is concatenated straight into a header value."
31177
+ },
31173
31178
  runtime_scopes: {
31174
31179
  type: "object",
31175
31180
  description: "Per-runtime-scope support map. Each slot is either null (the integration does not support installs at this scope) or an object describing how token resolution and auth work for that scope.",
@@ -33161,16 +33166,43 @@ var INTEGRATION_REGISTRY = [
33161
33166
  id: "higgsfield",
33162
33167
  name: "Higgsfield",
33163
33168
  category: "media",
33164
- description: "Generative media \u2014 image (Soul, Nano Banana) and video (Kling, Veo, Seedance) generation, character training (Soul ID), and generation history. Remote streamable-HTTP MCP at https://mcp.higgsfield.ai/mcp.",
33165
- // Same OAuth pattern as Granola: Claude Code brokers the browser
33166
- // sign-in at runtime; nothing for the manager API to provision.
33167
- supported_auth_types: ["none"],
33169
+ description: "Generative media \u2014 Soul text-to-image with style presets and trained-character consistency, DoP image-to-video with motion presets, and lip-synced talking video. Uses Higgsfield's REST API with your own API key.",
33170
+ // ENG-8440: api_key, NOT the host-brokered MCP this used to be.
33171
+ //
33172
+ // Higgsfield MCP (`https://mcp.higgsfield.ai/mcp`) cannot be completed from
33173
+ // the console, and that is a vendor constraint rather than a gap in our
33174
+ // plumbing. Its `oauth-protected-resource` metadata offers two flows and
33175
+ // names the clients each is for: the redirect flow lists
33176
+ // ["anthropic","claude","claude-ai","claude-code"] and the device-code flow
33177
+ // lists ["openclaw","hermes","memoclaw"]. Our console appears in neither,
33178
+ // and the device authorization server
33179
+ // (`fnf-device-auth.higgsfield.ai/.well-known/oauth-authorization-server`)
33180
+ // still returns 404, so there is no discovery document to probe either.
33181
+ // The only client Higgsfield permits is Claude Code on the agent's own
33182
+ // host, driven by an operator in tmux — no console work removes that step.
33183
+ //
33184
+ // The REST API (`platform.higgsfield.ai`) has none of those constraints: a
33185
+ // static key pair the customer creates in their own Higgsfield account,
33186
+ // sent as `Authorization: Key KEY_ID:KEY_SECRET`. That makes this an
33187
+ // ordinary paste-a-key integration, and it means WE hold the credential —
33188
+ // storable, rotatable, revocable and auditable, none of which was true
33189
+ // under the MCP.
33190
+ //
33191
+ // Bring-your-own-key: generations bill to the customer's own Higgsfield
33192
+ // account, so an install is never metered by Augmented Team.
33193
+ //
33194
+ // NOTE: this entry carries no `remoteMcp`, so it contributes nothing to
33195
+ // `registryRemoteMcpKeys` and cannot prune the `higgsfield` key an older
33196
+ // host already wrote to `.mcp.json`. That pruning is why `'higgsfield'` is
33197
+ // a literal in `integrationDerivedKeys` in the claudecode adapter — do not
33198
+ // drop it while any host may still be carrying the retired MCP entry.
33199
+ supported_auth_types: ["api_key"],
33168
33200
  capabilities: [
33169
- { id: "higgsfield:generate-image", name: "Generate Image", description: "Create images via Soul, Nano Banana, and other image models \u2014 up to 4K. Includes Soul ID character consistency.", access: "write" },
33170
- { id: "higgsfield:generate-video", name: "Generate Video", description: "Create videos via Kling, Veo, Seedance \u2014 up to 15s. Includes UGC, product review, TV spot presets.", access: "write" },
33171
- { id: "higgsfield:read-history", name: "Read History", description: "Browse generation history for iterative workflows; reuse prior outputs as references.", access: "read" }
33201
+ { id: "higgsfield:generate-image", name: "Generate Image", description: "Create stills with Soul \u2014 style presets, plus trained-character consistency for a repeated face or product.", access: "write" },
33202
+ { id: "higgsfield:generate-video", name: "Generate Video", description: "Animate a still into a short clip with DoP motion presets, or lip-sync a talking video from an image plus audio.", access: "write" },
33203
+ { id: "higgsfield:read-jobs", name: "Poll Jobs & Presets", description: "Poll asynchronous generations to completion, and list the style and motion presets the generate tools accept.", access: "read" }
33172
33204
  ],
33173
- docs_url: "https://higgsfield.ai/mcp",
33205
+ docs_url: "https://docs.higgsfield.ai/",
33174
33206
  beta: true
33175
33207
  },
33176
33208
  {
@@ -31496,6 +31496,11 @@ var integration_metadata_v1_default = {
31496
31496
  pattern: "^https://",
31497
31497
  description: "Absolute HTTPS URL the broker uses as the vendor API root. Required when any tool descriptor relies on http_templater (i.e. whenever `tools[]` is non-empty)."
31498
31498
  },
31499
+ auth_scheme: {
31500
+ type: "string",
31501
+ pattern: "^[A-Za-z0-9!#$%&'*+.^_`|~-]+$",
31502
+ description: "Authorization scheme word placed before the credential, e.g. `Key` for Higgsfield's `Authorization: Key KEY_ID:KEY_SECRET` (ENG-8440). Omit for the `Bearer` default. Constrained to a single RFC 7230 token because it is concatenated straight into a header value."
31503
+ },
31499
31504
  runtime_scopes: {
31500
31505
  type: "object",
31501
31506
  description: "Per-runtime-scope support map. Each slot is either null (the integration does not support installs at this scope) or an object describing how token resolution and auth work for that scope.",
@@ -33487,16 +33492,43 @@ var INTEGRATION_REGISTRY = [
33487
33492
  id: "higgsfield",
33488
33493
  name: "Higgsfield",
33489
33494
  category: "media",
33490
- description: "Generative media \u2014 image (Soul, Nano Banana) and video (Kling, Veo, Seedance) generation, character training (Soul ID), and generation history. Remote streamable-HTTP MCP at https://mcp.higgsfield.ai/mcp.",
33491
- // Same OAuth pattern as Granola: Claude Code brokers the browser
33492
- // sign-in at runtime; nothing for the manager API to provision.
33493
- supported_auth_types: ["none"],
33495
+ description: "Generative media \u2014 Soul text-to-image with style presets and trained-character consistency, DoP image-to-video with motion presets, and lip-synced talking video. Uses Higgsfield's REST API with your own API key.",
33496
+ // ENG-8440: api_key, NOT the host-brokered MCP this used to be.
33497
+ //
33498
+ // Higgsfield MCP (`https://mcp.higgsfield.ai/mcp`) cannot be completed from
33499
+ // the console, and that is a vendor constraint rather than a gap in our
33500
+ // plumbing. Its `oauth-protected-resource` metadata offers two flows and
33501
+ // names the clients each is for: the redirect flow lists
33502
+ // ["anthropic","claude","claude-ai","claude-code"] and the device-code flow
33503
+ // lists ["openclaw","hermes","memoclaw"]. Our console appears in neither,
33504
+ // and the device authorization server
33505
+ // (`fnf-device-auth.higgsfield.ai/.well-known/oauth-authorization-server`)
33506
+ // still returns 404, so there is no discovery document to probe either.
33507
+ // The only client Higgsfield permits is Claude Code on the agent's own
33508
+ // host, driven by an operator in tmux — no console work removes that step.
33509
+ //
33510
+ // The REST API (`platform.higgsfield.ai`) has none of those constraints: a
33511
+ // static key pair the customer creates in their own Higgsfield account,
33512
+ // sent as `Authorization: Key KEY_ID:KEY_SECRET`. That makes this an
33513
+ // ordinary paste-a-key integration, and it means WE hold the credential —
33514
+ // storable, rotatable, revocable and auditable, none of which was true
33515
+ // under the MCP.
33516
+ //
33517
+ // Bring-your-own-key: generations bill to the customer's own Higgsfield
33518
+ // account, so an install is never metered by Augmented Team.
33519
+ //
33520
+ // NOTE: this entry carries no `remoteMcp`, so it contributes nothing to
33521
+ // `registryRemoteMcpKeys` and cannot prune the `higgsfield` key an older
33522
+ // host already wrote to `.mcp.json`. That pruning is why `'higgsfield'` is
33523
+ // a literal in `integrationDerivedKeys` in the claudecode adapter — do not
33524
+ // drop it while any host may still be carrying the retired MCP entry.
33525
+ supported_auth_types: ["api_key"],
33494
33526
  capabilities: [
33495
- { id: "higgsfield:generate-image", name: "Generate Image", description: "Create images via Soul, Nano Banana, and other image models \u2014 up to 4K. Includes Soul ID character consistency.", access: "write" },
33496
- { id: "higgsfield:generate-video", name: "Generate Video", description: "Create videos via Kling, Veo, Seedance \u2014 up to 15s. Includes UGC, product review, TV spot presets.", access: "write" },
33497
- { id: "higgsfield:read-history", name: "Read History", description: "Browse generation history for iterative workflows; reuse prior outputs as references.", access: "read" }
33527
+ { id: "higgsfield:generate-image", name: "Generate Image", description: "Create stills with Soul \u2014 style presets, plus trained-character consistency for a repeated face or product.", access: "write" },
33528
+ { id: "higgsfield:generate-video", name: "Generate Video", description: "Animate a still into a short clip with DoP motion presets, or lip-sync a talking video from an image plus audio.", access: "write" },
33529
+ { id: "higgsfield:read-jobs", name: "Poll Jobs & Presets", description: "Poll asynchronous generations to completion, and list the style and motion presets the generate tools accept.", access: "read" }
33498
33530
  ],
33499
- docs_url: "https://higgsfield.ai/mcp",
33531
+ docs_url: "https://docs.higgsfield.ai/",
33500
33532
  beta: true
33501
33533
  },
33502
33534
  {
@@ -37,7 +37,7 @@ import {
37
37
  writeDirectChatSessionState,
38
38
  writeEgressAllowlist,
39
39
  writePersistentClaudeWrapper
40
- } from "./chunk-OQBHTDWK.js";
40
+ } from "./chunk-MDEA3PIS.js";
41
41
  import "./chunk-XWVM4KPK.js";
42
42
  export {
43
43
  EGRESS_BASELINE_DOMAINS,
@@ -79,4 +79,4 @@ export {
79
79
  writeEgressAllowlist,
80
80
  writePersistentClaudeWrapper
81
81
  };
82
- //# sourceMappingURL=persistent-session-CMG4VWT6.js.map
82
+ //# sourceMappingURL=persistent-session-QNYR2ZJA.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-OQBHTDWK.js";
3
+ } from "./chunk-MDEA3PIS.js";
4
4
  import "./chunk-XWVM4KPK.js";
5
5
 
6
6
  // src/lib/responsiveness-probe.ts
@@ -662,4 +662,4 @@ export {
662
662
  readAndResetSlackReplyBindingClassifications,
663
663
  readAndResetSlackReplyTargetClassifications
664
664
  };
665
- //# sourceMappingURL=responsiveness-probe-COMUJVPF.js.map
665
+ //# sourceMappingURL=responsiveness-probe-X3PAOSNA.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.511",
3
+ "version": "0.28.513",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {