@maxhealth.tech/prefab 0.3.9 → 0.3.10

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 (87) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +76 -10
  3. package/dist/a2ui/browser.d.ts +46 -0
  4. package/dist/a2ui/browser.d.ts.map +1 -0
  5. package/dist/a2ui/browser.js +58 -0
  6. package/dist/a2ui/browser.js.map +1 -0
  7. package/dist/a2ui/catalog.d.ts +51 -0
  8. package/dist/a2ui/catalog.d.ts.map +1 -0
  9. package/dist/a2ui/catalog.js +465 -0
  10. package/dist/a2ui/catalog.js.map +1 -0
  11. package/dist/a2ui/emit.d.ts +59 -0
  12. package/dist/a2ui/emit.d.ts.map +1 -0
  13. package/dist/a2ui/emit.js +269 -0
  14. package/dist/a2ui/emit.js.map +1 -0
  15. package/dist/a2ui/expr.d.ts +58 -0
  16. package/dist/a2ui/expr.d.ts.map +1 -0
  17. package/dist/a2ui/expr.js +81 -0
  18. package/dist/a2ui/expr.js.map +1 -0
  19. package/dist/a2ui/icons.d.ts +30 -0
  20. package/dist/a2ui/icons.d.ts.map +1 -0
  21. package/dist/a2ui/icons.js +87 -0
  22. package/dist/a2ui/icons.js.map +1 -0
  23. package/dist/a2ui/index.d.ts +27 -0
  24. package/dist/a2ui/index.d.ts.map +1 -0
  25. package/dist/a2ui/index.js +23 -0
  26. package/dist/a2ui/index.js.map +1 -0
  27. package/dist/a2ui/table.d.ts +31 -0
  28. package/dist/a2ui/table.d.ts.map +1 -0
  29. package/dist/a2ui/table.js +155 -0
  30. package/dist/a2ui/table.js.map +1 -0
  31. package/dist/a2ui/types.d.ts +174 -0
  32. package/dist/a2ui/types.d.ts.map +1 -0
  33. package/dist/a2ui/types.js +35 -0
  34. package/dist/a2ui/types.js.map +1 -0
  35. package/dist/a2ui.min.js +1 -0
  36. package/dist/app.d.ts +17 -0
  37. package/dist/app.d.ts.map +1 -1
  38. package/dist/app.js +19 -0
  39. package/dist/app.js.map +1 -1
  40. package/dist/auto/form.d.ts +25 -0
  41. package/dist/auto/form.d.ts.map +1 -1
  42. package/dist/auto/form.js +21 -8
  43. package/dist/auto/form.js.map +1 -1
  44. package/dist/core/version.d.ts +1 -1
  45. package/dist/core/version.d.ts.map +1 -1
  46. package/dist/core/version.js +1 -1
  47. package/dist/core/version.js.map +1 -1
  48. package/dist/index.d.ts +9 -2
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +4 -0
  51. package/dist/index.js.map +1 -1
  52. package/dist/mcp/a2ui.d.ts +91 -0
  53. package/dist/mcp/a2ui.d.ts.map +1 -0
  54. package/dist/mcp/a2ui.js +134 -0
  55. package/dist/mcp/a2ui.js.map +1 -0
  56. package/dist/mcp/display.d.ts +28 -6
  57. package/dist/mcp/display.d.ts.map +1 -1
  58. package/dist/mcp/display.js +10 -9
  59. package/dist/mcp/display.js.map +1 -1
  60. package/dist/mcp/index.d.ts +7 -2
  61. package/dist/mcp/index.d.ts.map +1 -1
  62. package/dist/mcp/index.js +3 -1
  63. package/dist/mcp/index.js.map +1 -1
  64. package/dist/mcp/input-required.d.ts +79 -0
  65. package/dist/mcp/input-required.d.ts.map +1 -0
  66. package/dist/mcp/input-required.js +231 -0
  67. package/dist/mcp/input-required.js.map +1 -0
  68. package/dist/mcp/resource.d.ts +10 -0
  69. package/dist/mcp/resource.d.ts.map +1 -1
  70. package/dist/mcp/resource.js +12 -4
  71. package/dist/mcp/resource.js.map +1 -1
  72. package/dist/mcp/result.d.ts +7 -5
  73. package/dist/mcp/result.d.ts.map +1 -1
  74. package/dist/mcp/result.js +5 -3
  75. package/dist/mcp/result.js.map +1 -1
  76. package/dist/mcp/types.d.ts +117 -0
  77. package/dist/mcp/types.d.ts.map +1 -1
  78. package/dist/renderer/components/index.d.ts.map +1 -1
  79. package/dist/renderer/components/index.js +6 -0
  80. package/dist/renderer/components/index.js.map +1 -1
  81. package/dist/renderer/engine.d.ts +4 -0
  82. package/dist/renderer/engine.d.ts.map +1 -1
  83. package/dist/renderer/engine.js +24 -0
  84. package/dist/renderer/engine.js.map +1 -1
  85. package/dist/renderer.auto.min.js +13 -13
  86. package/dist/renderer.min.js +13 -13
  87. package/package.json +13 -3
