@onereach/idw-contracts 0.1.2-beta.7.0 → 0.2.0-beta.28.0

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 (123) hide show
  1. package/README.md +30 -1
  2. package/dist/cjs/idw-card/bind.js +71 -0
  3. package/dist/cjs/idw-card/bind.js.map +1 -0
  4. package/dist/cjs/idw-card/card-schema.js +365 -0
  5. package/dist/cjs/idw-card/card-schema.js.map +1 -0
  6. package/dist/cjs/idw-card/collect.js +89 -0
  7. package/dist/cjs/idw-card/collect.js.map +1 -0
  8. package/dist/cjs/idw-card/fallbackText.js +11 -0
  9. package/dist/cjs/idw-card/fallbackText.js.map +1 -0
  10. package/dist/cjs/idw-card/index.js +68 -0
  11. package/dist/cjs/idw-card/index.js.map +1 -0
  12. package/dist/cjs/idw-card/templates/approval.js +81 -0
  13. package/dist/cjs/idw-card/templates/approval.js.map +1 -0
  14. package/dist/cjs/idw-card/templates/file.js +31 -0
  15. package/dist/cjs/idw-card/templates/file.js.map +1 -0
  16. package/dist/cjs/idw-card/templates/html.js +31 -0
  17. package/dist/cjs/idw-card/templates/html.js.map +1 -0
  18. package/dist/cjs/idw-card/templates/index.js +44 -0
  19. package/dist/cjs/idw-card/templates/index.js.map +1 -0
  20. package/dist/cjs/idw-card/templates/json-schema.js +91 -0
  21. package/dist/cjs/idw-card/templates/json-schema.js.map +1 -0
  22. package/dist/cjs/idw-card/templates/markdown.js +29 -0
  23. package/dist/cjs/idw-card/templates/markdown.js.map +1 -0
  24. package/dist/cjs/idw-card/templates/registry.js +28 -0
  25. package/dist/cjs/idw-card/templates/registry.js.map +1 -0
  26. package/dist/cjs/idw-card/templates/resolve.js +41 -0
  27. package/dist/cjs/idw-card/templates/resolve.js.map +1 -0
  28. package/dist/cjs/idw-card/templates/skill.js +38 -0
  29. package/dist/cjs/idw-card/templates/skill.js.map +1 -0
  30. package/dist/cjs/idw-card/templates/types.js +3 -0
  31. package/dist/cjs/idw-card/templates/types.js.map +1 -0
  32. package/dist/cjs/idw-card/types.js +7 -0
  33. package/dist/cjs/idw-card/types.js.map +1 -0
  34. package/dist/cjs/idw-card/url.js +20 -0
  35. package/dist/cjs/idw-card/url.js.map +1 -0
  36. package/dist/cjs/idw-card/validate.js +41 -0
  37. package/dist/cjs/idw-card/validate.js.map +1 -0
  38. package/dist/cjs/idw-card/version.js +11 -0
  39. package/dist/cjs/idw-card/version.js.map +1 -0
  40. package/dist/cjs/index.js +1 -0
  41. package/dist/cjs/index.js.map +1 -1
  42. package/dist/esm/idw-card/bind.js +68 -0
  43. package/dist/esm/idw-card/bind.js.map +1 -0
  44. package/dist/esm/idw-card/card-schema.js +362 -0
  45. package/dist/esm/idw-card/card-schema.js.map +1 -0
  46. package/dist/esm/idw-card/collect.js +82 -0
  47. package/dist/esm/idw-card/collect.js.map +1 -0
  48. package/dist/esm/idw-card/fallbackText.js +8 -0
  49. package/dist/esm/idw-card/fallbackText.js.map +1 -0
  50. package/dist/esm/idw-card/index.js +10 -0
  51. package/dist/esm/idw-card/index.js.map +1 -0
  52. package/dist/esm/idw-card/templates/approval.js +78 -0
  53. package/dist/esm/idw-card/templates/approval.js.map +1 -0
  54. package/dist/esm/idw-card/templates/file.js +28 -0
  55. package/dist/esm/idw-card/templates/file.js.map +1 -0
  56. package/dist/esm/idw-card/templates/html.js +28 -0
  57. package/dist/esm/idw-card/templates/html.js.map +1 -0
  58. package/dist/esm/idw-card/templates/index.js +9 -0
  59. package/dist/esm/idw-card/templates/index.js.map +1 -0
  60. package/dist/esm/idw-card/templates/json-schema.js +82 -0
  61. package/dist/esm/idw-card/templates/json-schema.js.map +1 -0
  62. package/dist/esm/idw-card/templates/markdown.js +26 -0
  63. package/dist/esm/idw-card/templates/markdown.js.map +1 -0
  64. package/dist/esm/idw-card/templates/registry.js +23 -0
  65. package/dist/esm/idw-card/templates/registry.js.map +1 -0
  66. package/dist/esm/idw-card/templates/resolve.js +38 -0
  67. package/dist/esm/idw-card/templates/resolve.js.map +1 -0
  68. package/dist/esm/idw-card/templates/skill.js +35 -0
  69. package/dist/esm/idw-card/templates/skill.js.map +1 -0
  70. package/dist/esm/idw-card/templates/types.js +2 -0
  71. package/dist/esm/idw-card/templates/types.js.map +1 -0
  72. package/dist/esm/idw-card/types.js +4 -0
  73. package/dist/esm/idw-card/types.js.map +1 -0
  74. package/dist/esm/idw-card/url.js +17 -0
  75. package/dist/esm/idw-card/url.js.map +1 -0
  76. package/dist/esm/idw-card/validate.js +37 -0
  77. package/dist/esm/idw-card/validate.js.map +1 -0
  78. package/dist/esm/idw-card/version.js +8 -0
  79. package/dist/esm/idw-card/version.js.map +1 -0
  80. package/dist/esm/index.js +1 -0
  81. package/dist/esm/index.js.map +1 -1
  82. package/dist/types/idw-card/bind.d.ts +7 -0
  83. package/dist/types/idw-card/bind.d.ts.map +1 -0
  84. package/dist/types/idw-card/card-schema.d.ts +7 -0
  85. package/dist/types/idw-card/card-schema.d.ts.map +1 -0
  86. package/dist/types/idw-card/collect.d.ts +7 -0
  87. package/dist/types/idw-card/collect.d.ts.map +1 -0
  88. package/dist/types/idw-card/fallbackText.d.ts +2 -0
  89. package/dist/types/idw-card/fallbackText.d.ts.map +1 -0
  90. package/dist/types/idw-card/index.d.ts +12 -0
  91. package/dist/types/idw-card/index.d.ts.map +1 -0
  92. package/dist/types/idw-card/templates/approval.d.ts +94 -0
  93. package/dist/types/idw-card/templates/approval.d.ts.map +1 -0
  94. package/dist/types/idw-card/templates/file.d.ts +27 -0
  95. package/dist/types/idw-card/templates/file.d.ts.map +1 -0
  96. package/dist/types/idw-card/templates/html.d.ts +27 -0
  97. package/dist/types/idw-card/templates/html.d.ts.map +1 -0
  98. package/dist/types/idw-card/templates/index.d.ts +16 -0
  99. package/dist/types/idw-card/templates/index.d.ts.map +1 -0
  100. package/dist/types/idw-card/templates/json-schema.d.ts +11 -0
  101. package/dist/types/idw-card/templates/json-schema.d.ts.map +1 -0
  102. package/dist/types/idw-card/templates/markdown.d.ts +23 -0
  103. package/dist/types/idw-card/templates/markdown.d.ts.map +1 -0
  104. package/dist/types/idw-card/templates/registry.d.ts +5 -0
  105. package/dist/types/idw-card/templates/registry.d.ts.map +1 -0
  106. package/dist/types/idw-card/templates/resolve.d.ts +19 -0
  107. package/dist/types/idw-card/templates/resolve.d.ts.map +1 -0
  108. package/dist/types/idw-card/templates/skill.d.ts +56 -0
  109. package/dist/types/idw-card/templates/skill.d.ts.map +1 -0
  110. package/dist/types/idw-card/templates/types.d.ts +37 -0
  111. package/dist/types/idw-card/templates/types.d.ts.map +1 -0
  112. package/dist/types/idw-card/types.d.ts +250 -0
  113. package/dist/types/idw-card/types.d.ts.map +1 -0
  114. package/dist/types/idw-card/url.d.ts +6 -0
  115. package/dist/types/idw-card/url.d.ts.map +1 -0
  116. package/dist/types/idw-card/validate.d.ts +4 -0
  117. package/dist/types/idw-card/validate.d.ts.map +1 -0
  118. package/dist/types/idw-card/version.d.ts +8 -0
  119. package/dist/types/idw-card/version.d.ts.map +1 -0
  120. package/dist/types/index.d.ts +1 -0
  121. package/dist/types/index.d.ts.map +1 -1
  122. package/package.json +5 -3
  123. package/skills/idw-card-authoring/SKILL.md +279 -0
