@lucern/pack-host 1.0.37 → 1.0.38

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 (78) hide show
  1. package/dist/contracts.js +0 -2
  2. package/dist/convex.config.js +0 -2
  3. package/dist/dependencyResolution.js +0 -2
  4. package/dist/domain-pack/authoring.core.js +0 -2
  5. package/dist/domain-pack/authoring.js +0 -2
  6. package/dist/domain-pack/authoring.validation.js +0 -2
  7. package/dist/domain-pack/contracts.js +0 -2
  8. package/dist/domain-pack/index.js +0 -2
  9. package/dist/domain-pack/ontology/software-entities-v1.js +0 -2
  10. package/dist/domain-pack/packs/developer-reasoning.js +0 -2
  11. package/dist/domain-pack/packs/engineering-accelerator-tail.js +0 -2
  12. package/dist/domain-pack/packs/engineering-accelerator.js +0 -2
  13. package/dist/domain-pack/packs/index.js +0 -2
  14. package/dist/domain-pack/shaping.js +0 -2
  15. package/dist/domain-pack/validation.js +0 -2
  16. package/dist/domain-pack.js +0 -2
  17. package/dist/index.js +0 -2
  18. package/dist/lifecycle.js +0 -2
  19. package/dist/manifestValidation.js +0 -2
  20. package/dist/manifests/chat-v1.js +0 -2
  21. package/dist/manifests/deals-v1.js +0 -2
  22. package/dist/manifests/decisions-v1.js +0 -2
  23. package/dist/manifests/documents-v1.js +0 -2
  24. package/dist/manifests/epistemic-algorithms-v1.js +0 -2
  25. package/dist/manifests/graph-visualization-v1.js +0 -2
  26. package/dist/manifests/index.js +0 -2
  27. package/dist/manifests/news-v1.js +0 -2
  28. package/dist/manifests/philosophy-mode-v1.js +0 -2
  29. package/dist/manifests/sprints-v1.js +0 -2
  30. package/dist/manifests/task-management-v1.js +0 -2
  31. package/dist/manifests/team-analysis-v1.js +0 -2
  32. package/dist/manifests/themes-v1.js +0 -2
  33. package/dist/manifests/user-profiles-v1.js +0 -2
  34. package/dist/manifests.js +0 -2
  35. package/dist/namespacePolicy.js +0 -2
  36. package/dist/proof-attestation.json +1 -1
  37. package/dist/registry.js +0 -2
  38. package/dist/runtime.js +0 -2
  39. package/dist/serviceContracts.js +0 -2
  40. package/package.json +1 -1
  41. package/dist/contracts.js.map +0 -1
  42. package/dist/convex.config.js.map +0 -1
  43. package/dist/dependencyResolution.js.map +0 -1
  44. package/dist/domain-pack/authoring.core.js.map +0 -1
  45. package/dist/domain-pack/authoring.js.map +0 -1
  46. package/dist/domain-pack/authoring.validation.js.map +0 -1
  47. package/dist/domain-pack/contracts.js.map +0 -1
  48. package/dist/domain-pack/index.js.map +0 -1
  49. package/dist/domain-pack/ontology/software-entities-v1.js.map +0 -1
  50. package/dist/domain-pack/packs/developer-reasoning.js.map +0 -1
  51. package/dist/domain-pack/packs/engineering-accelerator-tail.js.map +0 -1
  52. package/dist/domain-pack/packs/engineering-accelerator.js.map +0 -1
  53. package/dist/domain-pack/packs/index.js.map +0 -1
  54. package/dist/domain-pack/shaping.js.map +0 -1
  55. package/dist/domain-pack/validation.js.map +0 -1
  56. package/dist/domain-pack.js.map +0 -1
  57. package/dist/index.js.map +0 -1
  58. package/dist/lifecycle.js.map +0 -1
  59. package/dist/manifestValidation.js.map +0 -1
  60. package/dist/manifests/chat-v1.js.map +0 -1
  61. package/dist/manifests/deals-v1.js.map +0 -1
  62. package/dist/manifests/decisions-v1.js.map +0 -1
  63. package/dist/manifests/documents-v1.js.map +0 -1
  64. package/dist/manifests/epistemic-algorithms-v1.js.map +0 -1
  65. package/dist/manifests/graph-visualization-v1.js.map +0 -1
  66. package/dist/manifests/index.js.map +0 -1
  67. package/dist/manifests/news-v1.js.map +0 -1
  68. package/dist/manifests/philosophy-mode-v1.js.map +0 -1
  69. package/dist/manifests/sprints-v1.js.map +0 -1
  70. package/dist/manifests/task-management-v1.js.map +0 -1
  71. package/dist/manifests/team-analysis-v1.js.map +0 -1
  72. package/dist/manifests/themes-v1.js.map +0 -1
  73. package/dist/manifests/user-profiles-v1.js.map +0 -1
  74. package/dist/manifests.js.map +0 -1
  75. package/dist/namespacePolicy.js.map +0 -1
  76. package/dist/registry.js.map +0 -1
  77. package/dist/runtime.js.map +0 -1
  78. package/dist/serviceContracts.js.map +0 -1
package/dist/contracts.js CHANGED
@@ -17,5 +17,3 @@ function defineAppPackManifest(manifest) {
17
17
  }
18
18
 
19
19
  export { defineAppPackManifest };
20
- //# sourceMappingURL=contracts.js.map
21
- //# sourceMappingURL=contracts.js.map
@@ -5,5 +5,3 @@ var component = defineComponent("pack-host");
5
5
  var convex_config_default = component;
6
6
 
7
7
  export { convex_config_default as default };
8
- //# sourceMappingURL=convex.config.js.map
9
- //# sourceMappingURL=convex.config.js.map
@@ -151,5 +151,3 @@ function resolvePackDependencyGraph(manifests) {
151
151
  }
152
152
 
153
153
  export { resolvePackDependencyGraph };
154
- //# sourceMappingURL=dependencyResolution.js.map
155
- //# sourceMappingURL=dependencyResolution.js.map
@@ -408,5 +408,3 @@ function parseDomainPackAuthoringManifest(source, format) {
408
408
  }
409
409
 
410
410
  export { DOMAIN_PACK_MANIFEST_KIND, countManifestArtifacts, defineDomainPackAuthoringManifest, parseDomainPackAuthoringManifest, serializeDomainPackAuthoringManifest };
411
- //# sourceMappingURL=authoring.core.js.map
412
- //# sourceMappingURL=authoring.core.js.map
@@ -2068,5 +2068,3 @@ var publishDomainPackAuthoringManifestSource2 = domainPackAuthoringValidation.pu
2068
2068
  var createDomainPackAuthoringTools2 = domainPackAuthoringValidation.createDomainPackAuthoringTools;
2069
2069
 
2070
2070
  export { createDomainPackAuthoringTools2 as createDomainPackAuthoringTools, defineDomainPackAuthoringManifest, parseDomainPackAuthoringManifest, previewDomainPackAuthoringManifest2 as previewDomainPackAuthoringManifest, previewDomainPackAuthoringManifestSource2 as previewDomainPackAuthoringManifestSource, publishDomainPackAuthoringManifest2 as publishDomainPackAuthoringManifest, publishDomainPackAuthoringManifestSource2 as publishDomainPackAuthoringManifestSource, serializeDomainPackAuthoringManifest, validateDomainPackAuthoringManifest2 as validateDomainPackAuthoringManifest, validateDomainPackAuthoringManifestSource2 as validateDomainPackAuthoringManifestSource };
2071
- //# sourceMappingURL=authoring.js.map
2072
- //# sourceMappingURL=authoring.js.map
@@ -2059,5 +2059,3 @@ var domainPackAuthoringValidation = {
2059
2059
  };
2060
2060
 
2061
2061
  export { domainPackAuthoringValidation };
2062
- //# sourceMappingURL=authoring.validation.js.map
2063
- //# sourceMappingURL=authoring.validation.js.map
@@ -61,5 +61,3 @@ function defineDomainPack(input) {
61
61
  }
62
62
 
63
63
  export { defineDomainPack };
64
- //# sourceMappingURL=contracts.js.map
65
- //# sourceMappingURL=contracts.js.map
@@ -4002,5 +4002,3 @@ var listShapingContributions = shapingContributionRegistry.list.bind(
4002
4002
  );
4003
4003
 
