@integrity-labs/agt-cli 0.28.1129 → 0.28.1130
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.
- package/dist/bin/agt.js +5 -5
- package/dist/{chunk-2YWHPXY7.js → chunk-EEBMAG52.js} +4 -4
- package/dist/{chunk-JFABPA3Z.js → chunk-KN4GAY5Z.js} +147 -2
- package/dist/chunk-KN4GAY5Z.js.map +1 -0
- package/dist/{chunk-23GMWGOP.js → chunk-TRZ4SG77.js} +2 -2
- package/dist/{claude-pair-runtime-LDJXKNWF.js → claude-pair-runtime-WSUD7FHJ.js} +2 -2
- package/dist/lib/manager-worker.js +16 -16
- package/dist/mcp/direct-chat-channel.js +86 -0
- package/dist/mcp/index.js +86 -0
- package/dist/mcp/origami.js +86 -0
- package/dist/mcp/slack-channel.js +86 -0
- package/dist/mcp/telegram-channel.js +86 -0
- package/dist/{persistent-session-QSE66QYT.js → persistent-session-YDKIHRCX.js} +3 -3
- package/dist/{responsiveness-probe-NC4A3FCR.js → responsiveness-probe-5LEQ4ZFE.js} +3 -3
- package/dist/{session-auth-dead-23ERZN4N.js → session-auth-dead-C3GYATAO.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-JFABPA3Z.js.map +0 -1
- /package/dist/{chunk-2YWHPXY7.js.map → chunk-EEBMAG52.js.map} +0 -0
- /package/dist/{chunk-23GMWGOP.js.map → chunk-TRZ4SG77.js.map} +0 -0
- /package/dist/{claude-pair-runtime-LDJXKNWF.js.map → claude-pair-runtime-WSUD7FHJ.js.map} +0 -0
- /package/dist/{persistent-session-QSE66QYT.js.map → persistent-session-YDKIHRCX.js.map} +0 -0
- /package/dist/{responsiveness-probe-NC4A3FCR.js.map → responsiveness-probe-5LEQ4ZFE.js.map} +0 -0
- /package/dist/{session-auth-dead-23ERZN4N.js.map → session-auth-dead-C3GYATAO.js.map} +0 -0
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
rotateDailySession,
|
|
25
25
|
sessionFileExists,
|
|
26
26
|
todayLocalIso
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-KN4GAY5Z.js";
|
|
28
28
|
import {
|
|
29
29
|
classifyUnanswerablePane,
|
|
30
30
|
findUsageLimitResetHint,
|
|
@@ -6114,4 +6114,4 @@ export {
|
|
|
6114
6114
|
stopAllSessionsAndWait,
|
|
6115
6115
|
getProjectDir
|
|
6116
6116
|
};
|
|
6117
|
-
//# sourceMappingURL=chunk-
|
|
6117
|
+
//# sourceMappingURL=chunk-TRZ4SG77.js.map
|
|
@@ -269,7 +269,7 @@ async function spawnPairSession(session) {
|
|
|
269
269
|
return { ok: true };
|
|
270
270
|
} catch {
|
|
271
271
|
}
|
|
272
|
-
const { resolveClaudeBinary } = await import("./persistent-session-
|
|
272
|
+
const { resolveClaudeBinary } = await import("./persistent-session-YDKIHRCX.js");
|
|
273
273
|
const claudeBin = resolveClaudeBinary();
|
|
274
274
|
const pairEnv = {
|
|
275
275
|
...process.env,
|
|
@@ -739,4 +739,4 @@ export {
|
|
|
739
739
|
startClaudePair,
|
|
740
740
|
submitClaudePairCode
|
|
741
741
|
};
|
|
742
|
-
//# sourceMappingURL=claude-pair-runtime-
|
|
742
|
+
//# sourceMappingURL=claude-pair-runtime-WSUD7FHJ.js.map
|
|
@@ -76,7 +76,7 @@ import {
|
|
|
76
76
|
setConfigHash,
|
|
77
77
|
shellGuard,
|
|
78
78
|
tripClass
|
|
79
|
-
} from "../chunk-
|
|
79
|
+
} from "../chunk-EEBMAG52.js";
|
|
80
80
|
import {
|
|
81
81
|
getProjectDir as getProjectDir2,
|
|
82
82
|
getReadyTasks,
|
|
@@ -163,7 +163,7 @@ import {
|
|
|
163
163
|
webFetchBaselineValue,
|
|
164
164
|
webFetchRestartNeeded,
|
|
165
165
|
writeEgressAllowlist
|
|
166
|
-
} from "../chunk-
|
|
166
|
+
} from "../chunk-TRZ4SG77.js";
|
|
167
167
|
import {
|
|
168
168
|
ACCOUNT_ENFORCEMENT_MARKER_FILENAME,
|
|
169
169
|
AnchorSessionClient,
|
|
@@ -274,7 +274,7 @@ import {
|
|
|
274
274
|
subagentActivityAgeSeconds,
|
|
275
275
|
sumTranscriptUsageInWindow,
|
|
276
276
|
transcriptActivityAgeSeconds
|
|
277
|
-
} from "../chunk-
|
|
277
|
+
} from "../chunk-KN4GAY5Z.js";
|
|
278
278
|
import {
|
|
279
279
|
classifyUnanswerablePane,
|
|
280
280
|
focusedConfirmDialogBlock,
|
|
@@ -14491,7 +14491,7 @@ var pendingDayRolloverReset = /* @__PURE__ */ new Set();
|
|
|
14491
14491
|
var dayRolloverInboundHold = /* @__PURE__ */ new Map();
|
|
14492
14492
|
var INBOUND_HOLD_EPISODE_GAP_MS = 12e4;
|
|
14493
14493
|
async function channelInboundActivityAgeSecondsFor(codeName) {
|
|
14494
|
-
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-
|
|
14494
|
+
const { newestPendingInboundActivityMtimeMs } = await import("../responsiveness-probe-5LEQ4ZFE.js");
|
|
14495
14495
|
const newest = newestPendingInboundActivityMtimeMs(dirname11(paneLogPath(codeName)));
|
|
14496
14496
|
if (newest === null) return null;
|
|
14497
14497
|
return Math.max(0, Math.floor((Date.now() - newest) / 1e3));
|
|
@@ -15249,7 +15249,7 @@ var agentRestartTimezoneInputs = /* @__PURE__ */ new Map();
|
|
|
15249
15249
|
var lastVersionCheckAt = 0;
|
|
15250
15250
|
var VERSION_CHECK_INTERVAL_MS = 5 * 60 * 1e3;
|
|
15251
15251
|
var lastResponsivenessProbeAt = 0;
|
|
15252
|
-
var agtCliVersion = true ? "0.28.
|
|
15252
|
+
var agtCliVersion = true ? "0.28.1130" : "dev";
|
|
15253
15253
|
function resolveBrewPath(execFileSync3) {
|
|
15254
15254
|
try {
|
|
15255
15255
|
const out = execFileSync3("which", ["brew"], { timeout: 5e3 }).toString().trim();
|
|
@@ -16879,7 +16879,7 @@ function flushRestartedAgentDiagnostics(hostId, codeNames) {
|
|
|
16879
16879
|
if (codeNames.length === 0) return;
|
|
16880
16880
|
void (async () => {
|
|
16881
16881
|
try {
|
|
16882
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
16882
|
+
const { collectDiagnostics } = await import("../persistent-session-YDKIHRCX.js");
|
|
16883
16883
|
await api.post("/host/heartbeat", {
|
|
16884
16884
|
host_id: hostId,
|
|
16885
16885
|
agent_diagnostics: collectDiagnostics(codeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
|
|
@@ -17021,7 +17021,7 @@ async function pollCycleInner() {
|
|
|
17021
17021
|
}
|
|
17022
17022
|
try {
|
|
17023
17023
|
const { detectHostSecurity } = await import("../host-security-KQYYZZVW.js");
|
|
17024
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
17024
|
+
const { collectDiagnostics } = await import("../persistent-session-YDKIHRCX.js");
|
|
17025
17025
|
const diagCodeNames = [...agentState.persistentSessionAgents];
|
|
17026
17026
|
const agentDiagnostics = diagCodeNames.length > 0 ? collectDiagnostics(diagCodeNames, quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor) : void 0;
|
|
17027
17027
|
let tailscaleHostname;
|
|
@@ -17229,7 +17229,7 @@ async function pollCycleInner() {
|
|
|
17229
17229
|
collectPanelessActivityProbes,
|
|
17230
17230
|
getResponsivenessIntervalMs,
|
|
17231
17231
|
occupancyQualificationClassifications
|
|
17232
|
-
} = await import("../responsiveness-probe-
|
|
17232
|
+
} = await import("../responsiveness-probe-5LEQ4ZFE.js");
|
|
17233
17233
|
const probeIntervalMs = getResponsivenessIntervalMs();
|
|
17234
17234
|
if (now - lastResponsivenessProbeAt > probeIntervalMs) {
|
|
17235
17235
|
const probeCodeNames = [...agentState.persistentSessionAgents];
|
|
@@ -17346,7 +17346,7 @@ async function pollCycleInner() {
|
|
|
17346
17346
|
collectResponsivenessProbes,
|
|
17347
17347
|
livePendingInboundOldestAgeSeconds,
|
|
17348
17348
|
parkPendingInbound
|
|
17349
|
-
} = await import("../responsiveness-probe-
|
|
17349
|
+
} = await import("../responsiveness-probe-5LEQ4ZFE.js");
|
|
17350
17350
|
const { getProjectDir: wedgeProjectDir } = await import("../scheduler-engine-M6AFZWNU.js");
|
|
17351
17351
|
const wedgeNow = /* @__PURE__ */ new Date();
|
|
17352
17352
|
const liveAgents = agentState.persistentSessionAgents;
|
|
@@ -17632,7 +17632,7 @@ async function pollCycleInner() {
|
|
|
17632
17632
|
}
|
|
17633
17633
|
}
|
|
17634
17634
|
);
|
|
17635
|
-
const { parkPendingInbound } = await import("../responsiveness-probe-
|
|
17635
|
+
const { parkPendingInbound } = await import("../responsiveness-probe-5LEQ4ZFE.js");
|
|
17636
17636
|
const { parked, deadLettered } = parkPendingInbound(codeName, new Date(fatalNowMs));
|
|
17637
17637
|
paneFatalStreak.delete(codeName);
|
|
17638
17638
|
paneFatalRestarts.set(codeName, [...history, fatalNowMs]);
|
|
@@ -17663,7 +17663,7 @@ async function pollCycleInner() {
|
|
|
17663
17663
|
TRANSCRIPT_MOUNT_ESCALATION_REFRESH_MS,
|
|
17664
17664
|
bindSourceEscalations
|
|
17665
17665
|
} = await import("../transcript-mount-health-OHE6IVJV.js");
|
|
17666
|
-
const { transcriptBindSourcesFor, ensureTranscriptBindSources } = await import("../persistent-session-
|
|
17666
|
+
const { transcriptBindSourcesFor, ensureTranscriptBindSources } = await import("../persistent-session-YDKIHRCX.js");
|
|
17667
17667
|
const mountConfig = resolveTranscriptMountConfig();
|
|
17668
17668
|
const liveAgents = agentState.persistentSessionAgents;
|
|
17669
17669
|
for (const tracked of [
|
|
@@ -17828,7 +17828,7 @@ async function pollCycleInner() {
|
|
|
17828
17828
|
}
|
|
17829
17829
|
try {
|
|
17830
17830
|
const { scrapeMcpFailedBannerCount } = await import("../pane-mcp-banner-scraper-VR5QGP3J.js");
|
|
17831
|
-
const { probeSessionAuth } = await import("../session-auth-dead-
|
|
17831
|
+
const { probeSessionAuth } = await import("../session-auth-dead-C3GYATAO.js");
|
|
17832
17832
|
const observations = [];
|
|
17833
17833
|
const pendingCacheCommits = [];
|
|
17834
17834
|
const modelApiErrorReportingOn = hostFlagStore().getBoolean("model-api-error-reporting");
|
|
@@ -22423,7 +22423,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
22423
22423
|
try {
|
|
22424
22424
|
const freshId = rotateSessionForWedge(codeName);
|
|
22425
22425
|
consecutiveWedgeCycles.delete(codeName);
|
|
22426
|
-
const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-
|
|
22426
|
+
const { parkPendingInbound: parkForRestart } = await import("../responsiveness-probe-5LEQ4ZFE.js");
|
|
22427
22427
|
const { parked, deadLettered } = parkForRestart(codeName, /* @__PURE__ */ new Date());
|
|
22428
22428
|
const parkNote = parked > 0 ? `, ${parked} inbound parked` : "";
|
|
22429
22429
|
const deadNote = deadLettered > 0 ? `, ${deadLettered} undeliverable dead-lettered` : "";
|
|
@@ -22466,7 +22466,7 @@ async function handleRestartDoorbell(agentId, requestedAt, restartReason) {
|
|
|
22466
22466
|
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}`));
|
|
22467
22467
|
void (async () => {
|
|
22468
22468
|
try {
|
|
22469
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
22469
|
+
const { collectDiagnostics } = await import("../persistent-session-YDKIHRCX.js");
|
|
22470
22470
|
await api.post("/host/heartbeat", {
|
|
22471
22471
|
host_id: hostId,
|
|
22472
22472
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
|
|
@@ -22517,7 +22517,7 @@ async function respawnAgentAfterMcpStop(codeName, reason) {
|
|
|
22517
22517
|
}
|
|
22518
22518
|
try {
|
|
22519
22519
|
const hostId = await getHostId();
|
|
22520
|
-
const { collectDiagnostics } = await import("../persistent-session-
|
|
22520
|
+
const { collectDiagnostics } = await import("../persistent-session-YDKIHRCX.js");
|
|
22521
22521
|
await api.post("/host/heartbeat", {
|
|
22522
22522
|
host_id: hostId,
|
|
22523
22523
|
agent_diagnostics: collectDiagnostics([codeName], quarantineEntriesFor, claudeMdSizeFor, spawnOutcomeForDiagnostics, pidPressureFor, forwardedToolsFor, runtimeVersionFor)
|
|
@@ -23190,7 +23190,7 @@ async function processClaudePairSessions(agents) {
|
|
|
23190
23190
|
// cannot take it for itself — by the time it runs, the write it is looking
|
|
23191
23191
|
// for may already have happened.
|
|
23192
23192
|
snapshotPairConfig
|
|
23193
|
-
} = await import("../claude-pair-runtime-
|
|
23193
|
+
} = await import("../claude-pair-runtime-WSUD7FHJ.js");
|
|
23194
23194
|
for (const pairId of pendingResp.cancelled_pair_ids ?? []) {
|
|
23195
23195
|
log(`[claude-pair] sweeping orphan tmux session for pair ${pairId.slice(0, 8)}`);
|
|
23196
23196
|
const killed = await killPairSession(pairTmuxSession(pairId));
|
|
@@ -34314,6 +34314,78 @@ var INTEGRATION_REGISTRY = [
|
|
|
34314
34314
|
},
|
|
34315
34315
|
docs_url: "https://www.framer.com/developers/server-api-quick-start"
|
|
34316
34316
|
},
|
|
34317
|
+
{
|
|
34318
|
+
// ENG-11540: FlutterFlow, through FlutterFlow's own CLI (`flutterflow ai`).
|
|
34319
|
+
//
|
|
34320
|
+
// WHAT "FLUTTERFLOW MCP" ACTUALLY IS. Not a hosted MCP endpoint. `flutterflow
|
|
34321
|
+
// ai init <dir>` creates a local workspace holding a vendored Dart SDK and an
|
|
34322
|
+
// MCP server registered in a workspace-root `.mcp.json`. The agent's own
|
|
34323
|
+
// `.mcp.json` is platform-rendered, so a workspace-local server is never seen
|
|
34324
|
+
// by the agent's session. The agent drives the same commands over Bash
|
|
34325
|
+
// instead, which is what FlutterFlow's own Claude Code plugin does
|
|
34326
|
+
// (github.com/FlutterFlow/flutterflow-claude) and is the same project state.
|
|
34327
|
+
//
|
|
34328
|
+
// HEADLESS, VERIFIED by running flutterflow_cli 0.0.41 on 2026-10-15: `init`
|
|
34329
|
+
// reads FF_API_KEY from the environment, takes the workspace positionally and
|
|
34330
|
+
// the project as `--project`, and never prompts when stdin is not a TTY. With
|
|
34331
|
+
// no key it fails fast ("API key is required") rather than hanging. A key
|
|
34332
|
+
// from the environment is never written to the CLI's credential store.
|
|
34333
|
+
// Neither `flutterflow --version` nor `flutterflow ai --version` works outside
|
|
34334
|
+
// a workspace, which is why the probe is central HTTP (connectivity-probe.ts).
|
|
34335
|
+
id: "flutterflow",
|
|
34336
|
+
name: "FlutterFlow",
|
|
34337
|
+
category: "code",
|
|
34338
|
+
description: "Build and edit FlutterFlow apps with the FlutterFlow CLI. Start with `flutterflow ai init <dir> --project <project-id>` (the key is already in FF_API_KEY), work inside that folder, inspect and validate before you run, and never read the folder's .flutterflow/.env (it holds the key). Never pass --yes to native-file unlock or lock, and ask a person before publish-library.",
|
|
34339
|
+
supported_auth_types: ["api_key"],
|
|
34340
|
+
// flutterflow_cli is 0.0.x and the AI SDK it downloads is versioned server-side.
|
|
34341
|
+
beta: true,
|
|
34342
|
+
installable: { category: "Code", authTypes: ["api_key"] },
|
|
34343
|
+
capabilities: [
|
|
34344
|
+
{
|
|
34345
|
+
id: "flutterflow:read-project",
|
|
34346
|
+
name: "Read Project",
|
|
34347
|
+
description: "Inspect, search and validate a FlutterFlow project: pages, components, resources, status and run history",
|
|
34348
|
+
access: "read"
|
|
34349
|
+
},
|
|
34350
|
+
{
|
|
34351
|
+
id: "flutterflow:edit-project",
|
|
34352
|
+
name: "Edit Project",
|
|
34353
|
+
description: "Push changes to a FlutterFlow project: pages, widgets, state, actions and theme",
|
|
34354
|
+
access: "write"
|
|
34355
|
+
},
|
|
34356
|
+
{
|
|
34357
|
+
id: "flutterflow:publish-library",
|
|
34358
|
+
name: "Publish Library",
|
|
34359
|
+
description: "Publish a new version of a FlutterFlow library that other projects depend on",
|
|
34360
|
+
access: "write"
|
|
34361
|
+
}
|
|
34362
|
+
],
|
|
34363
|
+
cli_tool: {
|
|
34364
|
+
package: "flutterflow_cli",
|
|
34365
|
+
binary: "flutterflow",
|
|
34366
|
+
// `flutterflow ai` and the SDK it downloads both authenticate from this
|
|
34367
|
+
// (the legacy FLUTTERFLOW_API_TOKEN feeds only export-code/deploy-firebase).
|
|
34368
|
+
env_key: "FF_API_KEY",
|
|
34369
|
+
installer: "script",
|
|
34370
|
+
// The catalog is the trust boundary for this string (same contract as the
|
|
34371
|
+
// `gh` entry above). The CLI is a Dart pub package, and AL2023 has no Dart
|
|
34372
|
+
// rpm, so this installs Google's official SDK zip into a private prefix
|
|
34373
|
+
// (about 650 MB, which is why it is per-integration and not in the base
|
|
34374
|
+
// image) and puts a wrapper, not pub's shim, at /usr/local/bin/flutterflow.
|
|
34375
|
+
// pub's shim runs a bare `dart`, so a different Dart earlier on PATH would
|
|
34376
|
+
// reject the 3.13.5 snapshot; the wrapper pins our Dart for the CLI AND for
|
|
34377
|
+
// the `dart run` the downloaded SDK does. Re-runnable: a timed-out run
|
|
34378
|
+
// (180s) resumes from whatever finished. The SDK is unzipped into a
|
|
34379
|
+
// staging dir INSIDE the prefix and renamed into place last (CodeRabbit on
|
|
34380
|
+
// #7007): a run killed mid-unzip must never leave a partial dart-sdk that
|
|
34381
|
+
// passes the version check and then fails every retry. Staging on the same
|
|
34382
|
+
// filesystem is what makes the final `mv` a rename rather than a copy.
|
|
34383
|
+
// Versions pinned on purpose: bump
|
|
34384
|
+
// them together, after re-running the headless check above.
|
|
34385
|
+
script: `set -e; d=/usr/local/flutterflow; v=3.13.5; case "$(uname -m)" in x86_64) a=x64;; aarch64|arm64) a=arm64;; *) echo "flutterflow: unsupported architecture $(uname -m)" >&2; exit 1;; esac; if ! "$d/dart-sdk/bin/dart" --version 2>&1 | grep -q "version: $v "; then if ! command -v unzip >/dev/null 2>&1; then if command -v dnf >/dev/null 2>&1; then dnf install -y unzip; elif command -v apt-get >/dev/null 2>&1; then apt-get update && apt-get install -y unzip; else echo "flutterflow: unzip missing and no supported installer (need dnf or apt-get)" >&2; exit 1; fi; fi; mkdir -p "$d"; t=$(mktemp -d "$d/.stage.XXXXXX"); trap 'rm -rf "$t"' EXIT; curl -fsSL "https://storage.googleapis.com/dart-archive/channels/stable/release/$v/sdk/dartsdk-linux-$a-release.zip" -o "$t/dart.zip"; unzip -q "$t/dart.zip" -d "$t/x"; rm -rf "$d/dart-sdk"; mv "$t/x/dart-sdk" "$d/dart-sdk"; fi; PATH="$d/dart-sdk/bin:$PATH" PUB_CACHE="$d/pub-cache" "$d/dart-sdk/bin/dart" pub global activate flutterflow_cli 0.0.41; printf '#!/bin/sh\\nPATH="%s/dart-sdk/bin:$PATH" PUB_CACHE="%s/pub-cache" exec "%s/pub-cache/bin/flutterflow" "$@"\\n' "$d" "$d" "$d" > /usr/local/bin/flutterflow; chmod 755 /usr/local/bin/flutterflow`
|
|
34386
|
+
},
|
|
34387
|
+
docs_url: "https://docs.flutterflow.io/flutterflow-cli/build/"
|
|
34388
|
+
},
|
|
34317
34389
|
{
|
|
34318
34390
|
id: "v0",
|
|
34319
34391
|
name: "v0 by Vercel",
|
|
@@ -38757,6 +38829,20 @@ var FLAG_REGISTRY = [
|
|
|
38757
38829
|
// on for their own org. Only a platform admin can (PR #6522 review).
|
|
38758
38830
|
platformAdminOnly: true
|
|
38759
38831
|
},
|
|
38832
|
+
{
|
|
38833
|
+
key: "direct-chat-voice",
|
|
38834
|
+
description: "Show the microphone (voice) button in the web Direct Chat composer - the Direct Chat drawer and the agent-screen chat dock (ENG-11542). Off by default: voice set expectations it does not yet meet for customers, but the team still needs it for testing, so it is enabled per org rather than removed. Does not gate the mobile PWA voice switch or the server voice-session routes.",
|
|
38835
|
+
flagType: "boolean",
|
|
38836
|
+
// PUBLIC (ADR-0022 §2): read in the browser via usePublicBooleanFlag, so it
|
|
38837
|
+
// must be in the GET /flags map. No env override (UI rollout, not an
|
|
38838
|
+
// operator gate). Ships dark (default false).
|
|
38839
|
+
public: true,
|
|
38840
|
+
defaultValue: false,
|
|
38841
|
+
// Platform admin only: the point of the flag is keeping a not-ready feature
|
|
38842
|
+
// away from customers, so a customer org admin must not be able to switch
|
|
38843
|
+
// it back on for their own org.
|
|
38844
|
+
platformAdminOnly: true
|
|
38845
|
+
},
|
|
38760
38846
|
{
|
|
38761
38847
|
key: "platform-maintenance-mode",
|
|
38762
38848
|
description: 'Platform-wide maintenance mode (ENG-6506; widened to modes by ENG-11436). off = normal operation (ships dark; channels behave exactly as today). tools-offline = every agent KEEPS conversing but every Augmented tool that WRITES to the control plane refuses with a reason, so nothing is created during a window whose database restore would discard it; reads are untouched. fleet-offline = the previous boolean-true behaviour AND the write gate: admitted human inbound gets a "we are offline for maintenance" notice instead of being dispatched, for whole-platform downtime such as DB upgrades. The modes are CUMULATIVE \u2014 fleet-offline gates writes too, because silencing channel inbound does not stop a /loop or a scheduled task filing work. Read host-side per inbound and per tool call from the flags cache (no MCP restart). (Proactive "back online" follow-up is the ENG-6508 fast-follow, not this flag.)',
|
package/dist/mcp/index.js
CHANGED
|
@@ -26816,6 +26816,78 @@ var INTEGRATION_REGISTRY = [
|
|
|
26816
26816
|
},
|
|
26817
26817
|
docs_url: "https://www.framer.com/developers/server-api-quick-start"
|
|
26818
26818
|
},
|
|
26819
|
+
{
|
|
26820
|
+
// ENG-11540: FlutterFlow, through FlutterFlow's own CLI (`flutterflow ai`).
|
|
26821
|
+
//
|
|
26822
|
+
// WHAT "FLUTTERFLOW MCP" ACTUALLY IS. Not a hosted MCP endpoint. `flutterflow
|
|
26823
|
+
// ai init <dir>` creates a local workspace holding a vendored Dart SDK and an
|
|
26824
|
+
// MCP server registered in a workspace-root `.mcp.json`. The agent's own
|
|
26825
|
+
// `.mcp.json` is platform-rendered, so a workspace-local server is never seen
|
|
26826
|
+
// by the agent's session. The agent drives the same commands over Bash
|
|
26827
|
+
// instead, which is what FlutterFlow's own Claude Code plugin does
|
|
26828
|
+
// (github.com/FlutterFlow/flutterflow-claude) and is the same project state.
|
|
26829
|
+
//
|
|
26830
|
+
// HEADLESS, VERIFIED by running flutterflow_cli 0.0.41 on 2026-10-15: `init`
|
|
26831
|
+
// reads FF_API_KEY from the environment, takes the workspace positionally and
|
|
26832
|
+
// the project as `--project`, and never prompts when stdin is not a TTY. With
|
|
26833
|
+
// no key it fails fast ("API key is required") rather than hanging. A key
|
|
26834
|
+
// from the environment is never written to the CLI's credential store.
|
|
26835
|
+
// Neither `flutterflow --version` nor `flutterflow ai --version` works outside
|
|
26836
|
+
// a workspace, which is why the probe is central HTTP (connectivity-probe.ts).
|
|
26837
|
+
id: "flutterflow",
|
|
26838
|
+
name: "FlutterFlow",
|
|
26839
|
+
category: "code",
|
|
26840
|
+
description: "Build and edit FlutterFlow apps with the FlutterFlow CLI. Start with `flutterflow ai init <dir> --project <project-id>` (the key is already in FF_API_KEY), work inside that folder, inspect and validate before you run, and never read the folder's .flutterflow/.env (it holds the key). Never pass --yes to native-file unlock or lock, and ask a person before publish-library.",
|
|
26841
|
+
supported_auth_types: ["api_key"],
|
|
26842
|
+
// flutterflow_cli is 0.0.x and the AI SDK it downloads is versioned server-side.
|
|
26843
|
+
beta: true,
|
|
26844
|
+
installable: { category: "Code", authTypes: ["api_key"] },
|
|
26845
|
+
capabilities: [
|
|
26846
|
+
{
|
|
26847
|
+
id: "flutterflow:read-project",
|
|
26848
|
+
name: "Read Project",
|
|
26849
|
+
description: "Inspect, search and validate a FlutterFlow project: pages, components, resources, status and run history",
|
|
26850
|
+
access: "read"
|
|
26851
|
+
},
|
|
26852
|
+
{
|
|
26853
|
+
id: "flutterflow:edit-project",
|
|
26854
|
+
name: "Edit Project",
|
|
26855
|
+
description: "Push changes to a FlutterFlow project: pages, widgets, state, actions and theme",
|
|
26856
|
+
access: "write"
|
|
26857
|
+
},
|
|
26858
|
+
{
|
|
26859
|
+
id: "flutterflow:publish-library",
|
|
26860
|
+
name: "Publish Library",
|
|
26861
|
+
description: "Publish a new version of a FlutterFlow library that other projects depend on",
|
|
26862
|
+
access: "write"
|
|
26863
|
+
}
|
|
26864
|
+
],
|
|
26865
|
+
cli_tool: {
|
|
26866
|
+
package: "flutterflow_cli",
|
|
26867
|
+
binary: "flutterflow",
|
|
26868
|
+
// `flutterflow ai` and the SDK it downloads both authenticate from this
|
|
26869
|
+
// (the legacy FLUTTERFLOW_API_TOKEN feeds only export-code/deploy-firebase).
|
|
26870
|
+
env_key: "FF_API_KEY",
|
|
26871
|
+
installer: "script",
|
|
26872
|
+
// The catalog is the trust boundary for this string (same contract as the
|
|
26873
|
+
// `gh` entry above). The CLI is a Dart pub package, and AL2023 has no Dart
|
|
26874
|
+
// rpm, so this installs Google's official SDK zip into a private prefix
|
|
26875
|
+
// (about 650 MB, which is why it is per-integration and not in the base
|
|
26876
|
+
// image) and puts a wrapper, not pub's shim, at /usr/local/bin/flutterflow.
|
|
26877
|
+
// pub's shim runs a bare `dart`, so a different Dart earlier on PATH would
|
|
26878
|
+
// reject the 3.13.5 snapshot; the wrapper pins our Dart for the CLI AND for
|
|
26879
|
+
// the `dart run` the downloaded SDK does. Re-runnable: a timed-out run
|
|
26880
|
+
// (180s) resumes from whatever finished. The SDK is unzipped into a
|
|
26881
|
+
// staging dir INSIDE the prefix and renamed into place last (CodeRabbit on
|
|
26882
|
+
// #7007): a run killed mid-unzip must never leave a partial dart-sdk that
|
|
26883
|
+
// passes the version check and then fails every retry. Staging on the same
|
|
26884
|
+
// filesystem is what makes the final `mv` a rename rather than a copy.
|
|
26885
|
+
// Versions pinned on purpose: bump
|
|
26886
|
+
// them together, after re-running the headless check above.
|
|
26887
|
+
script: `set -e; d=/usr/local/flutterflow; v=3.13.5; case "$(uname -m)" in x86_64) a=x64;; aarch64|arm64) a=arm64;; *) echo "flutterflow: unsupported architecture $(uname -m)" >&2; exit 1;; esac; if ! "$d/dart-sdk/bin/dart" --version 2>&1 | grep -q "version: $v "; then if ! command -v unzip >/dev/null 2>&1; then if command -v dnf >/dev/null 2>&1; then dnf install -y unzip; elif command -v apt-get >/dev/null 2>&1; then apt-get update && apt-get install -y unzip; else echo "flutterflow: unzip missing and no supported installer (need dnf or apt-get)" >&2; exit 1; fi; fi; mkdir -p "$d"; t=$(mktemp -d "$d/.stage.XXXXXX"); trap 'rm -rf "$t"' EXIT; curl -fsSL "https://storage.googleapis.com/dart-archive/channels/stable/release/$v/sdk/dartsdk-linux-$a-release.zip" -o "$t/dart.zip"; unzip -q "$t/dart.zip" -d "$t/x"; rm -rf "$d/dart-sdk"; mv "$t/x/dart-sdk" "$d/dart-sdk"; fi; PATH="$d/dart-sdk/bin:$PATH" PUB_CACHE="$d/pub-cache" "$d/dart-sdk/bin/dart" pub global activate flutterflow_cli 0.0.41; printf '#!/bin/sh\\nPATH="%s/dart-sdk/bin:$PATH" PUB_CACHE="%s/pub-cache" exec "%s/pub-cache/bin/flutterflow" "$@"\\n' "$d" "$d" "$d" > /usr/local/bin/flutterflow; chmod 755 /usr/local/bin/flutterflow`
|
|
26888
|
+
},
|
|
26889
|
+
docs_url: "https://docs.flutterflow.io/flutterflow-cli/build/"
|
|
26890
|
+
},
|
|
26819
26891
|
{
|
|
26820
26892
|
id: "v0",
|
|
26821
26893
|
name: "v0 by Vercel",
|
|
@@ -30840,6 +30912,20 @@ var FLAG_REGISTRY = [
|
|
|
30840
30912
|
// on for their own org. Only a platform admin can (PR #6522 review).
|
|
30841
30913
|
platformAdminOnly: true
|
|
30842
30914
|
},
|
|
30915
|
+
{
|
|
30916
|
+
key: "direct-chat-voice",
|
|
30917
|
+
description: "Show the microphone (voice) button in the web Direct Chat composer - the Direct Chat drawer and the agent-screen chat dock (ENG-11542). Off by default: voice set expectations it does not yet meet for customers, but the team still needs it for testing, so it is enabled per org rather than removed. Does not gate the mobile PWA voice switch or the server voice-session routes.",
|
|
30918
|
+
flagType: "boolean",
|
|
30919
|
+
// PUBLIC (ADR-0022 §2): read in the browser via usePublicBooleanFlag, so it
|
|
30920
|
+
// must be in the GET /flags map. No env override (UI rollout, not an
|
|
30921
|
+
// operator gate). Ships dark (default false).
|
|
30922
|
+
public: true,
|
|
30923
|
+
defaultValue: false,
|
|
30924
|
+
// Platform admin only: the point of the flag is keeping a not-ready feature
|
|
30925
|
+
// away from customers, so a customer org admin must not be able to switch
|
|
30926
|
+
// it back on for their own org.
|
|
30927
|
+
platformAdminOnly: true
|
|
30928
|
+
},
|
|
30843
30929
|
{
|
|
30844
30930
|
key: "platform-maintenance-mode",
|
|
30845
30931
|
description: 'Platform-wide maintenance mode (ENG-6506; widened to modes by ENG-11436). off = normal operation (ships dark; channels behave exactly as today). tools-offline = every agent KEEPS conversing but every Augmented tool that WRITES to the control plane refuses with a reason, so nothing is created during a window whose database restore would discard it; reads are untouched. fleet-offline = the previous boolean-true behaviour AND the write gate: admitted human inbound gets a "we are offline for maintenance" notice instead of being dispatched, for whole-platform downtime such as DB upgrades. The modes are CUMULATIVE \u2014 fleet-offline gates writes too, because silencing channel inbound does not stop a /loop or a scheduled task filing work. Read host-side per inbound and per tool call from the flags cache (no MCP restart). (Proactive "back online" follow-up is the ENG-6508 fast-follow, not this flag.)',
|
package/dist/mcp/origami.js
CHANGED
|
@@ -40948,6 +40948,78 @@ var INTEGRATION_REGISTRY = [
|
|
|
40948
40948
|
},
|
|
40949
40949
|
docs_url: "https://www.framer.com/developers/server-api-quick-start"
|
|
40950
40950
|
},
|
|
40951
|
+
{
|
|
40952
|
+
// ENG-11540: FlutterFlow, through FlutterFlow's own CLI (`flutterflow ai`).
|
|
40953
|
+
//
|
|
40954
|
+
// WHAT "FLUTTERFLOW MCP" ACTUALLY IS. Not a hosted MCP endpoint. `flutterflow
|
|
40955
|
+
// ai init <dir>` creates a local workspace holding a vendored Dart SDK and an
|
|
40956
|
+
// MCP server registered in a workspace-root `.mcp.json`. The agent's own
|
|
40957
|
+
// `.mcp.json` is platform-rendered, so a workspace-local server is never seen
|
|
40958
|
+
// by the agent's session. The agent drives the same commands over Bash
|
|
40959
|
+
// instead, which is what FlutterFlow's own Claude Code plugin does
|
|
40960
|
+
// (github.com/FlutterFlow/flutterflow-claude) and is the same project state.
|
|
40961
|
+
//
|
|
40962
|
+
// HEADLESS, VERIFIED by running flutterflow_cli 0.0.41 on 2026-10-15: `init`
|
|
40963
|
+
// reads FF_API_KEY from the environment, takes the workspace positionally and
|
|
40964
|
+
// the project as `--project`, and never prompts when stdin is not a TTY. With
|
|
40965
|
+
// no key it fails fast ("API key is required") rather than hanging. A key
|
|
40966
|
+
// from the environment is never written to the CLI's credential store.
|
|
40967
|
+
// Neither `flutterflow --version` nor `flutterflow ai --version` works outside
|
|
40968
|
+
// a workspace, which is why the probe is central HTTP (connectivity-probe.ts).
|
|
40969
|
+
id: "flutterflow",
|
|
40970
|
+
name: "FlutterFlow",
|
|
40971
|
+
category: "code",
|
|
40972
|
+
description: "Build and edit FlutterFlow apps with the FlutterFlow CLI. Start with `flutterflow ai init <dir> --project <project-id>` (the key is already in FF_API_KEY), work inside that folder, inspect and validate before you run, and never read the folder's .flutterflow/.env (it holds the key). Never pass --yes to native-file unlock or lock, and ask a person before publish-library.",
|
|
40973
|
+
supported_auth_types: ["api_key"],
|
|
40974
|
+
// flutterflow_cli is 0.0.x and the AI SDK it downloads is versioned server-side.
|
|
40975
|
+
beta: true,
|
|
40976
|
+
installable: { category: "Code", authTypes: ["api_key"] },
|
|
40977
|
+
capabilities: [
|
|
40978
|
+
{
|
|
40979
|
+
id: "flutterflow:read-project",
|
|
40980
|
+
name: "Read Project",
|
|
40981
|
+
description: "Inspect, search and validate a FlutterFlow project: pages, components, resources, status and run history",
|
|
40982
|
+
access: "read"
|
|
40983
|
+
},
|
|
40984
|
+
{
|
|
40985
|
+
id: "flutterflow:edit-project",
|
|
40986
|
+
name: "Edit Project",
|
|
40987
|
+
description: "Push changes to a FlutterFlow project: pages, widgets, state, actions and theme",
|
|
40988
|
+
access: "write"
|
|
40989
|
+
},
|
|
40990
|
+
{
|
|
40991
|
+
id: "flutterflow:publish-library",
|
|
40992
|
+
name: "Publish Library",
|
|
40993
|
+
description: "Publish a new version of a FlutterFlow library that other projects depend on",
|
|
40994
|
+
access: "write"
|
|
40995
|
+
}
|
|
40996
|
+
],
|
|
40997
|
+
cli_tool: {
|
|
40998
|
+
package: "flutterflow_cli",
|
|
40999
|
+
binary: "flutterflow",
|
|
41000
|
+
// `flutterflow ai` and the SDK it downloads both authenticate from this
|
|
41001
|
+
// (the legacy FLUTTERFLOW_API_TOKEN feeds only export-code/deploy-firebase).
|
|
41002
|
+
env_key: "FF_API_KEY",
|
|
41003
|
+
installer: "script",
|
|
41004
|
+
// The catalog is the trust boundary for this string (same contract as the
|
|
41005
|
+
// `gh` entry above). The CLI is a Dart pub package, and AL2023 has no Dart
|
|
41006
|
+
// rpm, so this installs Google's official SDK zip into a private prefix
|
|
41007
|
+
// (about 650 MB, which is why it is per-integration and not in the base
|
|
41008
|
+
// image) and puts a wrapper, not pub's shim, at /usr/local/bin/flutterflow.
|
|
41009
|
+
// pub's shim runs a bare `dart`, so a different Dart earlier on PATH would
|
|
41010
|
+
// reject the 3.13.5 snapshot; the wrapper pins our Dart for the CLI AND for
|
|
41011
|
+
// the `dart run` the downloaded SDK does. Re-runnable: a timed-out run
|
|
41012
|
+
// (180s) resumes from whatever finished. The SDK is unzipped into a
|
|
41013
|
+
// staging dir INSIDE the prefix and renamed into place last (CodeRabbit on
|
|
41014
|
+
// #7007): a run killed mid-unzip must never leave a partial dart-sdk that
|
|
41015
|
+
// passes the version check and then fails every retry. Staging on the same
|
|
41016
|
+
// filesystem is what makes the final `mv` a rename rather than a copy.
|
|
41017
|
+
// Versions pinned on purpose: bump
|
|
41018
|
+
// them together, after re-running the headless check above.
|
|
41019
|
+
script: `set -e; d=/usr/local/flutterflow; v=3.13.5; case "$(uname -m)" in x86_64) a=x64;; aarch64|arm64) a=arm64;; *) echo "flutterflow: unsupported architecture $(uname -m)" >&2; exit 1;; esac; if ! "$d/dart-sdk/bin/dart" --version 2>&1 | grep -q "version: $v "; then if ! command -v unzip >/dev/null 2>&1; then if command -v dnf >/dev/null 2>&1; then dnf install -y unzip; elif command -v apt-get >/dev/null 2>&1; then apt-get update && apt-get install -y unzip; else echo "flutterflow: unzip missing and no supported installer (need dnf or apt-get)" >&2; exit 1; fi; fi; mkdir -p "$d"; t=$(mktemp -d "$d/.stage.XXXXXX"); trap 'rm -rf "$t"' EXIT; curl -fsSL "https://storage.googleapis.com/dart-archive/channels/stable/release/$v/sdk/dartsdk-linux-$a-release.zip" -o "$t/dart.zip"; unzip -q "$t/dart.zip" -d "$t/x"; rm -rf "$d/dart-sdk"; mv "$t/x/dart-sdk" "$d/dart-sdk"; fi; PATH="$d/dart-sdk/bin:$PATH" PUB_CACHE="$d/pub-cache" "$d/dart-sdk/bin/dart" pub global activate flutterflow_cli 0.0.41; printf '#!/bin/sh\\nPATH="%s/dart-sdk/bin:$PATH" PUB_CACHE="%s/pub-cache" exec "%s/pub-cache/bin/flutterflow" "$@"\\n' "$d" "$d" "$d" > /usr/local/bin/flutterflow; chmod 755 /usr/local/bin/flutterflow`
|
|
41020
|
+
},
|
|
41021
|
+
docs_url: "https://docs.flutterflow.io/flutterflow-cli/build/"
|
|
41022
|
+
},
|
|
40951
41023
|
{
|
|
40952
41024
|
id: "v0",
|
|
40953
41025
|
name: "v0 by Vercel",
|
|
@@ -44769,6 +44841,20 @@ var FLAG_REGISTRY = [
|
|
|
44769
44841
|
// on for their own org. Only a platform admin can (PR #6522 review).
|
|
44770
44842
|
platformAdminOnly: true
|
|
44771
44843
|
},
|
|
44844
|
+
{
|
|
44845
|
+
key: "direct-chat-voice",
|
|
44846
|
+
description: "Show the microphone (voice) button in the web Direct Chat composer - the Direct Chat drawer and the agent-screen chat dock (ENG-11542). Off by default: voice set expectations it does not yet meet for customers, but the team still needs it for testing, so it is enabled per org rather than removed. Does not gate the mobile PWA voice switch or the server voice-session routes.",
|
|
44847
|
+
flagType: "boolean",
|
|
44848
|
+
// PUBLIC (ADR-0022 §2): read in the browser via usePublicBooleanFlag, so it
|
|
44849
|
+
// must be in the GET /flags map. No env override (UI rollout, not an
|
|
44850
|
+
// operator gate). Ships dark (default false).
|
|
44851
|
+
public: true,
|
|
44852
|
+
defaultValue: false,
|
|
44853
|
+
// Platform admin only: the point of the flag is keeping a not-ready feature
|
|
44854
|
+
// away from customers, so a customer org admin must not be able to switch
|
|
44855
|
+
// it back on for their own org.
|
|
44856
|
+
platformAdminOnly: true
|
|
44857
|
+
},
|
|
44772
44858
|
{
|
|
44773
44859
|
key: "platform-maintenance-mode",
|
|
44774
44860
|
description: 'Platform-wide maintenance mode (ENG-6506; widened to modes by ENG-11436). off = normal operation (ships dark; channels behave exactly as today). tools-offline = every agent KEEPS conversing but every Augmented tool that WRITES to the control plane refuses with a reason, so nothing is created during a window whose database restore would discard it; reads are untouched. fleet-offline = the previous boolean-true behaviour AND the write gate: admitted human inbound gets a "we are offline for maintenance" notice instead of being dispatched, for whole-platform downtime such as DB upgrades. The modes are CUMULATIVE \u2014 fleet-offline gates writes too, because silencing channel inbound does not stop a /loop or a scheduled task filing work. Read host-side per inbound and per tool call from the flags cache (no MCP restart). (Proactive "back online" follow-up is the ENG-6508 fast-follow, not this flag.)',
|
|
@@ -35335,6 +35335,78 @@ var INTEGRATION_REGISTRY = [
|
|
|
35335
35335
|
},
|
|
35336
35336
|
docs_url: "https://www.framer.com/developers/server-api-quick-start"
|
|
35337
35337
|
},
|
|
35338
|
+
{
|
|
35339
|
+
// ENG-11540: FlutterFlow, through FlutterFlow's own CLI (`flutterflow ai`).
|
|
35340
|
+
//
|
|
35341
|
+
// WHAT "FLUTTERFLOW MCP" ACTUALLY IS. Not a hosted MCP endpoint. `flutterflow
|
|
35342
|
+
// ai init <dir>` creates a local workspace holding a vendored Dart SDK and an
|
|
35343
|
+
// MCP server registered in a workspace-root `.mcp.json`. The agent's own
|
|
35344
|
+
// `.mcp.json` is platform-rendered, so a workspace-local server is never seen
|
|
35345
|
+
// by the agent's session. The agent drives the same commands over Bash
|
|
35346
|
+
// instead, which is what FlutterFlow's own Claude Code plugin does
|
|
35347
|
+
// (github.com/FlutterFlow/flutterflow-claude) and is the same project state.
|
|
35348
|
+
//
|
|
35349
|
+
// HEADLESS, VERIFIED by running flutterflow_cli 0.0.41 on 2026-10-15: `init`
|
|
35350
|
+
// reads FF_API_KEY from the environment, takes the workspace positionally and
|
|
35351
|
+
// the project as `--project`, and never prompts when stdin is not a TTY. With
|
|
35352
|
+
// no key it fails fast ("API key is required") rather than hanging. A key
|
|
35353
|
+
// from the environment is never written to the CLI's credential store.
|
|
35354
|
+
// Neither `flutterflow --version` nor `flutterflow ai --version` works outside
|
|
35355
|
+
// a workspace, which is why the probe is central HTTP (connectivity-probe.ts).
|
|
35356
|
+
id: "flutterflow",
|
|
35357
|
+
name: "FlutterFlow",
|
|
35358
|
+
category: "code",
|
|
35359
|
+
description: "Build and edit FlutterFlow apps with the FlutterFlow CLI. Start with `flutterflow ai init <dir> --project <project-id>` (the key is already in FF_API_KEY), work inside that folder, inspect and validate before you run, and never read the folder's .flutterflow/.env (it holds the key). Never pass --yes to native-file unlock or lock, and ask a person before publish-library.",
|
|
35360
|
+
supported_auth_types: ["api_key"],
|
|
35361
|
+
// flutterflow_cli is 0.0.x and the AI SDK it downloads is versioned server-side.
|
|
35362
|
+
beta: true,
|
|
35363
|
+
installable: { category: "Code", authTypes: ["api_key"] },
|
|
35364
|
+
capabilities: [
|
|
35365
|
+
{
|
|
35366
|
+
id: "flutterflow:read-project",
|
|
35367
|
+
name: "Read Project",
|
|
35368
|
+
description: "Inspect, search and validate a FlutterFlow project: pages, components, resources, status and run history",
|
|
35369
|
+
access: "read"
|
|
35370
|
+
},
|
|
35371
|
+
{
|
|
35372
|
+
id: "flutterflow:edit-project",
|
|
35373
|
+
name: "Edit Project",
|
|
35374
|
+
description: "Push changes to a FlutterFlow project: pages, widgets, state, actions and theme",
|
|
35375
|
+
access: "write"
|
|
35376
|
+
},
|
|
35377
|
+
{
|
|
35378
|
+
id: "flutterflow:publish-library",
|
|
35379
|
+
name: "Publish Library",
|
|
35380
|
+
description: "Publish a new version of a FlutterFlow library that other projects depend on",
|
|
35381
|
+
access: "write"
|
|
35382
|
+
}
|
|
35383
|
+
],
|
|
35384
|
+
cli_tool: {
|
|
35385
|
+
package: "flutterflow_cli",
|
|
35386
|
+
binary: "flutterflow",
|
|
35387
|
+
// `flutterflow ai` and the SDK it downloads both authenticate from this
|
|
35388
|
+
// (the legacy FLUTTERFLOW_API_TOKEN feeds only export-code/deploy-firebase).
|
|
35389
|
+
env_key: "FF_API_KEY",
|
|
35390
|
+
installer: "script",
|
|
35391
|
+
// The catalog is the trust boundary for this string (same contract as the
|
|
35392
|
+
// `gh` entry above). The CLI is a Dart pub package, and AL2023 has no Dart
|
|
35393
|
+
// rpm, so this installs Google's official SDK zip into a private prefix
|
|
35394
|
+
// (about 650 MB, which is why it is per-integration and not in the base
|
|
35395
|
+
// image) and puts a wrapper, not pub's shim, at /usr/local/bin/flutterflow.
|
|
35396
|
+
// pub's shim runs a bare `dart`, so a different Dart earlier on PATH would
|
|
35397
|
+
// reject the 3.13.5 snapshot; the wrapper pins our Dart for the CLI AND for
|
|
35398
|
+
// the `dart run` the downloaded SDK does. Re-runnable: a timed-out run
|
|
35399
|
+
// (180s) resumes from whatever finished. The SDK is unzipped into a
|
|
35400
|
+
// staging dir INSIDE the prefix and renamed into place last (CodeRabbit on
|
|
35401
|
+
// #7007): a run killed mid-unzip must never leave a partial dart-sdk that
|
|
35402
|
+
// passes the version check and then fails every retry. Staging on the same
|
|
35403
|
+
// filesystem is what makes the final `mv` a rename rather than a copy.
|
|
35404
|
+
// Versions pinned on purpose: bump
|
|
35405
|
+
// them together, after re-running the headless check above.
|
|
35406
|
+
script: `set -e; d=/usr/local/flutterflow; v=3.13.5; case "$(uname -m)" in x86_64) a=x64;; aarch64|arm64) a=arm64;; *) echo "flutterflow: unsupported architecture $(uname -m)" >&2; exit 1;; esac; if ! "$d/dart-sdk/bin/dart" --version 2>&1 | grep -q "version: $v "; then if ! command -v unzip >/dev/null 2>&1; then if command -v dnf >/dev/null 2>&1; then dnf install -y unzip; elif command -v apt-get >/dev/null 2>&1; then apt-get update && apt-get install -y unzip; else echo "flutterflow: unzip missing and no supported installer (need dnf or apt-get)" >&2; exit 1; fi; fi; mkdir -p "$d"; t=$(mktemp -d "$d/.stage.XXXXXX"); trap 'rm -rf "$t"' EXIT; curl -fsSL "https://storage.googleapis.com/dart-archive/channels/stable/release/$v/sdk/dartsdk-linux-$a-release.zip" -o "$t/dart.zip"; unzip -q "$t/dart.zip" -d "$t/x"; rm -rf "$d/dart-sdk"; mv "$t/x/dart-sdk" "$d/dart-sdk"; fi; PATH="$d/dart-sdk/bin:$PATH" PUB_CACHE="$d/pub-cache" "$d/dart-sdk/bin/dart" pub global activate flutterflow_cli 0.0.41; printf '#!/bin/sh\\nPATH="%s/dart-sdk/bin:$PATH" PUB_CACHE="%s/pub-cache" exec "%s/pub-cache/bin/flutterflow" "$@"\\n' "$d" "$d" "$d" > /usr/local/bin/flutterflow; chmod 755 /usr/local/bin/flutterflow`
|
|
35407
|
+
},
|
|
35408
|
+
docs_url: "https://docs.flutterflow.io/flutterflow-cli/build/"
|
|
35409
|
+
},
|
|
35338
35410
|
{
|
|
35339
35411
|
id: "v0",
|
|
35340
35412
|
name: "v0 by Vercel",
|
|
@@ -39578,6 +39650,20 @@ var FLAG_REGISTRY = [
|
|
|
39578
39650
|
// on for their own org. Only a platform admin can (PR #6522 review).
|
|
39579
39651
|
platformAdminOnly: true
|
|
39580
39652
|
},
|
|
39653
|
+
{
|
|
39654
|
+
key: "direct-chat-voice",
|
|
39655
|
+
description: "Show the microphone (voice) button in the web Direct Chat composer - the Direct Chat drawer and the agent-screen chat dock (ENG-11542). Off by default: voice set expectations it does not yet meet for customers, but the team still needs it for testing, so it is enabled per org rather than removed. Does not gate the mobile PWA voice switch or the server voice-session routes.",
|
|
39656
|
+
flagType: "boolean",
|
|
39657
|
+
// PUBLIC (ADR-0022 §2): read in the browser via usePublicBooleanFlag, so it
|
|
39658
|
+
// must be in the GET /flags map. No env override (UI rollout, not an
|
|
39659
|
+
// operator gate). Ships dark (default false).
|
|
39660
|
+
public: true,
|
|
39661
|
+
defaultValue: false,
|
|
39662
|
+
// Platform admin only: the point of the flag is keeping a not-ready feature
|
|
39663
|
+
// away from customers, so a customer org admin must not be able to switch
|
|
39664
|
+
// it back on for their own org.
|
|
39665
|
+
platformAdminOnly: true
|
|
39666
|
+
},
|
|
39581
39667
|
{
|
|
39582
39668
|
key: "platform-maintenance-mode",
|
|
39583
39669
|
description: 'Platform-wide maintenance mode (ENG-6506; widened to modes by ENG-11436). off = normal operation (ships dark; channels behave exactly as today). tools-offline = every agent KEEPS conversing but every Augmented tool that WRITES to the control plane refuses with a reason, so nothing is created during a window whose database restore would discard it; reads are untouched. fleet-offline = the previous boolean-true behaviour AND the write gate: admitted human inbound gets a "we are offline for maintenance" notice instead of being dispatched, for whole-platform downtime such as DB upgrades. The modes are CUMULATIVE \u2014 fleet-offline gates writes too, because silencing channel inbound does not stop a /loop or a scheduled task filing work. Read host-side per inbound and per tool call from the flags cache (no MCP restart). (Proactive "back online" follow-up is the ENG-6508 fast-follow, not this flag.)',
|