@integrity-labs/agt-cli 0.28.1082 → 0.28.1084
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-OHLUDXM5.js → chunk-6ZBFVSDC.js} +4 -4
- package/dist/{chunk-Z67TJFO3.js → chunk-NEGFSB2W.js} +137 -3
- package/dist/chunk-NEGFSB2W.js.map +1 -0
- package/dist/{chunk-FLFTBRLE.js → chunk-XJ4JK4C7.js} +2 -2
- package/dist/{claude-pair-runtime-YJCJQQNE.js → claude-pair-runtime-EUFDQGRU.js} +2 -2
- package/dist/lib/manager-worker.js +16 -16
- package/dist/mcp/direct-chat-channel.js +136 -2
- package/dist/mcp/index.js +136 -2
- package/dist/mcp/origami.js +136 -2
- package/dist/mcp/slack-channel.js +136 -2
- package/dist/mcp/telegram-channel.js +136 -2
- package/dist/{persistent-session-FMOFWGZX.js → persistent-session-35BXCGHB.js} +3 -3
- package/dist/{responsiveness-probe-ZTKCVELK.js → responsiveness-probe-VDL3QULE.js} +3 -3
- package/dist/{session-auth-dead-IYV2MKPS.js → session-auth-dead-L7ZD5ZZO.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-Z67TJFO3.js.map +0 -1
- /package/dist/{chunk-OHLUDXM5.js.map → chunk-6ZBFVSDC.js.map} +0 -0
- /package/dist/{chunk-FLFTBRLE.js.map → chunk-XJ4JK4C7.js.map} +0 -0
- /package/dist/{claude-pair-runtime-YJCJQQNE.js.map → claude-pair-runtime-EUFDQGRU.js.map} +0 -0
- /package/dist/{persistent-session-FMOFWGZX.js.map → persistent-session-35BXCGHB.js.map} +0 -0
- /package/dist/{responsiveness-probe-ZTKCVELK.js.map → responsiveness-probe-VDL3QULE.js.map} +0 -0
- /package/dist/{session-auth-dead-IYV2MKPS.js.map → session-auth-dead-L7ZD5ZZO.js.map} +0 -0
package/dist/mcp/origami.js
CHANGED
|
@@ -40819,6 +40819,136 @@ var INTEGRATION_REGISTRY = [
|
|
|
40819
40819
|
// `registryRemoteMcpKeys`, which would strand the `.mcp.json` entry on
|
|
40820
40820
|
// every host that installed the MCP variant.
|
|
40821
40821
|
},
|
|
40822
|
+
{
|
|
40823
|
+
// Quiver (api.quiver.ai) — AI vector graphics: draw an SVG from a prompt,
|
|
40824
|
+
// redraw one from an instruction, trace a raster, add animation.
|
|
40825
|
+
//
|
|
40826
|
+
// PREMIUM (ADR-0031, epic ENG-6920). Ninjafy holds ONE Quiver account whose
|
|
40827
|
+
// key (`QUIVER_ACCOUNT_KEY`) every customer's drawing bills back to, so the
|
|
40828
|
+
// credential is a single platform-held secret and never a per-install one.
|
|
40829
|
+
// `auth_type: 'none'` on the catalog row and `credential_source:
|
|
40830
|
+
// 'platform_env'` on every runtime scope, so `resolveBrokerToken` reads the
|
|
40831
|
+
// env var and skips the install-row lookup entirely.
|
|
40832
|
+
//
|
|
40833
|
+
// Ships DARK: until the secret is set the resolver fails closed with
|
|
40834
|
+
// `platform_credential_missing` and every drawing errors clearly.
|
|
40835
|
+
// Installable but inert, by design — the same posture x-search shipped with.
|
|
40836
|
+
//
|
|
40837
|
+
// WHY IT STOPPED BEING BYO. It launched bring-your-own-key. Premium means WE
|
|
40838
|
+
// pay the vendor, so a customer key would defeat the point: there would be
|
|
40839
|
+
// nothing to meter and nothing to bill. The flip cost nothing because Quiver
|
|
40840
|
+
// had never deployed — zero installs, so none of the origami free→premium
|
|
40841
|
+
// grandfathering applies (there is no cohort whose `credential_source`
|
|
40842
|
+
// default would misclassify them as billed and take the integration dark).
|
|
40843
|
+
// A later BYO tier is possible (ADR-0055, the Firecrawl shape) and would
|
|
40844
|
+
// need its own entitlement gate; it is deliberately not offered now, because
|
|
40845
|
+
// offering two auth types renders a connect picker that does not check
|
|
40846
|
+
// `plans.byo_credentials` (ENG-9236).
|
|
40847
|
+
//
|
|
40848
|
+
// WHY TWO METERS, when the vendor bills in one unit. `credits` is Quiver's
|
|
40849
|
+
// own billing unit and the response carries it per call, so metering it
|
|
40850
|
+
// makes our margin a constant multiple no matter which model an agent picks
|
|
40851
|
+
// — `arrow-1.1-max` costs materially more than `arrow-1.1`, which a flat
|
|
40852
|
+
// per-call price would silently eat. But `credits` is documented as
|
|
40853
|
+
// "omitted for token-priced models, whose measured totals are returned in
|
|
40854
|
+
// `usage`", so a credits-only meter bills those calls at ZERO: free to the
|
|
40855
|
+
// customer, invisible to the budget gate, and with nothing in the ledger to
|
|
40856
|
+
// notice it by. `svg_operation` is the floor that closes that hole — it
|
|
40857
|
+
// fires ONLY when `credits` is absent, so the two can never double-bill the
|
|
40858
|
+
// same call. See `lib/quiver-metering.ts`.
|
|
40859
|
+
id: "quiver",
|
|
40860
|
+
name: "Quiver",
|
|
40861
|
+
category: "media",
|
|
40862
|
+
description: "AI vector graphics \u2014 draw an SVG from a description, redraw an existing one, trace a photo or screenshot into vector shapes, and add animation. Ninjafy manages the Quiver account for you; there is no key to enter.",
|
|
40863
|
+
supported_auth_types: ["none"],
|
|
40864
|
+
docs_url: "https://docs.quiver.ai/developers",
|
|
40865
|
+
capabilities: [
|
|
40866
|
+
{
|
|
40867
|
+
id: "quiver:create",
|
|
40868
|
+
name: "Create and change vector graphics",
|
|
40869
|
+
description: "Draw, redraw, trace and animate SVG artwork. Billed per Quiver credit consumed.",
|
|
40870
|
+
access: "write"
|
|
40871
|
+
},
|
|
40872
|
+
{
|
|
40873
|
+
id: "quiver:read",
|
|
40874
|
+
name: "Read models",
|
|
40875
|
+
description: "List the available drawing models and their per-call credit cost. Free.",
|
|
40876
|
+
access: "read"
|
|
40877
|
+
}
|
|
40878
|
+
],
|
|
40879
|
+
beta: true,
|
|
40880
|
+
// No `installable` on purpose: quiver is a seed integration
|
|
40881
|
+
// (integration-definitions.json), so the seed catalog already makes it
|
|
40882
|
+
// picker-visible. This entry exists to carry the `premium` descriptor that
|
|
40883
|
+
// `isPremiumDefinition` reads — which arms the per-org opt-in gate, the
|
|
40884
|
+
// priced acknowledgement modal and the admin pricing tab. Same reasoning as
|
|
40885
|
+
// social-scraping above.
|
|
40886
|
+
premium: {
|
|
40887
|
+
pricing: "usage",
|
|
40888
|
+
note: "Billed per Quiver credit consumed. Listing models is free; drawing, editing, tracing and animating each debit credits.",
|
|
40889
|
+
meters: [
|
|
40890
|
+
{ event_type: "svg_credits", unit: "credit" },
|
|
40891
|
+
{ event_type: "svg_operation", unit: "operation" }
|
|
40892
|
+
]
|
|
40893
|
+
}
|
|
40894
|
+
},
|
|
40895
|
+
{
|
|
40896
|
+
// theSVG (thesvg.org) — 6,500+ REAL brand marks as SVG, so an agent building
|
|
40897
|
+
// a page can use the actual Stripe/Slack/AWS logo instead of asking a
|
|
40898
|
+
// drawing model for one. That distinction is the whole point of the
|
|
40899
|
+
// integration: an AI-generated "Stripe logo" is a plausible fake, wrong in
|
|
40900
|
+
// the way a customer notices and a trademark owner minds. Original artwork
|
|
40901
|
+
// is Quiver's job; existing marks are this one's.
|
|
40902
|
+
//
|
|
40903
|
+
// WHY A LOCAL STDIO MCP AND NOT THE DIRECT-HTTP LANE. thesvg.org is a
|
|
40904
|
+
// STATIC SITE — its own CLI says so in as many words ("there is no dynamic
|
|
40905
|
+
// API"). The only two endpoints are `/api/registry.json`, the entire
|
|
40906
|
+
// 2.97 MB / 6,523-entry manifest, and `/icons/{slug}/{variant}.svg`. Search
|
|
40907
|
+
// is client-side filtering over that manifest, which the Direct-HTTP broker
|
|
40908
|
+
// cannot do: it forwards the vendor's whole response body to the agent, so
|
|
40909
|
+
// a `search_icons` descriptor would put 2.97 MB of registry into the
|
|
40910
|
+
// agent's context on every call. The vendor's own MCP server bundles the
|
|
40911
|
+
// registry and searches it in-process, which is precisely the shape the
|
|
40912
|
+
// missing API leaves you needing.
|
|
40913
|
+
//
|
|
40914
|
+
// WHY THE VERSION IS PINNED and AWS's is `@latest`: this server's registry
|
|
40915
|
+
// is baked in at BUILD time, so the pin is what decides which icons exist
|
|
40916
|
+
// AND what markup lands on a customer's published page. Bumping it is a
|
|
40917
|
+
// deliberate act that also refreshes the icon set — not a silent
|
|
40918
|
+
// third-party update to artwork we are about to publish under a customer's
|
|
40919
|
+
// domain.
|
|
40920
|
+
//
|
|
40921
|
+
// No credential anywhere: the registry and the jsDelivr CDN the server
|
|
40922
|
+
// fetches SVG from are both public, so `auth_types: ['none']` is the honest
|
|
40923
|
+
// classification rather than the ENG-8440 kind of lie Hard Rule 17 warns
|
|
40924
|
+
// about — there genuinely is no key to enter and the install IS live
|
|
40925
|
+
// immediately.
|
|
40926
|
+
id: "thesvg",
|
|
40927
|
+
name: "theSVG",
|
|
40928
|
+
category: "media",
|
|
40929
|
+
description: "Brand logos and icons as real SVG \u2014 search 6,500+ marks by name and pull the exact artwork, in mono, colour, light, dark or wordmark variants",
|
|
40930
|
+
supported_auth_types: ["none"],
|
|
40931
|
+
docs_url: "https://thesvg.org",
|
|
40932
|
+
capabilities: [
|
|
40933
|
+
{
|
|
40934
|
+
id: "thesvg:read",
|
|
40935
|
+
name: "Find and fetch brand icons",
|
|
40936
|
+
description: "Search the icon library, list an icon's variants and categories, and fetch its SVG markup or CDN URL",
|
|
40937
|
+
access: "read"
|
|
40938
|
+
}
|
|
40939
|
+
],
|
|
40940
|
+
installable: { category: "Media", authTypes: ["none"] },
|
|
40941
|
+
beta: true,
|
|
40942
|
+
// ENG-5815 data-driven path — no buildMcpJson edit, same as AWS.
|
|
40943
|
+
nativeMcp: {
|
|
40944
|
+
command: "npx",
|
|
40945
|
+
args: ["-y", "@thesvg/mcp-server@0.8.2"],
|
|
40946
|
+
env: {
|
|
40947
|
+
PATH: "{{process_env.PATH}}",
|
|
40948
|
+
HOME: "{{process_env.HOME}}"
|
|
40949
|
+
}
|
|
40950
|
+
}
|
|
40951
|
+
},
|
|
40822
40952
|
{
|
|
40823
40953
|
id: "qmd",
|
|
40824
40954
|
name: "QMD Memory Search",
|
|
@@ -41944,6 +42074,10 @@ var NOTICE_KIND_AUDIENCE = {
|
|
|
41944
42074
|
// "Your `<verb>` approval request (`<uuid>`) EXPIRED at …" — in the report,
|
|
41945
42075
|
// uuid and all.
|
|
41946
42076
|
approval_expired: "agent",
|
|
42077
|
+
// ENG-11334: canvas.publish_public approved / denied / approved-but-not-applied.
|
|
42078
|
+
// Second-person instructions to the agent ("Tell the user...", "do not
|
|
42079
|
+
// republish"); the user learns the outcome from the agent, not this row.
|
|
42080
|
+
canvas_public_approval_resolved: "agent",
|
|
41947
42081
|
// A routine fired; the agent picks the work up.
|
|
41948
42082
|
routine_firing_result: "agent",
|
|
41949
42083
|
// Live-advisor wake: "Call `live_read` with escalation_id …" — a literal tool
|
|
@@ -44267,7 +44401,7 @@ var FLAG_REGISTRY = [
|
|
|
44267
44401
|
},
|
|
44268
44402
|
{
|
|
44269
44403
|
key: "approval-unified-authority",
|
|
44270
|
-
description: "One authority check for every approval ingress (ENG-11207, ADR-0124 Phase 0b): canDecide() runs inside tryDispatchApprovalCore for console, Slack (channel, alerts, Socket Mode, which also carries Telegram) and Direct Chat taps alike. off = not computed. shadow = compute the verdict and log approval_authority_would_reject (ingress, verb, org, reason) for every tap it would refuse, then decide exactly as today. enforce = reserved for the per-(org, verb) allowlist slice; until that ships it behaves as shadow. Evaluated per-org. Ships dark.",
|
|
44404
|
+
description: "One authority check for every approval ingress (ENG-11207, ADR-0124 Phase 0b): canDecide() runs inside tryDispatchApprovalCore for console, Slack (channel, alerts, Socket Mode, which also carries Telegram) and Direct Chat taps alike. off = not computed. shadow = compute the verdict, including the verb's declared approver boundary (ENG-11337), and log approval_authority_would_reject (ingress, verb, org, reason, boundary) for every tap it would refuse and approval_authority_would_admit (ingress, verb, org, basis, boundary) for every tap it would admit, then decide exactly as today. enforce = reserved for the per-(org, verb) allowlist slice; until that ships it behaves as shadow. Evaluated per-org. Ships dark.",
|
|
44271
44405
|
flagType: "enum",
|
|
44272
44406
|
allowedValues: ["off", "shadow", "enforce"],
|
|
44273
44407
|
// Safe/default value is `off` (no computation, no extra reads on the tap path). A flag-DB read
|
|
@@ -44422,7 +44556,7 @@ var FLAG_REGISTRY = [
|
|
|
44422
44556
|
},
|
|
44423
44557
|
{
|
|
44424
44558
|
key: "ninja-lists",
|
|
44425
|
-
description: 'Ninja Lists (ADR-0120): small tables agents and people fill and review together. Gates the "Lists" nav item, the /lists pages AND the /ninja-
|
|
44559
|
+
description: 'Ninja Lists (ADR-0120): small tables agents and people fill and review together. Gates the "Lists" nav item, the /lists pages AND the /ninja-lists API, per org. Unlike its siblings `projects-menu` / `ninjafy-notes-menu`, this is the whole feature\'s gate, not only its menu entry: the surface is unlaunched, so an org with the flag off gets 404 from the API rather than a hidden link to a working one.',
|
|
44426
44560
|
flagType: "boolean",
|
|
44427
44561
|
// PUBLIC (ADR-0022 §2): the nav shells read it via usePublicBooleanFlag and
|
|
44428
44562
|
// the pages via getPublicBooleanFlagServer, so it is serialized to the
|
|
@@ -35033,6 +35033,136 @@ var INTEGRATION_REGISTRY = [
|
|
|
35033
35033
|
// `registryRemoteMcpKeys`, which would strand the `.mcp.json` entry on
|
|
35034
35034
|
// every host that installed the MCP variant.
|
|
35035
35035
|
},
|
|
35036
|
+
{
|
|
35037
|
+
// Quiver (api.quiver.ai) — AI vector graphics: draw an SVG from a prompt,
|
|
35038
|
+
// redraw one from an instruction, trace a raster, add animation.
|
|
35039
|
+
//
|
|
35040
|
+
// PREMIUM (ADR-0031, epic ENG-6920). Ninjafy holds ONE Quiver account whose
|
|
35041
|
+
// key (`QUIVER_ACCOUNT_KEY`) every customer's drawing bills back to, so the
|
|
35042
|
+
// credential is a single platform-held secret and never a per-install one.
|
|
35043
|
+
// `auth_type: 'none'` on the catalog row and `credential_source:
|
|
35044
|
+
// 'platform_env'` on every runtime scope, so `resolveBrokerToken` reads the
|
|
35045
|
+
// env var and skips the install-row lookup entirely.
|
|
35046
|
+
//
|
|
35047
|
+
// Ships DARK: until the secret is set the resolver fails closed with
|
|
35048
|
+
// `platform_credential_missing` and every drawing errors clearly.
|
|
35049
|
+
// Installable but inert, by design — the same posture x-search shipped with.
|
|
35050
|
+
//
|
|
35051
|
+
// WHY IT STOPPED BEING BYO. It launched bring-your-own-key. Premium means WE
|
|
35052
|
+
// pay the vendor, so a customer key would defeat the point: there would be
|
|
35053
|
+
// nothing to meter and nothing to bill. The flip cost nothing because Quiver
|
|
35054
|
+
// had never deployed — zero installs, so none of the origami free→premium
|
|
35055
|
+
// grandfathering applies (there is no cohort whose `credential_source`
|
|
35056
|
+
// default would misclassify them as billed and take the integration dark).
|
|
35057
|
+
// A later BYO tier is possible (ADR-0055, the Firecrawl shape) and would
|
|
35058
|
+
// need its own entitlement gate; it is deliberately not offered now, because
|
|
35059
|
+
// offering two auth types renders a connect picker that does not check
|
|
35060
|
+
// `plans.byo_credentials` (ENG-9236).
|
|
35061
|
+
//
|
|
35062
|
+
// WHY TWO METERS, when the vendor bills in one unit. `credits` is Quiver's
|
|
35063
|
+
// own billing unit and the response carries it per call, so metering it
|
|
35064
|
+
// makes our margin a constant multiple no matter which model an agent picks
|
|
35065
|
+
// — `arrow-1.1-max` costs materially more than `arrow-1.1`, which a flat
|
|
35066
|
+
// per-call price would silently eat. But `credits` is documented as
|
|
35067
|
+
// "omitted for token-priced models, whose measured totals are returned in
|
|
35068
|
+
// `usage`", so a credits-only meter bills those calls at ZERO: free to the
|
|
35069
|
+
// customer, invisible to the budget gate, and with nothing in the ledger to
|
|
35070
|
+
// notice it by. `svg_operation` is the floor that closes that hole — it
|
|
35071
|
+
// fires ONLY when `credits` is absent, so the two can never double-bill the
|
|
35072
|
+
// same call. See `lib/quiver-metering.ts`.
|
|
35073
|
+
id: "quiver",
|
|
35074
|
+
name: "Quiver",
|
|
35075
|
+
category: "media",
|
|
35076
|
+
description: "AI vector graphics \u2014 draw an SVG from a description, redraw an existing one, trace a photo or screenshot into vector shapes, and add animation. Ninjafy manages the Quiver account for you; there is no key to enter.",
|
|
35077
|
+
supported_auth_types: ["none"],
|
|
35078
|
+
docs_url: "https://docs.quiver.ai/developers",
|
|
35079
|
+
capabilities: [
|
|
35080
|
+
{
|
|
35081
|
+
id: "quiver:create",
|
|
35082
|
+
name: "Create and change vector graphics",
|
|
35083
|
+
description: "Draw, redraw, trace and animate SVG artwork. Billed per Quiver credit consumed.",
|
|
35084
|
+
access: "write"
|
|
35085
|
+
},
|
|
35086
|
+
{
|
|
35087
|
+
id: "quiver:read",
|
|
35088
|
+
name: "Read models",
|
|
35089
|
+
description: "List the available drawing models and their per-call credit cost. Free.",
|
|
35090
|
+
access: "read"
|
|
35091
|
+
}
|
|
35092
|
+
],
|
|
35093
|
+
beta: true,
|
|
35094
|
+
// No `installable` on purpose: quiver is a seed integration
|
|
35095
|
+
// (integration-definitions.json), so the seed catalog already makes it
|
|
35096
|
+
// picker-visible. This entry exists to carry the `premium` descriptor that
|
|
35097
|
+
// `isPremiumDefinition` reads — which arms the per-org opt-in gate, the
|
|
35098
|
+
// priced acknowledgement modal and the admin pricing tab. Same reasoning as
|
|
35099
|
+
// social-scraping above.
|
|
35100
|
+
premium: {
|
|
35101
|
+
pricing: "usage",
|
|
35102
|
+
note: "Billed per Quiver credit consumed. Listing models is free; drawing, editing, tracing and animating each debit credits.",
|
|
35103
|
+
meters: [
|
|
35104
|
+
{ event_type: "svg_credits", unit: "credit" },
|
|
35105
|
+
{ event_type: "svg_operation", unit: "operation" }
|
|
35106
|
+
]
|
|
35107
|
+
}
|
|
35108
|
+
},
|
|
35109
|
+
{
|
|
35110
|
+
// theSVG (thesvg.org) — 6,500+ REAL brand marks as SVG, so an agent building
|
|
35111
|
+
// a page can use the actual Stripe/Slack/AWS logo instead of asking a
|
|
35112
|
+
// drawing model for one. That distinction is the whole point of the
|
|
35113
|
+
// integration: an AI-generated "Stripe logo" is a plausible fake, wrong in
|
|
35114
|
+
// the way a customer notices and a trademark owner minds. Original artwork
|
|
35115
|
+
// is Quiver's job; existing marks are this one's.
|
|
35116
|
+
//
|
|
35117
|
+
// WHY A LOCAL STDIO MCP AND NOT THE DIRECT-HTTP LANE. thesvg.org is a
|
|
35118
|
+
// STATIC SITE — its own CLI says so in as many words ("there is no dynamic
|
|
35119
|
+
// API"). The only two endpoints are `/api/registry.json`, the entire
|
|
35120
|
+
// 2.97 MB / 6,523-entry manifest, and `/icons/{slug}/{variant}.svg`. Search
|
|
35121
|
+
// is client-side filtering over that manifest, which the Direct-HTTP broker
|
|
35122
|
+
// cannot do: it forwards the vendor's whole response body to the agent, so
|
|
35123
|
+
// a `search_icons` descriptor would put 2.97 MB of registry into the
|
|
35124
|
+
// agent's context on every call. The vendor's own MCP server bundles the
|
|
35125
|
+
// registry and searches it in-process, which is precisely the shape the
|
|
35126
|
+
// missing API leaves you needing.
|
|
35127
|
+
//
|
|
35128
|
+
// WHY THE VERSION IS PINNED and AWS's is `@latest`: this server's registry
|
|
35129
|
+
// is baked in at BUILD time, so the pin is what decides which icons exist
|
|
35130
|
+
// AND what markup lands on a customer's published page. Bumping it is a
|
|
35131
|
+
// deliberate act that also refreshes the icon set — not a silent
|
|
35132
|
+
// third-party update to artwork we are about to publish under a customer's
|
|
35133
|
+
// domain.
|
|
35134
|
+
//
|
|
35135
|
+
// No credential anywhere: the registry and the jsDelivr CDN the server
|
|
35136
|
+
// fetches SVG from are both public, so `auth_types: ['none']` is the honest
|
|
35137
|
+
// classification rather than the ENG-8440 kind of lie Hard Rule 17 warns
|
|
35138
|
+
// about — there genuinely is no key to enter and the install IS live
|
|
35139
|
+
// immediately.
|
|
35140
|
+
id: "thesvg",
|
|
35141
|
+
name: "theSVG",
|
|
35142
|
+
category: "media",
|
|
35143
|
+
description: "Brand logos and icons as real SVG \u2014 search 6,500+ marks by name and pull the exact artwork, in mono, colour, light, dark or wordmark variants",
|
|
35144
|
+
supported_auth_types: ["none"],
|
|
35145
|
+
docs_url: "https://thesvg.org",
|
|
35146
|
+
capabilities: [
|
|
35147
|
+
{
|
|
35148
|
+
id: "thesvg:read",
|
|
35149
|
+
name: "Find and fetch brand icons",
|
|
35150
|
+
description: "Search the icon library, list an icon's variants and categories, and fetch its SVG markup or CDN URL",
|
|
35151
|
+
access: "read"
|
|
35152
|
+
}
|
|
35153
|
+
],
|
|
35154
|
+
installable: { category: "Media", authTypes: ["none"] },
|
|
35155
|
+
beta: true,
|
|
35156
|
+
// ENG-5815 data-driven path — no buildMcpJson edit, same as AWS.
|
|
35157
|
+
nativeMcp: {
|
|
35158
|
+
command: "npx",
|
|
35159
|
+
args: ["-y", "@thesvg/mcp-server@0.8.2"],
|
|
35160
|
+
env: {
|
|
35161
|
+
PATH: "{{process_env.PATH}}",
|
|
35162
|
+
HOME: "{{process_env.HOME}}"
|
|
35163
|
+
}
|
|
35164
|
+
}
|
|
35165
|
+
},
|
|
35036
35166
|
{
|
|
35037
35167
|
id: "qmd",
|
|
35038
35168
|
name: "QMD Memory Search",
|
|
@@ -36161,6 +36291,10 @@ var NOTICE_KIND_AUDIENCE = {
|
|
|
36161
36291
|
// "Your `<verb>` approval request (`<uuid>`) EXPIRED at …" — in the report,
|
|
36162
36292
|
// uuid and all.
|
|
36163
36293
|
approval_expired: "agent",
|
|
36294
|
+
// ENG-11334: canvas.publish_public approved / denied / approved-but-not-applied.
|
|
36295
|
+
// Second-person instructions to the agent ("Tell the user...", "do not
|
|
36296
|
+
// republish"); the user learns the outcome from the agent, not this row.
|
|
36297
|
+
canvas_public_approval_resolved: "agent",
|
|
36164
36298
|
// A routine fired; the agent picks the work up.
|
|
36165
36299
|
routine_firing_result: "agent",
|
|
36166
36300
|
// Live-advisor wake: "Call `live_read` with escalation_id …" — a literal tool
|
|
@@ -38897,7 +39031,7 @@ var FLAG_REGISTRY = [
|
|
|
38897
39031
|
},
|
|
38898
39032
|
{
|
|
38899
39033
|
key: "approval-unified-authority",
|
|
38900
|
-
description: "One authority check for every approval ingress (ENG-11207, ADR-0124 Phase 0b): canDecide() runs inside tryDispatchApprovalCore for console, Slack (channel, alerts, Socket Mode, which also carries Telegram) and Direct Chat taps alike. off = not computed. shadow = compute the verdict and log approval_authority_would_reject (ingress, verb, org, reason) for every tap it would refuse, then decide exactly as today. enforce = reserved for the per-(org, verb) allowlist slice; until that ships it behaves as shadow. Evaluated per-org. Ships dark.",
|
|
39034
|
+
description: "One authority check for every approval ingress (ENG-11207, ADR-0124 Phase 0b): canDecide() runs inside tryDispatchApprovalCore for console, Slack (channel, alerts, Socket Mode, which also carries Telegram) and Direct Chat taps alike. off = not computed. shadow = compute the verdict, including the verb's declared approver boundary (ENG-11337), and log approval_authority_would_reject (ingress, verb, org, reason, boundary) for every tap it would refuse and approval_authority_would_admit (ingress, verb, org, basis, boundary) for every tap it would admit, then decide exactly as today. enforce = reserved for the per-(org, verb) allowlist slice; until that ships it behaves as shadow. Evaluated per-org. Ships dark.",
|
|
38901
39035
|
flagType: "enum",
|
|
38902
39036
|
allowedValues: ["off", "shadow", "enforce"],
|
|
38903
39037
|
// Safe/default value is `off` (no computation, no extra reads on the tap path). A flag-DB read
|
|
@@ -39052,7 +39186,7 @@ var FLAG_REGISTRY = [
|
|
|
39052
39186
|
},
|
|
39053
39187
|
{
|
|
39054
39188
|
key: "ninja-lists",
|
|
39055
|
-
description: 'Ninja Lists (ADR-0120): small tables agents and people fill and review together. Gates the "Lists" nav item, the /lists pages AND the /ninja-
|
|
39189
|
+
description: 'Ninja Lists (ADR-0120): small tables agents and people fill and review together. Gates the "Lists" nav item, the /lists pages AND the /ninja-lists API, per org. Unlike its siblings `projects-menu` / `ninjafy-notes-menu`, this is the whole feature\'s gate, not only its menu entry: the surface is unlaunched, so an org with the flag off gets 404 from the API rather than a hidden link to a working one.',
|
|
39056
39190
|
flagType: "boolean",
|
|
39057
39191
|
// PUBLIC (ADR-0022 §2): the nav shells read it via usePublicBooleanFlag and
|
|
39058
39192
|
// the pages via getPublicBooleanFlagServer, so it is serialized to the
|
|
@@ -35139,6 +35139,136 @@ var INTEGRATION_REGISTRY = [
|
|
|
35139
35139
|
// `registryRemoteMcpKeys`, which would strand the `.mcp.json` entry on
|
|
35140
35140
|
// every host that installed the MCP variant.
|
|
35141
35141
|
},
|
|
35142
|
+
{
|
|
35143
|
+
// Quiver (api.quiver.ai) — AI vector graphics: draw an SVG from a prompt,
|
|
35144
|
+
// redraw one from an instruction, trace a raster, add animation.
|
|
35145
|
+
//
|
|
35146
|
+
// PREMIUM (ADR-0031, epic ENG-6920). Ninjafy holds ONE Quiver account whose
|
|
35147
|
+
// key (`QUIVER_ACCOUNT_KEY`) every customer's drawing bills back to, so the
|
|
35148
|
+
// credential is a single platform-held secret and never a per-install one.
|
|
35149
|
+
// `auth_type: 'none'` on the catalog row and `credential_source:
|
|
35150
|
+
// 'platform_env'` on every runtime scope, so `resolveBrokerToken` reads the
|
|
35151
|
+
// env var and skips the install-row lookup entirely.
|
|
35152
|
+
//
|
|
35153
|
+
// Ships DARK: until the secret is set the resolver fails closed with
|
|
35154
|
+
// `platform_credential_missing` and every drawing errors clearly.
|
|
35155
|
+
// Installable but inert, by design — the same posture x-search shipped with.
|
|
35156
|
+
//
|
|
35157
|
+
// WHY IT STOPPED BEING BYO. It launched bring-your-own-key. Premium means WE
|
|
35158
|
+
// pay the vendor, so a customer key would defeat the point: there would be
|
|
35159
|
+
// nothing to meter and nothing to bill. The flip cost nothing because Quiver
|
|
35160
|
+
// had never deployed — zero installs, so none of the origami free→premium
|
|
35161
|
+
// grandfathering applies (there is no cohort whose `credential_source`
|
|
35162
|
+
// default would misclassify them as billed and take the integration dark).
|
|
35163
|
+
// A later BYO tier is possible (ADR-0055, the Firecrawl shape) and would
|
|
35164
|
+
// need its own entitlement gate; it is deliberately not offered now, because
|
|
35165
|
+
// offering two auth types renders a connect picker that does not check
|
|
35166
|
+
// `plans.byo_credentials` (ENG-9236).
|
|
35167
|
+
//
|
|
35168
|
+
// WHY TWO METERS, when the vendor bills in one unit. `credits` is Quiver's
|
|
35169
|
+
// own billing unit and the response carries it per call, so metering it
|
|
35170
|
+
// makes our margin a constant multiple no matter which model an agent picks
|
|
35171
|
+
// — `arrow-1.1-max` costs materially more than `arrow-1.1`, which a flat
|
|
35172
|
+
// per-call price would silently eat. But `credits` is documented as
|
|
35173
|
+
// "omitted for token-priced models, whose measured totals are returned in
|
|
35174
|
+
// `usage`", so a credits-only meter bills those calls at ZERO: free to the
|
|
35175
|
+
// customer, invisible to the budget gate, and with nothing in the ledger to
|
|
35176
|
+
// notice it by. `svg_operation` is the floor that closes that hole — it
|
|
35177
|
+
// fires ONLY when `credits` is absent, so the two can never double-bill the
|
|
35178
|
+
// same call. See `lib/quiver-metering.ts`.
|
|
35179
|
+
id: "quiver",
|
|
35180
|
+
name: "Quiver",
|
|
35181
|
+
category: "media",
|
|
35182
|
+
description: "AI vector graphics \u2014 draw an SVG from a description, redraw an existing one, trace a photo or screenshot into vector shapes, and add animation. Ninjafy manages the Quiver account for you; there is no key to enter.",
|
|
35183
|
+
supported_auth_types: ["none"],
|
|
35184
|
+
docs_url: "https://docs.quiver.ai/developers",
|
|
35185
|
+
capabilities: [
|
|
35186
|
+
{
|
|
35187
|
+
id: "quiver:create",
|
|
35188
|
+
name: "Create and change vector graphics",
|
|
35189
|
+
description: "Draw, redraw, trace and animate SVG artwork. Billed per Quiver credit consumed.",
|
|
35190
|
+
access: "write"
|
|
35191
|
+
},
|
|
35192
|
+
{
|
|
35193
|
+
id: "quiver:read",
|
|
35194
|
+
name: "Read models",
|
|
35195
|
+
description: "List the available drawing models and their per-call credit cost. Free.",
|
|
35196
|
+
access: "read"
|
|
35197
|
+
}
|
|
35198
|
+
],
|
|
35199
|
+
beta: true,
|
|
35200
|
+
// No `installable` on purpose: quiver is a seed integration
|
|
35201
|
+
// (integration-definitions.json), so the seed catalog already makes it
|
|
35202
|
+
// picker-visible. This entry exists to carry the `premium` descriptor that
|
|
35203
|
+
// `isPremiumDefinition` reads — which arms the per-org opt-in gate, the
|
|
35204
|
+
// priced acknowledgement modal and the admin pricing tab. Same reasoning as
|
|
35205
|
+
// social-scraping above.
|
|
35206
|
+
premium: {
|
|
35207
|
+
pricing: "usage",
|
|
35208
|
+
note: "Billed per Quiver credit consumed. Listing models is free; drawing, editing, tracing and animating each debit credits.",
|
|
35209
|
+
meters: [
|
|
35210
|
+
{ event_type: "svg_credits", unit: "credit" },
|
|
35211
|
+
{ event_type: "svg_operation", unit: "operation" }
|
|
35212
|
+
]
|
|
35213
|
+
}
|
|
35214
|
+
},
|
|
35215
|
+
{
|
|
35216
|
+
// theSVG (thesvg.org) — 6,500+ REAL brand marks as SVG, so an agent building
|
|
35217
|
+
// a page can use the actual Stripe/Slack/AWS logo instead of asking a
|
|
35218
|
+
// drawing model for one. That distinction is the whole point of the
|
|
35219
|
+
// integration: an AI-generated "Stripe logo" is a plausible fake, wrong in
|
|
35220
|
+
// the way a customer notices and a trademark owner minds. Original artwork
|
|
35221
|
+
// is Quiver's job; existing marks are this one's.
|
|
35222
|
+
//
|
|
35223
|
+
// WHY A LOCAL STDIO MCP AND NOT THE DIRECT-HTTP LANE. thesvg.org is a
|
|
35224
|
+
// STATIC SITE — its own CLI says so in as many words ("there is no dynamic
|
|
35225
|
+
// API"). The only two endpoints are `/api/registry.json`, the entire
|
|
35226
|
+
// 2.97 MB / 6,523-entry manifest, and `/icons/{slug}/{variant}.svg`. Search
|
|
35227
|
+
// is client-side filtering over that manifest, which the Direct-HTTP broker
|
|
35228
|
+
// cannot do: it forwards the vendor's whole response body to the agent, so
|
|
35229
|
+
// a `search_icons` descriptor would put 2.97 MB of registry into the
|
|
35230
|
+
// agent's context on every call. The vendor's own MCP server bundles the
|
|
35231
|
+
// registry and searches it in-process, which is precisely the shape the
|
|
35232
|
+
// missing API leaves you needing.
|
|
35233
|
+
//
|
|
35234
|
+
// WHY THE VERSION IS PINNED and AWS's is `@latest`: this server's registry
|
|
35235
|
+
// is baked in at BUILD time, so the pin is what decides which icons exist
|
|
35236
|
+
// AND what markup lands on a customer's published page. Bumping it is a
|
|
35237
|
+
// deliberate act that also refreshes the icon set — not a silent
|
|
35238
|
+
// third-party update to artwork we are about to publish under a customer's
|
|
35239
|
+
// domain.
|
|
35240
|
+
//
|
|
35241
|
+
// No credential anywhere: the registry and the jsDelivr CDN the server
|
|
35242
|
+
// fetches SVG from are both public, so `auth_types: ['none']` is the honest
|
|
35243
|
+
// classification rather than the ENG-8440 kind of lie Hard Rule 17 warns
|
|
35244
|
+
// about — there genuinely is no key to enter and the install IS live
|
|
35245
|
+
// immediately.
|
|
35246
|
+
id: "thesvg",
|
|
35247
|
+
name: "theSVG",
|
|
35248
|
+
category: "media",
|
|
35249
|
+
description: "Brand logos and icons as real SVG \u2014 search 6,500+ marks by name and pull the exact artwork, in mono, colour, light, dark or wordmark variants",
|
|
35250
|
+
supported_auth_types: ["none"],
|
|
35251
|
+
docs_url: "https://thesvg.org",
|
|
35252
|
+
capabilities: [
|
|
35253
|
+
{
|
|
35254
|
+
id: "thesvg:read",
|
|
35255
|
+
name: "Find and fetch brand icons",
|
|
35256
|
+
description: "Search the icon library, list an icon's variants and categories, and fetch its SVG markup or CDN URL",
|
|
35257
|
+
access: "read"
|
|
35258
|
+
}
|
|
35259
|
+
],
|
|
35260
|
+
installable: { category: "Media", authTypes: ["none"] },
|
|
35261
|
+
beta: true,
|
|
35262
|
+
// ENG-5815 data-driven path — no buildMcpJson edit, same as AWS.
|
|
35263
|
+
nativeMcp: {
|
|
35264
|
+
command: "npx",
|
|
35265
|
+
args: ["-y", "@thesvg/mcp-server@0.8.2"],
|
|
35266
|
+
env: {
|
|
35267
|
+
PATH: "{{process_env.PATH}}",
|
|
35268
|
+
HOME: "{{process_env.HOME}}"
|
|
35269
|
+
}
|
|
35270
|
+
}
|
|
35271
|
+
},
|
|
35142
35272
|
{
|
|
35143
35273
|
id: "qmd",
|
|
35144
35274
|
name: "QMD Memory Search",
|
|
@@ -36267,6 +36397,10 @@ var NOTICE_KIND_AUDIENCE = {
|
|
|
36267
36397
|
// "Your `<verb>` approval request (`<uuid>`) EXPIRED at …" — in the report,
|
|
36268
36398
|
// uuid and all.
|
|
36269
36399
|
approval_expired: "agent",
|
|
36400
|
+
// ENG-11334: canvas.publish_public approved / denied / approved-but-not-applied.
|
|
36401
|
+
// Second-person instructions to the agent ("Tell the user...", "do not
|
|
36402
|
+
// republish"); the user learns the outcome from the agent, not this row.
|
|
36403
|
+
canvas_public_approval_resolved: "agent",
|
|
36270
36404
|
// A routine fired; the agent picks the work up.
|
|
36271
36405
|
routine_firing_result: "agent",
|
|
36272
36406
|
// Live-advisor wake: "Call `live_read` with escalation_id …" — a literal tool
|
|
@@ -39003,7 +39137,7 @@ var FLAG_REGISTRY = [
|
|
|
39003
39137
|
},
|
|
39004
39138
|
{
|
|
39005
39139
|
key: "approval-unified-authority",
|
|
39006
|
-
description: "One authority check for every approval ingress (ENG-11207, ADR-0124 Phase 0b): canDecide() runs inside tryDispatchApprovalCore for console, Slack (channel, alerts, Socket Mode, which also carries Telegram) and Direct Chat taps alike. off = not computed. shadow = compute the verdict and log approval_authority_would_reject (ingress, verb, org, reason) for every tap it would refuse, then decide exactly as today. enforce = reserved for the per-(org, verb) allowlist slice; until that ships it behaves as shadow. Evaluated per-org. Ships dark.",
|
|
39140
|
+
description: "One authority check for every approval ingress (ENG-11207, ADR-0124 Phase 0b): canDecide() runs inside tryDispatchApprovalCore for console, Slack (channel, alerts, Socket Mode, which also carries Telegram) and Direct Chat taps alike. off = not computed. shadow = compute the verdict, including the verb's declared approver boundary (ENG-11337), and log approval_authority_would_reject (ingress, verb, org, reason, boundary) for every tap it would refuse and approval_authority_would_admit (ingress, verb, org, basis, boundary) for every tap it would admit, then decide exactly as today. enforce = reserved for the per-(org, verb) allowlist slice; until that ships it behaves as shadow. Evaluated per-org. Ships dark.",
|
|
39007
39141
|
flagType: "enum",
|
|
39008
39142
|
allowedValues: ["off", "shadow", "enforce"],
|
|
39009
39143
|
// Safe/default value is `off` (no computation, no extra reads on the tap path). A flag-DB read
|
|
@@ -39158,7 +39292,7 @@ var FLAG_REGISTRY = [
|
|
|
39158
39292
|
},
|
|
39159
39293
|
{
|
|
39160
39294
|
key: "ninja-lists",
|
|
39161
|
-
description: 'Ninja Lists (ADR-0120): small tables agents and people fill and review together. Gates the "Lists" nav item, the /lists pages AND the /ninja-
|
|
39295
|
+
description: 'Ninja Lists (ADR-0120): small tables agents and people fill and review together. Gates the "Lists" nav item, the /lists pages AND the /ninja-lists API, per org. Unlike its siblings `projects-menu` / `ninjafy-notes-menu`, this is the whole feature\'s gate, not only its menu entry: the surface is unlaunched, so an org with the flag off gets 404 from the API rather than a hidden link to a working one.',
|
|
39162
39296
|
flagType: "boolean",
|
|
39163
39297
|
// PUBLIC (ADR-0022 §2): the nav shells read it via usePublicBooleanFlag and
|
|
39164
39298
|
// the pages via getPublicBooleanFlagServer, so it is serialized to the
|
|
@@ -68,8 +68,8 @@ import {
|
|
|
68
68
|
writeDirectChatSessionState,
|
|
69
69
|
writeEgressAllowlist,
|
|
70
70
|
writePersistentClaudeWrapper
|
|
71
|
-
} from "./chunk-
|
|
72
|
-
import "./chunk-
|
|
71
|
+
} from "./chunk-XJ4JK4C7.js";
|
|
72
|
+
import "./chunk-NEGFSB2W.js";
|
|
73
73
|
import "./chunk-OCMJ5E6J.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-
|
|
148
|
+
//# sourceMappingURL=persistent-session-35BXCGHB.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-XJ4JK4C7.js";
|
|
4
|
+
import "./chunk-NEGFSB2W.js";
|
|
5
5
|
import "./chunk-OCMJ5E6J.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-
|
|
805
|
+
//# sourceMappingURL=responsiveness-probe-VDL3QULE.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-NEGFSB2W.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-
|
|
207
|
+
//# sourceMappingURL=session-auth-dead-L7ZD5ZZO.js.map
|