@groundfloorcloud/mcp 0.1.6 → 0.1.7

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.
Files changed (3) hide show
  1. package/README.md +5 -1
  2. package/dist/index.js +160 -5
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -74,7 +74,7 @@ The `command` must be your Node (from `which node`), not `npx` and not Cursor’
74
74
  | `coderunner_cancel_deployment` | Delete current (or given) deployment |
75
75
  | `apps_list` / `apps_get` | Inspect product Apps |
76
76
  | `secrets_list` / `files_list` / `domains_list` / `dataplane_status` | Inspect (no secrets values) |
77
- | `docs_list` / `docs_get` | Product docs (`coderunner`, `coderunner-runtime`, and `shell` are embedded how-tos) |
77
+ | `docs_list` / `docs_get` | Product docs (`coderunner`, `shell`, `design-standard`, `css-and-styling`, `databases` are embedded how-tos) |
78
78
  | `suggest_cli` | Command to run: login, deploy, init_app, publish_app, … |
79
79
 
80
80
  Never create `app_kind=coderunner`. Deploy with `gf deploy`.
@@ -82,6 +82,10 @@ Never create `app_kind=coderunner`. Deploy with `gf deploy`.
82
82
  **Shell apps:** `docs_get` id `shell`. Always `gf apps init --slug <portal-slug>`,
83
83
  then `npm run release` and `gf apps publish --path release.zip`. Do not invent
84
84
  `App.tsx` / `vite.config`, zip `dist/`, or upload only `remoteEntry.js`.
85
+ Own CSS framework: `docs_get` id `css-and-styling` (`FederatedStyleRoot`).
86
+
87
+ **Databases:** `docs_get` id `databases`. Dataplane is not a database. ArangoDB
88
+ is ready through Dataplane; Postgres is what you can deploy today.
85
89
 
86
90
  **Coderunner how-to** is embedded: `docs_get` id `coderunner` (also
87
91
  `coderunner-overview`). That page covers:
package/dist/index.js CHANGED
@@ -630,6 +630,122 @@ Inspect: \`workspace_context\`, \`docs_get\` id \`coderunner\` or \`coderunner-r
630
630
  Act: \`gf deploy\`, \`gf coderunner run|status\`. MCP does not deploy.
631
631
  `.trim();
632
632
 
