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

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 (112) hide show
  1. package/dist/agent-brief.d.ts.map +1 -1
  2. package/dist/agent-brief.js +59 -10
  3. package/dist/agent-task-prep.d.ts.map +1 -1
  4. package/dist/agent-task-prep.js +1 -3
  5. package/dist/ai-readiness.d.ts +84 -9
  6. package/dist/ai-readiness.d.ts.map +1 -1
  7. package/dist/ai-readiness.js +161 -30
  8. package/dist/apply-dispatch-trace.d.ts +1 -2
  9. package/dist/apply-dispatch-trace.d.ts.map +1 -1
  10. package/dist/apply-dispatch-trace.js +0 -9
  11. package/dist/area-explore.d.ts.map +1 -1
  12. package/dist/area-explore.js +1 -5
  13. package/dist/area-map.d.ts +0 -5
  14. package/dist/area-map.d.ts.map +1 -1
  15. package/dist/area-map.js +0 -10
  16. package/dist/compliance-profiles.js +1 -1
  17. package/dist/construct-adoption.d.ts.map +1 -1
  18. package/dist/construct-adoption.js +10 -11
  19. package/dist/construct-registry.d.ts.map +1 -1
  20. package/dist/construct-registry.js +2 -10
  21. package/dist/contract-template-registry.d.ts.map +1 -1
  22. package/dist/contract-template-registry.js +2 -10
  23. package/dist/convention-registry.d.ts.map +1 -1
  24. package/dist/convention-registry.js +2 -10
  25. package/dist/decision-records.d.ts.map +1 -1
  26. package/dist/decision-records.js +2 -9
  27. package/dist/demo-script.d.ts +0 -1
  28. package/dist/demo-script.d.ts.map +1 -1
  29. package/dist/demo-script.js +0 -43
  30. package/dist/docs-check.js +1 -1
  31. package/dist/drift-baseline.d.ts.map +1 -1
  32. package/dist/drift-baseline.js +5 -2
  33. package/dist/feedback-ingestion.d.ts.map +1 -1
  34. package/dist/feedback-ingestion.js +2 -16
  35. package/dist/helper-registry.d.ts +27 -54
  36. package/dist/helper-registry.d.ts.map +1 -1
  37. package/dist/helper-registry.js +16 -517
  38. package/dist/impact-analysis.d.ts.map +1 -1
  39. package/dist/impact-analysis.js +4 -5
  40. package/dist/index.d.ts +1 -2
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +1 -2
  43. package/dist/migration-profile-registry.d.ts.map +1 -1
  44. package/dist/migration-profile-registry.js +2 -10
  45. package/dist/monorepo-onboarding.js +2 -2
  46. package/dist/onboarding-report.d.ts.map +1 -1
  47. package/dist/onboarding-report.js +5 -1
  48. package/dist/onboarding.d.ts +1 -1
  49. package/dist/onboarding.d.ts.map +1 -1
  50. package/dist/onboarding.js +5 -64
  51. package/dist/ownership.js +2 -10
  52. package/dist/pack-contributions-inventory.d.ts +0 -1
  53. package/dist/pack-contributions-inventory.d.ts.map +1 -1
  54. package/dist/pack-contributions-inventory.js +0 -24
  55. package/dist/pack-helper-registry.d.ts.map +1 -1
  56. package/dist/pack-helper-registry.js +2 -10
  57. package/dist/pack-release-check.d.ts.map +1 -1
  58. package/dist/pack-release-check.js +4 -11
  59. package/dist/pack-signature-status.d.ts.map +1 -1
  60. package/dist/pack-signature-status.js +0 -1
  61. package/dist/pack-test-runner.js +2 -10
  62. package/dist/plan-simulation.d.ts.map +1 -1
  63. package/dist/plan-simulation.js +3 -20
  64. package/dist/playbook-registry.d.ts.map +1 -1
  65. package/dist/playbook-registry.js +2 -10
  66. package/dist/policy-engine.d.ts.map +1 -1
  67. package/dist/policy-engine.js +3 -11
  68. package/dist/policy-test.js +3 -11
  69. package/dist/profile-registry.d.ts +0 -1
  70. package/dist/profile-registry.d.ts.map +1 -1
  71. package/dist/profile-registry.js +4 -32
  72. package/dist/quality-baseline.d.ts.map +1 -1
  73. package/dist/quality-baseline.js +3 -1
  74. package/dist/ranker-explainability.d.ts.map +1 -1
  75. package/dist/ranker-explainability.js +3 -9
  76. package/dist/registration-hint-registry.d.ts.map +1 -1
  77. package/dist/registration-hint-registry.js +2 -10
  78. package/dist/release-readiness.js +3 -3
  79. package/dist/reposet.js +1 -1
  80. package/dist/repository-knowledge-model.d.ts +1 -1
  81. package/dist/repository-knowledge-model.d.ts.map +1 -1
  82. package/dist/scaffold-patterns.js +2 -10
  83. package/dist/search-tuning-registry.d.ts.map +1 -1
  84. package/dist/search-tuning-registry.js +2 -10
  85. package/dist/self-config-doctor-v2.d.ts +1 -1
  86. package/dist/self-config-doctor-v2.d.ts.map +1 -1
  87. package/dist/self-config-doctor-v2.js +6 -10
  88. package/dist/self-config-doctor.d.ts.map +1 -1
  89. package/dist/self-config-doctor.js +7 -13
  90. package/dist/sharkcraft-inspector.d.ts.map +1 -1
  91. package/dist/sharkcraft-inspector.js +1 -0
  92. package/dist/start-here.d.ts +1 -1
  93. package/dist/start-here.js +1 -1
  94. package/dist/synthesize-from-onboarding.d.ts +68 -0
  95. package/dist/synthesize-from-onboarding.d.ts.map +1 -0
  96. package/dist/synthesize-from-onboarding.js +508 -0
  97. package/dist/task-ranker.d.ts.map +1 -1
  98. package/dist/task-ranker.js +1 -31
  99. package/dist/task-routing-hint-registry.d.ts.map +1 -1
  100. package/dist/task-routing-hint-registry.js +2 -10
  101. package/dist/test-runner.d.ts.map +1 -1
  102. package/dist/test-runner.js +8 -16
  103. package/dist/universal-search.d.ts +0 -1
  104. package/dist/universal-search.d.ts.map +1 -1
  105. package/dist/universal-search.js +0 -12
  106. package/package.json +17 -17
  107. package/dist/plugin-lifecycle-profile-registry.d.ts +0 -52
  108. package/dist/plugin-lifecycle-profile-registry.d.ts.map +0 -1
  109. package/dist/plugin-lifecycle-profile-registry.js +0 -202
  110. package/dist/plugin-lifecycle.d.ts +0 -132
  111. package/dist/plugin-lifecycle.d.ts.map +0 -1
  112. package/dist/plugin-lifecycle.js +0 -477
