@shrkcrft/inspector 0.1.0-alpha.8 → 0.1.0-alpha.9

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 (142) 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 +10 -59
  5. package/dist/agent-task-prep.d.ts.map +1 -1
  6. package/dist/agent-task-prep.js +3 -1
  7. package/dist/ai-readiness.d.ts +9 -84
  8. package/dist/ai-readiness.d.ts.map +1 -1
  9. package/dist/ai-readiness.js +30 -161
  10. package/dist/apply-dispatch-trace.d.ts +2 -1
  11. package/dist/apply-dispatch-trace.d.ts.map +1 -1
  12. package/dist/apply-dispatch-trace.js +9 -0
  13. package/dist/area-explore.d.ts.map +1 -1
  14. package/dist/area-explore.js +5 -1
  15. package/dist/area-map.d.ts +19 -0
  16. package/dist/area-map.d.ts.map +1 -1
  17. package/dist/area-map.js +27 -0
  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 +182 -1
  21. package/dist/compliance-profiles.js +1 -1
  22. package/dist/construct-adoption-diff.d.ts.map +1 -1
  23. package/dist/construct-adoption-diff.js +1 -2
  24. package/dist/construct-adoption.d.ts.map +1 -1
  25. package/dist/construct-adoption.js +11 -10
  26. package/dist/construct-inference.d.ts.map +1 -1
  27. package/dist/construct-inference.js +1 -2
  28. package/dist/construct-registry.d.ts.map +1 -1
  29. package/dist/construct-registry.js +10 -2
  30. package/dist/contract-template-registry.d.ts.map +1 -1
  31. package/dist/contract-template-registry.js +10 -2
  32. package/dist/convention-registry.d.ts.map +1 -1
  33. package/dist/convention-registry.js +10 -2
  34. package/dist/decision-records.d.ts.map +1 -1
  35. package/dist/decision-records.js +9 -2
  36. package/dist/demo-script.d.ts +1 -0
  37. package/dist/demo-script.d.ts.map +1 -1
  38. package/dist/demo-script.js +43 -0
  39. package/dist/docs-check.js +1 -1
  40. package/dist/drift-baseline.d.ts.map +1 -1
  41. package/dist/drift-baseline.js +2 -5
  42. package/dist/feedback-ingestion.d.ts.map +1 -1
  43. package/dist/feedback-ingestion.js +16 -2
  44. package/dist/git-helpers.d.ts +12 -0
  45. package/dist/git-helpers.d.ts.map +1 -1
  46. package/dist/git-helpers.js +63 -0
  47. package/dist/helper-registry.d.ts +54 -27
  48. package/dist/helper-registry.d.ts.map +1 -1
  49. package/dist/helper-registry.js +517 -16
  50. package/dist/impact-analysis.d.ts.map +1 -1
  51. package/dist/impact-analysis.js +5 -4
  52. package/dist/impact-render.d.ts.map +1 -1
  53. package/dist/impact-render.js +9 -0
  54. package/dist/index.d.ts +3 -1
  55. package/dist/index.d.ts.map +1 -1
  56. package/dist/index.js +3 -1
  57. package/dist/ingest-drafts.js +4 -8
  58. package/dist/migration-profile-registry.d.ts.map +1 -1
  59. package/dist/migration-profile-registry.js +10 -2
  60. package/dist/monorepo-onboarding.js +2 -2
  61. package/dist/onboarding-drafts-merge.d.ts +71 -0
  62. package/dist/onboarding-drafts-merge.d.ts.map +1 -0
  63. package/dist/onboarding-drafts-merge.js +174 -0
  64. package/dist/onboarding-drafts.d.ts +14 -0
  65. package/dist/onboarding-drafts.d.ts.map +1 -1
  66. package/dist/onboarding-drafts.js +39 -5
  67. package/dist/onboarding-report.d.ts.map +1 -1
  68. package/dist/onboarding-report.js +1 -5
  69. package/dist/onboarding.d.ts +1 -1
  70. package/dist/onboarding.d.ts.map +1 -1
  71. package/dist/onboarding.js +64 -5
  72. package/dist/ownership.js +10 -2
  73. package/dist/pack-contributions-inventory.d.ts +1 -0
  74. package/dist/pack-contributions-inventory.d.ts.map +1 -1
  75. package/dist/pack-contributions-inventory.js +24 -0
  76. package/dist/pack-helper-registry.d.ts.map +1 -1
  77. package/dist/pack-helper-registry.js +10 -2
  78. package/dist/pack-release-check.d.ts.map +1 -1
  79. package/dist/pack-release-check.js +11 -4
  80. package/dist/pack-signature-status.d.ts.map +1 -1
  81. package/dist/pack-signature-status.js +1 -0
  82. package/dist/pack-symbol-compat.d.ts +17 -4
  83. package/dist/pack-symbol-compat.d.ts.map +1 -1
  84. package/dist/pack-symbol-compat.js +155 -7
  85. package/dist/pack-test-runner.js +10 -2
  86. package/dist/plan-simulation.d.ts.map +1 -1
  87. package/dist/plan-simulation.js +20 -3
  88. package/dist/playbook-registry.d.ts.map +1 -1
  89. package/dist/playbook-registry.js +10 -2
  90. package/dist/plugin-lifecycle-profile-registry.d.ts +52 -0
  91. package/dist/plugin-lifecycle-profile-registry.d.ts.map +1 -0
  92. package/dist/plugin-lifecycle-profile-registry.js +202 -0
  93. package/dist/plugin-lifecycle.d.ts +132 -0
  94. package/dist/plugin-lifecycle.d.ts.map +1 -0
  95. package/dist/plugin-lifecycle.js +477 -0
  96. package/dist/policy-engine.d.ts.map +1 -1
  97. package/dist/policy-engine.js +11 -3
  98. package/dist/policy-test.js +11 -3
  99. package/dist/product-coherence.js +5 -5
  100. package/dist/profile-registry.d.ts +1 -0
  101. package/dist/profile-registry.d.ts.map +1 -1
  102. package/dist/profile-registry.js +32 -4
  103. package/dist/quality-baseline.d.ts.map +1 -1
  104. package/dist/quality-baseline.js +1 -3
  105. package/dist/ranker-explainability.d.ts.map +1 -1
  106. package/dist/ranker-explainability.js +9 -3
  107. package/dist/registration-hint-registry.d.ts.map +1 -1
  108. package/dist/registration-hint-registry.js +10 -2
  109. package/dist/release-readiness.js +5 -5
  110. package/dist/reposet.js +1 -1
  111. package/dist/repository-knowledge-model.d.ts +1 -1
  112. package/dist/repository-knowledge-model.d.ts.map +1 -1
  113. package/dist/review-packet-v2.d.ts.map +1 -1
  114. package/dist/review-packet-v2.js +13 -3
  115. package/dist/rule-scaffold.d.ts.map +1 -1
  116. package/dist/rule-scaffold.js +4 -12
  117. package/dist/scaffold-patterns.js +10 -2
  118. package/dist/search-tuning-registry.d.ts.map +1 -1
  119. package/dist/search-tuning-registry.js +10 -2
  120. package/dist/self-config-doctor-v2.d.ts +1 -1
  121. package/dist/self-config-doctor-v2.d.ts.map +1 -1
  122. package/dist/self-config-doctor-v2.js +10 -6
  123. package/dist/self-config-doctor.d.ts.map +1 -1
  124. package/dist/self-config-doctor.js +13 -7
  125. package/dist/sharkcraft-inspector.d.ts.map +1 -1
  126. package/dist/sharkcraft-inspector.js +0 -1
  127. package/dist/start-here.d.ts +1 -1
  128. package/dist/start-here.js +1 -1
  129. package/dist/task-ranker.d.ts.map +1 -1
  130. package/dist/task-ranker.js +31 -1
  131. package/dist/task-routing-hint-registry.d.ts.map +1 -1
  132. package/dist/task-routing-hint-registry.js +10 -2
  133. package/dist/test-runner.d.ts.map +1 -1
  134. package/dist/test-runner.js +16 -8
  135. package/dist/universal-search.d.ts +1 -0
  136. package/dist/universal-search.d.ts.map +1 -1
  137. package/dist/universal-search.js +12 -0
  138. package/dist/upgrade-advisor.js +1 -1
  139. package/package.json +21 -22
  140. package/dist/synthesize-from-onboarding.d.ts +0 -68
  141. package/dist/synthesize-from-onboarding.d.ts.map +0 -1
  142. package/dist/synthesize-from-onboarding.js +0 -508
