@integrity-labs/agt-cli 0.28.1129 → 0.28.1131

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/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.)',
@@ -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.)',
@@ -35569,6 +35569,78 @@ var INTEGRATION_REGISTRY = [
35569
35569
  },
35570
35570
  docs_url: "https://www.framer.com/developers/server-api-quick-start"
35571
35571
  },
35572
+ {
35573
+ // ENG-11540: FlutterFlow, through FlutterFlow's own CLI (`flutterflow ai`).
35574
+ //
35575
+ // WHAT "FLUTTERFLOW MCP" ACTUALLY IS. Not a hosted MCP endpoint. `flutterflow
35576
+ // ai init <dir>` creates a local workspace holding a vendored Dart SDK and an
35577
+ // MCP server registered in a workspace-root `.mcp.json`. The agent's own
35578
+ // `.mcp.json` is platform-rendered, so a workspace-local server is never seen
35579
+ // by the agent's session. The agent drives the same commands over Bash
35580
+ // instead, which is what FlutterFlow's own Claude Code plugin does
35581
+ // (github.com/FlutterFlow/flutterflow-claude) and is the same project state.
35582
+ //
35583
+ // HEADLESS, VERIFIED by running flutterflow_cli 0.0.41 on 2026-10-15: `init`
35584
+ // reads FF_API_KEY from the environment, takes the workspace positionally and
35585
+ // the project as `--project`, and never prompts when stdin is not a TTY. With
35586
+ // no key it fails fast ("API key is required") rather than hanging. A key
35587
+ // from the environment is never written to the CLI's credential store.
35588
+ // Neither `flutterflow --version` nor `flutterflow ai --version` works outside
35589
+ // a workspace, which is why the probe is central HTTP (connectivity-probe.ts).
35590
+ id: "flutterflow",
35591
+ name: "FlutterFlow",
35592
+ category: "code",
35593
+ 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.",
35594
+ supported_auth_types: ["api_key"],
35595
+ // flutterflow_cli is 0.0.x and the AI SDK it downloads is versioned server-side.
35596
+ beta: true,
35597
+ installable: { category: "Code", authTypes: ["api_key"] },
35598
+ capabilities: [
35599
+ {
35600
+ id: "flutterflow:read-project",
35601
+ name: "Read Project",
35602
+ description: "Inspect, search and validate a FlutterFlow project: pages, components, resources, status and run history",
35603
+ access: "read"
35604
+ },
35605
+ {
35606
+ id: "flutterflow:edit-project",
35607
+ name: "Edit Project",
35608
+ description: "Push changes to a FlutterFlow project: pages, widgets, state, actions and theme",
35609
+ access: "write"
35610
+ },
35611
+ {
35612
+ id: "flutterflow:publish-library",
35613
+ name: "Publish Library",
35614
+ description: "Publish a new version of a FlutterFlow library that other projects depend on",
35615
+ access: "write"
35616
+ }
35617
+ ],
35618
+ cli_tool: {
35619
+ package: "flutterflow_cli",
35620
+ binary: "flutterflow",
35621
+ // `flutterflow ai` and the SDK it downloads both authenticate from this
35622
+ // (the legacy FLUTTERFLOW_API_TOKEN feeds only export-code/deploy-firebase).
35623
+ env_key: "FF_API_KEY",
35624
+ installer: "script",
35625
+ // The catalog is the trust boundary for this string (same contract as the
35626
+ // `gh` entry above). The CLI is a Dart pub package, and AL2023 has no Dart
35627
+ // rpm, so this installs Google's official SDK zip into a private prefix
35628
+ // (about 650 MB, which is why it is per-integration and not in the base
35629
+ // image) and puts a wrapper, not pub's shim, at /usr/local/bin/flutterflow.
35630
+ // pub's shim runs a bare `dart`, so a different Dart earlier on PATH would
35631
+ // reject the 3.13.5 snapshot; the wrapper pins our Dart for the CLI AND for
35632
+ // the `dart run` the downloaded SDK does. Re-runnable: a timed-out run
35633
+ // (180s) resumes from whatever finished. The SDK is unzipped into a
35634
+ // staging dir INSIDE the prefix and renamed into place last (CodeRabbit on
35635
+ // #7007): a run killed mid-unzip must never leave a partial dart-sdk that
35636
+ // passes the version check and then fails every retry. Staging on the same
35637
+ // filesystem is what makes the final `mv` a rename rather than a copy.
35638
+ // Versions pinned on purpose: bump
35639
+ // them together, after re-running the headless check above.
35640
+ 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`
35641
+ },
35642
+ docs_url: "https://docs.flutterflow.io/flutterflow-cli/build/"
35643
+ },
35572
35644
  {
35573
35645
  id: "v0",
35574
35646
  name: "v0 by Vercel",
@@ -39806,6 +39878,20 @@ var FLAG_REGISTRY = [
39806
39878
  // on for their own org. Only a platform admin can (PR #6522 review).
39807
39879
  platformAdminOnly: true
39808
39880
  },
39881
+ {
39882
+ key: "direct-chat-voice",
39883
+ 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.",
39884
+ flagType: "boolean",
39885
+ // PUBLIC (ADR-0022 §2): read in the browser via usePublicBooleanFlag, so it
39886
+ // must be in the GET /flags map. No env override (UI rollout, not an
39887
+ // operator gate). Ships dark (default false).
39888
+ public: true,
39889
+ defaultValue: false,
39890
+ // Platform admin only: the point of the flag is keeping a not-ready feature
39891
+ // away from customers, so a customer org admin must not be able to switch
39892
+ // it back on for their own org.
39893
+ platformAdminOnly: true
39894
+ },
39809
39895
  {
39810
39896
  key: "platform-maintenance-mode",
39811
39897
  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.)',
@@ -68,8 +68,8 @@ import {
68
68
  writeDirectChatSessionState,
69
69
  writeEgressAllowlist,
70
70
  writePersistentClaudeWrapper
71
- } from "./chunk-23GMWGOP.js";
72
- import "./chunk-JFABPA3Z.js";
71
+ } from "./chunk-KG4IEJEF.js";
72
+ import "./chunk-TKBGHAN3.js";
73
73
  import "./chunk-B6UYVEMD.js";
74
74
  import "./chunk-XWVM4KPK.js";
75
75
  import "./chunk-EL5MWGGH.js";
@@ -145,4 +145,4 @@ export {
145
145
  writeEgressAllowlist,
146
146
  writePersistentClaudeWrapper
147
147
  };
148
- //# sourceMappingURL=persistent-session-QSE66QYT.js.map
148
+ //# sourceMappingURL=persistent-session-F2LRKDFL.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  paneLogPath
3
- } from "./chunk-23GMWGOP.js";
4
- import "./chunk-JFABPA3Z.js";
3
+ } from "./chunk-KG4IEJEF.js";
4
+ import "./chunk-TKBGHAN3.js";
5
5
  import "./chunk-B6UYVEMD.js";
6
6
  import "./chunk-XWVM4KPK.js";
7
7
  import "./chunk-EL5MWGGH.js";
@@ -802,4 +802,4 @@ export {
802
802
  readAndResetSlackReplyBindingClassifications,
803
803
  readAndResetSlackReplyTargetClassifications
804
804
  };
805
- //# sourceMappingURL=responsiveness-probe-NC4A3FCR.js.map
805
+ //# sourceMappingURL=responsiveness-probe-SM6XFJJ6.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sessionTranscriptDir
3
- } from "./chunk-JFABPA3Z.js";
3
+ } from "./chunk-TKBGHAN3.js";
4
4
  import "./chunk-DGUM43GV.js";
5
5
 
6
6
  // src/lib/session-auth-dead.ts
@@ -204,4 +204,4 @@ export {
204
204
  decideSessionAuthState,
205
205
  probeSessionAuth
206
206
  };
207
- //# sourceMappingURL=session-auth-dead-23ERZN4N.js.map
207
+ //# sourceMappingURL=session-auth-dead-KNTFHDWV.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@integrity-labs/agt-cli",
3
- "version": "0.28.1129",
3
+ "version": "0.28.1131",
4
4
  "description": "Augmented Team CLI — agent provisioning and management",
5
5
  "type": "module",
6
6
  "engines": {