@@ -1,24 +1,16 @@
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 } from 'node:fs';
10
2
  import * as nodePath from 'node:path';
11
- import { pathToFileURL } from 'node:url';
12
3
  import { buildContext } from '@shrkcrft/context';
13
4
  import { buildTaskPacket } from "./task-packet.js";
14
5
  import { rankKnowledgeEntries } from "./task-ranker.js";
15
6
  import { buildProjectOverview, renderOverviewText } from "./project-overview.js";
16
7
  import { HELPERS } from "./helper-registry.js";
8
+ import { importModuleViaLoader } from '@shrkcrft/core';
17
9
  async function importDefaultArray(absPath) {
18
10
  if (!existsSync(absPath))
19
11
  return [];
20
12
  try {
21
- const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(absPath).href)));
13
+ const mod = (await importModuleViaLoader(absPath));
22
14
  return Array.isArray(mod.default) ? mod.default : [];
23
15
  }
24
16
  catch {
@@ -152,8 +144,8 @@ function buildMissingIncludeSuggestions(id, existsInRegistry, task) {
152
144
  }
153
145
  return [
154
146
  `Entry "${id}" exists but did not make the context for task "${task}".`,
155
- `Try adding domain-aligned appliesWhen values (create-plugin / generate-service / register-defaults / …).`,
156
- `Add task-relevant tags (plugin / capability / adapter / …).`,
147
+ `Try adding domain-aligned appliesWhen values (generate-service / generate-utility / create-pipeline / …).`,
148
+ `Add task-relevant tags (service / utility / route / …).`,
157
149
  `Reference the entry from a preset's includes.knowledgeIds / ruleIds so it ranks higher.`,
158
150
  `Or raise its priority / shorten the title to include task-relevant tokens.`,
159
151
  ];
@@ -227,7 +219,7 @@ export function runAgentContractTest(inspection, test, registries) {
227
219
  suggestions: exists
228
220
  ? [
229
221
  `Template "${id}" exists but the ranker did not place it in the top results.`,
230
- 'Add task-aligned tags/appliesWhen to the template (e.g. tags:["plugin"], appliesWhen:["create-plugin"]).',
222
+ 'Add task-aligned tags/appliesWhen to the template (e.g. tags:["service"], appliesWhen:["generate-service"]).',
231
223
  'Reference the template from a preset that matches the task profile (includes.templateIds).',
232
224
  'Reference it from a pipeline step (`step.references`).',
233
225
  ]
@@ -245,8 +237,8 @@ export function runAgentContractTest(inspection, test, registries) {
245
237
  suggestions: exists
246
238
  ? [
247
239
  `Rule "${id}" exists but the ranker did not surface it for "${test.task}".`,
248
- 'Align its appliesWhen with the domain (e.g. create-plugin / register-defaults / generate-service).',
249
- 'Add domain tags (plugin / capability / adapter / defaults).',
240
+ 'Align its appliesWhen with the domain (e.g. generate-service / generate-utility / create-pipeline).',
241
+ 'Add domain tags (service / utility / route / pipeline).',
250
242
  'Reference it from actionHints.relatedTemplates on a rule that *is* ranking, or include it in a preset.',
251
243
  ]
252
244
  : [
@@ -477,7 +469,7 @@ async function importDefaultIdsArray(absPath) {
477
469
  if (!existsSync(absPath))
478
470
  return [];
479
471
  try {
480
- const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(absPath).href)));
472
+ const mod = (await importModuleViaLoader(absPath));
481
473
  return Array.isArray(mod.default) ? mod.default : [];
482
474
  }
483
475
  catch {
@@ -17,7 +17,6 @@ export declare enum SearchResultKind {
17
17
  ScaffoldPattern = "scaffold-pattern",
18
18
  ContractTemplate = "contract-template",
19
19
  MigrationProfile = "migration-profile",
20
- PluginLifecycleProfile = "plugin-lifecycle-profile",
21
20
  FeedbackRule = "feedback-rule",
22
21
  TaskRoutingHint = "task-routing-hint",
23
22
  Docs = "docs",
@@ -1 +1 @@
1
- {"version":3,"file":"universal-search.d.ts","sourceRoot":"","sources":["../src/universal-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"universal-search.d.ts","sourceRoot":"","sources":["../src/universal-search.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAgC,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGhG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,uBAAuB,mCAAmC,CAAC;AAExE,oBAAY,gBAAgB;IAC1B,OAAO,YAAY;IACnB,OAAO,aAAa;IACpB,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,eAAe,qBAAqB;IACpC,gBAAgB,sBAAsB;IACtC,gBAAgB,sBAAsB;IACtC,YAAY,kBAAkB;IAC9B,eAAe,sBAAsB;IACrC,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACrD,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,QAAQ,CAAC,aAAa,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACvD,QAAQ,CAAC,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnD,QAAQ,CAAC,UAAU,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACrD;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,OAAO,uBAAuB,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AA+CD,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,qBAAqB,EACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,sBAAsB,CAAC,CA4NjC;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAmDhF;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CA8BpF"}
@@ -17,7 +17,6 @@ import { buildPackContributionsInventory } from "./pack-contributions-inventory.
17
17
  import { listConventions } from "./convention-registry.js";
18
18
  import { listPackHelpers } from "./pack-helper-registry.js";
19
19
  import { explainTaskRouting } from "./task-routing-hint-registry.js";
20
- import { listPluginLifecycleProfiles } from "./plugin-lifecycle-profile-registry.js";
21
20
  import { uncertaintyReportFromSummary } from "./uncertainty-report.js";
22
21
  import { buildUncertaintySummary } from "./uncertainty.js";
23
22
  import { buildTaskPacket } from "./task-packet.js";
@@ -39,7 +38,6 @@ export var SearchResultKind;
39
38
  SearchResultKind["ScaffoldPattern"] = "scaffold-pattern";
40
39
  SearchResultKind["ContractTemplate"] = "contract-template";
41
40
  SearchResultKind["MigrationProfile"] = "migration-profile";
42
- SearchResultKind["PluginLifecycleProfile"] = "plugin-lifecycle-profile";
43
41
  SearchResultKind["FeedbackRule"] = "feedback-rule";
44
42
  SearchResultKind["TaskRoutingHint"] = "task-routing-hint";
45
43
  SearchResultKind["Docs"] = "docs";
@@ -89,7 +87,6 @@ export async function buildUniversalSearch(inspection, query, options = {}) {
89
87
  const conventions = await listConventions(inspection);
90
88
  const helpers = await listPackHelpers(inspection);
91
89
  const routing = await explainTaskRouting(inspection, q);
92
- const lifecycle = await listPluginLifecycleProfiles(inspection);
93
90
  const knowledgeEntries = inspection.knowledgeEntries;
94
91
  const allHits = [];
95
92
  // Knowledge
@@ -113,13 +110,6 @@ export async function buildUniversalSearch(inspection, query, options = {}) {
113
110
  allHits.push(makeHit(SearchResultKind.Helper, h.helper.id, h.helper.title, h.source === 'pack' ? 'pack' : 'local', h.packageName, s, `shrk helper plan ${h.helper.id}`));
114
111
  }
115
112
  }
116
- // Plugin lifecycle profiles
117
- for (const p of lifecycle) {
118
- const s = score(`${p.profile.id} ${p.profile.title} ${(p.profile.tags ?? []).join(' ')}`, q);
119
- if (s.score > 0) {
120
- allHits.push(makeHit(SearchResultKind.PluginLifecycleProfile, p.profile.id, p.profile.title, p.source === 'pack' ? 'pack' : 'local', p.packageName, s, `shrk plugin lifecycle profile ${p.profile.id}`));
121
- }
122
- }
123
113
  // Pack contributions (catch-all for kinds we didn't iterate above)
124
114
  for (const e of inv.entries) {
125
115
  if (allHits.find((h) => h.id === e.id && String(h.kind) === e.kind))
@@ -140,7 +130,6 @@ export async function buildUniversalSearch(inspection, query, options = {}) {
140
130
  decision: SearchResultKind.Decision,
141
131
  'contract-template': SearchResultKind.ContractTemplate,
142
132
  'migration-profile': SearchResultKind.MigrationProfile,
143
- 'plugin-lifecycle-profile': SearchResultKind.PluginLifecycleProfile,
144
133
  'feedback-rule': SearchResultKind.FeedbackRule,
145
134
  'task-routing-hint': SearchResultKind.TaskRoutingHint,
146
135
  helper: SearchResultKind.Helper,
@@ -184,7 +173,6 @@ export async function buildUniversalSearch(inspection, query, options = {}) {
184
173
  SearchResultKind.Policy,
185
174
  SearchResultKind.ContractTemplate,
186
175
  SearchResultKind.MigrationProfile,
187
- SearchResultKind.PluginLifecycleProfile,
188
176
  SearchResultKind.ScaffoldPattern,
189
177
  SearchResultKind.FeedbackRule,
190
178
  SearchResultKind.TaskRoutingHint,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shrkcrft/inspector",
3
- "version": "0.1.0-alpha.6",
3
+ "version": "0.1.0-alpha.8",
4
4
  "description": "SharkCraft inspector: project overview, doctor checks, AI-agent instructions.",
5
5
  "license": "MIT",
6
6
  "author": "SharkCraft contributors",
@@ -42,22 +42,22 @@
42
42
  "typecheck": "tsc --noEmit -p tsconfig.json"
43
43
  },
44
44
  "dependencies": {
45
- "@shrkcrft/core": "^0.1.0-alpha.6",
46
- "@shrkcrft/config": "^0.1.0-alpha.6",
47
- "@shrkcrft/workspace": "^0.1.0-alpha.6",
48
- "@shrkcrft/knowledge": "^0.1.0-alpha.6",
49
- "@shrkcrft/rules": "^0.1.0-alpha.6",
50
- "@shrkcrft/paths": "^0.1.0-alpha.6",
51
- "@shrkcrft/templates": "^0.1.0-alpha.6",
52
- "@shrkcrft/context": "^0.1.0-alpha.6",
53
- "@shrkcrft/pipelines": "^0.1.0-alpha.6",
54
- "@shrkcrft/packs": "^0.1.0-alpha.6",
55
- "@shrkcrft/presets": "^0.1.0-alpha.6",
56
- "@shrkcrft/boundaries": "^0.1.0-alpha.6",
57
- "@shrkcrft/generator": "^0.1.0-alpha.6",
58
- "@shrkcrft/importer": "^0.1.0-alpha.6",
59
- "@shrkcrft/plugin-api": "^0.1.0-alpha.6",
60
- "@shrkcrft/dashboard-api": "^0.1.0-alpha.6",
45
+ "@shrkcrft/core": "^0.1.0-alpha.8",
46
+ "@shrkcrft/config": "^0.1.0-alpha.8",
47
+ "@shrkcrft/workspace": "^0.1.0-alpha.8",
48
+ "@shrkcrft/knowledge": "^0.1.0-alpha.8",
49
+ "@shrkcrft/rules": "^0.1.0-alpha.8",
50
+ "@shrkcrft/paths": "^0.1.0-alpha.8",
51
+ "@shrkcrft/templates": "^0.1.0-alpha.8",
52
+ "@shrkcrft/context": "^0.1.0-alpha.8",
53
+ "@shrkcrft/pipelines": "^0.1.0-alpha.8",
54
+ "@shrkcrft/packs": "^0.1.0-alpha.8",
55
+ "@shrkcrft/presets": "^0.1.0-alpha.8",
56
+ "@shrkcrft/boundaries": "^0.1.0-alpha.8",
57
+ "@shrkcrft/generator": "^0.1.0-alpha.8",
58
+ "@shrkcrft/importer": "^0.1.0-alpha.8",
59
+ "@shrkcrft/plugin-api": "^0.1.0-alpha.8",
60
+ "@shrkcrft/dashboard-api": "^0.1.0-alpha.8",
61
61
  "typescript": "^5.6.0"
62
62
  },
63
63
  "publishConfig": {
@@ -1,52 +0,0 @@
1
- import { type IPluginLifecycleProfile } from '@shrkcrft/plugin-api';
2
- import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
3
- export declare const PLUGIN_LIFECYCLE_PROFILE_REGISTRY_SCHEMA = "sharkcraft.plugin-lifecycle-profile-registry/v1";
4
- export declare enum PluginLifecycleProfileSource {
5
- Local = "local",
6
- Pack = "pack",
7
- Fixture = "fixture"
8
- }
9
- export interface IPluginLifecycleProfileEntry {
10
- readonly profile: IPluginLifecycleProfile;
11
- readonly source: PluginLifecycleProfileSource;
12
- readonly packageName?: string;
13
- readonly sourceFile: string;
14
- }
15
- export declare enum ProfileDoctorSeverity {
16
- Info = "info",
17
- Warning = "warning",
18
- Error = "error"
19
- }
20
- export interface IPluginLifecycleProfileDoctorIssue {
21
- readonly severity: ProfileDoctorSeverity;
22
- readonly code: string;
23
- readonly message: string;
24
- readonly profileId?: string;
25
- readonly source?: string;
26
- }
27
- export declare function loadPluginLifecycleProfiles(inspection: ISharkcraftInspection): Promise<{
28
- entries: readonly IPluginLifecycleProfileEntry[];
29
- issues: readonly IPluginLifecycleProfileDoctorIssue[];
30
- }>;
31
- export declare function listPluginLifecycleProfiles(inspection: ISharkcraftInspection): Promise<readonly IPluginLifecycleProfileEntry[]>;
32
- export declare function findPluginLifecycleProfile(inspection: ISharkcraftInspection, id: string): Promise<IPluginLifecycleProfileEntry | null>;
33
- export declare function listPluginLifecycleProfileIssues(inspection: ISharkcraftInspection): Promise<readonly IPluginLifecycleProfileDoctorIssue[]>;
34
- export declare function clearPluginLifecycleProfileCache(projectRoot?: string): void;
35
- export interface IResolveProfileOptions {
36
- /** Explicit profile id (e.g. from --profile). */
37
- readonly profileId?: string;
38
- /** If true and there is exactly one profile, return it implicitly. */
39
- readonly allowSingleDefault?: boolean;
40
- }
41
- export interface IResolveProfileResult {
42
- readonly entry?: IPluginLifecycleProfileEntry;
43
- readonly error?: string;
44
- readonly availableIds: readonly string[];
45
- }
46
- /**
47
- * Pick a profile from the registry. If `profileId` is supplied, look it up.
48
- * If not and exactly one profile is registered and `allowSingleDefault` is
49
- * true, return it. Otherwise emit an explanatory error string and list ids.
50
- */
51
- export declare function resolvePluginLifecycleProfile(inspection: ISharkcraftInspection, options?: IResolveProfileOptions): Promise<IResolveProfileResult>;
52
- //# sourceMappingURL=plugin-lifecycle-profile-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-lifecycle-profile-registry.d.ts","sourceRoot":"","sources":["../src/plugin-lifecycle-profile-registry.ts"],"names":[],"mappings":"AAUA,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,wCAAwC,oDACF,CAAC;AAEpD,oBAAY,4BAA4B;IACtC,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,oBAAY,qBAAqB;IAC/B,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAsCD,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC;IACT,OAAO,EAAE,SAAS,4BAA4B,EAAE,CAAC;IACjD,MAAM,EAAE,SAAS,kCAAkC,EAAE,CAAC;CACvD,CAAC,CAoGD;AAED,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,4BAA4B,EAAE,CAAC,CAGlD;AAED,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAG9C;AAED,wBAAsB,gCAAgC,CACpD,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,kCAAkC,EAAE,CAAC,CAGxD;AAED,wBAAgB,gCAAgC,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAG3E;AAED,MAAM,WAAW,sBAAsB;IACrC,iDAAiD;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,4BAA4B,CAAC;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED;;;;GAIG;AACH,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAyBhC"}
@@ -1,202 +0,0 @@
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
- /**
10
- * Plugin lifecycle profile registry.
11
- *
12
- * Loads pack-contributed and locally configured `IPluginLifecycleProfile`
13
- * entries. Duplicate ids and invalid profiles surface as doctor issues.
14
- * Source attribution lets the CLI tell the user where a profile came from.
15
- */
16
- import { existsSync } from 'node:fs';
17
- import * as nodePath from 'node:path';
18
- import { pathToFileURL } from 'node:url';
19
- import { validatePluginLifecycleProfile, } from '@shrkcrft/plugin-api';
20
- export const PLUGIN_LIFECYCLE_PROFILE_REGISTRY_SCHEMA = 'sharkcraft.plugin-lifecycle-profile-registry/v1';
21
- export var PluginLifecycleProfileSource;
22
- (function (PluginLifecycleProfileSource) {
23
- PluginLifecycleProfileSource["Local"] = "local";
24
- PluginLifecycleProfileSource["Pack"] = "pack";
25
- PluginLifecycleProfileSource["Fixture"] = "fixture";
26
- })(PluginLifecycleProfileSource || (PluginLifecycleProfileSource = {}));
27
- export var ProfileDoctorSeverity;
28
- (function (ProfileDoctorSeverity) {
29
- ProfileDoctorSeverity["Info"] = "info";
30
- ProfileDoctorSeverity["Warning"] = "warning";
31
- ProfileDoctorSeverity["Error"] = "error";
32
- })(ProfileDoctorSeverity || (ProfileDoctorSeverity = {}));
33
- const CACHE = new Map();
34
- async function importDefaultProfiles(file) {
35
- const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
36
- if (Array.isArray(mod.default))
37
- return mod.default;
38
- if (mod.default && typeof mod.default === 'object')
39
- return [mod.default];
40
- if (Array.isArray(mod.pluginLifecycleProfiles))
41
- return mod.pluginLifecycleProfiles;
42
- return [];
43
- }
44
- function localProfileFiles(inspection) {
45
- const out = [];
46
- const dir = inspection.sharkcraftDir;
47
- if (!dir)
48
- return [];
49
- for (const name of ['plugin-lifecycle-profiles.ts', 'plugin-lifecycle-profiles/index.ts']) {
50
- const full = nodePath.join(dir, name);
51
- if (existsSync(full))
52
- out.push(full);
53
- }
54
- const cfg = inspection.config;
55
- for (const rel of cfg?.pluginLifecycleProfileFiles ?? []) {
56
- out.push(nodePath.isAbsolute(rel) ? rel : nodePath.join(dir, rel));
57
- }
58
- return out;
59
- }
60
- export async function loadPluginLifecycleProfiles(inspection) {
61
- const cacheKey = `${inspection.projectRoot}:${(inspection.packs.validPacks ?? [])
62
- .map((p) => p.packageName + '@' + p.packageVersion)
63
- .join(',')}`;
64
- const cached = CACHE.get(inspection.projectRoot);
65
- if (cached && cached.cacheKey === cacheKey) {
66
- return { entries: cached.entries, issues: cached.issues };
67
- }
68
- const seen = new Map();
69
- const entries = [];
70
- const issues = [];
71
- const ingest = (profile, source, packageName, sourceFile) => {
72
- const validation = validatePluginLifecycleProfile(profile);
73
- if (!validation.valid) {
74
- for (const issue of validation.issues) {
75
- issues.push({
76
- severity: ProfileDoctorSeverity.Error,
77
- code: 'invalid-profile',
78
- message: `${issue.field}: ${issue.message}`,
79
- profileId: typeof profile.id === 'string' ? profile.id : undefined,
80
- source: sourceFile,
81
- });
82
- }
83
- return;
84
- }
85
- const existing = seen.get(profile.id);
86
- if (existing) {
87
- issues.push({
88
- severity: ProfileDoctorSeverity.Error,
89
- code: 'duplicate-id',
90
- message: `Profile id "${profile.id}" already loaded from ${existing.sourceFile} (source=${existing.source}); skipping duplicate from ${sourceFile} (source=${source}).`,
91
- profileId: profile.id,
92
- source: sourceFile,
93
- });
94
- return;
95
- }
96
- const entry = {
97
- profile,
98
- source,
99
- ...(packageName ? { packageName } : {}),
100
- sourceFile,
101
- };
102
- seen.set(profile.id, entry);
103
- entries.push(entry);
104
- };
105
- for (const file of localProfileFiles(inspection)) {
106
- try {
107
- const list = await importDefaultProfiles(file);
108
- const rel = nodePath.relative(inspection.projectRoot, file) || file;
109
- for (const raw of list) {
110
- ingest(raw, PluginLifecycleProfileSource.Local, undefined, rel);
111
- }
112
- }
113
- catch (e) {
114
- issues.push({
115
- severity: ProfileDoctorSeverity.Warning,
116
- code: 'load-failed',
117
- message: `Failed to load ${file}: ${e.message}`,
118
- source: file,
119
- });
120
- }
121
- }
122
- for (const pack of inspection.packs.validPacks ?? []) {
123
- const contributions = (pack.manifest?.contributions ?? {});
124
- for (const rel of contributions.pluginLifecycleProfileFiles ?? []) {
125
- const file = nodePath.resolve(pack.packageRoot, rel);
126
- if (!existsSync(file)) {
127
- issues.push({
128
- severity: ProfileDoctorSeverity.Warning,
129
- code: 'missing-file',
130
- message: `Pack ${pack.packageName} declares profile file ${rel} but it is missing.`,
131
- source: file,
132
- });
133
- continue;
134
- }
135
- try {
136
- const list = await importDefaultProfiles(file);
137
- for (const raw of list) {
138
- ingest(raw, PluginLifecycleProfileSource.Pack, pack.packageName, rel);
139
- }
140
- }
141
- catch (e) {
142
- issues.push({
143
- severity: ProfileDoctorSeverity.Warning,
144
- code: 'load-failed',
145
- message: `Pack ${pack.packageName} (${rel}): ${e.message}`,
146
- source: file,
147
- });
148
- }
149
- }
150
- }
151
- CACHE.set(inspection.projectRoot, { cacheKey, entries, issues });
152
- return { entries, issues };
153
- }
154
- export async function listPluginLifecycleProfiles(inspection) {
155
- const { entries } = await loadPluginLifecycleProfiles(inspection);
156
- return entries;
157
- }
158
- export async function findPluginLifecycleProfile(inspection, id) {
159
- const entries = await listPluginLifecycleProfiles(inspection);
160
- return entries.find((e) => e.profile.id === id) ?? null;
161
- }
162
- export async function listPluginLifecycleProfileIssues(inspection) {
163
- const { issues } = await loadPluginLifecycleProfiles(inspection);
164
- return issues;
165
- }
166
- export function clearPluginLifecycleProfileCache(projectRoot) {
167
- if (projectRoot)
168
- CACHE.delete(projectRoot);
169
- else
170
- CACHE.clear();
171
- }
172
- /**
173
- * Pick a profile from the registry. If `profileId` is supplied, look it up.
174
- * If not and exactly one profile is registered and `allowSingleDefault` is
175
- * true, return it. Otherwise emit an explanatory error string and list ids.
176
- */
177
- export async function resolvePluginLifecycleProfile(inspection, options = {}) {
178
- const entries = await listPluginLifecycleProfiles(inspection);
179
- const availableIds = entries.map((e) => e.profile.id);
180
- if (options.profileId) {
181
- const found = entries.find((e) => e.profile.id === options.profileId);
182
- if (found)
183
- return { entry: found, availableIds };
184
- return {
185
- error: `Unknown plugin lifecycle profile "${options.profileId}". Available: ${availableIds.length === 0 ? '(none registered)' : availableIds.join(', ')}. Contribute one via a pack manifest "pluginLifecycleProfileFiles" entry or sharkcraft/plugin-lifecycle-profiles.ts.`,
186
- availableIds,
187
- };
188
- }
189
- if (entries.length === 0) {
190
- return {
191
- error: 'No plugin lifecycle profiles registered. Contribute one via a pack manifest "pluginLifecycleProfileFiles" entry or sharkcraft/plugin-lifecycle-profiles.ts.',
192
- availableIds,
193
- };
194
- }
195
- if (entries.length === 1 && options.allowSingleDefault) {
196
- return { entry: entries[0], availableIds };
197
- }
198
- return {
199
- error: `--profile required. Available: ${availableIds.join(', ')}.`,
200
- availableIds,
201
- };
202
- }
@@ -1,132 +0,0 @@
1
- /**
2
- * Plan-only plugin lifecycle helpers driven by a resolved profile.
3
- *
4
- * Lifecycle helpers never write source directly. They emit a structured plan
5
- * containing:
6
- * - replaceOps: safe `replace` plan operations against the profile's
7
- * key-table file, barrels, and other registry files.
8
- * - manualSteps: things the planned-operation model cannot do today
9
- * (rename a folder, delete a folder) when folder ops are
10
- * not requested or not safe.
11
- * - conflicts: anchors that could not be found — surfaced as advisory
12
- * hints (no failure).
13
- * - destructive: `true` for remove; `true` for rename when files need to
14
- * be renamed on disk.
15
- *
16
- * The engine has no project-specific knowledge: every path / key style / barrel
17
- * comes from the supplied `IPluginLifecycleProfile`. A pack contributes the
18
- * profile via `pluginLifecycleProfileFiles` on the manifest.
19
- */
20
- import { type IPluginLifecycleProfile } from '@shrkcrft/plugin-api';
21
- export declare enum PluginLifecycleAction {
22
- Rename = "rename",
23
- Remove = "remove"
24
- }
25
- export interface IPluginLifecycleManualStep {
26
- kind: 'delete-file' | 'delete-folder' | 'rename-file' | 'rename-folder';
27
- targetPath: string;
28
- newPath?: string;
29
- reason: string;
30
- }
31
- export interface IPluginLifecycleReplaceOp {
32
- targetPath: string;
33
- operation: {
34
- kind: 'replace';
35
- find: string;
36
- replaceWith: string;
37
- description: string;
38
- };
39
- }
40
- export interface IPluginLifecycleFolderOp {
41
- kind: 'rename-folder' | 'delete-folder';
42
- targetPath: string;
43
- newPath?: string;
44
- safety: 'safe' | 'unsafe';
45
- safetyReason?: string;
46
- reason: string;
47
- }
48
- export interface IPluginLifecyclePlan {
49
- schema: 'sharkcraft.plugin-lifecycle/v1';
50
- action: PluginLifecycleAction;
51
- /** Profile id (e.g. "my-monorepo"). Engine does not constrain this to a literal. */
52
- profile: string;
53
- oldName: string;
54
- newName?: string;
55
- destructive: boolean;
56
- humanApprovalRequired: boolean;
57
- replaceOps: ReadonlyArray<IPluginLifecycleReplaceOp>;
58
- manualSteps: ReadonlyArray<IPluginLifecycleManualStep>;
59
- /** Structured folder operations when --emit-folder-ops is requested. */
60
- folderOps?: ReadonlyArray<IPluginLifecycleFolderOp>;
61
- conflicts: ReadonlyArray<string>;
62
- validationCommands: ReadonlyArray<string>;
63
- }
64
- export interface IBuildPluginRenameInput {
65
- projectRoot: string;
66
- profile: IPluginLifecycleProfile;
67
- oldName: string;
68
- newName: string;
69
- /** When true, also emit structured folder rename ops in `folderOps[]`. */
70
- emitFolderOps?: boolean;
71
- }
72
- export declare function buildPluginRenamePlan(input: IBuildPluginRenameInput): IPluginLifecyclePlan;
73
- export interface IBuildPluginRemoveInput {
74
- projectRoot: string;
75
- profile: IPluginLifecycleProfile;
76
- oldName: string;
77
- /** When true, also emit structured folder delete ops in `folderOps[]`. */
78
- emitFolderOps?: boolean;
79
- }
80
- export declare function buildPluginRemovePlan(input: IBuildPluginRemoveInput): IPluginLifecyclePlan;
81
- /**
82
- * Convert a plugin-lifecycle plan into a saved plan (synthetic
83
- * templateId) so it can flow through `shrk apply`. ReplaceOps become
84
- * `expectedChanges` carrying their operation intent; folderOps[] is copied
85
- * through. The plan is unsigned by this helper; call `signPlan` separately.
86
- */
87
- export declare const PLUGIN_LIFECYCLE_SYNTHETIC_TEMPLATE = "__plugin-lifecycle__";
88
- export declare function pluginLifecyclePlanToSavedPlan(plan: IPluginLifecyclePlan, projectRoot: string): {
89
- schema: 'sharkcraft.plan/v2';
90
- templateId: string;
91
- name?: string;
92
- variables: Record<string, string>;
93
- projectRoot: string;
94
- createdAt: string;
95
- expectedChanges: {
96
- type: string;
97
- relativePath: string;
98
- sizeBytes: number;
99
- operation: IPluginLifecycleReplaceOp['operation'];
100
- }[];
101
- folderOps?: {
102
- kind: 'rename-folder' | 'delete-folder';
103
- targetPath: string;
104
- newPath?: string;
105
- reason?: string;
106
- }[];
107
- note?: string;
108
- };
109
- export declare function renderPluginLifecyclePlanText(plan: IPluginLifecyclePlan): string;
110
- export interface IPluginLifecycleListingInput {
111
- projectRoot: string;
112
- profile: IPluginLifecycleProfile;
113
- }
114
- export declare function buildPluginLifecycleListing(input: IPluginLifecycleListingInput): {
115
- pluginsByLayer: Readonly<Record<string, ReadonlyArray<string>>>;
116
- pluginKeys: ReadonlyArray<{
117
- key: string;
118
- value: string;
119
- }>;
120
- };
121
- /**
122
- * Doctor check: a profile is valid if every declared file exists and the
123
- * key-table file (if any) parses. This stays read-only; no fs mutations.
124
- */
125
- export interface IPluginLifecycleProfileDoctorEntry {
126
- readonly id: 'missing-key-table' | 'missing-barrel' | 'missing-plugin-root' | 'ok';
127
- readonly severity: 'info' | 'warning' | 'error';
128
- readonly path?: string;
129
- readonly message: string;
130
- }
131
- export declare function checkPluginLifecycleProfileHealth(projectRoot: string, profile: IPluginLifecycleProfile): readonly IPluginLifecycleProfileDoctorEntry[];
132
- //# sourceMappingURL=plugin-lifecycle.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plugin-lifecycle.d.ts","sourceRoot":"","sources":["../src/plugin-lifecycle.ts"],"names":[],"mappings":"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"}