@kongyo2/kongyo-cli 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +98 -2
- package/dist/app.js.map +1 -1
- package/dist/components/MainMenu.d.ts +8 -0
- package/dist/components/MainMenu.d.ts.map +1 -0
- package/dist/components/MainMenu.js +20 -0
- package/dist/components/MainMenu.js.map +1 -0
- package/dist/components/SkillsConfirm.d.ts +10 -0
- package/dist/components/SkillsConfirm.d.ts.map +1 -0
- package/dist/components/SkillsConfirm.js +8 -0
- package/dist/components/SkillsConfirm.js.map +1 -0
- package/dist/components/SkillsDownload.d.ts +15 -0
- package/dist/components/SkillsDownload.d.ts.map +1 -0
- package/dist/components/SkillsDownload.js +40 -0
- package/dist/components/SkillsDownload.js.map +1 -0
- package/dist/components/SkillsFetch.d.ts +10 -0
- package/dist/components/SkillsFetch.d.ts.map +1 -0
- package/dist/components/SkillsFetch.js +35 -0
- package/dist/components/SkillsFetch.js.map +1 -0
- package/dist/components/SkillsRepo.d.ts +8 -0
- package/dist/components/SkillsRepo.d.ts.map +1 -0
- package/dist/components/SkillsRepo.js +26 -0
- package/dist/components/SkillsRepo.js.map +1 -0
- package/dist/components/SkillsSelect.d.ts +11 -0
- package/dist/components/SkillsSelect.d.ts.map +1 -0
- package/dist/components/SkillsSelect.js +59 -0
- package/dist/components/SkillsSelect.js.map +1 -0
- package/dist/components/index.d.ts +6 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +6 -0
- package/dist/components/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/lib/skills.d.ts +32 -0
- package/dist/lib/skills.d.ts.map +1 -0
- package/dist/lib/skills.js +465 -0
- package/dist/lib/skills.js.map +1 -0
- package/dist/lib/types.d.ts +50 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +16 -0
- package/dist/lib/types.js.map +1 -1
- package/package.json +1 -1
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAgCrD,wBAAgB,GAAG,IAAI,KAAK,CAAC,YAAY,CAkRxC"}
|
package/dist/app.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React, { useState, useCallback } from "react";
|
|
3
3
|
import { Box, Text, useApp } from "ink";
|
|
4
|
-
import { Logo, FileSelector, PromptSelector, Summary } from "./components/index.js";
|
|
4
|
+
import { Logo, MainMenu, FileSelector, PromptSelector, Summary, SkillsRepo, SkillsFetch, SkillsSelect, SkillsConfirm, SkillsDownload, } from "./components/index.js";
|
|
5
5
|
import { defaultPrompts } from "./prompts/index.js";
|
|
6
6
|
import { writePromptsToFile } from "./lib/file.js";
|
|
7
7
|
export function App() {
|
|
@@ -9,13 +9,25 @@ export function App() {
|
|
|
9
9
|
const [state, setState] = useState({ phase: "logo" });
|
|
10
10
|
const [outputFile, setOutputFile] = useState("CLAUDE.md");
|
|
11
11
|
const [prompts, setPrompts] = useState(defaultPrompts.map((p) => ({ ...p, enabled: true })));
|
|
12
|
+
// Logo complete -> Main Menu
|
|
12
13
|
const handleLogoComplete = useCallback(() => {
|
|
13
|
-
setState({ phase: "
|
|
14
|
+
setState({ phase: "mainMenu" });
|
|
14
15
|
}, []);
|
|
16
|
+
// Main Menu selection
|
|
17
|
+
const handleMainMenuSelect = useCallback((choice) => {
|
|
18
|
+
if (choice === "prompts") {
|
|
19
|
+
setState({ phase: "fileSelect" });
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
setState({ phase: "skillsRepo" });
|
|
23
|
+
}
|
|
24
|
+
}, []);
|
|
25
|
+
// File selection for prompts
|
|
15
26
|
const handleFileSelect = useCallback((file) => {
|
|
16
27
|
setOutputFile(file);
|
|
17
28
|
setState({ phase: "promptSelect", currentIndex: 0 });
|
|
18
29
|
}, []);
|
|
30
|
+
// Prompt confirmation
|
|
19
31
|
const handlePromptConfirm = useCallback(() => {
|
|
20
32
|
if (state.phase !== "promptSelect")
|
|
21
33
|
return;
|
|
@@ -27,6 +39,7 @@ export function App() {
|
|
|
27
39
|
setState({ phase: "summary" });
|
|
28
40
|
}
|
|
29
41
|
}, [state, prompts.length]);
|
|
42
|
+
// Prompt cancel (skip)
|
|
30
43
|
const handlePromptCancel = useCallback(() => {
|
|
31
44
|
if (state.phase !== "promptSelect")
|
|
32
45
|
return;
|
|
@@ -39,6 +52,7 @@ export function App() {
|
|
|
39
52
|
setState({ phase: "summary" });
|
|
40
53
|
}
|
|
41
54
|
}, [state, prompts.length]);
|
|
55
|
+
// Summary confirmation -> write file
|
|
42
56
|
const handleSummaryConfirm = useCallback(() => {
|
|
43
57
|
setState({ phase: "writing" });
|
|
44
58
|
const result = writePromptsToFile(outputFile, prompts);
|
|
@@ -60,15 +74,87 @@ export function App() {
|
|
|
60
74
|
}, 2000);
|
|
61
75
|
}
|
|
62
76
|
}, [outputFile, prompts, exit]);
|
|
77
|
+
// Summary cancel
|
|
63
78
|
const handleSummaryCancel = useCallback(() => {
|
|
64
79
|
setState({ phase: "done", success: false, message: "Cancelled by user" });
|
|
65
80
|
setTimeout(() => {
|
|
66
81
|
exit();
|
|
67
82
|
}, 1000);
|
|
68
83
|
}, [exit]);
|
|
84
|
+
// Skills: Repository URL submitted
|
|
85
|
+
const handleSkillsRepoSubmit = useCallback((repoUrl) => {
|
|
86
|
+
setState({ phase: "skillsFetching", repoUrl });
|
|
87
|
+
}, []);
|
|
88
|
+
// Skills: Back to main menu
|
|
89
|
+
const handleSkillsBack = useCallback(() => {
|
|
90
|
+
setState({ phase: "mainMenu" });
|
|
91
|
+
}, []);
|
|
92
|
+
// Skills: Fetch complete
|
|
93
|
+
const handleSkillsFetchComplete = useCallback((skills) => {
|
|
94
|
+
if (state.phase !== "skillsFetching")
|
|
95
|
+
return;
|
|
96
|
+
setState({ phase: "skillsSelect", repoUrl: state.repoUrl, skills });
|
|
97
|
+
}, [state]);
|
|
98
|
+
// Skills: Fetch error
|
|
99
|
+
const handleSkillsFetchError = useCallback((error) => {
|
|
100
|
+
const message = error.type === "fetch_error"
|
|
101
|
+
? error.message
|
|
102
|
+
: error.type === "parse_error"
|
|
103
|
+
? `Parse error: ${error.message}`
|
|
104
|
+
: error.type === "network_error"
|
|
105
|
+
? `Network error: ${error.message}`
|
|
106
|
+
: `Download error: ${error.message}`;
|
|
107
|
+
setState({ phase: "done", success: false, message });
|
|
108
|
+
setTimeout(() => {
|
|
109
|
+
exit();
|
|
110
|
+
}, 2000);
|
|
111
|
+
}, [exit]);
|
|
112
|
+
// Skills: Selection confirmed
|
|
113
|
+
const handleSkillsSelectConfirm = useCallback((selectedSkills) => {
|
|
114
|
+
setState({ phase: "skillsConfirm", skills: selectedSkills });
|
|
115
|
+
}, []);
|
|
116
|
+
// Skills: Selection back
|
|
117
|
+
const handleSkillsSelectBack = useCallback(() => {
|
|
118
|
+
setState({ phase: "skillsRepo" });
|
|
119
|
+
}, []);
|
|
120
|
+
// Skills: Confirm download
|
|
121
|
+
const handleSkillsConfirmDownload = useCallback(() => {
|
|
122
|
+
if (state.phase !== "skillsConfirm")
|
|
123
|
+
return;
|
|
124
|
+
setState({ phase: "skillsDownloading", skills: state.skills, currentIndex: 0 });
|
|
125
|
+
}, [state]);
|
|
126
|
+
// Skills: Cancel download
|
|
127
|
+
const handleSkillsConfirmCancel = useCallback(() => {
|
|
128
|
+
setState({ phase: "mainMenu" });
|
|
129
|
+
}, []);
|
|
130
|
+
// Skills: Download complete
|
|
131
|
+
const handleSkillsDownloadComplete = useCallback((results) => {
|
|
132
|
+
const successCount = results.filter((r) => r.success).length;
|
|
133
|
+
const failCount = results.filter((r) => !r.success).length;
|
|
134
|
+
let message;
|
|
135
|
+
if (failCount === 0) {
|
|
136
|
+
message = `Successfully downloaded ${successCount} skill(s) to .claude/skills/`;
|
|
137
|
+
}
|
|
138
|
+
else if (successCount === 0) {
|
|
139
|
+
message = `Failed to download all ${failCount} skill(s)`;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
message = `Downloaded ${successCount} skill(s), ${failCount} failed`;
|
|
143
|
+
}
|
|
144
|
+
setState({
|
|
145
|
+
phase: "done",
|
|
146
|
+
success: failCount === 0,
|
|
147
|
+
message,
|
|
148
|
+
});
|
|
149
|
+
setTimeout(() => {
|
|
150
|
+
exit();
|
|
151
|
+
}, 2000);
|
|
152
|
+
}, [exit]);
|
|
69
153
|
switch (state.phase) {
|
|
70
154
|
case "logo":
|
|
71
155
|
return _jsx(Logo, { onComplete: handleLogoComplete });
|
|
156
|
+
case "mainMenu":
|
|
157
|
+
return _jsx(MainMenu, { onSelect: handleMainMenuSelect });
|
|
72
158
|
case "fileSelect":
|
|
73
159
|
return _jsx(FileSelector, { onSelect: handleFileSelect });
|
|
74
160
|
case "promptSelect": {
|
|
@@ -83,6 +169,16 @@ export function App() {
|
|
|
83
169
|
return (_jsx(Summary, { outputFile: outputFile, prompts: prompts, onConfirm: handleSummaryConfirm, onCancel: handleSummaryCancel }));
|
|
84
170
|
case "writing":
|
|
85
171
|
return (_jsx(Box, { children: _jsxs(Text, { children: ["Writing to ", outputFile, "..."] }) }));
|
|
172
|
+
case "skillsRepo":
|
|
173
|
+
return (_jsx(SkillsRepo, { onSubmit: handleSkillsRepoSubmit, onBack: handleSkillsBack }));
|
|
174
|
+
case "skillsFetching":
|
|
175
|
+
return (_jsx(SkillsFetch, { repoUrl: state.repoUrl, onComplete: handleSkillsFetchComplete, onError: handleSkillsFetchError }));
|
|
176
|
+
case "skillsSelect":
|
|
177
|
+
return (_jsx(SkillsSelect, { skills: state.skills, repoUrl: state.repoUrl, onConfirm: handleSkillsSelectConfirm, onBack: handleSkillsSelectBack }));
|
|
178
|
+
case "skillsConfirm":
|
|
179
|
+
return (_jsx(SkillsConfirm, { skills: state.skills, onConfirm: handleSkillsConfirmDownload, onCancel: handleSkillsConfirmCancel }));
|
|
180
|
+
case "skillsDownloading":
|
|
181
|
+
return (_jsx(SkillsDownload, { skills: state.skills, onComplete: handleSkillsDownloadComplete }));
|
|
86
182
|
case "done":
|
|
87
183
|
return (_jsx(Box, { flexDirection: "column", children: state.success ? (_jsx(Text, { color: "green", children: state.message })) : (_jsx(Text, { color: "red", children: state.message })) }));
|
|
88
184
|
}
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,OAAO,EACP,UAAU,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,cAAc,GACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAiBnD,MAAM,UAAU,GAAG;IACjB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAa,WAAW,CAAC,CAAC;IACtE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CACpC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CACrD,CAAC;IAEF,6BAA6B;IAC7B,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC1C,QAAQ,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAClC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,sBAAsB;IACtB,MAAM,oBAAoB,GAAG,WAAW,CAAC,CAAC,MAAsB,EAAE,EAAE;QAClE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,6BAA6B;IAC7B,MAAM,gBAAgB,GAAG,WAAW,CAAC,CAAC,IAAgB,EAAE,EAAE;QACxD,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,QAAQ,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,sBAAsB;IACtB,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3C,IAAI,KAAK,CAAC,KAAK,KAAK,cAAc;YAAE,OAAO;QAE3C,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;QAC/B,IAAI,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACtC,QAAQ,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5B,uBAAuB;IACvB,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC1C,IAAI,KAAK,CAAC,KAAK,KAAK,cAAc;YAAE,OAAO;QAE3C,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;QAC/B,UAAU,CAAC,CAAC,IAAI,EAAE,EAAE,CAClB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACxE,CAAC;QAEF,IAAI,YAAY,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;YACtC,QAAQ,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5B,qCAAqC;IACrC,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5C,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAE/B,MAAM,MAAM,GAAG,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAEvD,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAClE,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,EAAE,CAAC;YACT,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;aAAM,CAAC;YACN,MAAM,YAAY,GAChB,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa;gBACjC,CAAC,CAAC,gBAAgB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;gBACxC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY;oBAClC,CAAC,CAAC,eAAe,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;oBACvC,CAAC,CAAC,sBAAsB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAClD,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;YACnE,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,EAAE,CAAC;YACT,CAAC,EAAE,IAAI,CAAC,CAAC;QACX,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAEhC,iBAAiB;IACjB,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3C,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC1E,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,EAAE,CAAC;QACT,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,mCAAmC;IACnC,MAAM,sBAAsB,GAAG,WAAW,CAAC,CAAC,OAAe,EAAE,EAAE;QAC7D,QAAQ,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,4BAA4B;IAC5B,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;QACxC,QAAQ,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAClC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,yBAAyB;IACzB,MAAM,yBAAyB,GAAG,WAAW,CAC3C,CAAC,MAAmB,EAAE,EAAE;QACtB,IAAI,KAAK,CAAC,KAAK,KAAK,gBAAgB;YAAE,OAAO;QAC7C,QAAQ,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC,EACD,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,sBAAsB;IACtB,MAAM,sBAAsB,GAAG,WAAW,CACxC,CAAC,KAAiB,EAAE,EAAE;QACpB,MAAM,OAAO,GACX,KAAK,CAAC,IAAI,KAAK,aAAa;YAC1B,CAAC,CAAC,KAAK,CAAC,OAAO;YACf,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa;gBAC5B,CAAC,CAAC,gBAAgB,KAAK,CAAC,OAAO,EAAE;gBACjC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,eAAe;oBAC9B,CAAC,CAAC,kBAAkB,KAAK,CAAC,OAAO,EAAE;oBACnC,CAAC,CAAC,mBAAmB,KAAK,CAAC,OAAO,EAAE,CAAC;QAC7C,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACrD,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,EAAE,CAAC;QACT,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,EACD,CAAC,IAAI,CAAC,CACP,CAAC;IAEF,8BAA8B;IAC9B,MAAM,yBAAyB,GAAG,WAAW,CAAC,CAAC,cAA2B,EAAE,EAAE;QAC5E,QAAQ,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;IAC/D,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,yBAAyB;IACzB,MAAM,sBAAsB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9C,QAAQ,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;IACpC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,2BAA2B;IAC3B,MAAM,2BAA2B,GAAG,WAAW,CAAC,GAAG,EAAE;QACnD,IAAI,KAAK,CAAC,KAAK,KAAK,eAAe;YAAE,OAAO;QAC5C,QAAQ,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,0BAA0B;IAC1B,MAAM,yBAAyB,GAAG,WAAW,CAAC,GAAG,EAAE;QACjD,QAAQ,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IAClC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,4BAA4B;IAC5B,MAAM,4BAA4B,GAAG,WAAW,CAC9C,CAAC,OAAyB,EAAE,EAAE;QAC5B,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAC7D,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;QAE3D,IAAI,OAAe,CAAC;QACpB,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO,GAAG,2BAA2B,YAAY,8BAA8B,CAAC;QAClF,CAAC;aAAM,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,GAAG,0BAA0B,SAAS,WAAW,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,cAAc,YAAY,cAAc,SAAS,SAAS,CAAC;QACvE,CAAC;QAED,QAAQ,CAAC;YACP,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,SAAS,KAAK,CAAC;YACxB,OAAO;SACR,CAAC,CAAC;QACH,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,EAAE,CAAC;QACT,CAAC,EAAE,IAAI,CAAC,CAAC;IACX,CAAC,EACD,CAAC,IAAI,CAAC,CACP,CAAC;IAEF,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,KAAC,IAAI,IAAC,UAAU,EAAE,kBAAkB,GAAI,CAAC;QAElD,KAAK,UAAU;YACb,OAAO,KAAC,QAAQ,IAAC,QAAQ,EAAE,oBAAoB,GAAI,CAAC;QAEtD,KAAK,YAAY;YACf,OAAO,KAAC,YAAY,IAAC,QAAQ,EAAE,gBAAgB,GAAI,CAAC;QAEtD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAClD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC/B,OAAO,KAAC,IAAI,6BAAkB,CAAC;YACjC,CAAC;YACD,OAAO,CACL,KAAC,cAAc,IACb,MAAM,EAAE,aAAa,EACrB,YAAY,EAAE,KAAK,CAAC,YAAY,EAChC,UAAU,EAAE,OAAO,CAAC,MAAM,EAC1B,SAAS,EAAE,mBAAmB,EAC9B,QAAQ,EAAE,kBAAkB,GAC5B,CACH,CAAC;QACJ,CAAC;QAED,KAAK,SAAS;YACZ,OAAO,CACL,KAAC,OAAO,IACN,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,oBAAoB,EAC/B,QAAQ,EAAE,mBAAmB,GAC7B,CACH,CAAC;QAEJ,KAAK,SAAS;YACZ,OAAO,CACL,KAAC,GAAG,cACF,MAAC,IAAI,8BAAa,UAAU,WAAW,GACnC,CACP,CAAC;QAEJ,KAAK,YAAY;YACf,OAAO,CACL,KAAC,UAAU,IACT,QAAQ,EAAE,sBAAsB,EAChC,MAAM,EAAE,gBAAgB,GACxB,CACH,CAAC;QAEJ,KAAK,gBAAgB;YACnB,OAAO,CACL,KAAC,WAAW,IACV,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,UAAU,EAAE,yBAAyB,EACrC,OAAO,EAAE,sBAAsB,GAC/B,CACH,CAAC;QAEJ,KAAK,cAAc;YACjB,OAAO,CACL,KAAC,YAAY,IACX,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,SAAS,EAAE,yBAAyB,EACpC,MAAM,EAAE,sBAAsB,GAC9B,CACH,CAAC;QAEJ,KAAK,eAAe;YAClB,OAAO,CACL,KAAC,aAAa,IACZ,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,SAAS,EAAE,2BAA2B,EACtC,QAAQ,EAAE,yBAAyB,GACnC,CACH,CAAC;QAEJ,KAAK,mBAAmB;YACtB,OAAO,CACL,KAAC,cAAc,IACb,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,UAAU,EAAE,4BAA4B,GACxC,CACH,CAAC;QAEJ,KAAK,MAAM;YACT,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACxB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CACf,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,KAAK,CAAC,OAAO,GAAQ,CAC3C,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,KAAK,CAAC,OAAO,GAAQ,CACzC,GACG,CACP,CAAC;IACN,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { MainMenuChoice } from "../lib/types.js";
|
|
3
|
+
interface MainMenuProps {
|
|
4
|
+
onSelect: (choice: MainMenuChoice) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function MainMenu({ onSelect }: MainMenuProps): React.ReactElement;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=MainMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MainMenu.d.ts","sourceRoot":"","sources":["../../src/components/MainMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,UAAU,aAAa;IACrB,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;CAC5C;AAED,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY,CA4BxE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Box, Text } from "ink";
|
|
4
|
+
import { Select } from "@inkjs/ui";
|
|
5
|
+
export function MainMenu({ onSelect }) {
|
|
6
|
+
const options = [
|
|
7
|
+
{
|
|
8
|
+
label: "Generate Prompts (CLAUDE.md / AGENTS.md)",
|
|
9
|
+
value: "prompts",
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
label: "Download Skills from GitHub Repository",
|
|
13
|
+
value: "skills",
|
|
14
|
+
},
|
|
15
|
+
];
|
|
16
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: "What would you like to do?" }) }), _jsx(Select, { options: options, onChange: (value) => {
|
|
17
|
+
onSelect(value);
|
|
18
|
+
} }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Use arrow keys to navigate, Enter to select" }) })] }));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=MainMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MainMenu.js","sourceRoot":"","sources":["../../src/components/MainMenu.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAOnC,MAAM,UAAU,QAAQ,CAAC,EAAE,QAAQ,EAAiB;IAClD,MAAM,OAAO,GAAG;QACd;YACE,KAAK,EAAE,0CAA0C;YACjD,KAAK,EAAE,SAAkB;SAC1B;QACD;YACE,KAAK,EAAE,wCAAwC;YAC/C,KAAK,EAAE,QAAiB;SACzB;KACF,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,IAAI,iDAAkC,GACxC,EACN,KAAC,MAAM,IACL,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;oBAClB,QAAQ,CAAC,KAAuB,CAAC,CAAC;gBACpC,CAAC,GACD,EACF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,kEAAmD,GAC7D,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { SkillItem } from "../lib/types.js";
|
|
3
|
+
interface SkillsConfirmProps {
|
|
4
|
+
skills: SkillItem[];
|
|
5
|
+
onConfirm: () => void;
|
|
6
|
+
onCancel: () => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function SkillsConfirm({ skills, onConfirm, onCancel, }: SkillsConfirmProps): React.ReactElement;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=SkillsConfirm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillsConfirm.d.ts","sourceRoot":"","sources":["../../src/components/SkillsConfirm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,UAAU,kBAAkB;IAC1B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,SAAS,EACT,QAAQ,GACT,EAAE,kBAAkB,GAAG,KAAK,CAAC,YAAY,CA+BzC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import { Box, Text } from "ink";
|
|
4
|
+
import { ConfirmInput } from "@inkjs/ui";
|
|
5
|
+
export function SkillsConfirm({ skills, onConfirm, onCancel, }) {
|
|
6
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: "Confirm Download" }) }), _jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Text, { bold: true, color: "green", children: ["Skills to download (", skills.length, "):"] }), skills.map((skill) => (_jsx(Box, { marginLeft: 2, children: _jsxs(Text, { color: "green", children: ["+ ", skill.name] }) }, skill.id)))] }), _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { children: ["Destination: ", _jsx(Text, { color: "cyan", children: ".claude/skills/" })] }) }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: "Download these skills?" }) }), _jsx(ConfirmInput, { onConfirm: onConfirm, onCancel: onCancel })] }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=SkillsConfirm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillsConfirm.js","sourceRoot":"","sources":["../../src/components/SkillsConfirm.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AASzC,MAAM,UAAU,aAAa,CAAC,EAC5B,MAAM,EACN,SAAS,EACT,QAAQ,GACW;IACnB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,IAAI,uCAAwB,GAC9B,EAEN,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,OAAO,qCACD,MAAM,CAAC,MAAM,UAC7B,EACN,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,KAAC,GAAG,IAAgB,UAAU,EAAE,CAAC,YAC/B,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,mBAAI,KAAK,CAAC,IAAI,IAAQ,IADjC,KAAK,CAAC,EAAE,CAEZ,CACP,CAAC,IACE,EAEN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,MAAC,IAAI,gCACU,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,gCAAuB,IACjD,GACH,EAEN,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,IAAI,6CAA8B,GACpC,EAEN,KAAC,YAAY,IAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAI,IACtD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { SkillItem } from "../lib/types.js";
|
|
3
|
+
interface DownloadResult {
|
|
4
|
+
skill: SkillItem;
|
|
5
|
+
success: boolean;
|
|
6
|
+
path?: string;
|
|
7
|
+
error?: string;
|
|
8
|
+
}
|
|
9
|
+
interface SkillsDownloadProps {
|
|
10
|
+
skills: SkillItem[];
|
|
11
|
+
onComplete: (results: DownloadResult[]) => void;
|
|
12
|
+
}
|
|
13
|
+
export declare function SkillsDownload({ skills, onComplete, }: SkillsDownloadProps): React.ReactElement;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=SkillsDownload.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillsDownload.d.ts","sourceRoot":"","sources":["../../src/components/SkillsDownload.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,UAAU,cAAc;IACtB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,mBAAmB;IAC3B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,UAAU,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,IAAI,CAAC;CACjD;AAED,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,UAAU,GACX,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,CAmF1C"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useEffect, useState } from "react";
|
|
3
|
+
import { Box, Text } from "ink";
|
|
4
|
+
import { Spinner, ProgressBar } from "@inkjs/ui";
|
|
5
|
+
import { downloadAndSaveSkill } from "../lib/skills.js";
|
|
6
|
+
export function SkillsDownload({ skills, onComplete, }) {
|
|
7
|
+
const [currentIndex, setCurrentIndex] = useState(0);
|
|
8
|
+
const [results, setResults] = useState([]);
|
|
9
|
+
const [currentSkill, setCurrentSkill] = useState("");
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
let isMounted = true;
|
|
12
|
+
const downloadNext = async () => {
|
|
13
|
+
if (currentIndex >= skills.length) {
|
|
14
|
+
onComplete(results);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const skill = skills[currentIndex];
|
|
18
|
+
if (!skill)
|
|
19
|
+
return;
|
|
20
|
+
setCurrentSkill(skill.name);
|
|
21
|
+
const result = await downloadAndSaveSkill(skill);
|
|
22
|
+
if (!isMounted)
|
|
23
|
+
return;
|
|
24
|
+
const downloadResult = result.isOk()
|
|
25
|
+
? { skill, success: true, path: result.value }
|
|
26
|
+
: { skill, success: false, error: result.error.message };
|
|
27
|
+
setResults((prev) => [...prev, downloadResult]);
|
|
28
|
+
setCurrentIndex((prev) => prev + 1);
|
|
29
|
+
};
|
|
30
|
+
void downloadNext();
|
|
31
|
+
return () => {
|
|
32
|
+
isMounted = false;
|
|
33
|
+
};
|
|
34
|
+
}, [currentIndex, skills, onComplete, results]);
|
|
35
|
+
const progress = skills.length > 0 ? (currentIndex / skills.length) * 100 : 0;
|
|
36
|
+
const successCount = results.filter((r) => r.success).length;
|
|
37
|
+
const failCount = results.filter((r) => !r.success).length;
|
|
38
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: "Downloading Skills..." }) }), _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { children: ["Progress: ", currentIndex, " / ", skills.length] }) }), _jsx(Box, { marginBottom: 1, width: 40, children: _jsx(ProgressBar, { value: Math.round(progress) }) }), currentIndex < skills.length && (_jsx(Box, { marginBottom: 1, children: _jsx(Spinner, { label: `Downloading: ${currentSkill}` }) })), _jsx(Box, { flexDirection: "column", marginBottom: 1, children: results.map((result) => (_jsx(Box, { children: result.success ? (_jsxs(Text, { color: "green", children: ["+ ", result.skill.name] })) : (_jsxs(Text, { color: "red", children: ["x ", result.skill.name, ": ", result.error] })) }, result.skill.id))) }), _jsxs(Box, { children: [_jsxs(Text, { color: "green", children: ["Success: ", successCount] }), _jsx(Text, { children: " | " }), _jsxs(Text, { color: "red", children: ["Failed: ", failCount] })] })] }));
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=SkillsDownload.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillsDownload.js","sourceRoot":"","sources":["../../src/components/SkillsDownload.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { SkillItem, SkillError } from "../lib/types.js";
|
|
3
|
+
interface SkillsFetchProps {
|
|
4
|
+
repoUrl: string;
|
|
5
|
+
onComplete: (skills: SkillItem[]) => void;
|
|
6
|
+
onError: (error: SkillError) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function SkillsFetch({ repoUrl, onComplete, onError, }: SkillsFetchProps): React.ReactElement;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=SkillsFetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillsFetch.d.ts","sourceRoot":"","sources":["../../src/components/SkillsFetch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7D,UAAU,gBAAgB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IAC1C,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACtC;AAED,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,UAAU,EACV,OAAO,GACR,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CA2CvC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useEffect, useState } from "react";
|
|
3
|
+
import { Box, Text } from "ink";
|
|
4
|
+
import { Spinner } from "@inkjs/ui";
|
|
5
|
+
import { fetchSkillsFromRepo } from "../lib/skills.js";
|
|
6
|
+
export function SkillsFetch({ repoUrl, onComplete, onError, }) {
|
|
7
|
+
const [status, setStatus] = useState("Connecting to GitHub...");
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
let isMounted = true;
|
|
10
|
+
const fetchSkills = async () => {
|
|
11
|
+
setStatus("Fetching repository contents...");
|
|
12
|
+
const result = await fetchSkillsFromRepo(repoUrl);
|
|
13
|
+
if (!isMounted)
|
|
14
|
+
return;
|
|
15
|
+
if (result.isOk()) {
|
|
16
|
+
setStatus(`Found ${result.value.length} skills`);
|
|
17
|
+
// Small delay to show the count
|
|
18
|
+
setTimeout(() => {
|
|
19
|
+
if (isMounted) {
|
|
20
|
+
onComplete(result.value);
|
|
21
|
+
}
|
|
22
|
+
}, 500);
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
onError(result.error);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
void fetchSkills();
|
|
29
|
+
return () => {
|
|
30
|
+
isMounted = false;
|
|
31
|
+
};
|
|
32
|
+
}, [repoUrl, onComplete, onError]);
|
|
33
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Spinner, { label: status }) }), _jsx(Box, { children: _jsxs(Text, { dimColor: true, children: ["Repository: ", repoUrl] }) })] }));
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=SkillsFetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillsFetch.js","sourceRoot":"","sources":["../../src/components/SkillsFetch.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AASvD,MAAM,UAAU,WAAW,CAAC,EAC1B,OAAO,EACP,UAAU,EACV,OAAO,GACU;IACjB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAS,yBAAyB,CAAC,CAAC;IAExE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;YAC5C,SAAS,CAAC,iCAAiC,CAAC,CAAC;YAE7C,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;YAElD,IAAI,CAAC,SAAS;gBAAE,OAAO;YAEvB,IAAI,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClB,SAAS,CAAC,SAAS,MAAM,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,CAAC;gBACjD,gCAAgC;gBAChC,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,SAAS,EAAE,CAAC;wBACd,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC3B,CAAC;gBACH,CAAC,EAAE,GAAG,CAAC,CAAC;YACV,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,WAAW,EAAE,CAAC;QAEnB,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,KAAK,CAAC;QACpB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAEnC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,OAAO,IAAC,KAAK,EAAE,MAAM,GAAI,GACtB,EACN,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,QAAQ,mCAAc,OAAO,IAAQ,GACvC,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface SkillsRepoProps {
|
|
3
|
+
onSubmit: (repoUrl: string) => void;
|
|
4
|
+
onBack: () => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function SkillsRepo({ onSubmit }: SkillsRepoProps): React.ReactElement;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=SkillsRepo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillsRepo.d.ts","sourceRoot":"","sources":["../../src/components/SkillsRepo.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAIxC,UAAU,eAAe;IACvB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,GAAG,KAAK,CAAC,YAAY,CA2D5E"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useState } from "react";
|
|
3
|
+
import { Box, Text } from "ink";
|
|
4
|
+
import { TextInput } from "@inkjs/ui";
|
|
5
|
+
export function SkillsRepo({ onSubmit }) {
|
|
6
|
+
const [error, setError] = useState(null);
|
|
7
|
+
const validateUrl = (url) => {
|
|
8
|
+
const githubPattern = /^https?:\/\/github\.com\/[^/]+\/[^/]+/;
|
|
9
|
+
return githubPattern.test(url);
|
|
10
|
+
};
|
|
11
|
+
const handleSubmit = (value) => {
|
|
12
|
+
const trimmed = value.trim();
|
|
13
|
+
if (!trimmed) {
|
|
14
|
+
setError("Please enter a URL");
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (!validateUrl(trimmed)) {
|
|
18
|
+
setError("Invalid GitHub URL format");
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
setError(null);
|
|
22
|
+
onSubmit(trimmed);
|
|
23
|
+
};
|
|
24
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: "Enter GitHub Repository URL:" }) }), _jsxs(Box, { marginBottom: 1, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "Supported formats:" }), _jsx(Text, { dimColor: true, children: " https://github.com/owner/repo" }), _jsx(Text, { dimColor: true, children: " https://github.com/owner/repo/tree/branch/path" })] }), _jsxs(Box, { marginBottom: 1, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "Examples:" }), _jsx(Text, { dimColor: true, children: " https://github.com/anthropics/skills/tree/main/skills" }), _jsx(Text, { dimColor: true, children: " https://github.com/agentskills/agentskills" })] }), _jsxs(Box, { children: [_jsx(Text, { color: "cyan", children: "URL: " }), _jsx(TextInput, { placeholder: "https://github.com/...", onSubmit: handleSubmit })] }), error && (_jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "red", children: error }) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Press Enter to confirm, Ctrl+C to cancel" }) })] }));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=SkillsRepo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillsRepo.js","sourceRoot":"","sources":["../../src/components/SkillsRepo.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAOtC,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAmB;IACtD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,WAAW,GAAG,CAAC,GAAW,EAAW,EAAE;QAC3C,MAAM,aAAa,GAAG,uCAAuC,CAAC;QAC9D,OAAO,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,KAAa,EAAQ,EAAE;QAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YAC/B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,2BAA2B,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,IAAI,mDAAoC,GAC1C,EAEN,MAAC,GAAG,IAAC,YAAY,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aAC1C,KAAC,IAAI,IAAC,QAAQ,yCAA0B,EACxC,KAAC,IAAI,IAAC,QAAQ,sDAAuC,EACrD,KAAC,IAAI,IAAC,QAAQ,uEAAwD,IAClE,EAEN,MAAC,GAAG,IAAC,YAAY,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ,aAC1C,KAAC,IAAI,IAAC,QAAQ,gCAAiB,EAC/B,KAAC,IAAI,IAAC,QAAQ,8EAA+D,EAC7E,KAAC,IAAI,IAAC,QAAQ,mEAAoD,IAC9D,EAEN,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,sBAAa,EAC/B,KAAC,SAAS,IACR,WAAW,EAAC,wBAAwB,EACpC,QAAQ,EAAE,YAAY,GACtB,IACE,EAEL,KAAK,IAAI,CACR,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,KAAK,GAAQ,GAC5B,CACP,EAED,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,QAAQ,+DAAgD,GAC1D,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { SkillItem } from "../lib/types.js";
|
|
3
|
+
interface SkillsSelectProps {
|
|
4
|
+
skills: SkillItem[];
|
|
5
|
+
repoUrl: string;
|
|
6
|
+
onConfirm: (selectedSkills: SkillItem[]) => void;
|
|
7
|
+
onBack: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function SkillsSelect({ skills, repoUrl, onConfirm, onBack, }: SkillsSelectProps): React.ReactElement;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=SkillsSelect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillsSelect.d.ts","sourceRoot":"","sources":["../../src/components/SkillsSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,UAAU,iBAAiB;IACzB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC;IACjD,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,OAAO,EACP,SAAS,EACT,MAAM,GACP,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAkGxC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useState } from "react";
|
|
3
|
+
import { Box, Text, useInput } from "ink";
|
|
4
|
+
export function SkillsSelect({ skills, repoUrl, onConfirm, onBack, }) {
|
|
5
|
+
const [selectedIds, setSelectedIds] = useState(new Set());
|
|
6
|
+
const [cursorIndex, setCursorIndex] = useState(0);
|
|
7
|
+
useInput((input, key) => {
|
|
8
|
+
if (key.upArrow) {
|
|
9
|
+
setCursorIndex((prev) => (prev > 0 ? prev - 1 : skills.length - 1));
|
|
10
|
+
}
|
|
11
|
+
else if (key.downArrow) {
|
|
12
|
+
setCursorIndex((prev) => (prev < skills.length - 1 ? prev + 1 : 0));
|
|
13
|
+
}
|
|
14
|
+
else if (input === " ") {
|
|
15
|
+
// Toggle selection
|
|
16
|
+
const skill = skills[cursorIndex];
|
|
17
|
+
if (skill) {
|
|
18
|
+
setSelectedIds((prev) => {
|
|
19
|
+
const next = new Set(prev);
|
|
20
|
+
if (next.has(skill.id)) {
|
|
21
|
+
next.delete(skill.id);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
next.add(skill.id);
|
|
25
|
+
}
|
|
26
|
+
return next;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
else if (key.return) {
|
|
31
|
+
// Confirm selection
|
|
32
|
+
const selectedSkills = skills
|
|
33
|
+
.filter((s) => selectedIds.has(s.id))
|
|
34
|
+
.map((s) => ({ ...s, selected: true }));
|
|
35
|
+
if (selectedSkills.length > 0) {
|
|
36
|
+
onConfirm(selectedSkills);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else if (input === "a") {
|
|
40
|
+
// Select all
|
|
41
|
+
setSelectedIds(new Set(skills.map((s) => s.id)));
|
|
42
|
+
}
|
|
43
|
+
else if (input === "n") {
|
|
44
|
+
// Select none
|
|
45
|
+
setSelectedIds(new Set());
|
|
46
|
+
}
|
|
47
|
+
else if (key.escape || input === "q") {
|
|
48
|
+
onBack();
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, children: "Select skills to download:" }) }), _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { dimColor: true, children: ["From: ", repoUrl] }) }), _jsx(Box, { flexDirection: "column", marginBottom: 1, children: skills.map((skill, index) => {
|
|
52
|
+
const isSelected = selectedIds.has(skill.id);
|
|
53
|
+
const isCursor = index === cursorIndex;
|
|
54
|
+
const prefix = isCursor ? ">" : " ";
|
|
55
|
+
const checkbox = isSelected ? "[x]" : "[ ]";
|
|
56
|
+
return (_jsxs(Box, { children: [isCursor ? (_jsxs(Text, { color: "cyan", children: [prefix, " ", checkbox, " "] })) : (_jsxs(Text, { children: [prefix, " ", checkbox, " "] })), isCursor ? (_jsx(Text, { bold: true, color: "cyan", children: skill.name })) : (_jsx(Text, { children: skill.name })), skill.description && skill.description !== `Skill: ${skill.id}` && (_jsxs(Text, { dimColor: true, children: [" - ", skill.description] }))] }, skill.id));
|
|
57
|
+
}) }), _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { children: ["Selected: ", _jsx(Text, { color: "green", children: selectedIds.size }), " / ", skills.length] }) }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "Space: toggle, a: all, n: none" }), _jsx(Text, { dimColor: true, children: "Enter: confirm, q/Esc: back" })] })] }));
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=SkillsSelect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkillsSelect.js","sourceRoot":"","sources":["../../src/components/SkillsSelect.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,10 @@ export { Logo } from "./Logo.js";
|
|
|
2
2
|
export { FileSelector } from "./FileSelector.js";
|
|
3
3
|
export { PromptSelector } from "./PromptSelector.js";
|
|
4
4
|
export { Summary } from "./Summary.js";
|
|
5
|
+
export { MainMenu } from "./MainMenu.js";
|
|
6
|
+
export { SkillsRepo } from "./SkillsRepo.js";
|
|
7
|
+
export { SkillsFetch } from "./SkillsFetch.js";
|
|
8
|
+
export { SkillsSelect } from "./SkillsSelect.js";
|
|
9
|
+
export { SkillsConfirm } from "./SkillsConfirm.js";
|
|
10
|
+
export { SkillsDownload } from "./SkillsDownload.js";
|
|
5
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/components/index.js
CHANGED
|
@@ -2,4 +2,10 @@ export { Logo } from "./Logo.js";
|
|
|
2
2
|
export { FileSelector } from "./FileSelector.js";
|
|
3
3
|
export { PromptSelector } from "./PromptSelector.js";
|
|
4
4
|
export { Summary } from "./Summary.js";
|
|
5
|
+
export { MainMenu } from "./MainMenu.js";
|
|
6
|
+
export { SkillsRepo } from "./SkillsRepo.js";
|
|
7
|
+
export { SkillsFetch } from "./SkillsFetch.js";
|
|
8
|
+
export { SkillsSelect } from "./SkillsSelect.js";
|
|
9
|
+
export { SkillsConfirm } from "./SkillsConfirm.js";
|
|
10
|
+
export { SkillsDownload } from "./SkillsDownload.js";
|
|
5
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { App } from "./app.js";
|
|
2
2
|
export { defaultPrompts } from "./prompts/index.js";
|
|
3
|
-
export type { PromptItem, OutputFile, AppState, FileError } from "./lib/types.js";
|
|
3
|
+
export type { PromptItem, OutputFile, AppState, FileError, SkillItem, SkillMetadata, SkillError, MainMenuChoice, } from "./lib/types.js";
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EACV,UAAU,EACV,UAAU,EACV,QAAQ,EACR,SAAS,EACT,SAAS,EACT,aAAa,EACb,UAAU,EACV,cAAc,GACf,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Result } from "neverthrow";
|
|
2
|
+
import type { SkillItem, SkillError } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Fetch skills from a GitHub repository
|
|
5
|
+
*/
|
|
6
|
+
export declare function fetchSkillsFromRepo(repoUrl: string): Promise<Result<SkillItem[], SkillError>>;
|
|
7
|
+
/**
|
|
8
|
+
* Download skill content (SKILL.md and optionally related files)
|
|
9
|
+
*/
|
|
10
|
+
export declare function downloadSkillContent(skill: SkillItem): Promise<Result<string, SkillError>>;
|
|
11
|
+
/**
|
|
12
|
+
* Download the entire skill directory including all resources
|
|
13
|
+
* Returns a map of relative paths to content
|
|
14
|
+
*/
|
|
15
|
+
export declare function downloadSkillDirectory(skill: SkillItem): Promise<Result<Map<string, string>, SkillError>>;
|
|
16
|
+
/**
|
|
17
|
+
* Save skill content to a single file
|
|
18
|
+
*/
|
|
19
|
+
export declare function saveSkillToFile(skillName: string, content: string): Result<string, SkillError>;
|
|
20
|
+
/**
|
|
21
|
+
* Save skill as a full directory with all resources
|
|
22
|
+
*/
|
|
23
|
+
export declare function saveSkillDirectory(skillName: string, files: Map<string, string>): Result<string, SkillError>;
|
|
24
|
+
/**
|
|
25
|
+
* Download and save skill (single file mode)
|
|
26
|
+
*/
|
|
27
|
+
export declare function downloadAndSaveSkill(skill: SkillItem): Promise<Result<string, SkillError>>;
|
|
28
|
+
/**
|
|
29
|
+
* Download and save skill with all resources (directory mode)
|
|
30
|
+
*/
|
|
31
|
+
export declare function downloadAndSaveSkillWithResources(skill: SkillItem): Promise<Result<string, SkillError>>;
|
|
32
|
+
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/lib/skills.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAW,MAAM,YAAY,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAiB,MAAM,YAAY,CAAC;AAqWvE;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,UAAU,CAAC,CAAC,CAenG;AAgCD;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CA6CrC;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,CA8BlD;AAcD;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAuB9F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GACzB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAgC5B;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAOhG;AAED;;GAEG;AACH,wBAAsB,iCAAiC,CACrD,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAOrC"}
|