package/dist/ownership.js CHANGED
@@ -1,6 +1,14 @@
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
+ };
1
9
  import { existsSync, readFileSync } from 'node:fs';
2
10
  import * as nodePath from 'node:path';
3
- import { importModuleViaLoader } from '@shrkcrft/core';
11
+ import { pathToFileURL } from 'node:url';
4
12
  export const OWNERSHIP_SCHEMA = 'sharkcraft.ownership-rule/v1';
5
13
  const DEFAULT_PATHS = ['sharkcraft/ownership.ts', 'CODEOWNERS', '.github/CODEOWNERS'];
6
14
  export async function loadOwnershipRules(cwd, configured) {
@@ -16,7 +24,7 @@ export async function loadOwnershipRules(cwd, configured) {
16
24
  if (full.endsWith('.ts') || full.endsWith('.js') || full.endsWith('.mjs') || full.endsWith('.cjs')) {
17
25
  try {
18
26
  // pathToFileURL mirrors the resolver pattern in TypeScriptKnowledgeLoader.
19
- const mod = (await importModuleViaLoader(full));
27
+ const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(full).href)));
20
28
  const list = mod.default ?? mod.ownershipRules ?? [];
21
29
  for (const r of list)
22
30
  rules.push(normalize(r));
@@ -24,6 +24,7 @@ export declare enum ContributionKind {
24
24
  Decision = "decision",
25
25
  ContractTemplate = "contract-template",
26
26
  MigrationProfile = "migration-profile",
27
+ PluginLifecycleProfile = "plugin-lifecycle-profile",
27
28
  ContextTest = "context-test",
28
29
  AgentTest = "agent-test",
29
30
  Helper = "helper",
@@ -1 +1 @@
1
- {"version":3,"file":"pack-contributions-inventory.d.ts","sourceRoot":"","sources":["../src/pack-contributions-inventory.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAWvE,eAAO,MAAM,mCAAmC,+CACF,CAAC;AAE/C,oBAAY,kBAAkB;IAC5B,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED,oBAAY,gBAAgB;IAC1B,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,cAAc,oBAAoB;IAClC,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,eAAe,qBAAqB;IACpC,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,YAAY,kBAAkB;IAC9B,YAAY,kBAAkB;IAC9B,QAAQ,aAAa;IACrB,gBAAgB,sBAAsB;IACtC,gBAAgB,sBAAsB;IACtC,WAAW,iBAAiB;IAC5B,SAAS,eAAe;IACxB,MAAM,WAAW;IACjB,eAAe,sBAAsB;IACrC,UAAU,eAAe;IACzB,IAAI,SAAS;CACd;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAE3E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,wDAAwD;IACxD,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,6CAA6C;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACjD;AAED,oBAAY,YAAY;IACtB,mBAAmB,2BAA2B;IAC9C,0BAA0B,kCAAkC;IAC5D,mBAAmB,0BAA0B;IAC7C,kBAAkB,yBAAyB;IAC3C,mBAAmB,yBAAyB;IAC5C,mBAAmB,0BAA0B;IAC7C,cAAc,oBAAoB;IAClC,kBAAkB,wBAAwB;IAC1C,aAAa,mBAAmB;CACjC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,SAAS;QACzB,MAAM,EAAE,kBAAkB,CAAC;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,EAAE,CAAC;IACJ,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,MAAM,EAAE,OAAO,mCAAmC,CAAC;IAC5D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAChF,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACrD,QAAQ,CAAC,KAAK,EAAE,SAAS;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,gBAAgB,EAAE,OAAO,CAAC;KAC3B,EAAE,CAAC;CACL;AAgYD;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC7C,UAAU,EAAE,qBAAqB,GAChC,2BAA2B,CAE7B;AAED;;;;;;GAMG;AACH,wBAAsB,oCAAoC,CACxD,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,2BAA2B,CAAC,CAGtC;AA8OD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,2BAA2B,GAAG,MAAM,CAoB5E;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,2BAA2B,GAAG,MAAM,CA0BhF;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,2BAA2B,GAC/B,SAAS,qBAAqB,EAAE,CAElC"}
1
+ {"version":3,"file":"pack-contributions-inventory.d.ts","sourceRoot":"","sources":["../src/pack-contributions-inventory.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ import * as nodePath from 'node:path';
12
12
  // Structural loaders used to replace regex-fallback noise per kind.
13
13
  import { HELPERS } from "./helper-registry.js";
14
14
  import { listConventions } from "./convention-registry.js";
15
+ import { listPluginLifecycleProfiles } from "./plugin-lifecycle-profile-registry.js";
15
16
  import { listPackHelpers } from "./pack-helper-registry.js";
16
17
  import { listTaskRoutingHints } from "./task-routing-hint-registry.js";
17
18
  import { listRegistrationHints } from "./registration-hint-registry.js";
@@ -45,6 +46,7 @@ export var ContributionKind;
45
46
  ContributionKind["Decision"] = "decision";
46
47
  ContributionKind["ContractTemplate"] = "contract-template";
47
48
  ContributionKind["MigrationProfile"] = "migration-profile";
49
+ ContributionKind["PluginLifecycleProfile"] = "plugin-lifecycle-profile";
48
50
  ContributionKind["ContextTest"] = "context-test";
49
51
  ContributionKind["AgentTest"] = "agent-test";
50
52
  ContributionKind["Helper"] = "helper";
@@ -82,6 +84,7 @@ const KIND_TO_SLOT = {
82
84
  [ContributionKind.Decision]: 'decisionFiles',
83
85
  [ContributionKind.ContractTemplate]: 'contractTemplateFiles',
84
86
  [ContributionKind.MigrationProfile]: 'migrationProfileFiles',
87
+ [ContributionKind.PluginLifecycleProfile]: 'pluginLifecycleProfileFiles',
85
88
  [ContributionKind.ContextTest]: 'contextTestFiles',
86
89
  [ContributionKind.AgentTest]: 'agentTestFiles',
87
90
  [ContributionKind.Helper]: 'helperFiles',
@@ -140,6 +143,10 @@ function buildContribFileEntries(inspection) {
140
143
  { kind: ContributionKind.FeedbackRule, relCandidates: ['feedback-rules.ts'] },
141
144
  { kind: ContributionKind.Decision, relCandidates: ['decisions.ts'] },
142
145
  { kind: ContributionKind.AgentTest, relCandidates: ['agent-tests.ts'] },
146
+ {
147
+ kind: ContributionKind.PluginLifecycleProfile,
148
+ relCandidates: ['plugin-lifecycle-profiles.ts'],
149
+ },
143
150
  { kind: ContributionKind.ContractTemplate, relCandidates: ['contract-templates.ts'] },
144
151
  { kind: ContributionKind.MigrationProfile, relCandidates: ['migration-profiles.ts'] },
145
152
  { kind: ContributionKind.Helper, relCandidates: ['helpers.ts'] },
@@ -288,6 +295,23 @@ async function loadStructuralEntries(inspection) {
288
295
  catch {
289
296
  // ignore
290
297
  }
298
+ // Plugin-lifecycle profiles — same problem (sub-object ids).
299
+ try {
300
+ const entries = await listPluginLifecycleProfiles(inspection);
301
+ for (const e of entries) {
302
+ record(ContributionKind.PluginLifecycleProfile, e.sourceFile, {
303
+ id: e.profile.id,
304
+ ...(e.profile.title ? { title: e.profile.title } : {}),
305
+ source: e.source === 'pack'
306
+ ? ContributionSource.Pack
307
+ : ContributionSource.Local,
308
+ ...(e.packageName ? { packageName: e.packageName } : {}),
309
+ });
310
+ }
311
+ }
312
+ catch {
313
+ // ignore
314
+ }
291
315
  // Conventions, helpers, routing hints, registration hints, contract templates,
292
316
  // migration profiles — all loader-backed today.
293
317
  try {
@@ -1 +1 @@
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
+ {"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,3 +1,11 @@
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
+ };
1
9
  /**
2
10
  * Pack helper registry. Loads pack-contributed and locally-configured
3
11
  * helpers via `helperFiles[]`. Engine still ships its profile-driven generic
@@ -5,8 +13,8 @@
5
13
  */
6
14
  import { existsSync } from 'node:fs';
7
15
  import * as nodePath from 'node:path';
16
+ import { pathToFileURL } from 'node:url';
8
17
  import { validatePackHelper } from '@shrkcrft/plugin-api';
9
- import { importModuleViaLoader } from '@shrkcrft/core';
10
18
  export const PACK_HELPER_REGISTRY_SCHEMA = 'sharkcraft.pack-helper-registry/v1';
11
19
  export var PackHelperSource;
12
20
  (function (PackHelperSource) {
@@ -15,7 +23,7 @@ export var PackHelperSource;
15
23
  PackHelperSource["Fixture"] = "fixture";
16
24
  })(PackHelperSource || (PackHelperSource = {}));
17
25
  async function importDefault(file) {
18
- const mod = (await importModuleViaLoader(file));
26
+ const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
19
27
  if (Array.isArray(mod.default))
20
28
  return mod.default;
21
29
  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":"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
+ {"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,7 +1,14 @@
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
+ };
1
9
  import { existsSync, readFileSync } from 'node:fs';
2
10
  import * as nodePath from 'node:path';
3
11
  import { validatePackManifest } from '@shrkcrft/plugin-api';
4
- import { importModuleViaLoader } from '@shrkcrft/core';
5
12
  export const PACK_RELEASE_CHECK_SCHEMA = 'sharkcraft.pack-release-check/v1';
6
13
  function findManifest(packPath) {
7
14
  const pkgFile = nodePath.join(packPath, 'package.json');
@@ -26,7 +33,7 @@ async function loadManifest(file) {
26
33
  return JSON.parse(readFileSync(file, 'utf8'));
27
34
  }
28
35
  const { pathToFileURL } = await import('node:url');
29
- const mod = (await importModuleViaLoader(file));
36
+ const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
30
37
  return mod.default ?? mod.manifest ?? null;
31
38
  }
32
39
  catch {
@@ -199,7 +206,7 @@ export async function runPackReleaseCheck(packPath) {
199
206
  if (/\.(ts|js|mjs|cjs)$/.test(rel)) {
200
207
  try {
201
208
  const { pathToFileURL } = await import('node:url');
202
- await importModuleViaLoader(full);
209
+ await import(__rewriteRelativeImportExtension(pathToFileURL(full).href));
203
210
  }
204
211
  catch (e) {
205
212
  const message = e.message;
@@ -228,7 +235,7 @@ export async function runPackReleaseCheck(packPath) {
228
235
  findings.push({
229
236
  code: 'unsigned-manifest',
230
237
  severity: 'warning',
231
- message: 'Manifest has no HMAC signature. Consumers who run `shrk packs verify` will see signature status "missing-signature".',
238
+ message: 'Manifest has no HMAC signature. Adopters who run `shrk packs verify` will see signature status "missing-signature".',
232
239
  suggestedFix: 'Run `shrk packs sign <manifest.ts> --output ...signed.json` with SHARKCRAFT_PACK_SECRET set.',
233
240
  suggestedCommand: 'shrk packs sign ' + manifestFile + ' --verify-after-sign',
234
241
  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;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"}
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"}
@@ -44,6 +44,7 @@ const CONTRIB_SLOTS = [
44
44
  'mcpToolFiles',
45
45
  'aiProviderFiles',
46
46
  'docsFiles',
47
+ 'pluginLifecycleProfileFiles',
47
48
  'contractTemplateFiles',
48
49
  'migrationProfileFiles',
49
50
  'conventionFiles',
@@ -6,10 +6,16 @@
6
6
  * and reports which symbols the pack uses that the consumer's plugin-api
7
7
  * does not export.
8
8
  *
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.
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.
13
19
  */
14
20
  export declare const PACK_SYMBOL_COMPAT_SCHEMA = "sharkcraft.pack-symbol-compat/v1";
15
21
  export interface IPluginApiImport {
@@ -50,11 +56,18 @@ export interface IPackSymbolCompatReport {
50
56
  /** Files inspected when collecting available symbols. */
51
57
  filesInspected: readonly string[];
52
58
  }
59
+ export type PackSymbolCompatMode = 'ts' | 'fast';
53
60
  export interface IPackSymbolCompatInput {
54
61
  packPath: string;
55
62
  consumerRoot?: string | null;
56
63
  /** Scan dist/*.js patterns even when TS source is present. */
57
64
  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;
58
71
  }
59
72
  export declare function checkPackSymbolCompat(input: IPackSymbolCompatInput): IPackSymbolCompatReport;
60
73
  //# 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;;;;;;;;;;;;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"}
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"}
@@ -6,13 +6,20 @@
6
6
  * and reports which symbols the pack uses that the consumer's plugin-api
7
7
  * does not export.
8
8
  *
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.
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.
13
19
  */
14
20
  import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
15
21
  import * as nodePath from 'node:path';
22
+ import * as ts from 'typescript';
16
23
  export const PACK_SYMBOL_COMPAT_SCHEMA = 'sharkcraft.pack-symbol-compat/v1';
17
24
  const NAMED_IMPORT_RE = /^\s*import\s*(?:type\s+)?\{([^}]+)\}\s*from\s*['"]@shrkcrft\/plugin-api['"]/;
18
25
  const DEFAULT_IMPORT_RE = /^\s*import\s+(\w+)\s*(?:,\s*\{([^}]+)\})?\s*from\s*['"]@shrkcrft\/plugin-api['"]/;
@@ -193,6 +200,112 @@ const EXPORT_NAMED_RE = /^\s*export\s+(?:async\s+)?(?:declare\s+)?(?:function|cl
193
200
  const EXPORT_BLOCK_RE = /^\s*export\s*\{([^}]+)\}/;
194
201
  const RE_EXPORT_RE = /^\s*export\s*\*\s+from\s*['"]([^'"]+)['"]/;
195
202
  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
+ }
196
309
  function collectExports(file, visited) {
197
310
  if (visited.has(file))
198
311
  return new Set();
@@ -246,18 +359,33 @@ function resolveRelative(fromFile, rel) {
246
359
  return null;
247
360
  const base = nodePath.resolve(nodePath.dirname(fromFile), rel);
248
361
  const candidates = [
362
+ base, // Verbatim with extension (e.g. './foo.ts' under NodeNext).
249
363
  base + '.ts',
250
364
  base + '.tsx',
365
+ base + '.d.ts',
366
+ base + '.mts',
367
+ base + '.cts',
251
368
  base + '.js',
252
369
  base + '.mjs',
253
370
  base + '.cjs',
254
371
  nodePath.join(base, 'index.ts'),
255
372
  nodePath.join(base, 'index.tsx'),
373
+ nodePath.join(base, 'index.d.ts'),
374
+ nodePath.join(base, 'index.mts'),
256
375
  nodePath.join(base, 'index.js'),
376
+ nodePath.join(base, 'index.mjs'),
257
377
  ];
258
- for (const c of candidates)
259
- if (existsSync(c))
260
- return c;
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
+ }
261
389
  return null;
262
390
  }
263
391
  function confidenceFor(mode, count) {
@@ -278,9 +406,25 @@ export function checkPackSymbolCompat(input) {
278
406
  const filesInspected = [];
279
407
  let availableSet = new Set();
280
408
  let usedMode = resolved.sourceMode;
409
+ const useTs = (input.mode ?? 'ts') === 'ts';
281
410
  if (resolved.source.length > 0) {
282
411
  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.
283
414
  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
+ }
284
428
  filesInspected.push(resolved.source);
285
429
  }
286
430
  else {
@@ -299,6 +443,10 @@ export function checkPackSymbolCompat(input) {
299
443
  const full = nodePath.join(distDir, entry);
300
444
  for (const s of collectJsExports(full))
301
445
  availableSet.add(s);
446
+ if (useTs) {
447
+ for (const s of collectExportsTs(full, new Set()))
448
+ availableSet.add(s);
449
+ }
302
450
  filesInspected.push(full);
303
451
  }
304
452
  if (resolved.sourceMode === 'declaration')
@@ -13,11 +13,19 @@
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
+ };
16
24
  import { existsSync, writeFileSync, mkdirSync } from 'node:fs';
17
25
  import { join } from 'node:path';
26
+ import { pathToFileURL } from 'node:url';
18
27
  import { inspectSharkcraft } from "./sharkcraft-inspector.js";
19
28
  import { buildTaskPacket } from "./task-packet.js";
20
- import { importModuleViaLoader } from '@shrkcrft/core';
21
29
  export function definePackTest(t) {
22
30
  return t;
23
31
  }
@@ -35,7 +43,7 @@ function findTestsFile(packPath) {
35
43
  return null;
36
44
  }
37
45
  async function loadTestCases(file) {
38
- const mod = (await importModuleViaLoader(file));
46
+ const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
39
47
  const list = mod.default ?? mod.tests ?? [];
40
48
  return [...list];
41
49
  }
@@ -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,9 +318,26 @@ 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. Generic naming conventions for common
322
- // pack-owned regions; the engine ships only these defaults.
323
- const KEY_TABLE_MARKERS = ['Keys', 'keys'];
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];
324
341
  const EVENT_REGISTRY_MARKERS = ['EventRegistry', 'EVENTS', 'eventRegistry', 'events.ts'];
325
342
  const TOKEN_REGISTRY_MARKERS = ['TokenRegistry', 'TOKENS', 'tokenRegistry', 'tokens.ts'];
326
343
  const maxDiffLines = options.maxDiffLines ?? 80;
@@ -1 +1 @@
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
+ {"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,10 +1,18 @@
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
+ };
1
9
  import { existsSync, readFileSync } from 'node:fs';
2
10
  import * as nodePath from 'node:path';
3
- import { importModuleViaLoader } from '@shrkcrft/core';
11
+ import { pathToFileURL } from 'node:url';
4
12
  export const PLAYBOOK_REGISTRY_SCHEMA = 'sharkcraft.playbook-registry/v1';
5
13
  const CACHE = new Map();
6
14
  async function importDefault(file) {
7
- const mod = (await importModuleViaLoader(file));
15
+ const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
8
16
  if (Array.isArray(mod.default))
9
17
  return mod.default;
10
18
  if (mod.default && typeof mod.default === 'object')