@integrity-labs/agt-cli 0.28.508 → 0.28.510
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-LNPJI2AE.js → chunk-7DZNVMMX.js} +53 -22
- package/dist/{chunk-LNPJI2AE.js.map → chunk-7DZNVMMX.js.map} +1 -1
- package/dist/{chunk-GK3TSZ4S.js → chunk-EQW3EHDQ.js} +15 -3
- package/dist/{chunk-GK3TSZ4S.js.map → chunk-EQW3EHDQ.js.map} +1 -1
- package/dist/{claude-pair-runtime-YQ7V5TS6.js → claude-pair-runtime-4CYSUXLF.js} +2 -2
- package/dist/lib/manager-worker.js +23 -11
- package/dist/lib/manager-worker.js.map +1 -1
- package/dist/mcp/direct-chat-channel.js +52 -21
- package/dist/mcp/index.js +10 -0
- package/dist/mcp/origami.js +52 -21
- package/dist/mcp/slack-channel.js +52 -21
- package/dist/mcp/telegram-channel.js +52 -21
- package/dist/{persistent-session-VX37ESOS.js → persistent-session-4VF7V4HB.js} +2 -2
- package/dist/{responsiveness-probe-5MEW5XNI.js → responsiveness-probe-PWS3FIRF.js} +2 -2
- package/package.json +1 -1
- /package/dist/{claude-pair-runtime-YQ7V5TS6.js.map → claude-pair-runtime-4CYSUXLF.js.map} +0 -0
- /package/dist/{persistent-session-VX37ESOS.js.map → persistent-session-4VF7V4HB.js.map} +0 -0
- /package/dist/{responsiveness-probe-5MEW5XNI.js.map → responsiveness-probe-PWS3FIRF.js.map} +0 -0
|
@@ -32955,29 +32955,44 @@ var INTEGRATION_REGISTRY = [
|
|
|
32955
32955
|
id: "vercel",
|
|
32956
32956
|
name: "Vercel",
|
|
32957
32957
|
category: "infrastructure",
|
|
32958
|
-
description: "Check on Vercel app deployments \u2014 status, build
|
|
32959
|
-
//
|
|
32960
|
-
//
|
|
32961
|
-
|
|
32958
|
+
description: "Check on Vercel app deployments \u2014 what's live, deployment status, and build logs \u2014 through Vercel's REST API with your own API token.",
|
|
32959
|
+
// ENG-8421: api_key, NOT the host-brokered MCP this used to be.
|
|
32960
|
+
//
|
|
32961
|
+
// Vercel MCP (`https://mcp.vercel.com`) is not completable from the
|
|
32962
|
+
// console, and that is a vendor constraint rather than a gap in our
|
|
32963
|
+
// plumbing. Established empirically 2026-08-03: Dynamic Client
|
|
32964
|
+
// Registration REJECTS an https redirect (`invalid_redirect_uri` — "not
|
|
32965
|
+
// approved for use by this authorization server") and ACCEPTS only
|
|
32966
|
+
// localhost; the device-code grant, the one flow needing no redirect, is
|
|
32967
|
+
// refused to DCR clients (`unauthorized_client`). So the only client
|
|
32968
|
+
// Vercel permits is a local one redirecting to its own ephemeral port —
|
|
32969
|
+
// i.e. Claude Code on the agent's host, driven by an operator running
|
|
32970
|
+
// `/mcp` in tmux. No console work can remove that step.
|
|
32971
|
+
//
|
|
32972
|
+
// The REST API has none of those constraints: plain bearer auth
|
|
32973
|
+
// (unauthenticated → `{"code":"forbidden","missingToken":true}`, bogus
|
|
32974
|
+
// bearer → `{"invalidToken":true}`), so a token the customer creates in
|
|
32975
|
+
// their own Vercel dashboard works directly. That makes this an ordinary
|
|
32976
|
+
// paste-a-key integration, and it means WE hold the credential — so it can
|
|
32977
|
+
// be stored, rotated, revoked and audited, none of which was true when the
|
|
32978
|
+
// grant lived in Claude Code's `~/.claude.json` on the host.
|
|
32979
|
+
//
|
|
32980
|
+
// Tools are declared as data on `integration_definitions.metadata.tools`
|
|
32981
|
+
// and dispatch through the existing Direct HTTP broker (the v0 pattern) —
|
|
32982
|
+
// there is deliberately no bespoke Vercel client and no bespoke broker.
|
|
32983
|
+
supported_auth_types: ["api_key"],
|
|
32962
32984
|
capabilities: [
|
|
32963
|
-
{ id: "vercel:read-deployments", name: "Read Deployments", description: "List teams/projects, check deployment status, and read build
|
|
32964
|
-
{ id: "vercel:search-docs", name: "Search Documentation", description: "Search Vercel platform documentation.", access: "read" }
|
|
32985
|
+
{ id: "vercel:read-deployments", name: "Read Deployments", description: "List teams/projects, check deployment status, and read build logs.", access: "read" }
|
|
32965
32986
|
],
|
|
32966
|
-
docs_url: "https://vercel.com/docs/
|
|
32967
|
-
// Beta until the
|
|
32968
|
-
//
|
|
32969
|
-
|
|
32970
|
-
|
|
32971
|
-
//
|
|
32972
|
-
//
|
|
32973
|
-
//
|
|
32974
|
-
//
|
|
32975
|
-
// `registryRemoteMcpKeys` prune universe automatically, so an uninstall
|
|
32976
|
-
// actually removes the entry instead of leaving it stale.
|
|
32977
|
-
remoteMcp: {
|
|
32978
|
-
type: "http",
|
|
32979
|
-
url: "https://mcp.vercel.com"
|
|
32980
|
-
}
|
|
32987
|
+
docs_url: "https://vercel.com/docs/rest-api",
|
|
32988
|
+
// Beta until the REST tool surface has been exercised against a real
|
|
32989
|
+
// customer token. (The previous reason — "until the headless OAuth flow is
|
|
32990
|
+
// verified end-to-end" — is void: there is no OAuth flow any more.)
|
|
32991
|
+
beta: true
|
|
32992
|
+
// NO `remoteMcp`. See the tombstone in the claudecode adapter's prune
|
|
32993
|
+
// universe: dropping this field also drops `vercel` from
|
|
32994
|
+
// `registryRemoteMcpKeys`, which would strand the `.mcp.json` entry on
|
|
32995
|
+
// every host that installed the MCP variant.
|
|
32981
32996
|
},
|
|
32982
32997
|
{
|
|
32983
32998
|
id: "qmd",
|
|
@@ -34980,6 +34995,22 @@ var FLAG_REGISTRY = [
|
|
|
34980
34995
|
// safe: `since` is excluded from projectDefinition, so it does not roll
|
|
34981
34996
|
// FLAGS_SCHEMA_VERSION.
|
|
34982
34997
|
},
|
|
34998
|
+
{
|
|
34999
|
+
key: "agt-version-drift-alarm",
|
|
35000
|
+
description: "Arms the ENG-8341 agt CLI version-drift alert. When a host has fallen behind its EFFECTIVE target (env pin > DB pin > release channel) across two or more of its OWN maintenance windows, the monitor opens a host_agt_version_drift alert. OBSERVE-FIRST rollout gate: the cron computes and LOGS the drift for every host on every run regardless of this flag, so the real fleet spread is measurable before anyone is paged - the ticket asks for the threshold to be set from observed data rather than a guess. Off = compute and log, open nothing. Boolean gate; ships dark. Evaluated API-side, in the cron.",
|
|
35001
|
+
flagType: "boolean",
|
|
35002
|
+
// Declared safe value is `false`. Fail-safe direction for a NEW alerting
|
|
35003
|
+
// cron is silence: ~21 hosts with no prior drift signal means the first
|
|
35004
|
+
// armed pass could open an alert for every host that is behind at once.
|
|
35005
|
+
// The cron also carries a bootstrap floor (agent-stall-monitor.ts's
|
|
35006
|
+
// precedent) so arming it does not retroactively page for drift that
|
|
35007
|
+
// started before the monitor existed.
|
|
35008
|
+
defaultValue: false,
|
|
35009
|
+
// Arming this makes a previously-invisible backlog visible all at once, in
|
|
35010
|
+
// the same shape ENG-8204's never-spawned-session-metric warned about - so
|
|
35011
|
+
// the flip is a deliberate, confirmed one (ADR-0022 sensitive-flag confirm).
|
|
35012
|
+
sensitive: true
|
|
35013
|
+
},
|
|
34983
35014
|
{
|
|
34984
35015
|
key: "memory-extraction",
|
|
34985
35016
|
description: "Host-side durable-memory extraction (ENG-6200): the manager extracts candidate memories from completed conversations and POSTs them to /host/memories/candidates, which writes dream_log via promoteCandidates. Post persistent-session cutover this is the ONLY live consolidation path. Boolean gate; ships dark \u2014 when off the manager runs no extraction, so 0 dream_log rows fleet-wide is the expected steady state until it is armed.",
|
package/dist/mcp/index.js
CHANGED
|
@@ -21500,6 +21500,16 @@ function describeReconnectRequestResult(resp) {
|
|
|
21500
21500
|
text: "A reconnect request for this integration was already sent recently, so no new notification went out. Stop retrying the failing tool and wait for the reconnect.",
|
|
21501
21501
|
isError: false
|
|
21502
21502
|
};
|
|
21503
|
+
case "notified_disputed":
|
|
21504
|
+
return {
|
|
21505
|
+
text: "Reconnect request sent. Note that the platform still shows this integration as connected, so your report and the stored status disagree \u2014 your manager has been notified with both, and with the error you reported. Stop retrying the failing tool; a human has to resolve the disagreement.",
|
|
21506
|
+
isError: false
|
|
21507
|
+
};
|
|
21508
|
+
// CS-1542: retained for older API stages that still return it. The route no
|
|
21509
|
+
// longer emits `healthy` - a stored status is not a probe, so it is not
|
|
21510
|
+
// allowed to end the request - but a host can run a newer CLI than the API
|
|
21511
|
+
// it talks to, and the previous copy ("no reconnect request was sent") is
|
|
21512
|
+
// the honest thing to say if this ever does come back.
|
|
21503
21513
|
case "healthy":
|
|
21504
21514
|
return {
|
|
21505
21515
|
text: "The platform shows this integration as connected, so no reconnect request was sent. If the tool is still failing, tell your operator exactly what error you saw instead of retrying.",
|
package/dist/mcp/origami.js
CHANGED
|
@@ -39282,29 +39282,44 @@ var INTEGRATION_REGISTRY = [
|
|
|
39282
39282
|
id: "vercel",
|
|
39283
39283
|
name: "Vercel",
|
|
39284
39284
|
category: "infrastructure",
|
|
39285
|
-
description: "Check on Vercel app deployments \u2014 status, build
|
|
39286
|
-
//
|
|
39287
|
-
//
|
|
39288
|
-
|
|
39285
|
+
description: "Check on Vercel app deployments \u2014 what's live, deployment status, and build logs \u2014 through Vercel's REST API with your own API token.",
|
|
39286
|
+
// ENG-8421: api_key, NOT the host-brokered MCP this used to be.
|
|
39287
|
+
//
|
|
39288
|
+
// Vercel MCP (`https://mcp.vercel.com`) is not completable from the
|
|
39289
|
+
// console, and that is a vendor constraint rather than a gap in our
|
|
39290
|
+
// plumbing. Established empirically 2026-08-03: Dynamic Client
|
|
39291
|
+
// Registration REJECTS an https redirect (`invalid_redirect_uri` — "not
|
|
39292
|
+
// approved for use by this authorization server") and ACCEPTS only
|
|
39293
|
+
// localhost; the device-code grant, the one flow needing no redirect, is
|
|
39294
|
+
// refused to DCR clients (`unauthorized_client`). So the only client
|
|
39295
|
+
// Vercel permits is a local one redirecting to its own ephemeral port —
|
|
39296
|
+
// i.e. Claude Code on the agent's host, driven by an operator running
|
|
39297
|
+
// `/mcp` in tmux. No console work can remove that step.
|
|
39298
|
+
//
|
|
39299
|
+
// The REST API has none of those constraints: plain bearer auth
|
|
39300
|
+
// (unauthenticated → `{"code":"forbidden","missingToken":true}`, bogus
|
|
39301
|
+
// bearer → `{"invalidToken":true}`), so a token the customer creates in
|
|
39302
|
+
// their own Vercel dashboard works directly. That makes this an ordinary
|
|
39303
|
+
// paste-a-key integration, and it means WE hold the credential — so it can
|
|
39304
|
+
// be stored, rotated, revoked and audited, none of which was true when the
|
|
39305
|
+
// grant lived in Claude Code's `~/.claude.json` on the host.
|
|
39306
|
+
//
|
|
39307
|
+
// Tools are declared as data on `integration_definitions.metadata.tools`
|
|
39308
|
+
// and dispatch through the existing Direct HTTP broker (the v0 pattern) —
|
|
39309
|
+
// there is deliberately no bespoke Vercel client and no bespoke broker.
|
|
39310
|
+
supported_auth_types: ["api_key"],
|
|
39289
39311
|
capabilities: [
|
|
39290
|
-
{ id: "vercel:read-deployments", name: "Read Deployments", description: "List teams/projects, check deployment status, and read build
|
|
39291
|
-
{ id: "vercel:search-docs", name: "Search Documentation", description: "Search Vercel platform documentation.", access: "read" }
|
|
39312
|
+
{ id: "vercel:read-deployments", name: "Read Deployments", description: "List teams/projects, check deployment status, and read build logs.", access: "read" }
|
|
39292
39313
|
],
|
|
39293
|
-
docs_url: "https://vercel.com/docs/
|
|
39294
|
-
// Beta until the
|
|
39295
|
-
//
|
|
39296
|
-
|
|
39297
|
-
|
|
39298
|
-
//
|
|
39299
|
-
//
|
|
39300
|
-
//
|
|
39301
|
-
//
|
|
39302
|
-
// `registryRemoteMcpKeys` prune universe automatically, so an uninstall
|
|
39303
|
-
// actually removes the entry instead of leaving it stale.
|
|
39304
|
-
remoteMcp: {
|
|
39305
|
-
type: "http",
|
|
39306
|
-
url: "https://mcp.vercel.com"
|
|
39307
|
-
}
|
|
39314
|
+
docs_url: "https://vercel.com/docs/rest-api",
|
|
39315
|
+
// Beta until the REST tool surface has been exercised against a real
|
|
39316
|
+
// customer token. (The previous reason — "until the headless OAuth flow is
|
|
39317
|
+
// verified end-to-end" — is void: there is no OAuth flow any more.)
|
|
39318
|
+
beta: true
|
|
39319
|
+
// NO `remoteMcp`. See the tombstone in the claudecode adapter's prune
|
|
39320
|
+
// universe: dropping this field also drops `vercel` from
|
|
39321
|
+
// `registryRemoteMcpKeys`, which would strand the `.mcp.json` entry on
|
|
39322
|
+
// every host that installed the MCP variant.
|
|
39308
39323
|
},
|
|
39309
39324
|
{
|
|
39310
39325
|
id: "qmd",
|
|
@@ -40871,6 +40886,22 @@ var FLAG_REGISTRY = [
|
|
|
40871
40886
|
// safe: `since` is excluded from projectDefinition, so it does not roll
|
|
40872
40887
|
// FLAGS_SCHEMA_VERSION.
|
|
40873
40888
|
},
|
|
40889
|
+
{
|
|
40890
|
+
key: "agt-version-drift-alarm",
|
|
40891
|
+
description: "Arms the ENG-8341 agt CLI version-drift alert. When a host has fallen behind its EFFECTIVE target (env pin > DB pin > release channel) across two or more of its OWN maintenance windows, the monitor opens a host_agt_version_drift alert. OBSERVE-FIRST rollout gate: the cron computes and LOGS the drift for every host on every run regardless of this flag, so the real fleet spread is measurable before anyone is paged - the ticket asks for the threshold to be set from observed data rather than a guess. Off = compute and log, open nothing. Boolean gate; ships dark. Evaluated API-side, in the cron.",
|
|
40892
|
+
flagType: "boolean",
|
|
40893
|
+
// Declared safe value is `false`. Fail-safe direction for a NEW alerting
|
|
40894
|
+
// cron is silence: ~21 hosts with no prior drift signal means the first
|
|
40895
|
+
// armed pass could open an alert for every host that is behind at once.
|
|
40896
|
+
// The cron also carries a bootstrap floor (agent-stall-monitor.ts's
|
|
40897
|
+
// precedent) so arming it does not retroactively page for drift that
|
|
40898
|
+
// started before the monitor existed.
|
|
40899
|
+
defaultValue: false,
|
|
40900
|
+
// Arming this makes a previously-invisible backlog visible all at once, in
|
|
40901
|
+
// the same shape ENG-8204's never-spawned-session-metric warned about - so
|
|
40902
|
+
// the flip is a deliberate, confirmed one (ADR-0022 sensitive-flag confirm).
|
|
40903
|
+
sensitive: true
|
|
40904
|
+
},
|
|
40874
40905
|
{
|
|
40875
40906
|
key: "memory-extraction",
|
|
40876
40907
|
description: "Host-side durable-memory extraction (ENG-6200): the manager extracts candidate memories from completed conversations and POSTs them to /host/memories/candidates, which writes dream_log via promoteCandidates. Post persistent-session cutover this is the ONLY live consolidation path. Boolean gate; ships dark \u2014 when off the manager runs no extraction, so 0 dream_log rows fleet-wide is the expected steady state until it is armed.",
|
|
@@ -33177,29 +33177,44 @@ var INTEGRATION_REGISTRY = [
|
|
|
33177
33177
|
id: "vercel",
|
|
33178
33178
|
name: "Vercel",
|
|
33179
33179
|
category: "infrastructure",
|
|
33180
|
-
description: "Check on Vercel app deployments \u2014 status, build
|
|
33181
|
-
//
|
|
33182
|
-
//
|
|
33183
|
-
|
|
33180
|
+
description: "Check on Vercel app deployments \u2014 what's live, deployment status, and build logs \u2014 through Vercel's REST API with your own API token.",
|
|
33181
|
+
// ENG-8421: api_key, NOT the host-brokered MCP this used to be.
|
|
33182
|
+
//
|
|
33183
|
+
// Vercel MCP (`https://mcp.vercel.com`) is not completable from the
|
|
33184
|
+
// console, and that is a vendor constraint rather than a gap in our
|
|
33185
|
+
// plumbing. Established empirically 2026-08-03: Dynamic Client
|
|
33186
|
+
// Registration REJECTS an https redirect (`invalid_redirect_uri` — "not
|
|
33187
|
+
// approved for use by this authorization server") and ACCEPTS only
|
|
33188
|
+
// localhost; the device-code grant, the one flow needing no redirect, is
|
|
33189
|
+
// refused to DCR clients (`unauthorized_client`). So the only client
|
|
33190
|
+
// Vercel permits is a local one redirecting to its own ephemeral port —
|
|
33191
|
+
// i.e. Claude Code on the agent's host, driven by an operator running
|
|
33192
|
+
// `/mcp` in tmux. No console work can remove that step.
|
|
33193
|
+
//
|
|
33194
|
+
// The REST API has none of those constraints: plain bearer auth
|
|
33195
|
+
// (unauthenticated → `{"code":"forbidden","missingToken":true}`, bogus
|
|
33196
|
+
// bearer → `{"invalidToken":true}`), so a token the customer creates in
|
|
33197
|
+
// their own Vercel dashboard works directly. That makes this an ordinary
|
|
33198
|
+
// paste-a-key integration, and it means WE hold the credential — so it can
|
|
33199
|
+
// be stored, rotated, revoked and audited, none of which was true when the
|
|
33200
|
+
// grant lived in Claude Code's `~/.claude.json` on the host.
|
|
33201
|
+
//
|
|
33202
|
+
// Tools are declared as data on `integration_definitions.metadata.tools`
|
|
33203
|
+
// and dispatch through the existing Direct HTTP broker (the v0 pattern) —
|
|
33204
|
+
// there is deliberately no bespoke Vercel client and no bespoke broker.
|
|
33205
|
+
supported_auth_types: ["api_key"],
|
|
33184
33206
|
capabilities: [
|
|
33185
|
-
{ id: "vercel:read-deployments", name: "Read Deployments", description: "List teams/projects, check deployment status, and read build
|
|
33186
|
-
{ id: "vercel:search-docs", name: "Search Documentation", description: "Search Vercel platform documentation.", access: "read" }
|
|
33207
|
+
{ id: "vercel:read-deployments", name: "Read Deployments", description: "List teams/projects, check deployment status, and read build logs.", access: "read" }
|
|
33187
33208
|
],
|
|
33188
|
-
docs_url: "https://vercel.com/docs/
|
|
33189
|
-
// Beta until the
|
|
33190
|
-
//
|
|
33191
|
-
|
|
33192
|
-
|
|
33193
|
-
//
|
|
33194
|
-
//
|
|
33195
|
-
//
|
|
33196
|
-
//
|
|
33197
|
-
// `registryRemoteMcpKeys` prune universe automatically, so an uninstall
|
|
33198
|
-
// actually removes the entry instead of leaving it stale.
|
|
33199
|
-
remoteMcp: {
|
|
33200
|
-
type: "http",
|
|
33201
|
-
url: "https://mcp.vercel.com"
|
|
33202
|
-
}
|
|
33209
|
+
docs_url: "https://vercel.com/docs/rest-api",
|
|
33210
|
+
// Beta until the REST tool surface has been exercised against a real
|
|
33211
|
+
// customer token. (The previous reason — "until the headless OAuth flow is
|
|
33212
|
+
// verified end-to-end" — is void: there is no OAuth flow any more.)
|
|
33213
|
+
beta: true
|
|
33214
|
+
// NO `remoteMcp`. See the tombstone in the claudecode adapter's prune
|
|
33215
|
+
// universe: dropping this field also drops `vercel` from
|
|
33216
|
+
// `registryRemoteMcpKeys`, which would strand the `.mcp.json` entry on
|
|
33217
|
+
// every host that installed the MCP variant.
|
|
33203
33218
|
},
|
|
33204
33219
|
{
|
|
33205
33220
|
id: "qmd",
|
|
@@ -35149,6 +35164,22 @@ var FLAG_REGISTRY = [
|
|
|
35149
35164
|
// safe: `since` is excluded from projectDefinition, so it does not roll
|
|
35150
35165
|
// FLAGS_SCHEMA_VERSION.
|
|
35151
35166
|
},
|
|
35167
|
+
{
|
|
35168
|
+
key: "agt-version-drift-alarm",
|
|
35169
|
+
description: "Arms the ENG-8341 agt CLI version-drift alert. When a host has fallen behind its EFFECTIVE target (env pin > DB pin > release channel) across two or more of its OWN maintenance windows, the monitor opens a host_agt_version_drift alert. OBSERVE-FIRST rollout gate: the cron computes and LOGS the drift for every host on every run regardless of this flag, so the real fleet spread is measurable before anyone is paged - the ticket asks for the threshold to be set from observed data rather than a guess. Off = compute and log, open nothing. Boolean gate; ships dark. Evaluated API-side, in the cron.",
|
|
35170
|
+
flagType: "boolean",
|
|
35171
|
+
// Declared safe value is `false`. Fail-safe direction for a NEW alerting
|
|
35172
|
+
// cron is silence: ~21 hosts with no prior drift signal means the first
|
|
35173
|
+
// armed pass could open an alert for every host that is behind at once.
|
|
35174
|
+
// The cron also carries a bootstrap floor (agent-stall-monitor.ts's
|
|
35175
|
+
// precedent) so arming it does not retroactively page for drift that
|
|
35176
|
+
// started before the monitor existed.
|
|
35177
|
+
defaultValue: false,
|
|
35178
|
+
// Arming this makes a previously-invisible backlog visible all at once, in
|
|
35179
|
+
// the same shape ENG-8204's never-spawned-session-metric warned about - so
|
|
35180
|
+
// the flip is a deliberate, confirmed one (ADR-0022 sensitive-flag confirm).
|
|
35181
|
+
sensitive: true
|
|
35182
|
+
},
|
|
35152
35183
|
{
|
|
35153
35184
|
key: "memory-extraction",
|
|
35154
35185
|
description: "Host-side durable-memory extraction (ENG-6200): the manager extracts candidate memories from completed conversations and POSTs them to /host/memories/candidates, which writes dream_log via promoteCandidates. Post persistent-session cutover this is the ONLY live consolidation path. Boolean gate; ships dark \u2014 when off the manager runs no extraction, so 0 dream_log rows fleet-wide is the expected steady state until it is armed.",
|
|
@@ -33503,29 +33503,44 @@ var INTEGRATION_REGISTRY = [
|
|
|
33503
33503
|
id: "vercel",
|
|
33504
33504
|
name: "Vercel",
|
|
33505
33505
|
category: "infrastructure",
|
|
33506
|
-
description: "Check on Vercel app deployments \u2014 status, build
|
|
33507
|
-
//
|
|
33508
|
-
//
|
|
33509
|
-
|
|
33506
|
+
description: "Check on Vercel app deployments \u2014 what's live, deployment status, and build logs \u2014 through Vercel's REST API with your own API token.",
|
|
33507
|
+
// ENG-8421: api_key, NOT the host-brokered MCP this used to be.
|
|
33508
|
+
//
|
|
33509
|
+
// Vercel MCP (`https://mcp.vercel.com`) is not completable from the
|
|
33510
|
+
// console, and that is a vendor constraint rather than a gap in our
|
|
33511
|
+
// plumbing. Established empirically 2026-08-03: Dynamic Client
|
|
33512
|
+
// Registration REJECTS an https redirect (`invalid_redirect_uri` — "not
|
|
33513
|
+
// approved for use by this authorization server") and ACCEPTS only
|
|
33514
|
+
// localhost; the device-code grant, the one flow needing no redirect, is
|
|
33515
|
+
// refused to DCR clients (`unauthorized_client`). So the only client
|
|
33516
|
+
// Vercel permits is a local one redirecting to its own ephemeral port —
|
|
33517
|
+
// i.e. Claude Code on the agent's host, driven by an operator running
|
|
33518
|
+
// `/mcp` in tmux. No console work can remove that step.
|
|
33519
|
+
//
|
|
33520
|
+
// The REST API has none of those constraints: plain bearer auth
|
|
33521
|
+
// (unauthenticated → `{"code":"forbidden","missingToken":true}`, bogus
|
|
33522
|
+
// bearer → `{"invalidToken":true}`), so a token the customer creates in
|
|
33523
|
+
// their own Vercel dashboard works directly. That makes this an ordinary
|
|
33524
|
+
// paste-a-key integration, and it means WE hold the credential — so it can
|
|
33525
|
+
// be stored, rotated, revoked and audited, none of which was true when the
|
|
33526
|
+
// grant lived in Claude Code's `~/.claude.json` on the host.
|
|
33527
|
+
//
|
|
33528
|
+
// Tools are declared as data on `integration_definitions.metadata.tools`
|
|
33529
|
+
// and dispatch through the existing Direct HTTP broker (the v0 pattern) —
|
|
33530
|
+
// there is deliberately no bespoke Vercel client and no bespoke broker.
|
|
33531
|
+
supported_auth_types: ["api_key"],
|
|
33510
33532
|
capabilities: [
|
|
33511
|
-
{ id: "vercel:read-deployments", name: "Read Deployments", description: "List teams/projects, check deployment status, and read build
|
|
33512
|
-
{ id: "vercel:search-docs", name: "Search Documentation", description: "Search Vercel platform documentation.", access: "read" }
|
|
33533
|
+
{ id: "vercel:read-deployments", name: "Read Deployments", description: "List teams/projects, check deployment status, and read build logs.", access: "read" }
|
|
33513
33534
|
],
|
|
33514
|
-
docs_url: "https://vercel.com/docs/
|
|
33515
|
-
// Beta until the
|
|
33516
|
-
//
|
|
33517
|
-
|
|
33518
|
-
|
|
33519
|
-
//
|
|
33520
|
-
//
|
|
33521
|
-
//
|
|
33522
|
-
//
|
|
33523
|
-
// `registryRemoteMcpKeys` prune universe automatically, so an uninstall
|
|
33524
|
-
// actually removes the entry instead of leaving it stale.
|
|
33525
|
-
remoteMcp: {
|
|
33526
|
-
type: "http",
|
|
33527
|
-
url: "https://mcp.vercel.com"
|
|
33528
|
-
}
|
|
33535
|
+
docs_url: "https://vercel.com/docs/rest-api",
|
|
33536
|
+
// Beta until the REST tool surface has been exercised against a real
|
|
33537
|
+
// customer token. (The previous reason — "until the headless OAuth flow is
|
|
33538
|
+
// verified end-to-end" — is void: there is no OAuth flow any more.)
|
|
33539
|
+
beta: true
|
|
33540
|
+
// NO `remoteMcp`. See the tombstone in the claudecode adapter's prune
|
|
33541
|
+
// universe: dropping this field also drops `vercel` from
|
|
33542
|
+
// `registryRemoteMcpKeys`, which would strand the `.mcp.json` entry on
|
|
33543
|
+
// every host that installed the MCP variant.
|
|
33529
33544
|
},
|
|
33530
33545
|
{
|
|
33531
33546
|
id: "qmd",
|
|
@@ -35475,6 +35490,22 @@ var FLAG_REGISTRY = [
|
|
|
35475
35490
|
// safe: `since` is excluded from projectDefinition, so it does not roll
|
|
35476
35491
|
// FLAGS_SCHEMA_VERSION.
|
|
35477
35492
|
},
|
|
35493
|
+
{
|
|
35494
|
+
key: "agt-version-drift-alarm",
|
|
35495
|
+
description: "Arms the ENG-8341 agt CLI version-drift alert. When a host has fallen behind its EFFECTIVE target (env pin > DB pin > release channel) across two or more of its OWN maintenance windows, the monitor opens a host_agt_version_drift alert. OBSERVE-FIRST rollout gate: the cron computes and LOGS the drift for every host on every run regardless of this flag, so the real fleet spread is measurable before anyone is paged - the ticket asks for the threshold to be set from observed data rather than a guess. Off = compute and log, open nothing. Boolean gate; ships dark. Evaluated API-side, in the cron.",
|
|
35496
|
+
flagType: "boolean",
|
|
35497
|
+
// Declared safe value is `false`. Fail-safe direction for a NEW alerting
|
|
35498
|
+
// cron is silence: ~21 hosts with no prior drift signal means the first
|
|
35499
|
+
// armed pass could open an alert for every host that is behind at once.
|
|
35500
|
+
// The cron also carries a bootstrap floor (agent-stall-monitor.ts's
|
|
35501
|
+
// precedent) so arming it does not retroactively page for drift that
|
|
35502
|
+
// started before the monitor existed.
|
|
35503
|
+
defaultValue: false,
|
|
35504
|
+
// Arming this makes a previously-invisible backlog visible all at once, in
|
|
35505
|
+
// the same shape ENG-8204's never-spawned-session-metric warned about - so
|
|
35506
|
+
// the flip is a deliberate, confirmed one (ADR-0022 sensitive-flag confirm).
|
|
35507
|
+
sensitive: true
|
|
35508
|
+
},
|
|
35478
35509
|
{
|
|
35479
35510
|
key: "memory-extraction",
|
|
35480
35511
|
description: "Host-side durable-memory extraction (ENG-6200): the manager extracts candidate memories from completed conversations and POSTs them to /host/memories/candidates, which writes dream_log via promoteCandidates. Post persistent-session cutover this is the ONLY live consolidation path. Boolean gate; ships dark \u2014 when off the manager runs no extraction, so 0 dream_log rows fleet-wide is the expected steady state until it is armed.",
|
|
@@ -37,7 +37,7 @@ import {
|
|
|
37
37
|
writeDirectChatSessionState,
|
|
38
38
|
writeEgressAllowlist,
|
|
39
39
|
writePersistentClaudeWrapper
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-7DZNVMMX.js";
|
|
41
41
|
import "./chunk-XWVM4KPK.js";
|
|
42
42
|
export {
|
|
43
43
|
EGRESS_BASELINE_DOMAINS,
|
|
@@ -79,4 +79,4 @@ export {
|
|
|
79
79
|
writeEgressAllowlist,
|
|
80
80
|
writePersistentClaudeWrapper
|
|
81
81
|
};
|
|
82
|
-
//# sourceMappingURL=persistent-session-
|
|
82
|
+
//# sourceMappingURL=persistent-session-4VF7V4HB.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7DZNVMMX.js";
|
|
4
4
|
import "./chunk-XWVM4KPK.js";
|
|
5
5
|
|
|
6
6
|
// src/lib/responsiveness-probe.ts
|
|
@@ -662,4 +662,4 @@ export {
|
|
|
662
662
|
readAndResetSlackReplyBindingClassifications,
|
|
663
663
|
readAndResetSlackReplyTargetClassifications
|
|
664
664
|
};
|
|
665
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
665
|
+
//# sourceMappingURL=responsiveness-probe-PWS3FIRF.js.map
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|