@shrkcrft/inspector 0.1.0-alpha.1 → 0.1.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. package/README.md +1 -1
  2. package/dist/adoption-state.js +1 -1
  3. package/dist/agent-brief.d.ts.map +1 -1
  4. package/dist/agent-brief.js +59 -10
  5. package/dist/agent-task-prep.d.ts.map +1 -1
  6. package/dist/agent-task-prep.js +1 -3
  7. package/dist/ai-readiness.d.ts +84 -9
  8. package/dist/ai-readiness.d.ts.map +1 -1
  9. package/dist/ai-readiness.js +161 -30
  10. package/dist/apply-dispatch-trace.d.ts +1 -2
  11. package/dist/apply-dispatch-trace.d.ts.map +1 -1
  12. package/dist/apply-dispatch-trace.js +0 -9
  13. package/dist/area-explore.d.ts.map +1 -1
  14. package/dist/area-explore.js +1 -5
  15. package/dist/area-map.d.ts +0 -19
  16. package/dist/area-map.d.ts.map +1 -1
  17. package/dist/area-map.js +0 -27
  18. package/dist/ci-permissions-fix.d.ts +1 -1
  19. package/dist/ci-permissions-fix.d.ts.map +1 -1
  20. package/dist/ci-permissions-fix.js +1 -182
  21. package/dist/code-intelligence-doctor.d.ts +21 -0
  22. package/dist/code-intelligence-doctor.d.ts.map +1 -0
  23. package/dist/code-intelligence-doctor.js +965 -0
  24. package/dist/compliance-profiles.js +1 -1
  25. package/dist/construct-adoption-diff.d.ts.map +1 -1
  26. package/dist/construct-adoption-diff.js +2 -1
  27. package/dist/construct-adoption.d.ts.map +1 -1
  28. package/dist/construct-adoption.js +10 -11
  29. package/dist/construct-inference.d.ts.map +1 -1
  30. package/dist/construct-inference.js +2 -1
  31. package/dist/construct-registry.d.ts.map +1 -1
  32. package/dist/construct-registry.js +2 -10
  33. package/dist/contract-template-registry.d.ts.map +1 -1
  34. package/dist/contract-template-registry.js +2 -10
  35. package/dist/convention-registry.d.ts.map +1 -1
  36. package/dist/convention-registry.js +2 -10
  37. package/dist/decision-records.d.ts.map +1 -1
  38. package/dist/decision-records.js +2 -9
  39. package/dist/demo-script.d.ts +0 -1
  40. package/dist/demo-script.d.ts.map +1 -1
  41. package/dist/demo-script.js +0 -43
  42. package/dist/docs-check.js +1 -1
  43. package/dist/drift-baseline.d.ts.map +1 -1
  44. package/dist/drift-baseline.js +5 -2
  45. package/dist/feedback-ingestion.d.ts.map +1 -1
  46. package/dist/feedback-ingestion.js +2 -16
  47. package/dist/git-helpers.d.ts +0 -12
  48. package/dist/git-helpers.d.ts.map +1 -1
  49. package/dist/git-helpers.js +0 -63
  50. package/dist/helper-registry.d.ts +27 -54
  51. package/dist/helper-registry.d.ts.map +1 -1
  52. package/dist/helper-registry.js +16 -517
  53. package/dist/impact-analysis.d.ts.map +1 -1
  54. package/dist/impact-analysis.js +4 -5
  55. package/dist/impact-render.d.ts.map +1 -1
  56. package/dist/impact-render.js +0 -9
  57. package/dist/index.d.ts +2 -3
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +2 -3
  60. package/dist/ingest-drafts.js +8 -4
  61. package/dist/migration-profile-registry.d.ts.map +1 -1
  62. package/dist/migration-profile-registry.js +2 -10
  63. package/dist/monorepo-onboarding.js +2 -2
  64. package/dist/onboarding-drafts.d.ts +0 -14
  65. package/dist/onboarding-drafts.d.ts.map +1 -1
  66. package/dist/onboarding-drafts.js +5 -39
  67. package/dist/onboarding-report.d.ts.map +1 -1
  68. package/dist/onboarding-report.js +5 -1
  69. package/dist/onboarding.d.ts +1 -1
  70. package/dist/onboarding.d.ts.map +1 -1
  71. package/dist/onboarding.js +5 -64
  72. package/dist/ownership.js +2 -10
  73. package/dist/pack-contributions-inventory.d.ts +0 -1
  74. package/dist/pack-contributions-inventory.d.ts.map +1 -1
  75. package/dist/pack-contributions-inventory.js +0 -24
  76. package/dist/pack-helper-registry.d.ts.map +1 -1
  77. package/dist/pack-helper-registry.js +2 -10
  78. package/dist/pack-release-check.d.ts.map +1 -1
  79. package/dist/pack-release-check.js +4 -11
  80. package/dist/pack-signature-status.d.ts.map +1 -1
  81. package/dist/pack-signature-status.js +0 -1
  82. package/dist/pack-symbol-compat.d.ts +4 -17
  83. package/dist/pack-symbol-compat.d.ts.map +1 -1
  84. package/dist/pack-symbol-compat.js +7 -155
  85. package/dist/pack-test-runner.js +2 -10
  86. package/dist/plan-simulation.d.ts.map +1 -1
  87. package/dist/plan-simulation.js +3 -20
  88. package/dist/playbook-registry.d.ts.map +1 -1
  89. package/dist/playbook-registry.js +2 -10
  90. package/dist/policy-engine.d.ts.map +1 -1
  91. package/dist/policy-engine.js +3 -11
  92. package/dist/policy-test.js +3 -11
  93. package/dist/product-coherence.js +5 -5
  94. package/dist/profile-registry.d.ts +0 -1
  95. package/dist/profile-registry.d.ts.map +1 -1
  96. package/dist/profile-registry.js +4 -32
  97. package/dist/quality-baseline.d.ts.map +1 -1
  98. package/dist/quality-baseline.js +3 -1
  99. package/dist/ranker-explainability.d.ts.map +1 -1
  100. package/dist/ranker-explainability.js +3 -9
  101. package/dist/registration-hint-registry.d.ts.map +1 -1
  102. package/dist/registration-hint-registry.js +2 -10
  103. package/dist/release-readiness.js +5 -5
  104. package/dist/reposet.js +1 -1
  105. package/dist/repository-knowledge-model.d.ts +1 -1
  106. package/dist/repository-knowledge-model.d.ts.map +1 -1
  107. package/dist/review-packet-v2.d.ts.map +1 -1
  108. package/dist/review-packet-v2.js +3 -13
  109. package/dist/rule-scaffold.d.ts.map +1 -1
  110. package/dist/rule-scaffold.js +12 -4
  111. package/dist/scaffold-patterns.js +2 -10
  112. package/dist/search-tuning-registry.d.ts.map +1 -1
  113. package/dist/search-tuning-registry.js +2 -10
  114. package/dist/self-config-doctor-v2.d.ts +1 -1
  115. package/dist/self-config-doctor-v2.d.ts.map +1 -1
  116. package/dist/self-config-doctor-v2.js +6 -10
  117. package/dist/self-config-doctor.d.ts.map +1 -1
  118. package/dist/self-config-doctor.js +7 -13
  119. package/dist/sharkcraft-inspector.d.ts.map +1 -1
  120. package/dist/sharkcraft-inspector.js +9 -0
  121. package/dist/start-here.d.ts +1 -1
  122. package/dist/start-here.js +1 -1
  123. package/dist/synthesize-from-onboarding.d.ts +68 -0
  124. package/dist/synthesize-from-onboarding.d.ts.map +1 -0
  125. package/dist/synthesize-from-onboarding.js +508 -0
  126. package/dist/task-packet.d.ts +13 -0
  127. package/dist/task-packet.d.ts.map +1 -1
  128. package/dist/task-packet.js +46 -5
  129. package/dist/task-ranker.d.ts.map +1 -1
  130. package/dist/task-ranker.js +1 -31
  131. package/dist/task-routing-hint-registry.d.ts.map +1 -1
  132. package/dist/task-routing-hint-registry.js +2 -10
  133. package/dist/test-runner.d.ts.map +1 -1
  134. package/dist/test-runner.js +12 -17
  135. package/dist/universal-search.d.ts +0 -1
  136. package/dist/universal-search.d.ts.map +1 -1
  137. package/dist/universal-search.js +0 -12
  138. package/dist/upgrade-advisor.js +1 -1
  139. package/package.json +22 -21
  140. package/dist/onboarding-drafts-merge.d.ts +0 -71
  141. package/dist/onboarding-drafts-merge.d.ts.map +0 -1
  142. package/dist/onboarding-drafts-merge.js +0 -174
  143. package/dist/plugin-lifecycle-profile-registry.d.ts +0 -52
  144. package/dist/plugin-lifecycle-profile-registry.d.ts.map +0 -1
  145. package/dist/plugin-lifecycle-profile-registry.js +0 -202
  146. package/dist/plugin-lifecycle.d.ts +0 -132
  147. package/dist/plugin-lifecycle.d.ts.map +0 -1
  148. package/dist/plugin-lifecycle.js +0 -477
