@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.
- package/README.md +1 -1
- package/dist/adoption-state.js +1 -1
- package/dist/agent-brief.d.ts.map +1 -1
- package/dist/agent-brief.js +10 -59
- package/dist/agent-task-prep.d.ts.map +1 -1
- package/dist/agent-task-prep.js +3 -1
- package/dist/ai-readiness.d.ts +9 -84
- package/dist/ai-readiness.d.ts.map +1 -1
- package/dist/ai-readiness.js +30 -161
- package/dist/apply-dispatch-trace.d.ts +2 -1
- package/dist/apply-dispatch-trace.d.ts.map +1 -1
- package/dist/apply-dispatch-trace.js +9 -0
- package/dist/area-explore.d.ts.map +1 -1
- package/dist/area-explore.js +5 -1
- package/dist/area-map.d.ts +19 -0
- package/dist/area-map.d.ts.map +1 -1
- package/dist/area-map.js +27 -0
- package/dist/ci-permissions-fix.d.ts +1 -1
- package/dist/ci-permissions-fix.d.ts.map +1 -1
- package/dist/ci-permissions-fix.js +182 -1
- package/dist/compliance-profiles.js +1 -1
- package/dist/construct-adoption-diff.d.ts.map +1 -1
- package/dist/construct-adoption-diff.js +1 -2
- package/dist/construct-adoption.d.ts.map +1 -1
- package/dist/construct-adoption.js +11 -10
- package/dist/construct-inference.d.ts.map +1 -1
- package/dist/construct-inference.js +1 -2
- package/dist/construct-registry.d.ts.map +1 -1
- package/dist/construct-registry.js +10 -2
- package/dist/contract-template-registry.d.ts.map +1 -1
- package/dist/contract-template-registry.js +10 -2
- package/dist/convention-registry.d.ts.map +1 -1
- package/dist/convention-registry.js +10 -2
- package/dist/decision-records.d.ts.map +1 -1
- package/dist/decision-records.js +9 -2
- package/dist/demo-script.d.ts +1 -0
- package/dist/demo-script.d.ts.map +1 -1
- package/dist/demo-script.js +43 -0
- package/dist/docs-check.js +1 -1
- package/dist/drift-baseline.d.ts.map +1 -1
- package/dist/drift-baseline.js +2 -5
- package/dist/feedback-ingestion.d.ts.map +1 -1
- package/dist/feedback-ingestion.js +16 -2
- package/dist/git-helpers.d.ts +12 -0
- package/dist/git-helpers.d.ts.map +1 -1
- package/dist/git-helpers.js +63 -0
- package/dist/helper-registry.d.ts +54 -27
- package/dist/helper-registry.d.ts.map +1 -1
- package/dist/helper-registry.js +517 -16
- package/dist/impact-analysis.d.ts.map +1 -1
- package/dist/impact-analysis.js +5 -4
- package/dist/impact-render.d.ts.map +1 -1
- package/dist/impact-render.js +9 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/ingest-drafts.js +4 -8
- package/dist/migration-profile-registry.d.ts.map +1 -1
- package/dist/migration-profile-registry.js +10 -2
- package/dist/monorepo-onboarding.js +2 -2
- package/dist/onboarding-drafts-merge.d.ts +71 -0
- package/dist/onboarding-drafts-merge.d.ts.map +1 -0
- package/dist/onboarding-drafts-merge.js +174 -0
- package/dist/onboarding-drafts.d.ts +14 -0
- package/dist/onboarding-drafts.d.ts.map +1 -1
- package/dist/onboarding-drafts.js +39 -5
- package/dist/onboarding-report.d.ts.map +1 -1
- package/dist/onboarding-report.js +1 -5
- package/dist/onboarding.d.ts +1 -1
- package/dist/onboarding.d.ts.map +1 -1
- package/dist/onboarding.js +64 -5
- package/dist/ownership.js +10 -2
- package/dist/pack-contributions-inventory.d.ts +1 -0
- package/dist/pack-contributions-inventory.d.ts.map +1 -1
- package/dist/pack-contributions-inventory.js +24 -0
- package/dist/pack-helper-registry.d.ts.map +1 -1
- package/dist/pack-helper-registry.js +10 -2
- package/dist/pack-release-check.d.ts.map +1 -1
- package/dist/pack-release-check.js +11 -4
- package/dist/pack-signature-status.d.ts.map +1 -1
- package/dist/pack-signature-status.js +1 -0
- package/dist/pack-symbol-compat.d.ts +17 -4
- package/dist/pack-symbol-compat.d.ts.map +1 -1
- package/dist/pack-symbol-compat.js +155 -7
- package/dist/pack-test-runner.js +10 -2
- package/dist/plan-simulation.d.ts.map +1 -1
- package/dist/plan-simulation.js +20 -3
- package/dist/playbook-registry.d.ts.map +1 -1
- package/dist/playbook-registry.js +10 -2
- package/dist/plugin-lifecycle-profile-registry.d.ts +52 -0
- package/dist/plugin-lifecycle-profile-registry.d.ts.map +1 -0
- package/dist/plugin-lifecycle-profile-registry.js +202 -0
- package/dist/plugin-lifecycle.d.ts +132 -0
- package/dist/plugin-lifecycle.d.ts.map +1 -0
- package/dist/plugin-lifecycle.js +477 -0
- package/dist/policy-engine.d.ts.map +1 -1
- package/dist/policy-engine.js +11 -3
- package/dist/policy-test.js +11 -3
- package/dist/product-coherence.js +5 -5
- package/dist/profile-registry.d.ts +1 -0
- package/dist/profile-registry.d.ts.map +1 -1
- package/dist/profile-registry.js +32 -4
- package/dist/quality-baseline.d.ts.map +1 -1
- package/dist/quality-baseline.js +1 -3
- package/dist/ranker-explainability.d.ts.map +1 -1
- package/dist/ranker-explainability.js +9 -3
- package/dist/registration-hint-registry.d.ts.map +1 -1
- package/dist/registration-hint-registry.js +10 -2
- package/dist/release-readiness.js +5 -5
- package/dist/reposet.js +1 -1
- package/dist/repository-knowledge-model.d.ts +1 -1
- package/dist/repository-knowledge-model.d.ts.map +1 -1
- package/dist/review-packet-v2.d.ts.map +1 -1
- package/dist/review-packet-v2.js +13 -3
- package/dist/rule-scaffold.d.ts.map +1 -1
- package/dist/rule-scaffold.js +4 -12
- package/dist/scaffold-patterns.js +10 -2
- package/dist/search-tuning-registry.d.ts.map +1 -1
- package/dist/search-tuning-registry.js +10 -2
- 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 +10 -6
- package/dist/self-config-doctor.d.ts.map +1 -1
- package/dist/self-config-doctor.js +13 -7
- package/dist/sharkcraft-inspector.d.ts.map +1 -1
- package/dist/sharkcraft-inspector.js +0 -1
- package/dist/start-here.d.ts +1 -1
- package/dist/start-here.js +1 -1
- package/dist/task-ranker.d.ts.map +1 -1
- package/dist/task-ranker.js +31 -1
- package/dist/task-routing-hint-registry.d.ts.map +1 -1
- package/dist/task-routing-hint-registry.js +10 -2
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +16 -8
- package/dist/universal-search.d.ts +1 -0
- package/dist/universal-search.d.ts.map +1 -1
- package/dist/universal-search.js +12 -0
- package/dist/upgrade-advisor.js +1 -1
- package/package.json +21 -22
- package/dist/synthesize-from-onboarding.d.ts +0 -68
- package/dist/synthesize-from-onboarding.d.ts.map +0 -1
- package/dist/synthesize-from-onboarding.js +0 -508
|
@@ -15,11 +15,12 @@ export declare const APPLY_DISPATCH_TRACE_SCHEMA = "sharkcraft.apply-dispatch-tr
|
|
|
15
15
|
export declare enum DispatchKind {
|
|
16
16
|
Template = "template",
|
|
17
17
|
Helper = "helper",
|
|
18
|
+
PluginLifecycle = "plugin-lifecycle",
|
|
18
19
|
RegistrationHint = "registration-hint",
|
|
19
20
|
Synthetic = "synthetic",
|
|
20
21
|
Unknown = "unknown"
|
|
21
22
|
}
|
|
22
|
-
export type DispatchSource = 'registry/template' | 'registry/helper' | 'registry/registration-hint' | 'synthetic' | 'unknown';
|
|
23
|
+
export type DispatchSource = 'registry/template' | 'registry/helper' | 'registry/plugin-lifecycle-profile' | 'registry/registration-hint' | 'synthetic' | 'unknown';
|
|
23
24
|
export interface IDispatchFileOpCounts {
|
|
24
25
|
readonly create: number;
|
|
25
26
|
readonly update: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply-dispatch-trace.d.ts","sourceRoot":"","sources":["../src/apply-dispatch-trace.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"apply-dispatch-trace.d.ts","sourceRoot":"","sources":["../src/apply-dispatch-trace.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,11 +3,13 @@ export var DispatchKind;
|
|
|
3
3
|
(function (DispatchKind) {
|
|
4
4
|
DispatchKind["Template"] = "template";
|
|
5
5
|
DispatchKind["Helper"] = "helper";
|
|
6
|
+
DispatchKind["PluginLifecycle"] = "plugin-lifecycle";
|
|
6
7
|
DispatchKind["RegistrationHint"] = "registration-hint";
|
|
7
8
|
DispatchKind["Synthetic"] = "synthetic";
|
|
8
9
|
DispatchKind["Unknown"] = "unknown";
|
|
9
10
|
})(DispatchKind || (DispatchKind = {}));
|
|
10
11
|
const TEMPLATE_PREFIX_HELPER = '__helper__';
|
|
12
|
+
const TEMPLATE_PREFIX_PLUGIN_LIFECYCLE = '__plugin-lifecycle__';
|
|
11
13
|
const TEMPLATE_PREFIX_REGISTRATION_HINT = '__registration-hint__';
|
|
12
14
|
function classifyTemplate(templateId) {
|
|
13
15
|
if (templateId.startsWith(TEMPLATE_PREFIX_HELPER)) {
|
|
@@ -17,6 +19,13 @@ function classifyTemplate(templateId) {
|
|
|
17
19
|
handler: '@shrkcrft/inspector/helper-registry + @shrkcrft/generator/synthetic-plan.evaluateSavedPlanInPlace',
|
|
18
20
|
};
|
|
19
21
|
}
|
|
22
|
+
if (templateId.startsWith(TEMPLATE_PREFIX_PLUGIN_LIFECYCLE)) {
|
|
23
|
+
return {
|
|
24
|
+
kind: DispatchKind.PluginLifecycle,
|
|
25
|
+
source: 'registry/plugin-lifecycle-profile',
|
|
26
|
+
handler: '@shrkcrft/inspector/plugin-lifecycle + @shrkcrft/generator/synthetic-plan.evaluateSavedPlanInPlace',
|
|
27
|
+
};
|
|
28
|
+
}
|
|
20
29
|
if (templateId.startsWith(TEMPLATE_PREFIX_REGISTRATION_HINT)) {
|
|
21
30
|
return {
|
|
22
31
|
kind: DispatchKind.RegistrationHint,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"area-explore.d.ts","sourceRoot":"","sources":["../src/area-explore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAgB,MAAM,eAAe,CAAC;AAEvD,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAEhE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC7E;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EACT,iBAAiB,GACjB,aAAa,GACb,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,mBAAmB,GACnB,UAAU,CAAC;IACf,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACxD,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACrD,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC9C;
|
|
1
|
+
{"version":3,"file":"area-explore.d.ts","sourceRoot":"","sources":["../src/area-explore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAgB,MAAM,eAAe,CAAC;AAEvD,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAEhE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC7E;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EACT,iBAAiB,GACjB,aAAa,GACb,cAAc,GACd,cAAc,GACd,gBAAgB,GAChB,mBAAmB,GACnB,UAAU,CAAC;IACf,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,OAAO,mBAAmB,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACxD,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IACrD,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC9C;AAiMD,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,qBAAqB,CAAC;IAClC,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,cAAc,CAAC,EAAE,aAAa,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,mDAAmD;IACnD,YAAY,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,8CAA8C;IAC9C,eAAe,CAAC,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjF,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CA+IxE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAoDxE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAuC5E"}
|
package/dist/area-explore.js
CHANGED
|
@@ -123,13 +123,17 @@ function describeRole(relPath, kind) {
|
|
|
123
123
|
}
|
|
124
124
|
switch (kind) {
|
|
125
125
|
case AreaKind.Core:
|
|
126
|
-
return 'Core building blocks (Result, errors, ids).';
|
|
126
|
+
return 'Core building blocks (Result, errors, ids) — lowest in the layer order.';
|
|
127
127
|
case AreaKind.Tests:
|
|
128
128
|
return 'Tests.';
|
|
129
129
|
case AreaKind.Docs:
|
|
130
130
|
return 'Documentation.';
|
|
131
131
|
case AreaKind.Generated:
|
|
132
132
|
return 'Generated output — do not hand-edit.';
|
|
133
|
+
case AreaKind.Adapter:
|
|
134
|
+
return 'Framework / runtime adapter glue.';
|
|
135
|
+
case AreaKind.Plugin:
|
|
136
|
+
return 'Plugin / pack code.';
|
|
133
137
|
default:
|
|
134
138
|
return `${kind} area.`;
|
|
135
139
|
}
|
package/dist/area-map.d.ts
CHANGED
|
@@ -2,6 +2,11 @@ import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
|
|
|
2
2
|
export declare const AREA_MAP_SCHEMA = "sharkcraft.area-map/v1";
|
|
3
3
|
export declare enum AreaKind {
|
|
4
4
|
Core = "core",
|
|
5
|
+
Common = "common",
|
|
6
|
+
Runtime = "runtime",
|
|
7
|
+
Kernel = "kernel",
|
|
8
|
+
Plugin = "plugin",
|
|
9
|
+
Adapter = "adapter",
|
|
5
10
|
Ui = "ui",
|
|
6
11
|
App = "app",
|
|
7
12
|
Api = "api",
|
|
@@ -31,7 +36,21 @@ export interface IAreaMap {
|
|
|
31
36
|
projectRoot: string;
|
|
32
37
|
areas: readonly IAreaMapEntry[];
|
|
33
38
|
unclassifiedFiles: number;
|
|
39
|
+
/**
|
|
40
|
+
* When set, `areas` was filtered to a subset of the repo's areas
|
|
41
|
+
* (e.g. only areas touched by the current diff). `areasTotal` reports
|
|
42
|
+
* the original area count so the consumer knows the map was slimmed.
|
|
43
|
+
*/
|
|
44
|
+
areasTotal?: number;
|
|
45
|
+
/** True iff areas[] is a filtered subset of the full repo area map. */
|
|
46
|
+
filtered?: boolean;
|
|
34
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Return a copy of `map` with `areas[]` filtered to only those whose `id`
|
|
50
|
+
* is in `keepIds`. Sets `filtered: true` and preserves `areasTotal` so
|
|
51
|
+
* consumers know the map was slimmed.
|
|
52
|
+
*/
|
|
53
|
+
export declare function filterAreaMap(map: IAreaMap, keepIds: ReadonlyArray<string>): IAreaMap;
|
|
35
54
|
export declare function buildAreaMap(inspection: ISharkcraftInspection): IAreaMap;
|
|
36
55
|
export declare function renderAreaMapText(map: IAreaMap): string;
|
|
37
56
|
export declare function renderAreaMapMarkdown(map: IAreaMap): string;
|
package/dist/area-map.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"area-map.d.ts","sourceRoot":"","sources":["../src/area-map.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAExD,oBAAY,QAAQ;IAClB,IAAI,SAAS;IACb,EAAE,OAAO;IACT,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"area-map.d.ts","sourceRoot":"","sources":["../src/area-map.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAExD,oBAAY,QAAQ;IAClB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,EAAE,OAAO;IACT,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,QAAQ,CAUrF;AAyED,wBAAgB,YAAY,CAAC,UAAU,EAAE,qBAAqB,GAAG,QAAQ,CA4ExE;AA0BD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CASvD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAc3D"}
|
package/dist/area-map.js
CHANGED
|
@@ -4,6 +4,11 @@ export const AREA_MAP_SCHEMA = 'sharkcraft.area-map/v1';
|
|
|
4
4
|
export var AreaKind;
|
|
5
5
|
(function (AreaKind) {
|
|
6
6
|
AreaKind["Core"] = "core";
|
|
7
|
+
AreaKind["Common"] = "common";
|
|
8
|
+
AreaKind["Runtime"] = "runtime";
|
|
9
|
+
AreaKind["Kernel"] = "kernel";
|
|
10
|
+
AreaKind["Plugin"] = "plugin";
|
|
11
|
+
AreaKind["Adapter"] = "adapter";
|
|
7
12
|
AreaKind["Ui"] = "ui";
|
|
8
13
|
AreaKind["App"] = "app";
|
|
9
14
|
AreaKind["Api"] = "api";
|
|
@@ -13,8 +18,30 @@ export var AreaKind;
|
|
|
13
18
|
AreaKind["Generated"] = "generated";
|
|
14
19
|
AreaKind["Unknown"] = "unknown";
|
|
15
20
|
})(AreaKind || (AreaKind = {}));
|
|
21
|
+
/**
|
|
22
|
+
* Return a copy of `map` with `areas[]` filtered to only those whose `id`
|
|
23
|
+
* is in `keepIds`. Sets `filtered: true` and preserves `areasTotal` so
|
|
24
|
+
* consumers know the map was slimmed.
|
|
25
|
+
*/
|
|
26
|
+
export function filterAreaMap(map, keepIds) {
|
|
27
|
+
if (keepIds.length === 0)
|
|
28
|
+
return map;
|
|
29
|
+
const keep = new Set(keepIds);
|
|
30
|
+
const filtered = map.areas.filter((a) => keep.has(a.id));
|
|
31
|
+
return {
|
|
32
|
+
...map,
|
|
33
|
+
areas: filtered,
|
|
34
|
+
areasTotal: map.areasTotal ?? map.areas.length,
|
|
35
|
+
filtered: true,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
16
38
|
const AREA_PATTERNS = [
|
|
17
39
|
{ kind: AreaKind.Core, match: [/^packages\/core(\/|$)/, /^src\/core(\/|$)/], idHint: 'core' },
|
|
40
|
+
{ kind: AreaKind.Common, match: [/^packages\/(common|shared)(\/|$)/, /^src\/(common|shared)(\/|$)/], idHint: 'common' },
|
|
41
|
+
{ kind: AreaKind.Runtime, match: [/^packages\/runtime(\/|$)/, /^src\/runtime(\/|$)/], idHint: 'runtime' },
|
|
42
|
+
{ kind: AreaKind.Kernel, match: [/^packages\/kernel(\/|$)/, /^src\/kernel(\/|$)/], idHint: 'kernel' },
|
|
43
|
+
{ kind: AreaKind.Plugin, match: [/plugins?(\/|$)/, /^packages\/plugin-/], idHint: 'plugin' },
|
|
44
|
+
{ kind: AreaKind.Adapter, match: [/adapters?(\/|$)/, /^packages\/adapter-/], idHint: 'adapter' },
|
|
18
45
|
{ kind: AreaKind.Ui, match: [/^packages\/(ui|dashboard|web)(\/|$)/, /^(src|app)\/(ui|components|pages|views)(\/|$)/], idHint: 'ui' },
|
|
19
46
|
{ kind: AreaKind.App, match: [/^apps?\//, /^packages\/app(\/|$)/], idHint: 'app' },
|
|
20
47
|
{ kind: AreaKind.Api, match: [/^packages\/api(\/|$)/, /\/api\//, /\/routes\//, /\/controllers\//], idHint: 'api' },
|
|
@@ -16,7 +16,7 @@ import type { ICiPermissionsAudit, CiProviderForAudit } from './ci-permissions.j
|
|
|
16
16
|
export declare const CI_PERMISSIONS_FIX_SCHEMA = "sharkcraft.ci-permissions-fix/v1";
|
|
17
17
|
export type CiPermissionsFixFormat = 'patch' | 'markdown' | 'json';
|
|
18
18
|
export interface ICiPermissionsFixHint {
|
|
19
|
-
code: 'add-permissions-block' | 'add-pull-requests-write' | 'narrow-permissions-block' | 'remove-pull-requests-write' | 'pin-action-sha' | 'pin-image-digest' | 'no-action-required';
|
|
19
|
+
code: 'add-permissions-block' | 'add-pull-requests-write' | 'narrow-permissions-block' | 'remove-pull-requests-write' | 'pin-action-sha' | 'pin-image-digest' | 'requires-manual' | 'add-oidc-block' | 'add-id-tokens-block' | 'add-azure-permissions-block' | 'no-action-required';
|
|
20
20
|
severity: 'info' | 'warning' | 'error';
|
|
21
21
|
message: string;
|
|
22
22
|
explanation: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci-permissions-fix.d.ts","sourceRoot":"","sources":["../src/ci-permissions-fix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEnF,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAE5E,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IACpC,IAAI,EACA,uBAAuB,GACvB,yBAAyB,GACzB,0BAA0B,GAC1B,4BAA4B,GAC5B,gBAAgB,GAChB,kBAAkB,GAClB,oBAAoB,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,OAAO,yBAAyB,CAAC;IACzC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACxC,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"ci-permissions-fix.d.ts","sourceRoot":"","sources":["../src/ci-permissions-fix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEnF,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAE5E,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IACpC,IAAI,EACA,uBAAuB,GACvB,yBAAyB,GACzB,0BAA0B,GAC1B,4BAA4B,GAC5B,gBAAgB,GAChB,kBAAkB,GAClB,iBAAiB,GACjB,gBAAgB,GAChB,qBAAqB,GACrB,6BAA6B,GAC7B,oBAAoB,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,OAAO,yBAAyB,CAAC;IACzC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACxC,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;CACvB;AAoPD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,mBAAmB,GAAG,wBAAwB,CAkFjG;AA+CD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,wBAAwB,EACjC,MAAM,EAAE,sBAAsB,GAC7B,MAAM,CAoCR"}
|
|
@@ -20,6 +20,24 @@ function leastPrivilegeBlock(provider, withPullRequestsWrite) {
|
|
|
20
20
|
? 'permissions:\n contents: read\n pull-requests: write\n'
|
|
21
21
|
: 'permissions:\n contents: read\n';
|
|
22
22
|
}
|
|
23
|
+
if (provider === 'gitlab') {
|
|
24
|
+
return withPullRequestsWrite
|
|
25
|
+
? '# GitLab CI uses CI/CD variables, not file-level permissions.\n# Store a Project Access Token with `api` scope as a masked variable\n# named REVIEW_TOKEN, then reference it in the comment-posting job:\n# variables:\n# GIT_STRATEGY: clone\n# id_tokens:\n# GITLAB_OIDC_TOKEN:\n# aud: https://gitlab.example.com\n'
|
|
26
|
+
: '# GitLab CI uses CI/CD variables, not file-level permissions.\n# $CI_JOB_TOKEN is read-only for repo metadata — no extra scopes required.\n';
|
|
27
|
+
}
|
|
28
|
+
if (provider === 'bitbucket') {
|
|
29
|
+
return withPullRequestsWrite
|
|
30
|
+
? 'oidc: true # add to each step that needs write scopes — pair with a repo access token in Bitbucket settings\n'
|
|
31
|
+
: '# Bitbucket Pipelines has no top-level permissions block.\n# Use repository access tokens (Bitbucket settings → Access tokens) and store them as secured variables.\n';
|
|
32
|
+
}
|
|
33
|
+
if (provider === 'azure') {
|
|
34
|
+
return withPullRequestsWrite
|
|
35
|
+
? 'permissions:\n contents: read\n pull-requests: write # Azure Pipelines job-level permissions (recent feature)\n'
|
|
36
|
+
: 'permissions:\n contents: read\n';
|
|
37
|
+
}
|
|
38
|
+
if (provider === 'jenkins') {
|
|
39
|
+
return '// Jenkins permissions are configured in Manage Jenkins → Security → Authorization.\n// Use Matrix-based or Role-based security; the Jenkinsfile itself cannot grant or restrict scopes.\n';
|
|
40
|
+
}
|
|
23
41
|
return '# (least-privilege block — provider-specific)\n';
|
|
24
42
|
}
|
|
25
43
|
function makeAddPermissionsBlockPatch(file, body, withPullRequestsWrite) {
|
|
@@ -45,6 +63,145 @@ function makeAddPermissionsBlockPatch(file, body, withPullRequestsWrite) {
|
|
|
45
63
|
];
|
|
46
64
|
return patch.join('\n') + '\n';
|
|
47
65
|
}
|
|
66
|
+
function makeInsertAfterTopLineMatchingPatch(file, body, matcher, block) {
|
|
67
|
+
const lines = body.split(/\r?\n/);
|
|
68
|
+
let anchor = -1;
|
|
69
|
+
for (let i = 0; i < lines.length; i += 1) {
|
|
70
|
+
if (matcher.test(lines[i])) {
|
|
71
|
+
anchor = i;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (anchor < 0)
|
|
76
|
+
anchor = 0;
|
|
77
|
+
const blockLines = block.split(/\r?\n/).filter((l) => l.length > 0);
|
|
78
|
+
return [
|
|
79
|
+
`--- a/${file}`,
|
|
80
|
+
`+++ b/${file}`,
|
|
81
|
+
`@@ -${anchor + 1},1 +${anchor + 1},${1 + blockLines.length} @@`,
|
|
82
|
+
` ${lines[anchor] ?? ''}`,
|
|
83
|
+
...blockLines.map((l) => `+${l}`),
|
|
84
|
+
].join('\n') + '\n';
|
|
85
|
+
}
|
|
86
|
+
function emitGitlabHints(audit, body) {
|
|
87
|
+
const hints = [];
|
|
88
|
+
if (audit.postsComments) {
|
|
89
|
+
const block = 'id_tokens:\n GITLAB_OIDC_TOKEN:\n aud: https://gitlab.example.com # replace with your GitLab host\n';
|
|
90
|
+
// Anchor after the first `stages:` line if present, otherwise top.
|
|
91
|
+
const hasIdTokens = /\bid_tokens:\s*$/m.test(body);
|
|
92
|
+
if (hasIdTokens) {
|
|
93
|
+
hints.push({
|
|
94
|
+
code: 'requires-manual',
|
|
95
|
+
severity: 'info',
|
|
96
|
+
message: 'Pipeline already declares `id_tokens:` — confirm the `aud:` matches your GitLab instance and the consuming script trades the OIDC token for a scoped access token.',
|
|
97
|
+
explanation: 'GitLab CI has no native permissions block. Least-privilege comes from OIDC + a Project Access Token with `api` scope on the consuming job.',
|
|
98
|
+
insertion: leastPrivilegeBlock('gitlab', true),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
hints.push({
|
|
103
|
+
code: 'add-id-tokens-block',
|
|
104
|
+
severity: 'warning',
|
|
105
|
+
message: 'Pipeline posts MR comments without declaring an `id_tokens:` block — comment-posting will require a long-lived PRIVATE-TOKEN, which is harder to rotate.',
|
|
106
|
+
explanation: 'Use GitLab OIDC: declare `id_tokens.GITLAB_OIDC_TOKEN.aud` on the job, then exchange the token for a Project Access Token at runtime. Avoids storing long-lived secrets in CI/CD variables.',
|
|
107
|
+
patch: body ? makeInsertAfterTopLineMatchingPatch(audit.workflowFile, body, /^\s*stages:\s*$/, block) : undefined,
|
|
108
|
+
insertion: block,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
hints.push({
|
|
114
|
+
code: 'no-action-required',
|
|
115
|
+
severity: 'info',
|
|
116
|
+
message: 'No MR-comment-posting step detected — $CI_JOB_TOKEN is sufficient and no scoped token is required.',
|
|
117
|
+
explanation: 'GitLab CI runs each job with a read-only $CI_JOB_TOKEN by default; only enable write scopes (Project Access Tokens) on jobs that actually mutate the project.',
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
return hints;
|
|
121
|
+
}
|
|
122
|
+
function emitBitbucketHints(audit, body) {
|
|
123
|
+
const hints = [];
|
|
124
|
+
const hasOidc = /\boidc:\s*true\b/.test(body);
|
|
125
|
+
if (audit.postsComments && !hasOidc) {
|
|
126
|
+
const block = ' oidc: true # exchange for a scoped repo access token at runtime\n';
|
|
127
|
+
hints.push({
|
|
128
|
+
code: 'add-oidc-block',
|
|
129
|
+
severity: 'warning',
|
|
130
|
+
message: 'Pipeline posts PR comments without declaring `oidc: true` — pair the comment-posting step with OIDC + a repository access token instead of a long-lived secret.',
|
|
131
|
+
explanation: 'Bitbucket Pipelines has no top-level permissions block; least-privilege comes from `oidc: true` + a repo-scoped access token configured in Bitbucket settings.',
|
|
132
|
+
patch: body
|
|
133
|
+
? makeInsertAfterTopLineMatchingPatch(audit.workflowFile, body, /^\s*-\s*step:\s*$/, block)
|
|
134
|
+
: undefined,
|
|
135
|
+
insertion: block,
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
else if (!audit.postsComments) {
|
|
139
|
+
hints.push({
|
|
140
|
+
code: 'no-action-required',
|
|
141
|
+
severity: 'info',
|
|
142
|
+
message: 'No PR-comment-posting step detected — the default repository access token is read-only.',
|
|
143
|
+
explanation: 'Bitbucket Pipelines does not require explicit permissions for read-only operations. Avoid checking long-lived tokens into the file regardless.',
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
hints.push({
|
|
148
|
+
code: 'requires-manual',
|
|
149
|
+
severity: 'info',
|
|
150
|
+
message: 'Pipeline already declares `oidc: true`. Confirm the consuming step exchanges the token for the minimum repo scope it needs.',
|
|
151
|
+
explanation: 'OIDC exchange happens at runtime — the workflow file cannot enforce the resulting token\'s scope. Audit the API calls in the step.',
|
|
152
|
+
insertion: leastPrivilegeBlock('bitbucket', true),
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
return hints;
|
|
156
|
+
}
|
|
157
|
+
function emitAzureHints(audit, body) {
|
|
158
|
+
const hints = [];
|
|
159
|
+
const hasPermissions = /^\s*permissions:\s*$/m.test(body);
|
|
160
|
+
if (audit.postsComments && !hasPermissions) {
|
|
161
|
+
const block = leastPrivilegeBlock('azure', true);
|
|
162
|
+
hints.push({
|
|
163
|
+
code: 'add-azure-permissions-block',
|
|
164
|
+
severity: 'warning',
|
|
165
|
+
message: 'Pipeline posts PR comments without declaring a job-level `permissions:` block. Azure Pipelines now supports job-level permissions — use them to scope the System.AccessToken.',
|
|
166
|
+
explanation: 'When the job-level `permissions:` feature is enabled on the project, Azure Pipelines restricts System.AccessToken to the scopes you list. Without the block, the token defaults to the project-level setting.',
|
|
167
|
+
patch: body
|
|
168
|
+
? makeInsertAfterTopLineMatchingPatch(audit.workflowFile, body, /^\s*(jobs|stages):\s*$/, block)
|
|
169
|
+
: undefined,
|
|
170
|
+
insertion: block,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
else if (!audit.postsComments) {
|
|
174
|
+
hints.push({
|
|
175
|
+
code: 'no-action-required',
|
|
176
|
+
severity: 'info',
|
|
177
|
+
message: 'No PR-comment-posting step detected — the default Build Service token is read-only for repo metadata.',
|
|
178
|
+
explanation: 'Azure Pipelines defaults the System.AccessToken to project-scoped read; only enable write scopes when the pipeline mutates repo state.',
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
hints.push({
|
|
183
|
+
code: 'requires-manual',
|
|
184
|
+
severity: 'info',
|
|
185
|
+
message: 'Pipeline already declares a `permissions:` block. Confirm it lists only the scopes the comment-posting job needs (typically `contents: read` + `pull-requests: write`).',
|
|
186
|
+
explanation: 'Azure Pipelines permissions blocks are additive per job — make sure broader scopes are not granted to unrelated jobs.',
|
|
187
|
+
insertion: leastPrivilegeBlock('azure', true),
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
return hints;
|
|
191
|
+
}
|
|
192
|
+
function emitJenkinsHints(audit) {
|
|
193
|
+
return [
|
|
194
|
+
{
|
|
195
|
+
code: 'requires-manual',
|
|
196
|
+
severity: audit.postsComments ? 'warning' : 'info',
|
|
197
|
+
message: audit.postsComments
|
|
198
|
+
? 'Jenkinsfile posts PR comments — declarative pipelines cannot grant permissions; this is configured in Jenkins itself.'
|
|
199
|
+
: 'Jenkinsfile detected — declarative pipelines cannot grant permissions; this is configured in Jenkins itself.',
|
|
200
|
+
explanation: 'Jenkins permissions are administered via Manage Jenkins → Security → Authorization (Matrix-based or Role-based plugin). Edit there, not in the Jenkinsfile. The pipeline\'s `withCredentials(...)` block scopes secrets to a step but does not grant repository write access on its own.',
|
|
201
|
+
insertion: leastPrivilegeBlock('jenkins', audit.postsComments),
|
|
202
|
+
},
|
|
203
|
+
];
|
|
204
|
+
}
|
|
48
205
|
function makeNarrowPermissionsPatch(file, body) {
|
|
49
206
|
// Find the broad permission lines and propose replacing each with
|
|
50
207
|
// `contents: read`.
|
|
@@ -88,6 +245,27 @@ export function buildCiPermissionsFixPreview(audit) {
|
|
|
88
245
|
catch {
|
|
89
246
|
body = '';
|
|
90
247
|
}
|
|
248
|
+
// Non-GHA providers: emit provider-specific hints and return early.
|
|
249
|
+
if (audit.provider === 'gitlab') {
|
|
250
|
+
for (const h of emitGitlabHints(audit, body))
|
|
251
|
+
hints.push(h);
|
|
252
|
+
return finalize(audit, hints);
|
|
253
|
+
}
|
|
254
|
+
if (audit.provider === 'bitbucket') {
|
|
255
|
+
for (const h of emitBitbucketHints(audit, body))
|
|
256
|
+
hints.push(h);
|
|
257
|
+
return finalize(audit, hints);
|
|
258
|
+
}
|
|
259
|
+
if (audit.provider === 'azure') {
|
|
260
|
+
for (const h of emitAzureHints(audit, body))
|
|
261
|
+
hints.push(h);
|
|
262
|
+
return finalize(audit, hints);
|
|
263
|
+
}
|
|
264
|
+
if (audit.provider === 'jenkins') {
|
|
265
|
+
for (const h of emitJenkinsHints(audit))
|
|
266
|
+
hints.push(h);
|
|
267
|
+
return finalize(audit, hints);
|
|
268
|
+
}
|
|
91
269
|
const isGha = audit.provider === 'github-actions';
|
|
92
270
|
const missingPermsBlock = audit.findings.some((f) => f.code === 'permissions-block-missing');
|
|
93
271
|
// Case 1: comment-posting requested but no permissions block (or no pull-requests: write).
|
|
@@ -123,7 +301,10 @@ export function buildCiPermissionsFixPreview(audit) {
|
|
|
123
301
|
insertion: leastPrivilegeBlock(audit.provider, false),
|
|
124
302
|
});
|
|
125
303
|
}
|
|
126
|
-
|
|
304
|
+
return finalize(audit, hints);
|
|
305
|
+
}
|
|
306
|
+
function finalize(audit, hints) {
|
|
307
|
+
// Supply-chain hints — provider-agnostic.
|
|
127
308
|
if (audit.externalActions.length > 0) {
|
|
128
309
|
hints.push({
|
|
129
310
|
code: 'pin-action-sha',
|
|
@@ -105,7 +105,7 @@ export async function runComplianceCheck(inspection, profileId) {
|
|
|
105
105
|
}
|
|
106
106
|
// MCP read-only contract — info only; the canonical check is the
|
|
107
107
|
// separate `shrk safety audit` command, which has access to the MCP
|
|
108
|
-
// tool list. We surface a hint here so
|
|
108
|
+
// tool list. We surface a hint here so adopters know to run it.
|
|
109
109
|
if (profile.requiredMcpReadOnly) {
|
|
110
110
|
findings.push({
|
|
111
111
|
profileId: profile.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"construct-adoption-diff.d.ts","sourceRoot":"","sources":["../src/construct-adoption-diff.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,8BAA8B,0CAA0C,CAAC;AAEtF,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhF,oBAAY,sBAAsB;IAChC,YAAY,kBAAkB;IAC9B,QAAQ,cAAc;IACtB,UAAU,gBAAgB;IAC1B,aAAa,mBAAmB;IAChC,cAAc,oBAAoB;IAClC,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,wEAAwE;IACxE,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,OAAO,8BAA8B,CAAC;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,yEAAyE;IACzE,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iFAAiF;IACjF,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACvC,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;
|
|
1
|
+
{"version":3,"file":"construct-adoption-diff.d.ts","sourceRoot":"","sources":["../src/construct-adoption-diff.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,8BAA8B,0CAA0C,CAAC;AAEtF,MAAM,MAAM,2BAA2B,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;AAEhF,oBAAY,sBAAsB;IAChC,YAAY,kBAAkB;IAC9B,QAAQ,cAAc;IACtB,UAAU,gBAAgB;IAC1B,aAAa,mBAAmB;IAChC,cAAc,oBAAoB;IAClC,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,0CAA0C;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,gCAAgC;IAChC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,wEAAwE;IACxE,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,OAAO,8BAA8B,CAAC;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,yEAAyE;IACzE,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iFAAiF;IACjF,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACvC,OAAO,EAAE;QACP,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AA8KD,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,sBAAsB,CAAC,CA2CjC;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAmBpF;AAED,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAuCxF;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,CAwCpF;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,sBAAsB,EAC5B,MAAM,EAAE,2BAA2B,GAClC,MAAM,CAKR"}
|
|
@@ -159,8 +159,7 @@ function renderProposedFilePreview(existingSource, plan) {
|
|
|
159
159
|
.join('\n');
|
|
160
160
|
if (!existingSource) {
|
|
161
161
|
return [
|
|
162
|
-
|
|
163
|
-
'function defineConstruct<T>(construct: T): T { return construct; }',
|
|
162
|
+
"import { defineConstruct } from '@shrkcrft/plugin-api';",
|
|
164
163
|
'',
|
|
165
164
|
'export default [',
|
|
166
165
|
additionBlock,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"construct-adoption.d.ts","sourceRoot":"","sources":["../src/construct-adoption.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"construct-adoption.d.ts","sourceRoot":"","sources":["../src/construct-adoption.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +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
|
+
};
|
|
1
9
|
import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from 'node:fs';
|
|
2
10
|
import * as nodePath from 'node:path';
|
|
11
|
+
import { pathToFileURL } from 'node:url';
|
|
3
12
|
import { listConstructs } from "./construct-registry.js";
|
|
4
13
|
import { InferredConstructConfidence, } from "./construct-inference.js";
|
|
5
|
-
import { importModuleViaLoader } from '@shrkcrft/core';
|
|
6
14
|
export const CONSTRUCT_ADOPTION_SCHEMA = 'sharkcraft.construct-adoption-plan/v1';
|
|
7
15
|
export var ConstructAdoptionCategory;
|
|
8
16
|
(function (ConstructAdoptionCategory) {
|
|
@@ -25,7 +33,7 @@ async function loadDrafts(file) {
|
|
|
25
33
|
if (!existsSync(file))
|
|
26
34
|
return [];
|
|
27
35
|
try {
|
|
28
|
-
const mod = (await
|
|
36
|
+
const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
|
|
29
37
|
if (Array.isArray(mod.default))
|
|
30
38
|
return mod.default;
|
|
31
39
|
if (Array.isArray(mod.constructs))
|
|
@@ -195,14 +203,7 @@ export function renderConstructAdoptionMarkdown(plan) {
|
|
|
195
203
|
lines.push('# Construct adoption plan');
|
|
196
204
|
lines.push('');
|
|
197
205
|
lines.push(`Generated: ${plan.generatedAt}`);
|
|
198
|
-
|
|
199
|
-
// markdown (which often gets committed) doesn't leak absolute paths.
|
|
200
|
-
const relDrafts = plan.draftsFile
|
|
201
|
-
? plan.draftsFile.startsWith(plan.projectRoot + nodePath.sep)
|
|
202
|
-
? plan.draftsFile.slice(plan.projectRoot.length + 1)
|
|
203
|
-
: nodePath.basename(plan.draftsFile)
|
|
204
|
-
: '(none)';
|
|
205
|
-
lines.push(`Drafts: ${relDrafts}`);
|
|
206
|
+
lines.push(`Drafts: ${plan.draftsFile ?? '(none)'}`);
|
|
206
207
|
lines.push('');
|
|
207
208
|
lines.push('## Summary');
|
|
208
209
|
lines.push('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"construct-inference.d.ts","sourceRoot":"","sources":["../src/construct-inference.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,eAAO,MAAM,0BAA0B,sCAAsC,CAAC;AAE9E,oBAAY,2BAA2B;IACrC,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,GAAG,QAAQ;CACZ;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,2BAA2B,CAAC;IACxC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,MAAM,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC5C,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,2BAA2B,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,OAAO,0BAA0B,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC1C,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AA0OD,wBAAsB,eAAe,CACnC,UAAU,EAAE,qBAAqB,EACjC,KAAK,GAAE,wBAA6B,GACnC,OAAO,CAAC,yBAAyB,CAAC,CAuJpC;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,yBAAyB,GAChC,MAAM,
|
|
1
|
+
{"version":3,"file":"construct-inference.d.ts","sourceRoot":"","sources":["../src/construct-inference.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,eAAO,MAAM,0BAA0B,sCAAsC,CAAC;AAE9E,oBAAY,2BAA2B;IACrC,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,GAAG,QAAQ;CACZ;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,2BAA2B,CAAC;IACxC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,MAAM,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC5C,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,2BAA2B,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,OAAO,0BAA0B,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC1C,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AA0OD,wBAAsB,eAAe,CACnC,UAAU,EAAE,qBAAqB,EACjC,KAAK,GAAE,wBAA6B,GACnC,OAAO,CAAC,yBAAyB,CAAC,CAuJpC;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,yBAAyB,GAChC,MAAM,CAkBR"}
|
|
@@ -379,8 +379,7 @@ export function renderConstructDraftsModule(result) {
|
|
|
379
379
|
lines.push(" * SharkCraft does NOT load this file automatically.");
|
|
380
380
|
lines.push(` * Generated: ${result.generatedAt}`);
|
|
381
381
|
lines.push(" */");
|
|
382
|
-
lines.push(
|
|
383
|
-
lines.push('function defineConstruct<T>(construct: T): T { return construct; }');
|
|
382
|
+
lines.push("import { defineConstruct } from '@shrkcrft/plugin-api';");
|
|
384
383
|
lines.push('');
|
|
385
384
|
lines.push('export default [');
|
|
386
385
|
for (const c of result.candidates) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"construct-registry.d.ts","sourceRoot":"","sources":["../src/construct-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"construct-registry.d.ts","sourceRoot":"","sources":["../src/construct-registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAE5E,MAAM,WAAW,UAAW,SAAQ,eAAe;IACjD,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;CAAG;AA+DhE,wBAAsB,cAAc,CAClC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAwFhC;AAED;wEACwE;AACxE,wBAAgB,cAAc,CAAC,UAAU,EAAE,qBAAqB,GAAG,SAAS,UAAU,EAAE,CAGvF;AAED,wEAAwE;AACxE,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzF;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,UAAU,CAAC;IACtB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC,CAAC;IACxD,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,UAAU,GAAG,eAAe,CAmBrE"}
|
|
@@ -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 {
|
|
11
|
+
import { pathToFileURL } from 'node:url';
|
|
4
12
|
export const CONSTRUCT_REGISTRY_SCHEMA = 'sharkcraft.construct-registry/v1';
|
|
5
13
|
const CACHE = new Map();
|
|
6
14
|
function readJsonOrEmpty(file) {
|
|
@@ -14,7 +22,7 @@ function readJsonOrEmpty(file) {
|
|
|
14
22
|
}
|
|
15
23
|
}
|
|
16
24
|
async function importDefault(file) {
|
|
17
|
-
const mod = (await
|
|
25
|
+
const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
|
|
18
26
|
const def = mod.default;
|
|
19
27
|
if (Array.isArray(def))
|
|
20
28
|
return def;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract-template-registry.d.ts","sourceRoot":"","sources":["../src/contract-template-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"contract-template-registry.d.ts","sourceRoot":"","sources":["../src/contract-template-registry.ts"],"names":[],"mappings":"AAOA,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,iCAAiC,6CAA6C,CAAC;AAE5F,oBAAY,sBAAsB;IAChC,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,8BAA8B;IAC7C,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,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AA+CD,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC;IACT,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC3C,MAAM,EAAE,SAAS,8BAA8B,EAAE,CAAC;CACnD,CAAC,CAkGD;AAED,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,sBAAsB,EAAE,CAAC,CAG5C;AAED,wBAAgB,kCAAkC,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAG7E"}
|
|
@@ -1,11 +1,19 @@
|
|
|
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
|
* Contract template registry. Merges engine built-ins with
|
|
3
11
|
* pack-contributed contract templates via `contractTemplateFiles`.
|
|
4
12
|
*/
|
|
5
13
|
import { existsSync } from 'node:fs';
|
|
6
14
|
import * as nodePath from 'node:path';
|
|
15
|
+
import { pathToFileURL } from 'node:url';
|
|
7
16
|
import { ALL_CONTRACT_TEMPLATES, AGENT_CONTRACT_TEMPLATE_SCHEMA, } from "./agent-contract-templates.js";
|
|
8
|
-
import { importModuleViaLoader } from '@shrkcrft/core';
|
|
9
17
|
export const CONTRACT_TEMPLATE_REGISTRY_SCHEMA = 'sharkcraft.contract-template-registry/v1';
|
|
10
18
|
export var ContractTemplateSource;
|
|
11
19
|
(function (ContractTemplateSource) {
|
|
@@ -15,7 +23,7 @@ export var ContractTemplateSource;
|
|
|
15
23
|
})(ContractTemplateSource || (ContractTemplateSource = {}));
|
|
16
24
|
const CACHE = new Map();
|
|
17
25
|
async function importDefault(file) {
|
|
18
|
-
const mod = (await
|
|
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":"convention-registry.d.ts","sourceRoot":"","sources":["../src/convention-registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"convention-registry.d.ts","sourceRoot":"","sources":["../src/convention-registry.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,0BAA0B,sCAAsC,CAAC;AAE9E,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,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,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,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;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,gCAAgC,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC9C,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,gBAAgB,CAAC;CAC9C;AAiBD,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,qBAAqB,EACjC,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,OAAO,CAAC,sBAAsB,CAAC,CAqCjC"}
|