4004
4004
  export { DEVELOPER_REASONING_PACK, ENGINEERING_ACCELERATOR_PACK, SOFTWARE_ENTITIES_V1, buildShapingContribution, createDomainPackAuthoringTools2 as createDomainPackAuthoringTools, createShapingContributionRegistry, defineDomainPack, defineDomainPackAuthoringManifest, getDomainPack, getShapingContribution, listDomainPacks, listShapingContributions, parseDomainPackAuthoringManifest, previewDomainPackAuthoringManifest2 as previewDomainPackAuthoringManifest, previewDomainPackAuthoringManifestSource2 as previewDomainPackAuthoringManifestSource, publishDomainPackAuthoringManifest2 as publishDomainPackAuthoringManifest, publishDomainPackAuthoringManifestSource2 as publishDomainPackAuthoringManifestSource, serializeDomainPackAuthoringManifest, validateDomainPack, validateDomainPackAuthoringManifest2 as validateDomainPackAuthoringManifest, validateDomainPackAuthoringManifestSource2 as validateDomainPackAuthoringManifestSource, validateShapingContribution };
4005
- //# sourceMappingURL=index.js.map
4006
- //# sourceMappingURL=index.js.map
@@ -100,5 +100,3 @@ var SOFTWARE_ENTITIES_V1 = {
100
100
  };
101
101
 
102
102
  export { SOFTWARE_ENTITIES_V1 };
103
- //# sourceMappingURL=software-entities-v1.js.map
104
- //# sourceMappingURL=software-entities-v1.js.map
@@ -341,5 +341,3 @@ var DEVELOPER_REASONING_PACK = defineDomainPack({
341
341
  });
342
342
 
343
343
  export { DEVELOPER_REASONING_PACK };
344
- //# sourceMappingURL=developer-reasoning.js.map
345
- //# sourceMappingURL=developer-reasoning.js.map
@@ -712,5 +712,3 @@ var ENGINEERING_ACCELERATOR_TAIL = {
712
712
  };
713
713
 
714
714
  export { ENGINEERING_ACCELERATOR_TAIL };
715
- //# sourceMappingURL=engineering-accelerator-tail.js.map
716
- //# sourceMappingURL=engineering-accelerator-tail.js.map
@@ -1349,5 +1349,3 @@ var ENGINEERING_ACCELERATOR_PACK = defineDomainPack({
1349
1349
  });
1350
1350
 
1351
1351
  export { ENGINEERING_ACCELERATOR_PACK };
1352
- //# sourceMappingURL=engineering-accelerator.js.map
1353
- //# sourceMappingURL=engineering-accelerator.js.map
@@ -2748,5 +2748,3 @@ var listShapingContributions = shapingContributionRegistry.list.bind(
2748
2748
  );
2749
2749
 
2750
2750
  export { DEVELOPER_REASONING_PACK, ENGINEERING_ACCELERATOR_PACK, getDomainPack, getShapingContribution, listDomainPacks, listShapingContributions };
2751
- //# sourceMappingURL=index.js.map
2752
- //# sourceMappingURL=index.js.map
@@ -1097,5 +1097,3 @@ function createShapingContributionRegistry(packs = []) {
1097
1097
  }
1098
1098
 
1099
1099
  export { buildShapingContribution, createShapingContributionRegistry, validateShapingContribution };
1100
- //# sourceMappingURL=shaping.js.map
1101
- //# sourceMappingURL=shaping.js.map
@@ -853,5 +853,3 @@ function validateDomainPack(pack) {
853
853
  }
854
854
 
855
855
  export { validateDomainPack };
856
- //# sourceMappingURL=validation.js.map
857
- //# sourceMappingURL=validation.js.map
@@ -4002,5 +4002,3 @@ var listShapingContributions = shapingContributionRegistry.list.bind(
4002
4002
  );
4003
4003
 
4004
4004
  export { DEVELOPER_REASONING_PACK, ENGINEERING_ACCELERATOR_PACK, SOFTWARE_ENTITIES_V1, buildShapingContribution, createDomainPackAuthoringTools2 as createDomainPackAuthoringTools, createShapingContributionRegistry, defineDomainPack, defineDomainPackAuthoringManifest, getDomainPack, getShapingContribution, listDomainPacks, listShapingContributions, parseDomainPackAuthoringManifest, previewDomainPackAuthoringManifest2 as previewDomainPackAuthoringManifest, previewDomainPackAuthoringManifestSource2 as previewDomainPackAuthoringManifestSource, publishDomainPackAuthoringManifest2 as publishDomainPackAuthoringManifest, publishDomainPackAuthoringManifestSource2 as publishDomainPackAuthoringManifestSource, serializeDomainPackAuthoringManifest, validateDomainPack, validateDomainPackAuthoringManifest2 as validateDomainPackAuthoringManifest, validateDomainPackAuthoringManifestSource2 as validateDomainPackAuthoringManifestSource, validateShapingContribution };
4005
- //# sourceMappingURL=domain-pack.js.map
4006
- //# sourceMappingURL=domain-pack.js.map
package/dist/index.js CHANGED
@@ -5848,5 +5848,3 @@ function evaluateAppPackEnablement(policy = {}) {
5848
5848
  }
5849
5849
 
5850
5850
  export { DEVELOPER_REASONING_PACK, ENGINEERING_ACCELERATOR_PACK, PACK_NAMESPACE_COLLISION_ALLOWLIST, SOFTWARE_ENTITIES_V1, allAppPackManifests, appPackRegistry, buildShapingContribution, chatV1Manifest, createDomainPackAuthoringTools2 as createDomainPackAuthoringTools, createShapingContributionRegistry, dealsV1Manifest, decisionsV1Manifest, defineAppPackManifest, defineDomainPack, defineDomainPackAuthoringManifest, detectNamespaceCollisions, documentsV1Manifest, epistemicAlgorithmsV1Manifest, evaluateAppPackEnablement, evaluateCatalogEnablement, evaluatePackEnablement, getAppPackManifest, getDependencyClosure, getDomainPack, getShapingContribution, graphVisualizationV1Manifest, listAppPackManifests, listDomainPacks, listShapingContributions, newsV1Manifest, parseDomainPackAuthoringManifest, philosophyModeV1Manifest, previewDomainPackAuthoringManifest2 as previewDomainPackAuthoringManifest, previewDomainPackAuthoringManifestSource2 as previewDomainPackAuthoringManifestSource, publishDomainPackAuthoringManifest2 as publishDomainPackAuthoringManifest, publishDomainPackAuthoringManifestSource2 as publishDomainPackAuthoringManifestSource, resolvePackDependencyGraph, serializeDomainPackAuthoringManifest, taskManagementV1Manifest, teamAnalysisV1Manifest, themesV1Manifest, userProfilesV1Manifest, validateAppPackManifest, validateAppPackRegistry, validateDomainPack, validateDomainPackAuthoringManifest2 as validateDomainPackAuthoringManifest, validateDomainPackAuthoringManifestSource2 as validateDomainPackAuthoringManifestSource, validatePackNamespacePolicies, validatePackRegistry, validatePackSharedServiceContracts, validateShapingContribution, worktreesV1Manifest };
5851
- //# sourceMappingURL=index.js.map
5852
- //# sourceMappingURL=index.js.map
package/dist/lifecycle.js CHANGED
@@ -94,5 +94,3 @@ function evaluateCatalogEnablement(registry, policy = {}) {
94
94
  }
95
95
 
96
96
  export { evaluateCatalogEnablement, evaluatePackEnablement };
97
- //# sourceMappingURL=lifecycle.js.map
98
- //# sourceMappingURL=lifecycle.js.map
@@ -249,5 +249,3 @@ function validateAppPackManifest(manifest, dictionary) {
249
249
  }
250
250
 
251
251
  export { validateAppPackManifest };
252
- //# sourceMappingURL=manifestValidation.js.map
253
- //# sourceMappingURL=manifestValidation.js.map
@@ -94,5 +94,3 @@ var chatV1Manifest = defineAppPackManifest({
94
94
  });
95
95
 
96
96
  export { chatV1Manifest };
97
- //# sourceMappingURL=chat-v1.js.map
98
- //# sourceMappingURL=chat-v1.js.map
@@ -101,5 +101,3 @@ var dealsV1Manifest = defineAppPackManifest({
101
101
  });
102
102
 
103
103
  export { dealsV1Manifest };
104
- //# sourceMappingURL=deals-v1.js.map
105
- //# sourceMappingURL=deals-v1.js.map
@@ -106,5 +106,3 @@ var decisionsV1Manifest = defineAppPackManifest({
106
106
  });