package/README.md CHANGED
@@ -11,6 +11,7 @@ Ported from idw-ui `src/types/*` with domain-split modules:
11
11
  | `common` | Pagination, page bootstrap, layout enums |
12
12
  | `datasources` | MCP datasource models |
13
13
  | `idw` | IDW settings bodies (`IdwSettings`, `CoreBody`, …) |
14
+ | `idw-card` | `idw.card` / `1.0` schema, `validateIdwCard`, templates, JSON Schema catalog |
14
15
  | `idw-summary` | Zod schema for lightweight IDW listings |
15
16
  | `knowledge` | Knowledge management types |
16
17
  | `models` | Model listing / user selection types |
@@ -34,9 +35,37 @@ import type {
34
35
  McpAppArtifact,
35
36
  } from '@onereach/idw-contracts';
36
37
 
37
- import { idwSummarySchema } from '@onereach/idw-contracts';
38
+ import { idwSummarySchema, validateIdwCard } from '@onereach/idw-contracts';
38
39
  ```
39
40
 
41
+ ## IDW Cards
42
+
43
+ `idw.card` / `1.0` is the isomorphic card document schema (elements, actions, URL rules, `validateIdwCard`). Agents that **author** cards should follow [`skills/idw-card-authoring/SKILL.md`](./skills/idw-card-authoring/SKILL.md). Hosts **render** with `CardRenderer` from `@onereach/idw-ui-components`.
44
+
45
+ ```typescript
46
+ import { validateIdwCard, type IdwCard } from '@onereach/idw-contracts';
47
+
48
+ const result = validateIdwCard(payload);
49
+ ```
50
+
51
+ `idw-api` should depend on this package to validate, bind, or persist cards. Do not take a dependency on `@onereach/idw-ui-components`. Bind (`bindIdwCard`, `resolveIdwCardSource`) lives here so the API can accept `templateId` + `data`.
52
+
53
+ Discoverable JSON Schema (Adaptive Cards-style) lives next to the Zod schema:
54
+
55
+ - `GET /schemas` — document + template catalog
56
+ - `GET /schemas/idw.card/1.0` — bound card JSON Schema
57
+ - `GET /schemas/feeds/templates` — feed template list (`markdown`, `html`, `file`, `skill`, `approval`)
58
+ - `GET /schemas/feeds/templates/approval` — template data JSON Schema + unbound card
59
+
60
+ ```typescript
61
+ import {
62
+ getIdwCardJsonSchema,
63
+ listIdwSchemaCatalog,
64
+ } from '@onereach/idw-contracts';
65
+ ```
66
+
67
+ Cards may include optional `$schema` pointing at that URL. `schema` stays `"idw.card"` and `version` stays `"1.0"`.
68
+
40
69
  ## Notes
41
70
 
42
71
  - Types intentionally omit UI-only couplings (e.g. `@or-sdk/hitl` `Session` from idw-ui `types/index.ts`).
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bindIdwCard = bindIdwCard;
4
+ const WHOLE_PLACEHOLDER = /^\$\{([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z0-9_]+)*)\}$/;
5
+ const INTERPOLATE = /\$\{([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z0-9_]+)*)\}/g;
6
+ function getPath(data, path) {
7
+ if (data == null || typeof data !== 'object') {
8
+ return undefined;
9
+ }
10
+ return path.split('.').reduce((current, segment) => {
11
+ if (current == null || typeof current !== 'object') {
12
+ return undefined;
13
+ }
14
+ return current[segment];
15
+ }, data);
16
+ }
17
+ function interpolateString(value, data) {
18
+ const whole = value.trim().match(WHOLE_PLACEHOLDER);
19
+ if (whole) {
20
+ return getPath(data, whole[1]);
21
+ }
22
+ return value.replace(INTERPOLATE, (_match, path) => {
23
+ const resolved = getPath(data, path);
24
+ if (resolved == null) {
25
+ return '';
26
+ }
27
+ return String(resolved);
28
+ });
29
+ }
30
+ function isPlainObject(value) {
31
+ return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
32
+ }
33
+ function bindNode(node, data) {
34
+ if (typeof node === 'string') {
35
+ return interpolateString(node, data);
36
+ }
37
+ if (Array.isArray(node)) {
38
+ return node
39
+ .map((item) => bindNode(item, data))
40
+ .filter((item) => item !== undefined);
41
+ }
42
+ if (!isPlainObject(node)) {
43
+ return node;
44
+ }
45
+ if (typeof node.$when === 'string') {
46
+ const condition = interpolateString(node.$when, data);
47
+ if (!condition) {
48
+ return undefined;
49
+ }
50
+ }
51
+ const next = {};
52
+ for (const [key, value] of Object.entries(node)) {
53
+ if (key === '$when') {
54
+ continue;
55
+ }
56
+ const bound = bindNode(value, data);
57
+ if (bound !== undefined) {
58
+ next[key] = bound;
59
+ }
60
+ }
61
+ return next;
62
+ }
63
+ /**
64
+ * Bind `${path}` placeholders and `$when` conditions.
65
+ * The input may be a template document that is not yet a valid card.
66
+ * Validate the result with {@link validateIdwCard}.
67
+ */
68
+ function bindIdwCard(card, data) {
69
+ return bindNode(card, data);
70
+ }
71
+ //# sourceMappingURL=bind.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bind.js","sourceRoot":"","sources":["../../../src/idw-card/bind.ts"],"names":[],"mappings":";;AA4EA,kCAEC;AA9ED,MAAM,iBAAiB,GAAG,sDAAsD,CAAC;AACjF,MAAM,WAAW,GAAG,qDAAqD,CAAC;AAE1E,SAAS,OAAO,CAAC,IAAa,EAAE,IAAY;IAC1C,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAU,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;QAC1D,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YACnD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAQ,OAAmC,CAAC,OAAO,CAAC,CAAC;IACvD,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa,EAAE,IAAa;IACrD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACpD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,IAAY,EAAE,EAAE;QACzD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,QAAQ,CAAC,IAAa,EAAE,IAAa;IAC5C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,OAAO,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI;aACR,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aACnC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnC,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAgB,WAAW,CAAI,IAAO,EAAE,IAAa;IACnD,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAM,CAAC;AACnC,CAAC"}
@@ -0,0 +1,365 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.idwCardSchema = exports.idwCardElementSchema = exports.idwCardActionSchema = exports.idwCardVerbSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const url_1 = require("./url");
6
+ const version_1 = require("./version");
7
+ const idwSpacingSchema = zod_1.z.enum(['none', 'xs', 'sm', 'md', 'lg', 'xl']);
8
+ const idwTextStyleSchema = zod_1.z.enum(['caption', 'body', 'headline']);
9
+ const idwToneSchema = zod_1.z.enum(['default', 'emphasis', 'success', 'warning', 'attention']);
10
+ const idwCardActionStyleSchema = zod_1.z.enum(['default', 'primary', 'destructive']);
11
+ const idwColumnWidthSchema = zod_1.z.enum(['auto', 'stretch']);
12
+ exports.idwCardVerbSchema = zod_1.z.enum([
13
+ 'open-url',
14
+ 'approve',
15
+ 'reject',
16
+ 'submit',
17
+ 'start-skill',
18
+ 'mention',
19
+ 'open-conversation',
20
+ 'toggle-visibility',
21
+ 'show-card',
22
+ ]);
23
+ const elementCommonSchema = {
24
+ id: zod_1.z.string().optional(),
25
+ spacing: idwSpacingSchema.optional(),
26
+ isVisible: zod_1.z.boolean().optional(),
27
+ separator: zod_1.z.boolean().optional(),
28
+ $when: zod_1.z.string().optional(),
29
+ };
30
+ const inputCommonSchema = {
31
+ ...elementCommonSchema,
32
+ name: zod_1.z.string().min(1),
33
+ label: zod_1.z.string().optional(),
34
+ hint: zod_1.z.string().optional(),
35
+ errorMessage: zod_1.z.string().optional(),
36
+ required: zod_1.z.boolean().optional(),
37
+ disabled: zod_1.z.boolean().optional(),
38
+ };
39
+ function issue(ctx, message, path = []) {
40
+ ctx.addIssue({
41
+ code: zod_1.z.ZodIssueCode.custom,
42
+ message,
43
+ path,
44
+ });
45
+ }
46
+ function refineAction(action, ctx, path = []) {
47
+ if (action.verb === 'open-url') {
48
+ if (!action.url) {
49
+ issue(ctx, 'open-url requires url', [...path, 'url']);
50
+ }
51
+ else if (!(0, url_1.isAllowedResourceUrl)(action.url)) {
52
+ issue(ctx, 'url must be relative or http(s)', [...path, 'url']);
53
+ }
54
+ }
55
+ else if (action.url) {
56
+ issue(ctx, 'url is only allowed on open-url', [...path, 'url']);
57
+ }
58
+ if (action.verb === 'start-skill') {
59
+ if (!action.skillId) {
60
+ issue(ctx, 'start-skill requires skillId', [...path, 'skillId']);
61
+ }
62
+ }
63
+ else if (action.skillId) {
64
+ issue(ctx, 'skillId is only allowed on start-skill', [...path, 'skillId']);
65
+ }
66
+ if (action.verb === 'toggle-visibility') {
67
+ if (!action.targetIds?.length) {
68
+ issue(ctx, 'toggle-visibility requires targetIds', [...path, 'targetIds']);
69
+ }
70
+ }
71
+ else if (action.targetIds) {
72
+ issue(ctx, 'targetIds is only allowed on toggle-visibility', [...path, 'targetIds']);
73
+ }
74
+ if (action.verb === 'show-card') {
75
+ if (!action.card) {
76
+ issue(ctx, 'show-card requires card', [...path, 'card']);
77
+ }
78
+ }
79
+ else if (action.card) {
80
+ issue(ctx, 'card is only allowed on show-card', [...path, 'card']);
81
+ }
82
+ }
83
+ exports.idwCardActionSchema = zod_1.z.object({
84
+ type: zod_1.z.literal('Action'),
85
+ verb: exports.idwCardVerbSchema,
86
+ title: zod_1.z.string(),
87
+ url: zod_1.z.string().optional(),
88
+ skillId: zod_1.z.string().optional(),
89
+ data: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
90
+ style: idwCardActionStyleSchema.optional(),
91
+ targetIds: zod_1.z.array(zod_1.z.string()).optional(),
92
+ card: zod_1.z.unknown().optional(),
93
+ $when: zod_1.z.string().optional(),
94
+ }).superRefine((action, ctx) => {
95
+ refineAction(action, ctx);
96
+ });
97
+ const idwFactSchema = zod_1.z.object({
98
+ title: zod_1.z.string(),
99
+ value: zod_1.z.string(),
100
+ });
101
+ const skillDataSchema = zod_1.z.object({
102
+ id: zod_1.z.string(),
103
+ name: zod_1.z.string(),
104
+ image: zod_1.z.string(),
105
+ domain: zod_1.z.string(),
106
+ });
107
+ const idwChoiceSchema = zod_1.z.object({
108
+ title: zod_1.z.string(),
109
+ value: zod_1.z.string(),
110
+ disabled: zod_1.z.boolean().optional(),
111
+ });
112
+ const locationValueSchema = zod_1.z.object({
113
+ address: zod_1.z.string().optional(),
114
+ lat: zod_1.z.number().optional(),
115
+ lng: zod_1.z.number().optional(),
116
+ });
117
+ exports.idwCardElementSchema = zod_1.z.lazy(() => zod_1.z.discriminatedUnion('type', [
118
+ zod_1.z.object({
119
+ ...elementCommonSchema,
120
+ type: zod_1.z.literal('Text'),
121
+ text: zod_1.z.string(),
122
+ textStyle: idwTextStyleSchema.optional(),
123
+ tone: idwToneSchema.optional(),
124
+ }),
125
+ zod_1.z.object({
126
+ ...elementCommonSchema,
127
+ type: zod_1.z.literal('Image'),
128
+ url: zod_1.z.string(),
129
+ alt: zod_1.z.string(),
130
+ }),
131
+ zod_1.z.object({
132
+ ...elementCommonSchema,
133
+ type: zod_1.z.literal('FactSet'),
134
+ facts: zod_1.z.array(idwFactSchema),
135
+ }),
136
+ zod_1.z.object({
137
+ ...elementCommonSchema,
138
+ type: zod_1.z.literal('Container'),
139
+ items: zod_1.z.array(exports.idwCardElementSchema),
140
+ tone: idwToneSchema.optional(),
141
+ }),
142
+ zod_1.z.object({
143
+ ...elementCommonSchema,
144
+ type: zod_1.z.literal('ColumnSet'),
145
+ columns: zod_1.z.array(zod_1.z.object({
146
+ items: zod_1.z.array(exports.idwCardElementSchema),
147
+ width: idwColumnWidthSchema.optional(),
148
+ })).min(version_1.IDW_CARD_MIN_COLUMNS).max(version_1.IDW_CARD_MAX_COLUMNS),
149
+ }),
150
+ zod_1.z.object({
151
+ ...elementCommonSchema,
152
+ type: zod_1.z.literal('Html'),
153
+ title: zod_1.z.string(),
154
+ content: zod_1.z.string(),
155
+ }),
156
+ zod_1.z.object({
157
+ ...elementCommonSchema,
158
+ type: zod_1.z.literal('File'),
159
+ title: zod_1.z.string(),
160
+ src: zod_1.z.string(),
161
+ }),
162
+ zod_1.z.object({
163
+ ...elementCommonSchema,
164
+ type: zod_1.z.literal('Skill'),
165
+ text: zod_1.z.string(),
166
+ skill: skillDataSchema.optional(),
167
+ startSkillLabel: zod_1.z.string().optional(),
168
+ }),
169
+ zod_1.z.object({
170
+ ...elementCommonSchema,
171
+ type: zod_1.z.literal('ActionSet'),
172
+ actions: zod_1.z.array(exports.idwCardActionSchema).max(version_1.IDW_CARD_MAX_ACTIONS),
173
+ }),
174
+ zod_1.z.object({
175
+ ...inputCommonSchema,
176
+ type: zod_1.z.literal('Input.Text'),
177
+ value: zod_1.z.string().optional(),
178
+ placeholder: zod_1.z.string().optional(),
179
+ multiline: zod_1.z.boolean().optional(),
180
+ rows: zod_1.z.number().int().positive().optional(),
181
+ maxLength: zod_1.z.number().int().positive().optional(),
182
+ style: zod_1.z.enum(['text', 'email', 'url', 'tel', 'password']).optional(),
183
+ }),
184
+ zod_1.z.object({
185
+ ...inputCommonSchema,
186
+ type: zod_1.z.literal('Input.Number'),
187
+ value: zod_1.z.number().optional(),
188
+ placeholder: zod_1.z.string().optional(),
189
+ min: zod_1.z.number().optional(),
190
+ max: zod_1.z.number().optional(),
191
+ step: zod_1.z.number().optional(),
192
+ }),
193
+ zod_1.z.object({
194
+ ...inputCommonSchema,
195
+ type: zod_1.z.literal('Input.Toggle'),
196
+ value: zod_1.z.boolean().optional(),
197
+ }),
198
+ zod_1.z.object({
199
+ ...inputCommonSchema,
200
+ type: zod_1.z.literal('Input.Checkbox'),
201
+ value: zod_1.z.boolean().optional(),
202
+ }),
203
+ zod_1.z.object({
204
+ ...inputCommonSchema,
205
+ type: zod_1.z.literal('Input.ChoiceSet'),
206
+ choices: zod_1.z.array(idwChoiceSchema).min(1),
207
+ style: zod_1.z.enum(['compact', 'expanded', 'filtered']).optional(),
208
+ multi: zod_1.z.boolean().optional(),
209
+ value: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
210
+ placeholder: zod_1.z.string().optional(),
211
+ }),
212
+ zod_1.z.object({
213
+ ...inputCommonSchema,
214
+ type: zod_1.z.literal('Input.Date'),
215
+ value: zod_1.z.string().optional(),
216
+ placeholder: zod_1.z.string().optional(),
217
+ }),
218
+ zod_1.z.object({
219
+ ...inputCommonSchema,
220
+ type: zod_1.z.literal('Input.Time'),
221
+ value: zod_1.z.string().optional(),
222
+ placeholder: zod_1.z.string().optional(),
223
+ }),
224
+ zod_1.z.object({
225
+ ...inputCommonSchema,
226
+ type: zod_1.z.literal('Input.DateTime'),
227
+ value: zod_1.z.string().optional(),
228
+ placeholder: zod_1.z.string().optional(),
229
+ }),
230
+ zod_1.z.object({
231
+ ...inputCommonSchema,
232
+ type: zod_1.z.literal('Input.Slider'),
233
+ value: zod_1.z.number().optional(),
234
+ min: zod_1.z.number().optional(),
235
+ max: zod_1.z.number().optional(),
236
+ step: zod_1.z.number().optional(),
237
+ }),
238
+ zod_1.z.object({
239
+ ...inputCommonSchema,
240
+ type: zod_1.z.literal('Input.Range'),
241
+ value: zod_1.z.tuple([zod_1.z.number(), zod_1.z.number()]).optional(),
242
+ min: zod_1.z.number().optional(),
243
+ max: zod_1.z.number().optional(),
244
+ step: zod_1.z.number().optional(),
245
+ }),
246
+ zod_1.z.object({
247
+ ...inputCommonSchema,
248
+ type: zod_1.z.literal('Input.Rating'),
249
+ value: zod_1.z.number().optional(),
250
+ }),
251
+ zod_1.z.object({
252
+ ...inputCommonSchema,
253
+ type: zod_1.z.literal('Input.Location'),
254
+ value: locationValueSchema.optional(),
255
+ placeholder: zod_1.z.string().optional(),
256
+ includeCoordinates: zod_1.z.boolean().optional(),
257
+ }),
258
+ zod_1.z.object({
259
+ ...elementCommonSchema,
260
+ type: zod_1.z.literal('Progress'),
261
+ value: zod_1.z.number(),
262
+ max: zod_1.z.number().optional(),
263
+ label: zod_1.z.string().optional(),
264
+ variant: zod_1.z.enum(['linear', 'circle']).optional(),
265
+ tone: idwToneSchema.optional(),
266
+ }),
267
+ zod_1.z.object({
268
+ ...elementCommonSchema,
269
+ type: zod_1.z.literal('Badge'),
270
+ text: zod_1.z.string(),
271
+ tone: idwToneSchema.optional(),
272
+ }),
273
+ zod_1.z.object({
274
+ ...elementCommonSchema,
275
+ type: zod_1.z.literal('Icon'),
276
+ icon: zod_1.z.string(),
277
+ }),
278
+ zod_1.z.object({
279
+ ...elementCommonSchema,
280
+ type: zod_1.z.literal('ImageSet'),
281
+ images: zod_1.z.array(zod_1.z.object({
282
+ url: zod_1.z.string(),
283
+ alt: zod_1.z.string(),
284
+ })).min(1),
285
+ }),
286
+ zod_1.z.object({
287
+ ...elementCommonSchema,
288
+ type: zod_1.z.literal('Media'),
289
+ url: zod_1.z.string(),
290
+ mediaType: zod_1.z.enum(['video', 'audio']).optional(),
291
+ poster: zod_1.z.string().optional(),
292
+ title: zod_1.z.string().optional(),
293
+ }),
294
+ zod_1.z.object({
295
+ ...elementCommonSchema,
296
+ type: zod_1.z.literal('Table'),
297
+ columns: zod_1.z.array(zod_1.z.object({ title: zod_1.z.string() })).min(1),
298
+ rows: zod_1.z.array(zod_1.z.array(zod_1.z.string())),
299
+ }),
300
+ ]));
301
+ function walkActions(actions, ctx, path) {
302
+ actions?.forEach((action, index) => {
303
+ if (action.verb === 'show-card' && action.card) {
304
+ const nested = exports.idwCardSchema.safeParse(action.card);
305
+ if (!nested.success) {
306
+ issue(ctx, 'show-card card is not a valid IdwCard', [...path, index, 'card']);
307
+ }
308
+ }
309
+ });
310
+ }
311
+ function walkNesting(elements, depth, ctx, path) {
312
+ elements.forEach((element, index) => {
313
+ const elementPath = [...path, index];
314
+ if (element.type === 'Image' && !(0, url_1.isAllowedResourceUrl)(element.url)) {
315
+ issue(ctx, 'url must be relative or http(s)', [...elementPath, 'url']);
316
+ }
317
+ if (element.type === 'File' && !(0, url_1.isAllowedResourceUrl)(element.src)) {
318
+ issue(ctx, 'src must be relative or http(s)', [...elementPath, 'src']);
319
+ }
320
+ if (element.type === 'Media' && !(0, url_1.isAllowedResourceUrl)(element.url)) {
321
+ issue(ctx, 'url must be relative or http(s)', [...elementPath, 'url']);
322
+ }
323
+ if (element.type === 'Media' && element.poster && !(0, url_1.isAllowedResourceUrl)(element.poster)) {
324
+ issue(ctx, 'poster must be relative or http(s)', [...elementPath, 'poster']);
325
+ }
326
+ if (element.type === 'ImageSet') {
327
+ element.images.forEach((image, imageIndex) => {
328
+ if (!(0, url_1.isAllowedResourceUrl)(image.url)) {
329
+ issue(ctx, 'url must be relative or http(s)', [...elementPath, 'images', imageIndex, 'url']);
330
+ }
331
+ });
332
+ }
333
+ if (element.type === 'ActionSet') {
334
+ walkActions(element.actions, ctx, [...elementPath, 'actions']);
335
+ }
336
+ if (element.type === 'Container' || element.type === 'ColumnSet') {
337
+ const nextDepth = depth + 1;
338
+ if (nextDepth > version_1.IDW_CARD_MAX_NESTING) {
339
+ issue(ctx, `Nesting exceeds ${version_1.IDW_CARD_MAX_NESTING}`, elementPath);
340
+ return;
341
+ }
342
+ if (element.type === 'Container') {
343
+ walkNesting(element.items, nextDepth, ctx, [...elementPath, 'items']);
344
+ }
345
+ else {
346
+ element.columns.forEach((column, columnIndex) => {
347
+ walkNesting(column.items, nextDepth, ctx, [...elementPath, 'columns', columnIndex, 'items']);
348
+ });
349
+ }
350
+ }
351
+ });
352
+ }
353
+ exports.idwCardSchema = zod_1.z.object({
354
+ $schema: zod_1.z.string().optional(),
355
+ type: zod_1.z.literal('IdwCard'),
356
+ schema: zod_1.z.literal(version_1.IDW_CARD_SCHEMA),
357
+ version: zod_1.z.literal(version_1.IDW_CARD_VERSION),
358
+ body: zod_1.z.array(exports.idwCardElementSchema).max(version_1.IDW_CARD_MAX_BODY_ELEMENTS),
359
+ actions: zod_1.z.array(exports.idwCardActionSchema).max(version_1.IDW_CARD_MAX_ACTIONS).optional(),
360
+ fallbackText: zod_1.z.string().optional(),
361
+ }).superRefine((card, ctx) => {
362
+ walkNesting(card.body, 0, ctx, ['body']);
363
+ walkActions(card.actions, ctx, ['actions']);
364
+ });
365
+ //# sourceMappingURL=card-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card-schema.js","sourceRoot":"","sources":["../../../src/idw-card/card-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isElementVisible = isElementVisible;
4
+ exports.listIdwCardInputs = listIdwCardInputs;
5
+ exports.defaultInputValue = defaultInputValue;
6
+ exports.collectInitialInputValues = collectInitialInputValues;
7
+ exports.isInputEmpty = isInputEmpty;
8
+ const types_1 = require("./types");
9
+ function isElementVisible(element, hiddenIds = new Set()) {
10
+ const baseHidden = element.isVisible === false;
11
+ const toggled = Boolean(element.id && hiddenIds.has(element.id));
12
+ return !(toggled ? !baseHidden : baseHidden);
13
+ }
14
+ function walkElements(elements, visit) {
15
+ for (const element of elements) {
16
+ visit(element);
17
+ if (element.type === 'Container') {
18
+ walkElements(element.items, visit);
19
+ }
20
+ else if (element.type === 'ColumnSet') {
21
+ for (const column of element.columns) {
22
+ walkElements(column.items, visit);
23
+ }
24
+ }
25
+ }
26
+ }
27
+ function listIdwCardInputs(elements, hiddenIds = new Set()) {
28
+ const inputs = [];
29
+ walkElements(elements, (element) => {
30
+ if (!(0, types_1.isIdwCardInputElement)(element)) {
31
+ return;
32
+ }
33
+ inputs.push({
34
+ name: element.name,
35
+ required: Boolean(element.required),
36
+ errorMessage: element.errorMessage,
37
+ visible: isElementVisible(element, hiddenIds),
38
+ });
39
+ });
40
+ return inputs;
41
+ }
42
+ function defaultInputValue(element) {
43
+ if (element.value !== undefined) {
44
+ return element.value;
45
+ }
46
+ switch (element.type) {
47
+ case 'Input.Toggle':
48
+ case 'Input.Checkbox':
49
+ return false;
50
+ case 'Input.ChoiceSet':
51
+ return element.multi ? [] : '';
52
+ case 'Input.Slider':
53
+ case 'Input.Number':
54
+ case 'Input.Rating':
55
+ return element.type === 'Input.Slider' ? (element.min ?? 0) : undefined;
56
+ case 'Input.Range':
57
+ return [element.min ?? 0, element.max ?? 100];
58
+ case 'Input.Location':
59
+ return { address: '' };
60
+ default:
61
+ return '';
62
+ }
63
+ }
64
+ function collectInitialInputValues(elements) {
65
+ const values = {};
66
+ walkElements(elements, (element) => {
67
+ if ((0, types_1.isIdwCardInputElement)(element)) {
68
+ values[element.name] = defaultInputValue(element);
69
+ }
70
+ });
71
+ return values;
72
+ }
73
+ function isInputEmpty(value) {
74
+ if (value == null) {
75
+ return true;
76
+ }
77
+ if (typeof value === 'string') {
78
+ return value.trim() === '';
79
+ }
80
+ if (Array.isArray(value)) {
81
+ return value.length === 0;
82
+ }
83
+ if (typeof value === 'object') {
84
+ const location = value;
85
+ return !location.address && location.lat == null && location.lng == null;
86
+ }
87
+ return false;
88
+ }
89
+ //# sourceMappingURL=collect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect.js","sourceRoot":"","sources":["../../../src/idw-card/collect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getIdwCardFallbackText = getIdwCardFallbackText;
4
+ function getIdwCardFallbackText(card) {
5
+ if (!card || typeof card !== 'object' || Array.isArray(card)) {
6
+ return undefined;
7
+ }
8
+ const fallbackText = card.fallbackText;
9
+ return typeof fallbackText === 'string' && fallbackText.trim() ? fallbackText : undefined;
10
+ }
11
+ //# sourceMappingURL=fallbackText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fallbackText.js","sourceRoot":"","sources":["../../../src/idw-card/fallbackText.ts"],"names":[],"mappings":";;AAAA,wDAOC;AAPD,SAAgB,sBAAsB,CAAC,IAAa;IAClD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,YAAY,GAAI,IAAmC,CAAC,YAAY,CAAC;IACvE,OAAO,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5F,CAAC"}