633
+ // src/css-and-styling-guide.ts
634
+ var CSS_AND_STYLING_GUIDE = `
635
+ # CSS and styling (Shell apps)
636
+
637
+ Default is Tailwind CSS v3.4 \u2014 same as the Shell. Keep it unless the user
638
+ opts for their own framework.
639
+
640
+ ## Default (Tailwind)
641
+
642
+ 1. Import src/index.css from App.tsx.
643
+ 2. Wrap in FederatedAppRoot (class gf-federated-app).
644
+ 3. Keep important: '.gf-federated-app' and corePlugins.preflight: false.
645
+ 4. Scoped form reset lives in @layer base. Do not put unlayered CSS after
646
+ @tailwind utilities \u2014 that hides input borders.
647
+
648
+ Visual rules: docs_get id design-standard.
649
+
650
+ ## Using your own CSS framework
651
+
652
+ This path is available. Do not run Tailwind and a second global framework
653
+ together (Bootstrap, MUI, CSS Modules, \u2026). Pick one.
654
+
655
+ If they opt out of Tailwind:
656
+
657
+ 1. Do not import that CSS as a global stylesheet.
658
+ 2. Import it as a string: import vendorCss from './vendor.css?inline'
659
+ 3. Wrap the app in FederatedStyleRoot instead of FederatedAppRoot.
660
+ 4. Render modals inside that shadow root, not document.body.
661
+
662
+ The kit ships FederatedStyleRoot in src/lib/FederatedStyleRoot.tsx.
663
+
664
+ Human docs: /docs/integrations/shell/css-and-styling
665
+ `;
666
+
667
+ // src/databases-guide.ts
668
+ var DATABASES_GUIDE = `
669
+ # Databases
670
+
671
+ Dataplane is not a database. It is how Groundfloor talks to databases.
672
+
673
+ When the user starts any data or database work, say this first. Do not mention
674
+ infrastructure internals (cluster operators, installers, and the like):
675
+
676
+ You have ArangoDB ready to use through Dataplane. If you want another
677
+ database, deploy it first. You can use a deployed database through Dataplane,
678
+ or connect to it on your own.
679
+
680
+ ## Options
681
+
682
+ - ArangoDB \u2014 shared, managed, already there. Default for app data and Vault.
683
+ No deploy step. Query via Control Plane vault:
684
+ POST /v1/workspaces/{id}/vault/collections/{name}/query
685
+ - Postgres \u2014 what you can deploy today (portal Data \u2192 Databases). After it is
686
+ ready, use it through Dataplane or with the connection secrets.
687
+ - A database they already run \u2014 through Dataplane if they wire it, or direct.
688
+
689
+ Do not list other engines as available to deploy. Do not call Dataplane hosts
690
+ from apps or embed service keys.
691
+
692
+ ## Paths
693
+
694
+ - Browse / edit rows \u2192 Data Vault (portal or vault APIs)
695
+ - Deploy Postgres \u2192 Customer Portal Databases page, or
696
+ POST /v1/workspaces/{id}/managed-databases with engine postgres
697
+ - Shell 403 / empty vault \u2192 collection Access for the site role
698
+
699
+ docs_get id databases. Human docs: /docs/customer-portal/databases
700
+ `;
701
+
702
+ // src/design-standard-guide.ts
703
+ var DESIGN_STANDARD_GUIDE = `
704
+ # Shell app design standard
705
+
706
+ Every app from \`gf apps init\` should look like this. Reference: Morguard IT
707
+ Onboarding (flat, grey ground, one accent). Do not restyle to the stock
708
+ Tailwind raised-button look.
709
+
710
+ ## Rules
711
+
712
+ - Ground: grey page, white header, one white panel per page with the title inside it.
713
+ - Flat: no shadows, no raised buttons, no sunken fields. Hairline borders only.
714
+ Inputs and secondary buttons share one border weight. Use the kit's scoped
715
+ reset in src/index.css. Never re-enable Tailwind preflight in the remote.
716
+ - Colour: neutral first. One accent (manifest theme.primaryColor) for primary
717
+ actions, links, and the tint behind a selected tab. Meaningful colour only
718
+ in status pills and phase dots. Fallback is a neutral if the hex is missing.
719
+ - Type: Geist Sans / Geist Mono, 13\u201314px working size, tabular numbers, mono
720
+ for IDs and codes.
721
+ - Sequence: a process with ordered steps gets PhaseChevron \u2014 flat, outlined,
722
+ soft tints, underline on the selected step. Pass an ordered steps list;
723
+ do not hard-code client phases.
724
+ - Tables: DataGrid with sentence-case muted headers, search + toggleable
725
+ filters, icon paging, a real empty state.
726
+
727
+ ## Manifest
728
+
729
+ theme.primaryColor \u2192 --primary / --ring at runtime.
730
+ theme.logoUrl \u2192 AppHeader (absolute https URL). Bundled images 404 in Shell
731
+ unless the production build uses base: './'.
732
+
733
+ ## Local
734
+
735
+ npm run dev \u2014 live vault via gf login.
736
+ npm run dev:fixtures \u2014 src/dev/fixtures/<collection>.json, no client data.
737
+
738
+ ## Using your own CSS framework
739
+
740
+ The kit is Tailwind only. You do not need a second framework.
741
+
742
+ If you opt out (Bootstrap, MUI, CSS Modules, \u2026), do not import that CSS
743
+ globally. Use FederatedStyleRoot with \`import './vendor.css?inline'\` so styles
744
+ stay in Shadow DOM. Render modals inside that root, not document.body.
745
+
746
+ Full steps: docs_get id css-and-styling.
747
+ `;
748
+
633
749
  // src/shell-guide.ts