@@ -1 +1 @@
1
- {"version":3,"file":"pack-helper-registry.d.ts","sourceRoot":"","sources":["../src/pack-helper-registry.ts"],"names":[],"mappings":"AAQA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,2BAA2B,uCAAuC,CAAC;AAEhF,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AA4BD,wBAAsB,eAAe,CACnC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC;IAAE,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAA;CAAE,CAAC,CAoF9F;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAGtC;AAED,wBAAsB,cAAc,CAClC,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAGlC;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,sBAAsB,EAAE,CAAC,CAG5C"}
1
+ {"version":3,"file":"pack-helper-registry.d.ts","sourceRoot":"","sources":["../src/pack-helper-registry.ts"],"names":[],"mappings":"AAOA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,eAAO,MAAM,2BAA2B,uCAAuC,CAAC;AAEhF,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AA4BD,wBAAsB,eAAe,CACnC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC;IAAE,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAA;CAAE,CAAC,CAoF9F;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAGtC;AAED,wBAAsB,cAAc,CAClC,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAGlC;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,sBAAsB,EAAE,CAAC,CAG5C"}
@@ -1,11 +1,3 @@
1
- var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
- if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
- return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
- return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
- });
6
- }
7
- return path;
8
- };
9
1
  /**
10
2
  * Pack helper registry. Loads pack-contributed and locally-configured
11
3
  * helpers via `helperFiles[]`. Engine still ships its profile-driven generic
@@ -13,8 +5,8 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
13
5
  */
14
6
  import { existsSync } from 'node:fs';
15
7
  import * as nodePath from 'node:path';
16
- import { pathToFileURL } from 'node:url';
17
8
  import { validatePackHelper } from '@shrkcrft/plugin-api';
