@integrity-labs/agt-cli 0.28.474 → 0.28.476
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 +4 -4
- package/dist/{chunk-C47UJ5QI.js → chunk-IGXBEU55.js} +3 -3
- package/dist/chunk-IGXBEU55.js.map +1 -0
- package/dist/{chunk-YR6ESOCM.js → chunk-Q6RVMDAC.js} +31 -87
- package/dist/chunk-Q6RVMDAC.js.map +1 -0
- package/dist/{claude-pair-runtime-62G3PXXX.js → claude-pair-runtime-DYLJU6EV.js} +2 -2
- package/dist/lib/manager-worker.js +368 -426
- package/dist/lib/manager-worker.js.map +1 -1
- package/dist/mcp/direct-chat-channel.js +74 -185
- package/dist/mcp/origami.js +32 -36
- package/dist/mcp/slack-channel.js +188 -309
- package/dist/mcp/telegram-channel.js +151 -264
- package/dist/{persistent-session-Y77TKSL6.js → persistent-session-QITF76DO.js} +2 -2
- package/dist/{responsiveness-probe-KIPMD2UJ.js → responsiveness-probe-BEA4J6IL.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-C47UJ5QI.js.map +0 -1
- package/dist/chunk-YR6ESOCM.js.map +0 -1
- /package/dist/{claude-pair-runtime-62G3PXXX.js.map → claude-pair-runtime-DYLJU6EV.js.map} +0 -0
- /package/dist/{persistent-session-Y77TKSL6.js.map → persistent-session-QITF76DO.js.map} +0 -0
- /package/dist/{responsiveness-probe-KIPMD2UJ.js.map → responsiveness-probe-BEA4J6IL.js.map} +0 -0
|
@@ -6552,6 +6552,34 @@ var INTEGRATION_REGISTRY = [
|
|
|
6552
6552
|
docs_url: "https://higgsfield.ai/mcp",
|
|
6553
6553
|
beta: true
|
|
6554
6554
|
},
|
|
6555
|
+
{
|
|
6556
|
+
id: "vercel",
|
|
6557
|
+
name: "Vercel",
|
|
6558
|
+
category: "infrastructure",
|
|
6559
|
+
description: "Check on Vercel app deployments \u2014 status, build/runtime logs \u2014 and search Vercel documentation. Remote streamable-HTTP MCP at https://mcp.vercel.com.",
|
|
6560
|
+
// Same OAuth pattern as Granola/Higgsfield: Claude Code brokers the
|
|
6561
|
+
// browser sign-in at runtime; nothing for the manager API to provision.
|
|
6562
|
+
supported_auth_types: ["none"],
|
|
6563
|
+
capabilities: [
|
|
6564
|
+
{ id: "vercel:read-deployments", name: "Read Deployments", description: "List teams/projects, check deployment status, and read build/runtime logs.", access: "read" },
|
|
6565
|
+
{ id: "vercel:search-docs", name: "Search Documentation", description: "Search Vercel platform documentation.", access: "read" }
|
|
6566
|
+
],
|
|
6567
|
+
docs_url: "https://vercel.com/docs/agent-resources/vercel-mcp",
|
|
6568
|
+
// Beta until the headless OAuth flow (and Vercel's OAuth-client allowlist,
|
|
6569
|
+
// which is vendor-side and outside our control) is verified end-to-end.
|
|
6570
|
+
beta: true,
|
|
6571
|
+
// No `auth`/`headers` — host-brokered OAuth (Claude Code authenticates
|
|
6572
|
+
// directly with Vercel; nothing for us to inject). Declaring this here
|
|
6573
|
+
// (rather than a hardcoded buildMcpJson/writeIntegrations branch, the
|
|
6574
|
+
// pre-ENG-8035 Higgsfield-era pattern) lets the generic remote-MCP loop
|
|
6575
|
+
// render the `.mcp.json` entry AND enrolls 'vercel' in the
|
|
6576
|
+
// `registryRemoteMcpKeys` prune universe automatically, so an uninstall
|
|
6577
|
+
// actually removes the entry instead of leaving it stale.
|
|
6578
|
+
remoteMcp: {
|
|
6579
|
+
type: "http",
|
|
6580
|
+
url: "https://mcp.vercel.com"
|
|
6581
|
+
}
|
|
6582
|
+
},
|
|
6555
6583
|
{
|
|
6556
6584
|
id: "qmd",
|
|
6557
6585
|
name: "QMD Memory Search",
|
|
@@ -8278,6 +8306,7 @@ function formatRunMarker(runId) {
|
|
|
8278
8306
|
return `<!-- agt-run:${runId} -->`;
|
|
8279
8307
|
}
|
|
8280
8308
|
var RUN_MARKER_RE = /<!--\s*agt-run:([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})\s*-->/;
|
|
8309
|
+
var RUN_MARKER_RE_GLOBAL = new RegExp(RUN_MARKER_RE.source, "g");
|
|
8281
8310
|
|
|
8282
8311
|
// ../../packages/core/dist/claude-code-usage/transcript-parser.js
|
|
8283
8312
|
function nonNegInt(value) {
|
|
@@ -8504,38 +8533,6 @@ function attributeTranscriptUsageByRun(jsonl) {
|
|
|
8504
8533
|
return { perRunModel: [...agg.values()], runIds: [...runIds] };
|
|
8505
8534
|
}
|
|
8506
8535
|
|
|
8507
|
-
// ../../packages/core/dist/claude-code-usage/usage-limit-marker.js
|
|
8508
|
-
var USAGE_LIMIT_MARKER_FILENAME = "claude-usage-limit.json";
|
|
8509
|
-
var USAGE_LIMIT_MARKER_VERSION = 1;
|
|
8510
|
-
function serializeUsageLimitMarker(limitedUntil) {
|
|
8511
|
-
const marker = {
|
|
8512
|
-
version: USAGE_LIMIT_MARKER_VERSION,
|
|
8513
|
-
limited_until: limitedUntil.toISOString()
|
|
8514
|
-
};
|
|
8515
|
-
return JSON.stringify(marker);
|
|
8516
|
-
}
|
|
8517
|
-
function parseUsageLimitMarker(raw) {
|
|
8518
|
-
let parsed;
|
|
8519
|
-
try {
|
|
8520
|
-
parsed = JSON.parse(raw);
|
|
8521
|
-
} catch {
|
|
8522
|
-
return null;
|
|
8523
|
-
}
|
|
8524
|
-
if (typeof parsed !== "object" || parsed === null || parsed.version !== USAGE_LIMIT_MARKER_VERSION) {
|
|
8525
|
-
return null;
|
|
8526
|
-
}
|
|
8527
|
-
const until = parsed.limited_until;
|
|
8528
|
-
if (typeof until !== "string" || !Number.isFinite(Date.parse(until)))
|
|
8529
|
-
return null;
|
|
8530
|
-
return { version: USAGE_LIMIT_MARKER_VERSION, limited_until: until };
|
|
8531
|
-
}
|
|
8532
|
-
function resolveUsageLimitUntil(marker, now) {
|
|
8533
|
-
if (!marker)
|
|
8534
|
-
return null;
|
|
8535
|
-
const until = new Date(marker.limited_until);
|
|
8536
|
-
return until.getTime() > now.getTime() ? until : null;
|
|
8537
|
-
}
|
|
8538
|
-
|
|
8539
8536
|
// ../../packages/core/dist/claude-code-usage/rate-limit-classifier.js
|
|
8540
8537
|
var UNKNOWN_RATE_LIMIT = Object.freeze({
|
|
8541
8538
|
verdict: "unknown",
|
|
@@ -9373,42 +9370,6 @@ var FLAG_REGISTRY = [
|
|
|
9373
9370
|
// projectDefinition, so setting it does not roll FLAGS_SCHEMA_VERSION.
|
|
9374
9371
|
since: "0.28.421"
|
|
9375
9372
|
},
|
|
9376
|
-
{
|
|
9377
|
-
key: "usage-limit-reactive-notice",
|
|
9378
|
-
description: "Report a Claude Code usage cap REACTIVELY instead of predicting it (ENG-8201). Today the manager guesses from the agent transcript that the next turn will be refused, writes a marker, and every channel MCP refuses to dispatch on the strength of that guess - so a wrong guess is a swallowed message, and because the notice is throttled per (channel, sender) while the DROP is not, the usual symptom is total silence rather than a wrong reply. A refused turn actually costs nothing (rejected in under a second, zero tokens) and Claude Code records it with the reset time in it, so there is no need to guess: dispatch, and report the refusal if one comes back. off = today behaviour (pre-dispatch marker gate, no watcher). shadow = still gate on the marker, but ALSO watch dispatched messages and log the refusal that would have been reported - measures the true-positive rate with no user-visible change. enforce = stop reading the marker before dispatch; every admitted human message reaches the agent and a refusal is answered in-thread with the reset time from the error itself. Read live from the heartbeat flags-cache (or the env override).",
|
|
9379
|
-
flagType: "enum",
|
|
9380
|
-
allowedValues: ["off", "shadow", "enforce"],
|
|
9381
|
-
// Ships dark: off preserves today's gate byte-for-byte. shadow is a free
|
|
9382
|
-
// local log line (the watch is a transcript read, no model spend), so it is a
|
|
9383
|
-
// cheap soak; enforce changes what reaches the agent, so it is the audited
|
|
9384
|
-
// per-org flip.
|
|
9385
|
-
defaultValue: "off",
|
|
9386
|
-
// Enum override AGT_USAGE_LIMIT_REACTIVE_MODE (off|shadow|enforce), resolved
|
|
9387
|
-
// by resolveUsageLimitReactiveMode in the channel-server bundle.
|
|
9388
|
-
envVar: "AGT_USAGE_LIMIT_REACTIVE_MODE",
|
|
9389
|
-
// enforce sends a message to an agent the host currently believes is capped -
|
|
9390
|
-
// a deliberate availability trade (the refusal is free, but it is still a
|
|
9391
|
-
// dispatch the operator previously suppressed), so flipping toward it is an
|
|
9392
|
-
// audited change (ADR-0022 sensitive-flag confirm).
|
|
9393
|
-
sensitive: true,
|
|
9394
|
-
// ENG-8149 / ENG-8229: the agt-cli that first carries
|
|
9395
|
-
// resolveUsageLimitReactiveMode in ALL THREE channel servers - published from
|
|
9396
|
-
// the ENG-8207 merge 0294fa1a8. Without this the flip-reach modal reports FULL
|
|
9397
|
-
// reach, because an undefined `since` means "every host can honour it" - true
|
|
9398
|
-
// for flags that predate the reach work, wrong for a NEW host-read flag whose
|
|
9399
|
-
// reader older hosts simply do not have. Excluded from projectDefinition, so
|
|
9400
|
-
// setting it does not roll FLAGS_SCHEMA_VERSION.
|
|
9401
|
-
//
|
|
9402
|
-
// Deliberately the LATER of the two versions this flag's reader shipped in.
|
|
9403
|
-
// Unlike its siblings, this reader landed in two stages: direct-chat at the
|
|
9404
|
-
// ENG-8201 Slice 2 publish, slack + telegram only at 0.28.450 (ENG-8207) - and
|
|
9405
|
-
// `since` is one version per flag, so it cannot express "partially honoured".
|
|
9406
|
-
// A host in between genuinely honours the flag for direct-chat and is still
|
|
9407
|
-
// classified `stale`. That understates reach rather than overstating it, which
|
|
9408
|
-
// is the safe direction, and it is the useful one while the flag sits at
|
|
9409
|
-
// enforce and slack/telegram adoption is what an operator needs to track.
|
|
9410
|
-
since: "0.28.450"
|
|
9411
|
-
},
|
|
9412
9373
|
{
|
|
9413
9374
|
key: "slack-hot-thread-guard",
|
|
9414
9375
|
description: "Server-side hot-thread guard on the slack.reply surface (ENG-7462). Prevents an agent posting a NEW top-level Slack message when it meant to reply inside the thread it is already working in - a prompt/memory rule proved insufficient (the agent had the rule and still slipped). When a reply would otherwise post to channel ROOT (no thread_ts / message_ts / inbound_id, no active kanban card) and the agent has a recent active thread in that channel (its last bot-posted thread, from the persisted trackedThreads cache, within a freshness window), the reply is redirected into that thread. proactive:true no longer implies channel root; posting at root becomes a deliberate action (the to_channel_root flag, or the thread_ts:null sentinel). off = guard never runs, replies with no coords root exactly as today (ships dark). shadow = compute + log the would-redirect but STILL post to root (measure the fire rate before acting). enforce = apply the redirect (a soft-block: redirect + inform, never a hard rejection). Read live from the heartbeat flags-cache (or the env override); enforce is a deliberate per-org flip after a shadow soak.",
|
|
@@ -13274,7 +13235,7 @@ function restartEgressSidecar(codeName) {
|
|
|
13274
13235
|
}
|
|
13275
13236
|
}
|
|
13276
13237
|
function buildDockerRunCommand(args) {
|
|
13277
|
-
const { codeName, agentId, wrapperPath, projectDir, homeDir, runId, passApiKey, passOpenRouter, egress, forwardSlackReplyBinding, forwardBlockTurnEndAllMarkers, forwardKanbanWaiting, forwardNotifyDispatch,
|
|
13238
|
+
const { codeName, agentId, wrapperPath, projectDir, homeDir, runId, passApiKey, passOpenRouter, egress, forwardSlackReplyBinding, forwardBlockTurnEndAllMarkers, forwardKanbanWaiting, forwardNotifyDispatch, forwardTurnFailureNotice } = args;
|
|
13278
13239
|
const q = (s) => `'${s.replace(/'/g, `'\\''`)}'`;
|
|
13279
13240
|
const agentDir2 = join5(homeDir, ".augmented", codeName);
|
|
13280
13241
|
const agentIdDir = join5(homeDir, ".augmented", agentId);
|
|
@@ -13311,7 +13272,6 @@ function buildDockerRunCommand(args) {
|
|
|
13311
13272
|
if (forwardBlockTurnEndAllMarkers) envArgs.push("-e AGT_BLOCK_TURN_END_ALL_MARKERS_ENABLED");
|
|
13312
13273
|
if (forwardKanbanWaiting) envArgs.push("-e AGT_KANBAN_WAITING_ENABLED");
|
|
13313
13274
|
if (forwardNotifyDispatch) envArgs.push("-e AGT_NOTIFY_DISPATCH");
|
|
13314
|
-
if (forwardUsageLimitReactive) envArgs.push("-e AGT_USAGE_LIMIT_REACTIVE_MODE");
|
|
13315
13275
|
if (forwardTurnFailureNotice) envArgs.push("-e AGT_WEDGE_TRANSIENT_NOTICE_ENABLED");
|
|
13316
13276
|
const egressImage = process.env.AGT_EGRESS_IMAGE || "agt-squid:latest";
|
|
13317
13277
|
const internalNet = `agt-net-${codeName}`;
|
|
@@ -13666,12 +13626,6 @@ function spawnSession(config, session) {
|
|
|
13666
13626
|
if (config.notifyDispatchMode && config.notifyDispatchMode !== "off" && !process.env["AGT_NOTIFY_DISPATCH"]) {
|
|
13667
13627
|
tmuxSessionEnvArgs.push("-e", `AGT_NOTIFY_DISPATCH=${config.notifyDispatchMode}`);
|
|
13668
13628
|
}
|
|
13669
|
-
if (config.usageLimitReactiveMode && config.usageLimitReactiveMode !== "off" && !process.env["AGT_USAGE_LIMIT_REACTIVE_MODE"]) {
|
|
13670
|
-
tmuxSessionEnvArgs.push(
|
|
13671
|
-
"-e",
|
|
13672
|
-
`AGT_USAGE_LIMIT_REACTIVE_MODE=${config.usageLimitReactiveMode}`
|
|
13673
|
-
);
|
|
13674
|
-
}
|
|
13675
13629
|
if (config.turnFailureNoticeEnabled && !process.env["AGT_WEDGE_TRANSIENT_NOTICE_ENABLED"]) {
|
|
13676
13630
|
tmuxSessionEnvArgs.push("-e", "AGT_WEDGE_TRANSIENT_NOTICE_ENABLED=true");
|
|
13677
13631
|
}
|
|
@@ -13708,12 +13662,6 @@ function spawnSession(config, session) {
|
|
|
13708
13662
|
// the session env (operator-set OR materialized from the flag above).
|
|
13709
13663
|
forwardNotifyDispatch: !!process.env["AGT_NOTIFY_DISPATCH"] || // feature-gate-allow: registry-flag envVar operator-override precedence, not a new gate
|
|
13710
13664
|
!!config.notifyDispatchMode && config.notifyDispatchMode !== "off",
|
|
13711
|
-
// ENG-8201: forward AGT_USAGE_LIMIT_REACTIVE_MODE if it will be in the
|
|
13712
|
-
// session env (operator-set OR materialized from the flag above). This
|
|
13713
|
-
// is the ONLY way the flag reaches an isolated agent — the flags-cache
|
|
13714
|
-
// is not in the container's mount set.
|
|
13715
|
-
forwardUsageLimitReactive: !!process.env["AGT_USAGE_LIMIT_REACTIVE_MODE"] || // feature-gate-allow: registry-flag envVar operator-override precedence, not a new gate
|
|
13716
|
-
!!config.usageLimitReactiveMode && config.usageLimitReactiveMode !== "off",
|
|
13717
13665
|
// ENG-8269: forward AGT_WEDGE_TRANSIENT_NOTICE_ENABLED if it will be in
|
|
13718
13666
|
// the session env (operator-set OR materialized from the flag above).
|
|
13719
13667
|
// Without this the tmux-level materialization above stops at the
|
|
@@ -14409,10 +14357,6 @@ export {
|
|
|
14409
14357
|
sumTranscriptUsageInWindow,
|
|
14410
14358
|
isEmptyTotals,
|
|
14411
14359
|
attributeTranscriptUsageByRun,
|
|
14412
|
-
USAGE_LIMIT_MARKER_FILENAME,
|
|
14413
|
-
serializeUsageLimitMarker,
|
|
14414
|
-
parseUsageLimitMarker,
|
|
14415
|
-
resolveUsageLimitUntil,
|
|
14416
14360
|
UNKNOWN_RATE_LIMIT,
|
|
14417
14361
|
pickNewerClassification,
|
|
14418
14362
|
classifyTranscriptRateLimit,
|
|
@@ -14500,4 +14444,4 @@ export {
|
|
|
14500
14444
|
stopAllSessionsAndWait,
|
|
14501
14445
|
getProjectDir
|
|
14502
14446
|
};
|
|
14503
|
-
//# sourceMappingURL=chunk-
|
|
14447
|
+
//# sourceMappingURL=chunk-Q6RVMDAC.js.map
|