@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.
Files changed (86) hide show
  1. package/LICENSE +21 -0
  2. package/dist/agents/AgentAdapter.d.ts +11 -0
  3. package/dist/agents/AgentAdapter.d.ts.map +1 -0
  4. package/dist/agents/AgentAdapter.js +2 -0
  5. package/dist/agents/AgentAdapter.js.map +1 -0
  6. package/dist/agents/adapters.d.ts +44 -0
  7. package/dist/agents/adapters.d.ts.map +1 -0
  8. package/dist/agents/adapters.js +56 -0
  9. package/dist/agents/adapters.js.map +1 -0
  10. package/dist/config/configSchema.d.ts +109 -0
  11. package/dist/config/configSchema.d.ts.map +1 -0
  12. package/dist/config/configSchema.js +46 -0
  13. package/dist/config/configSchema.js.map +1 -0
  14. package/dist/config/configStore.d.ts +24 -0
  15. package/dist/config/configStore.d.ts.map +1 -0
  16. package/dist/config/configStore.js +77 -0
  17. package/dist/config/configStore.js.map +1 -0
  18. package/dist/git/gitRunner.d.ts +10 -0
  19. package/dist/git/gitRunner.d.ts.map +1 -0
  20. package/dist/git/gitRunner.js +23 -0
  21. package/dist/git/gitRunner.js.map +1 -0
  22. package/dist/git/skillpackSetup.d.ts +37 -0
  23. package/dist/git/skillpackSetup.d.ts.map +1 -0
  24. package/dist/git/skillpackSetup.js +177 -0
  25. package/dist/git/skillpackSetup.js.map +1 -0
  26. package/dist/index.d.ts +20 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +18 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/links/applyEngine.d.ts +24 -0
  31. package/dist/links/applyEngine.d.ts.map +1 -0
  32. package/dist/links/applyEngine.js +230 -0
  33. package/dist/links/applyEngine.js.map +1 -0
  34. package/dist/links/linkPlan.d.ts +54 -0
  35. package/dist/links/linkPlan.d.ts.map +1 -0
  36. package/dist/links/linkPlan.js +121 -0
  37. package/dist/links/linkPlan.js.map +1 -0
  38. package/dist/lock/lockSchema.d.ts +84 -0
  39. package/dist/lock/lockSchema.d.ts.map +1 -0
  40. package/dist/lock/lockSchema.js +30 -0
  41. package/dist/lock/lockSchema.js.map +1 -0
  42. package/dist/lock/lockStore.d.ts +15 -0
  43. package/dist/lock/lockStore.d.ts.map +1 -0
  44. package/dist/lock/lockStore.js +56 -0
  45. package/dist/lock/lockStore.js.map +1 -0
  46. package/dist/manifest/manifestSchema.d.ts +86 -0
  47. package/dist/manifest/manifestSchema.d.ts.map +1 -0
  48. package/dist/manifest/manifestSchema.js +32 -0
  49. package/dist/manifest/manifestSchema.js.map +1 -0
  50. package/dist/manifest/manifestStore.d.ts +18 -0
  51. package/dist/manifest/manifestStore.d.ts.map +1 -0
  52. package/dist/manifest/manifestStore.js +47 -0
  53. package/dist/manifest/manifestStore.js.map +1 -0
  54. package/dist/paths.d.ts +14 -0
  55. package/dist/paths.d.ts.map +1 -0
  56. package/dist/paths.js +43 -0
  57. package/dist/paths.js.map +1 -0
  58. package/dist/registry/registrySchema.d.ts +73 -0
  59. package/dist/registry/registrySchema.d.ts.map +1 -0
  60. package/dist/registry/registrySchema.js +30 -0
  61. package/dist/registry/registrySchema.js.map +1 -0
  62. package/dist/reports/doctorReport.d.ts +5 -0
  63. package/dist/reports/doctorReport.d.ts.map +1 -0
  64. package/dist/reports/doctorReport.js +297 -0
  65. package/dist/reports/doctorReport.js.map +1 -0
  66. package/dist/reports/reportInternals.d.ts +48 -0
  67. package/dist/reports/reportInternals.d.ts.map +1 -0
  68. package/dist/reports/reportInternals.js +220 -0
  69. package/dist/reports/reportInternals.js.map +1 -0
  70. package/dist/reports/reportTypes.d.ts +54 -0
  71. package/dist/reports/reportTypes.d.ts.map +1 -0
  72. package/dist/reports/reportTypes.js +2 -0
  73. package/dist/reports/reportTypes.js.map +1 -0
  74. package/dist/reports/statusReport.d.ts +6 -0
  75. package/dist/reports/statusReport.d.ts.map +1 -0
  76. package/dist/reports/statusReport.js +49 -0
  77. package/dist/reports/statusReport.js.map +1 -0
  78. package/dist/skillpackDefaults.d.ts +5 -0
  79. package/dist/skillpackDefaults.d.ts.map +1 -0
  80. package/dist/skillpackDefaults.js +5 -0
  81. package/dist/skillpackDefaults.js.map +1 -0
  82. package/dist/skills/skillDiscovery.d.ts +36 -0
  83. package/dist/skills/skillDiscovery.d.ts.map +1 -0
  84. package/dist/skills/skillDiscovery.js +441 -0
  85. package/dist/skills/skillDiscovery.js.map +1 -0
  86. 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"}