@inf-monkeys-tech/monkeys 1.0.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 (188) hide show
  1. package/README.md +38 -0
  2. package/lib/contracts/artifact.d.ts +112 -0
  3. package/lib/contracts/artifact.d.ts.map +1 -0
  4. package/lib/contracts/artifact.js +60 -0
  5. package/lib/contracts/artifact.js.map +1 -0
  6. package/lib/contracts/capability.d.ts +347 -0
  7. package/lib/contracts/capability.d.ts.map +1 -0
  8. package/lib/contracts/capability.js +135 -0
  9. package/lib/contracts/capability.js.map +1 -0
  10. package/lib/contracts/common.d.ts +32 -0
  11. package/lib/contracts/common.d.ts.map +1 -0
  12. package/lib/contracts/common.js +46 -0
  13. package/lib/contracts/common.js.map +1 -0
  14. package/lib/contracts/context.d.ts +213 -0
  15. package/lib/contracts/context.d.ts.map +1 -0
  16. package/lib/contracts/context.js +96 -0
  17. package/lib/contracts/context.js.map +1 -0
  18. package/lib/contracts/continuity.d.ts +142 -0
  19. package/lib/contracts/continuity.d.ts.map +1 -0
  20. package/lib/contracts/continuity.js +66 -0
  21. package/lib/contracts/continuity.js.map +1 -0
  22. package/lib/contracts/data.d.ts +135 -0
  23. package/lib/contracts/data.d.ts.map +1 -0
  24. package/lib/contracts/data.js +85 -0
  25. package/lib/contracts/data.js.map +1 -0
  26. package/lib/contracts/dtcg-format.schema.json +1759 -0
  27. package/lib/contracts/index.d.ts +14 -0
  28. package/lib/contracts/index.d.ts.map +1 -0
  29. package/lib/contracts/index.js +30 -0
  30. package/lib/contracts/index.js.map +1 -0
  31. package/lib/contracts/page.d.ts +482 -0
  32. package/lib/contracts/page.d.ts.map +1 -0
  33. package/lib/contracts/page.js +307 -0
  34. package/lib/contracts/page.js.map +1 -0
  35. package/lib/contracts/render.d.ts +1032 -0
  36. package/lib/contracts/render.d.ts.map +1 -0
  37. package/lib/contracts/render.js +386 -0
  38. package/lib/contracts/render.js.map +1 -0
  39. package/lib/contracts/semantic.d.ts +477 -0
  40. package/lib/contracts/semantic.d.ts.map +1 -0
  41. package/lib/contracts/semantic.js +111 -0
  42. package/lib/contracts/semantic.js.map +1 -0
  43. package/lib/contracts/tenant.d.ts +2495 -0
  44. package/lib/contracts/tenant.d.ts.map +1 -0
  45. package/lib/contracts/tenant.js +573 -0
  46. package/lib/contracts/tenant.js.map +1 -0
  47. package/lib/contracts/theme.d.ts +30 -0
  48. package/lib/contracts/theme.d.ts.map +1 -0
  49. package/lib/contracts/theme.js +55 -0
  50. package/lib/contracts/theme.js.map +1 -0
  51. package/lib/contracts/trend.d.ts +577 -0
  52. package/lib/contracts/trend.d.ts.map +1 -0
  53. package/lib/contracts/trend.js +276 -0
  54. package/lib/contracts/trend.js.map +1 -0
  55. package/lib/contracts/workflow-definition.d.ts +661 -0
  56. package/lib/contracts/workflow-definition.d.ts.map +1 -0
  57. package/lib/contracts/workflow-definition.js +337 -0
  58. package/lib/contracts/workflow-definition.js.map +1 -0
  59. package/lib/index.d.ts +7 -0
  60. package/lib/index.d.ts.map +1 -0
  61. package/lib/index.js +34 -0
  62. package/lib/index.js.map +1 -0
  63. package/lib/json-schema/agent-runtime-event.schema.json +104 -0
  64. package/lib/json-schema/application-handoff.schema.json +377 -0
  65. package/lib/json-schema/application-run.schema.json +302 -0
  66. package/lib/json-schema/artifact-manifest.schema.json +375 -0
  67. package/lib/json-schema/body-relation-record.schema.json +177 -0
  68. package/lib/json-schema/brand-body.schema.json +140 -0
  69. package/lib/json-schema/brand-genetics-profile.schema.json +169 -0
  70. package/lib/json-schema/capability-manifest.schema.json +412 -0
  71. package/lib/json-schema/capability-registry.schema.json +474 -0
  72. package/lib/json-schema/change-impact-graph.schema.json +274 -0
  73. package/lib/json-schema/completion-event.schema.json +321 -0
  74. package/lib/json-schema/completion-header.schema.json +276 -0
  75. package/lib/json-schema/concept-definition.schema.json +101 -0
  76. package/lib/json-schema/conductor-workflow-definition.schema.json +404 -0
  77. package/lib/json-schema/data-continuity-envelope.schema.json +269 -0
  78. package/lib/json-schema/domain-command-definition.schema.json +121 -0
  79. package/lib/json-schema/domain-command.schema.json +204 -0
  80. package/lib/json-schema/domain-event.schema.json +161 -0
  81. package/lib/json-schema/execution-link.schema.json +190 -0
  82. package/lib/json-schema/expiring-access-grant.schema.json +127 -0
  83. package/lib/json-schema/hotword-body.schema.json +186 -0
  84. package/lib/json-schema/index.json +56 -0
  85. package/lib/json-schema/lineage-record.schema.json +370 -0
  86. package/lib/json-schema/ontology-definition.schema.json +91 -0
  87. package/lib/json-schema/output-record.schema.json +157 -0
  88. package/lib/json-schema/overlay-node.schema.json +892 -0
  89. package/lib/json-schema/page-definition.schema.json +527 -0
  90. package/lib/json-schema/page-runtime-descriptor.schema.json +720 -0
  91. package/lib/json-schema/page-runtime-projection.schema.json +464 -0
  92. package/lib/json-schema/product-body.schema.json +178 -0
  93. package/lib/json-schema/product-declaration.schema.json +1410 -0
  94. package/lib/json-schema/projection-spec.schema.json +151 -0
  95. package/lib/json-schema/radar-action-record.schema.json +144 -0
  96. package/lib/json-schema/radar-analysis-run.schema.json +424 -0
  97. package/lib/json-schema/radar-opportunity-matrix.schema.json +155 -0
  98. package/lib/json-schema/radar-panorama.schema.json +235 -0
  99. package/lib/json-schema/radar-query-body.schema.json +101 -0
  100. package/lib/json-schema/radar-score-model-body.schema.json +88 -0
  101. package/lib/json-schema/radar-score-projection.schema.json +184 -0
  102. package/lib/json-schema/radar-selection.schema.json +134 -0
  103. package/lib/json-schema/radar-writeback-record.schema.json +124 -0
  104. package/lib/json-schema/render-node.schema.json +776 -0
  105. package/lib/json-schema/render-tree.schema.json +815 -0
  106. package/lib/json-schema/request-scope.schema.json +193 -0
  107. package/lib/json-schema/saved-radar-query.schema.json +123 -0
  108. package/lib/json-schema/tenant-product-config.schema.json +2720 -0
  109. package/lib/json-schema/tenant-runtime-config.schema.json +2654 -0
  110. package/lib/json-schema/theme-tokens.schema.json +1836 -0
  111. package/lib/json-schema/trend-ingest-run.schema.json +73 -0
  112. package/lib/json-schema/trend-metric-snapshot.schema.json +126 -0
  113. package/lib/json-schema/trend-source-record.schema.json +206 -0
  114. package/lib/json-schema/view-provider-descriptor.schema.json +317 -0
  115. package/lib/json-schema/workflow-definition.schema.json +2174 -0
  116. package/lib/runtime/capability-registry.d.ts +28 -0
  117. package/lib/runtime/capability-registry.d.ts.map +1 -0
  118. package/lib/runtime/capability-registry.js +147 -0
  119. package/lib/runtime/capability-registry.js.map +1 -0
  120. package/lib/runtime/declaration-compiler.d.ts +44 -0
  121. package/lib/runtime/declaration-compiler.d.ts.map +1 -0
  122. package/lib/runtime/declaration-compiler.js +323 -0
  123. package/lib/runtime/declaration-compiler.js.map +1 -0
  124. package/lib/runtime/index.d.ts +12 -0
  125. package/lib/runtime/index.d.ts.map +1 -0
  126. package/lib/runtime/index.js +28 -0
  127. package/lib/runtime/index.js.map +1 -0
  128. package/lib/runtime/page-compiler.d.ts +36 -0
  129. package/lib/runtime/page-compiler.d.ts.map +1 -0
  130. package/lib/runtime/page-compiler.js +220 -0
  131. package/lib/runtime/page-compiler.js.map +1 -0
  132. package/lib/runtime/product-runtime.d.ts +37 -0
  133. package/lib/runtime/product-runtime.d.ts.map +1 -0
  134. package/lib/runtime/product-runtime.js +80 -0
  135. package/lib/runtime/product-runtime.js.map +1 -0
  136. package/lib/runtime/render-tree-compiler.d.ts +11 -0
  137. package/lib/runtime/render-tree-compiler.d.ts.map +1 -0
  138. package/lib/runtime/render-tree-compiler.js +85 -0
  139. package/lib/runtime/render-tree-compiler.js.map +1 -0
  140. package/lib/runtime/tenant-config.d.ts +13 -0
  141. package/lib/runtime/tenant-config.d.ts.map +1 -0
  142. package/lib/runtime/tenant-config.js +31 -0
  143. package/lib/runtime/tenant-config.js.map +1 -0
  144. package/lib/runtime/tenant-runtime-bindings.d.ts +21 -0
  145. package/lib/runtime/tenant-runtime-bindings.d.ts.map +1 -0
  146. package/lib/runtime/tenant-runtime-bindings.js +50 -0
  147. package/lib/runtime/tenant-runtime-bindings.js.map +1 -0
  148. package/lib/runtime/theme-tokens.d.ts +2 -0
  149. package/lib/runtime/theme-tokens.d.ts.map +1 -0
  150. package/lib/runtime/theme-tokens.js +13 -0
  151. package/lib/runtime/theme-tokens.js.map +1 -0
  152. package/lib/runtime/view-provider-registry.d.ts +23 -0
  153. package/lib/runtime/view-provider-registry.d.ts.map +1 -0
  154. package/lib/runtime/view-provider-registry.js +150 -0
  155. package/lib/runtime/view-provider-registry.js.map +1 -0
  156. package/lib/runtime/view-render-model.d.ts +28 -0
  157. package/lib/runtime/view-render-model.d.ts.map +1 -0
  158. package/lib/runtime/view-render-model.js +125 -0
  159. package/lib/runtime/view-render-model.js.map +1 -0
  160. package/lib/runtime/workflow-compiler.d.ts +29 -0
  161. package/lib/runtime/workflow-compiler.d.ts.map +1 -0
  162. package/lib/runtime/workflow-compiler.js +100 -0
  163. package/lib/runtime/workflow-compiler.js.map +1 -0
  164. package/lib/schemas/index.d.ts +4461 -0
  165. package/lib/schemas/index.d.ts.map +1 -0
  166. package/lib/schemas/index.js +187 -0
  167. package/lib/schemas/index.js.map +1 -0
  168. package/lib/theme-tokens/core.d.ts +65 -0
  169. package/lib/theme-tokens/core.d.ts.map +1 -0
  170. package/lib/theme-tokens/core.js +490 -0
  171. package/lib/theme-tokens/core.js.map +1 -0
  172. package/lib/types/i18n.d.ts +19 -0
  173. package/lib/types/i18n.d.ts.map +1 -0
  174. package/lib/types/i18n.js +3 -0
  175. package/lib/types/i18n.js.map +1 -0
  176. package/lib/types/index.d.ts +4 -0
  177. package/lib/types/index.d.ts.map +1 -0
  178. package/lib/types/index.js +20 -0
  179. package/lib/types/index.js.map +1 -0
  180. package/lib/types/tool.d.ts +123 -0
  181. package/lib/types/tool.d.ts.map +1 -0
  182. package/lib/types/tool.js +20 -0
  183. package/lib/types/tool.js.map +1 -0
  184. package/lib/types/workflow.d.ts +80 -0
  185. package/lib/types/workflow.d.ts.map +1 -0
  186. package/lib/types/workflow.js +23 -0
  187. package/lib/types/workflow.js.map +1 -0
  188. package/package.json +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant-runtime-bindings.d.ts","sourceRoot":"","sources":["../../src/runtime/tenant-runtime-bindings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,WAAW,0BAA0B;IACzC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC3D,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC3D,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACnD,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC;CACpD;AAcD;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,WAC/B,KAAK,mBAAmB,EAAE,aAAa,GAAG,aAAa,CAAC,UACxD,0BAA0B,KACjC,6BAuCF,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compileTenantRuntimeBindings = void 0;
