@corvus-tools/skill-manager-core 0.1.0
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/LICENSE +21 -0
- package/dist/agents/AgentAdapter.d.ts +11 -0
- package/dist/agents/AgentAdapter.d.ts.map +1 -0
- package/dist/agents/AgentAdapter.js +2 -0
- package/dist/agents/AgentAdapter.js.map +1 -0
- package/dist/agents/adapters.d.ts +44 -0
- package/dist/agents/adapters.d.ts.map +1 -0
- package/dist/agents/adapters.js +56 -0
- package/dist/agents/adapters.js.map +1 -0
- package/dist/config/configSchema.d.ts +109 -0
- package/dist/config/configSchema.d.ts.map +1 -0
- package/dist/config/configSchema.js +46 -0
- package/dist/config/configSchema.js.map +1 -0
- package/dist/config/configStore.d.ts +24 -0
- package/dist/config/configStore.d.ts.map +1 -0
- package/dist/config/configStore.js +77 -0
- package/dist/config/configStore.js.map +1 -0
- package/dist/git/gitRunner.d.ts +10 -0
- package/dist/git/gitRunner.d.ts.map +1 -0
- package/dist/git/gitRunner.js +23 -0
- package/dist/git/gitRunner.js.map +1 -0
- package/dist/git/skillpackSetup.d.ts +37 -0
- package/dist/git/skillpackSetup.d.ts.map +1 -0
- package/dist/git/skillpackSetup.js +177 -0
- package/dist/git/skillpackSetup.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/links/applyEngine.d.ts +24 -0
- package/dist/links/applyEngine.d.ts.map +1 -0
- package/dist/links/applyEngine.js +230 -0
- package/dist/links/applyEngine.js.map +1 -0
- package/dist/links/linkPlan.d.ts +54 -0
- package/dist/links/linkPlan.d.ts.map +1 -0
- package/dist/links/linkPlan.js +121 -0
- package/dist/links/linkPlan.js.map +1 -0
- package/dist/lock/lockSchema.d.ts +84 -0
- package/dist/lock/lockSchema.d.ts.map +1 -0
- package/dist/lock/lockSchema.js +30 -0
- package/dist/lock/lockSchema.js.map +1 -0
- package/dist/lock/lockStore.d.ts +15 -0
- package/dist/lock/lockStore.d.ts.map +1 -0
- package/dist/lock/lockStore.js +56 -0
- package/dist/lock/lockStore.js.map +1 -0
- package/dist/manifest/manifestSchema.d.ts +86 -0
- package/dist/manifest/manifestSchema.d.ts.map +1 -0
- package/dist/manifest/manifestSchema.js +32 -0
- package/dist/manifest/manifestSchema.js.map +1 -0
- package/dist/manifest/manifestStore.d.ts +18 -0
- package/dist/manifest/manifestStore.d.ts.map +1 -0
- package/dist/manifest/manifestStore.js +47 -0
- package/dist/manifest/manifestStore.js.map +1 -0
- package/dist/paths.d.ts +14 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +43 -0
- package/dist/paths.js.map +1 -0
- package/dist/registry/registrySchema.d.ts +73 -0
- package/dist/registry/registrySchema.d.ts.map +1 -0
- package/dist/registry/registrySchema.js +30 -0
- package/dist/registry/registrySchema.js.map +1 -0
- package/dist/reports/doctorReport.d.ts +5 -0
- package/dist/reports/doctorReport.d.ts.map +1 -0
- package/dist/reports/doctorReport.js +297 -0
- package/dist/reports/doctorReport.js.map +1 -0
- package/dist/reports/reportInternals.d.ts +48 -0
- package/dist/reports/reportInternals.d.ts.map +1 -0
- package/dist/reports/reportInternals.js +220 -0
- package/dist/reports/reportInternals.js.map +1 -0
- package/dist/reports/reportTypes.d.ts +54 -0
- package/dist/reports/reportTypes.d.ts.map +1 -0
- package/dist/reports/reportTypes.js +2 -0
- package/dist/reports/reportTypes.js.map +1 -0
- package/dist/reports/statusReport.d.ts +6 -0
- package/dist/reports/statusReport.d.ts.map +1 -0
- package/dist/reports/statusReport.js +49 -0
- package/dist/reports/statusReport.js.map +1 -0
- package/dist/skillpackDefaults.d.ts +5 -0
- package/dist/skillpackDefaults.d.ts.map +1 -0
- package/dist/skillpackDefaults.js +5 -0
- package/dist/skillpackDefaults.js.map +1 -0
- package/dist/skills/skillDiscovery.d.ts +36 -0
- package/dist/skills/skillDiscovery.d.ts.map +1 -0
- package/dist/skills/skillDiscovery.js +441 -0
- package/dist/skills/skillDiscovery.js.map +1 -0
- package/package.json +37 -0
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const supportedAgentSchema: z.ZodEnum<["codex", "claude", "copilot", "opencode", "pi", "custom", "gemini"]>;
|
|
3
|
+
export declare const registrySkillEntrySchema: z.ZodObject<{
|
|
4
|
+
id: z.ZodString;
|
|
5
|
+
path: z.ZodString;
|
|
6
|
+
title: z.ZodString;
|
|
7
|
+
description: z.ZodString;
|
|
8
|
+
supportedAgents: z.ZodArray<z.ZodEnum<["codex", "claude", "copilot", "opencode", "pi", "custom", "gemini"]>, "many">;
|
|
9
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
10
|
+
}, "strict", z.ZodTypeAny, {
|
|
11
|
+
id: string;
|
|
12
|
+
path: string;
|
|
13
|
+
title: string;
|
|
14
|
+
description: string;
|
|
15
|
+
supportedAgents: ("codex" | "claude" | "copilot" | "opencode" | "pi" | "custom" | "gemini")[];
|
|
16
|
+
tags?: string[] | undefined;
|
|
17
|
+
}, {
|
|
18
|
+
id: string;
|
|
19
|
+
path: string;
|
|
20
|
+
title: string;
|
|
21
|
+
description: string;
|
|
22
|
+
supportedAgents: ("codex" | "claude" | "copilot" | "opencode" | "pi" | "custom" | "gemini")[];
|
|
23
|
+
tags?: string[] | undefined;
|
|
24
|
+
}>;
|
|
25
|
+
export declare const skillRegistrySchema: z.ZodObject<{
|
|
26
|
+
version: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
skills: z.ZodArray<z.ZodObject<{
|
|
28
|
+
id: z.ZodString;
|
|
29
|
+
path: z.ZodString;
|
|
30
|
+
title: z.ZodString;
|
|
31
|
+
description: z.ZodString;
|
|
32
|
+
supportedAgents: z.ZodArray<z.ZodEnum<["codex", "claude", "copilot", "opencode", "pi", "custom", "gemini"]>, "many">;
|
|
33
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
34
|
+
}, "strict", z.ZodTypeAny, {
|
|
35
|
+
id: string;
|
|
36
|
+
path: string;
|
|
37
|
+
title: string;
|
|
38
|
+
description: string;
|
|
39
|
+
supportedAgents: ("codex" | "claude" | "copilot" | "opencode" | "pi" | "custom" | "gemini")[];
|
|
40
|
+
tags?: string[] | undefined;
|
|
41
|
+
}, {
|
|
42
|
+
id: string;
|
|
43
|
+
path: string;
|
|
44
|
+
title: string;
|
|
45
|
+
description: string;
|
|
46
|
+
supportedAgents: ("codex" | "claude" | "copilot" | "opencode" | "pi" | "custom" | "gemini")[];
|
|
47
|
+
tags?: string[] | undefined;
|
|
48
|
+
}>, "many">;
|
|
49
|
+
}, "strict", z.ZodTypeAny, {
|
|
50
|
+
skills: {
|
|
51
|
+
id: string;
|
|
52
|
+
path: string;
|
|
53
|
+
title: string;
|
|
54
|
+
description: string;
|
|
55
|
+
supportedAgents: ("codex" | "claude" | "copilot" | "opencode" | "pi" | "custom" | "gemini")[];
|
|
56
|
+
tags?: string[] | undefined;
|
|
57
|
+
}[];
|
|
58
|
+
version?: number | undefined;
|
|
59
|
+
}, {
|
|
60
|
+
skills: {
|
|
61
|
+
id: string;
|
|
62
|
+
path: string;
|
|
63
|
+
title: string;
|
|
64
|
+
description: string;
|
|
65
|
+
supportedAgents: ("codex" | "claude" | "copilot" | "opencode" | "pi" | "custom" | "gemini")[];
|
|
66
|
+
tags?: string[] | undefined;
|
|
67
|
+
}[];
|
|
68
|
+
version?: number | undefined;
|
|
69
|
+
}>;
|
|
70
|
+
export type SupportedAgent = z.infer<typeof supportedAgentSchema>;
|
|
71
|
+
export type RegistrySkillEntry = z.infer<typeof registrySkillEntrySchema>;
|
|
72
|
+
export type SkillRegistry = z.infer<typeof skillRegistrySchema>;
|
|
73
|
+
//# sourceMappingURL=registrySchema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registrySchema.d.ts","sourceRoot":"","sources":["../../src/registry/registrySchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,eAAO,MAAM,oBAAoB,iFAQ/B,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;EAY1B,CAAC;AAEZ,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKrB,CAAC;AAEZ,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const supportedAgentSchema = z.enum([
|
|
3
|
+
'codex',
|
|
4
|
+
'claude',
|
|
5
|
+
'copilot',
|
|
6
|
+
'opencode',
|
|
7
|
+
'pi',
|
|
8
|
+
'custom',
|
|
9
|
+
'gemini'
|
|
10
|
+
]);
|
|
11
|
+
export const registrySkillEntrySchema = z
|
|
12
|
+
.object({
|
|
13
|
+
id: z
|
|
14
|
+
.string()
|
|
15
|
+
.min(1)
|
|
16
|
+
.regex(/^[a-zA-Z0-9._-]+$/, 'Use only letters, numbers, dots, underscores, and hyphens.'),
|
|
17
|
+
path: z.string().min(1),
|
|
18
|
+
title: z.string().min(1),
|
|
19
|
+
description: z.string().min(1),
|
|
20
|
+
supportedAgents: z.array(supportedAgentSchema).min(1),
|
|
21
|
+
tags: z.array(z.string().min(1)).optional()
|
|
22
|
+
})
|
|
23
|
+
.strict();
|
|
24
|
+
export const skillRegistrySchema = z
|
|
25
|
+
.object({
|
|
26
|
+
version: z.number().int().positive().optional(),
|
|
27
|
+
skills: z.array(registrySkillEntrySchema)
|
|
28
|
+
})
|
|
29
|
+
.strict();
|
|
30
|
+
//# sourceMappingURL=registrySchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registrySchema.js","sourceRoot":"","sources":["../../src/registry/registrySchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC;IACzC,OAAO;IACP,QAAQ;IACR,SAAS;IACT,UAAU;IACV,IAAI;IACJ,QAAQ;IACR,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,KAAK,CAAC,mBAAmB,EAAE,4DAA4D,CAAC;IAC3F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC5C,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC/C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;CAC1C,CAAC;KACD,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { DoctorReport } from './reportTypes.js';
|
|
2
|
+
import { type ReportOptions } from './reportInternals.js';
|
|
3
|
+
export type BuildDoctorReportOptions = ReportOptions;
|
|
4
|
+
export declare function buildDoctorReport(options?: BuildDoctorReportOptions): Promise<DoctorReport>;
|
|
5
|
+
//# sourceMappingURL=doctorReport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctorReport.d.ts","sourceRoot":"","sources":["../../src/reports/doctorReport.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAc,YAAY,EAAe,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAEL,KAAK,aAAa,EAInB,MAAM,sBAAsB,CAAC;AAG9B,MAAM,MAAM,wBAAwB,GAAG,aAAa,CAAC;AAErD,wBAAsB,iBAAiB,CAAC,OAAO,GAAE,wBAA6B,GAAG,OAAO,CAAC,YAAY,CAAC,CAoBrG"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { buildReportContext, inspectLinkTarget, pathExists } from './reportInternals.js';
|
|
3
|
+
import { statusReportFromContext } from './statusReport.js';
|
|
4
|
+
export async function buildDoctorReport(options = {}) {
|
|
5
|
+
const context = await buildReportContext(options);
|
|
6
|
+
const status = await statusFromContext(context);
|
|
7
|
+
const issues = [];
|
|
8
|
+
collectConfigIssues(context, issues);
|
|
9
|
+
collectSkillpackIssues(context, issues);
|
|
10
|
+
collectDiscoveryIssues(context, issues);
|
|
11
|
+
collectAgentIssues(context, issues);
|
|
12
|
+
collectPlanIssues(context, issues);
|
|
13
|
+
await collectManifestIssues(context, issues);
|
|
14
|
+
issues.sort(compareDoctorIssues);
|
|
15
|
+
return {
|
|
16
|
+
configPath: context.configPath,
|
|
17
|
+
healthy: issues.filter((issue) => issue.severity === 'error').length === 0,
|
|
18
|
+
issues,
|
|
19
|
+
status
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
async function statusFromContext(context) {
|
|
23
|
+
return statusReportFromContext(context);
|
|
24
|
+
}
|
|
25
|
+
function collectConfigIssues(context, issues) {
|
|
26
|
+
if (!context.configExists) {
|
|
27
|
+
issues.push({
|
|
28
|
+
severity: 'error',
|
|
29
|
+
code: 'missing-config',
|
|
30
|
+
message: `Manager config is missing at ${context.configPath}.`,
|
|
31
|
+
action: 'Start the TUI once to create the default manager config, or restore config.json.',
|
|
32
|
+
path: context.configPath
|
|
33
|
+
});
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (context.config === undefined) {
|
|
37
|
+
issues.push({
|
|
38
|
+
severity: 'error',
|
|
39
|
+
code: 'invalid-config',
|
|
40
|
+
message: `Manager config is invalid: ${context.configError ?? 'unknown validation error'}.`,
|
|
41
|
+
action: 'Fix config.json so it matches the manager config schema.',
|
|
42
|
+
path: context.configPath
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
if (!context.manifestValid) {
|
|
46
|
+
issues.push({
|
|
47
|
+
severity: 'error',
|
|
48
|
+
code: 'invalid-manifest',
|
|
49
|
+
message: `Managed link manifest is invalid: ${context.manifestError ?? 'unknown validation error'}.`,
|
|
50
|
+
action: 'Inspect manifest.json before applying further link changes.',
|
|
51
|
+
path: context.manifestPath
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function collectSkillpackIssues(context, issues) {
|
|
56
|
+
if (context.config === undefined) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (context.config.skillpack === undefined) {
|
|
60
|
+
issues.push({
|
|
61
|
+
severity: 'error',
|
|
62
|
+
code: 'skillpack-not-configured',
|
|
63
|
+
message: 'No skillpack is configured.',
|
|
64
|
+
action: 'Use Setup Skillpack to configure the source and checkout path.'
|
|
65
|
+
});
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (context.checkout === undefined || !context.checkout.exists) {
|
|
69
|
+
issues.push({
|
|
70
|
+
severity: 'error',
|
|
71
|
+
code: 'missing-skillpack-checkout',
|
|
72
|
+
message: `Skillpack checkout is missing at ${context.config.skillpack.checkoutPath}.`,
|
|
73
|
+
action: 'Run Setup Skillpack and confirm the initial clone if the checkout is absent.',
|
|
74
|
+
path: context.config.skillpack.checkoutPath
|
|
75
|
+
});
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (!context.checkout.readable) {
|
|
79
|
+
issues.push({
|
|
80
|
+
severity: 'error',
|
|
81
|
+
code: 'unreadable-skillpack-checkout',
|
|
82
|
+
message: `Skillpack checkout is not readable: ${context.checkout.message}.`,
|
|
83
|
+
action: 'Check that the checkout path exists, is a git worktree, and is readable.',
|
|
84
|
+
path: context.checkout.checkoutPath
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
if (context.checkout.dirty) {
|
|
88
|
+
issues.push({
|
|
89
|
+
severity: 'warning',
|
|
90
|
+
code: 'dirty-checkout',
|
|
91
|
+
message: `Skillpack checkout has local changes (${context.checkout.dirtyFiles.length} item(s)).`,
|
|
92
|
+
action: 'Review the checkout manually. The manager will not pull, reset, or repair it.',
|
|
93
|
+
path: context.checkout.checkoutPath
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
function collectDiscoveryIssues(context, issues) {
|
|
98
|
+
if (context.discovery === undefined) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
for (const warning of context.discovery.warnings) {
|
|
102
|
+
if (warning.code === 'missing-registry') {
|
|
103
|
+
issues.push({
|
|
104
|
+
severity: 'warning',
|
|
105
|
+
code: 'missing-registry',
|
|
106
|
+
message: warning.message,
|
|
107
|
+
action: 'Add registry.json in the skillpack repository if registry-backed discovery is required.',
|
|
108
|
+
...(warning.path === undefined ? {} : { path: warning.path })
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
for (const error of context.discovery.errors) {
|
|
113
|
+
const mappedIssue = mapDiscoveryError(error);
|
|
114
|
+
issues.push(mappedIssue);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
function collectAgentIssues(context, issues) {
|
|
118
|
+
for (const adapter of context.adapters) {
|
|
119
|
+
const agentConfig = context.config?.agents?.[adapter.id];
|
|
120
|
+
if (agentConfig?.enabled !== true) {
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
if (adapter.supportStatus === 'deferred' || adapter.supportStatus === 'unavailable') {
|
|
124
|
+
issues.push({
|
|
125
|
+
severity: 'warning',
|
|
126
|
+
code: 'unsupported-agent-enabled',
|
|
127
|
+
message: `${adapter.displayName} is ${adapter.supportStatus} in this MVP.`,
|
|
128
|
+
action: 'Disable this agent for now; Gemini wrappers are deferred.',
|
|
129
|
+
agentId: adapter.id
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function collectPlanIssues(context, issues) {
|
|
135
|
+
for (const conflict of context.plan?.conflicts ?? []) {
|
|
136
|
+
if (conflict.code !== 'unmanaged-target-exists') {
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
issues.push({
|
|
140
|
+
severity: 'error',
|
|
141
|
+
code: 'unmanaged-conflict-at-planned-target',
|
|
142
|
+
message: conflict.message,
|
|
143
|
+
action: 'Choose a different target path or manually move the unmanaged file/directory before applying.',
|
|
144
|
+
...(conflict.path === undefined ? {} : { path: conflict.path }),
|
|
145
|
+
...(conflict.agentId === undefined ? {} : { agentId: conflict.agentId }),
|
|
146
|
+
...(conflict.skillId === undefined ? {} : { skillId: conflict.skillId })
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
for (const warning of context.plan?.warnings ?? []) {
|
|
150
|
+
if (warning.code !== 'agent-not-supported') {
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
issues.push({
|
|
154
|
+
severity: 'warning',
|
|
155
|
+
code: 'unsupported-agent-enabled',
|
|
156
|
+
message: warning.message,
|
|
157
|
+
action: 'Disable unsupported or deferred agents before applying.',
|
|
158
|
+
...(warning.agentId === undefined ? {} : { agentId: warning.agentId })
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
async function collectManifestIssues(context, issues) {
|
|
163
|
+
const skillpackCheckoutPath = context.config?.skillpack?.checkoutPath;
|
|
164
|
+
for (const [manifestKey, entry] of Object.entries(context.manifest.links)) {
|
|
165
|
+
if (manifestKey !== entry.targetPath) {
|
|
166
|
+
issues.push({
|
|
167
|
+
severity: 'error',
|
|
168
|
+
code: 'manifest-entry-with-wrong-target',
|
|
169
|
+
message: `Manifest key ${manifestKey} does not match recorded target ${entry.targetPath}.`,
|
|
170
|
+
action: 'Inspect manifest.json; do not apply until the ownership record is understood.',
|
|
171
|
+
path: manifestKey,
|
|
172
|
+
agentId: entry.agentId,
|
|
173
|
+
skillId: entry.skillId
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
if (skillpackCheckoutPath !== undefined && !isPathInside(skillpackCheckoutPath, entry.sourcePath)) {
|
|
177
|
+
issues.push({
|
|
178
|
+
severity: 'error',
|
|
179
|
+
code: 'source-outside-skillpack',
|
|
180
|
+
message: `Managed source is outside the configured skillpack checkout: ${entry.sourcePath}.`,
|
|
181
|
+
action: 'Inspect manifest.json before applying; manager-owned links must point inside the checkout.',
|
|
182
|
+
path: entry.sourcePath,
|
|
183
|
+
agentId: entry.agentId,
|
|
184
|
+
skillId: entry.skillId
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
if (!(await pathExists(entry.sourcePath))) {
|
|
188
|
+
issues.push({
|
|
189
|
+
severity: 'error',
|
|
190
|
+
code: 'missing-source-skill-path',
|
|
191
|
+
message: `Managed source skill path is missing: ${entry.sourcePath}.`,
|
|
192
|
+
action: 'Re-run discovery/setup and review the skillpack checkout; Doctor will not repair links.',
|
|
193
|
+
path: entry.sourcePath,
|
|
194
|
+
agentId: entry.agentId,
|
|
195
|
+
skillId: entry.skillId
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
const linkTarget = await inspectLinkTarget(entry.targetPath);
|
|
199
|
+
if (linkTarget.kind === 'missing') {
|
|
200
|
+
issues.push({
|
|
201
|
+
severity: 'warning',
|
|
202
|
+
code: 'missing-managed-link',
|
|
203
|
+
message: `Manifest owns a link that is missing on disk: ${entry.targetPath}.`,
|
|
204
|
+
action: 'Preview an apply plan to recreate or remove the manager-owned entry.',
|
|
205
|
+
path: entry.targetPath,
|
|
206
|
+
agentId: entry.agentId,
|
|
207
|
+
skillId: entry.skillId
|
|
208
|
+
});
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
if (linkTarget.kind === 'not-link') {
|
|
212
|
+
issues.push({
|
|
213
|
+
severity: 'error',
|
|
214
|
+
code: 'manifest-entry-with-wrong-target',
|
|
215
|
+
message: `Manifest target is not a symlink/junction: ${entry.targetPath}.`,
|
|
216
|
+
action: 'Move the unmanaged target manually before applying manager changes.',
|
|
217
|
+
path: entry.targetPath,
|
|
218
|
+
agentId: entry.agentId,
|
|
219
|
+
skillId: entry.skillId
|
|
220
|
+
});
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
if (linkTarget.broken) {
|
|
224
|
+
issues.push({
|
|
225
|
+
severity: 'error',
|
|
226
|
+
code: 'broken-managed-link',
|
|
227
|
+
message: `Managed link is broken: ${entry.targetPath}.`,
|
|
228
|
+
action: 'Use the apply preview to replace a broken manager-owned link only after confirmation.',
|
|
229
|
+
path: entry.targetPath,
|
|
230
|
+
agentId: entry.agentId,
|
|
231
|
+
skillId: entry.skillId
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
if (linkTarget.resolvedSourcePath !== entry.sourcePath) {
|
|
235
|
+
issues.push({
|
|
236
|
+
severity: 'error',
|
|
237
|
+
code: 'manifest-entry-with-wrong-target',
|
|
238
|
+
message: `Managed link target differs from manifest source: ${entry.targetPath}.`,
|
|
239
|
+
action: 'Inspect the link manually; the manager will refuse to remove or overwrite mismatched links.',
|
|
240
|
+
path: entry.targetPath,
|
|
241
|
+
agentId: entry.agentId,
|
|
242
|
+
skillId: entry.skillId
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
function mapDiscoveryError(error) {
|
|
248
|
+
if (error.code === 'invalid-registry' || error.code === 'invalid-registry-json') {
|
|
249
|
+
return {
|
|
250
|
+
severity: 'error',
|
|
251
|
+
code: 'invalid-registry',
|
|
252
|
+
message: error.message,
|
|
253
|
+
action: 'Fix registry.json in the skillpack repository; the manager will not rewrite it.',
|
|
254
|
+
...(error.path === undefined ? {} : { path: error.path }),
|
|
255
|
+
...(error.skillId === undefined ? {} : { skillId: error.skillId })
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
if (error.code === 'missing-skill-file') {
|
|
259
|
+
return {
|
|
260
|
+
severity: 'error',
|
|
261
|
+
code: 'missing-skill-md',
|
|
262
|
+
message: error.message,
|
|
263
|
+
action: 'Restore the referenced SKILL.md in the skillpack repository.',
|
|
264
|
+
...(error.path === undefined ? {} : { path: error.path }),
|
|
265
|
+
...(error.skillId === undefined ? {} : { skillId: error.skillId })
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
return {
|
|
269
|
+
severity: 'error',
|
|
270
|
+
code: error.code,
|
|
271
|
+
message: error.message,
|
|
272
|
+
action: 'Inspect the skillpack checkout manually; Doctor is read-only.',
|
|
273
|
+
...(error.path === undefined ? {} : { path: error.path }),
|
|
274
|
+
...(error.skillId === undefined ? {} : { skillId: error.skillId })
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
function compareDoctorIssues(left, right) {
|
|
278
|
+
return (severityRank(left.severity) - severityRank(right.severity) ||
|
|
279
|
+
left.code.localeCompare(right.code) ||
|
|
280
|
+
(left.agentId ?? '').localeCompare(right.agentId ?? '') ||
|
|
281
|
+
(left.skillId ?? '').localeCompare(right.skillId ?? '') ||
|
|
282
|
+
(left.path ?? '').localeCompare(right.path ?? ''));
|
|
283
|
+
}
|
|
284
|
+
function severityRank(severity) {
|
|
285
|
+
if (severity === 'error') {
|
|
286
|
+
return 0;
|
|
287
|
+
}
|
|
288
|
+
if (severity === 'warning') {
|
|
289
|
+
return 1;
|
|
290
|
+
}
|
|
291
|
+
return 2;
|
|
292
|
+
}
|
|
293
|
+
function isPathInside(parentPath, candidatePath) {
|
|
294
|
+
const relativePath = path.relative(path.resolve(parentPath), path.resolve(candidatePath));
|
|
295
|
+
return relativePath === '' || (!relativePath.startsWith('..') && !path.isAbsolute(relativePath));
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=doctorReport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctorReport.js","sourceRoot":"","sources":["../../src/reports/doctorReport.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { AgentAdapter } from '../agents/AgentAdapter.js';
|
|
2
|
+
import type { ManagerConfig } from '../config/configSchema.js';
|
|
3
|
+
import type { GitRunner } from '../git/gitRunner.js';
|
|
4
|
+
import { inspectSkillpackCheckout } from '../git/skillpackSetup.js';
|
|
5
|
+
import type { LinkPlan, TargetState } from '../links/linkPlan.js';
|
|
6
|
+
import type { ManagerLock } from '../lock/lockSchema.js';
|
|
7
|
+
import type { ManagerManifest } from '../manifest/manifestSchema.js';
|
|
8
|
+
import type { SkillDiscoveryResult } from '../skills/skillDiscovery.js';
|
|
9
|
+
export interface ReportOptions {
|
|
10
|
+
homeDir?: string;
|
|
11
|
+
managerStateDir?: string;
|
|
12
|
+
configPath?: string;
|
|
13
|
+
git?: GitRunner;
|
|
14
|
+
}
|
|
15
|
+
export interface ReportContext {
|
|
16
|
+
homeDir?: string;
|
|
17
|
+
configPath: string;
|
|
18
|
+
managerStateDir: string;
|
|
19
|
+
configExists: boolean;
|
|
20
|
+
config?: ManagerConfig;
|
|
21
|
+
configError?: string;
|
|
22
|
+
lockPath: string;
|
|
23
|
+
lock?: ManagerLock;
|
|
24
|
+
lockError?: string;
|
|
25
|
+
manifestPath: string;
|
|
26
|
+
manifest: ManagerManifest;
|
|
27
|
+
manifestExists: boolean;
|
|
28
|
+
manifestValid: boolean;
|
|
29
|
+
manifestError?: string;
|
|
30
|
+
adapters: AgentAdapter[];
|
|
31
|
+
checkout?: Awaited<ReturnType<typeof inspectSkillpackCheckout>>;
|
|
32
|
+
discovery?: SkillDiscoveryResult;
|
|
33
|
+
plan?: LinkPlan;
|
|
34
|
+
targetStates: TargetState[];
|
|
35
|
+
}
|
|
36
|
+
export declare function buildReportContext(options?: ReportOptions): Promise<ReportContext>;
|
|
37
|
+
export declare function pathExists(candidatePath: string): Promise<boolean>;
|
|
38
|
+
export declare function inspectLinkTarget(targetPath: string): Promise<{
|
|
39
|
+
kind: 'missing';
|
|
40
|
+
} | {
|
|
41
|
+
kind: 'not-link';
|
|
42
|
+
} | {
|
|
43
|
+
kind: 'link';
|
|
44
|
+
resolvedSourcePath: string;
|
|
45
|
+
broken: boolean;
|
|
46
|
+
}>;
|
|
47
|
+
export declare function formatError(error: unknown): string;
|
|
48
|
+
//# sourceMappingURL=reportInternals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reportInternals.d.ts","sourceRoot":"","sources":["../../src/reports/reportInternals.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,YAAY,EAAU,MAAM,2BAA2B,CAAC;AAErE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,2BAA2B,CAAC;AAE7D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAC,wBAAwB,EAAC,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAC,QAAQ,EAAE,WAAW,EAAC,MAAM,sBAAsB,CAAC;AAEhE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,+BAA+B,CAAC;AAUnE,OAAO,KAAK,EAAC,oBAAoB,EAAC,MAAM,6BAA6B,CAAC;AAGtE,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,SAAS,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,eAAe,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAAC;IAChE,SAAS,CAAC,EAAE,oBAAoB,CAAC;IACjC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,YAAY,EAAE,WAAW,EAAE,CAAC;CAC7B;AAED,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CA0E5F;AA4HD,wBAAsB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAWxE;AAED,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAChE;IAAC,IAAI,EAAE,SAAS,CAAA;CAAC,GACjB;IAAC,IAAI,EAAE,UAAU,CAAA;CAAC,GAClB;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,kBAAkB,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAC,CAC9D,CAyBA;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAWlD"}
|