@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
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Corvus Skill Manager contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,11 @@
1
+ export type AgentId = 'codex' | 'claude' | 'copilot' | 'opencode' | 'pi' | 'custom' | 'gemini';
2
+ export type AgentSupportStatus = 'supported' | 'deferred' | 'custom' | 'unavailable';
3
+ export interface AgentAdapter {
4
+ id: AgentId;
5
+ displayName: string;
6
+ supportStatus: AgentSupportStatus;
7
+ defaultTargetPath?: string;
8
+ notes?: string[];
9
+ warnings?: string[];
10
+ }
11
+ //# sourceMappingURL=AgentAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentAdapter.d.ts","sourceRoot":"","sources":["../../src/agents/AgentAdapter.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/F,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAC;AAErF,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,kBAAkB,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=AgentAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentAdapter.js","sourceRoot":"","sources":["../../src/agents/AgentAdapter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,44 @@
1
+ import type { AgentAdapter, AgentId } from './AgentAdapter.js';
2
+ export declare const agentAdapters: [{
3
+ readonly id: "codex";
4
+ readonly displayName: "OpenAI Codex CLI";
5
+ readonly supportStatus: "supported";
6
+ readonly defaultTargetPath: "~/.agents/skills";
7
+ }, {
8
+ readonly id: "claude";
9
+ readonly displayName: "Claude Code";
10
+ readonly supportStatus: "supported";
11
+ readonly defaultTargetPath: "~/.claude/skills";
12
+ }, {
13
+ readonly id: "copilot";
14
+ readonly displayName: "GitHub Copilot CLI";
15
+ readonly supportStatus: "supported";
16
+ readonly defaultTargetPath: "~/.copilot/skills";
17
+ readonly notes: ["Uses the implementation-plan Copilot CLI skill path strategy."];
18
+ }, {
19
+ readonly id: "opencode";
20
+ readonly displayName: "OpenCode";
21
+ readonly supportStatus: "supported";
22
+ readonly defaultTargetPath: "~/.config/opencode/skills";
23
+ readonly notes: ["Uses the implementation-plan OpenCode skill path strategy."];
24
+ }, {
25
+ readonly id: "pi";
26
+ readonly displayName: "Pi Agent";
27
+ readonly supportStatus: "supported";
28
+ readonly defaultTargetPath: "~/.pi/agent/skills";
29
+ readonly notes: ["Uses the implementation-plan Pi Agent skill path strategy."];
30
+ }, {
31
+ readonly id: "custom";
32
+ readonly displayName: "Custom Agent";
33
+ readonly supportStatus: "custom";
34
+ readonly notes: ["Set a target path before planning links."];
35
+ }, {
36
+ readonly id: "gemini";
37
+ readonly displayName: "Gemini CLI";
38
+ readonly supportStatus: "deferred";
39
+ readonly notes: ["Gemini custom command generation is deferred for MVP."];
40
+ readonly warnings: ["No .toml wrappers are generated in this MVP."];
41
+ }];
42
+ export declare function getAgentAdapters(): AgentAdapter[];
43
+ export declare function getAgentAdapter(agentId: AgentId): AgentAdapter | undefined;
44
+ //# sourceMappingURL=adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../src/agents/adapters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAE,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAE7D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CS,CAAC;AAEpC,wBAAgB,gBAAgB,IAAI,YAAY,EAAE,CAEjD;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,CAG1E"}
@@ -0,0 +1,56 @@
1
+ export const agentAdapters = [
2
+ {
3
+ id: 'codex',
4
+ displayName: 'OpenAI Codex CLI',
5
+ supportStatus: 'supported',
6
+ defaultTargetPath: '~/.agents/skills'
7
+ },
8
+ {
9
+ id: 'claude',
10
+ displayName: 'Claude Code',
11
+ supportStatus: 'supported',
12
+ defaultTargetPath: '~/.claude/skills'
13
+ },
14
+ {
15
+ id: 'copilot',
16
+ displayName: 'GitHub Copilot CLI',
17
+ supportStatus: 'supported',
18
+ defaultTargetPath: '~/.copilot/skills',
19
+ notes: ['Uses the implementation-plan Copilot CLI skill path strategy.']
20
+ },
21
+ {
22
+ id: 'opencode',
23
+ displayName: 'OpenCode',
24
+ supportStatus: 'supported',
25
+ defaultTargetPath: '~/.config/opencode/skills',
26
+ notes: ['Uses the implementation-plan OpenCode skill path strategy.']
27
+ },
28
+ {
29
+ id: 'pi',
30
+ displayName: 'Pi Agent',
31
+ supportStatus: 'supported',
32
+ defaultTargetPath: '~/.pi/agent/skills',
33
+ notes: ['Uses the implementation-plan Pi Agent skill path strategy.']
34
+ },
35
+ {
36
+ id: 'custom',
37
+ displayName: 'Custom Agent',
38
+ supportStatus: 'custom',
39
+ notes: ['Set a target path before planning links.']
40
+ },
41
+ {
42
+ id: 'gemini',
43
+ displayName: 'Gemini CLI',
44
+ supportStatus: 'deferred',
45
+ notes: ['Gemini custom command generation is deferred for MVP.'],
46
+ warnings: ['No .toml wrappers are generated in this MVP.']
47
+ }
48
+ ];
49
+ export function getAgentAdapters() {
50
+ return agentAdapters.map((adapter) => ({ ...adapter }));
51
+ }
52
+ export function getAgentAdapter(agentId) {
53
+ const adapter = agentAdapters.find((candidate) => candidate.id === agentId);
54
+ return adapter === undefined ? undefined : { ...adapter };
55
+ }
56
+ //# sourceMappingURL=adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/agents/adapters.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B;QACE,EAAE,EAAE,OAAO;QACX,WAAW,EAAE,kBAAkB;QAC/B,aAAa,EAAE,WAAW;QAC1B,iBAAiB,EAAE,kBAAkB;KACtC;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,aAAa;QAC1B,aAAa,EAAE,WAAW;QAC1B,iBAAiB,EAAE,kBAAkB;KACtC;IACD;QACE,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,oBAAoB;QACjC,aAAa,EAAE,WAAW;QAC1B,iBAAiB,EAAE,mBAAmB;QACtC,KAAK,EAAE,CAAC,+DAA+D,CAAC;KACzE;IACD;QACE,EAAE,EAAE,UAAU;QACd,WAAW,EAAE,UAAU;QACvB,aAAa,EAAE,WAAW;QAC1B,iBAAiB,EAAE,2BAA2B;QAC9C,KAAK,EAAE,CAAC,4DAA4D,CAAC;KACtE;IACD;QACE,EAAE,EAAE,IAAI;QACR,WAAW,EAAE,UAAU;QACvB,aAAa,EAAE,WAAW;QAC1B,iBAAiB,EAAE,oBAAoB;QACvC,KAAK,EAAE,CAAC,4DAA4D,CAAC;KACtE;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,cAAc;QAC3B,aAAa,EAAE,QAAQ;QACvB,KAAK,EAAE,CAAC,0CAA0C,CAAC;KACpD;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,WAAW,EAAE,YAAY;QACzB,aAAa,EAAE,UAAU;QACzB,KAAK,EAAE,CAAC,uDAAuD,CAAC;QAChE,QAAQ,EAAE,CAAC,8CAA8C,CAAC;KAC3D;CACgC,CAAC;AAEpC,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAC,GAAG,OAAO,EAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IAC5E,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAC,GAAG,OAAO,EAAC,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,109 @@
1
+ import { z } from 'zod';
2
+ export declare const agentIdSchema: z.ZodEnum<["codex", "claude", "copilot", "opencode", "pi", "custom", "gemini"]>;
3
+ export declare const skillpackConfigSchema: z.ZodObject<{
4
+ id: z.ZodString;
5
+ repositoryUrl: z.ZodString;
6
+ branch: z.ZodString;
7
+ checkoutPath: z.ZodString;
8
+ }, "strict", z.ZodTypeAny, {
9
+ id: string;
10
+ repositoryUrl: string;
11
+ branch: string;
12
+ checkoutPath: string;
13
+ }, {
14
+ id: string;
15
+ repositoryUrl: string;
16
+ branch: string;
17
+ checkoutPath: string;
18
+ }>;
19
+ export declare const agentConfigSchema: z.ZodObject<{
20
+ enabled: z.ZodBoolean;
21
+ targetPath: z.ZodOptional<z.ZodString>;
22
+ selectedSkillIds: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
23
+ }, "strict", z.ZodTypeAny, {
24
+ enabled: boolean;
25
+ selectedSkillIds: string[];
26
+ targetPath?: string | undefined;
27
+ }, {
28
+ enabled: boolean;
29
+ targetPath?: string | undefined;
30
+ selectedSkillIds?: string[] | undefined;
31
+ }>;
32
+ export declare const managerConfigSchema: z.ZodObject<{
33
+ version: z.ZodLiteral<1>;
34
+ managerStateDir: z.ZodString;
35
+ createdAt: z.ZodString;
36
+ updatedAt: z.ZodString;
37
+ skillpack: z.ZodOptional<z.ZodObject<{
38
+ id: z.ZodString;
39
+ repositoryUrl: z.ZodString;
40
+ branch: z.ZodString;
41
+ checkoutPath: z.ZodString;
42
+ }, "strict", z.ZodTypeAny, {
43
+ id: string;
44
+ repositoryUrl: string;
45
+ branch: string;
46
+ checkoutPath: string;
47
+ }, {
48
+ id: string;
49
+ repositoryUrl: string;
50
+ branch: string;
51
+ checkoutPath: string;
52
+ }>>;
53
+ agents: z.ZodOptional<z.ZodRecord<z.ZodEnum<["codex", "claude", "copilot", "opencode", "pi", "custom", "gemini"]>, z.ZodObject<{
54
+ enabled: z.ZodBoolean;
55
+ targetPath: z.ZodOptional<z.ZodString>;
56
+ selectedSkillIds: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
57
+ }, "strict", z.ZodTypeAny, {
58
+ enabled: boolean;
59
+ selectedSkillIds: string[];
60
+ targetPath?: string | undefined;
61
+ }, {
62
+ enabled: boolean;
63
+ targetPath?: string | undefined;
64
+ selectedSkillIds?: string[] | undefined;
65
+ }>>>;
66
+ }, "strict", z.ZodTypeAny, {
67
+ version: 1;
68
+ managerStateDir: string;
69
+ createdAt: string;
70
+ updatedAt: string;
71
+ skillpack?: {
72
+ id: string;
73
+ repositoryUrl: string;
74
+ branch: string;
75
+ checkoutPath: string;
76
+ } | undefined;
77
+ agents?: Partial<Record<"codex" | "claude" | "copilot" | "opencode" | "pi" | "custom" | "gemini", {
78
+ enabled: boolean;
79
+ selectedSkillIds: string[];
80
+ targetPath?: string | undefined;
81
+ }>> | undefined;
82
+ }, {
83
+ version: 1;
84
+ managerStateDir: string;
85
+ createdAt: string;
86
+ updatedAt: string;
87
+ skillpack?: {
88
+ id: string;
89
+ repositoryUrl: string;
90
+ branch: string;
91
+ checkoutPath: string;
92
+ } | undefined;
93
+ agents?: Partial<Record<"codex" | "claude" | "copilot" | "opencode" | "pi" | "custom" | "gemini", {
94
+ enabled: boolean;
95
+ targetPath?: string | undefined;
96
+ selectedSkillIds?: string[] | undefined;
97
+ }>> | undefined;
98
+ }>;
99
+ export type AgentConfig = z.infer<typeof agentConfigSchema>;
100
+ export type AgentIdConfig = z.infer<typeof agentIdSchema>;
101
+ export type SkillpackConfig = z.infer<typeof skillpackConfigSchema>;
102
+ export type ManagerConfig = z.infer<typeof managerConfigSchema>;
103
+ export declare function parseManagerConfig(value: unknown): ManagerConfig;
104
+ export declare function parseSkillpackConfig(value: unknown): SkillpackConfig;
105
+ export declare function createDefaultManagerConfig(options: {
106
+ managerStateDir: string;
107
+ now?: Date;
108
+ }): ManagerConfig;
109
+ //# sourceMappingURL=configSchema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configSchema.d.ts","sourceRoot":"","sources":["../../src/config/configSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,eAAO,MAAM,aAAa,iFAA+E,CAAC;AAE1G,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;EAUvB,CAAC;AAEZ,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAMnB,CAAC;AAEZ,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASrB,CAAC;AAEZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAC1D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAEhE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAEpE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE;IAClD,eAAe,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,GAAG,aAAa,CAShB"}
@@ -0,0 +1,46 @@
1
+ import { z } from 'zod';
2
+ export const agentIdSchema = z.enum(['codex', 'claude', 'copilot', 'opencode', 'pi', 'custom', 'gemini']);
3
+ export const skillpackConfigSchema = z
4
+ .object({
5
+ id: z
6
+ .string()
7
+ .min(1)
8
+ .regex(/^[a-zA-Z0-9._-]+$/, 'Use only letters, numbers, dots, underscores, and hyphens.'),
9
+ repositoryUrl: z.string().min(1),
10
+ branch: z.string().min(1),
11
+ checkoutPath: z.string().min(1)
12
+ })
13
+ .strict();
14
+ export const agentConfigSchema = z
15
+ .object({
16
+ enabled: z.boolean(),
17
+ targetPath: z.string().min(1).optional(),
18
+ selectedSkillIds: z.array(z.string().min(1)).default([])
19
+ })
20
+ .strict();
21
+ export const managerConfigSchema = z
22
+ .object({
23
+ version: z.literal(1),
24
+ managerStateDir: z.string().min(1),
25
+ createdAt: z.string().datetime(),
26
+ updatedAt: z.string().datetime(),
27
+ skillpack: skillpackConfigSchema.optional(),
28
+ agents: z.record(agentIdSchema, agentConfigSchema).optional()
29
+ })
30
+ .strict();
31
+ export function parseManagerConfig(value) {
32
+ return managerConfigSchema.parse(value);
33
+ }
34
+ export function parseSkillpackConfig(value) {
35
+ return skillpackConfigSchema.parse(value);
36
+ }
37
+ export function createDefaultManagerConfig(options) {
38
+ const timestamp = (options.now ?? new Date()).toISOString();
39
+ return {
40
+ version: 1,
41
+ managerStateDir: options.managerStateDir,
42
+ createdAt: timestamp,
43
+ updatedAt: timestamp
44
+ };
45
+ }
46
+ //# sourceMappingURL=configSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configSchema.js","sourceRoot":"","sources":["../../src/config/configSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AAEtB,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE1G,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,EAAE,EAAE,CAAC;SACF,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,KAAK,CAAC,mBAAmB,EAAE,4DAA4D,CAAC;IAC3F,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAChC,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,gBAAgB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACzD,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,SAAS,EAAE,qBAAqB,CAAC,QAAQ,EAAE;IAC3C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC,QAAQ,EAAE;CAC9D,CAAC;KACD,MAAM,EAAE,CAAC;AAOZ,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,OAAO,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,qBAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAG1C;IACC,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAE5D,OAAO;QACL,OAAO,EAAE,CAAC;QACV,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,SAAS;KACrB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { type ManagerConfig } from './configSchema.js';
2
+ export interface ConfigStoreOptions {
3
+ homeDir?: string;
4
+ managerStateDir?: string;
5
+ configPath?: string;
6
+ now?: Date;
7
+ }
8
+ export interface ConfigLoadResult {
9
+ config: ManagerConfig;
10
+ configPath: string;
11
+ managerStateDir: string;
12
+ created: boolean;
13
+ migrated: boolean;
14
+ }
15
+ interface ConfigMigrationResult {
16
+ config: ManagerConfig;
17
+ migrated: boolean;
18
+ }
19
+ export declare function loadConfig(configPath: string): Promise<ManagerConfig>;
20
+ export declare function saveConfig(config: ManagerConfig, options?: Pick<ConfigStoreOptions, 'configPath'>): Promise<void>;
21
+ export declare function ensureDefaultConfig(options?: ConfigStoreOptions): Promise<ConfigLoadResult>;
22
+ export declare function migrateLoadedConfig(config: ManagerConfig, options?: Pick<ConfigStoreOptions, 'homeDir' | 'now'>): ConfigMigrationResult;
23
+ export {};
24
+ //# sourceMappingURL=configStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configStore.d.ts","sourceRoot":"","sources":["../../src/config/configStore.ts"],"names":[],"mappings":"AAcA,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,qBAAqB;IAC7B,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAqBD,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAG3E;AAED,wBAAsB,UAAU,CAC9B,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAM,GACnD,OAAO,CAAC,IAAI,CAAC,CASf;AAED,wBAAsB,mBAAmB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAiCrG;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,aAAa,EACrB,OAAO,GAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,KAAK,CAAM,GACxD,qBAAqB,CA0BvB"}
@@ -0,0 +1,77 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import path from 'node:path';
3
+ import { assertPathInside, configFileName, defaultManagerStateDir, defaultSkillpackCheckoutPath, resolveUserPath } from '../paths.js';
4
+ import { defaultSkillpackId, defaultSkillpackRepositoryUrl } from '../skillpackDefaults.js';
5
+ import { createDefaultManagerConfig, parseManagerConfig } from './configSchema.js';
6
+ function resolveStorePaths(options = {}) {
7
+ const homeDir = options.homeDir;
8
+ const managerStateDir = resolveUserPath(options.managerStateDir ?? (homeDir === undefined ? defaultManagerStateDir() : defaultManagerStateDir(homeDir)), homeDir);
9
+ const configPath = resolveUserPath(options.configPath ?? path.join(managerStateDir, configFileName), homeDir);
10
+ assertPathInside(managerStateDir, configPath);
11
+ return { managerStateDir, configPath };
12
+ }
13
+ export async function loadConfig(configPath) {
14
+ const rawConfig = await fs.readFile(configPath, 'utf8');
15
+ return parseManagerConfig(JSON.parse(rawConfig));
16
+ }
17
+ export async function saveConfig(config, options = {}) {
18
+ const parsedConfig = parseManagerConfig(config);
19
+ const configPath = resolveUserPath(options.configPath ?? path.join(parsedConfig.managerStateDir, configFileName));
20
+ assertPathInside(parsedConfig.managerStateDir, configPath);
21
+ await fs.mkdir(path.dirname(configPath), { recursive: true });
22
+ await fs.writeFile(configPath, `${JSON.stringify(parsedConfig, null, 2)}\n`, 'utf8');
23
+ }
24
+ export async function ensureDefaultConfig(options = {}) {
25
+ const { managerStateDir, configPath } = resolveStorePaths(options);
26
+ try {
27
+ const config = await loadConfig(configPath);
28
+ const migrationOptions = {};
29
+ if (options.homeDir !== undefined) {
30
+ migrationOptions.homeDir = options.homeDir;
31
+ }
32
+ if (options.now !== undefined) {
33
+ migrationOptions.now = options.now;
34
+ }
35
+ const migration = migrateLoadedConfig(config, migrationOptions);
36
+ if (migration.migrated) {
37
+ await saveConfig(migration.config, { configPath });
38
+ }
39
+ return { config: migration.config, configPath, managerStateDir, created: false, migrated: migration.migrated };
40
+ }
41
+ catch (error) {
42
+ if (!isMissingFileError(error)) {
43
+ throw error;
44
+ }
45
+ }
46
+ const config = createDefaultManagerConfig(options.now === undefined ? { managerStateDir } : { managerStateDir, now: options.now });
47
+ await saveConfig(config, { configPath });
48
+ return { config, configPath, managerStateDir, created: true, migrated: false };
49
+ }
50
+ export function migrateLoadedConfig(config, options = {}) {
51
+ if (config.skillpack === undefined) {
52
+ return { config, migrated: false };
53
+ }
54
+ const legacyCheckoutPath = path.join(resolveUserPath(config.managerStateDir, options.homeDir), 'skills');
55
+ const configuredCheckoutPath = resolveUserPath(config.skillpack.checkoutPath, options.homeDir);
56
+ const shouldMigrateLegacyDefaultSkillpack = config.skillpack.id === defaultSkillpackId &&
57
+ config.skillpack.repositoryUrl === defaultSkillpackRepositoryUrl &&
58
+ configuredCheckoutPath === legacyCheckoutPath;
59
+ if (!shouldMigrateLegacyDefaultSkillpack) {
60
+ return { config, migrated: false };
61
+ }
62
+ const nextConfig = {
63
+ ...config,
64
+ updatedAt: (options.now ?? new Date()).toISOString(),
65
+ skillpack: {
66
+ ...config.skillpack,
67
+ checkoutPath: defaultSkillpackCheckoutPath(config.skillpack.id, options.homeDir)
68
+ }
69
+ };
70
+ return { config: nextConfig, migrated: true };
71
+ }
72
+ function isMissingFileError(error) {
73
+ return (error instanceof Error &&
74
+ 'code' in error &&
75
+ error.code === 'ENOENT');
76
+ }
77
+ //# sourceMappingURL=configStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configStore.js","sourceRoot":"","sources":["../../src/config/configStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export interface GitRunOptions {
2
+ cwd?: string;
3
+ }
4
+ export interface GitRunResult {
5
+ stdout: string;
6
+ stderr: string;
7
+ }
8
+ export type GitRunner = (args: string[], options?: GitRunOptions) => Promise<GitRunResult>;
9
+ export declare const runGit: GitRunner;
10
+ //# sourceMappingURL=gitRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitRunner.d.ts","sourceRoot":"","sources":["../../src/git/gitRunner.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;AAE3F,eAAO,MAAM,MAAM,EAAE,SAsBpB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { execa } from 'execa';
2
+ export const runGit = async (args, options = {}) => {
3
+ const execaOptions = options.cwd === undefined ?
4
+ {
5
+ env: {
6
+ GIT_OPTIONAL_LOCKS: '0'
7
+ }
8
+ } :
9
+ {
10
+ cwd: options.cwd,
11
+ env: {
12
+ GIT_OPTIONAL_LOCKS: '0'
13
+ }
14
+ };
15
+ const result = await execa('git', args, {
16
+ ...execaOptions
17
+ });
18
+ return {
19
+ stdout: result.stdout,
20
+ stderr: result.stderr
21
+ };
22
+ };
23
+ //# sourceMappingURL=gitRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitRunner.js","sourceRoot":"","sources":["../../src/git/gitRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,OAAO,CAAC;AAa5B,MAAM,CAAC,MAAM,MAAM,GAAc,KAAK,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;IAC5D,MAAM,YAAY,GAChB,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;QACzB;YACE,GAAG,EAAE;gBACH,kBAAkB,EAAE,GAAG;aACxB;SACF,CAAC,CAAC;QACH;YACE,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE;gBACH,kBAAkB,EAAE,GAAG;aACxB;SACF,CAAC;IACN,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;QACtC,GAAG,YAAY;KAChB,CAAC,CAAC;IAEH,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { type SkillpackConfig } from '../config/configSchema.js';
2
+ import { type GitRunner } from './gitRunner.js';
3
+ export type CheckoutStatus = 'checkout-missing' | 'checkout-readable' | 'checkout-dirty' | 'checkout-unreadable';
4
+ export interface SkillpackInspection {
5
+ status: CheckoutStatus;
6
+ checkoutPath: string;
7
+ exists: boolean;
8
+ readable: boolean;
9
+ commitHash?: string;
10
+ dirty: boolean;
11
+ dirtyFiles: string[];
12
+ message: string;
13
+ }
14
+ export type SkillpackSetupStatus = CheckoutStatus | 'clone-complete' | 'clone-failed';
15
+ export interface SkillpackSetupResult {
16
+ status: SkillpackSetupStatus;
17
+ config: SkillpackConfig;
18
+ checkoutPath: string;
19
+ lockPath?: string;
20
+ commitHash?: string;
21
+ dirty: boolean;
22
+ dirtyFiles: string[];
23
+ message: string;
24
+ }
25
+ export interface SkillpackSetupOptions {
26
+ config: SkillpackConfig;
27
+ managerStateDir: string;
28
+ homeDir?: string;
29
+ git?: GitRunner;
30
+ now?: Date;
31
+ }
32
+ export declare function inspectSkillpackCheckout(checkoutPath: string, options?: {
33
+ homeDir?: string;
34
+ git?: GitRunner;
35
+ }): Promise<SkillpackInspection>;
36
+ export declare function applyInitialSkillpackSetup(options: SkillpackSetupOptions): Promise<SkillpackSetupResult>;
37
+ //# sourceMappingURL=skillpackSetup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillpackSetup.d.ts","sourceRoot":"","sources":["../../src/git/skillpackSetup.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,eAAe,EAErB,MAAM,2BAA2B,CAAC;AAMnC,OAAO,EAAC,KAAK,SAAS,EAAS,MAAM,gBAAgB,CAAC;AAEtD,MAAM,MAAM,cAAc,GACtB,kBAAkB,GAClB,mBAAmB,GACnB,gBAAgB,GAChB,qBAAqB,CAAC;AAE1B,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,oBAAoB,GAC5B,cAAc,GACd,gBAAgB,GAChB,cAAc,CAAC;AAEnB,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,eAAe,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,eAAe,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,wBAAsB,wBAAwB,CAC5C,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,SAAS,CAAA;CAAM,GAChD,OAAO,CAAC,mBAAmB,CAAC,CAkE9B;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,oBAAoB,CAAC,CAwF/B"}