@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
package/dist/bin/agt.js
CHANGED
|
@@ -40,12 +40,12 @@ import {
|
|
|
40
40
|
success,
|
|
41
41
|
table,
|
|
42
42
|
warn
|
|
43
|
-
} from "../chunk-
|
|
43
|
+
} from "../chunk-EEBMAG52.js";
|
|
44
44
|
import {
|
|
45
45
|
getProjectDir,
|
|
46
46
|
isSessionResumeDisabled,
|
|
47
47
|
readDirectChatSessionState
|
|
48
|
-
} from "../chunk-
|
|
48
|
+
} from "../chunk-TRZ4SG77.js";
|
|
49
49
|
import {
|
|
50
50
|
AnchorSessionClient,
|
|
51
51
|
CHANNEL_REGISTRY,
|
|
@@ -79,7 +79,7 @@ import {
|
|
|
79
79
|
serializeManifestForSlackCli,
|
|
80
80
|
sessionFileExists,
|
|
81
81
|
sessionTranscriptDir
|
|
82
|
-
} from "../chunk-
|
|
82
|
+
} from "../chunk-KN4GAY5Z.js";
|
|
83
83
|
import "../chunk-B6UYVEMD.js";
|
|
84
84
|
import "../chunk-XWVM4KPK.js";
|
|
85
85
|
import "../chunk-EL5MWGGH.js";
|
|
@@ -5474,7 +5474,7 @@ import { execFileSync, execSync } from "child_process";
|
|
|
5474
5474
|
import { existsSync as existsSync11, realpathSync as realpathSync2 } from "fs";
|
|
5475
5475
|
import chalk18 from "chalk";
|
|
5476
5476
|
import ora16 from "ora";
|
|
5477
|
-
var cliVersion = true ? "0.28.
|
|
5477
|
+
var cliVersion = true ? "0.28.1130" : "dev";
|
|
5478
5478
|
async function fetchLatestVersion() {
|
|
5479
5479
|
const host2 = getHost();
|
|
5480
5480
|
if (!host2) return null;
|
|
@@ -6734,7 +6734,7 @@ function handleError(err) {
|
|
|
6734
6734
|
}
|
|
6735
6735
|
|
|
6736
6736
|
// src/bin/agt.ts
|
|
6737
|
-
var cliVersion2 = true ? "0.28.
|
|
6737
|
+
var cliVersion2 = true ? "0.28.1130" : "dev";
|
|
6738
6738
|
var program = new Command();
|
|
6739
6739
|
program.name("agt").description("Augmented CLI \u2014 agent provisioning and management").version(cliVersion2).option("--json", "Emit machine-readable JSON output (suppress spinners and colors)").option("--skip-update-check", "Skip the automatic update check on startup");
|
|
6740
6740
|
program.hook("preAction", async (thisCommand, actionCommand) => {
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
parseEnvFileEntries,
|
|
17
17
|
parseEnvIntegrations,
|
|
18
18
|
shellQuote
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-TRZ4SG77.js";
|
|
20
20
|
import {
|
|
21
21
|
BIND_FAILURE_QUARANTINE_THRESHOLD,
|
|
22
22
|
INTEGRATIONS_SECTION_END,
|
|
@@ -79,7 +79,7 @@ import {
|
|
|
79
79
|
sessionTranscriptDir,
|
|
80
80
|
worseConnectivityOutcome,
|
|
81
81
|
wrapScheduledTaskPrompt
|
|
82
|
-
} from "./chunk-
|
|
82
|
+
} from "./chunk-KN4GAY5Z.js";
|
|
83
83
|
import {
|
|
84
84
|
classifyUnanswerablePane,
|
|
85
85
|
isConsumerTermsDialogVisible,
|
|
@@ -8076,7 +8076,7 @@ function exchangeFailureKind(err) {
|
|
|
8076
8076
|
}
|
|
8077
8077
|
|
|
8078
8078
|
// src/lib/api-client.ts
|
|
8079
|
-
var agtCliVersion = true ? "0.28.
|
|
8079
|
+
var agtCliVersion = true ? "0.28.1130" : "dev";
|
|
8080
8080
|
var lastConfigHash = null;
|
|
8081
8081
|
function setConfigHash(hash) {
|
|
8082
8082
|
lastConfigHash = hash && hash.length > 0 ? hash : null;
|
|
@@ -13227,4 +13227,4 @@ export {
|
|
|
13227
13227
|
managerInstallSystemUnitCommand,
|
|
13228
13228
|
managerUninstallSystemUnitCommand
|
|
13229
13229
|
};
|
|
13230
|
-
//# sourceMappingURL=chunk-
|
|
13230
|
+
//# sourceMappingURL=chunk-EEBMAG52.js.map
|
|
@@ -2821,6 +2821,78 @@ var INTEGRATION_REGISTRY = [
|
|
|
2821
2821
|
},
|
|
2822
2822
|
docs_url: "https://www.framer.com/developers/server-api-quick-start"
|
|
2823
2823
|
},
|
|
2824
|
+
{
|
|
2825
|
+
// ENG-11540: FlutterFlow, through FlutterFlow's own CLI (`flutterflow ai`).
|
|
2826
|
+
//
|
|
2827
|
+
// WHAT "FLUTTERFLOW MCP" ACTUALLY IS. Not a hosted MCP endpoint. `flutterflow
|
|
2828
|
+
// ai init <dir>` creates a local workspace holding a vendored Dart SDK and an
|
|
2829
|
+
// MCP server registered in a workspace-root `.mcp.json`. The agent's own
|
|
2830
|
+
// `.mcp.json` is platform-rendered, so a workspace-local server is never seen
|
|
2831
|
+
// by the agent's session. The agent drives the same commands over Bash
|
|
2832
|
+
// instead, which is what FlutterFlow's own Claude Code plugin does
|
|
2833
|
+
// (github.com/FlutterFlow/flutterflow-claude) and is the same project state.
|
|
2834
|
+
//
|
|
2835
|
+
// HEADLESS, VERIFIED by running flutterflow_cli 0.0.41 on 2026-10-15: `init`
|
|
2836
|
+
// reads FF_API_KEY from the environment, takes the workspace positionally and
|
|
2837
|
+
// the project as `--project`, and never prompts when stdin is not a TTY. With
|
|
2838
|
+
// no key it fails fast ("API key is required") rather than hanging. A key
|
|
2839
|
+
// from the environment is never written to the CLI's credential store.
|
|
2840
|
+
// Neither `flutterflow --version` nor `flutterflow ai --version` works outside
|
|
2841
|
+
// a workspace, which is why the probe is central HTTP (connectivity-probe.ts).
|
|
2842
|
+
id: "flutterflow",
|
|
2843
|
+
name: "FlutterFlow",
|
|
2844
|
+
category: "code",
|
|
2845
|
+
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.",
|
|
2846
|
+
supported_auth_types: ["api_key"],
|
|
2847
|
+
// flutterflow_cli is 0.0.x and the AI SDK it downloads is versioned server-side.
|
|
2848
|
+
beta: true,
|
|
2849
|
+
installable: { category: "Code", authTypes: ["api_key"] },
|
|
2850
|
+
capabilities: [
|
|
2851
|
+
{
|
|
2852
|
+
id: "flutterflow:read-project",
|
|
2853
|
+
name: "Read Project",
|
|
2854
|
+
description: "Inspect, search and validate a FlutterFlow project: pages, components, resources, status and run history",
|
|
2855
|
+
access: "read"
|
|
2856
|
+
},
|
|
2857
|
+
{
|
|
2858
|
+
id: "flutterflow:edit-project",
|
|
2859
|
+
name: "Edit Project",
|
|
2860
|
+
description: "Push changes to a FlutterFlow project: pages, widgets, state, actions and theme",
|
|
2861
|
+
access: "write"
|
|
2862
|
+
},
|
|
2863
|
+
{
|
|
2864
|
+
id: "flutterflow:publish-library",
|
|
2865
|
+
name: "Publish Library",
|
|
2866
|
+
description: "Publish a new version of a FlutterFlow library that other projects depend on",
|
|
2867
|
+
access: "write"
|
|
2868
|
+
}
|
|
2869
|
+
],
|
|
2870
|
+
cli_tool: {
|
|
2871
|
+
package: "flutterflow_cli",
|
|
2872
|
+
binary: "flutterflow",
|
|
2873
|
+
// `flutterflow ai` and the SDK it downloads both authenticate from this
|
|
2874
|
+
// (the legacy FLUTTERFLOW_API_TOKEN feeds only export-code/deploy-firebase).
|
|
2875
|
+
env_key: "FF_API_KEY",
|
|
2876
|
+
installer: "script",
|
|
2877
|
+
// The catalog is the trust boundary for this string (same contract as the
|
|
2878
|
+
// `gh` entry above). The CLI is a Dart pub package, and AL2023 has no Dart
|
|
2879
|
+
// rpm, so this installs Google's official SDK zip into a private prefix
|
|
2880
|
+
// (about 650 MB, which is why it is per-integration and not in the base
|
|
2881
|
+
// image) and puts a wrapper, not pub's shim, at /usr/local/bin/flutterflow.
|
|
2882
|
+
// pub's shim runs a bare `dart`, so a different Dart earlier on PATH would
|
|
2883
|
+
// reject the 3.13.5 snapshot; the wrapper pins our Dart for the CLI AND for
|
|
2884
|
+
// the `dart run` the downloaded SDK does. Re-runnable: a timed-out run
|
|
2885
|
+
// (180s) resumes from whatever finished. The SDK is unzipped into a
|
|
2886
|
+
// staging dir INSIDE the prefix and renamed into place last (CodeRabbit on
|
|
2887
|
+
// #7007): a run killed mid-unzip must never leave a partial dart-sdk that
|
|
2888
|
+
// passes the version check and then fails every retry. Staging on the same
|
|
2889
|
+
// filesystem is what makes the final `mv` a rename rather than a copy.
|
|
2890
|
+
// Versions pinned on purpose: bump
|
|
2891
|
+
// them together, after re-running the headless check above.
|
|
2892
|
+
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`
|
|
2893
|
+
},
|
|
2894
|
+
docs_url: "https://docs.flutterflow.io/flutterflow-cli/build/"
|
|
2895
|
+
},
|
|
2824
2896
|
{
|
|
2825
2897
|
id: "v0",
|
|
2826
2898
|
name: "v0 by Vercel",
|
|
@@ -7698,6 +7770,20 @@ var FLAG_REGISTRY = [
|
|
|
7698
7770
|
// on for their own org. Only a platform admin can (PR #6522 review).
|
|
7699
7771
|
platformAdminOnly: true
|
|
7700
7772
|
},
|
|
7773
|
+
{
|
|
7774
|
+
key: "direct-chat-voice",
|
|
7775
|
+
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.",
|
|
7776
|
+
flagType: "boolean",
|
|
7777
|
+
// PUBLIC (ADR-0022 §2): read in the browser via usePublicBooleanFlag, so it
|
|
7778
|
+
// must be in the GET /flags map. No env override (UI rollout, not an
|
|
7779
|
+
// operator gate). Ships dark (default false).
|
|
7780
|
+
public: true,
|
|
7781
|
+
defaultValue: false,
|
|
7782
|
+
// Platform admin only: the point of the flag is keeping a not-ready feature
|
|
7783
|
+
// away from customers, so a customer org admin must not be able to switch
|
|
7784
|
+
// it back on for their own org.
|
|
7785
|
+
platformAdminOnly: true
|
|
7786
|
+
},
|
|
7701
7787
|
{
|
|
7702
7788
|
key: "platform-maintenance-mode",
|
|
7703
7789
|
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.)',
|
|
@@ -12287,7 +12373,14 @@ var HTTP_PROBE_PROVIDERS = /* @__PURE__ */ new Set([
|
|
|
12287
12373
|
// the integration is read-only, so without a probe a dead key would surface
|
|
12288
12374
|
// only as failed reports. Routes to `probeOmnisend` against
|
|
12289
12375
|
// `GET /brands/current`, never the rate-capped analytics endpoints.
|
|
12290
|
-
"omnisend"
|
|
12376
|
+
"omnisend",
|
|
12377
|
+
// ENG-11540: FlutterFlow, added with the integration. Without it the CLI
|
|
12378
|
+
// default (`flutterflow --version`) runs, and that exits 1 outside a
|
|
12379
|
+
// workspace, so every healthy install would read broken from its first probe.
|
|
12380
|
+
// A FlutterFlow API key never expires on its own; it dies when regenerated or
|
|
12381
|
+
// when the account leaves a paid plan, and only a call can tell. Routes to
|
|
12382
|
+
// `probeFlutterFlow`: the CLI's own `sdkWhoAmI` key check.
|
|
12383
|
+
"flutterflow"
|
|
12291
12384
|
// ENG-6100: GitHub is deliberately NOT here. This set drives the ASYNC
|
|
12292
12385
|
// connectivity monitor's routing, where github (source_type='native')
|
|
12293
12386
|
// stays host-side (cli_command — `gh`, the credential the agent actually
|
|
@@ -13064,6 +13157,56 @@ async function probeOmnisend(creds, fetchImpl) {
|
|
|
13064
13157
|
return networkOutcome(err, String(key));
|
|
13065
13158
|
}
|
|
13066
13159
|
}
|
|
13160
|
+
async function probeFlutterFlow(creds, fetchImpl) {
|
|
13161
|
+
const key = creds.api_key ?? creds.access_token;
|
|
13162
|
+
if (!key)
|
|
13163
|
+
return { status: "down", message: "No FlutterFlow API key present" };
|
|
13164
|
+
try {
|
|
13165
|
+
const res = await timedFetch(fetchImpl, "https://api.flutterflow.io/v1/l/sdkWhoAmI", {
|
|
13166
|
+
method: "POST",
|
|
13167
|
+
headers: {
|
|
13168
|
+
Authorization: `Bearer ${key}`,
|
|
13169
|
+
"Content-Type": "application/json",
|
|
13170
|
+
Accept: "application/json"
|
|
13171
|
+
},
|
|
13172
|
+
body: "{}",
|
|
13173
|
+
// CodeRabbit on #7007: the key rides in Authorization, and fetch forwards
|
|
13174
|
+
// it on a same-origin redirect. FlutterFlow's key check never redirects, so
|
|
13175
|
+
// a 3xx is a proxy or a moved endpoint, never a verdict on the key.
|
|
13176
|
+
redirect: "manual"
|
|
13177
|
+
});
|
|
13178
|
+
if (res.status >= 300 && res.status < 400) {
|
|
13179
|
+
return { status: "down", message: `FlutterFlow API redirected (${res.status}) - not a FlutterFlow API response` };
|
|
13180
|
+
}
|
|
13181
|
+
if (res.status === 401 || res.status === 403) {
|
|
13182
|
+
return {
|
|
13183
|
+
status: "down",
|
|
13184
|
+
cause: "auth_rejected",
|
|
13185
|
+
message: `FlutterFlow rejected the API key (${res.status}) - it was regenerated, mistyped, or the account is no longer on a paid plan`
|
|
13186
|
+
};
|
|
13187
|
+
}
|
|
13188
|
+
if (!res.ok) {
|
|
13189
|
+
const message = res.status === 429 ? rateLimitMessage("FlutterFlow", res.status) : `FlutterFlow API returned ${res.status}`;
|
|
13190
|
+
return { status: statusForHttp(res.status), cause: causeForHttp(res.status), message };
|
|
13191
|
+
}
|
|
13192
|
+
let body = null;
|
|
13193
|
+
try {
|
|
13194
|
+
body = await res.json();
|
|
13195
|
+
} catch {
|
|
13196
|
+
body = null;
|
|
13197
|
+
}
|
|
13198
|
+
if (body === null || typeof body !== "object" || !("success" in body)) {
|
|
13199
|
+
return { status: "down", message: "FlutterFlow returned 200 without a result - not a FlutterFlow API response" };
|
|
13200
|
+
}
|
|
13201
|
+
if (body.success !== true) {
|
|
13202
|
+
const reason = typeof body.reason === "string" && body.reason.trim() !== "" ? `: ${redactSecret(body.reason.trim(), key).slice(0, 200)}` : "";
|
|
13203
|
+
return { status: "down", cause: "auth_rejected", message: `FlutterFlow did not accept the API key${reason}` };
|
|
13204
|
+
}
|
|
13205
|
+
return { status: "ok", message: "Connected to FlutterFlow (API key accepted)" };
|
|
13206
|
+
} catch (err) {
|
|
13207
|
+
return networkOutcome(err, String(key));
|
|
13208
|
+
}
|
|
13209
|
+
}
|
|
13067
13210
|
async function probeHttpProvider(definitionId, credentials, fetchImpl = fetch, config) {
|
|
13068
13211
|
switch (definitionId) {
|
|
13069
13212
|
case "storrito":
|
|
@@ -13088,6 +13231,8 @@ async function probeHttpProvider(definitionId, credentials, fetchImpl = fetch, c
|
|
|
13088
13231
|
return probeProjectworks(credentials, fetchImpl);
|
|
13089
13232
|
case "omnisend":
|
|
13090
13233
|
return probeOmnisend(credentials, fetchImpl);
|
|
13234
|
+
case "flutterflow":
|
|
13235
|
+
return probeFlutterFlow(credentials, fetchImpl);
|
|
13091
13236
|
case "google-workspace":
|
|
13092
13237
|
return probeBearerJson("https://www.googleapis.com/oauth2/v2/userinfo", credentials, fetchImpl, (body) => {
|
|
13093
13238
|
const info = body;
|
|
@@ -16865,4 +17010,4 @@ export {
|
|
|
16865
17010
|
peekCurrentSession,
|
|
16866
17011
|
readDailySessionPin
|
|
16867
17012
|
};
|
|
16868
|
-
//# sourceMappingURL=chunk-
|
|
17013
|
+
//# sourceMappingURL=chunk-KN4GAY5Z.js.map
|