4
+ const requireBinding = (kind, bindings, bindingId) => {
5
+ const binding = bindings[bindingId];
6
+ if (!binding) {
7
+ throw new TypeError(`Tenant runtime is missing required ${kind} binding "${bindingId}".`);
8
+ }
9
+ return binding;
10
+ };
11
+ /**
12
+ * Compiles tenant provider references against the providers actually shipped by
13
+ * a product. This is the browser-side fail-closed boundary: a typo or an
14
+ * uninstalled provider cannot silently fall back to a legacy endpoint.
15
+ */
16
+ const compileTenantRuntimeBindings = (config, policy) => {
17
+ const authProviderIds = new Set(policy.authProviderIds);
18
+ const dataProviderIds = new Set(policy.dataProviderIds);
19
+ const projectionRefs = new Set(policy.projectionRefs ?? []);
20
+ const auth = Object.freeze({ ...config.authBinding });
21
+ const data = Object.freeze({ ...config.dataBinding });
22
+ for (const [bindingId, binding] of Object.entries(auth)) {
23
+ if (!authProviderIds.has(binding.providerId)) {
24
+ throw new TypeError(`Tenant auth binding "${bindingId}" references unavailable provider "${binding.providerId}".`);
25
+ }
26
+ }
27
+ for (const [bindingId, binding] of Object.entries(data)) {
28
+ const supported = binding.kind === 'data-provider'
29
+ ? dataProviderIds.has(binding.providerId)
30
+ : projectionRefs.has(binding.projectionRef);
31
+ if (!supported) {
32
+ const target = binding.kind === 'data-provider' ? binding.providerId : binding.projectionRef;
33
+ throw new TypeError(`Tenant data binding "${bindingId}" references unavailable provider or projection "${target}".`);
34
+ }
35
+ }
36
+ for (const bindingId of policy.requiredAuthBindings ?? []) {
37
+ requireBinding('auth', auth, bindingId);
38
+ }
39
+ for (const bindingId of policy.requiredDataBindings ?? []) {
40
+ requireBinding('data', data, bindingId);
41
+ }
42
+ return Object.freeze({
43
+ auth,
44
+ data,
45
+ requireAuth: (bindingId = 'primary') => requireBinding('auth', auth, bindingId),
46
+ requireData: (bindingId = 'primary') => requireBinding('data', data, bindingId),
47
+ });
48
+ };
49
+ exports.compileTenantRuntimeBindings = compileTenantRuntimeBindings;
50
+ //# sourceMappingURL=tenant-runtime-bindings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant-runtime-bindings.js","sourceRoot":"","sources":["../../src/runtime/tenant-runtime-bindings.ts"],"names":[],"mappings":";;;AAqBA,MAAM,cAAc,GAAG,CACrB,IAAqB,EACrB,QAAqC,EACrC,SAAiB,EACd,EAAE;IACL,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,SAAS,CAAC,sCAAsC,IAAI,aAAa,SAAS,IAAI,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF;;;;GAIG;AACI,MAAM,4BAA4B,GAAG,CAC1C,MAAgE,EAChE,MAAkC,EACH,EAAE;IACjC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACxD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC;IAE5D,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAEtD,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,SAAS,CACjB,wBAAwB,SAAS,sCAAsC,OAAO,CAAC,UAAU,IAAI,CAC9F,CAAC;QACJ,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,SAAS,GACb,OAAO,CAAC,IAAI,KAAK,eAAe;YAC9B,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC;YACzC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAChD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;YAC7F,MAAM,IAAI,SAAS,CAAC,wBAAwB,SAAS,oDAAoD,MAAM,IAAI,CAAC,CAAC;QACvH,CAAC;IACH,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,oBAAoB,IAAI,EAAE,EAAE,CAAC;QAC1D,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,oBAAoB,IAAI,EAAE,EAAE,CAAC;QAC1D,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI;QACJ,IAAI;QACJ,WAAW,EAAE,CAAC,SAAS,GAAG,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;QAC/E,WAAW,EAAE,CAAC,SAAS,GAAG,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;KAChF,CAAC,CAAC;AACL,CAAC,CAAC;AA1CW,QAAA,4BAA4B,gCA0CvC"}
@@ -0,0 +1,2 @@
1
+ export { MONKEYS_REQUIRED_THEME_TOKEN_PATHS, ThemeTokenValidationError, assertMonkeysThemeTokensComplete, assertThemeTokensDocumentStructure, mergeThemeTokenDocuments, resolveThemeTokens, validateThemeTokensDocument, validateThemeTokensDocumentStructure, } from '../theme-tokens/core';
2
+ //# sourceMappingURL=theme-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-tokens.d.ts","sourceRoot":"","sources":["../../src/runtime/theme-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAClC,yBAAyB,EACzB,gCAAgC,EAChC,kCAAkC,EAClC,wBAAwB,EACxB,kBAAkB,EAClB,2BAA2B,EAC3B,oCAAoC,GACrC,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateThemeTokensDocumentStructure = exports.validateThemeTokensDocument = exports.resolveThemeTokens = exports.mergeThemeTokenDocuments = exports.assertThemeTokensDocumentStructure = exports.assertMonkeysThemeTokensComplete = exports.ThemeTokenValidationError = exports.MONKEYS_REQUIRED_THEME_TOKEN_PATHS = void 0;
4
+ var core_1 = require("../theme-tokens/core");
5
+ Object.defineProperty(exports, "MONKEYS_REQUIRED_THEME_TOKEN_PATHS", { enumerable: true, get: function () { return core_1.MONKEYS_REQUIRED_THEME_TOKEN_PATHS; } });
6
+ Object.defineProperty(exports, "ThemeTokenValidationError", { enumerable: true, get: function () { return core_1.ThemeTokenValidationError; } });
7
+ Object.defineProperty(exports, "assertMonkeysThemeTokensComplete", { enumerable: true, get: function () { return core_1.assertMonkeysThemeTokensComplete; } });
8
+ Object.defineProperty(exports, "assertThemeTokensDocumentStructure", { enumerable: true, get: function () { return core_1.assertThemeTokensDocumentStructure; } });
9
+ Object.defineProperty(exports, "mergeThemeTokenDocuments", { enumerable: true, get: function () { return core_1.mergeThemeTokenDocuments; } });
10
+ Object.defineProperty(exports, "resolveThemeTokens", { enumerable: true, get: function () { return core_1.resolveThemeTokens; } });
11
+ Object.defineProperty(exports, "validateThemeTokensDocument", { enumerable: true, get: function () { return core_1.validateThemeTokensDocument; } });
12
+ Object.defineProperty(exports, "validateThemeTokensDocumentStructure", { enumerable: true, get: function () { return core_1.validateThemeTokensDocumentStructure; } });
13
+ //# sourceMappingURL=theme-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-tokens.js","sourceRoot":"","sources":["../../src/runtime/theme-tokens.ts"],"names":[],"mappings":";;;AAAA,6CAS8B;AAR5B,0HAAA,kCAAkC,OAAA;AAClC,iHAAA,yBAAyB,OAAA;AACzB,wHAAA,gCAAgC,OAAA;AAChC,0HAAA,kCAAkC,OAAA;AAClC,gHAAA,wBAAwB,OAAA;AACxB,0GAAA,kBAAkB,OAAA;AAClB,mHAAA,2BAA2B,OAAA;AAC3B,4HAAA,oCAAoC,OAAA"}
@@ -0,0 +1,23 @@
1
+ import type { CapabilityManifest } from '../contracts/capability';
2
+ import type { ProductContext, ViewProviderDescriptor } from '../contracts/render';
3
+ export interface CompileViewProviderRegistryInput {
4
+ capabilities: readonly CapabilityManifest[];
5
+ providers: readonly ViewProviderDescriptor[];
6
+ }
7
+ export interface CompiledViewProviderRegistry {
8
+ capabilities: readonly CapabilityManifest[];
9
+ providers: readonly ViewProviderDescriptor[];
10
+ capabilitiesById: ReadonlyMap<string, CapabilityManifest>;
11
+ providersById: ReadonlyMap<string, ViewProviderDescriptor>;
12
+ providersByRendererKey: ReadonlyMap<string, readonly ViewProviderDescriptor[]>;
13
+ requireCapability(capabilityId: string): CapabilityManifest;
14
+ requireProvider(providerId: string): ViewProviderDescriptor;
15
+ resolveProvider(capabilityId: string, product: ProductContext, preferredProviderId?: string): ViewProviderDescriptor;
16
+ }
17
+ /**
18
+ * Compiles the canonical capability-to-provider graph independently of pages.
19
+ * Nested views and component catalogs use this boundary so descriptor metadata
20
+ * cannot drift away from the implementation registry that renders it.
21
+ */
22
+ export declare const compileViewProviderRegistry: (input: CompileViewProviderRegistryInput) => CompiledViewProviderRegistry;
23
+ //# sourceMappingURL=view-provider-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-provider-registry.d.ts","sourceRoot":"","sources":["../../src/runtime/view-provider-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,OAAO,KAAK,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAsBlF,MAAM,WAAW,gCAAgC;IAC/C,YAAY,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC5C,SAAS,EAAE,SAAS,sBAAsB,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,4BAA4B;IAC3C,YAAY,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC5C,SAAS,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC7C,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC1D,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAC3D,sBAAsB,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC,CAAC;IAC/E,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,CAAC;IAC5D,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,sBAAsB,CAAC;IAC5D,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,mBAAmB,CAAC,EAAE,MAAM,GAAG,sBAAsB,CAAC;CACtH;AAED;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,UAC/B,gCAAgC,KACtC,4BA4HF,CAAC"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compileViewProviderRegistry = void 0;
4
+ const capability_1 = require("../contracts/capability");
5
+ const page_1 = require("../contracts/page");
6
+ const render_1 = require("../contracts/render");
7
+ const referenceVersion = (version) => version === undefined ? undefined : String(version);
8
+ const sameStringSet = (left, right) => {
9
+ if (left.length !== right.length)
10
+ return false;
11
+ const expected = new Set(left);
12
+ return right.every((value) => expected.has(value));
13
+ };
14
+ const unique = (values, key, label) => {
15
+ const result = new Map();
16
+ for (const value of values) {
17
+ const id = key(value);
18
+ if (result.has(id))
19
+ throw new Error(`Duplicate ${label}: ${id}`);
20
+ result.set(id, value);
21
+ }
22
+ return result;
23
+ };
24
+ /**
25
+ * Compiles the canonical capability-to-provider graph independently of pages.
26
+ * Nested views and component catalogs use this boundary so descriptor metadata
27
+ * cannot drift away from the implementation registry that renders it.
28
+ */
29
+ const compileViewProviderRegistry = (input) => {
30
+ const capabilities = input.capabilities.map((capability) => capability_1.CapabilityManifestSchema.parse(capability));
31
+ const providers = input.providers.map((provider) => render_1.ViewProviderDescriptorSchema.parse(provider));
32
+ const capabilitiesById = unique(capabilities, (capability) => capability.id, 'capability id');
33
+ const providersById = unique(providers, (provider) => provider.providerId, 'provider id');
34
+ const providersByRendererKeyMutable = new Map();
35
+ for (const provider of providers) {
36
+ const values = providersByRendererKeyMutable.get(provider.rendererKey) ?? [];
37
+ values.push(provider);
38
+ providersByRendererKeyMutable.set(provider.rendererKey, values);
39
+ }
40
+ const providersByRendererKey = new Map(Array.from(providersByRendererKeyMutable.entries()).map(([key, values]) => [key, Object.freeze(values)]));
41
+ unique(providers, (provider) => `${provider.rendererKey}:${provider.capabilityRef.id}`, 'renderer/capability provider binding');
42
+ for (const provider of providers) {
43
+ const capability = capabilitiesById.get(provider.capabilityRef.id);
44
+ if (!capability) {
45
+ throw new Error(`Provider ${provider.providerId} references unknown capability ${provider.capabilityRef.id}.`);
46
+ }
47
+ if (!['view', 'professional-provider'].includes(capability.kind)) {
48
+ throw new Error(`Provider ${provider.providerId} capability must be a view or professional-provider.`);
49
+ }
50
+ if (referenceVersion(provider.capabilityRef.version) !== capability.capabilityVersion) {
51
+ throw new Error(`Provider ${provider.providerId} references inactive capability version ${String(provider.capabilityRef.version)}.`);
52
+ }
53
+ if (provider.capabilityRef.ownerRepo !== capability.ownerRepo) {
54
+ throw new Error(`Provider ${provider.providerId} must reference capability owner ${capability.ownerRepo}.`);
55
+ }
56
+ const providerBindings = capability.runtime.providerBindings.filter((binding) => binding.providerRef.id === provider.providerId);
57
+ if (providerBindings.length !== 1) {
58
+ throw new Error(`Capability ${capability.id} must declare exactly one binding for provider ${provider.providerId}.`);
59
+ }
60
+ const providerRef = providerBindings[0].providerRef;
61
+ if (providerRef.kind !== 'view-provider' || providerRef.ownerRepo !== provider.ownerRepo || referenceVersion(providerRef.version) !== provider.providerVersion) {
62
+ throw new Error(`Capability ${capability.id} provider binding does not match ${provider.providerId}@${provider.providerVersion}.`);
63
+ }
64
+ if (provider.loading !== capability.runtime.loading || provider.stateOwner !== capability.runtime.stateOwner) {
65
+ throw new Error(`Provider ${provider.providerId} loading and state ownership must match capability ${capability.id}.`);
66
+ }
67
+ if (!sameStringSet(provider.sideEffects, capability.runtime.sideEffects)) {
68
+ throw new Error(`Provider ${provider.providerId} side effects must match capability ${capability.id}.`);
69
+ }
70
+ const renderModelPort = capability.ports.inputs.find((port) => port.schemaRef === provider.renderModelSchemaRef);
71
+ if (!renderModelPort?.required) {
72
+ throw new Error(`Provider ${provider.providerId} render model schema is not a required capability input.`);
73
+ }
74
+ if (provider.intentSchemaRef && !capability.ports.outputs.some((port) => port.schemaRef === provider.intentSchemaRef)) {
75
+ throw new Error(`Provider ${provider.providerId} intent schema is not declared by capability ${capability.id}.`);
76
+ }
77
+ if (provider.lifecycle.focusModel !== capability.accessibility.focusModel) {
78
+ throw new Error(`Provider ${provider.providerId} focus model must match capability ${capability.id}.`);
79
+ }
80
+ if (provider.supportedSurfaces.some((surface) => !capability.placement.surfaces.includes(surface))) {
81
+ throw new Error(`Provider ${provider.providerId} surfaces must be declared by capability ${capability.id}.`);
82
+ }
83
+ for (const pageType of provider.supportedPageTypes) {
84
+ if (!page_1.PageTypeSchema.safeParse(pageType).success) {
85
+ throw new Error(`Provider ${provider.providerId} declares unsupported page type ${pageType}.`);
86
+ }
87
+ }
88
+ }
89
+ for (const capability of capabilities) {
90
+ if (!['view', 'professional-provider'].includes(capability.kind))
91
+ continue;
92
+ for (const binding of capability.runtime.providerBindings) {
93
+ const providerRef = binding.providerRef;
94
+ if (providerRef.kind !== 'view-provider')
95
+ throw new Error(`View capability ${capability.id} must resolve to view providers.`);
96
+ const provider = providersById.get(providerRef.id);
97
+ if (!provider || provider.capabilityRef.id !== capability.id) {
98
+ throw new Error(`View capability ${capability.id} references missing provider ${providerRef.id}.`);
99
+ }
100
+ }
101
+ for (const product of ['studio', 'kernel', 'compute']) {
102
+ const candidates = capability.runtime.providerBindings.filter((binding) => binding.productContexts.length === 0 || binding.productContexts.includes(product));
103
+ const priorities = candidates.map((binding) => binding.priority).sort((left, right) => right - left);
104
+ if (priorities.length > 1 && priorities[0] === priorities[1]) {
105
+ throw new Error(`Capability ${capability.id} has ambiguous provider bindings for ${product}.`);
106
+ }
107
+ }
108
+ }
109
+ const requireCapability = (capabilityId) => {
110
+ const capability = capabilitiesById.get(capabilityId);
111
+ if (!capability)
112
+ throw new Error(`Unknown capability: ${capabilityId}`);
113
+ return capability;
114
+ };
115
+ const requireProvider = (providerId) => {
116
+ const provider = providersById.get(providerId);
117
+ if (!provider)
118
+ throw new Error(`Unknown view provider: ${providerId}`);
119
+ return provider;
120
+ };
121
+ return Object.freeze({
122
+ capabilities: Object.freeze(capabilities),
123
+ providers: Object.freeze(providers),
124
+ capabilitiesById,
125
+ providersById,
126
+ providersByRendererKey,
127
+ requireCapability,
128
+ requireProvider,
129
+ resolveProvider: (capabilityId, product, preferredProviderId) => {
130
+ const capability = requireCapability(capabilityId);
131
+ const candidates = capability.runtime.providerBindings
132
+ .filter((binding) => binding.productContexts.length === 0 || binding.productContexts.includes(product))
133
+ .sort((left, right) => right.priority - left.priority || left.providerRef.id.localeCompare(right.providerRef.id));
134
+ if (preferredProviderId) {
135
+ const preferred = candidates.find((binding) => binding.providerRef.id === preferredProviderId);
136
+ if (!preferred)
137
+ throw new Error(`Provider ${preferredProviderId} is not available for capability ${capabilityId} in ${product}.`);
138
+ return requireProvider(preferred.providerRef.id);
139
+ }
140
+ if (candidates.length === 0)
141
+ throw new Error(`Capability ${capabilityId} has no provider for ${product}.`);
142
+ if (candidates.length > 1 && candidates[0].priority === candidates[1].priority) {
143
+ throw new Error(`Capability ${capabilityId} has ambiguous providers for ${product}.`);
144
+ }
145
+ return requireProvider(candidates[0].providerRef.id);
146
+ },
147
+ });
148
+ };
149
+ exports.compileViewProviderRegistry = compileViewProviderRegistry;
150
+ //# sourceMappingURL=view-provider-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-provider-registry.js","sourceRoot":"","sources":["../../src/runtime/view-provider-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export type PureRenderModelValue = null | boolean | number | string | PureRenderModelArray | PureRenderModelObject;
2
+ export interface PureRenderModelArray extends ReadonlyArray<PureRenderModelValue> {
3
+ }
4
+ export interface PureRenderModelObject {
5
+ readonly [key: string]: PureRenderModelValue;
6
+ }
7
+ export type ViewRuntimeBindingKind = 'intent-adapter' | 'visual-slot' | 'opaque-adapter';
8
+ export interface ViewRuntimeBinding {
9
+ readonly path: string;
10
+ readonly kind: ViewRuntimeBindingKind;
11
+ readonly value: unknown;
12
+ }
13
+ export interface CompiledViewProviderInput {
14
+ readonly renderModel: PureRenderModelValue;
15
+ readonly runtimeBindings: readonly ViewRuntimeBinding[];
16
+ }
17
+ export interface CompileViewProviderInputOptions {
18
+ forbiddenKeys?: readonly string[];
19
+ }
20
+ /**
21
+ * Separates deterministic, serializable view data from runtime adapters.
22
+ * React elements become visual slots and functions become intent adapters
23
+ * without adding a React dependency to the SDK.
24
+ */
25
+ export declare const compileViewProviderInput: (input: unknown, options?: CompileViewProviderInputOptions) => CompiledViewProviderInput;
26
+ /** Provider adapters use this only at the final implementation edge. */
27
+ export declare const applyViewRuntimeBindings: (renderModel: PureRenderModelValue, bindings: readonly ViewRuntimeBinding[]) => unknown;
28
+ //# sourceMappingURL=view-render-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-render-model.d.ts","sourceRoot":"","sources":["../../src/runtime/view-render-model.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,oBAAoB,GAAG,qBAAqB,CAAC;AACnH,MAAM,WAAW,oBAAqB,SAAQ,aAAa,CAAC,oBAAoB,CAAC;CAAG;AACpF,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,oBAAoB,CAAC;CAC9C;AAED,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAEzF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACzD;AAiCD,MAAM,WAAW,+BAA+B;IAC9C,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,UAC5B,OAAO,YACL,+BAA+B,KACvC,yBAmDF,CAAC;AAUF,wEAAwE;AACxE,eAAO,MAAM,wBAAwB,gBACtB,oBAAoB,YACvB,SAAS,kBAAkB,EAAE,KACtC,OAkBF,CAAC"}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyViewRuntimeBindings = exports.compileViewProviderInput = void 0;
4
+ const DEFAULT_FORBIDDEN_RENDER_MODEL_KEYS = Object.freeze([
5
+ 'tenant',
6
+ 'tenantId',
7
+ 'customer',
8
+ 'customerId',
9
+ 'route',
10
+ 'routeId',
11
+ 'pathname',
12
+ 'location',
13
+ 'raw',
14
+ 'rawRow',
15
+ '__raw',
16
+ '__rawRow',
17
+ ]);
18
+ const escapePointer = (value) => value.replace(/~/g, '~0').replace(/\//g, '~1');
19
+ const unescapePointer = (value) => value.replace(/~1/g, '/').replace(/~0/g, '~');
20
+ const childPath = (path, key) => `${path}/${escapePointer(String(key))}`;
21
+ const isPlainObject = (value) => {
22
+ if (!value || typeof value !== 'object')
23
+ return false;
24
+ const prototype = Object.getPrototypeOf(value);
25
+ return prototype === Object.prototype || prototype === null;
26
+ };
27
+ const bindingKind = (value) => {
28
+ if (typeof value === 'function')
29
+ return 'intent-adapter';
30
+ if (value && typeof value === 'object' && '$$typeof' in value)
31
+ return 'visual-slot';
32
+ return 'opaque-adapter';
33
+ };
34
+ /**
35
+ * Separates deterministic, serializable view data from runtime adapters.
36
+ * React elements become visual slots and functions become intent adapters
37
+ * without adding a React dependency to the SDK.
38
+ */
39
+ const compileViewProviderInput = (input, options = {}) => {
40
+ const forbidden = new Set([...DEFAULT_FORBIDDEN_RENDER_MODEL_KEYS, ...(options.forbiddenKeys ?? [])]);
41
+ const runtimeBindings = [];
42
+ const ancestors = new WeakSet();
43
+ const visit = (value, path) => {
44
+ if (value === null)
45
+ return null;
46
+ if (typeof value === 'string' || typeof value === 'boolean')
47
+ return value;
48
+ if (typeof value === 'number') {
49
+ if (!Number.isFinite(value))
50
+ throw new Error(`Non-finite number is not allowed in renderModel at ${path || '/'}.`);
51
+ return value;
52
+ }
53
+ if (value === undefined)
54
+ return null;
55
+ if (typeof value === 'bigint' || typeof value === 'symbol' || typeof value === 'function') {
56
+ runtimeBindings.push(Object.freeze({ path, kind: bindingKind(value), value }));
57
+ return null;
58
+ }
59
+ if (!value || typeof value !== 'object') {
60
+ throw new Error(`Unsupported renderModel value at ${path || '/'}.`);
61
+ }
62
+ if (!Array.isArray(value) && !isPlainObject(value)) {
63
+ runtimeBindings.push(Object.freeze({ path, kind: bindingKind(value), value }));
64
+ return null;
65
+ }
66
+ if (!Array.isArray(value) && '$$typeof' in value) {
67
+ runtimeBindings.push(Object.freeze({ path, kind: 'visual-slot', value }));
68
+ return null;
69
+ }
70
+ if (ancestors.has(value))
71
+ throw new Error(`Cyclic renderModel input at ${path || '/'}.`);
72
+ ancestors.add(value);
73
+ try {
74
+ if (Array.isArray(value)) {
75
+ return Object.freeze(value.map((item, index) => visit(item, childPath(path, index))));
76
+ }
77
+ const output = {};
78
+ for (const [key, item] of Object.entries(value)) {
79
+ if (forbidden.has(key)) {
80
+ throw new Error(`Forbidden renderModel field ${key} at ${childPath(path, key)}.`);
81
+ }
82
+ output[key] = visit(item, childPath(path, key));
83
+ }
84
+ return Object.freeze(output);
85
+ }
86
+ finally {
87
+ ancestors.delete(value);
88
+ }
89
+ };
90
+ return Object.freeze({
91
+ renderModel: visit(input, ''),
92
+ runtimeBindings: Object.freeze(runtimeBindings),
93
+ });
94
+ };
95
+ exports.compileViewProviderInput = compileViewProviderInput;
96
+ const cloneRenderModel = (value) => {
97
+ if (Array.isArray(value))
98
+ return value.map((item) => cloneRenderModel(item));
99
+ if (value && typeof value === 'object') {
100
+ return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, cloneRenderModel(item)]));
101
+ }
102
+ return value;
103
+ };
104
+ /** Provider adapters use this only at the final implementation edge. */
105
+ const applyViewRuntimeBindings = (renderModel, bindings) => {
106
+ const root = { value: cloneRenderModel(renderModel) };
107
+ for (const binding of bindings) {
108
+ const segments = binding.path.split('/').slice(1).map(unescapePointer);
109
+ if (segments.length === 0) {
110
+ root.value = binding.value;
111
+ continue;
112
+ }
113
+ let cursor = root.value;
114
+ for (let index = 0; index < segments.length - 1; index += 1) {
115
+ cursor = cursor?.[segments[index]];
116
+ if (cursor === undefined || cursor === null) {
117
+ throw new Error(`Runtime binding path does not exist: ${binding.path}`);
118
+ }
119
+ }
120
+ cursor[segments[segments.length - 1]] = binding.value;
121
+ }
122
+ return root.value;
123
+ };
124
+ exports.applyViewRuntimeBindings = applyViewRuntimeBindings;
125
+ //# sourceMappingURL=view-render-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-render-model.js","sourceRoot":"","sources":["../../src/runtime/view-render-model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { ConductorTaskDefinition, ConductorWorkflowDefinition, WorkflowDefinition, WorkflowOutputBinding, WorkflowParameter } from '../contracts/workflow-definition';
2
+ export interface CompileWorkflowDefinitionFromConductorInput {
3
+ metadata: WorkflowDefinition['metadata'];
4
+ revision: WorkflowDefinition['revision'];
5
+ presentation: WorkflowDefinition['presentation'];
6
+ conductor: ConductorWorkflowDefinition;
7
+ variables: readonly WorkflowParameter[];
8
+ output: readonly WorkflowOutputBinding[];
9
+ execution: Omit<WorkflowDefinition['execution'], 'timeoutMs' | 'conductor'>;
10
+ triggers: WorkflowDefinition['triggers'];
11
+ views: WorkflowDefinition['views'];
12
+ dataContracts: WorkflowDefinition['dataContracts'];
13
+ governance: WorkflowDefinition['governance'];
14
+ interfaces: WorkflowDefinition['interfaces'];
15
+ }
16
+ export interface WorkflowPersistenceProjection {
17
+ tasks: readonly ConductorTaskDefinition[];
18
+ variables: readonly WorkflowParameter[];
19
+ output: readonly WorkflowOutputBinding[];
20
+ }
21
+ /**
22
+ * One-time production compiler from Conductor + authoring data to the canonical
23
+ * WorkflowDefinition. Nested control-flow tasks remain typed inside each node,
24
+ * so the projection does not depend on a lossy graph reconstruction.
25
+ */
26
+ export declare const compileWorkflowDefinitionFromConductor: (input: CompileWorkflowDefinitionFromConductorInput) => WorkflowDefinition;
27
+ export declare const compileConductorWorkflowDefinition: (input: WorkflowDefinition) => ConductorWorkflowDefinition;
28
+ export declare const compileWorkflowPersistenceProjection: (input: WorkflowDefinition) => WorkflowPersistenceProjection;
29
+ //# sourceMappingURL=workflow-compiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-compiler.d.ts","sourceRoot":"","sources":["../../src/runtime/workflow-compiler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,2BAA2B,EAC3B,kBAAkB,EAClB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,kCAAkC,CAAC;AAQ1C,MAAM,WAAW,2CAA2C;IAC1D,QAAQ,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACzC,QAAQ,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACzC,YAAY,EAAE,kBAAkB,CAAC,cAAc,CAAC,CAAC;IACjD,SAAS,EAAE,2BAA2B,CAAC;IACvC,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACxC,MAAM,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACzC,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC;IAC5E,QAAQ,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC;IACzC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnC,aAAa,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACnD,UAAU,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC7C,UAAU,EAAE,kBAAkB,CAAC,YAAY,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,6BAA6B;IAC5C,KAAK,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC1C,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACxC,MAAM,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAC1C;AAsBD;;;;GAIG;AACH,eAAO,MAAM,sCAAsC,UAC1C,2CAA2C,KACjD,kBAwDF,CAAC;AAEF,eAAO,MAAM,kCAAkC,UACtC,kBAAkB,KACxB,2BAYF,CAAC;AAEF,eAAO,MAAM,oCAAoC,UACxC,kBAAkB,KACxB,6BAOF,CAAC"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compileWorkflowPersistenceProjection = exports.compileConductorWorkflowDefinition = exports.compileWorkflowDefinitionFromConductor = void 0;
4
+ const workflow_definition_1 = require("../contracts/workflow-definition");
5
+ const localizedText = (value) => {
6
+ if (typeof value === 'string')
7
+ return value;
8
+ if (!value)
9
+ return undefined;
10
+ return value['en-US'] ?? value['zh-CN'] ?? Object.values(value)[0];
11
+ };
12
+ const parameterPort = (workflowId, parameter) => ({
13
+ name: parameter.name,
14
+ schemaRef: `schema://workflow/${workflowId}/input/${parameter.name}`,
15
+ required: parameter.required === true,
16
+ multiple: parameter.typeOptions?.multipleValues === true,
17
+ description: localizedText(parameter.description),
18
+ });
19
+ const outputPort = (workflowId, output) => ({
20
+ name: output.key,
21
+ schemaRef: `schema://workflow/${workflowId}/output/${output.key}`,
22
+ required: false,
23
+ multiple: false,
24
+ });
25
+ /**
26
+ * One-time production compiler from Conductor + authoring data to the canonical
27
+ * WorkflowDefinition. Nested control-flow tasks remain typed inside each node,
28
+ * so the projection does not depend on a lossy graph reconstruction.
29
+ */
30
+ const compileWorkflowDefinitionFromConductor = (input) => {
31
+ const conductor = workflow_definition_1.ConductorWorkflowDefinitionSchema.parse(input.conductor);
32
+ if (conductor.name !== input.metadata.id || conductor.version !== input.metadata.version) {
33
+ throw new Error('Conductor workflow identity must match canonical metadata.');
34
+ }
35
+ const variables = input.variables.map((parameter) => workflow_definition_1.WorkflowParameterSchema.parse(parameter));
36
+ const outputs = input.output.map((output) => workflow_definition_1.WorkflowOutputBindingSchema.parse(output));
37
+ if (JSON.stringify(conductor.inputParameters) !== JSON.stringify(variables.map((parameter) => parameter.name))) {
38
+ throw new Error('Conductor inputParameters must match canonical workflow variables in order.');
39
+ }
40
+ const expectedOutput = Object.fromEntries(outputs.map((output) => [output.key, output.value]));
41
+ if (JSON.stringify(conductor.outputParameters ?? {}) !== JSON.stringify(expectedOutput)) {
42
+ throw new Error('Conductor outputParameters must match canonical workflow output bindings.');
43
+ }
44
+ const nodes = conductor.tasks.map((task) => ({
45
+ id: task.taskReferenceName,
46
+ referenceName: task.taskReferenceName,
47
+ capabilityRef: task.name,
48
+ inputBindings: task.inputParameters ?? {},
49
+ configuration: { executor: 'conductor', task },
50
+ }));
51
+ const edges = nodes.slice(1).map((node, index) => ({ from: nodes[index].id, to: node.id }));
52
+ const { name: _name, description: _description, version: _version, tasks: _tasks, inputParameters: _inputParameters, outputParameters: _outputParameters, timeoutSeconds, ...conductorOptions } = conductor;
53
+ return workflow_definition_1.WorkflowDefinitionSchema.parse({
54
+ contract: 'WorkflowDefinition',
55
+ metadata: input.metadata,
56
+ revision: input.revision,
57
+ presentation: input.presentation,
58
+ ports: {
59
+ inputs: variables.map((parameter) => parameterPort(input.metadata.id, parameter)),
60
+ outputs: outputs.map((output) => outputPort(input.metadata.id, output)),
61
+ },
62
+ parameters: { variables, outputs },
63
+ graph: { nodes, edges },
64
+ execution: {
65
+ ...input.execution,
66
+ ...(timeoutSeconds > 0 ? { timeoutMs: timeoutSeconds * 1000 } : {}),
67
+ conductor: conductorOptions,
68
+ },
69
+ triggers: input.triggers,
70
+ views: input.views,
71
+ dataContracts: input.dataContracts,
72
+ governance: input.governance,
73
+ interfaces: input.interfaces,
74
+ });
75
+ };
76
+ exports.compileWorkflowDefinitionFromConductor = compileWorkflowDefinitionFromConductor;
77
+ const compileConductorWorkflowDefinition = (input) => {
78
+ const workflow = workflow_definition_1.WorkflowDefinitionSchema.parse(input);
79
+ return workflow_definition_1.ConductorWorkflowDefinitionSchema.parse({
80
+ ...workflow.execution.conductor,
81
+ name: workflow.metadata.id,
82
+ description: localizedText(workflow.metadata.description),
83
+ version: workflow.metadata.version,
84
+ tasks: workflow.graph.nodes.map((node) => node.configuration.task),
85
+ inputParameters: workflow.parameters.variables.map((parameter) => parameter.name),
86
+ outputParameters: Object.fromEntries(workflow.parameters.outputs.map((output) => [output.key, output.value])),
87
+ timeoutSeconds: workflow.execution.timeoutMs ? Math.ceil(workflow.execution.timeoutMs / 1000) : 0,
88
+ });
89
+ };
90
+ exports.compileConductorWorkflowDefinition = compileConductorWorkflowDefinition;
91
+ const compileWorkflowPersistenceProjection = (input) => {
92
+ const workflow = workflow_definition_1.WorkflowDefinitionSchema.parse(input);
93
+ return Object.freeze({
94
+ tasks: Object.freeze(workflow.graph.nodes.map((node) => node.configuration.task)),
95
+ variables: Object.freeze(workflow.parameters.variables),
96
+ output: Object.freeze(workflow.parameters.outputs),
97
+ });
98
+ };
99
+ exports.compileWorkflowPersistenceProjection = compileWorkflowPersistenceProjection;
100
+ //# sourceMappingURL=workflow-compiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-compiler.js","sourceRoot":"","sources":["../../src/runtime/workflow-compiler.ts"],"names":[],"mappings":";;;AAQA,0EAK0C;AAuB1C,MAAM,aAAa,GAAG,CAAC,KAAoD,EAAsB,EAAE;IACjG,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC,CAAC;AACF,MAAM,aAAa,GAAG,CAAC,UAAkB,EAAE,SAA4B,EAAgB,EAAE,CAAC,CAAC;IACzF,IAAI,EAAE,SAAS,CAAC,IAAI;IACpB,SAAS,EAAE,qBAAqB,UAAU,UAAU,SAAS,CAAC,IAAI,EAAE;IACpE,QAAQ,EAAE,SAAS,CAAC,QAAQ,KAAK,IAAI;IACrC,QAAQ,EAAE,SAAS,CAAC,WAAW,EAAE,cAAc,KAAK,IAAI;IACxD,WAAW,EAAE,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC;CAClD,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,CAAC,UAAkB,EAAE,MAA6B,EAAgB,EAAE,CAAC,CAAC;IACvF,IAAI,EAAE,MAAM,CAAC,GAAG;IAChB,SAAS,EAAE,qBAAqB,UAAU,WAAW,MAAM,CAAC,GAAG,EAAE;IACjE,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;CAChB,CAAC,CAAC;AAEH;;;;GAIG;AACI,MAAM,sCAAsC,GAAG,CACpD,KAAkD,EAC9B,EAAE;IACtB,MAAM,SAAS,GAAG,uDAAiC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3E,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,SAAS,CAAC,OAAO,KAAK,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,6CAAuB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iDAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACxF,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC/G,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACjG,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/F,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,gBAAgB,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAAE,CAAC;QACxF,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3C,EAAE,EAAE,IAAI,CAAC,iBAAiB;QAC1B,aAAa,EAAE,IAAI,CAAC,iBAAiB;QACrC,aAAa,EAAE,IAAI,CAAC,IAAI;QACxB,aAAa,EAAE,IAAI,CAAC,eAAe,IAAI,EAAE;QACzC,aAAa,EAAE,EAAE,QAAQ,EAAE,WAAoB,EAAE,IAAI,EAAE;KACxD,CAAC,CAAC,CAAC;IACJ,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC5F,MAAM,EACJ,IAAI,EAAE,KAAK,EACX,WAAW,EAAE,YAAY,EACzB,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,gBAAgB,EACjC,gBAAgB,EAAE,iBAAiB,EACnC,cAAc,EACd,GAAG,gBAAgB,EACpB,GAAG,SAAS,CAAC;IAEd,OAAO,8CAAwB,CAAC,KAAK,CAAC;QACpC,QAAQ,EAAE,oBAAoB;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,KAAK,EAAE;YACL,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YACjF,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;SACxE;QACD,UAAU,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE;QAClC,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;QACvB,SAAS,EAAE;YACT,GAAG,KAAK,CAAC,SAAS;YAClB,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,SAAS,EAAE,gBAAgB;SAC5B;QACD,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;KAC7B,CAAC,CAAC;AACL,CAAC,CAAC;AA1DW,QAAA,sCAAsC,0CA0DjD;AAEK,MAAM,kCAAkC,GAAG,CAChD,KAAyB,EACI,EAAE;IAC/B,MAAM,QAAQ,GAAG,8CAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvD,OAAO,uDAAiC,CAAC,KAAK,CAAC;QAC7C,GAAG,QAAQ,CAAC,SAAS,CAAC,SAAS;QAC/B,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAC1B,WAAW,EAAE,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;QACzD,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO;QAClC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAClE,eAAe,EAAE,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;QACjF,gBAAgB,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7G,cAAc,EAAE,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAClG,CAAC,CAAC;AACL,CAAC,CAAC;AAdW,QAAA,kCAAkC,sCAc7C;AAEK,MAAM,oCAAoC,GAAG,CAClD,KAAyB,EACM,EAAE;IACjC,MAAM,QAAQ,GAAG,8CAAwB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACjF,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;QACvD,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC;KACnD,CAAC,CAAC;AACL,CAAC,CAAC;AATW,QAAA,oCAAoC,wCAS/C"}