├── apps ├── docs │ ├── client │ │ ├── src │ │ │ ├── pages │ │ │ │ ├── index.astro │ │ │ │ └── [locale] │ │ │ │ │ └── [...slug].astro │ │ │ ├── components │ │ │ │ ├── ui │ │ │ │ │ ├── Footer.astro │ │ │ │ │ ├── BaseHead.astro │ │ │ │ │ ├── AccordionGroup.tsx │ │ │ │ │ ├── StepGroup.tsx │ │ │ │ │ ├── Step.tsx │ │ │ │ │ ├── LanguageSelector.tsx │ │ │ │ │ ├── PageTitle.tsx │ │ │ │ │ ├── Accordion.tsx │ │ │ │ │ └── Card.astro │ │ │ │ ├── markdown │ │ │ │ │ ├── Tbody.astro │ │ │ │ │ ├── Pre.astro │ │ │ │ │ ├── Thead.astro │ │ │ │ │ ├── Tr.astro │ │ │ │ │ ├── Td.astro │ │ │ │ │ ├── Th.astro │ │ │ │ │ ├── Blockquote.astro │ │ │ │ │ ├── Table.astro │ │ │ │ │ ├── Code.astro │ │ │ │ │ └── Img.astro │ │ │ │ └── atoms │ │ │ │ │ └── Icon.tsx │ │ │ ├── i18n │ │ │ │ ├── utils.ts │ │ │ │ └── ui.ts │ │ │ ├── content.config.ts │ │ │ └── config │ │ │ │ └── site.ts │ │ └── public │ │ │ └── favicon.ico │ ├── tsconfig.json │ ├── .gitignore │ ├── wrangler.toml │ ├── server │ │ └── main.ts │ ├── astro.config.mjs │ └── package.json └── mesh │ ├── public │ ├── empty-state-home.png │ ├── empty-state-cards.png │ ├── logos │ │ ├── cursor.svg │ │ ├── Windsurf.svg │ │ └── deco logo.svg │ └── favicon.svg │ ├── src │ ├── web │ │ ├── components │ │ │ ├── tools │ │ │ │ └── index.ts │ │ │ ├── splash-screen.tsx │ │ │ ├── store │ │ │ │ ├── app-detail │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── app-detail-header.tsx │ │ │ │ │ └── types.ts │ │ │ │ └── index.ts │ │ │ ├── collections │ │ │ │ ├── collection-page.tsx │ │ │ │ ├── collection-header.tsx │ │ │ │ ├── collection-search.tsx │ │ │ │ └── collection-table-wrapper.tsx │ │ │ ├── details │ │ │ │ └── connection │ │ │ │ │ ├── readme-tab.tsx │ │ │ │ │ ├── tools-tab.tsx │ │ │ │ │ └── settings-tab │ │ │ │ │ └── schema.ts │ │ │ ├── mesh-sidebar.tsx │ │ │ ├── integration-icon.tsx │ │ │ └── error-boundary.tsx │ │ ├── routes │ │ │ ├── orgs │ │ │ │ ├── gateway-detail.tsx │ │ │ │ ├── connection-detail.tsx │ │ │ │ └── home │ │ │ │ │ ├── monitoring-types.ts │ │ │ │ │ └── home-grid-cell.tsx │ │ │ ├── home.tsx │ │ │ └── auth-catchall.tsx │ │ ├── utils │ │ │ ├── slugify.ts │ │ │ ├── normalize-url.ts │ │ │ ├── date-range.ts │ │ │ ├── constants.ts │ │ │ ├── github-icon.ts │ │ │ └── app-name.ts │ │ ├── hooks │ │ │ ├── use-deco-chat-open.ts │ │ │ ├── use-oauth-token-validation.ts │ │ │ ├── use-members.ts │ │ │ ├── use-publisher-connection.ts │ │ │ └── collections │ │ │ │ ├── use-llm.ts │ │ │ │ └── use-agent.ts │ │ ├── lib │ │ │ ├── auth-client.ts │ │ │ ├── localstorage-keys.ts │ │ │ └── locator.ts │ │ ├── layouts │ │ │ └── required-auth-layout.tsx │ │ ├── providers │ │ │ ├── providers.tsx │ │ │ ├── better-auth-ui-provider.tsx │ │ │ ├── project-context-provider.tsx │ │ │ └── auth-config-provider.tsx │ │ └── types │ │ │ └── chat-threads.ts │ ├── api │ │ ├── env.ts │ │ ├── index.ts │ │ ├── routes │ │ │ └── management.ts │ │ ├── http-server-transport.ts │ │ └── utils │ │ │ └── compose.ts │ ├── tools │ │ ├── monitoring │ │ │ ├── index.ts │ │ │ └── stats.ts │ │ ├── apiKeys │ │ │ ├── index.ts │ │ │ └── create.ts │ │ ├── eventbus │ │ │ ├── index.ts │ │ │ ├── list.ts │ │ │ ├── ack.ts │ │ │ ├── subscribe.ts │ │ │ └── unsubscribe.ts │ │ ├── organization │ │ │ ├── schema.ts │ │ │ ├── index.ts │ │ │ ├── delete.ts │ │ │ ├── settings-get.ts │ │ │ ├── settings-update.ts │ │ │ ├── get.ts │ │ │ ├── list.ts │ │ │ ├── member-remove.ts │ │ │ ├── update.ts │ │ │ └── member-list.ts │ │ ├── connection │ │ │ ├── index.ts │ │ │ ├── json-path.ts │ │ │ ├── test.ts │ │ │ ├── get.ts │ │ │ └── delete.ts │ │ ├── gateway │ │ │ └── index.ts │ │ ├── database │ │ │ └── index.ts │ │ └── registry.test.ts │ ├── shared │ │ └── utils │ │ │ └── generate-id.ts │ ├── auth │ │ ├── roles.ts │ │ ├── oauth-providers.ts │ │ ├── index.test.ts │ │ └── magic-link.ts │ ├── common.ts │ ├── index.ts │ ├── observability │ │ └── index.ts │ └── monitoring │ │ └── types.ts │ ├── index.css │ ├── index.html │ ├── .gitignore │ ├── migrations │ ├── 011-gateway-icon.ts │ ├── 006-add-views-to-settings.ts │ ├── 002-organization-settings.ts │ ├── 005-connection-configuration.ts │ └── 013-monitoring-user-agent-gateway.ts │ ├── .dockerignore │ ├── auth-config.example.json │ ├── tsconfig.json │ └── vite.config.ts ├── .npmrc ├── packages ├── runtime │ ├── src │ │ ├── proxy.ts │ │ ├── connection.ts │ │ ├── mcp.ts │ │ ├── asset-server │ │ │ └── dev-server-proxy.ts │ │ ├── state.ts │ │ ├── bindings │ │ │ ├── utils.ts │ │ │ ├── index.ts │ │ │ ├── language-model │ │ │ │ └── utils.ts │ │ │ └── channels.ts │ │ └── client.ts │ ├── tsconfig.json │ ├── scripts │ │ └── generate-json-schema.ts │ └── package.json ├── cli │ ├── src │ │ ├── commands │ │ │ ├── projects │ │ │ │ └── index.ts │ │ │ ├── deconfig │ │ │ │ └── index.ts │ │ │ └── hosting │ │ │ │ └── list.ts │ │ ├── cli.ts │ │ ├── deconfig.ts │ │ └── lib │ │ │ ├── package-info.ts │ │ │ ├── runtime.ts │ │ │ ├── banner.ts │ │ │ ├── constants.ts │ │ │ ├── parse-binding-tool.ts │ │ │ ├── supabase.ts │ │ │ ├── slugify.ts │ │ │ ├── projects.ts │ │ │ └── manifest-schema.ts │ ├── tsconfig.json │ └── tsup.config.ts ├── ui │ ├── src │ │ ├── assets │ │ │ └── fonts │ │ │ │ ├── CommitMono-VariableFont.woff2 │ │ │ │ └── README.md │ │ ├── lib │ │ │ └── utils.ts │ │ ├── components │ │ │ ├── aspect-ratio.tsx │ │ │ ├── skeleton.tsx │ │ │ ├── sonner.tsx │ │ │ ├── label.tsx │ │ │ ├── separator.tsx │ │ │ ├── textarea.tsx │ │ │ ├── progress.tsx │ │ │ ├── collapsible.tsx │ │ │ ├── sidebar-toggle-button.tsx │ │ │ ├── input.tsx │ │ │ ├── deco-chat-empty-state.tsx │ │ │ ├── sidebar-footer-shell.tsx │ │ │ ├── switch.tsx │ │ │ ├── checkbox.tsx │ │ │ ├── deco-chat-toggle-button.tsx │ │ │ ├── icon.tsx │ │ │ ├── chat │ │ │ │ └── lazy-highlighter.tsx │ │ │ ├── radio-group.tsx │ │ │ ├── hover-card.tsx │ │ │ ├── deco-chat-header.tsx │ │ │ ├── toggle.tsx │ │ │ └── app-topbar.tsx │ │ ├── hooks │ │ │ ├── use-copy.ts │ │ │ ├── use-mobile.ts │ │ │ ├── use-persisted-filters.ts │ │ │ ├── use-sortable.ts │ │ │ └── use-view-mode.ts │ │ └── types │ │ │ └── chat-metadata.ts │ └── components.json ├── bindings │ ├── src │ │ ├── core │ │ │ ├── client │ │ │ │ ├── README.md │ │ │ │ └── index.ts │ │ │ └── connection.ts │ │ └── well-known │ │ │ └── mcp.ts │ ├── tsconfig.json │ ├── package.json │ └── test │ │ └── mcp.test.ts ├── vite-plugin-deco │ ├── package.json │ └── tsconfig.json └── create-deco │ ├── package.json │ └── README.md ├── .vscode └── settings.json ├── deploy ├── conf-examples │ ├── auth-config.json.example │ └── auth-config-sso-email.json.example └── docker-compose.yml ├── .cursorindexingignore ├── .github ├── ISSUE_TEMPLATE │ ├── config.yml │ ├── feature_request.md │ └── bug_report.md ├── pull_request_template.md └── workflows │ ├── deploy-docs.yaml │ └── test.yml ├── .dockerignore ├── .oxlintrc.json ├── biome.json ├── knip.jsonc ├── .gitignore ├── plugins └── enforce-kebab-case-file-names.js └── package.json /apps/docs/client/src/pages/index.astro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | @jsr:registry=https://npm.jsr.io 2 | -------------------------------------------------------------------------------- /packages/runtime/src/proxy.ts: -------------------------------------------------------------------------------- 1 | export * from "@decocms/bindings/client"; 2 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "node_modules/typescript/lib" 3 | } 4 | -------------------------------------------------------------------------------- /apps/docs/client/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decocms/mesh/HEAD/apps/docs/client/public/favicon.ico -------------------------------------------------------------------------------- /apps/mesh/public/empty-state-home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decocms/mesh/HEAD/apps/mesh/public/empty-state-home.png -------------------------------------------------------------------------------- /apps/mesh/src/web/components/tools/index.ts: -------------------------------------------------------------------------------- 1 | export { ToolsList, type Tool, type ToolsListProps } from "./tools-list"; 2 | -------------------------------------------------------------------------------- /deploy/conf-examples/auth-config.json.example: -------------------------------------------------------------------------------- 1 | { 2 | "emailAndPassword": { 3 | "enabled": true 4 | } 5 | } 6 | 7 | -------------------------------------------------------------------------------- /apps/mesh/public/empty-state-cards.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decocms/mesh/HEAD/apps/mesh/public/empty-state-cards.png -------------------------------------------------------------------------------- /.cursorindexingignore: -------------------------------------------------------------------------------- 1 | 2 | # Don't index SpecStory auto-save files, but allow explicit context inclusion via @ references 3 | .specstory/** 4 | -------------------------------------------------------------------------------- /apps/docs/client/src/components/ui/Footer.astro: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | -------------------------------------------------------------------------------- /packages/cli/src/commands/projects/index.ts: -------------------------------------------------------------------------------- 1 | export { exportCommand } from "./export.js"; 2 | export { importCommand } from "./import.js"; 3 | -------------------------------------------------------------------------------- /apps/docs/client/src/components/markdown/Tbody.astro: -------------------------------------------------------------------------------- 1 | --- 2 | const props = Astro.props; 3 | --- 4 | 5 |
6 |6 | -------------------------------------------------------------------------------- /packages/ui/src/assets/fonts/CommitMono-VariableFont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/decocms/mesh/HEAD/packages/ui/src/assets/fonts/CommitMono-VariableFont.woff2 -------------------------------------------------------------------------------- /apps/docs/client/src/components/markdown/Thead.astro: -------------------------------------------------------------------------------- 1 | --- 2 | const props = Astro.props; 3 | --- 4 | 5 | 6 |
9 |11 | -------------------------------------------------------------------------------- /apps/mesh/src/shared/utils/generate-id.ts: -------------------------------------------------------------------------------- 1 | import { nanoid } from "nanoid"; 2 | 3 | type IdPrefixes = "conn" | "audit" | "log" | "gw" | "gwc"; 4 | 5 | export function generatePrefixedId(prefix: IdPrefixes) { 6 | return `${prefix}_${nanoid()}`; 7 | } 8 | -------------------------------------------------------------------------------- /apps/mesh/src/web/components/splash-screen.tsx: -------------------------------------------------------------------------------- 1 | export function SplashScreen() { 2 | return ( 3 |10 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/apps/mesh/src/web/routes/home.tsx:
--------------------------------------------------------------------------------
1 | import { OrganizationsHome } from "@/web/components/organizations-home";
2 |
3 | export default function App() {
4 | return (
5 | {title}
19 |Click here to login
`, 30 | }); 31 | }, 32 | }; 33 | }; 34 | 35 | export interface MagicLinkConfig { 36 | enabled: boolean; 37 | emailProviderId: string; 38 | } 39 | -------------------------------------------------------------------------------- /apps/mesh/auth-config.example.json: -------------------------------------------------------------------------------- 1 | { 2 | "emailAndPassword": { 3 | "enabled": true 4 | }, 5 | "socialProviders": { 6 | "google": { 7 | "clientId": "your-google-client-id", 8 | "clientSecret": "your-google-client-secret" 9 | }, 10 | "github": { 11 | "clientId": "your-github-client-id", 12 | "clientSecret": "your-github-client-secret" 13 | } 14 | }, 15 | "saml": { 16 | "enabled": false, 17 | "providers": [] 18 | }, 19 | "emailProviders": [ 20 | { 21 | "id": "resend-primary", 22 | "provider": "resend", 23 | "config": { 24 | "apiKey": "your-resend-api-key", 25 | "fromEmail": "noreply@yourdomain.com" 26 | } 27 | }, 28 | { 29 | "id": "sendgrid-primary", 30 | "provider": "sendgrid", 31 | "config": { 32 | "apiKey": "your-sendgrid-api-key", 33 | "fromEmail": "noreply@yourdomain.com" 34 | } 35 | } 36 | ], 37 | "inviteEmailProviderId": "resend-primary", 38 | "magicLinkConfig": { 39 | "enabled": true, 40 | "emailProviderId": "resend-primary" 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /packages/ui/src/components/input.tsx: -------------------------------------------------------------------------------- 1 | import type * as React from "react"; 2 | 3 | import { cn } from "@deco/ui/lib/utils.ts"; 4 | 5 | function Input({ className, type, ...props }: React.ComponentProps<"input">) { 6 | return ( 7 | 18 | ); 19 | } 20 | 21 | export { Input }; 22 | -------------------------------------------------------------------------------- /apps/mesh/migrations/005-connection-configuration.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Connection Configuration Migration 3 | * 4 | * Adds configuration state and scopes to connections table. 5 | * This allows MCPs to declare their configuration needs via MESH_CONFIGURATION tool. 6 | */ 7 | 8 | import { Kysely } from "kysely"; 9 | 10 | export async function up(db: Kysely36 | {description} 37 |
38 |{description}
36 | ) 37 | } 38 |43 | {this.state.error?.message || "An unexpected error occurred"} 44 |
45 |