@se-studio/contentful-cms 3.15.3 → 3.15.5

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 (111) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/HOSTED.md +20 -0
  3. package/README.md +1 -1
  4. package/dist/commands/host-scaffold.d.ts.map +1 -1
  5. package/dist/commands/host-scaffold.js +7 -5
  6. package/dist/commands/host-scaffold.js.map +1 -1
  7. package/dist/contentful/cma-user-agent.d.ts +1 -1
  8. package/dist/editor-pack/load.d.ts.map +1 -1
  9. package/dist/editor-pack/load.js +14 -2
  10. package/dist/editor-pack/load.js.map +1 -1
  11. package/dist/generated/help-topics.d.ts.map +1 -1
  12. package/dist/generated/help-topics.js +1 -1
  13. package/dist/generated/help-topics.js.map +1 -1
  14. package/dist/generated/hosted-guide.d.ts +1 -1
  15. package/dist/generated/hosted-guide.d.ts.map +1 -1
  16. package/dist/generated/hosted-guide.js +1 -1
  17. package/dist/generated/hosted-guide.js.map +1 -1
  18. package/dist/generated/version.d.ts +1 -1
  19. package/dist/generated/version.js +1 -1
  20. package/dist/hosted/index.d.ts +1 -1
  21. package/dist/hosted/index.d.ts.map +1 -1
  22. package/dist/hosted/index.js +1 -1
  23. package/dist/hosted/index.js.map +1 -1
  24. package/dist/hosted/next/pages/CmsEditPage.d.ts.map +1 -1
  25. package/dist/hosted/next/pages/CmsEditPage.js +1 -1
  26. package/dist/hosted/next/pages/CmsEditPage.js.map +1 -1
  27. package/dist/hosted/next/pages/HomePage.d.ts.map +1 -1
  28. package/dist/hosted/next/pages/HomePage.js +1 -1
  29. package/dist/hosted/next/pages/HomePage.js.map +1 -1
  30. package/dist/hosted/next/routes/mcp.d.ts +1 -0
  31. package/dist/hosted/next/routes/mcp.d.ts.map +1 -1
  32. package/dist/hosted/next/routes/mcp.js +6 -1
  33. package/dist/hosted/next/routes/mcp.js.map +1 -1
  34. package/dist/hosted/next/routes/oauth-authorization-server.d.ts +1 -0
  35. package/dist/hosted/next/routes/oauth-authorization-server.d.ts.map +1 -1
  36. package/dist/hosted/next/routes/oauth-authorization-server.js +5 -1
  37. package/dist/hosted/next/routes/oauth-authorization-server.js.map +1 -1
  38. package/dist/hosted/next/routes/oauth-protected-resource-path.d.ts +13 -0
  39. package/dist/hosted/next/routes/oauth-protected-resource-path.d.ts.map +1 -0
  40. package/dist/hosted/next/routes/oauth-protected-resource-path.js +17 -0
  41. package/dist/hosted/next/routes/oauth-protected-resource-path.js.map +1 -0
  42. package/dist/hosted/next/routes/oauth-protected-resource.d.ts +1 -0
  43. package/dist/hosted/next/routes/oauth-protected-resource.d.ts.map +1 -1
  44. package/dist/hosted/next/routes/oauth-protected-resource.js +5 -1
  45. package/dist/hosted/next/routes/oauth-protected-resource.js.map +1 -1
  46. package/dist/hosted/next/routes/oauth-register.d.ts +1 -0
  47. package/dist/hosted/next/routes/oauth-register.d.ts.map +1 -1
  48. package/dist/hosted/next/routes/oauth-register.js +5 -1
  49. package/dist/hosted/next/routes/oauth-register.js.map +1 -1
  50. package/dist/hosted/next/routes/oauth-token.d.ts +1 -0
  51. package/dist/hosted/next/routes/oauth-token.d.ts.map +1 -1
  52. package/dist/hosted/next/routes/oauth-token.js +5 -1
  53. package/dist/hosted/next/routes/oauth-token.js.map +1 -1
  54. package/dist/hosted/oauth/cimd.d.ts +17 -0
  55. package/dist/hosted/oauth/cimd.d.ts.map +1 -0
  56. package/dist/hosted/oauth/cimd.js +300 -0
  57. package/dist/hosted/oauth/cimd.js.map +1 -0
  58. package/dist/hosted/oauth/complete.d.ts +1 -0
  59. package/dist/hosted/oauth/complete.d.ts.map +1 -1
  60. package/dist/hosted/oauth/complete.js +4 -0
  61. package/dist/hosted/oauth/complete.js.map +1 -1
  62. package/dist/hosted/oauth/config.d.ts +2 -0
  63. package/dist/hosted/oauth/config.d.ts.map +1 -1
  64. package/dist/hosted/oauth/config.js +4 -0
  65. package/dist/hosted/oauth/config.js.map +1 -1
  66. package/dist/hosted/oauth/cors.d.ts +4 -0
  67. package/dist/hosted/oauth/cors.d.ts.map +1 -0
  68. package/dist/hosted/oauth/cors.js +23 -0
  69. package/dist/hosted/oauth/cors.js.map +1 -0
  70. package/dist/hosted/oauth/handlers.d.ts.map +1 -1
  71. package/dist/hosted/oauth/handlers.js +57 -7
  72. package/dist/hosted/oauth/handlers.js.map +1 -1
  73. package/dist/hosted/oauth/log.d.ts +2 -0
  74. package/dist/hosted/oauth/log.d.ts.map +1 -1
  75. package/dist/hosted/oauth/log.js +4 -0
  76. package/dist/hosted/oauth/log.js.map +1 -1
  77. package/dist/hosted/oauth/redirect-hosts.d.ts +4 -0
  78. package/dist/hosted/oauth/redirect-hosts.d.ts.map +1 -0
  79. package/dist/hosted/oauth/redirect-hosts.js +47 -0
  80. package/dist/hosted/oauth/redirect-hosts.js.map +1 -0
  81. package/dist/hosted/oauth/refresh.d.ts +1 -0
  82. package/dist/hosted/oauth/refresh.d.ts.map +1 -1
  83. package/dist/hosted/oauth/refresh.js +2 -0
  84. package/dist/hosted/oauth/refresh.js.map +1 -1
  85. package/dist/hosted/oauth/scopes.d.ts +15 -0
  86. package/dist/hosted/oauth/scopes.d.ts.map +1 -0
  87. package/dist/hosted/oauth/scopes.js +21 -0
  88. package/dist/hosted/oauth/scopes.js.map +1 -0
  89. package/dist/hosted/oauth/store.d.ts +4 -0
  90. package/dist/hosted/oauth/store.d.ts.map +1 -1
  91. package/dist/hosted/oauth/store.js +3 -0
  92. package/dist/hosted/oauth/store.js.map +1 -1
  93. package/dist/mcp/server.d.ts.map +1 -1
  94. package/dist/mcp/server.js +2 -0
  95. package/dist/mcp/server.js.map +1 -1
  96. package/dist/mcp/tools/client-tools.d.ts +11 -0
  97. package/dist/mcp/tools/client-tools.d.ts.map +1 -0
  98. package/dist/mcp/tools/client-tools.js +215 -0
  99. package/dist/mcp/tools/client-tools.js.map +1 -0
  100. package/dist/staged-upload/store.d.ts +18 -0
  101. package/dist/staged-upload/store.d.ts.map +1 -1
  102. package/dist/staged-upload/store.js +73 -0
  103. package/dist/staged-upload/store.js.map +1 -1
  104. package/dist/staged-upload/types.d.ts +2 -0
  105. package/dist/staged-upload/types.d.ts.map +1 -1
  106. package/docs/help/workflow.md +1 -1
  107. package/docs/mcp/hosted-guide.md +11 -8
  108. package/package.json +1 -1
  109. package/skills/core/SKILL.md +2 -7
  110. package/skills/manifest.json +1 -1
  111. package/skills/setup/SKILL.md +23 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @se-studio/contentful-cms Changelog