107
107
 
108
108
  export { decisionsV1Manifest };
109
- //# sourceMappingURL=decisions-v1.js.map
110
- //# sourceMappingURL=decisions-v1.js.map
@@ -84,5 +84,3 @@ var documentsV1Manifest = defineAppPackManifest({
84
84
  });
85
85
 
86
86
  export { documentsV1Manifest };
87
- //# sourceMappingURL=documents-v1.js.map
88
- //# sourceMappingURL=documents-v1.js.map
@@ -108,5 +108,3 @@ var epistemicAlgorithmsV1Manifest = defineAppPackManifest({
108
108
  });
109
109
 
110
110
  export { epistemicAlgorithmsV1Manifest };
111
- //# sourceMappingURL=epistemic-algorithms-v1.js.map
112
- //# sourceMappingURL=epistemic-algorithms-v1.js.map
@@ -88,5 +88,3 @@ var graphVisualizationV1Manifest = defineAppPackManifest({
88
88
  });
89
89
 
90
90
  export { graphVisualizationV1Manifest };
91
- //# sourceMappingURL=graph-visualization-v1.js.map
92
- //# sourceMappingURL=graph-visualization-v1.js.map
@@ -1066,5 +1066,3 @@ var allAppPackManifests = [
1066
1066
  ];
1067
1067
 
1068
1068
  export { allAppPackManifests, chatV1Manifest, dealsV1Manifest, decisionsV1Manifest, documentsV1Manifest, epistemicAlgorithmsV1Manifest, graphVisualizationV1Manifest, newsV1Manifest, philosophyModeV1Manifest, taskManagementV1Manifest, teamAnalysisV1Manifest, themesV1Manifest, userProfilesV1Manifest, worktreesV1Manifest };
1069
- //# sourceMappingURL=index.js.map
1070
- //# sourceMappingURL=index.js.map
@@ -88,5 +88,3 @@ var newsV1Manifest = defineAppPackManifest({
88
88
  });
89
89
 
90
90
  export { newsV1Manifest };
91
- //# sourceMappingURL=news-v1.js.map
92
- //# sourceMappingURL=news-v1.js.map
@@ -94,5 +94,3 @@ var philosophyModeV1Manifest = defineAppPackManifest({
94
94
  });
95
95
 
96
96
  export { philosophyModeV1Manifest };
97
- //# sourceMappingURL=philosophy-mode-v1.js.map
98
- //# sourceMappingURL=philosophy-mode-v1.js.map
@@ -102,5 +102,3 @@ var worktreesV1Manifest = defineAppPackManifest({
102
102
  });
103
103
 
104
104
  export { worktreesV1Manifest };
105
- //# sourceMappingURL=sprints-v1.js.map
106
- //# sourceMappingURL=sprints-v1.js.map
@@ -94,5 +94,3 @@ var taskManagementV1Manifest = defineAppPackManifest({
94
94
  });
95
95
 
96
96
  export { taskManagementV1Manifest };
97
- //# sourceMappingURL=task-management-v1.js.map
98
- //# sourceMappingURL=task-management-v1.js.map
@@ -92,5 +92,3 @@ var teamAnalysisV1Manifest = defineAppPackManifest({
92
92
  });
93
93
 
94
94
  export { teamAnalysisV1Manifest };
95
- //# sourceMappingURL=team-analysis-v1.js.map
96
- //# sourceMappingURL=team-analysis-v1.js.map
@@ -110,5 +110,3 @@ var themesV1Manifest = defineAppPackManifest({
110
110
  });
111
111
 
112
112
  export { themesV1Manifest };
113
- //# sourceMappingURL=themes-v1.js.map
114
- //# sourceMappingURL=themes-v1.js.map
@@ -92,5 +92,3 @@ var userProfilesV1Manifest = defineAppPackManifest({
92
92
  });
93
93
 
94
94
  export { userProfilesV1Manifest };
95
- //# sourceMappingURL=user-profiles-v1.js.map
96
- //# sourceMappingURL=user-profiles-v1.js.map
package/dist/manifests.js CHANGED
@@ -1066,5 +1066,3 @@ var allAppPackManifests = [
1066
1066
  ];
1067
1067
 
1068
1068
  export { allAppPackManifests, chatV1Manifest, dealsV1Manifest, decisionsV1Manifest, documentsV1Manifest, epistemicAlgorithmsV1Manifest, graphVisualizationV1Manifest, newsV1Manifest, philosophyModeV1Manifest, taskManagementV1Manifest, teamAnalysisV1Manifest, themesV1Manifest, userProfilesV1Manifest, worktreesV1Manifest };
1069
- //# sourceMappingURL=manifests.js.map
1070
- //# sourceMappingURL=manifests.js.map
@@ -125,5 +125,3 @@ function validatePackNamespacePolicies(manifests) {
125
125
  }
126
126
 
127
127
  export { PACK_NAMESPACE_COLLISION_ALLOWLIST, detectNamespaceCollisions, validatePackNamespacePolicies };
128
- //# sourceMappingURL=namespacePolicy.js.map
129
- //# sourceMappingURL=namespacePolicy.js.map
@@ -41,5 +41,5 @@
41
41
  "convex-validators",
42
42
  "proof-attestation"
43
43
  ],
44
- "signedAt": 1782393429226
44
+ "signedAt": 1782411048730
45
45
  }
package/dist/registry.js CHANGED
@@ -1845,5 +1845,3 @@ function evaluateAppPackEnablement(policy = {}) {
1845
1845
  }
1846
1846
 
1847
1847
  export { appPackRegistry, evaluateAppPackEnablement, getAppPackManifest, getDependencyClosure, listAppPackManifests, validateAppPackRegistry };
1848
- //# sourceMappingURL=registry.js.map
1849
- //# sourceMappingURL=registry.js.map
package/dist/runtime.js CHANGED
@@ -658,5 +658,3 @@ function validatePackRegistry(manifests, dictionary) {
658
658
  }
659
659
 
660
660
  export { validatePackRegistry };
661
- //# sourceMappingURL=runtime.js.map
662
- //# sourceMappingURL=runtime.js.map
@@ -60,5 +60,3 @@ function validatePackSharedServiceContracts(manifests) {
60
60
  }
61
61
 
62
62
  export { validatePackSharedServiceContracts };