9
+ import { importModuleViaLoader } from '@shrkcrft/core';
18
10
  export const PACK_HELPER_REGISTRY_SCHEMA = 'sharkcraft.pack-helper-registry/v1';
19
11
  export var PackHelperSource;
20
12
  (function (PackHelperSource) {
@@ -23,7 +15,7 @@ export var PackHelperSource;
23
15
  PackHelperSource["Fixture"] = "fixture";
24
16
  })(PackHelperSource || (PackHelperSource = {}));
25
17
  async function importDefault(file) {
26
- const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
18
+ const mod = (await importModuleViaLoader(file));
27
19
  if (Array.isArray(mod.default))
28
20
  return mod.default;
29
21
  if (mod.default && typeof mod.default === 'object')
@@ -1 +1 @@
1
- {"version":3,"file":"pack-release-check.d.ts","sourceRoot":"","sources":["../src/pack-release-check.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAE5E,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,yBAAyB,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACzC,MAAM,EAAE,OAAO,CAAC;CACjB;AA6ED,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgLtF"}
1
+ {"version":3,"file":"pack-release-check.d.ts","sourceRoot":"","sources":["../src/pack-release-check.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAE5E,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,yBAAyB,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACzC,MAAM,EAAE,OAAO,CAAC;CACjB;AA6ED,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgLtF"}
@@ -1,14 +1,7 @@
1
- var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
- if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
- return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
- return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
- });
6
- }
7
- return path;
8
- };
9
1
  import { existsSync, readFileSync } from 'node:fs';
10
2
  import * as nodePath from 'node:path';
11
3
  import { validatePackManifest } from '@shrkcrft/plugin-api';
4
+ import { importModuleViaLoader } from '@shrkcrft/core';
12
5
  export const PACK_RELEASE_CHECK_SCHEMA = 'sharkcraft.pack-release-check/v1';
13
6
  function findManifest(packPath) {
14
7
  const pkgFile = nodePath.join(packPath, 'package.json');
@@ -33,7 +26,7 @@ async function loadManifest(file) {
33
26
  return JSON.parse(readFileSync(file, 'utf8'));
34
27
  }
35
28
  const { pathToFileURL } = await import('node:url');
36
- const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
29
+ const mod = (await importModuleViaLoader(file));
37
30
  return mod.default ?? mod.manifest ?? null;
38
31
  }