2
2
 
3
+ ## 3.15.5
4
+
5
+ ### Patch Changes
6
+
7
+ - Document role-gated publish, and allow browser CORS on the OAuth token and register routes.
8
+
9
+ ## 3.15.4
10
+
11
+ ### Patch Changes
12
+
13
+ - Advertise OAuth scopes and Client ID Metadata Documents, and add typed MCP tools so ChatGPT and other remote clients can read and save drafts without a shell. Failed hosted commands stay failures, dash-leading field values are not parsed as flags, Client ID metadata fetches stay on public hosts and within 64KiB, an unregistered redirect is not followed, playbook names stay inside the editor pack, and text appends check the stored offset.
14
+
3
15
  ## 3.15.3
4
16
 
5
17
  ### Patch Changes
package/HOSTED.md CHANGED
@@ -60,6 +60,26 @@ See [hosted-guide.md](./docs/mcp/hosted-guide.md) for troubleshooting.
60
60
 
61
61
  ---
62
62
 
63
+ ## Other AI clients
64
+
65
+ The MCP URL (`https://<host>/api/mcp`) is the same for every client. Sign in with Contentful when the client asks.
66
+
67
+ | Client | How to connect |
68
+ |--------|----------------|
69
+ | ChatGPT | Settings → Apps & Connectors → create a custom MCP server → paste the URL → OAuth. Draft writes need Business, Enterprise, or Edu. Recreate the connector after a cms-edit upgrade so the tool list reloads. |
70
+ | Cursor / VS Code | Remote HTTP MCP server, URL ending in `/api/mcp`, then OAuth. |
71
+ | Gemini CLI | `mcpServers.<name>.url` set to the MCP URL. |
72
+
73
+ Typed tools (`search`, `fetch`, `set_field`, `append_text`, `save_draft`) are for clients that do not read MCP resources and cannot run a shell. They write drafts only. `cms_edit` can publish, unpublish, or archive with `publish plan` then `publish apply` after an explicit yes, and only when the signed-in Contentful role allows it. AI Editor cannot.
74
+
75
+ **Existing hosts,** when bumping this package, re-export `OPTIONS` from `api/mcp`, `oauth/token`, `oauth/register`, and the OAuth well-known routes, and add:
76
+
77
+ `src/app/.well-known/oauth-protected-resource/[...path]/route.ts` → `oauth-protected-resource-path`
78
+
79
+ New scaffolds already include those files. `cms-edit host scaffold` does not overwrite a route that is already there.
80
+
81
+ ---
82
+
63
83
  ## Step 3 — Try it