63
- //# sourceMappingURL=serviceContracts.js.map
64
- //# sourceMappingURL=serviceContracts.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lucern/pack-host",
3
- "version": "1.0.37",
3
+ "version": "1.0.38",
4
4
  "description": "Tenant-side pack host helpers and runtime registries for Lucern",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/contracts.ts"],"names":[],"mappings":";AA+HA,SAAS,qBAAqB,MAAA,EAA4B;AACxD,EAAA,MAAM,UAAA,GAAa,MAAA,CAChB,GAAA,CAAI,CAAC,UAAU,KAAA,CAAM,IAAA,EAAM,CAAA,CAC3B,MAAA,CAAO,CAAC,KAAA,KAAU,KAAA,CAAM,SAAS,CAAC,CAAA;AACrC,EAAA,OAAO,KAAA,CAAM,IAAA,CAAK,IAAI,GAAA,CAAI,UAAU,CAAC,CAAA;AACvC;AAEO,SAAS,sBACd,QAAA,EACiB;AACjB,EAAA,MAAM,kBAAkB,QAAA,CAAS,cAAA,IAAkB,EAAC,EAAG,GAAA,CAAI,CAAC,WAAA,MAAiB;AAAA,IAC3E,GAAG,WAAA;AAAA,IACH,SAAA,EAAW,oBAAA,CAAqB,WAAA,CAAY,SAAS;AAAA,GACvD,CAAE,CAAA;AAEF,EAAA,OAAO;AAAA,IACL,GAAG,QAAA;AAAA,IACH,YAAA,EAAc,oBAAA,CAAqB,QAAA,CAAS,YAAY,CAAA;AAAA,IACxD,eAAA,EAAiB,oBAAA,CAAqB,QAAA,CAAS,eAAe,CAAA;AAAA,IAC9D;AAAA,GACF;AACF","file":"contracts.js","sourcesContent":["/**\n * App Pack Contracts\n *\n * Canonical type contracts for Lucern app-pack manifests and runtime metadata.\n */\n\nexport type PackLifecycle = \"active\" | \"beta\" | \"experimental\";\n\nexport type PackCategory =\n | \"conversation\"\n | \"research\"\n | \"graph\"\n | \"analytics\"\n | \"workflow\"\n | \"decision\"\n | \"news\"\n | \"documents\"\n | \"identity\"\n | \"operations\"\n | \"domain\";\n\nexport type PackAudience = string;\n\nexport type PolicyAction = \"read\" | \"summarize\" | \"export\" | \"mutate\" | \"admin\";\n\nexport type PolicyResource =\n | \"project\"\n | \"node\"\n | \"edge\"\n | \"artifact\"\n | \"report_section\"\n | \"tool_action\"\n | \"task\"\n | \"user_profile\"\n | \"team_analytics\";\n\nexport type ProjectionBehavior =\n | \"none\"\n | \"inherits_policy\"\n | \"projection_required\";\n\nexport type PackRuntimeStage =\n | \"registered\"\n | \"validated\"\n | \"installed\"\n | \"enabled\"\n | \"degraded\"\n | \"disabled\"\n | \"removed\";\n\nexport type SharedService =\n | \"decision-kernel\"\n | \"knowledge-compiler\"\n | \"learning-loop\";\n\nexport type SharedServiceMode = \"required\" | \"optional\";\n\nexport interface RouteNamespace {\n api: string[];\n web: string[];\n}\n\nexport interface SurfaceOwnership {\n components: string[];\n convex: string[];\n tools: string[];\n}\n\nexport interface PolicyRule {\n actions: PolicyAction[];\n notes?: string;\n resource: PolicyResource;\n}\n\nexport interface PolicyProfile {\n audiences: PackAudience[];\n rules: PolicyRule[];\n}\n\nexport interface DataContract {\n projectionBehavior: ProjectionBehavior;\n requiredEdgeTypes: string[];\n requiredNodeTypes: string[];\n requiredTables: string[];\n}\n\nexport interface TemplateAssets {\n prompts: string[];\n reports: string[];\n uiLabels: string[];\n workflows: string[];\n}\n\nexport interface PackTestSuite {\n contract: string[];\n parity: string[];\n policy: string[];\n}\n\nexport interface SharedServiceIntegration {\n contracts: string[];\n mode: SharedServiceMode;\n service: SharedService;\n}\n\nexport interface AppPackManifest {\n capabilityFlags: string[];\n category: PackCategory;\n dataContract: DataContract;\n dependencies: string[];\n description: string;\n key: string;\n lifecycle: PackLifecycle;\n name: string;\n policyProfile: PolicyProfile;\n routeNamespace: RouteNamespace;\n sharedServices: SharedServiceIntegration[];\n surfaces: SurfaceOwnership;\n templates: TemplateAssets;\n testSuite: PackTestSuite;\n version: string;\n}\n\ntype AppPackManifestInput = Omit<AppPackManifest, \"sharedServices\"> & {\n sharedServices?: SharedServiceIntegration[];\n};\n\nfunction normalizeStringArray(values: string[]): string[] {\n const normalized = values\n .map((value) => value.trim())\n .filter((value) => value.length > 0);\n return Array.from(new Set(normalized));\n}\n\nexport function defineAppPackManifest(\n manifest: AppPackManifestInput\n): AppPackManifest {\n const sharedServices = (manifest.sharedServices ?? []).map((integration) => ({\n ...integration,\n contracts: normalizeStringArray(integration.contracts),\n }));\n\n return {\n ...manifest,\n dependencies: normalizeStringArray(manifest.dependencies),\n capabilityFlags: normalizeStringArray(manifest.capabilityFlags),\n sharedServices,\n };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../convex.config.ts"],"names":[],"mappings":";;;AAEA,IAAM,SAAA,GAAY,gBAAgB,WAAW,CAAA;AAE7C,IAAO,qBAAA,GAAQ","file":"convex.config.js","sourcesContent":["import { defineComponent } from \"convex/server\";\n\nconst component = defineComponent(\"pack-host\");\n\nexport default component;\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/dependencyResolution.ts"],"names":[],"mappings":"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","file":"dependencyResolution.js","sourcesContent":["// biome-ignore-all lint/style/useFilenamingConvention: Legacy public @lucern/pack-host/dependencyResolution subpath.\n/**\n * Pack Dependency Resolution\n *\n * Dependency-graph validation and deterministic activation ordering.\n */\n\nimport type { AppPackManifest } from \"./contracts\";\nimport type { PackValidationIssue } from \"./manifestValidation\";\n\nexport interface PackDependencyResolutionResult {\n dependencyClosureByPack: Record<string, string[]>;\n issues: PackValidationIssue[];\n orderedPackKeys: string[];\n valid: boolean;\n}\n\ninterface PackDependencyGraph {\n adjacency: Map<string, string[]>;\n indegree: Map<string, number>;\n manifestsByKey: Map<string, AppPackManifest>;\n}\n\nfunction toIssue(\n code: string,\n message: string,\n path: string,\n severity: \"error\" | \"warning\" = \"error\"\n): PackValidationIssue {\n return {\n code,\n severity,\n message,\n path,\n };\n}\n\nfunction buildManifestMap(\n manifests: AppPackManifest[]\n): Map<string, AppPackManifest> {\n return new Map(manifests.map((manifest) => [manifest.key, manifest]));\n}\n\nfunction initializeDependencyGraph(\n manifests: AppPackManifest[]\n): PackDependencyGraph {\n const manifestsByKey = buildManifestMap(manifests);\n const indegree = new Map<string, number>();\n const adjacency = new Map<string, string[]>();\n\n for (const manifest of manifests) {\n indegree.set(manifest.key, indegree.get(manifest.key) ?? 0);\n adjacency.set(manifest.key, []);\n }\n\n return { adjacency, indegree, manifestsByKey };\n}\n\nfunction linkPackDependency(\n manifest: AppPackManifest,\n dependency: string,\n graph: PackDependencyGraph,\n issues: PackValidationIssue[]\n): void {\n if (!graph.manifestsByKey.has(dependency)) {\n issues.push(\n toIssue(\n \"PACK_DEPENDENCY_MISSING\",\n `Pack \"${manifest.key}\" depends on unknown pack \"${dependency}\".`,\n `dependencies:${manifest.key}`\n )\n );\n return;\n }\n\n const dependencyDependents = graph.adjacency.get(dependency) ?? [];\n dependencyDependents.push(manifest.key);\n graph.adjacency.set(dependency, dependencyDependents);\n graph.indegree.set(manifest.key, (graph.indegree.get(manifest.key) ?? 0) + 1);\n}\n\nfunction linkPackDependencies(\n manifests: AppPackManifest[],\n graph: PackDependencyGraph,\n issues: PackValidationIssue[]\n): void {\n for (const manifest of manifests) {\n for (const dependency of manifest.dependencies) {\n linkPackDependency(manifest, dependency, graph, issues);\n }\n }\n}\n\nfunction topologicalPackOrder(graph: PackDependencyGraph): string[] {\n const queue = [...graph.indegree.entries()]\n .filter(([, value]) => value === 0)\n .map(([packKey]) => packKey)\n .sort();\n\n const orderedPackKeys: string[] = [];\n while (queue.length > 0) {\n const nextKey = queue.shift();\n if (!nextKey) {\n break;\n }\n\n orderedPackKeys.push(nextKey);\n const dependents = graph.adjacency.get(nextKey) ?? [];\n for (const dependent of dependents) {\n const updated = (graph.indegree.get(dependent) ?? 0) - 1;\n graph.indegree.set(dependent, updated);\n if (updated === 0) {\n queue.push(dependent);\n }\n }\n queue.sort();\n }\n\n return orderedPackKeys;\n}\n\nfunction recordUnresolvedDependencyCycles(\n orderedPackKeys: string[],\n graph: PackDependencyGraph,\n issues: PackValidationIssue[]\n): void {\n if (orderedPackKeys.length === graph.manifestsByKey.size) {\n return;\n }\n\n const unresolved = [...graph.indegree.entries()]\n .filter(([, value]) => value > 0)\n .map(([key]) => key)\n .sort();\n\n issues.push(\n toIssue(\n \"PACK_DEPENDENCY_CYCLE\",\n `Dependency graph is not acyclic; unresolved packs: ${unresolved.join(\", \")}`,\n \"dependencies\"\n )\n );\n}\n\nfunction walkDependencyClosure(\n manifestKey: string,\n manifestsByKey: Map<string, AppPackManifest>,\n path: string[],\n closure: Set<string>,\n issues: PackValidationIssue[]\n): void {\n const manifest = manifestsByKey.get(manifestKey);\n if (!manifest) {\n return;\n }\n\n for (const dependency of manifest.dependencies) {\n if (!manifestsByKey.has(dependency)) {\n issues.push(\n toIssue(\n \"PACK_DEPENDENCY_MISSING\",\n `Pack \"${manifestKey}\" depends on unknown pack \"${dependency}\".`,\n `dependencies:${manifestKey}`\n )\n );\n continue;\n }\n\n if (path.includes(dependency)) {\n const cycle = [...path, dependency].join(\" -> \");\n issues.push(\n toIssue(\n \"PACK_DEPENDENCY_CYCLE\",\n `Cycle detected: ${cycle}`,\n `dependencies:${manifestKey}`\n )\n );\n continue;\n }\n\n if (closure.has(dependency)) {\n continue;\n }\n\n closure.add(dependency);\n walkDependencyClosure(\n dependency,\n manifestsByKey,\n [...path, dependency],\n closure,\n issues\n );\n }\n}\n\nfunction dependencyClosureByPack(\n manifests: AppPackManifest[],\n manifestsByKey: Map<string, AppPackManifest>,\n issues: PackValidationIssue[]\n): Record<string, string[]> {\n const dependencyClosure: Record<string, string[]> = {};\n for (const manifest of manifests) {\n const closure = new Set<string>();\n walkDependencyClosure(\n manifest.key,\n manifestsByKey,\n [manifest.key],\n closure,\n issues\n );\n dependencyClosure[manifest.key] = [...closure].sort();\n }\n return dependencyClosure;\n}\n\nexport function resolvePackDependencyGraph(\n manifests: AppPackManifest[]\n): PackDependencyResolutionResult {\n const issues: PackValidationIssue[] = [];\n const graph = initializeDependencyGraph(manifests);\n linkPackDependencies(manifests, graph, issues);\n const orderedPackKeys = topologicalPackOrder(graph);\n recordUnresolvedDependencyCycles(orderedPackKeys, graph, issues);\n\n return {\n orderedPackKeys,\n dependencyClosureByPack: dependencyClosureByPack(\n manifests,\n graph.manifestsByKey,\n issues\n ),\n issues,\n valid: issues.every((issue) => issue.severity !== \"error\"),\n };\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/domain-pack/contracts.ts","../../src/domain-pack/authoring.core.ts"],"names":["dedupeStrings","normalizeRuntimeTargets"],"mappings":"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","file":"authoring.core.js","sourcesContent":["/**\n * Domain Pack Contracts\n *\n * A DomainPack is a self-contained reasoning context bundle that defines\n * how reasoning works in a specific domain. It binds ontology versions,\n * defines topic structure, declares workflow templates, gate schemas,\n * artifact schemas, and reasoning roles.\n *\n * This is the THIRD pack type in Lucern's architecture:\n * - AppPackManifest: UI routes, surfaces, policy profiles (app-level)\n * - MethodologyPack: Agent workflow phases, gates, enforcement (process-level)\n * - DomainPack: Reasoning domain context (domain-level)\n *\n * All fields are internal until RS-5+ external authoring certification.\n */\n\n// ---------------------------------------------------------------------------\n// Ontology Binding — ties a pack to specific ontology versions\n// ---------------------------------------------------------------------------\n\nexport type OntologyProvisionMode = \"bind\" | \"seed\" | \"extend\";\n\nexport interface OntologyBinding {\n ontologyId: string;\n provisionMode?: OntologyProvisionMode;\n required: boolean;\n requiredEdgeTypes?: string[];\n requiredEntityTypes?: string[];\n seedRef?: string;\n versionConstraint: string; // semver range, e.g., \"^1.0.0\"\n}\n\n// ---------------------------------------------------------------------------\n// Topic Root — defines the domain's top-level topic tree structure\n// ---------------------------------------------------------------------------\n\nexport interface TopicRoot {\n description: string;\n name: string;\n ontologyId?: string; // which ontology governs this root\n slug: string;\n}\n\n// ---------------------------------------------------------------------------\n// Workflow Template — shape of a workflow (not execution logic)\n// ---------------------------------------------------------------------------\n\nexport interface WorkflowStep {\n description: string;\n gateId?: string; // gate checked after this step\n name: string;\n produces?: string[]; // artifactId references\n requiredRoles: string[]; // roleId references\n stepId: string;\n}\n\nexport interface WorkflowTemplate {\n description: string;\n gateCheckpoints: string[]; // gateId references\n name: string;\n requiredArtifacts: string[]; // artifactId references\n steps: WorkflowStep[];\n workflowId: string;\n}\n\n// ---------------------------------------------------------------------------\n// Gate Schema — declarative description of what must be true\n// ---------------------------------------------------------------------------\n\nexport type GateCriterionOperator = \"gte\" | \"lte\" | \"eq\" | \"gt\" | \"lt\";\n\nexport interface GateCriterion {\n criterionId: string;\n description: string;\n metric: string;\n operator?: GateCriterionOperator;\n threshold?: number;\n}\n\nexport type GateSeverity = \"blocking\" | \"warning\" | \"informational\";\n\nexport interface GateSchema {\n criteria: GateCriterion[];\n description: string;\n gateId: string;\n name: string;\n severity: GateSeverity;\n}\n\n// ---------------------------------------------------------------------------\n// Artifact Schema — what artifacts workflows produce\n// ---------------------------------------------------------------------------\n\nexport interface ArtifactSchema {\n artifactId: string;\n contentSchema: Record<string, unknown>; // JSON Schema for content\n description: string;\n name: string;\n requiredFields: string[];\n stage: string; // workflow step that produces this\n}\n\n// ---------------------------------------------------------------------------\n// Reasoning Role — epistemic actors in the domain\n// ---------------------------------------------------------------------------\n\nexport interface ReasoningRole {\n description: string;\n mayBlock: boolean; // Epistemic Invariant #13: agents may block progress\n name: string;\n optimizesFor: string;\n perspective: string;\n roleId: string;\n}\n\n// ---------------------------------------------------------------------------\n// Inquiry Shaping — pack-level hooks for RS-3 auto-shaping\n// ---------------------------------------------------------------------------\n\nexport interface InquiryShapingQuestionTemplate {\n priority?: \"critical\" | \"high\" | \"medium\" | \"low\";\n questionType:\n | \"validation\"\n | \"falsification\"\n | \"assumption_probe\"\n | \"counterfactual\"\n | \"scope\"\n | \"comparison\"\n | \"mechanism\"\n | \"general\";\n template: string; // Supports {{objective}} and {{hypothesis}}\n templateId: string;\n whenObjectiveIncludes?: string[];\n}\n\nexport interface InquiryShapingTaskTemplate {\n description?: string; // Supports {{objective}} and {{hypothesis}}\n priority?: \"urgent\" | \"high\" | \"medium\" | \"low\";\n taskType?:\n | \"general\"\n | \"find_evidence\"\n | \"verify_claim\"\n | \"research\"\n | \"review\"\n | \"interview\"\n | \"analysis\"\n | \"track_metrics\";\n templateId: string;\n title: string; // Supports {{objective}} and {{hypothesis}}\n whenObjectiveIncludes?: string[];\n whenQuestionTypes?: string[];\n}\n\nexport interface InquiryShapingFrameworkHint {\n boost?: number;\n frameworkName: string;\n reason?: string;\n whenObjectiveIncludes?: string[];\n whenQuestionTypes?: string[];\n}\n\nexport interface InquiryShapingConfig {\n frameworkHints?: InquiryShapingFrameworkHint[];\n questionTemplates?: InquiryShapingQuestionTemplate[];\n taskTemplates?: InquiryShapingTaskTemplate[];\n}\n\n// ---------------------------------------------------------------------------\n// Operating System Layer — prompts, tools, topic bootstrap, install surfaces\n// ---------------------------------------------------------------------------\n\nexport type RuntimeTarget = \"claude-code\" | \"codex\" | \"hybrid\" | \"portable\";\n\nexport type PromptSource = \"langfuse\" | \"file\";\nexport type PromptChannel =\n | \"bootstrap\"\n | \"workflow\"\n | \"analysis\"\n | \"review\"\n | \"tool\";\n\nexport interface PromptBinding {\n channel: PromptChannel;\n description: string;\n fallbackRef?: string;\n promptId: string;\n ref: string;\n required: boolean;\n runtimeTargets?: RuntimeTarget[];\n source: PromptSource;\n}\n\nexport type ToolKind = \"mcp\" | \"cli\" | \"script\" | \"hook\" | \"ai-tool\";\n\nexport interface ToolBinding {\n description: string;\n entrypoint: string;\n kind: ToolKind;\n required: boolean;\n runtimeTargets?: RuntimeTarget[];\n toolId: string;\n}\n\nexport type SetupAssetKind =\n | \"instruction\"\n | \"settings\"\n | \"hook\"\n | \"skill\"\n | \"agent\"\n | \"manifest\"\n | \"template\"\n | \"inbox\"\n | \"script\"\n | \"ui\";\n\nexport interface SetupAsset {\n assetId: string;\n description: string;\n kind: SetupAssetKind;\n path: string;\n required: boolean;\n runtimeTargets?: RuntimeTarget[];\n}\n\nexport interface TopicTemplate {\n description: string;\n name: string;\n ontologyId?: string;\n parentSlug?: string;\n slug: string;\n}\n\nexport interface InstallProfile {\n assetIds: string[];\n defaultTopicSlugs: string[];\n description: string;\n name: string;\n profileId: string;\n promptIds: string[];\n runtimeTarget: RuntimeTarget;\n toolIds: string[];\n}\n\nexport interface OperatingSystemLayer {\n installProfiles?: InstallProfile[];\n prompts?: PromptBinding[];\n setupAssets?: SetupAsset[];\n tools?: ToolBinding[];\n topicTemplates?: TopicTemplate[];\n}\n\n// ---------------------------------------------------------------------------\n// Domain Pack — the top-level contract\n// ---------------------------------------------------------------------------\n\nexport interface DomainPack {\n // Composition — optional references to other pack types\n appPackKeys?: string[]; // AppPackManifest keys this domain uses\n\n // Artifact Schemas\n artifacts: ArtifactSchema[];\n\n // Gate Schemas\n gates: GateSchema[];\n\n // Inquiry shaping hooks\n inquiryShaping?: InquiryShapingConfig;\n methodologyPackId?: string; // MethodologyPack for agent behavior\n name: string;\n\n // Scope\n ontologyBindings: OntologyBinding[];\n\n // Runtime/install packaging layer\n operatingSystem?: OperatingSystemLayer;\n // Identity\n packId: string;\n\n // Reasoning Roles\n roles: ReasoningRole[];\n topicRoots: TopicRoot[];\n version: string; // semver\n\n // Workflow Templates\n workflows: WorkflowTemplate[];\n}\n\n// ---------------------------------------------------------------------------\n// Builder helper — normalizes arrays and validates basic structure\n// ---------------------------------------------------------------------------\n\nfunction dedupeStrings(values: string[]): string[] {\n return Array.from(\n new Set(values.map((v) => v.trim()).filter((v) => v.length > 0))\n );\n}\n\nexport type DomainPackInput = Omit<DomainPack, \"appPackKeys\"> & {\n appPackKeys?: string[];\n};\n\nfunction normalizeRuntimeTargets(\n values: RuntimeTarget[] | undefined\n): RuntimeTarget[] | undefined {\n return values ? (dedupeStrings(values) as RuntimeTarget[]) : undefined;\n}\n\nfunction normalizeOntologyBinding(binding: OntologyBinding): OntologyBinding {\n return {\n ...binding,\n requiredEntityTypes: binding.requiredEntityTypes\n ? dedupeStrings(binding.requiredEntityTypes)\n : undefined,\n requiredEdgeTypes: binding.requiredEdgeTypes\n ? dedupeStrings(binding.requiredEdgeTypes)\n : undefined,\n };\n}\n\nfunction normalizeOperatingSystem(\n layer: OperatingSystemLayer | undefined\n): OperatingSystemLayer | undefined {\n if (!layer) {\n return;\n }\n\n return {\n prompts: layer.prompts?.map((prompt) => ({\n ...prompt,\n runtimeTargets: normalizeRuntimeTargets(prompt.runtimeTargets),\n })),\n tools: layer.tools?.map((tool) => ({\n ...tool,\n runtimeTargets: normalizeRuntimeTargets(tool.runtimeTargets),\n })),\n setupAssets: layer.setupAssets?.map((asset) => ({\n ...asset,\n runtimeTargets: normalizeRuntimeTargets(asset.runtimeTargets),\n })),\n topicTemplates: layer.topicTemplates,\n installProfiles: layer.installProfiles?.map((profile) => ({\n ...profile,\n promptIds: dedupeStrings(profile.promptIds),\n toolIds: dedupeStrings(profile.toolIds),\n assetIds: dedupeStrings(profile.assetIds),\n defaultTopicSlugs: dedupeStrings(profile.defaultTopicSlugs),\n })),\n };\n}\n\nexport function defineDomainPack(input: DomainPackInput): DomainPack {\n return {\n ...input,\n ontologyBindings: input.ontologyBindings.map(normalizeOntologyBinding),\n appPackKeys: input.appPackKeys\n ? dedupeStrings(input.appPackKeys)\n : undefined,\n operatingSystem: normalizeOperatingSystem(input.operatingSystem),\n workflows: input.workflows.map((w) => ({\n ...w,\n requiredArtifacts: dedupeStrings(w.requiredArtifacts),\n gateCheckpoints: dedupeStrings(w.gateCheckpoints),\n steps: w.steps.map((s) => ({\n ...s,\n requiredRoles: dedupeStrings(s.requiredRoles),\n produces: s.produces ? dedupeStrings(s.produces) : undefined,\n })),\n })),\n };\n}\n","/**\n * Domain Pack Authoring Kit\n *\n * Config-first authoring surface for tenant-authored domain packs. This layer\n * wraps the internal DomainPack contract in a stable manifest envelope with\n * framework versioning, schema and ontology extension contracts, remix/fork\n * lineage, and tool-shaped validate/preview/publish handlers.\n */\n\nimport type { DomainPack, DomainPackInput, RuntimeTarget } from \"./contracts\";\nimport { defineDomainPack } from \"./contracts\";\nimport type { DomainPackValidationIssue } from \"./validation\";\n\nexport type { RuntimeTarget } from \"./contracts\";\n\nexport const DOMAIN_PACK_MANIFEST_KIND = \"lucern-domain-pack-manifest\" as const;\nconst CURRENT_MANIFEST_VERSION = \"1.0.0\";\nconst YAML_NUMERIC_SCALAR = /^-?\\d+(?:\\.\\d+)?$/;\n\nexport type DomainPackManifestFormat = \"json\" | \"yaml\";\n\nexport interface DomainPackFrameworkContract {\n frameworkId: string;\n required?: boolean;\n runtimeTargets?: RuntimeTarget[];\n version: string;\n versionConstraint?: string;\n}\n\nexport type DomainPackSchemaExtensionTarget =\n | \"artifact\"\n | \"workflow\"\n | \"gate\"\n | \"prompt\"\n | \"tool\"\n | \"install-profile\"\n | \"topic-template\";\n\nexport interface DomainPackSchemaExtension {\n description: string;\n extends?: string;\n extensionId: string;\n schema: Record<string, unknown>;\n target: DomainPackSchemaExtensionTarget;\n version: string;\n}\n\nexport interface DomainPackOntologyEntityExtension {\n description?: string;\n label: string;\n schema?: Record<string, unknown>;\n subtypes?: string[];\n value: string;\n}\n\nexport interface DomainPackOntologyEdgeExtension {\n constraintSeverity?: \"error\" | \"warning\" | \"informational\";\n description?: string;\n label: string;\n sourceTypes?: string[];\n targetTypes?: string[];\n value: string;\n}\n\nexport interface DomainPackOntologyExtension {\n additiveOnly: boolean;\n baseVersionConstraint: string;\n edgeTypes?: DomainPackOntologyEdgeExtension[];\n entityTypes?: DomainPackOntologyEntityExtension[];\n extensionId: string;\n ontologyId: string;\n}\n\nexport type DomainPackLineageMode = \"root\" | \"remix\" | \"fork\";\n\nexport interface DomainPackLineage {\n mode: DomainPackLineageMode;\n notes?: string;\n parentManifestDigest?: string;\n parentPackId?: string;\n parentVersion?: string;\n supersedesPackId?: string;\n}\n\nexport interface DomainPackAuthoringMetadata {\n description?: string;\n owner?: string;\n tags?: string[];\n}\n\nexport interface DomainPackAuthoringManifest {\n frameworks?: DomainPackFrameworkContract[];\n kind: typeof DOMAIN_PACK_MANIFEST_KIND;\n lineage: DomainPackLineage;\n manifestVersion: string;\n metadata?: DomainPackAuthoringMetadata;\n ontologyExtensions?: DomainPackOntologyExtension[];\n pack: DomainPack;\n schemaExtensions?: DomainPackSchemaExtension[];\n}\n\nexport interface DomainPackAuthoringManifestInput {\n frameworks?: DomainPackFrameworkContract[];\n kind?: typeof DOMAIN_PACK_MANIFEST_KIND;\n lineage?: DomainPackLineage;\n manifestVersion?: string;\n metadata?: DomainPackAuthoringMetadata;\n ontologyExtensions?: DomainPackOntologyExtension[];\n pack: DomainPack | DomainPackInput;\n schemaExtensions?: DomainPackSchemaExtension[];\n}\n\nexport type DomainPackAuthoringValidationIssue = DomainPackValidationIssue & {\n source:\n | \"manifest\"\n | \"pack\"\n | \"framework\"\n | \"schema-extension\"\n | \"ontology-extension\"\n | \"lineage\"\n | \"terminology\"\n | \"parse\";\n};\n\nexport interface DomainPackManifestCounts {\n artifacts: number;\n frameworks: number;\n gates: number;\n installProfiles: number;\n ontologyExtensions: number;\n prompts: number;\n roles: number;\n schemaExtensions: number;\n setupAssets: number;\n tools: number;\n topicRoots: number;\n workflows: number;\n}\n\nexport interface DomainPackAuthoringValidationResult {\n counts: DomainPackManifestCounts;\n format: DomainPackManifestFormat | null;\n issues: DomainPackAuthoringValidationIssue[];\n manifest: DomainPackAuthoringManifest | null;\n manifestDigest: string | null;\n valid: boolean;\n}\n\nexport type DomainPackAuthoringPreview = DomainPackAuthoringValidationResult & {\n readyToPublish: boolean;\n canonicalJson: string | null;\n canonicalYaml: string | null;\n lineageSummary: string | null;\n requiredRuntimeTargets: RuntimeTarget[];\n};\n\nexport interface DomainPackPublicationLineageEdge {\n childPackId: string;\n edgeType: \"remixed_from\" | \"supersedes\";\n parentPackId: string;\n parentVersion: string;\n}\n\nexport interface DomainPackPublication {\n canonicalJson: string;\n canonicalYaml: string;\n lineageEdge: DomainPackPublicationLineageEdge | null;\n manifest: DomainPackAuthoringManifest;\n manifestDigest: string;\n packId: string;\n publicationId: string;\n version: string;\n}\n\nexport interface DomainPackPublishResult {\n preview: DomainPackAuthoringPreview;\n publication: DomainPackPublication | null;\n published: boolean;\n}\n\nexport interface DomainPackAuthoringToolInput {\n format?: DomainPackManifestFormat;\n manifestText: string;\n}\n\nexport interface DomainPackAuthoringToolDefinition<Result> {\n description: string;\n execute: (args: DomainPackAuthoringToolInput) => Result;\n inputSchema: Record<string, unknown>;\n name:\n | \"validate_domain_pack_manifest\"\n | \"preview_domain_pack_manifest\"\n | \"publish_domain_pack_manifest\";\n}\n\nexport interface DomainPackAuthoringToolset {\n preview: DomainPackAuthoringToolDefinition<DomainPackAuthoringPreview>;\n publish: DomainPackAuthoringToolDefinition<DomainPackPublishResult>;\n validate: DomainPackAuthoringToolDefinition<DomainPackAuthoringValidationResult>;\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return (\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value) &&\n Object.getPrototypeOf(value) === Object.prototype\n );\n}\n\nfunction dedupeStrings(values: string[] | undefined): string[] | undefined {\n if (!values) {\n return;\n }\n return Array.from(\n new Set(values.map((value) => value.trim()).filter((value) => value.length))\n );\n}\n\nfunction normalizeRuntimeTargets(\n values: RuntimeTarget[] | undefined\n): RuntimeTarget[] | undefined {\n return values ? (dedupeStrings(values) as RuntimeTarget[]) : undefined;\n}\n\nfunction normalizeFrameworks(\n frameworks: DomainPackFrameworkContract[] | undefined\n): DomainPackFrameworkContract[] | undefined {\n if (!frameworks) {\n return;\n }\n\n return frameworks.map((framework) => ({\n ...framework,\n frameworkId: framework.frameworkId.trim(),\n version: framework.version.trim(),\n versionConstraint: framework.versionConstraint?.trim(),\n runtimeTargets: normalizeRuntimeTargets(framework.runtimeTargets),\n }));\n}\n\nfunction normalizeSchemaExtensions(\n extensions: DomainPackSchemaExtension[] | undefined\n): DomainPackSchemaExtension[] | undefined {\n if (!extensions) {\n return;\n }\n\n return extensions.map((extension) => ({\n ...extension,\n extensionId: extension.extensionId.trim(),\n target: extension.target,\n description: extension.description.trim(),\n version: extension.version.trim(),\n extends: extension.extends?.trim(),\n }));\n}\n\nfunction normalizeOntologyExtensions(\n extensions: DomainPackOntologyExtension[] | undefined\n): DomainPackOntologyExtension[] | undefined {\n if (!extensions) {\n return;\n }\n\n return extensions.map((extension) => ({\n ...extension,\n extensionId: extension.extensionId.trim(),\n ontologyId: extension.ontologyId.trim(),\n baseVersionConstraint: extension.baseVersionConstraint.trim(),\n entityTypes: extension.entityTypes?.map((entityType) => ({\n ...entityType,\n value: entityType.value.trim(),\n label: entityType.label.trim(),\n description: entityType.description?.trim(),\n subtypes: dedupeStrings(entityType.subtypes),\n })),\n edgeTypes: extension.edgeTypes?.map((edgeType) => ({\n ...edgeType,\n value: edgeType.value.trim(),\n label: edgeType.label.trim(),\n description: edgeType.description?.trim(),\n sourceTypes: dedupeStrings(edgeType.sourceTypes),\n targetTypes: dedupeStrings(edgeType.targetTypes),\n })),\n }));\n}\n\nfunction normalizeLineage(\n lineage: DomainPackLineage | undefined\n): DomainPackLineage {\n if (!lineage) {\n return { mode: \"root\" };\n }\n\n return {\n mode: lineage.mode,\n parentPackId: lineage.parentPackId?.trim(),\n parentVersion: lineage.parentVersion?.trim(),\n parentManifestDigest: lineage.parentManifestDigest?.trim(),\n supersedesPackId: lineage.supersedesPackId?.trim(),\n notes: lineage.notes?.trim(),\n };\n}\n\nfunction normalizeMetadata(\n metadata: DomainPackAuthoringMetadata | undefined\n): DomainPackAuthoringMetadata | undefined {\n if (!metadata) {\n return;\n }\n\n return {\n description: metadata.description?.trim(),\n owner: metadata.owner?.trim(),\n tags: dedupeStrings(metadata.tags),\n };\n}\n\nfunction toDomainPack(pack: DomainPack | DomainPackInput): DomainPack {\n return defineDomainPack(pack as DomainPackInput);\n}\n\nexport function defineDomainPackAuthoringManifest(\n input: DomainPackAuthoringManifestInput\n): DomainPackAuthoringManifest {\n return {\n kind: input.kind ?? DOMAIN_PACK_MANIFEST_KIND,\n manifestVersion: input.manifestVersion?.trim() || CURRENT_MANIFEST_VERSION,\n pack: toDomainPack(input.pack),\n frameworks: normalizeFrameworks(input.frameworks),\n schemaExtensions: normalizeSchemaExtensions(input.schemaExtensions),\n ontologyExtensions: normalizeOntologyExtensions(input.ontologyExtensions),\n lineage: normalizeLineage(input.lineage),\n metadata: normalizeMetadata(input.metadata),\n };\n}\n\nexport function countManifestArtifacts(\n manifest: DomainPackAuthoringManifest | null\n): DomainPackManifestCounts {\n if (!manifest) {\n return {\n topicRoots: 0,\n workflows: 0,\n gates: 0,\n artifacts: 0,\n roles: 0,\n prompts: 0,\n tools: 0,\n setupAssets: 0,\n installProfiles: 0,\n frameworks: 0,\n schemaExtensions: 0,\n ontologyExtensions: 0,\n };\n }\n\n return {\n topicRoots: manifest.pack.topicRoots.length,\n workflows: manifest.pack.workflows.length,\n gates: manifest.pack.gates.length,\n artifacts: manifest.pack.artifacts.length,\n roles: manifest.pack.roles.length,\n prompts: manifest.pack.operatingSystem?.prompts?.length ?? 0,\n tools: manifest.pack.operatingSystem?.tools?.length ?? 0,\n setupAssets: manifest.pack.operatingSystem?.setupAssets?.length ?? 0,\n installProfiles:\n manifest.pack.operatingSystem?.installProfiles?.length ?? 0,\n frameworks: manifest.frameworks?.length ?? 0,\n schemaExtensions: manifest.schemaExtensions?.length ?? 0,\n ontologyExtensions: manifest.ontologyExtensions?.length ?? 0,\n };\n}\n\nfunction sortJsonValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(sortJsonValue);\n }\n if (isPlainObject(value)) {\n return Object.fromEntries(\n Object.entries(value)\n .filter(([, entryValue]) => entryValue !== undefined)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, entryValue]) => [key, sortJsonValue(entryValue)])\n );\n }\n return value;\n}\n\nfunction toYamlScalar(value: unknown): string {\n if (value === null) {\n return \"null\";\n }\n if (typeof value === \"boolean\" || typeof value === \"number\") {\n return String(value);\n }\n return JSON.stringify(String(value));\n}\n\nfunction renderYaml(value: unknown, indent = 0): string[] {\n const prefix = \" \".repeat(indent);\n\n if (Array.isArray(value)) {\n if (value.length === 0) {\n return [`${prefix}[]`];\n }\n return value.flatMap((entry) => {\n if (Array.isArray(entry) || isPlainObject(entry)) {\n return [`${prefix}-`, ...renderYaml(entry, indent + 2)];\n }\n return [`${prefix}- ${toYamlScalar(entry)}`];\n });\n }\n\n if (isPlainObject(value)) {\n const entries = Object.entries(value);\n if (entries.length === 0) {\n return [`${prefix}{}`];\n }\n return entries.flatMap(([key, entryValue]) => {\n if (entryValue === undefined) {\n return [];\n }\n if (Array.isArray(entryValue)) {\n if (entryValue.length === 0) {\n return [`${prefix}${key}: []`];\n }\n return [`${prefix}${key}:`, ...renderYaml(entryValue, indent + 2)];\n }\n if (isPlainObject(entryValue)) {\n if (Object.keys(entryValue).length === 0) {\n return [`${prefix}${key}: {}`];\n }\n return [`${prefix}${key}:`, ...renderYaml(entryValue, indent + 2)];\n }\n return [`${prefix}${key}: ${toYamlScalar(entryValue)}`];\n });\n }\n\n return [`${prefix}${toYamlScalar(value)}`];\n}\n\nfunction countIndent(line: string): number {\n return line.length - line.trimStart().length;\n}\n\nfunction parseYamlScalar(raw: string): unknown {\n const value = raw.trim();\n if (value === \"null\") {\n return null;\n }\n if (value === \"true\") {\n return true;\n }\n if (value === \"false\") {\n return false;\n }\n if (YAML_NUMERIC_SCALAR.test(value)) {\n return Number(value);\n }\n if (\n (value.startsWith('\"') && value.endsWith('\"')) ||\n (value.startsWith(\"'\") && value.endsWith(\"'\"))\n ) {\n if (value.startsWith(\"'\")) {\n return value.slice(1, -1).replace(/''/g, \"'\");\n }\n return JSON.parse(value) as string;\n }\n if (value === \"[]\") {\n return [];\n }\n if (value === \"{}\") {\n return {};\n }\n return value;\n}\n\nfunction splitYamlKeyValue(trimmed: string): {\n key: string;\n value: string | null;\n} {\n const separatorIndex = trimmed.indexOf(\":\");\n if (separatorIndex === -1) {\n throw new Error(`Invalid YAML mapping entry: ${trimmed}`);\n }\n\n const key = trimmed.slice(0, separatorIndex).trim();\n const value = trimmed.slice(separatorIndex + 1).trim();\n return { key, value: value.length ? value : null };\n}\n\nfunction parseYamlDocument(text: string): unknown {\n const rawLines = text\n .replace(/\\r\\n/g, \"\\n\")\n .split(\"\\n\")\n .map((line) => line.replace(/\\t/g, \" \"));\n const lines = rawLines.filter((line) => {\n const trimmed = line.trim();\n return trimmed.length > 0 && trimmed !== \"---\" && trimmed !== \"...\";\n });\n\n let index = 0;\n\n function parseBlock(indent: number): unknown {\n if (index >= lines.length) {\n return {};\n }\n\n const currentLine = lines[index];\n const currentIndent = countIndent(currentLine);\n if (currentIndent < indent) {\n return {};\n }\n if (currentLine.trimStart().startsWith(\"-\")) {\n return parseArray(indent);\n }\n return parseObject(indent);\n }\n\n function parseArray(indent: number): unknown[] {\n const items: unknown[] = [];\n\n while (index < lines.length) {\n const line = lines[index];\n const currentIndent = countIndent(line);\n if (currentIndent < indent) {\n break;\n }\n if (currentIndent !== indent) {\n throw new Error(`Invalid YAML indentation near: ${line.trim()}`);\n }\n\n const trimmed = line.trimStart();\n if (!trimmed.startsWith(\"-\")) {\n break;\n }\n\n const rest = trimmed.slice(1).trimStart();\n index += 1;\n\n if (!rest.length) {\n items.push(parseBlock(indent + 2));\n continue;\n }\n\n items.push(parseYamlScalar(rest));\n }\n\n return items;\n }\n\n function parseObject(indent: number): Record<string, unknown> {\n const objectValue: Record<string, unknown> = {};\n\n while (index < lines.length) {\n const line = lines[index];\n const currentIndent = countIndent(line);\n if (currentIndent < indent) {\n break;\n }\n if (currentIndent !== indent) {\n throw new Error(`Invalid YAML indentation near: ${line.trim()}`);\n }\n\n const trimmed = line.trim();\n if (trimmed.startsWith(\"-\")) {\n break;\n }\n\n const { key, value } = splitYamlKeyValue(trimmed);\n index += 1;\n objectValue[key] =\n value === null ? parseBlock(indent + 2) : parseYamlScalar(value);\n }\n\n return objectValue;\n }\n\n return parseBlock(0);\n}\n\nfunction detectDomainPackManifestFormat(\n source: string,\n explicitFormat?: DomainPackManifestFormat\n): DomainPackManifestFormat {\n if (explicitFormat) {\n return explicitFormat;\n }\n\n const trimmed = source.trim();\n if (trimmed.startsWith(\"{\")) {\n return \"json\";\n }\n return \"yaml\";\n}\n\nexport function serializeDomainPackAuthoringManifest(\n manifest: DomainPackAuthoringManifest,\n format: DomainPackManifestFormat = \"json\"\n): string {\n const canonicalValue = sortJsonValue(manifest);\n if (format === \"json\") {\n return `${JSON.stringify(canonicalValue, null, 2)}\\n`;\n }\n return `${renderYaml(canonicalValue).join(\"\\n\")}\\n`;\n}\n\nexport function parseDomainPackAuthoringManifest(\n source: string,\n format?: DomainPackManifestFormat\n): DomainPackAuthoringManifest {\n const detectedFormat = detectDomainPackManifestFormat(source, format);\n const parsed =\n detectedFormat === \"json\"\n ? (JSON.parse(source) as unknown)\n : parseYamlDocument(source);\n\n if (!isPlainObject(parsed)) {\n throw new Error(\"Domain pack manifest must parse to an object.\");\n }\n\n if (!(\"pack\" in parsed)) {\n throw new Error(\"Domain pack manifest requires a top-level pack object.\");\n }\n\n return defineDomainPackAuthoringManifest({\n kind: parsed.kind as typeof DOMAIN_PACK_MANIFEST_KIND | undefined,\n manifestVersion: parsed.manifestVersion as string | undefined,\n pack: parsed.pack as DomainPackInput,\n frameworks: parsed.frameworks as DomainPackFrameworkContract[] | undefined,\n schemaExtensions: parsed.schemaExtensions as\n | DomainPackSchemaExtension[]\n | undefined,\n ontologyExtensions: parsed.ontologyExtensions as\n | DomainPackOntologyExtension[]\n | undefined,\n lineage: parsed.lineage as DomainPackLineage | undefined,\n metadata: parsed.metadata as DomainPackAuthoringMetadata | undefined,\n });\n}\n"]}