@@ -5,9 +5,14 @@ export { display, display_form, display_update, display_error, display_success,
5
5
  export type { DisplayOptions, DisplayFormOptions, DisplayUpdateOptions, DisplayErrorOptions, DisplaySuccessOptions, StateUpdate, PrefabUpdateWire, } from './display.js';
6
6
  export { toolResult } from './result.js';
7
7
  export type { ToolResultOptions } from './result.js';
8
+ export { formSchema, formInputRequest, acceptedFormInput, inputResponse } from './input-required.js';
9
+ export type { FormInputRequestOptions, FormValue } from './input-required.js';
10
+ export { display_a2ui, displayA2ui, registerA2uiResource, a2uiPayload, A2UI_RESOURCE_URI } from './a2ui.js';
11
+ export type { DisplayA2uiOptions, A2uiResourceOptions } from './a2ui.js';
8
12
  export { themeBridgeCss, VSCODE_BRIDGE } from './theme-bridge.js';
9
13
  export type { ThemeBridge, VsCodeTokenSource } from './theme-bridge.js';
10
- export { resourceMeta, registerViewerResource, rendererHtml, PREFAB_CDN_META, PREFAB_RESOURCE_URI, MCP_APP_MIME, APPS_EXTENSION, DEFAULT_VIEWER_CACHE, } from './resource.js';
14
+ export { resourceMeta, registerViewerResource, rendererHtml, resolveCache, PREFAB_CDN_META, PREFAB_RESOURCE_URI, MCP_APP_MIME, APPS_EXTENSION, DEFAULT_VIEWER_CACHE, } from './resource.js';
11
15
  export type { McpAppCsp, McpAppPermissions, ResourceMetaOptions, RendererHtmlOptions, ViewerResourceOptions, McpServerLike, ResourceConfig, ResourceReadHandler, } from './resource.js';
12
- export type { McpToolResult, McpContent, McpTextContent, McpImageContent, McpResourceContent, McpTextResourceContents, McpBlobResourceContents, McpCacheScope, McpCacheHint, McpResourceReadResult } from './types.js';
16
+ export type { McpToolResult, McpDisplayResult, McpContent, McpTextContent, McpImageContent, McpResourceContent, McpTextResourceContents, McpBlobResourceContents, McpCacheScope, McpCacheHint, McpResourceReadResult } from './types.js';
17
+ export type { McpStringSchema, McpNumberSchema, McpBooleanSchema, McpEnumSchema, McpMultiEnumSchema, McpPrimitiveSchema, McpRestrictedSchema, McpElicitFormRequest, McpElicitUrlRequest, McpElicitRequest, McpElicitResult, McpInputRequests, McpInputResponses, McpInputRequiredResult, } from './types.js';
13
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC9J,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,WAAW,EACX,gBAAgB,GACjB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEvE,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,oBAAoB,GACrB,MAAM,eAAe,CAAA;AACtB,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,eAAe,CAAA;AAEtB,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,aAAa,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC9J,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,WAAW,EACX,gBAAgB,GACjB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACpG,YAAY,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE7E,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAC3G,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAExE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEvE,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,oBAAoB,GACrB,MAAM,eAAe,CAAA;AACtB,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,mBAAmB,GACpB,MAAM,eAAe,CAAA;AAEtB,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,aAAa,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAExO,YAAY,EACV,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,YAAY,CAAA"}
package/dist/mcp/index.js CHANGED
@@ -3,6 +3,8 @@
3
3
  */
4
4
  export { display, display_form, display_update, display_error, display_success, displayForm, displayUpdate, displayError, displaySuccess } from './display.js';
5
5
  export { toolResult } from './result.js';
6
+ export { formSchema, formInputRequest, acceptedFormInput, inputResponse } from './input-required.js';
7
+ export { display_a2ui, displayA2ui, registerA2uiResource, a2uiPayload, A2UI_RESOURCE_URI } from './a2ui.js';
6
8
  export { themeBridgeCss, VSCODE_BRIDGE } from './theme-bridge.js';
7
- export { resourceMeta, registerViewerResource, rendererHtml, PREFAB_CDN_META, PREFAB_RESOURCE_URI, MCP_APP_MIME, APPS_EXTENSION, DEFAULT_VIEWER_CACHE, } from './resource.js';
9
+ export { resourceMeta, registerViewerResource, rendererHtml, resolveCache, PREFAB_CDN_META, PREFAB_RESOURCE_URI, MCP_APP_MIME, APPS_EXTENSION, DEFAULT_VIEWER_CACHE, } from './resource.js';
8
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAW9J,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjE,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,oBAAoB,GACrB,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAW9J,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAGxC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGpG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAG3G,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGjE,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,oBAAoB,GACrB,MAAM,eAAe,CAAA"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Multi Round-Trip input requests — the 2026-07-28 answer to "ask the user".
3
+ *
4
+ * Before that revision a server pushed `elicitation/create` over a held
5
+ * session. The revision made the protocol core stateless and removed the push
6
+ * channel: a handler now *returns* an `input_required` result carrying the
7
+ * requests, the client answers them and retries the original call, and the
8
+ * handler runs again with the answers in hand.
9
+ *
10
+ * That matters to `display_form()` because a prefab form is a UI, and a UI only
11
+ * exists on a host that renders one. On a host with no MCP Apps surface the
12
+ * form was previously unreachable. The same `AutoFormField[]` now also derives
13
+ * the restricted elicitation schema, so one field list serves both paths:
14
+ *
15
+ * - a host with a UI gets the prefab form and calls the submit tool, or
16
+ * - any host gets a native elicitation form and retries the call.
17
+ *
18
+ * The handler is written write-once: read the answers first, request only what
19
+ * is still missing, and return the real result once everything has arrived.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * import { display, formInputRequest, acceptedFormInput } from '@maxhealth.tech/prefab/mcp'
24
+ *
25
+ * const FIELDS = [
26
+ * { name: 'email', label: 'Email', type: 'email', required: true },
27
+ * { name: 'plan', label: 'Plan', options: [{ value: 'pro' }, { value: 'team' }] },
28
+ * ]
29
+ *
30
+ * server.registerTool('signup', schema, async (_args, ctx) => {
31
+ * const answers = acceptedFormInput(ctx.mcpReq.inputResponses, 'signup', FIELDS)
32
+ * if (answers == null) return formInputRequest(FIELDS, { key: 'signup', message: 'Create your account' })
33
+ * return display(autoDetail(await createAccount(answers)))
34
+ * })
35
+ * ```
36
+ */
37
+ import type { AutoFormField } from '../auto/form.js';
38
+ import type { McpElicitResult, McpInputRequiredResult, McpInputResponses, McpRestrictedSchema } from './types.js';
39
+ /**
40
+ * Derive the restricted elicitation schema from form fields.
41
+ *
42
+ * This is the same field list `autoForm` renders, so the elicitation and the
43
+ * prefab form always ask for the same thing.
44
+ */
45
+ export declare function formSchema(fields: AutoFormField[]): McpRestrictedSchema;
46
+ export interface FormInputRequestOptions {
47
+ /**
48
+ * Key the request is filed under, and the key the answer comes back on.
49
+ * @default 'form'
50
+ */
51
+ key?: string;
52
+ /** Prompt shown to the user. @default the field list's own title, or a generic ask */
53
+ message?: string;
54
+ /** Opaque state echoed back on the retry. Sign it; see the SDK's request-state codec. */
55
+ requestState?: string;
56
+ }
57
+ /**
58
+ * Ask the client to collect these fields, then retry the call.
59
+ *
60
+ * @returns an `input_required` result, ready to return from a tool handler.
61
+ */
62
+ export declare function formInputRequest(fields: AutoFormField[], options?: FormInputRequestOptions): McpInputRequiredResult;
63
+ /** A client's answer for one key, or `undefined` when it has not arrived yet. */
64
+ export declare function inputResponse(responses: McpInputResponses | undefined, key: string): McpElicitResult | undefined;
65
+ /** Values a client may return for one field. */
66
+ export type FormValue = string | number | boolean | string[];
67
+ /**
68
+ * Read and check an accepted form answer.
69
+ *
70
+ * `inputResponses` comes from the client and is untrusted, so the content is
71
+ * checked against the same field list that produced the schema: unknown keys
72
+ * are dropped, wrong types are rejected, and a missing required field fails the
73
+ * whole answer. A declined or cancelled elicitation returns `undefined` exactly
74
+ * like a first entry — re-requesting is only the right move for all three when
75
+ * the request is idempotent, so read {@link inputResponse} directly when a
76
+ * refusal has to be told apart from a first pass.
77
+ */
78
+ export declare function acceptedFormInput(responses: McpInputResponses | undefined, key: string, fields: AutoFormField[]): Record<string, FormValue> | undefined;
79
+ //# sourceMappingURL=input-required.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-required.d.ts","sourceRoot":"","sources":["../../src/mcp/input-required.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAEpD,OAAO,KAAK,EAEV,eAAe,EACf,sBAAsB,EAEtB,iBAAiB,EAEjB,mBAAmB,EACpB,MAAM,YAAY,CAAA;AAwFnB;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,mBAAmB,CAUvE;AAID,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,yFAAyF;IACzF,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,aAAa,EAAE,EACvB,OAAO,CAAC,EAAE,uBAAuB,GAChC,sBAAsB,CAqBxB;AAID,iFAAiF;AACjF,wBAAgB,aAAa,CAC3B,SAAS,EAAE,iBAAiB,GAAG,SAAS,EACxC,GAAG,EAAE,MAAM,GACV,eAAe,GAAG,SAAS,CAE7B;AAED,gDAAgD;AAChD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAA;AAE5D;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,iBAAiB,GAAG,SAAS,EACxC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,aAAa,EAAE,GACtB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CAyBvC"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Multi Round-Trip input requests — the 2026-07-28 answer to "ask the user".
3
+ *
4
+ * Before that revision a server pushed `elicitation/create` over a held
5
+ * session. The revision made the protocol core stateless and removed the push
6
+ * channel: a handler now *returns* an `input_required` result carrying the
7
+ * requests, the client answers them and retries the original call, and the
8
+ * handler runs again with the answers in hand.
9
+ *
10
+ * That matters to `display_form()` because a prefab form is a UI, and a UI only
11
+ * exists on a host that renders one. On a host with no MCP Apps surface the
12
+ * form was previously unreachable. The same `AutoFormField[]` now also derives
13
+ * the restricted elicitation schema, so one field list serves both paths:
14
+ *
15
+ * - a host with a UI gets the prefab form and calls the submit tool, or
16
+ * - any host gets a native elicitation form and retries the call.
17
+ *
18
+ * The handler is written write-once: read the answers first, request only what
19
+ * is still missing, and return the real result once everything has arrived.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * import { display, formInputRequest, acceptedFormInput } from '@maxhealth.tech/prefab/mcp'
24
+ *
25
+ * const FIELDS = [
26
+ * { name: 'email', label: 'Email', type: 'email', required: true },
27
+ * { name: 'plan', label: 'Plan', options: [{ value: 'pro' }, { value: 'team' }] },
28
+ * ]
29
+ *
30
+ * server.registerTool('signup', schema, async (_args, ctx) => {
31
+ * const answers = acceptedFormInput(ctx.mcpReq.inputResponses, 'signup', FIELDS)
32
+ * if (answers == null) return formInputRequest(FIELDS, { key: 'signup', message: 'Create your account' })
33
+ * return display(autoDetail(await createAccount(answers)))
34
+ * })
35
+ * ```
36
+ */
37
+ import { createLogger } from '../core/logger.js';
38
+ const log = createLogger('mcp');
39
+ /** Field `type` values that map onto a wire string format. */
40
+ const STRING_FORMAT = {
41
+ email: 'email',
42
+ url: 'uri',
43
+ uri: 'uri',
44
+ date: 'date',
45
+ datetime: 'date-time',
46
+ 'datetime-local': 'date-time',
47
+ };
48
+ /** Field `type` values that are numeric on the wire. */
49
+ const NUMERIC = {
50
+ number: 'number',
51
+ range: 'number',
52
+ integer: 'integer',
53
+ };
54
+ /** Humanize a field name the same way `autoForm` does, for schema titles. */
55
+ function humanize(name) {
56
+ return name
57
+ .replace(/[_-]+/g, ' ')
58
+ .replace(/([a-z0-9])([A-Z])/g, '$1 $2')
59
+ .replace(/\b\w/g, c => c.toUpperCase());
60
+ }
61
+ /**
62
+ * Derive the restricted schema for one field.
63
+ *
64
+ * `password` deliberately produces a plain string. The restricted schema has no
65
+ * secret-input format, so claiming one would be a lie about how the client will
66
+ * render it; the type is dropped rather than misrepresented.
67
+ */
68
+ function fieldSchema(field) {
69
+ const title = field.label ?? humanize(field.name);
70
+ const common = { title, ...(field.description != null && { description: field.description }) };
71
+ if (field.options != null && field.options.length > 0) {
72
+ const values = field.options.map(o => o.value);
73
+ if (field.multiple === true) {
74
+ return {
75
+ ...common,
76
+ type: 'array',
77
+ items: { type: 'string', enum: values },
78
+ ...(field.min != null && { minItems: field.min }),
79
+ ...(field.max != null && { maxItems: field.max }),
80
+ ...(Array.isArray(field.default) && { default: field.default }),
81
+ };
82
+ }
83
+ return {
84
+ ...common,
85
+ type: 'string',
86
+ enum: values,
87
+ ...(typeof field.default === 'string' && { default: field.default }),
88
+ };
89
+ }
90
+ const type = field.type ?? 'text';
91
+ const numeric = NUMERIC[type];
92
+ if (numeric != null) {
93
+ return {
94
+ ...common,
95
+ type: numeric,
96
+ ...(field.min != null && { minimum: field.min }),
97
+ ...(field.max != null && { maximum: field.max }),
98
+ ...(typeof field.default === 'number' && { default: field.default }),
99
+ };
100
+ }
101
+ if (type === 'checkbox' || type === 'boolean') {
102
+ return { ...common, type: 'boolean', ...(typeof field.default === 'boolean' && { default: field.default }) };
103
+ }
104
+ const format = STRING_FORMAT[type];
105
+ return {
106
+ ...common,
107
+ type: 'string',
108
+ ...(format != null && { format }),
109
+ ...(field.min != null && { minLength: field.min }),
110
+ ...(field.max != null && { maxLength: field.max }),
111
+ ...(typeof field.default === 'string' && { default: field.default }),
112
+ };
113
+ }
114
+ /**
115
+ * Derive the restricted elicitation schema from form fields.
116
+ *
117
+ * This is the same field list `autoForm` renders, so the elicitation and the
118
+ * prefab form always ask for the same thing.
119
+ */
120
+ export function formSchema(fields) {
121
+ const properties = {};
122
+ const required = [];
123
+ for (const field of fields) {
124
+ properties[field.name] = fieldSchema(field);
125
+ if (field.required === true)
126
+ required.push(field.name);
127
+ }
128
+ return { type: 'object', properties, ...(required.length > 0 && { required }) };
129
+ }
130
+ /**
131
+ * Ask the client to collect these fields, then retry the call.
132
+ *
133
+ * @returns an `input_required` result, ready to return from a tool handler.
134
+ */
135
+ export function formInputRequest(fields, options) {
136
+ if (fields.length === 0) {
137
+ throw new TypeError('formInputRequest: at least one field is required, otherwise the client has nothing to ask');
138
+ }
139
+ const key = options?.key ?? 'form';
140
+ const request = {
141
+ method: 'elicitation/create',
142
+ params: {
143
+ mode: 'form',
144
+ message: options?.message ?? 'Please provide the following information',
145
+ requestedSchema: formSchema(fields),
146
+ },
147
+ };
148
+ const inputRequests = { [key]: request };
149
+ return {
150
+ resultType: 'input_required',
151
+ inputRequests,
152
+ ...(options?.requestState != null && { requestState: options.requestState }),
153
+ };
154
+ }
155
+ // ── Reading the answer ───────────────────────────────────────────────────────
156
+ /** A client's answer for one key, or `undefined` when it has not arrived yet. */
157
+ export function inputResponse(responses, key) {
158
+ return responses?.[key];
159
+ }
160
+ /**
161
+ * Read and check an accepted form answer.
162
+ *
163
+ * `inputResponses` comes from the client and is untrusted, so the content is
164
+ * checked against the same field list that produced the schema: unknown keys
165
+ * are dropped, wrong types are rejected, and a missing required field fails the
166
+ * whole answer. A declined or cancelled elicitation returns `undefined` exactly
167
+ * like a first entry — re-requesting is only the right move for all three when
168
+ * the request is idempotent, so read {@link inputResponse} directly when a
169
+ * refusal has to be told apart from a first pass.
170
+ */
171
+ export function acceptedFormInput(responses, key, fields) {
172
+ const response = inputResponse(responses, key);
173
+ if (response?.action !== 'accept' || response.content == null)
174
+ return undefined;
175
+ const byName = new Map(fields.map(f => [f.name, f]));
176
+ const accepted = {};
177
+ for (const [name, value] of Object.entries(response.content)) {
178
+ const field = byName.get(name);
179
+ if (field == null) {
180
+ log.warn(`input response "${key}" carried unknown field "${name}"; dropped`);
181
+ continue;
182
+ }
183
+ if (!matchesField(field, value)) {
184
+ log.warn(`input response "${key}" field "${name}" did not match its requested schema; dropped`);
185
+ continue;
186
+ }
187
+ accepted[name] = value;
188
+ }
189
+ for (const field of fields) {
190
+ if (field.required === true && !(field.name in accepted))
191
+ return undefined;
192
+ }
193
+ return accepted;
194
+ }
195
+ /** Check one returned value against the schema its field produced. */
196
+ function matchesField(field, value) {
197
+ const schema = fieldSchema(field);
198
+ switch (schema.type) {
199
+ case 'boolean':
200
+ return typeof value === 'boolean';
201
+ case 'number':
202
+ return typeof value === 'number' && withinBounds(schema.minimum, schema.maximum, value);
203
+ case 'integer':
204
+ return typeof value === 'number' && Number.isInteger(value) && withinBounds(schema.minimum, schema.maximum, value);
205
+ case 'array': {
206
+ if (!Array.isArray(value))
207
+ return false;
208
+ const allowed = new Set(schema.items.enum);
209
+ return value.every(v => typeof v === 'string' && allowed.has(v));
210
+ }
211
+ default: {
212
+ if (typeof value !== 'string')
213
+ return false;
214
+ if ('enum' in schema)
215
+ return schema.enum.includes(value);
216
+ if (schema.minLength != null && value.length < schema.minLength)
217
+ return false;
218
+ if (schema.maxLength != null && value.length > schema.maxLength)
219
+ return false;
220
+ return true;
221
+ }
222
+ }
223
+ }
224
+ function withinBounds(min, max, value) {
225
+ if (min != null && value < min)
226
+ return false;
227
+ if (max != null && value > max)
228
+ return false;
229
+ return true;
230
+ }
231
+ //# sourceMappingURL=input-required.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-required.js","sourceRoot":"","sources":["../../src/mcp/input-required.ts"],"names":[],"mappings":"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"}
@@ -225,6 +225,16 @@ export interface McpServerLike {
225
225
  /** Some wrappers expose capability registration directly. */
226
226
  registerCapabilities?(capabilities: CapabilityDeclaration): void;
227
227
  }
228
+ /**
229
+ * Fill in and validate the `CacheableResult` fields, rejecting values the SDK
230
+ * would silently discard in favour of `ttlMs: 0`.
231
+ *
232
+ * `defaults` differ per resource kind: the viewer HTML is a pure function of the
233
+ * package version and is safely shared-cacheable, while an `a2ui://` surface is
234
+ * rebuilt on every read and defaults to no caching. Exported so `./a2ui.ts`
235
+ * resolves its hints through the same guard rather than restating it.
236
+ */
237
+ export declare function resolveCache(hint?: McpCacheHint, defaults?: Required<McpCacheHint>): Required<McpCacheHint>;
228
238
  /**
229
239
  * Register the prefab viewer as a `ui://` resource on an MCP server.
230
240
  *
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/mcp/resource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/mcp/resource.ts"],"names":[],"mappings":"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"}
@@ -166,13 +166,21 @@ ${bridge}${extraStyles}</head>
166
166
  ${extraScripts}</body>
167
167
  </html>`;
168
168
  }
169
- /** Reject values the SDK would silently discard in favour of `ttlMs: 0`. */
170
- function resolveCache(hint) {
171
- const ttlMs = hint?.ttlMs ?? DEFAULT_VIEWER_CACHE.ttlMs;
169
+ /**
170
+ * Fill in and validate the `CacheableResult` fields, rejecting values the SDK
171
+ * would silently discard in favour of `ttlMs: 0`.
172
+ *
173
+ * `defaults` differ per resource kind: the viewer HTML is a pure function of the
174
+ * package version and is safely shared-cacheable, while an `a2ui://` surface is
175
+ * rebuilt on every read and defaults to no caching. Exported so `./a2ui.ts`
176
+ * resolves its hints through the same guard rather than restating it.
177
+ */
178
+ export function resolveCache(hint, defaults = DEFAULT_VIEWER_CACHE) {
179
+ const ttlMs = hint?.ttlMs ?? defaults.ttlMs;
172
180
  if (!Number.isSafeInteger(ttlMs) || ttlMs < 0) {
173
181
  throw new RangeError(`cache.ttlMs must be a non-negative safe integer, got ${String(hint?.ttlMs)}`);
174
182
  }
175
- const cacheScope = hint?.cacheScope ?? DEFAULT_VIEWER_CACHE.cacheScope;
183
+ const cacheScope = hint?.cacheScope ?? defaults.cacheScope;
176
184
  if (!CACHE_SCOPES.includes(cacheScope)) {
177
185
  throw new RangeError(`cache.cacheScope must be 'public' or 'private', got ${String(hint?.cacheScope)}`);
178
186
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/mcp/resource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/mcp/resource.ts"],"names":[],"mappings":"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"}
@@ -14,11 +14,13 @@
14
14
  * `resultType` (SEP-2322) is deliberately NOT set here. It is a wire-only
15
15
  * discriminator owned by the SDK's protocol layer: `@modelcontextprotocol/server`
16
16
  * stamps it at its 2026-era encode seam and strips it before results reach
17
- * consumers, which is why its public result types do not declare it. The one
18
- * handler-authored case is `resultType: 'input_required'` for multi-round-trip
19
- * results not something a display helper produces.
17
+ * consumers, which is why its public result types do not declare it.
18
+ *
19
+ * The one handler-authored case is `resultType: 'input_required'`, which a
20
+ * completed result never carries. That case is built by `./input-required.ts`
21
+ * and returned instead of a tool result, so it never travels through here.
20
22
  */
21
- import type { McpToolResult } from './types.js';
23
+ import type { McpDisplayResult } from './types.js';
22
24
  export interface ToolResultOptions {
23
25
  /** Flag the result as failed (hosts render it as a tool error). */
24
26
  isError?: boolean;
@@ -38,5 +40,5 @@ export interface ToolResultOptions {
38
40
  * return toolResult(wireJson)
39
41
  * ```
40
42
  */
41
- export declare function toolResult<T>(payload: T, options?: ToolResultOptions): McpToolResult<T>;
43
+ export declare function toolResult<T>(payload: T, options?: ToolResultOptions): McpDisplayResult<T>;
42
44
  //# sourceMappingURL=result.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/mcp/result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,aAAa,CAAC,CAAC,CAAC,CAOvF"}
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/mcp/result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,MAAM,WAAW,iBAAiB;IAChC,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAO1F"}
@@ -14,9 +14,11 @@
14
14
  * `resultType` (SEP-2322) is deliberately NOT set here. It is a wire-only
15
15
  * discriminator owned by the SDK's protocol layer: `@modelcontextprotocol/server`
16
16
  * stamps it at its 2026-era encode seam and strips it before results reach
17
- * consumers, which is why its public result types do not declare it. The one
18
- * handler-authored case is `resultType: 'input_required'` for multi-round-trip
19
- * results not something a display helper produces.
17
+ * consumers, which is why its public result types do not declare it.
18
+ *
19
+ * The one handler-authored case is `resultType: 'input_required'`, which a
20
+ * completed result never carries. That case is built by `./input-required.ts`
21
+ * and returned instead of a tool result, so it never travels through here.
20
22
  */
21
23
  /**
22
24
  * Wrap a JSON payload as an MCP tool result.
@@ -1 +1 @@
1
- {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/mcp/result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AASH;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAI,OAAU,EAAE,OAA2B;IACnE,MAAM,MAAM,GAAqB;QAC/B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1D,iBAAiB,EAAE,OAAO;KAC3B,CAAA;IACD,IAAI,OAAO,EAAE,OAAO;QAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;IAC3C,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/mcp/result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AASH;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU,CAAI,OAAU,EAAE,OAA2B;IACnE,MAAM,MAAM,GAAwB;QAClC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1D,iBAAiB,EAAE,OAAO;KAC3B,CAAA;IACD,IAAI,OAAO,EAAE,OAAO;QAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;IAC3C,OAAO,MAAM,CAAA;AACf,CAAC"}