@integrity-labs/agt-cli 0.28.651 → 0.28.653
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-EXMRWMXQ.js → chunk-CXZEIJRN.js} +4 -4
- package/dist/{chunk-EUXCRRZU.js → chunk-E26EKDFP.js} +2 -2
- package/dist/{chunk-V5MUX3GI.js → chunk-HRMF6VUK.js} +45 -20
- package/dist/chunk-HRMF6VUK.js.map +1 -0
- package/dist/{claude-pair-runtime-U52EA7NZ.js → claude-pair-runtime-E6BFNZUV.js} +2 -2
- package/dist/lib/manager-worker.js +13 -13
- package/dist/mcp/direct-chat-channel.js +44 -19
- package/dist/mcp/index.js +98 -49
- package/dist/mcp/origami.js +44 -19
- package/dist/mcp/slack-channel.js +44 -19
- package/dist/mcp/telegram-channel.js +44 -19
- package/dist/{persistent-session-DVZESZDD.js → persistent-session-XXP4NGEP.js} +3 -3
- package/dist/{responsiveness-probe-Q7SVASQS.js → responsiveness-probe-QSJ263ZW.js} +3 -3
- package/dist/{session-auth-dead-RV3Z64TM.js → session-auth-dead-HHZT5KIM.js} +2 -2
- package/package.json +1 -1
- package/dist/chunk-V5MUX3GI.js.map +0 -1
- /package/dist/{chunk-EXMRWMXQ.js.map → chunk-CXZEIJRN.js.map} +0 -0
- /package/dist/{chunk-EUXCRRZU.js.map → chunk-E26EKDFP.js.map} +0 -0
- /package/dist/{claude-pair-runtime-U52EA7NZ.js.map → claude-pair-runtime-E6BFNZUV.js.map} +0 -0
- /package/dist/{persistent-session-DVZESZDD.js.map → persistent-session-XXP4NGEP.js.map} +0 -0
- /package/dist/{responsiveness-probe-Q7SVASQS.js.map → responsiveness-probe-QSJ263ZW.js.map} +0 -0
- /package/dist/{session-auth-dead-RV3Z64TM.js.map → session-auth-dead-HHZT5KIM.js.map} +0 -0
package/dist/mcp/origami.js
CHANGED
|
@@ -39897,7 +39897,7 @@ var INTEGRATION_REGISTRY = [
|
|
|
39897
39897
|
id: "firecrawl",
|
|
39898
39898
|
name: "Firecrawl",
|
|
39899
39899
|
category: "knowledge",
|
|
39900
|
-
description: "Web data for agents: scrape, map, crawl and search any website for clean structured data, plus scheduled change-detection monitors whose updates arrive in the agent's direct-chat. Connect via the platform-managed account
|
|
39900
|
+
description: "Web data for agents: scrape, map, crawl and search any website for clean structured data, plus scheduled change-detection monitors whose updates arrive in the agent's direct-chat. Connect via the platform-managed account.",
|
|
39901
39901
|
// ENG-7217: Firecrawl migrates from a customer-API-key stdio MCP
|
|
39902
39902
|
// (`npx firecrawl-mcp`, FIRECRAWL_API_KEY) to a PREMIUM, platform-managed
|
|
39903
39903
|
// integration on the Deck / ElevenLabs model (ADR-0031, epic ENG-6920):
|
|
@@ -39908,16 +39908,30 @@ var INTEGRATION_REGISTRY = [
|
|
|
39908
39908
|
// is metered at the one control-plane chokepoint and gated on a per-org opt-in
|
|
39909
39909
|
// + monthly USD cap.
|
|
39910
39910
|
//
|
|
39911
|
-
// ENG-8304 / ADR-0055 (Phase 1b — Firecrawl is the BYO exemplar): `api_key`
|
|
39912
|
-
//
|
|
39911
|
+
// ENG-8304 / ADR-0055 (Phase 1b — Firecrawl is the BYO exemplar): `api_key`
|
|
39912
|
+
// was also offered so a customer could bring their OWN Firecrawl key. A BYO
|
|
39913
39913
|
// install (`credential_source='byo'`) authenticates with the customer's key
|
|
39914
39914
|
// (stored encrypted on the install) and is NOT metered — its upstream cost is
|
|
39915
|
-
// on the customer's own Firecrawl bill.
|
|
39916
|
-
//
|
|
39917
|
-
// `api_key` is
|
|
39918
|
-
// `
|
|
39919
|
-
//
|
|
39920
|
-
|
|
39915
|
+
// on the customer's own Firecrawl bill.
|
|
39916
|
+
//
|
|
39917
|
+
// ENG-9235: `api_key` is PARKED, not abandoned. BYO is gated on the plan-tier
|
|
39918
|
+
// `byo_credentials` entitlement, which only `enterprise` has (the column is
|
|
39919
|
+
// NOT NULL DEFAULT false, and ENG-9143 explicitly set it false for Team). The
|
|
39920
|
+
// connect wizard never reads that flag, so offering `api_key` here sent every
|
|
39921
|
+
// Team/Business customer to firecrawl.dev for a key we would then reject with
|
|
39922
|
+
// a 403 `byo_not_entitled_by_plan` — after they had signed up for it.
|
|
39923
|
+
//
|
|
39924
|
+
// Removing it is also what removes that screen: the wizard's picker only
|
|
39925
|
+
// renders for 2+ selectable auth types (`selectableWizardAuthMethods`), so a
|
|
39926
|
+
// single `['none']` restores the friction-free managed install with no UI
|
|
39927
|
+
// change. Restore `api_key` only together with an entitlement-aware wizard —
|
|
39928
|
+
// see ENG-9236 for the proper fix.
|
|
39929
|
+
//
|
|
39930
|
+
// KEEP IN LOCKSTEP with the `firecrawl` row in
|
|
39931
|
+
// packages/supabase/seeds/toolkit-definitions.json: that seed carries its own
|
|
39932
|
+
// `auth_types` and is what `db:catalog:seed` upserts on every prod deploy, so
|
|
39933
|
+
// editing this array alone changes nothing a customer can see.
|
|
39934
|
+
supported_auth_types: ["none"],
|
|
39921
39935
|
capabilities: [
|
|
39922
39936
|
{ id: "firecrawl:scrape", name: "Scrape Pages", description: "Fetch a single URL as clean markdown / structured data (firecrawl_scrape).", access: "write" },
|
|
39923
39937
|
{ id: "firecrawl:search", name: "Web Search", description: "Search the web and return ranked results, optionally scraped (firecrawl_search).", access: "write" },
|
|
@@ -42107,22 +42121,33 @@ var FLAG_REGISTRY = [
|
|
|
42107
42121
|
},
|
|
42108
42122
|
{
|
|
42109
42123
|
key: "ninjafy-brand",
|
|
42110
|
-
description: 'Present the product under the Ninjafy brand instead of Augmented Team (ENG-8250). This is the UMBRELLA brand gate, not a one-off nav toggle: every subsequent rebrand surface (page titles, email templates, marketing-facing copy) reads THIS key rather than adding its own flag, so the whole rebrand keeps a single kill switch. First surface is the left-hand nav wordmark \u2014 ON replaces the human+robot mark and the "augmented.team" text with italic lowercase "ninjafy"; OFF renders exactly what shipped before. Scope is the USER-FACING BRAND PRESENTATION \u2014 text AND VISUAL THEME. ENG-8858 widened this from text alone: the Ninjafy palette is gated here too, because a colour theme is not text. It stays ONE key rather than gaining a `ninjafy-theme` sibling, so a half-branded state \u2014 ninjafy wordmark over Augmented green \u2014 is unreachable and the rebrand keeps a single kill switch. It must never gate a code identifier, package name, env var or CLI name. EXISTING identifiers stay `Augmented`/`agt` per the CLAUDE.md naming contract, which protects them from premature renaming \u2014 the deep rename is workstream C of docs/runbooks/rebrand-ninjafy-migration.md and is out of scope here. That contract does NOT require NEW code to carry the old brand: artefacts created specifically for the rebrand take Ninjafy naming (ENG-8078 decision 9; see the CLAUDE.md rebrand carve-out). Either way it is a naming rule, not a flag concern \u2014 this key gates presentation, never an identifier. Set the stage-wide default to flip a whole environment, or add a feature_flag_overrides row to pilot a subset while everyone else still sees Augmented. Overrides resolve at FOUR grains, most specific first \u2014 agent, team, host, then org-wide (evaluate.ts:79-81); organization_id is always required, so there is no global override. Org and team are the useful pilot grains for THIS flag:
|
|
42124
|
+
description: 'Present the product under the Ninjafy brand instead of Augmented Team (ENG-8250). This is the UMBRELLA brand gate, not a one-off nav toggle: every subsequent rebrand surface (page titles, email templates, marketing-facing copy) reads THIS key rather than adding its own flag, so the whole rebrand keeps a single kill switch. First surface is the left-hand nav wordmark \u2014 ON replaces the human+robot mark and the "augmented.team" text with italic lowercase "ninjafy"; OFF renders exactly what shipped before. Scope is the USER-FACING BRAND PRESENTATION \u2014 text AND VISUAL THEME. ENG-8858 widened this from text alone: the Ninjafy palette is gated here too, because a colour theme is not text. It stays ONE key rather than gaining a `ninjafy-theme` sibling, so a half-branded state \u2014 ninjafy wordmark over Augmented green \u2014 is unreachable and the rebrand keeps a single kill switch. It must never gate a code identifier, package name, env var or CLI name. EXISTING identifiers stay `Augmented`/`agt` per the CLAUDE.md naming contract, which protects them from premature renaming \u2014 the deep rename is workstream C of docs/runbooks/rebrand-ninjafy-migration.md and is out of scope here. That contract does NOT require NEW code to carry the old brand: artefacts created specifically for the rebrand take Ninjafy naming (ENG-8078 decision 9; see the CLAUDE.md rebrand carve-out). Either way it is a naming rule, not a flag concern \u2014 this key gates presentation, never an identifier. Set the stage-wide default to flip a whole environment, or add a feature_flag_overrides row to pilot a subset while everyone else still sees Augmented. Overrides resolve at FOUR grains, most specific first \u2014 agent, team, host, then org-wide (evaluate.ts:79-81); organization_id is always required, so there is no global override. Org and team are the useful pilot grains for THIS flag: there is now exactly ONE consumer \u2014 (dashboard)/layout.tsx via getPublicBooleanFlagServer \u2014 evaluating in the active-org cookie scope, so a host- or agent-scoped row is accepted by the table but never reached by the console. It resolves the key ONCE per request and passes the boolean down to sidebar.tsx and top-nav.tsx as a required prop. Resolution is SERVER-side deliberately: the client hook starts at its default and updates after an async GET /flags, so anything gated on it paints Augmented and then repaints. ENG-8858 moved the PALETTE for that reason (a full-page colour flash); ENG-9227 moved the WORDMARK, which had been the last surface still swapping after hydration. A consequence worth knowing: /login and the marketing routes stay on the Augmented palette whatever an org sets, because getPublicBooleanFlagServer returns the default without a verified session and a pre-auth page has neither a session nor an active org \u2014 a PER-ORG flag structurally cannot brand one. Those surfaces follow only when the stage-wide default flips. Ships dark.',
|
|
42111
42125
|
flagType: "boolean",
|
|
42112
42126
|
// Declared safe value is `false`: the pre-rebrand brand. `false` is also the
|
|
42113
42127
|
// fail-closed direction — if the flag DB is unreachable we must show the brand
|
|
42114
42128
|
// that is currently live and contractually correct, never leak an unannounced
|
|
42115
42129
|
// rebrand to every customer at once.
|
|
42116
42130
|
defaultValue: false,
|
|
42117
|
-
//
|
|
42118
|
-
//
|
|
42119
|
-
//
|
|
42120
|
-
//
|
|
42121
|
-
//
|
|
42122
|
-
//
|
|
42123
|
-
//
|
|
42124
|
-
//
|
|
42125
|
-
//
|
|
42131
|
+
// ENG-9227: there are NO client readers of this key left. (dashboard)/
|
|
42132
|
+
// layout.tsx resolves it ONCE server-side via getPublicBooleanFlagServer and
|
|
42133
|
+
// passes the boolean down to sidebar.tsx and top-nav.tsx as a required prop.
|
|
42134
|
+
// ENG-8858 did that for the THEME; ENG-9227 finished the job for the
|
|
42135
|
+
// WORDMARK, which had kept usePublicBooleanFlag and so kept swapping
|
|
42136
|
+
// "augmented.team" to "ninjafy" after hydration.
|
|
42137
|
+
//
|
|
42138
|
+
// `public` MUST STAY ANYWAY, and this is the trap. It is tempting to read
|
|
42139
|
+
// "no client readers" as "no longer needs to be public" — but
|
|
42140
|
+
// getPublicBooleanFlagServer resolves against the very same `GET /flags`
|
|
42141
|
+
// endpoint the browser uses, and that route filters to listPublicFlagKeys()
|
|
42142
|
+
// (routes/flags.ts:72-75). A non-public key is simply absent from the map,
|
|
42143
|
+
// so the server helper would fall through to its default and return `false`
|
|
42144
|
+
// FOREVER — the brand quietly reverting to Augmented for every org, with no
|
|
42145
|
+
// error anywhere. `public` here means "readable through the public map",
|
|
42146
|
+
// not "read by a browser".
|
|
42147
|
+
//
|
|
42148
|
+
// Unlike onboarding-msteams-channel above there is no wrong-org hazard — the
|
|
42149
|
+
// single reader evaluates inside the active-org cookie's scope, which is
|
|
42150
|
+
// exactly the org whose brand should be shown.
|
|
42126
42151
|
public: true
|
|
42127
42152
|
},
|
|
42128
42153
|
{
|
|
@@ -33963,7 +33963,7 @@ var INTEGRATION_REGISTRY = [
|
|
|
33963
33963
|
id: "firecrawl",
|
|
33964
33964
|
name: "Firecrawl",
|
|
33965
33965
|
category: "knowledge",
|
|
33966
|
-
description: "Web data for agents: scrape, map, crawl and search any website for clean structured data, plus scheduled change-detection monitors whose updates arrive in the agent's direct-chat. Connect via the platform-managed account
|
|
33966
|
+
description: "Web data for agents: scrape, map, crawl and search any website for clean structured data, plus scheduled change-detection monitors whose updates arrive in the agent's direct-chat. Connect via the platform-managed account.",
|
|
33967
33967
|
// ENG-7217: Firecrawl migrates from a customer-API-key stdio MCP
|
|
33968
33968
|
// (`npx firecrawl-mcp`, FIRECRAWL_API_KEY) to a PREMIUM, platform-managed
|
|
33969
33969
|
// integration on the Deck / ElevenLabs model (ADR-0031, epic ENG-6920):
|
|
@@ -33974,16 +33974,30 @@ var INTEGRATION_REGISTRY = [
|
|
|
33974
33974
|
// is metered at the one control-plane chokepoint and gated on a per-org opt-in
|
|
33975
33975
|
// + monthly USD cap.
|
|
33976
33976
|
//
|
|
33977
|
-
// ENG-8304 / ADR-0055 (Phase 1b — Firecrawl is the BYO exemplar): `api_key`
|
|
33978
|
-
//
|
|
33977
|
+
// ENG-8304 / ADR-0055 (Phase 1b — Firecrawl is the BYO exemplar): `api_key`
|
|
33978
|
+
// was also offered so a customer could bring their OWN Firecrawl key. A BYO
|
|
33979
33979
|
// install (`credential_source='byo'`) authenticates with the customer's key
|
|
33980
33980
|
// (stored encrypted on the install) and is NOT metered — its upstream cost is
|
|
33981
|
-
// on the customer's own Firecrawl bill.
|
|
33982
|
-
//
|
|
33983
|
-
// `api_key` is
|
|
33984
|
-
// `
|
|
33985
|
-
//
|
|
33986
|
-
|
|
33981
|
+
// on the customer's own Firecrawl bill.
|
|
33982
|
+
//
|
|
33983
|
+
// ENG-9235: `api_key` is PARKED, not abandoned. BYO is gated on the plan-tier
|
|
33984
|
+
// `byo_credentials` entitlement, which only `enterprise` has (the column is
|
|
33985
|
+
// NOT NULL DEFAULT false, and ENG-9143 explicitly set it false for Team). The
|
|
33986
|
+
// connect wizard never reads that flag, so offering `api_key` here sent every
|
|
33987
|
+
// Team/Business customer to firecrawl.dev for a key we would then reject with
|
|
33988
|
+
// a 403 `byo_not_entitled_by_plan` — after they had signed up for it.
|
|
33989
|
+
//
|
|
33990
|
+
// Removing it is also what removes that screen: the wizard's picker only
|
|
33991
|
+
// renders for 2+ selectable auth types (`selectableWizardAuthMethods`), so a
|
|
33992
|
+
// single `['none']` restores the friction-free managed install with no UI
|
|
33993
|
+
// change. Restore `api_key` only together with an entitlement-aware wizard —
|
|
33994
|
+
// see ENG-9236 for the proper fix.
|
|
33995
|
+
//
|
|
33996
|
+
// KEEP IN LOCKSTEP with the `firecrawl` row in
|
|
33997
|
+
// packages/supabase/seeds/toolkit-definitions.json: that seed carries its own
|
|
33998
|
+
// `auth_types` and is what `db:catalog:seed` upserts on every prod deploy, so
|
|
33999
|
+
// editing this array alone changes nothing a customer can see.
|
|
34000
|
+
supported_auth_types: ["none"],
|
|
33987
34001
|
capabilities: [
|
|
33988
34002
|
{ id: "firecrawl:scrape", name: "Scrape Pages", description: "Fetch a single URL as clean markdown / structured data (firecrawl_scrape).", access: "write" },
|
|
33989
34003
|
{ id: "firecrawl:search", name: "Web Search", description: "Search the web and return ranked results, optionally scraped (firecrawl_search).", access: "write" },
|
|
@@ -36590,22 +36604,33 @@ var FLAG_REGISTRY = [
|
|
|
36590
36604
|
},
|
|
36591
36605
|
{
|
|
36592
36606
|
key: "ninjafy-brand",
|
|
36593
|
-
description: 'Present the product under the Ninjafy brand instead of Augmented Team (ENG-8250). This is the UMBRELLA brand gate, not a one-off nav toggle: every subsequent rebrand surface (page titles, email templates, marketing-facing copy) reads THIS key rather than adding its own flag, so the whole rebrand keeps a single kill switch. First surface is the left-hand nav wordmark \u2014 ON replaces the human+robot mark and the "augmented.team" text with italic lowercase "ninjafy"; OFF renders exactly what shipped before. Scope is the USER-FACING BRAND PRESENTATION \u2014 text AND VISUAL THEME. ENG-8858 widened this from text alone: the Ninjafy palette is gated here too, because a colour theme is not text. It stays ONE key rather than gaining a `ninjafy-theme` sibling, so a half-branded state \u2014 ninjafy wordmark over Augmented green \u2014 is unreachable and the rebrand keeps a single kill switch. It must never gate a code identifier, package name, env var or CLI name. EXISTING identifiers stay `Augmented`/`agt` per the CLAUDE.md naming contract, which protects them from premature renaming \u2014 the deep rename is workstream C of docs/runbooks/rebrand-ninjafy-migration.md and is out of scope here. That contract does NOT require NEW code to carry the old brand: artefacts created specifically for the rebrand take Ninjafy naming (ENG-8078 decision 9; see the CLAUDE.md rebrand carve-out). Either way it is a naming rule, not a flag concern \u2014 this key gates presentation, never an identifier. Set the stage-wide default to flip a whole environment, or add a feature_flag_overrides row to pilot a subset while everyone else still sees Augmented. Overrides resolve at FOUR grains, most specific first \u2014 agent, team, host, then org-wide (evaluate.ts:79-81); organization_id is always required, so there is no global override. Org and team are the useful pilot grains for THIS flag:
|
|
36607
|
+
description: 'Present the product under the Ninjafy brand instead of Augmented Team (ENG-8250). This is the UMBRELLA brand gate, not a one-off nav toggle: every subsequent rebrand surface (page titles, email templates, marketing-facing copy) reads THIS key rather than adding its own flag, so the whole rebrand keeps a single kill switch. First surface is the left-hand nav wordmark \u2014 ON replaces the human+robot mark and the "augmented.team" text with italic lowercase "ninjafy"; OFF renders exactly what shipped before. Scope is the USER-FACING BRAND PRESENTATION \u2014 text AND VISUAL THEME. ENG-8858 widened this from text alone: the Ninjafy palette is gated here too, because a colour theme is not text. It stays ONE key rather than gaining a `ninjafy-theme` sibling, so a half-branded state \u2014 ninjafy wordmark over Augmented green \u2014 is unreachable and the rebrand keeps a single kill switch. It must never gate a code identifier, package name, env var or CLI name. EXISTING identifiers stay `Augmented`/`agt` per the CLAUDE.md naming contract, which protects them from premature renaming \u2014 the deep rename is workstream C of docs/runbooks/rebrand-ninjafy-migration.md and is out of scope here. That contract does NOT require NEW code to carry the old brand: artefacts created specifically for the rebrand take Ninjafy naming (ENG-8078 decision 9; see the CLAUDE.md rebrand carve-out). Either way it is a naming rule, not a flag concern \u2014 this key gates presentation, never an identifier. Set the stage-wide default to flip a whole environment, or add a feature_flag_overrides row to pilot a subset while everyone else still sees Augmented. Overrides resolve at FOUR grains, most specific first \u2014 agent, team, host, then org-wide (evaluate.ts:79-81); organization_id is always required, so there is no global override. Org and team are the useful pilot grains for THIS flag: there is now exactly ONE consumer \u2014 (dashboard)/layout.tsx via getPublicBooleanFlagServer \u2014 evaluating in the active-org cookie scope, so a host- or agent-scoped row is accepted by the table but never reached by the console. It resolves the key ONCE per request and passes the boolean down to sidebar.tsx and top-nav.tsx as a required prop. Resolution is SERVER-side deliberately: the client hook starts at its default and updates after an async GET /flags, so anything gated on it paints Augmented and then repaints. ENG-8858 moved the PALETTE for that reason (a full-page colour flash); ENG-9227 moved the WORDMARK, which had been the last surface still swapping after hydration. A consequence worth knowing: /login and the marketing routes stay on the Augmented palette whatever an org sets, because getPublicBooleanFlagServer returns the default without a verified session and a pre-auth page has neither a session nor an active org \u2014 a PER-ORG flag structurally cannot brand one. Those surfaces follow only when the stage-wide default flips. Ships dark.',
|
|
36594
36608
|
flagType: "boolean",
|
|
36595
36609
|
// Declared safe value is `false`: the pre-rebrand brand. `false` is also the
|
|
36596
36610
|
// fail-closed direction — if the flag DB is unreachable we must show the brand
|
|
36597
36611
|
// that is currently live and contractually correct, never leak an unannounced
|
|
36598
36612
|
// rebrand to every customer at once.
|
|
36599
36613
|
defaultValue: false,
|
|
36600
|
-
//
|
|
36601
|
-
//
|
|
36602
|
-
//
|
|
36603
|
-
//
|
|
36604
|
-
//
|
|
36605
|
-
//
|
|
36606
|
-
//
|
|
36607
|
-
//
|
|
36608
|
-
//
|
|
36614
|
+
// ENG-9227: there are NO client readers of this key left. (dashboard)/
|
|
36615
|
+
// layout.tsx resolves it ONCE server-side via getPublicBooleanFlagServer and
|
|
36616
|
+
// passes the boolean down to sidebar.tsx and top-nav.tsx as a required prop.
|
|
36617
|
+
// ENG-8858 did that for the THEME; ENG-9227 finished the job for the
|
|
36618
|
+
// WORDMARK, which had kept usePublicBooleanFlag and so kept swapping
|
|
36619
|
+
// "augmented.team" to "ninjafy" after hydration.
|
|
36620
|
+
//
|
|
36621
|
+
// `public` MUST STAY ANYWAY, and this is the trap. It is tempting to read
|
|
36622
|
+
// "no client readers" as "no longer needs to be public" — but
|
|
36623
|
+
// getPublicBooleanFlagServer resolves against the very same `GET /flags`
|
|
36624
|
+
// endpoint the browser uses, and that route filters to listPublicFlagKeys()
|
|
36625
|
+
// (routes/flags.ts:72-75). A non-public key is simply absent from the map,
|
|
36626
|
+
// so the server helper would fall through to its default and return `false`
|
|
36627
|
+
// FOREVER — the brand quietly reverting to Augmented for every org, with no
|
|
36628
|
+
// error anywhere. `public` here means "readable through the public map",
|
|
36629
|
+
// not "read by a browser".
|
|
36630
|
+
//
|
|
36631
|
+
// Unlike onboarding-msteams-channel above there is no wrong-org hazard — the
|
|
36632
|
+
// single reader evaluates inside the active-org cookie's scope, which is
|
|
36633
|
+
// exactly the org whose brand should be shown.
|
|
36609
36634
|
public: true
|
|
36610
36635
|
},
|
|
36611
36636
|
{
|
|
@@ -34107,7 +34107,7 @@ var INTEGRATION_REGISTRY = [
|
|
|
34107
34107
|
id: "firecrawl",
|
|
34108
34108
|
name: "Firecrawl",
|
|
34109
34109
|
category: "knowledge",
|
|
34110
|
-
description: "Web data for agents: scrape, map, crawl and search any website for clean structured data, plus scheduled change-detection monitors whose updates arrive in the agent's direct-chat. Connect via the platform-managed account
|
|
34110
|
+
description: "Web data for agents: scrape, map, crawl and search any website for clean structured data, plus scheduled change-detection monitors whose updates arrive in the agent's direct-chat. Connect via the platform-managed account.",
|
|
34111
34111
|
// ENG-7217: Firecrawl migrates from a customer-API-key stdio MCP
|
|
34112
34112
|
// (`npx firecrawl-mcp`, FIRECRAWL_API_KEY) to a PREMIUM, platform-managed
|
|
34113
34113
|
// integration on the Deck / ElevenLabs model (ADR-0031, epic ENG-6920):
|
|
@@ -34118,16 +34118,30 @@ var INTEGRATION_REGISTRY = [
|
|
|
34118
34118
|
// is metered at the one control-plane chokepoint and gated on a per-org opt-in
|
|
34119
34119
|
// + monthly USD cap.
|
|
34120
34120
|
//
|
|
34121
|
-
// ENG-8304 / ADR-0055 (Phase 1b — Firecrawl is the BYO exemplar): `api_key`
|
|
34122
|
-
//
|
|
34121
|
+
// ENG-8304 / ADR-0055 (Phase 1b — Firecrawl is the BYO exemplar): `api_key`
|
|
34122
|
+
// was also offered so a customer could bring their OWN Firecrawl key. A BYO
|
|
34123
34123
|
// install (`credential_source='byo'`) authenticates with the customer's key
|
|
34124
34124
|
// (stored encrypted on the install) and is NOT metered — its upstream cost is
|
|
34125
|
-
// on the customer's own Firecrawl bill.
|
|
34126
|
-
//
|
|
34127
|
-
// `api_key` is
|
|
34128
|
-
// `
|
|
34129
|
-
//
|
|
34130
|
-
|
|
34125
|
+
// on the customer's own Firecrawl bill.
|
|
34126
|
+
//
|
|
34127
|
+
// ENG-9235: `api_key` is PARKED, not abandoned. BYO is gated on the plan-tier
|
|
34128
|
+
// `byo_credentials` entitlement, which only `enterprise` has (the column is
|
|
34129
|
+
// NOT NULL DEFAULT false, and ENG-9143 explicitly set it false for Team). The
|
|
34130
|
+
// connect wizard never reads that flag, so offering `api_key` here sent every
|
|
34131
|
+
// Team/Business customer to firecrawl.dev for a key we would then reject with
|
|
34132
|
+
// a 403 `byo_not_entitled_by_plan` — after they had signed up for it.
|
|
34133
|
+
//
|
|
34134
|
+
// Removing it is also what removes that screen: the wizard's picker only
|
|
34135
|
+
// renders for 2+ selectable auth types (`selectableWizardAuthMethods`), so a
|
|
34136
|
+
// single `['none']` restores the friction-free managed install with no UI
|
|
34137
|
+
// change. Restore `api_key` only together with an entitlement-aware wizard —
|
|
34138
|
+
// see ENG-9236 for the proper fix.
|
|
34139
|
+
//
|
|
34140
|
+
// KEEP IN LOCKSTEP with the `firecrawl` row in
|
|
34141
|
+
// packages/supabase/seeds/toolkit-definitions.json: that seed carries its own
|
|
34142
|
+
// `auth_types` and is what `db:catalog:seed` upserts on every prod deploy, so
|
|
34143
|
+
// editing this array alone changes nothing a customer can see.
|
|
34144
|
+
supported_auth_types: ["none"],
|
|
34131
34145
|
capabilities: [
|
|
34132
34146
|
{ id: "firecrawl:scrape", name: "Scrape Pages", description: "Fetch a single URL as clean markdown / structured data (firecrawl_scrape).", access: "write" },
|
|
34133
34147
|
{ id: "firecrawl:search", name: "Web Search", description: "Search the web and return ranked results, optionally scraped (firecrawl_search).", access: "write" },
|
|
@@ -36734,22 +36748,33 @@ var FLAG_REGISTRY = [
|
|
|
36734
36748
|
},
|
|
36735
36749
|
{
|
|
36736
36750
|
key: "ninjafy-brand",
|
|
36737
|
-
description: 'Present the product under the Ninjafy brand instead of Augmented Team (ENG-8250). This is the UMBRELLA brand gate, not a one-off nav toggle: every subsequent rebrand surface (page titles, email templates, marketing-facing copy) reads THIS key rather than adding its own flag, so the whole rebrand keeps a single kill switch. First surface is the left-hand nav wordmark \u2014 ON replaces the human+robot mark and the "augmented.team" text with italic lowercase "ninjafy"; OFF renders exactly what shipped before. Scope is the USER-FACING BRAND PRESENTATION \u2014 text AND VISUAL THEME. ENG-8858 widened this from text alone: the Ninjafy palette is gated here too, because a colour theme is not text. It stays ONE key rather than gaining a `ninjafy-theme` sibling, so a half-branded state \u2014 ninjafy wordmark over Augmented green \u2014 is unreachable and the rebrand keeps a single kill switch. It must never gate a code identifier, package name, env var or CLI name. EXISTING identifiers stay `Augmented`/`agt` per the CLAUDE.md naming contract, which protects them from premature renaming \u2014 the deep rename is workstream C of docs/runbooks/rebrand-ninjafy-migration.md and is out of scope here. That contract does NOT require NEW code to carry the old brand: artefacts created specifically for the rebrand take Ninjafy naming (ENG-8078 decision 9; see the CLAUDE.md rebrand carve-out). Either way it is a naming rule, not a flag concern \u2014 this key gates presentation, never an identifier. Set the stage-wide default to flip a whole environment, or add a feature_flag_overrides row to pilot a subset while everyone else still sees Augmented. Overrides resolve at FOUR grains, most specific first \u2014 agent, team, host, then org-wide (evaluate.ts:79-81); organization_id is always required, so there is no global override. Org and team are the useful pilot grains for THIS flag:
|
|
36751
|
+
description: 'Present the product under the Ninjafy brand instead of Augmented Team (ENG-8250). This is the UMBRELLA brand gate, not a one-off nav toggle: every subsequent rebrand surface (page titles, email templates, marketing-facing copy) reads THIS key rather than adding its own flag, so the whole rebrand keeps a single kill switch. First surface is the left-hand nav wordmark \u2014 ON replaces the human+robot mark and the "augmented.team" text with italic lowercase "ninjafy"; OFF renders exactly what shipped before. Scope is the USER-FACING BRAND PRESENTATION \u2014 text AND VISUAL THEME. ENG-8858 widened this from text alone: the Ninjafy palette is gated here too, because a colour theme is not text. It stays ONE key rather than gaining a `ninjafy-theme` sibling, so a half-branded state \u2014 ninjafy wordmark over Augmented green \u2014 is unreachable and the rebrand keeps a single kill switch. It must never gate a code identifier, package name, env var or CLI name. EXISTING identifiers stay `Augmented`/`agt` per the CLAUDE.md naming contract, which protects them from premature renaming \u2014 the deep rename is workstream C of docs/runbooks/rebrand-ninjafy-migration.md and is out of scope here. That contract does NOT require NEW code to carry the old brand: artefacts created specifically for the rebrand take Ninjafy naming (ENG-8078 decision 9; see the CLAUDE.md rebrand carve-out). Either way it is a naming rule, not a flag concern \u2014 this key gates presentation, never an identifier. Set the stage-wide default to flip a whole environment, or add a feature_flag_overrides row to pilot a subset while everyone else still sees Augmented. Overrides resolve at FOUR grains, most specific first \u2014 agent, team, host, then org-wide (evaluate.ts:79-81); organization_id is always required, so there is no global override. Org and team are the useful pilot grains for THIS flag: there is now exactly ONE consumer \u2014 (dashboard)/layout.tsx via getPublicBooleanFlagServer \u2014 evaluating in the active-org cookie scope, so a host- or agent-scoped row is accepted by the table but never reached by the console. It resolves the key ONCE per request and passes the boolean down to sidebar.tsx and top-nav.tsx as a required prop. Resolution is SERVER-side deliberately: the client hook starts at its default and updates after an async GET /flags, so anything gated on it paints Augmented and then repaints. ENG-8858 moved the PALETTE for that reason (a full-page colour flash); ENG-9227 moved the WORDMARK, which had been the last surface still swapping after hydration. A consequence worth knowing: /login and the marketing routes stay on the Augmented palette whatever an org sets, because getPublicBooleanFlagServer returns the default without a verified session and a pre-auth page has neither a session nor an active org \u2014 a PER-ORG flag structurally cannot brand one. Those surfaces follow only when the stage-wide default flips. Ships dark.',
|
|
36738
36752
|
flagType: "boolean",
|
|
36739
36753
|
// Declared safe value is `false`: the pre-rebrand brand. `false` is also the
|
|
36740
36754
|
// fail-closed direction — if the flag DB is unreachable we must show the brand
|
|
36741
36755
|
// that is currently live and contractually correct, never leak an unannounced
|
|
36742
36756
|
// rebrand to every customer at once.
|
|
36743
36757
|
defaultValue: false,
|
|
36744
|
-
//
|
|
36745
|
-
//
|
|
36746
|
-
//
|
|
36747
|
-
//
|
|
36748
|
-
//
|
|
36749
|
-
//
|
|
36750
|
-
//
|
|
36751
|
-
//
|
|
36752
|
-
//
|
|
36758
|
+
// ENG-9227: there are NO client readers of this key left. (dashboard)/
|
|
36759
|
+
// layout.tsx resolves it ONCE server-side via getPublicBooleanFlagServer and
|
|
36760
|
+
// passes the boolean down to sidebar.tsx and top-nav.tsx as a required prop.
|
|
36761
|
+
// ENG-8858 did that for the THEME; ENG-9227 finished the job for the
|
|
36762
|
+
// WORDMARK, which had kept usePublicBooleanFlag and so kept swapping
|
|
36763
|
+
// "augmented.team" to "ninjafy" after hydration.
|
|
36764
|
+
//
|
|
36765
|
+
// `public` MUST STAY ANYWAY, and this is the trap. It is tempting to read
|
|
36766
|
+
// "no client readers" as "no longer needs to be public" — but
|
|
36767
|
+
// getPublicBooleanFlagServer resolves against the very same `GET /flags`
|
|
36768
|
+
// endpoint the browser uses, and that route filters to listPublicFlagKeys()
|
|
36769
|
+
// (routes/flags.ts:72-75). A non-public key is simply absent from the map,
|
|
36770
|
+
// so the server helper would fall through to its default and return `false`
|
|
36771
|
+
// FOREVER — the brand quietly reverting to Augmented for every org, with no
|
|
36772
|
+
// error anywhere. `public` here means "readable through the public map",
|
|
36773
|
+
// not "read by a browser".
|
|
36774
|
+
//
|
|
36775
|
+
// Unlike onboarding-msteams-channel above there is no wrong-org hazard — the
|
|
36776
|
+
// single reader evaluates inside the active-org cookie's scope, which is
|
|
36777
|
+
// exactly the org whose brand should be shown.
|
|
36753
36778
|
public: true
|
|
36754
36779
|
},
|
|
36755
36780
|
{
|
|
@@ -43,8 +43,8 @@ import {
|
|
|
43
43
|
writeDirectChatSessionState,
|
|
44
44
|
writeEgressAllowlist,
|
|
45
45
|
writePersistentClaudeWrapper
|
|
46
|
-
} from "./chunk-
|
|
47
|
-
import "./chunk-
|
|
46
|
+
} from "./chunk-E26EKDFP.js";
|
|
47
|
+
import "./chunk-HRMF6VUK.js";
|
|
48
48
|
import "./chunk-XWVM4KPK.js";
|
|
49
49
|
export {
|
|
50
50
|
EGRESS_BASELINE_DOMAINS,
|
|
@@ -92,4 +92,4 @@ export {
|
|
|
92
92
|
writeEgressAllowlist,
|
|
93
93
|
writePersistentClaudeWrapper
|
|
94
94
|
};
|
|
95
|
-
//# sourceMappingURL=persistent-session-
|
|
95
|
+
//# sourceMappingURL=persistent-session-XXP4NGEP.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
paneLogPath
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-E26EKDFP.js";
|
|
4
|
+
import "./chunk-HRMF6VUK.js";
|
|
5
5
|
import "./chunk-XWVM4KPK.js";
|
|
6
6
|
|
|
7
7
|
// src/lib/responsiveness-probe.ts
|
|
@@ -727,4 +727,4 @@ export {
|
|
|
727
727
|
readAndResetSlackReplyBindingClassifications,
|
|
728
728
|
readAndResetSlackReplyTargetClassifications
|
|
729
729
|
};
|
|
730
|
-
//# sourceMappingURL=responsiveness-probe-
|
|
730
|
+
//# sourceMappingURL=responsiveness-probe-QSJ263ZW.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
sessionTranscriptDir
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HRMF6VUK.js";
|
|
4
4
|
|
|
5
5
|
// src/lib/session-auth-dead.ts
|
|
6
6
|
import { closeSync, openSync, readSync, readdirSync, statSync } from "fs";
|
|
@@ -203,4 +203,4 @@ export {
|
|
|
203
203
|
decideSessionAuthState,
|
|
204
204
|
probeSessionAuth
|
|
205
205
|
};
|
|
206
|
-
//# sourceMappingURL=session-auth-dead-
|
|
206
|
+
//# sourceMappingURL=session-auth-dead-HHZT5KIM.js.map
|