64
84
 
65
85
  **Getting started:** Ask Claude to read the **cms-edit guide** (`cms-edit://guide` resource) or use the **`cms_edit_verify`** prompt to check version and connectivity.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  A CLI tool for AI agents to read and edit Contentful draft content across all SE Studio apps. Provides a `cms-edit` binary with a snapshot → ref → edit → save workflow.
4
4
 
5
- **Key constraint:** This tool has NO ability to publish, unpublish, archive, or delete published entries. All writes create drafts that a human must review and publish in Contentful.
5
+ **Key constraint:** `save` writes drafts. Publish, unpublish, and archive need `publish plan` then `publish apply` after an explicit yes, and a Contentful role that allows them. AI Editor cannot.
6
6
 
7
7
  ## Installation
8
8
 
@@ -1 +1 @@
1
- {"version":3,"file":"host-scaffold.d.ts","sourceRoot":"","sources":["../../src/commands/host-scaffold.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAIvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAwFD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0BlE"}
1
+ {"version":3,"file":"host-scaffold.d.ts","sourceRoot":"","sources":["../../src/commands/host-scaffold.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAIvF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AA0FD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0BlE"}
@@ -44,20 +44,22 @@ export const config = {
44
44
  `,
45
45
  'src/app/oauth/authorize/route.ts': `export { GET } from '@se-studio/contentful-cms/hosted/next/routes/oauth-authorize';
46
46
  `,
47
- 'src/app/oauth/token/route.ts': `export { POST } from '@se-studio/contentful-cms/hosted/next/routes/oauth-token';
47
+ 'src/app/oauth/token/route.ts': `export { OPTIONS, POST } from '@se-studio/contentful-cms/hosted/next/routes/oauth-token';
48
48
  `,
49
- 'src/app/oauth/register/route.ts': `export { POST } from '@se-studio/contentful-cms/hosted/next/routes/oauth-register';
49
+ 'src/app/oauth/register/route.ts': `export { OPTIONS, POST } from '@se-studio/contentful-cms/hosted/next/routes/oauth-register';
50
50
  `,
51
- 'src/app/api/mcp/route.ts': `export { GET, POST, DELETE } from '@se-studio/contentful-cms/hosted/next/routes/mcp';
51
+ 'src/app/api/mcp/route.ts': `export { GET, POST, DELETE, OPTIONS } from '@se-studio/contentful-cms/hosted/next/routes/mcp';
52
52
  `,
53
53
  'src/app/api/health/route.ts': `export { GET } from '@se-studio/contentful-cms/hosted/next/routes/health';
54
54
  `,
55
55
  'src/app/api/staged-upload/route.ts': stagedUploadScaffoldSource(),
56
56
  'src/app/api/oauth/link-contentful/route.ts': `export { POST } from '@se-studio/contentful-cms/hosted/next/routes/link-contentful';
57
57
  `,
58
- 'src/app/.well-known/oauth-authorization-server/route.ts': `export { GET } from '@se-studio/contentful-cms/hosted/next/routes/oauth-authorization-server';
58
+ 'src/app/.well-known/oauth-authorization-server/route.ts': `export { GET, OPTIONS } from '@se-studio/contentful-cms/hosted/next/routes/oauth-authorization-server';
59
59
  `,
60
- 'src/app/.well-known/oauth-protected-resource/route.ts': `export { GET } from '@se-studio/contentful-cms/hosted/next/routes/oauth-protected-resource';
60
+ 'src/app/.well-known/oauth-protected-resource/route.ts': `export { GET, OPTIONS } from '@se-studio/contentful-cms/hosted/next/routes/oauth-protected-resource';
61
+ `,
62
+ 'src/app/.well-known/oauth-protected-resource/[...path]/route.ts': `export { GET, OPTIONS } from '@se-studio/contentful-cms/hosted/next/routes/oauth-protected-resource-path';
61
63
  `,
62
64
  'scripts/stage-site.mjs': `#!/usr/bin/env node
63
65
  import { existsSync } from 'node:fs';
@@ -1 +1 @@
1
- {"version":3,"file":"host-scaffold.js","sourceRoot":"","sources":["../../src/commands/host-scaffold.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,UAAU,0BAA0B;IACxC,OAAO,2FAA2F,CAAC;AACrG,CAAC;AAED,MAAM,cAAc,GAA2B;IAC7C,cAAc,EAAE;;;;;;;;;;;CAWjB;IACC,oBAAoB,EAAE;;;;;;;CAOvB;IACC,kBAAkB,EAAE;CACrB;IACC,2BAA2B,EAAE;CAC9B;IACC,qCAAqC,EAAE;CACxC;IACC,gDAAgD,EAAE;CACnD;IACC,+BAA+B,EAAE;CAClC;IACC,0CAA0C,EAAE;CAC7C;IACC,0BAA0B,EAAE;CAC7B;IACC,4CAA4C,EAAE;CAC/C;IACC,kCAAkC,EAAE;CACrC;IACC,8BAA8B,EAAE;CACjC;IACC,iCAAiC,EAAE;CACpC;IACC,0BAA0B,EAAE;CAC7B;IACC,6BAA6B,EAAE;CAChC;IACC,oCAAoC,EAAE,0BAA0B,EAAE;IAClE,4CAA4C,EAAE;CAC/C;IACC,yDAAyD,EAAE;CAC5D;IACC,uDAAuD,EAAE;CAC1D;IACC,wBAAwB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B3B;CACA,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,oEAAoE,CAAC;SACjF,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC;SACnE,MAAM,CAAC,SAAS,EAAE,mCAAmC,CAAC;SACtD,MAAM,CAAC,CAAC,IAA2C,EAAE,EAAE;QACtD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACvD,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC7C,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACxC,SAAS;YACX,CAAC;YACD,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,aAAa,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"host-scaffold.js","sourceRoot":"","sources":["../../src/commands/host-scaffold.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAEvF,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,UAAU,0BAA0B;IACxC,OAAO,2FAA2F,CAAC;AACrG,CAAC;AAED,MAAM,cAAc,GAA2B;IAC7C,cAAc,EAAE;;;;;;;;;;;CAWjB;IACC,oBAAoB,EAAE;;;;;;;CAOvB;IACC,kBAAkB,EAAE;CACrB;IACC,2BAA2B,EAAE;CAC9B;IACC,qCAAqC,EAAE;CACxC;IACC,gDAAgD,EAAE;CACnD;IACC,+BAA+B,EAAE;CAClC;IACC,0CAA0C,EAAE;CAC7C;IACC,0BAA0B,EAAE;CAC7B;IACC,4CAA4C,EAAE;CAC/C;IACC,kCAAkC,EAAE;CACrC;IACC,8BAA8B,EAAE;CACjC;IACC,iCAAiC,EAAE;CACpC;IACC,0BAA0B,EAAE;CAC7B;IACC,6BAA6B,EAAE;CAChC;IACC,oCAAoC,EAAE,0BAA0B,EAAE;IAClE,4CAA4C,EAAE;CAC/C;IACC,yDAAyD,EAAE;CAC5D;IACC,uDAAuD,EAAE;CAC1D;IACC,iEAAiE,EAAE;CACpE;IACC,wBAAwB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B3B;CACA,CAAC;AAEF,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,OAAO;SACJ,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,oEAAoE,CAAC;SACjF,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC;SACnE,MAAM,CAAC,SAAS,EAAE,mCAAmC,CAAC;SACtD,MAAM,CAAC,CAAC,IAA2C,EAAE,EAAE;QACtD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACvD,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,KAAK,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC7C,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACxC,SAAS;YACX,CAAC;YACD,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,UAAU,EAAE,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;YAC5D,OAAO;QACT,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,aAAa,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /** SDK `application` value. Becomes `app cms-edit/<version>` in X-Contentful-User-Agent. */
2
- export declare const CMA_APPLICATION = "cms-edit/3.15.3";
2
+ export declare const CMA_APPLICATION = "cms-edit/3.15.5";
3
3
  export declare function cmaClientOptions(accessToken: string): {
4
4
  accessToken: string;
5
5
  application: string;
@@ -1 +1 @@
1
- {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/editor-pack/load.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,eAAO,MAAM,4BAA4B,yBAAyB,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAqCD,wBAAgB,qBAAqB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAc1E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAUlF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAwB9E;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,kBAAkB,GAAG,IAAI,CAkB3B"}
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/editor-pack/load.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,eAAO,MAAM,4BAA4B,yBAAyB,CAAC;AAEnE,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAqCD,wBAAgB,qBAAqB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAc1E;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAUlF;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAwB9E;AAeD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,GACnB,kBAAkB,GAAG,IAAI,CAkB3B"}
@@ -79,12 +79,24 @@ export function listEditorPackResources(packPath) {
79
79
  }))
80
80
  .sort((a, b) => a.name.localeCompare(b.name));
81
81
  }
82
+ function pathInsidePack(packPath, candidate) {
83
+ if (candidate.includes('\0')) {
84
+ return null;
85
+ }
86
+ const root = path.resolve(packPath);
87
+ const fullPath = path.resolve(root, candidate);
88
+ const relative = path.relative(root, fullPath);
89
+ if (relative.startsWith('..') || path.isAbsolute(relative)) {
90
+ return null;
91
+ }
92
+ return fullPath;
93
+ }
82
94
  export function getEditorPackResource(packPath, resourceName) {
83
95
  const normalized = resourceName.replace(/^\/+/, '');
84
96
  const candidates = [`${normalized}.md`, `${normalized}.json`, normalized];
85
97
  for (const candidate of candidates) {
86
- const fullPath = path.join(packPath, candidate);
87
- if (fs.existsSync(fullPath) && fs.statSync(fullPath).isFile()) {
98
+ const fullPath = pathInsidePack(packPath, candidate);
99
+ if (fullPath && fs.existsSync(fullPath) && fs.statSync(fullPath).isFile()) {
88
100
  const name = candidate.replace(/\.(md|json)$/, '');
89
101
  return {
90
102
  uri: `${CUSTOMER_RESOURCE_URI_PREFIX}${name}`,
@@ -1 +1 @@
1
- {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/editor-pack/load.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/editor-pack/load.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"help-topics.d.ts","sourceRoot":"","sources":["../../src/generated/help-topics.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAylzG,CAAC;AAClpzG,eAAO,MAAM,yBAAyB,YAAI,wBAAwB,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAC,kBAAkB,EAAC,uBAAuB,EAAC,kBAAkB,EAAC,QAAQ,EAAC,gBAAgB,EAAC,mBAAmB,EAAC,kBAAkB,EAAC,uBAAuB,EAAC,aAAa,EAAC,iBAAiB,EAAC,OAAO,EAAC,YAAY,EAAC,QAAQ,EAAC,UAAU,EAAC,kBAAkB,EAAC,SAAS,EAAC,oBAAoB,EAAC,UAAU,CAAU,CAAC"}
1
+ {"version":3,"file":"help-topics.d.ts","sourceRoot":"","sources":["../../src/generated/help-topics.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAsqzG,CAAC;AAC/tzG,eAAO,MAAM,yBAAyB,YAAI,wBAAwB,EAAC,cAAc,EAAC,OAAO,EAAC,WAAW,EAAC,kBAAkB,EAAC,uBAAuB,EAAC,kBAAkB,EAAC,QAAQ,EAAC,gBAAgB,EAAC,mBAAmB,EAAC,kBAAkB,EAAC,uBAAuB,EAAC,aAAa,EAAC,iBAAiB,EAAC,OAAO,EAAC,YAAY,EAAC,QAAQ,EAAC,UAAU,EAAC,kBAAkB,EAAC,SAAS,EAAC,oBAAoB,EAAC,UAAU,CAAU,CAAC"}