@shrkcrft/inspector 0.1.0-alpha.2 → 0.1.0-alpha.20
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.
- package/dist/agent-brief.d.ts.map +1 -1
- package/dist/agent-brief.js +59 -10
- package/dist/agent-contract-gate.d.ts.map +1 -1
- package/dist/agent-contract-gate.js +25 -2
- package/dist/agent-instructions.d.ts.map +1 -1
- package/dist/agent-instructions.js +11 -0
- package/dist/agent-task-prep.d.ts.map +1 -1
- package/dist/agent-task-prep.js +1 -3
- package/dist/ai-readiness.d.ts +84 -9
- package/dist/ai-readiness.d.ts.map +1 -1
- package/dist/ai-readiness.js +181 -35
- package/dist/apply-dispatch-trace.d.ts +1 -2
- package/dist/apply-dispatch-trace.d.ts.map +1 -1
- package/dist/apply-dispatch-trace.js +0 -9
- package/dist/area-explore.d.ts.map +1 -1
- package/dist/area-explore.js +4 -6
- package/dist/area-map.d.ts +0 -5
- package/dist/area-map.d.ts.map +1 -1
- package/dist/area-map.js +0 -10
- package/dist/changed-preflight.d.ts +7 -0
- package/dist/changed-preflight.d.ts.map +1 -1
- package/dist/changed-preflight.js +56 -9
- package/dist/changes-summary.d.ts.map +1 -1
- package/dist/changes-summary.js +10 -1
- package/dist/check-guardrail-globs.d.ts +16 -0
- package/dist/check-guardrail-globs.d.ts.map +1 -0
- package/dist/check-guardrail-globs.js +38 -0
- package/dist/code-intelligence-doctor.d.ts +21 -0
- package/dist/code-intelligence-doctor.d.ts.map +1 -0
- package/dist/code-intelligence-doctor.js +985 -0
- package/dist/command-recommender.d.ts.map +1 -1
- package/dist/command-recommender.js +23 -0
- package/dist/compliance-profiles.js +1 -1
- package/dist/construct-adoption-diff.d.ts.map +1 -1
- package/dist/construct-adoption-diff.js +2 -1
- package/dist/construct-adoption.d.ts.map +1 -1
- package/dist/construct-adoption.js +10 -11
- package/dist/construct-inference.d.ts.map +1 -1
- package/dist/construct-inference.js +5 -2
- package/dist/construct-registry.d.ts.map +1 -1
- package/dist/construct-registry.js +2 -10
- package/dist/contract-file-rule.d.ts +8 -0
- package/dist/contract-file-rule.d.ts.map +1 -1
- package/dist/contract-file-rule.js +8 -3
- package/dist/contract-template-registry.d.ts.map +1 -1
- package/dist/contract-template-registry.js +2 -10
- package/dist/contradictions.d.ts +8 -1
- package/dist/contradictions.d.ts.map +1 -1
- package/dist/contradictions.js +37 -35
- package/dist/convention-registry.d.ts.map +1 -1
- package/dist/convention-registry.js +2 -10
- package/dist/coverage-report.d.ts.map +1 -1
- package/dist/coverage-report.js +14 -1
- package/dist/dashboard/dashboard-knowledge.d.ts +8 -0
- package/dist/dashboard/dashboard-knowledge.d.ts.map +1 -0
- package/dist/dashboard/dashboard-knowledge.js +259 -0
- package/dist/decision-records.d.ts.map +1 -1
- package/dist/decision-records.js +5 -10
- package/dist/delegate-catalog.d.ts +45 -0
- package/dist/delegate-catalog.d.ts.map +1 -0
- package/dist/delegate-catalog.js +50 -0
- package/dist/delegate-doctor.d.ts +15 -0
- package/dist/delegate-doctor.d.ts.map +1 -0
- package/dist/delegate-doctor.js +36 -0
- package/dist/delegate-pack-recipes.d.ts +29 -0
- package/dist/delegate-pack-recipes.d.ts.map +1 -0
- package/dist/delegate-pack-recipes.js +77 -0
- package/dist/demo-script.d.ts +0 -1
- package/dist/demo-script.d.ts.map +1 -1
- package/dist/demo-script.js +0 -43
- package/dist/docs-check.js +1 -1
- package/dist/drift-baseline.d.ts.map +1 -1
- package/dist/drift-baseline.js +5 -2
- package/dist/feedback-ingestion.d.ts.map +1 -1
- package/dist/feedback-ingestion.js +2 -16
- package/dist/git-helpers.d.ts +15 -0
- package/dist/git-helpers.d.ts.map +1 -1
- package/dist/git-helpers.js +51 -4
- package/dist/helper-registry.d.ts +27 -54
- package/dist/helper-registry.d.ts.map +1 -1
- package/dist/helper-registry.js +16 -517
- package/dist/impact-analysis.d.ts.map +1 -1
- package/dist/impact-analysis.js +14 -7
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/ingest-drafts.js +8 -4
- package/dist/migration-profile-registry.d.ts.map +1 -1
- package/dist/migration-profile-registry.js +2 -10
- package/dist/monorepo-onboarding.js +2 -2
- package/dist/onboarding-report.d.ts.map +1 -1
- package/dist/onboarding-report.js +5 -1
- package/dist/onboarding.d.ts +1 -1
- package/dist/onboarding.d.ts.map +1 -1
- package/dist/onboarding.js +9 -66
- package/dist/ownership.js +2 -10
- package/dist/pack-contributions-inventory.d.ts +0 -1
- package/dist/pack-contributions-inventory.d.ts.map +1 -1
- package/dist/pack-contributions-inventory.js +17 -29
- package/dist/pack-helper-registry.d.ts.map +1 -1
- package/dist/pack-helper-registry.js +2 -10
- package/dist/pack-release-check.d.ts.map +1 -1
- package/dist/pack-release-check.js +4 -11
- package/dist/pack-signature-status.d.ts.map +1 -1
- package/dist/pack-signature-status.js +18 -2
- package/dist/pack-test-runner.js +2 -10
- package/dist/plan-review.d.ts.map +1 -1
- package/dist/plan-review.js +5 -10
- package/dist/plan-simulation.d.ts +13 -0
- package/dist/plan-simulation.d.ts.map +1 -1
- package/dist/plan-simulation.js +4 -21
- package/dist/playbook-registry.d.ts.map +1 -1
- package/dist/playbook-registry.js +2 -10
- package/dist/policy-engine.d.ts.map +1 -1
- package/dist/policy-engine.js +3 -11
- package/dist/policy-test.js +3 -11
- package/dist/profile-registry.d.ts +0 -1
- package/dist/profile-registry.d.ts.map +1 -1
- package/dist/profile-registry.js +4 -32
- package/dist/propose-knowledge.d.ts +15 -0
- package/dist/propose-knowledge.d.ts.map +1 -1
- package/dist/propose-knowledge.js +37 -4
- package/dist/quality-baseline.d.ts.map +1 -1
- package/dist/quality-baseline.js +3 -1
- package/dist/ranker-explainability.d.ts.map +1 -1
- package/dist/ranker-explainability.js +3 -9
- package/dist/registration-hint-registry.d.ts.map +1 -1
- package/dist/registration-hint-registry.js +2 -10
- package/dist/registry-lifecycle.d.ts +6 -0
- package/dist/registry-lifecycle.d.ts.map +1 -1
- package/dist/registry-lifecycle.js +137 -10
- package/dist/release-readiness.js +3 -3
- package/dist/repo-memory.d.ts.map +1 -1
- package/dist/repo-memory.js +3 -1
- package/dist/reposet.js +1 -1
- package/dist/repository-intelligence.d.ts.map +1 -1
- package/dist/repository-intelligence.js +7 -2
- package/dist/repository-knowledge-model.d.ts +1 -1
- package/dist/repository-knowledge-model.d.ts.map +1 -1
- package/dist/repository-stats.d.ts.map +1 -1
- package/dist/repository-stats.js +3 -1
- package/dist/resolve-verification-commands.d.ts +26 -0
- package/dist/resolve-verification-commands.d.ts.map +1 -0
- package/dist/resolve-verification-commands.js +55 -0
- package/dist/review-packet.d.ts.map +1 -1
- package/dist/review-packet.js +14 -17
- package/dist/rule-drift.d.ts.map +1 -1
- package/dist/rule-drift.js +24 -9
- package/dist/rule-scaffold.d.ts.map +1 -1
- package/dist/rule-scaffold.js +12 -4
- package/dist/scaffold-patterns.js +2 -10
- package/dist/search-tuning-registry.d.ts.map +1 -1
- package/dist/search-tuning-registry.js +2 -10
- package/dist/self-config-doctor-v2.d.ts +1 -1
- package/dist/self-config-doctor-v2.d.ts.map +1 -1
- package/dist/self-config-doctor-v2.js +6 -10
- package/dist/self-config-doctor.d.ts.map +1 -1
- package/dist/self-config-doctor.js +7 -13
- package/dist/sharkcraft-inspector.d.ts +14 -0
- package/dist/sharkcraft-inspector.d.ts.map +1 -1
- package/dist/sharkcraft-inspector.js +103 -1
- package/dist/start-here.d.ts +2 -2
- package/dist/start-here.d.ts.map +1 -1
- package/dist/start-here.js +16 -1
- package/dist/synthesize-from-onboarding.d.ts +68 -0
- package/dist/synthesize-from-onboarding.d.ts.map +1 -0
- package/dist/synthesize-from-onboarding.js +508 -0
- package/dist/task-packet.d.ts +13 -0
- package/dist/task-packet.d.ts.map +1 -1
- package/dist/task-packet.js +59 -6
- package/dist/task-ranker.d.ts.map +1 -1
- package/dist/task-ranker.js +1 -31
- package/dist/task-routing-hint-registry.d.ts.map +1 -1
- package/dist/task-routing-hint-registry.js +2 -10
- package/dist/template-drift.d.ts +7 -0
- package/dist/template-drift.d.ts.map +1 -1
- package/dist/template-drift.js +14 -6
- package/dist/test-impact.d.ts.map +1 -1
- package/dist/test-impact.js +5 -2
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +12 -17
- package/dist/universal-search.d.ts +0 -1
- package/dist/universal-search.d.ts.map +1 -1
- package/dist/universal-search.js +0 -12
- package/dist/why-file.js +66 -22
- package/package.json +18 -18
- package/dist/plugin-lifecycle-profile-registry.d.ts +0 -52
- package/dist/plugin-lifecycle-profile-registry.d.ts.map +0 -1
- package/dist/plugin-lifecycle-profile-registry.js +0 -202
- package/dist/plugin-lifecycle.d.ts +0 -132
- package/dist/plugin-lifecycle.d.ts.map +0 -1
- package/dist/plugin-lifecycle.js +0 -477
package/dist/pack-test-runner.js
CHANGED
|
@@ -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
|
|
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-review.d.ts","sourceRoot":"","sources":["../src/plan-review.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plan-review.d.ts","sourceRoot":"","sources":["../src/plan-review.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,MAAM,WAAW,eAAe;IAC9B,8FAA8F;IAC9F,IAAI,EACA,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,cAAc,GACd,eAAe,GACf,SAAS,GACT,QAAQ,GACR,MAAM,GACN,UAAU,GACV,SAAS,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4FAA4F;IAC5F,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,8BAA8B;IAC7C,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,eAAe,GAAG,eAAe,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,iBAAiB,EAAE,kBAAkB,GAAG,sCAAsC,CAAC;CAChF;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,6CAA6C;IAC7C,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC1C,oDAAoD;IACpD,SAAS,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IAC5C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,iEAAiE;IACjE,qBAAqB,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,8EAA8E;IAC9E,yBAAyB,EAAE,SAAS;QAClC,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;IACJ;;;;OAIG;IACH,8BAA8B,EAAE,SAAS,8BAA8B,EAAE,CAAC;IAC1E,4DAA4D;IAC5D,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,eAAe,CAC7B,UAAU,EAAE,qBAAqB,EACjC,QAAQ,EAAE,MAAM,GACf,iBAAiB,CAkLnB"}
|
package/dist/plan-review.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { readFileSync } from 'node:fs';
|
|
2
2
|
import { evaluateBoundaries, loadTsconfigPaths, scanImports, } from '@shrkcrft/boundaries';
|
|
3
3
|
import { checkFolderOpSafety, FolderOpSafety, planGeneration, verifyPlan, } from '@shrkcrft/generator';
|
|
4
|
+
import { matchAffectedConventions } from '@shrkcrft/paths';
|
|
4
5
|
export function reviewSavedPlan(inspection, planPath) {
|
|
5
6
|
const raw = readFileSync(planPath, 'utf8');
|
|
6
7
|
const plan = JSON.parse(raw);
|
|
@@ -64,16 +65,10 @@ export function reviewSavedPlan(inspection, planPath) {
|
|
|
64
65
|
signatureMessage = 'verified';
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
|
-
// Affected paths
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
segments.add(seg.toLowerCase());
|
|
72
|
-
}
|
|
73
|
-
const affectedPaths = inspection.pathService
|
|
74
|
-
.list()
|
|
75
|
-
.filter((p) => [...segments].some((s) => (p.title + ' ' + p.content).toLowerCase().includes(s)))
|
|
76
|
-
.map((p) => p.id);
|
|
68
|
+
// Affected paths: conventions the plan's files structurally fall under
|
|
69
|
+
// (directory-prefix match against each convention's metadata.path), not a
|
|
70
|
+
// free-text substring of the description (which matched nearly the whole set).
|
|
71
|
+
const affectedPaths = matchAffectedConventions(inspection.pathService.list(), files.map((f) => f.relativePath)).map((p) => p.id);
|
|
77
72
|
// Missing-tests heuristic.
|
|
78
73
|
const missingTestsHeuristic = [];
|
|
79
74
|
const allPaths = new Set(files.map((f) => f.relativePath));
|
|
@@ -101,6 +101,19 @@ export interface IPlanSimulationOptions {
|
|
|
101
101
|
/** Maximum lines per diff preview (default 80). */
|
|
102
102
|
maxDiffLines?: number;
|
|
103
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Minimal unified-diff renderer for two strings. Not a full LCS — uses a
|
|
106
|
+
* simple longest-common-subsequence on lines via dynamic programming with
|
|
107
|
+
* a guard against huge inputs. For huge inputs falls back to a summary.
|
|
108
|
+
*/
|
|
109
|
+
export declare function unifiedDiff(beforeText: string, afterText: string, opts: {
|
|
110
|
+
context?: number;
|
|
111
|
+
maxLines?: number;
|
|
112
|
+
relativePath: string;
|
|
113
|
+
}): {
|
|
114
|
+
body: string;
|
|
115
|
+
truncated: boolean;
|
|
116
|
+
};
|
|
104
117
|
export declare function simulatePlan(inspection: ISharkcraftInspection, planPath: string, options?: IPlanSimulationOptions): Promise<IPlanSimulationReport>;
|
|
105
118
|
export declare function renderPlanSimulationText(r: IPlanSimulationReport): string;
|
|
106
119
|
export declare function renderPlanSimulationMarkdown(r: IPlanSimulationReport): string;
|
|
@@ -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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"}
|
package/dist/plan-simulation.js
CHANGED
|
@@ -52,7 +52,7 @@ function readExistingFile(projectRoot, relativePath) {
|
|
|
52
52
|
* simple longest-common-subsequence on lines via dynamic programming with
|
|
53
53
|
* a guard against huge inputs. For huge inputs falls back to a summary.
|
|
54
54
|
*/
|
|
55
|
-
function unifiedDiff(beforeText, afterText, opts) {
|
|
55
|
+
export function unifiedDiff(beforeText, afterText, opts) {
|
|
56
56
|
const context = opts.context ?? 3;
|
|
57
57
|
const maxLines = opts.maxLines ?? 80;
|
|
58
58
|
const before = beforeText.split('\n');
|
|
@@ -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.
|
|
322
|
-
//
|
|
323
|
-
|
|
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":"
|
|
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 {
|
|
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
|
|
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":"
|
|
1
|
+
{"version":3,"file":"policy-engine.d.ts","sourceRoot":"","sources":["../src/policy-engine.ts"],"names":[],"mappings":"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"}
|
package/dist/policy-engine.js
CHANGED
|
@@ -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
|
|
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
|
|
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, {
|
package/dist/policy-test.js
CHANGED
|
@@ -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 {
|
|
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
|
|
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
|
|
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 });
|
|
@@ -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":"
|
|
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"}
|
package/dist/profile-registry.js
CHANGED
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generic profile registry.
|
|
3
3
|
*
|
|
4
|
-
* Unifies profile-shaped contributions (
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Unifies profile-shaped contributions (migration profiles, future
|
|
5
|
+
* profile kinds) under a single `shrk profiles ...` surface. The engine
|
|
6
|
+
* ships zero built-in profiles; everything comes from pack contributions
|
|
7
|
+
* or local config.
|
|
8
8
|
*
|
|
9
9
|
* Read-only.
|
|
10
10
|
*/
|
|
11
|
-
import { listPluginLifecycleProfiles } from "./plugin-lifecycle-profile-registry.js";
|
|
12
11
|
import { loadMigrationProfiles } from "./migration-profile-registry.js";
|
|
13
12
|
export const PROFILE_REGISTRY_SCHEMA = 'sharkcraft.profile-registry/v1';
|
|
14
13
|
export var ProfileKind;
|
|
15
14
|
(function (ProfileKind) {
|
|
16
|
-
ProfileKind["PluginLifecycle"] = "plugin-lifecycle";
|
|
17
15
|
ProfileKind["Migration"] = "migration";
|
|
18
16
|
/** Future: command-behavior, generator, boundary, naming, architecture, language, report. */
|
|
19
17
|
})(ProfileKind || (ProfileKind = {}));
|
|
@@ -27,32 +25,6 @@ export var ProfileSource;
|
|
|
27
25
|
export async function loadAllProfiles(inspection) {
|
|
28
26
|
const entries = [];
|
|
29
27
|
const issues = [];
|
|
30
|
-
// Plugin lifecycle profiles
|
|
31
|
-
try {
|
|
32
|
-
const lifecycle = await listPluginLifecycleProfiles(inspection);
|
|
33
|
-
for (const e of lifecycle) {
|
|
34
|
-
entries.push({
|
|
35
|
-
id: e.profile.id,
|
|
36
|
-
kind: ProfileKind.PluginLifecycle,
|
|
37
|
-
title: e.profile.title,
|
|
38
|
-
...(e.profile.description ? { description: e.profile.description } : {}),
|
|
39
|
-
source: e.source,
|
|
40
|
-
...(e.packageName ? { packageName: e.packageName } : {}),
|
|
41
|
-
sourceFile: e.sourceFile,
|
|
42
|
-
...(e.profile.tags ? { tags: e.profile.tags } : {}),
|
|
43
|
-
...(e.profile.appliesWhen ? { appliesWhen: e.profile.appliesWhen } : {}),
|
|
44
|
-
payload: e.profile,
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
catch (err) {
|
|
49
|
-
issues.push({
|
|
50
|
-
severity: 'warning',
|
|
51
|
-
code: 'lifecycle-load-failed',
|
|
52
|
-
message: `Plugin lifecycle profile load failed: ${err.message}`,
|
|
53
|
-
kind: ProfileKind.PluginLifecycle,
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
28
|
// Migration profiles
|
|
57
29
|
try {
|
|
58
30
|
const migration = await loadMigrationProfiles(inspection);
|
|
@@ -28,6 +28,14 @@ export interface IProposedKnowledgeEntry {
|
|
|
28
28
|
line: number;
|
|
29
29
|
kind: string;
|
|
30
30
|
};
|
|
31
|
+
/**
|
|
32
|
+
* Recent commits (in the `--since` range) that touched this symbol's file —
|
|
33
|
+
* the "why this entry now". Present only when proposing over a git range.
|
|
34
|
+
*/
|
|
35
|
+
commits?: readonly {
|
|
36
|
+
hash: string;
|
|
37
|
+
subject: string;
|
|
38
|
+
}[];
|
|
31
39
|
}
|
|
32
40
|
export interface IKnowledgeProposeSkip {
|
|
33
41
|
file: string;
|
|
@@ -45,6 +53,8 @@ export interface IKnowledgeProposeReport {
|
|
|
45
53
|
gitChangedOnly: boolean;
|
|
46
54
|
/** Ref used for git-changed scan, when applicable. */
|
|
47
55
|
since?: string;
|
|
56
|
+
/** Number of proposals dropped by `--max` (0/absent when no cap hit). */
|
|
57
|
+
truncated?: number;
|
|
48
58
|
}
|
|
49
59
|
export interface IKnowledgeProposeInput {
|
|
50
60
|
cwd: string;
|
|
@@ -58,6 +68,11 @@ export interface IKnowledgeProposeInput {
|
|
|
58
68
|
* Pass `null` to scan the whole workspace.
|
|
59
69
|
*/
|
|
60
70
|
since?: string | null;
|
|
71
|
+
/**
|
|
72
|
+
* Cap the number of proposals returned (commit-annotated ones first). Guards
|
|
73
|
+
* against a far-back `--since` flooding hundreds of unreviewable stubs.
|
|
74
|
+
*/
|
|
75
|
+
max?: number;
|
|
61
76
|
}
|
|
62
77
|
export declare function proposeKnowledge(input: IKnowledgeProposeInput): Promise<IKnowledgeProposeReport>;
|
|
63
78
|
export declare function renderKnowledgeProposeMarkdown(report: IKnowledgeProposeReport): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propose-knowledge.d.ts","sourceRoot":"","sources":["../src/propose-knowledge.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,wBAAwB,oCAAoC,CAAC;AAE1E,oBAAY,0BAA0B;IACpC,cAAc,oBAAoB;IAClC,QAAQ,aAAa;IACrB,eAAe,qBAAqB;IACpC,OAAO,2BAA2B;IAClC,WAAW,iBAAiB;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC1C,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"propose-knowledge.d.ts","sourceRoot":"","sources":["../src/propose-knowledge.ts"],"names":[],"mappings":"AAwBA,eAAO,MAAM,wBAAwB,oCAAoC,CAAC;AAE1E,oBAAY,0BAA0B;IACpC,cAAc,oBAAoB;IAClC,QAAQ,aAAa;IACrB,eAAe,qBAAqB;IACpC,OAAO,2BAA2B;IAClC,WAAW,iBAAiB;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC1C,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACxD;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,0BAA0B,CAAC;IACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,OAAO,wBAAwB,CAAC;IACxC,SAAS,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC9C,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,cAAc,EAAE,OAAO,CAAC;IACxB,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA+PD,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,uBAAuB,CAAC,CAgGlC;AAED,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,uBAAuB,GAC9B,MAAM,CAkDR"}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
14
14
|
import * as nodePath from 'node:path';
|
|
15
|
-
import { getChangedFiles, isGitRepo } from "./git-helpers.js";
|
|
15
|
+
import { getChangedFiles, getCommitSubjects, isGitRepo } from "./git-helpers.js";
|
|
16
16
|
import { inspectSharkcraft } from "./sharkcraft-inspector.js";
|
|
17
17
|
import { buildSymbolIndex, SymbolDeclarationKind, SymbolVisibility, } from "./symbol-index.js";
|
|
18
18
|
export const KNOWLEDGE_PROPOSE_SCHEMA = 'sharkcraft.knowledge-propose/v1';
|
|
@@ -155,7 +155,7 @@ function findCoverage(index, relPath, symbol) {
|
|
|
155
155
|
return index.files.get(relPath);
|
|
156
156
|
return undefined;
|
|
157
157
|
}
|
|
158
|
-
function buildProposalForExport(relPath, entry) {
|
|
158
|
+
function buildProposalForExport(relPath, entry, commits = []) {
|
|
159
159
|
const scopeName = packageOfPath(relPath);
|
|
160
160
|
const feature = nearestFeatureScope(relPath);
|
|
161
161
|
const scope = feature ? [scopeName, feature] : [scopeName];
|
|
@@ -166,6 +166,9 @@ function buildProposalForExport(relPath, entry) {
|
|
|
166
166
|
const content = [
|
|
167
167
|
`Auto-proposed by \`shrk knowledge propose\` for the exported ${klabel}`,
|
|
168
168
|
`\`${entry.name}\` declared at \`${relPath}:${entry.line}\`.`,
|
|
169
|
+
...(commits.length > 0
|
|
170
|
+
? ['', `Surfaced by recent commit(s): ${commits.map((c) => `${c.subject} (${c.hash})`).join('; ')}.`]
|
|
171
|
+
: []),
|
|
169
172
|
'',
|
|
170
173
|
'Replace this body with the *why*: the contract this symbol provides, the',
|
|
171
174
|
'invariants it preserves, and how callers should reach for it.',
|
|
@@ -185,6 +188,7 @@ function buildProposalForExport(relPath, entry) {
|
|
|
185
188
|
{ kind: 'symbol', symbol: entry.name, path: relPath },
|
|
186
189
|
],
|
|
187
190
|
source: { file: relPath, line: entry.line, kind: entry.kind },
|
|
191
|
+
...(commits.length > 0 ? { commits } : {}),
|
|
188
192
|
};
|
|
189
193
|
}
|
|
190
194
|
function gatherWorkspaceFiles(root, inspection) {
|
|
@@ -257,6 +261,21 @@ export async function proposeKnowledge(input) {
|
|
|
257
261
|
const root = inspection.projectRoot;
|
|
258
262
|
const coverage = buildCoverageIndex(inspection.knowledgeEntries);
|
|
259
263
|
const { files, gitChangedOnly, since } = resolveFileSet(input, root, inspection);
|
|
264
|
+
// When proposing over a real git range, map each file to the commit
|
|
265
|
+
// subjects that touched it so each draft says WHY it surfaced (instead of
|
|
266
|
+
// pure boilerplate). `HEAD..HEAD` (the default working-tree compare) yields
|
|
267
|
+
// nothing, so this only annotates `--since <ref>` runs. Deterministic.
|
|
268
|
+
const commitsByFile = new Map();
|
|
269
|
+
if (typeof since === 'string' && since !== 'HEAD' && isGitRepo(root)) {
|
|
270
|
+
for (const c of getCommitSubjects(root, { since })) {
|
|
271
|
+
for (const f of c.files) {
|
|
272
|
+
const arr = commitsByFile.get(f) ?? [];
|
|
273
|
+
if (arr.length < 3)
|
|
274
|
+
arr.push({ hash: c.shortHash, subject: c.subject });
|
|
275
|
+
commitsByFile.set(f, arr);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
260
279
|
const proposals = [];
|
|
261
280
|
const skipped = [];
|
|
262
281
|
let totalExports = 0;
|
|
@@ -307,17 +326,28 @@ export async function proposeKnowledge(input) {
|
|
|
307
326
|
});
|
|
308
327
|
continue;
|
|
309
328
|
}
|
|
310
|
-
proposals.push(buildProposalForExport(relPath, exp));
|
|
329
|
+
proposals.push(buildProposalForExport(relPath, exp, commitsByFile.get(relPath)));
|
|
311
330
|
}
|
|
312
331
|
}
|
|
332
|
+
// --max: cap the flood. Commit-annotated proposals (genuinely touched in the
|
|
333
|
+
// range) lead, so truncation keeps the most relevant drafts.
|
|
334
|
+
let finalProposals = proposals;
|
|
335
|
+
let truncated = 0;
|
|
336
|
+
if (typeof input.max === 'number' && input.max >= 0 && proposals.length > input.max) {
|
|
337
|
+
const annotated = proposals.filter((p) => p.commits && p.commits.length > 0);
|
|
338
|
+
const rest = proposals.filter((p) => !p.commits || p.commits.length === 0);
|
|
339
|
+
truncated = proposals.length - input.max;
|
|
340
|
+
finalProposals = [...annotated, ...rest].slice(0, input.max);
|
|
341
|
+
}
|
|
313
342
|
return {
|
|
314
343
|
schema: KNOWLEDGE_PROPOSE_SCHEMA,
|
|
315
|
-
proposals,
|
|
344
|
+
proposals: finalProposals,
|
|
316
345
|
skipped,
|
|
317
346
|
scannedFiles: files.length,
|
|
318
347
|
totalExports,
|
|
319
348
|
gitChangedOnly,
|
|
320
349
|
...(since !== undefined ? { since } : {}),
|
|
350
|
+
...(truncated > 0 ? { truncated } : {}),
|
|
321
351
|
};
|
|
322
352
|
}
|
|
323
353
|
export function renderKnowledgeProposeMarkdown(report) {
|
|
@@ -332,6 +362,9 @@ export function renderKnowledgeProposeMarkdown(report) {
|
|
|
332
362
|
(report.gitChangedOnly && report.since
|
|
333
363
|
? ` (git-changed only since ${report.since})`
|
|
334
364
|
: ''));
|
|
365
|
+
if (report.truncated && report.truncated > 0) {
|
|
366
|
+
lines.push(`truncated: ${report.truncated} more proposal(s) dropped by --max (commit-annotated ones kept first)`);
|
|
367
|
+
}
|
|
335
368
|
lines.push('');
|
|
336
369
|
if (report.proposals.length === 0) {
|
|
337
370
|
lines.push('No new entries proposed. Every exported binding is either');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quality-baseline.d.ts","sourceRoot":"","sources":["../src/quality-baseline.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAKvE,eAAO,MAAM,uBAAuB,mCAAmC,CAAC;AAExE,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,6BAA6B;IAC5C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,qCAAqC;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,uBAAuB,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,+EAA+E;IAC/E,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,KAAK,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACvC,uCAAuC;IACvC,cAAc,EAAE,SAAS,6BAA6B,EAAE,CAAC;IACzD,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,qCAAqC,CAAC;CACvD;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC;CACnD;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,2CAA2C,CAAC;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,MAAM,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACzC,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC9C,YAAY,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAChD;
|
|
1
|
+
{"version":3,"file":"quality-baseline.d.ts","sourceRoot":"","sources":["../src/quality-baseline.ts"],"names":[],"mappings":"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"}
|
package/dist/quality-baseline.js
CHANGED
|
@@ -109,7 +109,9 @@ function extractBaseline(inspection, report) {
|
|
|
109
109
|
return {
|
|
110
110
|
schema: QUALITY_BASELINE_SCHEMA,
|
|
111
111
|
createdAt: nowIso(),
|
|
112
|
-
|
|
112
|
+
// Repo basename only — baselines are committed and absolute paths
|
|
113
|
+
// leak the author's filesystem layout into the public repo.
|
|
114
|
+
projectRoot: nodePath.basename(inspection.projectRoot),
|
|
113
115
|
sharkcraftVersion: readSharkcraftVersion(inspection.projectRoot),
|
|
114
116
|
configHash: configHashFor(inspection),
|
|
115
117
|
qualityScore: report.score,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ranker-explainability.d.ts","sourceRoot":"","sources":["../src/ranker-explainability.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,4BAA4B,wCAAwC,CAAC;AAElF,oBAAY,iBAAiB;IAC3B,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,4BAA4B,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,gDAAgD;IAChD,KAAK,EAAE,OAAO,CAAC;IACf,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4FAA4F;IAC5F,QAAQ,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,cAAc,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAChD,kFAAkF;IAClF,cAAc,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAChD,qDAAqD;IACrD,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC3C,2EAA2E;IAC3E,WAAW,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAClD,8DAA8D;IAC9D,sBAAsB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,oCAAoC;IACpC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,iEAAiE;IACjE,UAAU,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC/C,6BAA6B;IAC7B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;
|
|
1
|
+
{"version":3,"file":"ranker-explainability.d.ts","sourceRoot":"","sources":["../src/ranker-explainability.ts"],"names":[],"mappings":"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"}
|
|
@@ -161,14 +161,12 @@ function suggestedFixes(taskOrQuery, hit, matched, missing) {
|
|
|
161
161
|
return out;
|
|
162
162
|
}
|
|
163
163
|
/**
|
|
164
|
-
* Generic domain-token inference. Project-specific tokens
|
|
165
|
-
*
|
|
166
|
-
*
|
|
164
|
+
* Generic domain-token inference. Project-specific tokens move to
|
|
165
|
+
* pack-contributed search-tuning rather than hardcoded heuristics
|
|
166
|
+
* in the engine.
|
|
167
167
|
*/
|
|
168
168
|
function inferDomainTags(taskLower) {
|
|
169
169
|
const out = [];
|
|
170
|
-
if (/\bplugin\b/.test(taskLower))
|
|
171
|
-
out.push('plugin');
|
|
172
170
|
if (/\brenderer\b/.test(taskLower))
|
|
173
171
|
out.push('renderer');
|
|
174
172
|
if (/\b(angular|react)\b/.test(taskLower))
|
|
@@ -181,12 +179,8 @@ function inferDomainAppliesWhen(taskLower) {
|
|
|
181
179
|
const out = [];
|
|
182
180
|
if (/\b(create|add|new|generate|build)\b/.test(taskLower))
|
|
183
181
|
out.push('generate-code');
|
|
184
|
-
if (/\bplugin\b/.test(taskLower))
|
|
185
|
-
out.push('create-plugin');
|
|
186
182
|
if (/\b(rename|move)\b/.test(taskLower))
|
|
187
183
|
out.push('refactor');
|
|
188
|
-
if (/\bcapability\b/.test(taskLower))
|
|
189
|
-
out.push('create-capability');
|
|
190
184
|
return Array.from(new Set(out));
|
|
191
185
|
}
|
|
192
186
|
function commonSuggestedCommands(found, hit) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registration-hint-registry.d.ts","sourceRoot":"","sources":["../src/registration-hint-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registration-hint-registry.d.ts","sourceRoot":"","sources":["../src/registration-hint-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
* Registration hint registry. Pack- and local-contributed hints
|
|
11
3
|
* surface downstream registration steps that constructs typically need
|
|
@@ -18,8 +10,8 @@ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExte
|
|
|
18
10
|
*/
|
|
19
11
|
import { existsSync, readFileSync } from 'node:fs';
|
|
20
12
|
import * as nodePath from 'node:path';
|
|
21
|
-
import { pathToFileURL } from 'node:url';
|
|
22
13
|
import { validateRegistrationHint, } from '@shrkcrft/plugin-api';
|
|
14
|
+
import { importModuleViaLoader } from '@shrkcrft/core';
|
|
23
15
|
export const REGISTRATION_HINT_REGISTRY_SCHEMA = 'sharkcraft.registration-hint-registry/v1';
|
|
24
16
|
export var RegistrationHintSource;
|
|
25
17
|
(function (RegistrationHintSource) {
|
|
@@ -28,7 +20,7 @@ export var RegistrationHintSource;
|
|
|
28
20
|
RegistrationHintSource["Fixture"] = "fixture";
|
|
29
21
|
})(RegistrationHintSource || (RegistrationHintSource = {}));
|
|
30
22
|
async function importDefault(file) {
|
|
31
|
-
const mod = (await
|
|
23
|
+
const mod = (await importModuleViaLoader(file));
|
|
32
24
|
if (Array.isArray(mod.default))
|
|
33
25
|
return mod.default;
|
|
34
26
|
if (mod.default && typeof mod.default === 'object')
|
|
@@ -36,6 +36,12 @@ export interface IRegistryLifecycleReport {
|
|
|
36
36
|
registersFound: number;
|
|
37
37
|
matchedPairs: ReadonlyArray<IRegistryPair>;
|
|
38
38
|
missingRemovers: ReadonlyArray<IRegistryMissingRemover>;
|
|
39
|
+
/**
|
|
40
|
+
* `register*` declarations in a file with NO teardown-shaped API — treated as
|
|
41
|
+
* one-shot / bootstrap registrations that legitimately need no remover. Kept
|
|
42
|
+
* out of `missingRemovers` so the check isn't a wall of false positives.
|
|
43
|
+
*/
|
|
44
|
+
oneShotBootstrap: ReadonlyArray<IRegistryIgnored>;
|
|
39
45
|
ignored: ReadonlyArray<IRegistryIgnored>;
|
|
40
46
|
recommendations: ReadonlyArray<string>;
|
|
41
47
|
}
|