@groundfloorcloud/mcp 0.1.11 → 0.1.13

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 (2) hide show
  1. package/dist/index.js +23 -10
  2. package/package.json +2 -1
package/dist/index.js CHANGED
@@ -685,11 +685,11 @@ When the handler looks right locally, \`gf deploy\` the same tree.
685
685
  Do not pass credential-shaped keys as \`--env KEY=VALUE\` (\`*_SECRET\`,
686
686
  \`*_API_KEY\`, \`DATABASE_URL\`, \u2026). Control Plane returns **422**.
687
687
  \`gf secrets set KEY\` then \`gf deploy --secret KEY\` (inject by reference).
688
- This requires \`CODERUNNER_INJECT_ENV_SECRETS\` enabled for the workspace \u2014
689
- **off by default**. If \`--secret\` 422s naming that setting, either ask your
690
- platform operator to enable it, or read the secret live via M2M
691
- \`secrets:read\` instead (below) rather than falling back to plaintext
692
- \`--env\`.
688
+ This requires \`CODERUNNER_INJECT_ENV_SECRETS\`, a platform-wide Control Plane
689
+ setting \u2014 **off by default** and currently off. It cannot be enabled per
690
+ workspace, so there is nothing to request. If \`--secret\` 422s naming that
691
+ setting, read the secret live via M2M \`secrets:read\` instead (below) rather
692
+ than falling back to plaintext \`--env\`.
693
693
 
694
694
  ## M2M tokens (Vault, Files, and Secrets)
695
695
 
@@ -699,6 +699,11 @@ M2M tokens**, attach it on the Coderunner card, then deploy. v1 M2M is Team
699
699
  Writer on that workspace (full Vault skip-ACL + Files). Grant site users on
700
700
  **Administer \u2192 Access**. Never inject a Dataplane key.
701
701
 
702
+ Cache the minted JWT for its \`expires_in\` (refresh at ~80%). Never mint per
703
+ request: \`POST \u2026/m2m/token\` is rate-limited per client and per IP (default
704
+ 20/minute each) and returns **429** when exceeded. Treat 429/401 from the mint
705
+ call as retryable, not a crash.
706
+
702
707
  An M2M client can also read secret **values** directly at runtime instead
703
708
  of (or alongside) \`--secret\` deploy-time injection: grant it the
704
709
  **\`secrets:read\`** scope (same Portal **Administer \u2192 M2M tokens** screen,
@@ -900,6 +905,14 @@ database only if you need a different engine or workspace-owned isolation
900
905
  (\`docs_get\` id \`databases\`). Local UI without live vault:
901
906
  \`npm run dev:fixtures\`.
902
907
 
908
+ Detail routes (e.g. \`records/:id\`): once the record loads, call
909
+ \`setBreadcrumbLabel(record.name)\` from the kit's \`src/lib/shellBridge.ts\`
910
+ (wraps \`window.__GF_SET_BREADCRUMB_LABEL__(location.pathname, label)\`; no-op
911
+ outside Shell) so the breadcrumb does not show the raw id. Give that route
912
+ \`hidden: true\` in the manifest so it stays out of the sidebar nav but still
913
+ routes (omit it or use \`false\` otherwise \u2014 never \`null\`). \`visibility:
914
+ "public"\` makes a route reachable without login.
915
+
903
916
  ## suggest_cli
904
917
 
905
918
  - init_app \u2192 \`gf apps init --slug <portal-slug>\`
@@ -1023,7 +1036,7 @@ var DOC_CATALOG = [
1023
1036
  path: "/docs/customer-portal/coderunner",
1024
1037
  summary: "Workload types (function, job, schedule, service/Deployment), runtime contract (scripts.start, 0.0.0.0:8080), Dockerfile for services, Coderunner identities for Vault, App authentication optional, local live data, gf deploy.",
1025
1038
  embedded: CODERUNNER_GUIDE,
1026
- lastUpdated: "2026-09-23"
1039
+ lastUpdated: "2026-09-25"
1027
1040
  },
1028
1041
  {
1029
1042
  id: "coderunner-runtime",
@@ -1039,7 +1052,7 @@ var DOC_CATALOG = [
1039
1052
  path: "/docs/integrations/coderunner/overview",
1040
1053
  summary: "Architecture and lifecycle. Prefer docs_get id coderunner for type usage, Dockerfile, and create prerequisites.",
1041
1054
  embedded: CODERUNNER_GUIDE,
1042
- lastUpdated: "2026-09-23"
1055
+ lastUpdated: "2026-09-25"
1043
1056
  },
1044
1057
  {
1045
1058
  id: "authentication",
@@ -1057,7 +1070,7 @@ var DOC_CATALOG = [
1057
1070
  id: "m2m",
1058
1071
  title: "M2M tokens",
1059
1072
  path: "/docs/customer-portal/m2m-tokens",
1060
- summary: "Confidential client secret \u2192 short Control Plane JWT (typ=m2m). Attach on Coderunner or gf m2m token. Never DATAPLANE_SERVICE_API_KEY. v1 is Team Writer, no collection ACL."
1073
+ summary: "Confidential client secret \u2192 short Control Plane JWT (typ=m2m). Attach on Coderunner or gf m2m token. Never DATAPLANE_SERVICE_API_KEY. v1 is Team Writer, no collection ACL. Secrets only with the opt-in secrets:read scope (read-only). Cache the token; minting is rate-limited per client and IP."
1061
1074
  },
1062
1075
  {
1063
1076
  id: "api-authentication",
@@ -1071,7 +1084,7 @@ var DOC_CATALOG = [
1071
1084
  path: "/docs/integrations/shell",
1072
1085
  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.",
1073
1086
  embedded: SHELL_APP_GUIDE,
1074
- lastUpdated: "2026-09-22"
1087
+ lastUpdated: "2026-09-24"
1075
1088
  },
1076
1089
  {
1077
1090
  id: "design-standard",
@@ -1111,7 +1124,7 @@ var DOC_CATALOG = [
1111
1124
  path: "/docs/customer-portal/scheduled-jobs",
1112
1125
  summary: "workload_type=schedule plus cron. gf coderunner status shows type/schedule/last_job. Use Process Log, not a public URL.",
1113
1126
  embedded: CODERUNNER_GUIDE,
1114
- lastUpdated: "2026-09-23"
1127
+ lastUpdated: "2026-09-25"
1115
1128
  }
1116
1129
  ];
1117
1130
  function docUrl(entry) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@groundfloorcloud/mcp",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "description": "Groundfloor MCP — inspect workspace state and docs; take actions with the gf CLI.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -38,6 +38,7 @@
38
38
  },
39
39
  "devDependencies": {
40
40
  "@types/node": "^20",
41
+ "esbuild": "^0.27.7",
41
42
  "tsup": "^8.3.0",
42
43
  "typescript": "^5"
43
44
  },