39
32
  catch {
@@ -206,7 +199,7 @@ export async function runPackReleaseCheck(packPath) {
206
199
  if (/\.(ts|js|mjs|cjs)$/.test(rel)) {
207
200
  try {
208
201
  const { pathToFileURL } = await import('node:url');
209
- await import(__rewriteRelativeImportExtension(pathToFileURL(full).href));
202
+ await importModuleViaLoader(full);
210
203
  }
211
204
  catch (e) {
212
205
  const message = e.message;
@@ -235,7 +228,7 @@ export async function runPackReleaseCheck(packPath) {
235
228
  findings.push({
236
229
  code: 'unsigned-manifest',
237
230
  severity: 'warning',
238
- message: 'Manifest has no HMAC signature. Adopters who run `shrk packs verify` will see signature status "missing-signature".',
231
+ message: 'Manifest has no HMAC signature. Consumers who run `shrk packs verify` will see signature status "missing-signature".',
239
232
  suggestedFix: 'Run `shrk packs sign <manifest.ts> --output ...signed.json` with SHARKCRAFT_PACK_SECRET set.',
240
233
  suggestedCommand: 'shrk packs sign ' + manifestFile + ' --verify-after-sign',
241
234
  file: manifestFile,
@@ -1 +1 @@
1
- {"version":3,"file":"pack-signature-status.d.ts","sourceRoot":"","sources":["../src/pack-signature-status.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,4BAA4B,wCAAwC,CAAC;AAElF,oBAAY,uBAAuB;IACjC,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,OAAO,4BAA4B,CAAC;IACrD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,sEAAsE;QACtE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAgCD,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,qBAAqB,GAChC,0BAA0B,CA6F5B;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,GACjC,OAAO,GACP,UAAU,GACV,OAAO,GACP,SAAS,GACT,gBAAgB,GAChB,cAAc,GACd,SAAS,CAAC;AAEd,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,sCAAsC,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,0BAA0B,EAAE,CAAC;CACvD;AAED,MAAM,WAAW,kCAAkC;IACjD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,kCAAuC,GAC/C,2BAA2B,CA6D7B"}
1
+ {"version":3,"file":"pack-signature-status.d.ts","sourceRoot":"","sources":["../src/pack-signature-status.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,4BAA4B,wCAAwC,CAAC;AAElF,oBAAY,uBAAuB;IACjC,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,OAAO,4BAA4B,CAAC;IACrD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,sEAAsE;QACtE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AA+BD,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,qBAAqB,GAChC,0BAA0B,CA6F5B;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,yBAAyB,GACjC,OAAO,GACP,UAAU,GACV,OAAO,GACP,SAAS,GACT,gBAAgB,GAChB,cAAc,GACd,SAAS,CAAC;AAEd,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,sCAAsC,CAAC;IACxD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,0BAA0B,EAAE,CAAC;CACvD;AAED,MAAM,WAAW,kCAAkC;IACjD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,kCAAuC,GAC/C,2BAA2B,CA6D7B"}
@@ -44,7 +44,6 @@ const CONTRIB_SLOTS = [
44
44
  'mcpToolFiles',
45
45
  'aiProviderFiles',
46
46
  'docsFiles',
47
- 'pluginLifecycleProfileFiles',
48
47
  'contractTemplateFiles',
49
48
  'migrationProfileFiles',
50
49
  'conventionFiles',
@@ -6,16 +6,10 @@
6
6
  * and reports which symbols the pack uses that the consumer's plugin-api
7
7
  * does not export.
8
8
  *
9
- * Default mode (`'ts'`) walks ESM exports with the TypeScript compiler
10
- * API multi-line export blocks, multi-declarator `export const`,
11
- * `export type { }`, and transitive `export * from` re-exports are
12
- * resolved correctly. CJS bundles (`Object.defineProperty(exports, 'X')`,
13
- * `exports.X = …`) still use the regex scanner, since those shapes don't
14
- * surface as `ExportDeclaration` nodes in the AST.
15
- *
16
- * `mode: 'fast'` falls back to the legacy regex-only scanner — useful
17
- * when the typescript module can't be loaded or when speed matters more
18
- * than completeness.
9
+ * This is intentionally a regex/structural parser we do not depend on
10
+ * the TypeScript compiler. The goal is to catch the dominant failure
11
+ * mode (`Export named 'X' not found in module '@shrkcrft/plugin-api'`)
12
+ * before publish, not to be a full module-graph analyser.
19
13
  */
20
14
  export declare const PACK_SYMBOL_COMPAT_SCHEMA = "sharkcraft.pack-symbol-compat/v1";
21
15
  export interface IPluginApiImport {
@@ -56,18 +50,11 @@ export interface IPackSymbolCompatReport {
56
50
  /** Files inspected when collecting available symbols. */
57
51
  filesInspected: readonly string[];
58
52
  }
59
- export type PackSymbolCompatMode = 'ts' | 'fast';
60
53
  export interface IPackSymbolCompatInput {
61
54
  packPath: string;
62
55
  consumerRoot?: string | null;
63
56
  /** Scan dist/*.js patterns even when TS source is present. */
64
57
  distAware?: boolean;
65
- /**
66
- * `'ts'` (default) walks ESM exports with the TypeScript compiler API and
67
- * follows `export * from` chains transitively. `'fast'` uses the legacy
68
- * regex-only scanner.
69
- */
70
- mode?: PackSymbolCompatMode;
71
58
  }
72
59
  export declare function checkPackSymbolCompat(input: IPackSymbolCompatInput): IPackSymbolCompatReport;
73
60
  //# sourceMappingURL=pack-symbol-compat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pack-symbol-compat.d.ts","sourceRoot":"","sources":["../src/pack-symbol-compat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAMH,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAE5E,MAAM,WAAW,gBAAgB;IAC/B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,wBAAwB;IACvC,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAC9F,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE7D,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,OAAO,yBAAyB,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,EAAE,uBAAuB,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,WAAW,CAAC;IACtG,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC9C,6EAA6E;IAC7E,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,+BAA+B;IAC/B,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACrC,6CAA6C;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,4EAA4E;IAC5E,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,uCAAuC;IACvC,UAAU,EAAE,oBAAoB,CAAC;IACjC,qCAAqC;IACrC,UAAU,EAAE,oBAAoB,CAAC;IACjC,yDAAyD;IACzD,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAgWD,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,oBAAoB,CAAC;CAC7B;AAUD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,sBAAsB,GAC5B,uBAAuB,CAsHzB"}
1
+ {"version":3,"file":"pack-symbol-compat.d.ts","sourceRoot":"","sources":["../src/pack-symbol-compat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAE5E,MAAM,WAAW,gBAAgB;IAC/B,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,wBAAwB;IACvC,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;CACjC;AAED,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAC9F,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAE7D,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,OAAO,yBAAyB,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,mBAAmB,EAAE,uBAAuB,GAAG,kBAAkB,GAAG,mBAAmB,GAAG,WAAW,CAAC;IACtG,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC9C,6EAA6E;IAC7E,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,+BAA+B;IAC/B,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACrC,6CAA6C;IAC7C,UAAU,EAAE,OAAO,CAAC;IACpB,4EAA4E;IAC5E,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,uCAAuC;IACvC,UAAU,EAAE,oBAAoB,CAAC;IACjC,qCAAqC;IACrC,UAAU,EAAE,oBAAoB,CAAC;IACjC,yDAAyD;IACzD,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAgPD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,8DAA8D;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAUD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,sBAAsB,GAC5B,uBAAuB,CAqGzB"}
@@ -6,20 +6,13 @@
6
6
  * and reports which symbols the pack uses that the consumer's plugin-api
7
7
  * does not export.
8
8
  *
9
- * Default mode (`'ts'`) walks ESM exports with the TypeScript compiler
10
- * API multi-line export blocks, multi-declarator `export const`,
11
- * `export type { }`, and transitive `export * from` re-exports are
12
- * resolved correctly. CJS bundles (`Object.defineProperty(exports, 'X')`,
13
- * `exports.X = …`) still use the regex scanner, since those shapes don't
14
- * surface as `ExportDeclaration` nodes in the AST.
15
- *
16
- * `mode: 'fast'` falls back to the legacy regex-only scanner — useful
17
- * when the typescript module can't be loaded or when speed matters more
18
- * than completeness.
9
+ * This is intentionally a regex/structural parser we do not depend on
10
+ * the TypeScript compiler. The goal is to catch the dominant failure
11
+ * mode (`Export named 'X' not found in module '@shrkcrft/plugin-api'`)
12
+ * before publish, not to be a full module-graph analyser.
19
13
  */
20
14
  import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
21
15
  import * as nodePath from 'node:path';
22
- import * as ts from 'typescript';
23
16
  export const PACK_SYMBOL_COMPAT_SCHEMA = 'sharkcraft.pack-symbol-compat/v1';
24
17
  const NAMED_IMPORT_RE = /^\s*import\s*(?:type\s+)?\{([^}]+)\}\s*from\s*['"]@shrkcrft\/plugin-api['"]/;
25
18
  const DEFAULT_IMPORT_RE = /^\s*import\s+(\w+)\s*(?:,\s*\{([^}]+)\})?\s*from\s*['"]@shrkcrft\/plugin-api['"]/;
@@ -200,112 +193,6 @@ const EXPORT_NAMED_RE = /^\s*export\s+(?:async\s+)?(?:declare\s+)?(?:function|cl
200
193
  const EXPORT_BLOCK_RE = /^\s*export\s*\{([^}]+)\}/;
201
194
  const RE_EXPORT_RE = /^\s*export\s*\*\s+from\s*['"]([^'"]+)['"]/;
202
195
  const RE_EXPORT_NAMED_RE = /^\s*export\s*\{([^}]+)\}\s*from\s*['"]([^'"]+)['"]/;
203
- function scriptKindFor(file) {
204
- if (file.endsWith('.tsx'))
205
- return ts.ScriptKind.TSX;
206
- if (file.endsWith('.jsx'))
207
- return ts.ScriptKind.JSX;
208
- if (file.endsWith('.js') || file.endsWith('.mjs') || file.endsWith('.cjs'))
209
- return ts.ScriptKind.JS;
210
- return ts.ScriptKind.TS;
211
- }
212
- function hasExportModifier(node) {
213
- const modifiers = (ts.canHaveModifiers(node) ? ts.getModifiers(node) : undefined) ?? [];
214
- return modifiers.some((m) => m.kind === ts.SyntaxKind.ExportKeyword);
215
- }
216
- function collectBindingNames(name, out) {
217
- if (ts.isIdentifier(name)) {
218
- out.add(name.text);
219
- return;
220
- }
221
- if (ts.isObjectBindingPattern(name) || ts.isArrayBindingPattern(name)) {
222
- for (const element of name.elements) {
223
- if (ts.isBindingElement(element)) {
224
- collectBindingNames(element.name, out);
225
- }
226
- }
227
- }
228
- }
229
- /**
230
- * Walk ESM exports of `file` using the TypeScript compiler API, following
231
- * `export * from` re-exports transitively. CJS-specific shapes are NOT
232
- * resolved here — call {@link collectJsExports} alongside for those.
233
- *
234
- * Returns an empty set on parse failure so callers can union with the
235
- * regex fallback.
236
- */
237
- function collectExportsTs(file, visited) {
238
- if (visited.has(file))
239
- return new Set();
240
- visited.add(file);
241
- const out = new Set();
242
- let body;
243
- try {
244
- body = readFileSync(file, 'utf8');
245
- }
246
- catch {
247
- return out;
248
- }
249
- let source;
250
- try {
251
- source = ts.createSourceFile(file, body, ts.ScriptTarget.Latest, /*setParentNodes*/ false, scriptKindFor(file));
252
- }
253
- catch {
254
- return out;
255
- }
256
- for (const stmt of source.statements) {
257
- if (ts.isExportDeclaration(stmt)) {
258
- const moduleSpec = stmt.moduleSpecifier && ts.isStringLiteral(stmt.moduleSpecifier) ? stmt.moduleSpecifier.text : null;
259
- if (!stmt.exportClause) {
260
- // `export * from '...'` — recurse through the barrel.
261
- if (moduleSpec) {
262
- const target = resolveRelative(file, moduleSpec);
263
- if (target) {
264
- for (const sym of collectExportsTs(target, visited))
265
- out.add(sym);
266
- }
267
- }
268
- continue;
269
- }
270
- if (ts.isNamedExports(stmt.exportClause)) {
271
- for (const spec of stmt.exportClause.elements) {
272
- out.add(spec.name.text);
273
- }
274
- continue;
275
- }
276
- if (ts.isNamespaceExport(stmt.exportClause)) {
277
- // `export * as ns from '...'` — the namespace itself is the export.
278
- out.add(stmt.exportClause.name.text);
279
- continue;
280
- }
281
- }
282
- else if (ts.isFunctionDeclaration(stmt) && stmt.name && hasExportModifier(stmt)) {
283
- out.add(stmt.name.text);
284
- }
285
- else if (ts.isClassDeclaration(stmt) && stmt.name && hasExportModifier(stmt)) {
286
- out.add(stmt.name.text);
287
- }
288
- else if (ts.isInterfaceDeclaration(stmt) && hasExportModifier(stmt)) {
289
- out.add(stmt.name.text);
290
- }
291
- else if (ts.isTypeAliasDeclaration(stmt) && hasExportModifier(stmt)) {
292
- out.add(stmt.name.text);
293
- }
294
- else if (ts.isEnumDeclaration(stmt) && hasExportModifier(stmt)) {
295
- out.add(stmt.name.text);
296
- }
297
- else if (ts.isModuleDeclaration(stmt) && stmt.name && hasExportModifier(stmt)) {
298
- if (ts.isIdentifier(stmt.name))
299
- out.add(stmt.name.text);
300
- }
301
- else if (ts.isVariableStatement(stmt) && hasExportModifier(stmt)) {
302
- for (const decl of stmt.declarationList.declarations) {
303
- collectBindingNames(decl.name, out);
304
- }
305
- }
306
- }
307
- return out;
308
- }
309
196
  function collectExports(file, visited) {
310
197
  if (visited.has(file))
311
198
  return new Set();
@@ -359,33 +246,18 @@ function resolveRelative(fromFile, rel) {
359
246
  return null;
360
247
  const base = nodePath.resolve(nodePath.dirname(fromFile), rel);
361
248
  const candidates = [
362
- base, // Verbatim with extension (e.g. './foo.ts' under NodeNext).
363
249
  base + '.ts',
364
250
  base + '.tsx',
365
- base + '.d.ts',
366
- base + '.mts',
367
- base + '.cts',
368
251
  base + '.js',
369
252
  base + '.mjs',
370
253
  base + '.cjs',
371
254
  nodePath.join(base, 'index.ts'),
372
255
  nodePath.join(base, 'index.tsx'),
373
- nodePath.join(base, 'index.d.ts'),
374
- nodePath.join(base, 'index.mts'),
375
256
  nodePath.join(base, 'index.js'),
376
- nodePath.join(base, 'index.mjs'),
377
257
  ];
378
- for (const c of candidates) {
379
- if (existsSync(c)) {
380
- try {
381
- if (statSync(c).isFile())
382
- return c;
383
- }
384
- catch {
385
- continue;
386
- }
387
- }
388
- }
258
+ for (const c of candidates)
259
+ if (existsSync(c))
260
+ return c;
389
261
  return null;
390
262
  }
391
263
  function confidenceFor(mode, count) {
@@ -406,25 +278,9 @@ export function checkPackSymbolCompat(input) {
406
278
  const filesInspected = [];
407
279
  let availableSet = new Set();
408
280
  let usedMode = resolved.sourceMode;
409
- const useTs = (input.mode ?? 'ts') === 'ts';
410
281
  if (resolved.source.length > 0) {
411
282
  if (resolved.sourceMode === 'dist-js') {
412
- // CJS shapes only show up in the regex scanner; ESM shapes show up
413
- // in either. Union the two so a bundle that mixes both is covered.
414
283
  availableSet = collectJsExports(resolved.source);
415
- if (useTs) {
416
- for (const sym of collectExportsTs(resolved.source, new Set()))
417
- availableSet.add(sym);
418
- }
419
- filesInspected.push(resolved.source);
420
- }
421
- else if (useTs) {
422
- availableSet = collectExportsTs(resolved.source, new Set());
423
- // Fallback union — if the TS walker returns nothing (parse failure),
424
- // we still want a best-effort symbol list from the regex scanner.
425
- if (availableSet.size === 0) {
426
- availableSet = collectExports(resolved.source, new Set());
427
- }
428
284
  filesInspected.push(resolved.source);
429
285
  }
430
286
  else {
@@ -443,10 +299,6 @@ export function checkPackSymbolCompat(input) {
443
299
  const full = nodePath.join(distDir, entry);
444
300
  for (const s of collectJsExports(full))
445
301
  availableSet.add(s);
446
- if (useTs) {
447
- for (const s of collectExportsTs(full, new Set()))
448
- availableSet.add(s);
449
- }
450
302
  filesInspected.push(full);
451
303
  }
452
304
  if (resolved.sourceMode === 'declaration')
@@ -13,19 +13,11 @@
13
13
  * `mustNotIncludeIds`, optionally capping the token budget.
14
14
  * 4. Emits a structured diagnostic report.
15
15
  */
16
- var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
17
- if (typeof path === "string" && /^\.\.?\//.test(path)) {
18
- return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
19
- return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
20
- });
21
- }
22
- return path;
23
- };
24
16
  import { existsSync, writeFileSync, mkdirSync } from 'node:fs';
25
17
  import { join } from 'node:path';
26
- import { pathToFileURL } from 'node:url';
27
18
  import { inspectSharkcraft } from "./sharkcraft-inspector.js";
28
19
  import { buildTaskPacket } from "./task-packet.js";
20
+ import { importModuleViaLoader } from '@shrkcrft/core';
29
21
  export function definePackTest(t) {
30
22
  return t;
31
23
  }
@@ -43,7 +35,7 @@ function findTestsFile(packPath) {
43
35
  return null;
44
36
  }
45
37
  async function loadTestCases(file) {
46
- const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
38
+ const mod = (await importModuleViaLoader(file));
47
39
  const list = mod.default ?? mod.tests ?? [];
48
40
  return [...list];
49
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plan-simulation.d.ts","sourceRoot":"","sources":["../src/plan-simulation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-simulation.d.ts","sourceRoot":"","sources":["../src/plan-simulation.ts"],"names":[],"mappings":"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"}
@@ -318,26 +318,9 @@ export async function simulatePlan(inspection, planPath, options = {}) {
318
318
  relativePath: c.relativePath,
319
319
  sizeBytes: Number(c.sizeBytes ?? 0),
320
320
  }));
321
- // Marker-driven detection. Project-specific markers identify pack-owned regions.
322
- // Markers come from registered lifecycle profiles. The engine ships only
323
- // generic naming conventions.
324
- const baseKeyTableMarkers = ['PluginKey', 'pluginKeys'];
325
- const profileKeyMarkers = [];
326
- try {
327
- const { listPluginLifecycleProfiles } = await import("./plugin-lifecycle-profile-registry.js");
328
- const profiles = await listPluginLifecycleProfiles(inspection);
329
- for (const entry of profiles) {
330
- if (entry.profile.keyTable?.path) {
331
- const base = entry.profile.keyTable.path.split('/').pop()?.replace(/\.\w+$/, '');
332
- if (base)
333
- profileKeyMarkers.push(base);
334
- }
335
- }
336
- }
337
- catch {
338
- // best-effort
339
- }
340
- const KEY_TABLE_MARKERS = [...baseKeyTableMarkers, ...profileKeyMarkers];
321
+ // Marker-driven detection. Generic naming conventions for common
322
+ // pack-owned regions; the engine ships only these defaults.
323
+ const KEY_TABLE_MARKERS = ['Keys', 'keys'];
341
324
  const EVENT_REGISTRY_MARKERS = ['EventRegistry', 'EVENTS', 'eventRegistry', 'events.ts'];
342
325
  const TOKEN_REGISTRY_MARKERS = ['TokenRegistry', 'TOKENS', 'tokenRegistry', 'tokens.ts'];
343
326
  const maxDiffLines = options.maxDiffLines ?? 80;
@@ -1 +1 @@
1
- {"version":3,"file":"playbook-registry.d.ts","sourceRoot":"","sources":["../src/playbook-registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,wBAAwB,oCAAoC,CAAC;AAE1E,MAAM,WAAW,SAAU,SAAQ,cAAc;IAC/C,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAmCD,wBAAsB,aAAa,CACjC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAiD/B;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,qBAAqB,GAAG,SAAS,SAAS,EAAE,CAGrF;AAED,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,GAAG,gBAAgB,CAWlE;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,SAAS,EAAE,EAC/B,IAAI,EAAE,MAAM,GACX,SAAS,uBAAuB,EAAE,CA+BpC"}
1
+ {"version":3,"file":"playbook-registry.d.ts","sourceRoot":"","sources":["../src/playbook-registry.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,eAAO,MAAM,wBAAwB,oCAAoC,CAAC;AAE1E,MAAM,WAAW,SAAU,SAAQ,cAAc;IAC/C,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAmCD,wBAAsB,aAAa,CACjC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAiD/B;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,qBAAqB,GAAG,SAAS,SAAS,EAAE,CAGrF;AAED,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,GAAG,gBAAgB,CAWlE;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,SAAS,EAAE,EAC/B,IAAI,EAAE,MAAM,GACX,SAAS,uBAAuB,EAAE,CA+BpC"}
@@ -1,18 +1,10 @@
1
- var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
- if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
- return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
- return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
- });
6
- }
7
- return path;
8
- };
9
1
  import { existsSync, readFileSync } from 'node:fs';
10
2
  import * as nodePath from 'node:path';
11
- import { pathToFileURL } from 'node:url';
3
+ import { importModuleViaLoader } from '@shrkcrft/core';
12
4
  export const PLAYBOOK_REGISTRY_SCHEMA = 'sharkcraft.playbook-registry/v1';
13
5
  const CACHE = new Map();
14
6
  async function importDefault(file) {
15
- const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
7
+ const mod = (await importModuleViaLoader(file));
16
8
  if (Array.isArray(mod.default))
17
9
  return mod.default;
18
10
  if (mod.default && typeof mod.default === 'object')
@@ -1 +1 @@
1
- {"version":3,"file":"policy-engine.d.ts","sourceRoot":"","sources":["../src/policy-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy-engine.d.ts","sourceRoot":"","sources":["../src/policy-engine.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,8 @@
1
- var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
- if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
- return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
- return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
- });
6
- }
7
- return path;
8
- };
9
1
  import { existsSync, readFileSync } from 'node:fs';
10
2
  import * as nodePath from 'node:path';
11
- import { pathToFileURL } from 'node:url';
12
3
  import { evaluateBoundaries, loadTsconfigPaths, scanImports } from '@shrkcrft/boundaries';
13
4
  import { impactFor, loadOwnershipRules } from "./ownership.js";
5
+ import { importModuleViaLoader } from '@shrkcrft/core';
14
6
  export const POLICY_REPORT_SCHEMA = 'sharkcraft.policy-report/v1';
15
7
  export var PolicySeverity;
16
8
  (function (PolicySeverity) {
@@ -192,7 +184,7 @@ export async function evaluatePolicy(inspection, input = {}) {
192
184
  if (!existsSync(full))
193
185
  continue;
194
186
  try {
195
- const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(full).href)));
187
+ const mod = (await importModuleViaLoader(full));
196
188
  const decls = mod.default ?? mod.policyChecks ?? [];
197
189
  for (const d of decls) {
198
190
  runDecl(d, {
@@ -250,7 +242,7 @@ export async function evaluatePolicy(inspection, input = {}) {
250
242
  if (!existsSync(full))
251
243
  continue;
252
244
  try {
253
- const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(full).href)));
245
+ const mod = (await importModuleViaLoader(full));
254
246
  const decls = mod.default ?? mod.policyChecks ?? [];
255
247
  for (const d of decls) {
256
248
  runDecl(d, {
@@ -1,15 +1,7 @@
1
- var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
- if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
- return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
- return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
- });
6
- }
7
- return path;
8
- };
9
1
  import { createHash } from 'node:crypto';
10
2
  import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from 'node:fs';
11
3
  import * as nodePath from 'node:path';
12
- import { pathToFileURL } from 'node:url';
4
+ import { importModuleViaLoader } from '@shrkcrft/core';
13
5
  import { evaluatePolicy, PolicySeverity, } from "./policy-engine.js";
14
6
  export const POLICY_TEST_SCHEMA = 'sharkcraft.policy-test/v1';
15
7
  export const POLICY_SNAPSHOT_SCHEMA = 'sharkcraft.policy-snapshot/v1';
@@ -60,7 +52,7 @@ async function loadLocalPolicyChecks(inspection, localFiles) {
60
52
  if (!existsSync(file))
61
53
  continue;
62
54
  try {
63
- const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
55
+ const mod = (await importModuleViaLoader(file));
64
56
  const decls = mod.default ?? mod.policyChecks ?? [];
65
57
  for (const d of decls)
66
58
  out.push({ check: d, sourceFile: file, isLocal: true });
@@ -77,7 +69,7 @@ async function loadLocalPolicyChecks(inspection, localFiles) {
77
69
  if (!existsSync(file))
78
70
  continue;
79
71
  try {
80
- const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
72
+ const mod = (await importModuleViaLoader(file));
81
73
  const decls = mod.default ?? mod.policyChecks ?? [];
82
74
  for (const d of decls)
83
75
  out.push({ check: d, sourceFile: file, isLocal: false });
@@ -9,7 +9,7 @@
9
9
  * - README links to release notes / limitations / external quickstart.
10
10
  * - docs/commands-taxonomy.md presence (when expected).
11
11
  * - docs/public-alpha-checklist.md mentions final validation gates.
12
- * - docs/releases/0.1.0-alpha.1.md states "not production stable" or equivalent.
12
+ * - docs/releases/0.1.0-alpha.2.md states "not production stable" or equivalent.
13
13
  *
14
14
  * `--strict` converts warnings to errors.
15
15
  *
@@ -21,7 +21,7 @@ export const PRODUCT_COHERENCE_SCHEMA = 'sharkcraft.product-coherence/v1';
21
21
  const REQUIRED_DOCS = [
22
22
  'README.md',
23
23
  'docs/safety-model.md',
24
- 'docs/releases/0.1.0-alpha.1.md',
24
+ 'docs/releases/0.1.0-alpha.2.md',
25
25
  'docs/public-alpha-limitations.md',
26
26
  'docs/external-repo-quickstart.md',
27
27
  'CHANGELOG.md',
@@ -38,7 +38,7 @@ const README_RECOMMENDED_LINKS = [
38
38
  {
39
39
  phrase: /docs\/releases\/[^\s\)]+|release[-\s]?notes/i,
40
40
  id: 'readme-link-release-notes',
41
- message: 'README should link to release notes (e.g. docs/releases/0.1.0-alpha.1.md).',
41
+ message: 'README should link to release notes (e.g. docs/releases/0.1.0-alpha.2.md).',
42
42
  },
43
43
  {
44
44
  phrase: /docs\/public[-\s]?alpha[-\s]?limitations/i,
@@ -77,14 +77,14 @@ function checkChangelog(root, findings) {
77
77
  }
78
78
  }
79
79
  function checkReleaseNotes(root, findings) {
80
- const rel = readFileText(root, 'docs/releases/0.1.0-alpha.1.md');
80
+ const rel = readFileText(root, 'docs/releases/0.1.0-alpha.2.md');
81
81
  if (!rel)
82
82
  return;
83
83
  if (!/not\s+production[-\s]?stable|public[-\s]?alpha|preview|early[-\s]?stage/i.test(rel)) {
84
84
  findings.push({
85
85
  id: 'release-notes-stability-disclaimer',
86
86
  severity: 'warning',
87
- message: 'docs/releases/0.1.0-alpha.1.md should state the release is not production-stable (or equivalent).',
87
+ message: 'docs/releases/0.1.0-alpha.2.md should state the release is not production-stable (or equivalent).',
88
88
  });
89
89
  }
90
90
  }
@@ -1,7 +1,6 @@
1
1
  import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
2
2
  export declare const PROFILE_REGISTRY_SCHEMA = "sharkcraft.profile-registry/v1";
3
3
  export declare enum ProfileKind {
4
- PluginLifecycle = "plugin-lifecycle",
5
4
  Migration = "migration"
6
5
  }
7
6
  export declare enum ProfileSource {
@@ -1 +1 @@
1
- {"version":3,"file":"profile-registry.d.ts","sourceRoot":"","sources":["../src/profile-registry.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,uBAAuB,mCAAmC,CAAC;AAExE,oBAAY,WAAW;IACrB,eAAe,qBAAqB;IACpC,SAAS,cAAc;CAExB;AAED,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC;IACT,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,MAAM,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAC1C,CAAC,CAgED;AAED,wBAAsB,YAAY,CAChC,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,WAAW,CAAA;CAAO,GACnC,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAInC;AAED,wBAAsB,WAAW,CAC/B,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAK/B;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC,CAG3C"}
1
+ {"version":3,"file":"profile-registry.d.ts","sourceRoot":"","sources":["../src/profile-registry.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,uBAAuB,mCAAmC,CAAC;AAExE,oBAAY,WAAW;IACrB,SAAS,cAAc;CAExB;AAED,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC;CAC7B;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC;IACT,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAClC,MAAM,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAC1C,CAAC,CAsCD;AAED,wBAAsB,YAAY,CAChC,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,WAAW,CAAA;CAAO,GACnC,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAInC;AAED,wBAAsB,WAAW,CAC/B,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE,WAAW,GACjB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAK/B;AAED,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC,CAG3C"}