@cyanheads/mcp-ts-core 0.13.10 → 0.13.12

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 (153) hide show
  1. package/AGENTS.md +9 -6
  2. package/CLAUDE.md +9 -6
  3. package/README.md +29 -3
  4. package/biome.json +1 -1
  5. package/changelog/0.13.x/0.13.11.md +113 -0
  6. package/changelog/0.13.x/0.13.12.md +50 -0
  7. package/dist/cli/app-render.d.ts +11 -0
  8. package/dist/cli/app-render.d.ts.map +1 -0
  9. package/dist/cli/app-render.js +150 -0
  10. package/dist/cli/app-render.js.map +1 -0
  11. package/dist/cli/init.d.ts +2 -1
  12. package/dist/cli/init.d.ts.map +1 -1
  13. package/dist/cli/init.js +10 -2
  14. package/dist/cli/init.js.map +1 -1
  15. package/dist/core/context.d.ts +3 -2
  16. package/dist/core/context.d.ts.map +1 -1
  17. package/dist/core/context.js +25 -16
  18. package/dist/core/context.js.map +1 -1
  19. package/dist/mcp-server/handlerContext.d.ts +14 -8
  20. package/dist/mcp-server/handlerContext.d.ts.map +1 -1
  21. package/dist/mcp-server/handlerContext.js +16 -9
  22. package/dist/mcp-server/handlerContext.js.map +1 -1
  23. package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -1
  24. package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +15 -7
  25. package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -1
  26. package/dist/mcp-server/tools/utils/inputPrevalidation.d.ts +8 -2
  27. package/dist/mcp-server/tools/utils/inputPrevalidation.d.ts.map +1 -1
  28. package/dist/mcp-server/tools/utils/inputPrevalidation.js +18 -7
  29. package/dist/mcp-server/tools/utils/inputPrevalidation.js.map +1 -1
  30. package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
  31. package/dist/mcp-server/tools/utils/toolHandlerFactory.js +79 -8
  32. package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
  33. package/dist/mcp-server/transports/auth/lib/authUtils.d.ts +20 -0
  34. package/dist/mcp-server/transports/auth/lib/authUtils.d.ts.map +1 -1
  35. package/dist/mcp-server/transports/auth/lib/authUtils.js +28 -2
  36. package/dist/mcp-server/transports/auth/lib/authUtils.js.map +1 -1
  37. package/dist/mcp-server/transports/auth/lib/checkScopes.d.ts.map +1 -1
  38. package/dist/mcp-server/transports/auth/lib/checkScopes.js +2 -1
  39. package/dist/mcp-server/transports/auth/lib/checkScopes.js.map +1 -1
  40. package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -1
  41. package/dist/mcp-server/transports/http/httpErrorHandler.js +4 -2
  42. package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -1
  43. package/dist/services/mirror/sqlite/handle.d.ts +22 -5
  44. package/dist/services/mirror/sqlite/handle.d.ts.map +1 -1
  45. package/dist/services/mirror/sqlite/handle.js +61 -12
  46. package/dist/services/mirror/sqlite/handle.js.map +1 -1
  47. package/dist/services/mirror/sqlite/sqliteMirrorStore.d.ts +6 -1
  48. package/dist/services/mirror/sqlite/sqliteMirrorStore.d.ts.map +1 -1
  49. package/dist/services/mirror/sqlite/sqliteMirrorStore.js +3 -2
  50. package/dist/services/mirror/sqlite/sqliteMirrorStore.js.map +1 -1
  51. package/dist/testing/apps/browser.d.ts +27 -0
  52. package/dist/testing/apps/browser.d.ts.map +1 -0
  53. package/dist/testing/apps/browser.js +162 -0
  54. package/dist/testing/apps/browser.js.map +1 -0
  55. package/dist/testing/apps/cdp-pipe.d.ts +79 -0
  56. package/dist/testing/apps/cdp-pipe.d.ts.map +1 -0
  57. package/dist/testing/apps/cdp-pipe.js +200 -0
  58. package/dist/testing/apps/cdp-pipe.js.map +1 -0
  59. package/dist/testing/apps/csp.d.ts +17 -0
  60. package/dist/testing/apps/csp.d.ts.map +1 -0
  61. package/dist/testing/apps/csp.js +50 -0
  62. package/dist/testing/apps/csp.js.map +1 -0
  63. package/dist/testing/apps/host-pages.d.ts +47 -0
  64. package/dist/testing/apps/host-pages.d.ts.map +1 -0
  65. package/dist/testing/apps/host-pages.js +138 -0
  66. package/dist/testing/apps/host-pages.js.map +1 -0
  67. package/dist/testing/apps/index.d.ts +167 -0
  68. package/dist/testing/apps/index.d.ts.map +1 -0
  69. package/dist/testing/apps/index.js +36 -0
  70. package/dist/testing/apps/index.js.map +1 -0
  71. package/dist/testing/apps/partial-json.d.ts +14 -0
  72. package/dist/testing/apps/partial-json.d.ts.map +1 -0
  73. package/dist/testing/apps/partial-json.js +71 -0
  74. package/dist/testing/apps/partial-json.js.map +1 -0
  75. package/dist/testing/apps/run.d.ts +13 -0
  76. package/dist/testing/apps/run.d.ts.map +1 -0
  77. package/dist/testing/apps/run.js +659 -0
  78. package/dist/testing/apps/run.js.map +1 -0
  79. package/dist/utils/index.d.ts +1 -1
  80. package/dist/utils/index.d.ts.map +1 -1
  81. package/dist/utils/index.js +1 -1
  82. package/dist/utils/index.js.map +1 -1
  83. package/dist/utils/internal/error-handler/errorHandler.d.ts +1 -0
  84. package/dist/utils/internal/error-handler/errorHandler.d.ts.map +1 -1
  85. package/dist/utils/internal/error-handler/errorHandler.js +22 -11
  86. package/dist/utils/internal/error-handler/errorHandler.js.map +1 -1
  87. package/dist/utils/internal/error-handler/helpers.d.ts +16 -5
  88. package/dist/utils/internal/error-handler/helpers.d.ts.map +1 -1
  89. package/dist/utils/internal/error-handler/helpers.js +12 -7
  90. package/dist/utils/internal/error-handler/helpers.js.map +1 -1
  91. package/dist/utils/internal/error-handler/types.d.ts +11 -4
  92. package/dist/utils/internal/error-handler/types.d.ts.map +1 -1
  93. package/dist/utils/internal/logger.d.ts +21 -1
  94. package/dist/utils/internal/logger.d.ts.map +1 -1
  95. package/dist/utils/internal/logger.js +31 -14
  96. package/dist/utils/internal/logger.js.map +1 -1
  97. package/dist/utils/internal/observabilityCap.d.ts +35 -0
  98. package/dist/utils/internal/observabilityCap.d.ts.map +1 -0
  99. package/dist/utils/internal/observabilityCap.js +43 -0
  100. package/dist/utils/internal/observabilityCap.js.map +1 -0
  101. package/dist/utils/internal/performance.d.ts +3 -1
  102. package/dist/utils/internal/performance.d.ts.map +1 -1
  103. package/dist/utils/internal/performance.js +8 -3
  104. package/dist/utils/internal/performance.js.map +1 -1
  105. package/dist/utils/network/fetchWithTimeout.d.ts +3 -1
  106. package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -1
  107. package/dist/utils/network/fetchWithTimeout.js +70 -16
  108. package/dist/utils/network/fetchWithTimeout.js.map +1 -1
  109. package/dist/utils/network/retry.d.ts +22 -2
  110. package/dist/utils/network/retry.d.ts.map +1 -1
  111. package/dist/utils/network/retry.js +29 -1
  112. package/dist/utils/network/retry.js.map +1 -1
  113. package/dist/utils/security/sanitization.d.ts +16 -13
  114. package/dist/utils/security/sanitization.d.ts.map +1 -1
  115. package/dist/utils/security/sanitization.js +74 -33
  116. package/dist/utils/security/sanitization.js.map +1 -1
  117. package/dist/utils/telemetry/attributes.d.ts +7 -1
  118. package/dist/utils/telemetry/attributes.d.ts.map +1 -1
  119. package/dist/utils/telemetry/attributes.js +7 -1
  120. package/dist/utils/telemetry/attributes.js.map +1 -1
  121. package/framework-skills/add-app-tool/SKILL.md +2 -1
  122. package/framework-skills/add-test/SKILL.md +15 -15
  123. package/framework-skills/add-tool/SKILL.md +2 -2
  124. package/framework-skills/api-auth/SKILL.md +3 -1
  125. package/framework-skills/api-canvas/SKILL.md +2 -2
  126. package/framework-skills/api-config/SKILL.md +11 -2
  127. package/framework-skills/api-context/SKILL.md +5 -5
  128. package/framework-skills/api-errors/SKILL.md +6 -6
  129. package/framework-skills/api-mirror/SKILL.md +6 -3
  130. package/framework-skills/api-telemetry/SKILL.md +15 -9
  131. package/framework-skills/api-testing/SKILL.md +5 -1
  132. package/framework-skills/api-utils/SKILL.md +5 -5
  133. package/framework-skills/code-simplifier/SKILL.md +2 -2
  134. package/framework-skills/field-test/SKILL.md +53 -8
  135. package/framework-skills/git-wrapup/SKILL.md +4 -4
  136. package/framework-skills/orchestrations/SKILL.md +1 -1
  137. package/framework-skills/orchestrations/workflows/greenfield-build.md +2 -2
  138. package/framework-skills/polish-docs-meta/SKILL.md +4 -3
  139. package/framework-skills/polish-docs-meta/references/server-json.md +24 -26
  140. package/framework-skills/release-and-publish/SKILL.md +2 -2
  141. package/framework-skills/release-pr-review/SKILL.md +5 -5
  142. package/framework-skills/setup/SKILL.md +2 -2
  143. package/framework-skills/tool-defs-analysis/SKILL.md +2 -2
  144. package/package.json +38 -23
  145. package/scripts/devcheck.ts +43 -21
  146. package/scripts/lint-packaging.ts +91 -1
  147. package/scripts/prune-musl-packages.ts +146 -0
  148. package/templates/.github/workflows/codeql.yml +10 -1
  149. package/templates/Dockerfile +13 -4
  150. package/templates/_.dockerignore +3 -5
  151. package/templates/_.gitignore +4 -4
  152. package/templates/package.json +4 -4
  153. package/templates/server.json +7 -21
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/apps/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @fileoverview Headless MCP Apps host. `renderAppTool` connects to a server as a client
3
+ * advertising `io.modelcontextprotocol/ui`, calls a tool, loads its `ui://` resource into
4
+ * headless `chrome-headless-shell` inside the double-iframe sandbox and CSP the MCP Apps
5
+ * specification prescribes, plays the host half of the protocol through the official
6
+ * `AppBridge`, runs scripted steps against the view, and returns a report.
7
+ *
8
+ * Import from `@cyanheads/mcp-ts-core/testing/apps`. The optional peers
9
+ * `@modelcontextprotocol/client` and `@modelcontextprotocol/ext-apps` are loaded on first
10
+ * use; importing this subpath without them succeeds.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * import { renderAppTool } from '@cyanheads/mcp-ts-core/testing/apps';
15
+ *
16
+ * const run = await renderAppTool({
17
+ * server: { command: 'bun', args: ['run', 'dist/index.js'] },
18
+ * tool: 'my_app_tool',
19
+ * arguments: { query: 'probe' },
20
+ * steps: [{ click: '#action-btn' }, { screenshot: 'after-click' }],
21
+ * });
22
+ * ```
23
+ * @module src/testing/apps
24
+ */
25
+ /**
26
+ * Render an app tool's view in a headless MCP Apps host and report what happened.
27
+ * Resolves with the report whenever the run reached the browser, even when the view
28
+ * failed. Throws only on setup failures: a missing optional peer, no browser, the server
29
+ * unreachable, the tool missing, or its UI resource absent, unreadable, or declaring a
30
+ * `_meta.ui.csp` entry that is not a plain origin.
31
+ */
32
+ export async function renderAppTool(options) {
33
+ const { runAppRender } = await import('./run.js');
34
+ return runAppRender(options);
35
+ }
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/apps/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAmIH;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6B;IAC/D,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @fileoverview Growing prefixes of a tool's argument JSON for `ui/notifications/tool-input-partial`
3
+ * streaming. Each prefix of the serialized arguments is closed into a valid JSON object:
4
+ * an open string is terminated, open containers are closed, and a trailing token that
5
+ * cannot be completed (a dangling key, a partial literal) is backed off.
6
+ * @module src/testing/apps/partial-json
7
+ */
8
+ /**
9
+ * Partial argument objects for growing prefixes of `JSON.stringify(args)`, in order. Every
10
+ * entry is a plain object; consecutive duplicates are dropped and the complete arguments
11
+ * are never included (those go out as `tool-input`).
12
+ */
13
+ export declare function partialArguments(args: Record<string, unknown>): Record<string, unknown>[];
14
+ //# sourceMappingURL=partial-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partial-json.d.ts","sourceRoot":"","sources":["../../../src/testing/apps/partial-json.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAazF"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @fileoverview Growing prefixes of a tool's argument JSON for `ui/notifications/tool-input-partial`
3
+ * streaming. Each prefix of the serialized arguments is closed into a valid JSON object:
4
+ * an open string is terminated, open containers are closed, and a trailing token that
5
+ * cannot be completed (a dangling key, a partial literal) is backed off.
6
+ * @module src/testing/apps/partial-json
7
+ */
8
+ /** At most this many partials are produced for one argument object. */
9
+ const MAX_PARTIALS = 8;
10
+ /**
11
+ * Partial argument objects for growing prefixes of `JSON.stringify(args)`, in order. Every
12
+ * entry is a plain object; consecutive duplicates are dropped and the complete arguments
13
+ * are never included (those go out as `tool-input`).
14
+ */
15
+ export function partialArguments(args) {
16
+ const json = JSON.stringify(args);
17
+ const count = Math.min(MAX_PARTIALS, json.length - 1);
18
+ const partials = [];
19
+ let previous = '';
20
+ for (let i = 1; i <= count; i++) {
21
+ const cut = Math.max(1, Math.floor((json.length * i) / (count + 1)));
22
+ const closed = closePrefix(json.slice(0, cut));
23
+ if (closed === undefined || closed === previous || closed === json)
24
+ continue;
25
+ previous = closed;
26
+ partials.push(JSON.parse(closed));
27
+ }
28
+ return partials;
29
+ }
30
+ /** The longest closing of `prefix` (backing off one character at a time) that parses as an object. */
31
+ function closePrefix(prefix) {
32
+ for (let end = prefix.length; end > 0; end--) {
33
+ const candidate = close(prefix.slice(0, end));
34
+ try {
35
+ const value = JSON.parse(candidate);
36
+ if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
37
+ return JSON.stringify(value);
38
+ }
39
+ }
40
+ catch {
41
+ // Not closable at this length; back off.
42
+ }
43
+ }
44
+ return undefined;
45
+ }
46
+ /** `text` with its open string and open containers closed. */
47
+ function close(text) {
48
+ const closers = [];
49
+ let inString = false;
50
+ let escaped = false;
51
+ for (const ch of text) {
52
+ if (inString) {
53
+ if (escaped)
54
+ escaped = false;
55
+ else if (ch === '\\')
56
+ escaped = true;
57
+ else if (ch === '"')
58
+ inString = false;
59
+ }
60
+ else if (ch === '"')
61
+ inString = true;
62
+ else if (ch === '{')
63
+ closers.push('}');
64
+ else if (ch === '[')
65
+ closers.push(']');
66
+ else if (ch === '}' || ch === ']')
67
+ closers.pop();
68
+ }
69
+ return `${text}${inString ? '"' : ''}${closers.reverse().join('')}`;
70
+ }
71
+ //# sourceMappingURL=partial-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"partial-json.js","sourceRoot":"","sources":["../../../src/testing/apps/partial-json.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @fileoverview One headless MCP Apps host run, loaded on demand by `renderAppTool`.
3
+ * Node holds the MCP client and the official `AppBridge`; the bridge's transport relays
4
+ * JSON-RPC through the host page's isolated-world relay into the sandbox proxy and the
5
+ * view. CDP supplies the instrumentation: exceptions and console errors from
6
+ * `Runtime`, CSP violations from `Audits` issues, frames from `Page`. The optional peers
7
+ * are imported here, inside the run, never at module load.
8
+ * @module src/testing/apps/run
9
+ */
10
+ import type { AppRenderReport, RenderAppToolOptions } from './index.js';
11
+ /** Run one render. See `renderAppTool`. */
12
+ export declare function runAppRender(options: RenderAppToolOptions): Promise<AppRenderReport>;
13
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/testing/apps/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2CH,OAAO,KAAK,EAGV,eAAe,EAIf,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAsBpB,2CAA2C;AAC3C,wBAAsB,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CA6F1F"}