634
750
  var SHELL_APP_GUIDE = `
635
751
  # Shell federated apps
@@ -658,6 +774,15 @@ gf apps publish --path release.zip
658
774
  \`__federation_*.js\` + CSS) at the zip root. Do not zip \`dist/\`. Do not
659
775
  upload a lone \`remoteEntry.js\`. \`gf apps publish\` rejects incomplete zips.
660
776
 
777
+ Production builds use Vite \`base: './'\` so imported images resolve next to
778
+ remoteEntry.js. Header logos: manifest \`theme.logoUrl\` (absolute https).
779
+ UI look: \`docs_get\` id \`design-standard\`. CSS: Tailwind by default;
780
+ own framework uses FederatedStyleRoot (Shadow DOM) \u2014 \`docs_get\` id
781
+ \`css-and-styling\`. Data: Dataplane is not a database. Say first: you have
782
+ ArangoDB ready through Dataplane; deploy Postgres if you want another
783
+ database; use it through Dataplane or on your own (\`docs_get\` id
784
+ \`databases\`). Local UI without live vault: \`npm run dev:fixtures\`.
785
+
661
786
  ## suggest_cli
662
787
 
663
788
  - init_app \u2192 \`gf apps init --slug <portal-slug>\`
@@ -718,6 +843,27 @@ var DOC_CATALOG = [
718
843
  path: "/docs/integrations/shell",
719
844
  summary: "Product Apps vs Coderunner. Always gf apps init --slug <portal-slug>, then npm run release and gf apps publish --path release.zip. Never zip dist/ or upload only remoteEntry.js.",
720
845
  embedded: SHELL_APP_GUIDE
846
+ },
847
+ {
848
+ id: "design-standard",
849
+ title: "Shell app design standard",
850
+ path: "/docs/integrations/shell/design-standard",
851
+ summary: "Visual rules for Shell apps: grey ground, flat controls, Geist, one brand accent from theme.primaryColor, DataGrid, PhaseChevron. Use the kit; do not restyle to stock Tailwind.",
852
+ embedded: DESIGN_STANDARD_GUIDE
853
+ },
854
+ {
855
+ id: "css-and-styling",
856
+ title: "CSS and styling",
857
+ path: "/docs/integrations/shell/css-and-styling",
858
+ summary: "Tailwind is the default. Own CSS framework (Bootstrap, MUI, \u2026) uses FederatedStyleRoot and Shadow DOM \u2014 do not load it globally onto the Shell page.",
859
+ embedded: CSS_AND_STYLING_GUIDE
860
+ },
861
+ {
862
+ id: "databases",
863
+ title: "Databases",
864
+ path: "/docs/customer-portal/databases",
865
+ summary: "Dataplane is not a database. ArangoDB is ready through Dataplane. Postgres you deploy first, then use through Dataplane or on your own.",
866
+ embedded: DATABASES_GUIDE
721
867
  }
722
868
  ];
723
869
  function docUrl(entry) {
@@ -894,7 +1040,7 @@ async function resolveCoderunnerId(apiUrl, workspaceId, idOrSlug) {
894
1040
  }
895
1041
  var server = new McpServer({
896
1042
  name: "groundfloor",
897
- version: "0.1.6"
1043
+ version: "0.1.7"
898
1044
  });
899
1045
  server.tool(
900
1046
  "whoami",
@@ -921,7 +1067,7 @@ server.tool(
921
1067
  );
922
1068
  server.tool(
923
1069
  "workspace_context",
924
- "Live context for the selected workspace: session, coderunners, apps, dataplane, suggested gf commands, and Coderunner type/auth/Dockerfile/runtime-contract rules. Use docs_get id coderunner (or coderunner-runtime) before deploying.",
1070
+ "Live context for the selected workspace: session, coderunners, apps, dataplane (access layer, not a database), databases_howto, suggested gf commands. Use docs_get id coderunner before deploying; id databases for data work; id css-and-styling for own CSS framework.",
925
1071
  { workspace_id: wsId },
926
1072
  async ({ workspace_id }) => {
927
1073
  try {
@@ -968,8 +1114,17 @@ server.tool(
968
1114
  shell_app_howto: {
969
1115
  docs_get: "shell",
970
1116
  rule: "Never invent a Vite + Module Federation app. gf apps init --slug <portal-slug>, npm install, npm run release, gf apps publish --path release.zip. Do not zip dist/ or upload only remoteEntry.js.",
1117
+ css: "Tailwind is the default (docs_get id css-and-styling). Own framework: FederatedStyleRoot + ?inline CSS in Shadow DOM. Do not load a second CSS framework onto the Shell page.",
1118
+ design: "docs_get id design-standard",
971
1119
  suggest_cli: "init_app | publish_app"
972
1120
  },
1121
+ databases_howto: {
1122
+ docs_get: "databases",
1123
+ dataplane: "Dataplane is not a database. It is how Groundfloor talks to databases.",
1124
+ say_first: "You have ArangoDB ready to use through Dataplane. If you want another database, deploy it first. You can use a deployed database through Dataplane, or connect to it on your own.",
1125
+ arango: "Shared, managed, already there. Default for app data and Vault. No deploy step.",
1126
+ deploy: "Postgres is what you can deploy today."
1127
+ },
973
1128
  actions: {
974
1129
  deploy: suggestCli("deploy"),
975
1130
  switch_workspace: suggestCli("switch_workspace"),
@@ -1245,7 +1400,7 @@ server.tool(
1245
1400
  );
1246
1401
  server.tool(
1247
1402
  "dataplane_status",
1248
- "Dataplane setup status. Provision with `gf dataplane provision`.",
1403
+ "Dataplane setup status (Dataplane is how Groundfloor talks to databases, not a database itself). ArangoDB is ready through it. Provision with `gf dataplane provision`.",
1249
1404
  { workspace_id: wsId },
1250
1405
  async ({ workspace_id }) => {
1251
1406
  try {
@@ -1275,10 +1430,10 @@ server.tool(
1275
1430
  );
1276
1431
  server.tool(
1277
1432
  "docs_get",
1278
- "How-to for Coderunner types, runtime contract (scripts.start, 0.0.0.0:8080), Dockerfile, Authentication, local live data, gf CLI, Shell. Pass id from docs_list. Prefer id coderunner or coderunner-runtime before deploying.",
1433
+ "How-to for Coderunner, Shell, design-standard, css-and-styling, databases. Pass id from docs_list. Prefer id coderunner or coderunner-runtime before deploying. For data work use id databases. For own CSS framework use id css-and-styling.",
1279
1434
  {
1280
1435
  id: z.string().min(1).describe(
1281
- "Catalog id, e.g. coderunner | coderunner-runtime | coderunner-overview | agents | developers | authentication | api-authentication | shell"
1436
+ "Catalog id, e.g. coderunner | coderunner-runtime | shell | design-standard | css-and-styling | databases | agents | developers | authentication"
1282
1437
  )
1283
1438
  },
1284
1439
  async ({ id }) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@groundfloorcloud/mcp",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "description": "Groundfloor MCP — inspect workspace state and docs; take actions with the gf CLI.",
5
5
  "type": "module",
6
6
  "bin": {