@m14i/sith 1.21.0 → 1.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/skills.d.ts +5 -0
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/components/TerminalUI.d.ts.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/index.js +286 -240
- package/dist/types.d.ts +1 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/dockerArgs.d.ts.map +1 -1
- package/dist/utils/launcher.d.ts +4 -0
- package/dist/utils/launcher.d.ts.map +1 -0
- package/dist/utils/skills.d.ts +3 -0
- package/dist/utils/skills.d.ts.map +1 -1
- package/docker/claude-defaults/CLAUDE.md +1 -25
- package/package.json +10 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/commands/skills.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/commands/skills.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAC;AA+BxC,iBAAS,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CAuI7E;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,wBAAgB,aAAa,IAAI,IAAI,CAEpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TerminalUI.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/components/TerminalUI.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TerminalUI.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/components/TerminalUI.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAwC,MAAM,OAAO,CAAC;AA4I7D,wBAAgB,UAAU,IAAI,KAAK,CAAC,YAAY,CA0N/C;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,eAAO,MAAM,cAAc,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,eAAO,MAAM,cAAc,EAAE,UAAU,EA8CtC,CAAC;AAGF,eAAO,MAAM,aAAa;;;;;;;;;;;CAWhB,CAAC;AAGX,eAAO,MAAM,UAAU;;;;;;CAMb,CAAC;AAGX,eAAO,MAAM,cAAc;;;CAGjB,CAAC;AAGX,eAAO,MAAM,UAAU,mOAOb,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -42966,9 +42966,9 @@ which.sync = whichSync
|
|
|
42966
42966
|
|
|
42967
42967
|
__nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
42968
42968
|
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
|
42969
|
-
/* harmony export */ Q: () => (/* binding */ dockerCommand)
|
|
42970
|
-
/* harmony export */ l: () => (/* binding */ runShellDirect)
|
|
42969
|
+
/* harmony export */ Q: () => (/* binding */ dockerCommand)
|
|
42971
42970
|
/* harmony export */ });
|
|
42971
|
+
/* unused harmony export runShellDirect */
|
|
42972
42972
|
/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3024);
|
|
42973
42973
|
/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);
|
|
42974
42974
|
/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(6760);
|
|
@@ -42980,7 +42980,7 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we
|
|
|
42980
42980
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(2864);
|
|
42981
42981
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__nccwpck_require__.n(react__WEBPACK_IMPORTED_MODULE_4__);
|
|
42982
42982
|
/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(6878);
|
|
42983
|
-
/* harmony import */ var
|
|
42983
|
+
/* harmony import */ var _utils_launcher_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(5800);
|
|
42984
42984
|
/* harmony import */ var _nix_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(9922);
|
|
42985
42985
|
/* harmony import */ var _skills_js__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(9805);
|
|
42986
42986
|
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([ink__WEBPACK_IMPORTED_MODULE_3__, _skills_js__WEBPACK_IMPORTED_MODULE_8__]);
|
|
@@ -43075,7 +43075,7 @@ function Menu() {
|
|
|
43075
43075
|
switch (value) {
|
|
43076
43076
|
case "shell":
|
|
43077
43077
|
exit();
|
|
43078
|
-
await
|
|
43078
|
+
await (0,_utils_launcher_js__WEBPACK_IMPORTED_MODULE_6__/* .launchShell */ .k1)();
|
|
43079
43079
|
return;
|
|
43080
43080
|
case "skills":
|
|
43081
43081
|
exit();
|
|
@@ -43231,7 +43231,7 @@ async function dockerCommand(options) {
|
|
|
43231
43231
|
(0,ink__WEBPACK_IMPORTED_MODULE_3__/* .render */ .XX)(react__WEBPACK_IMPORTED_MODULE_4___default().createElement(Menu, null));
|
|
43232
43232
|
}
|
|
43233
43233
|
async function runShellDirect() {
|
|
43234
|
-
await
|
|
43234
|
+
await launchShell();
|
|
43235
43235
|
}
|
|
43236
43236
|
async function pullDocker() {
|
|
43237
43237
|
console.log("📦 Pulling prebuilt Docker image...");
|
|
@@ -43290,51 +43290,6 @@ async function buildDocker() {
|
|
|
43290
43290
|
process.exit(1);
|
|
43291
43291
|
}
|
|
43292
43292
|
}
|
|
43293
|
-
async function runShell() {
|
|
43294
|
-
const skillsDir = (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_6__/* .getSkillsDir */ .YJ)();
|
|
43295
|
-
const opencodeConfigPath = (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_6__/* .getOpenCodeConfigPath */ .Jn)();
|
|
43296
|
-
console.log("🚀 Starting interactive shell...");
|
|
43297
|
-
console.log(`Mounting workspace to ${_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.workspaceMount}`);
|
|
43298
|
-
console.log(`Mounting skills from ${skillsDir} to ${_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.skillsMount}`);
|
|
43299
|
-
console.log('Press Ctrl+D or type "exit" to leave');
|
|
43300
|
-
console.log();
|
|
43301
|
-
// Try to get GitHub token from gh CLI if not in env
|
|
43302
|
-
let githubToken = process.env.GITHUB_TOKEN || "";
|
|
43303
|
-
if (!githubToken) {
|
|
43304
|
-
try {
|
|
43305
|
-
const { stdout } = await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("gh", ["auth", "token"]);
|
|
43306
|
-
githubToken = stdout.trim();
|
|
43307
|
-
}
|
|
43308
|
-
catch {
|
|
43309
|
-
// Ignore if gh CLI not available or not authenticated
|
|
43310
|
-
}
|
|
43311
|
-
}
|
|
43312
|
-
const claudeOauthToken = process.env.CLAUDE_CODE_OAUTH_TOKEN || "";
|
|
43313
|
-
const dockerArgs = [
|
|
43314
|
-
"run",
|
|
43315
|
-
"--rm",
|
|
43316
|
-
"-it",
|
|
43317
|
-
"-v",
|
|
43318
|
-
`${process.cwd()}:${_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.workspaceMount}`,
|
|
43319
|
-
"-v",
|
|
43320
|
-
`${skillsDir}:${_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.skillsMount}`,
|
|
43321
|
-
"-v",
|
|
43322
|
-
`${opencodeConfigPath}:${_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.opencodeConfigMount}`,
|
|
43323
|
-
"-e",
|
|
43324
|
-
`GITHUB_TOKEN=${githubToken}`,
|
|
43325
|
-
...(claudeOauthToken
|
|
43326
|
-
? ["-e", `CLAUDE_CODE_OAUTH_TOKEN=${claudeOauthToken}`]
|
|
43327
|
-
: []),
|
|
43328
|
-
"--entrypoint",
|
|
43329
|
-
"nix-shell",
|
|
43330
|
-
_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.imageName,
|
|
43331
|
-
_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.shellEntrypoint,
|
|
43332
|
-
];
|
|
43333
|
-
await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("docker", dockerArgs, {
|
|
43334
|
-
stdio: "inherit",
|
|
43335
|
-
reject: false,
|
|
43336
|
-
});
|
|
43337
|
-
}
|
|
43338
43293
|
|
|
43339
43294
|
__webpack_async_result__();
|
|
43340
43295
|
} catch(e) { __webpack_async_result__(e); } });
|
|
@@ -43536,7 +43491,8 @@ async function nixCommand(options) {
|
|
|
43536
43491
|
|
|
43537
43492
|
__nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
43538
43493
|
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
|
43539
|
-
/* harmony export */ a: () => (/* binding */ skillsCommand)
|
|
43494
|
+
/* harmony export */ a: () => (/* binding */ skillsCommand),
|
|
43495
|
+
/* harmony export */ c: () => (/* binding */ SkillsMenu)
|
|
43540
43496
|
/* harmony export */ });
|
|
43541
43497
|
/* harmony import */ var ink__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3816);
|
|
43542
43498
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(2864);
|
|
@@ -43559,11 +43515,12 @@ function statusIcon(row) {
|
|
|
43559
43515
|
return row.installed ? "✅" : "☐";
|
|
43560
43516
|
}
|
|
43561
43517
|
}
|
|
43562
|
-
function SkillsMenu() {
|
|
43518
|
+
function SkillsMenu({ onClose }) {
|
|
43563
43519
|
const { exit } = (0,ink__WEBPACK_IMPORTED_MODULE_0__/* .useApp */ .nm)();
|
|
43564
43520
|
const [selectedIndex, setSelectedIndex] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);
|
|
43565
43521
|
const [rows, setRows] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(_config_js__WEBPACK_IMPORTED_MODULE_2__/* .SKILLS_CATALOG */ .XI.map((s) => ({
|
|
43566
43522
|
installed: (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .isInstalled */ .j$)(s.name),
|
|
43523
|
+
autoLoad: (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .getSkillAutoLoad */ .z8)(s.name),
|
|
43567
43524
|
status: "idle",
|
|
43568
43525
|
message: "",
|
|
43569
43526
|
})));
|
|
@@ -43588,6 +43545,7 @@ function SkillsMenu() {
|
|
|
43588
43545
|
await (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .installSkill */ .rP)(skill);
|
|
43589
43546
|
setRow(index, {
|
|
43590
43547
|
installed: true,
|
|
43548
|
+
autoLoad: skill.autoLoad ?? false,
|
|
43591
43549
|
status: "done",
|
|
43592
43550
|
message: "Installed",
|
|
43593
43551
|
});
|
|
@@ -43616,8 +43574,26 @@ function SkillsMenu() {
|
|
|
43616
43574
|
}
|
|
43617
43575
|
return;
|
|
43618
43576
|
}
|
|
43577
|
+
if (input === "a") {
|
|
43578
|
+
const row = rows[selectedIndex];
|
|
43579
|
+
if (row.installed && row.status !== "working") {
|
|
43580
|
+
const newAutoLoad = !row.autoLoad;
|
|
43581
|
+
(0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .setSkillAutoLoad */ .lJ)(_config_js__WEBPACK_IMPORTED_MODULE_2__/* .SKILLS_CATALOG */ .XI[selectedIndex].name, newAutoLoad);
|
|
43582
|
+
setRow(selectedIndex, {
|
|
43583
|
+
autoLoad: newAutoLoad,
|
|
43584
|
+
status: "done",
|
|
43585
|
+
message: newAutoLoad ? "Auto-load on" : "On-demand",
|
|
43586
|
+
});
|
|
43587
|
+
}
|
|
43588
|
+
return;
|
|
43589
|
+
}
|
|
43619
43590
|
if (input === "q" || key.escape) {
|
|
43620
|
-
|
|
43591
|
+
if (onClose) {
|
|
43592
|
+
onClose();
|
|
43593
|
+
}
|
|
43594
|
+
else {
|
|
43595
|
+
exit();
|
|
43596
|
+
}
|
|
43621
43597
|
}
|
|
43622
43598
|
});
|
|
43623
43599
|
return (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", paddingX: 1 },
|
|
@@ -43634,13 +43610,17 @@ function SkillsMenu() {
|
|
|
43634
43610
|
" ",
|
|
43635
43611
|
skill.name.padEnd(12)),
|
|
43636
43612
|
react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: !isSelected }, skill.description),
|
|
43613
|
+
row.installed ? (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { color: row.autoLoad ? "green" : "yellow" },
|
|
43614
|
+
" ",
|
|
43615
|
+
row.autoLoad ? "[auto]" : "[on-demand]")) : null,
|
|
43637
43616
|
row.message ? (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { color: row.status === "error" ? "red" : "green" },
|
|
43638
43617
|
" ",
|
|
43639
43618
|
row.message)) : null));
|
|
43640
43619
|
}),
|
|
43641
43620
|
react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { marginTop: 1 },
|
|
43642
|
-
react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, "\u2191\u2193 navigate Enter install/uninstall q quit"))));
|
|
43621
|
+
react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, "\u2191\u2193 navigate Enter install/uninstall a toggle auto-load q quit"))));
|
|
43643
43622
|
}
|
|
43623
|
+
|
|
43644
43624
|
function skillsCommand() {
|
|
43645
43625
|
(0,ink__WEBPACK_IMPORTED_MODULE_0__/* .render */ .XX)(react__WEBPACK_IMPORTED_MODULE_1___default().createElement(SkillsMenu, null));
|
|
43646
43626
|
}
|
|
@@ -43803,17 +43783,15 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we
|
|
|
43803
43783
|
/* harmony export */ t: () => (/* binding */ renderTerminalUI)
|
|
43804
43784
|
/* harmony export */ });
|
|
43805
43785
|
/* unused harmony export TerminalUI */
|
|
43806
|
-
/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(6181);
|
|
43807
43786
|
/* harmony import */ var ink__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3816);
|
|
43808
43787
|
/* harmony import */ var ink_text_input__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(9046);
|
|
43809
43788
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(2864);
|
|
43810
43789
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
|
|
43811
43790
|
/* harmony import */ var _commands_skills_js__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(9805);
|
|
43812
43791
|
/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(6878);
|
|
43813
|
-
/* harmony import */ var
|
|
43814
|
-
/* harmony import */ var _utils_githubToken_js__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(1460);
|
|
43792
|
+
/* harmony import */ var _utils_launcher_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(5800);
|
|
43815
43793
|
/* harmony import */ var _utils_messageUtils_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(5534);
|
|
43816
|
-
/* harmony import */ var
|
|
43794
|
+
/* harmony import */ var _utils_slashCommands_js__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(9987);
|
|
43817
43795
|
/* harmony import */ var _ConfigModal_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(3636);
|
|
43818
43796
|
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([ink__WEBPACK_IMPORTED_MODULE_0__, ink_text_input__WEBPACK_IMPORTED_MODULE_1__, _commands_skills_js__WEBPACK_IMPORTED_MODULE_3__, _ConfigModal_js__WEBPACK_IMPORTED_MODULE_6__]);
|
|
43819
43797
|
([ink__WEBPACK_IMPORTED_MODULE_0__, ink_text_input__WEBPACK_IMPORTED_MODULE_1__, _commands_skills_js__WEBPACK_IMPORTED_MODULE_3__, _ConfigModal_js__WEBPACK_IMPORTED_MODULE_6__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
@@ -43826,8 +43804,6 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([ink_
|
|
|
43826
43804
|
|
|
43827
43805
|
|
|
43828
43806
|
|
|
43829
|
-
|
|
43830
|
-
|
|
43831
43807
|
const TOOLS = [
|
|
43832
43808
|
{
|
|
43833
43809
|
value: "opencode",
|
|
@@ -43836,13 +43812,16 @@ const TOOLS = [
|
|
|
43836
43812
|
},
|
|
43837
43813
|
{ value: "claude", label: "Claude Code", description: "Anthropic Claude" },
|
|
43838
43814
|
];
|
|
43839
|
-
function
|
|
43840
|
-
return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column",
|
|
43841
|
-
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column"
|
|
43815
|
+
function SithHeader() {
|
|
43816
|
+
return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", alignItems: "center", paddingY: 1 },
|
|
43817
|
+
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column" }, _config_js__WEBPACK_IMPORTED_MODULE_4__/* .ASCII_LOGO */ .mF.map((line, index) => (
|
|
43842
43818
|
// biome-ignore lint/suspicious/noArrayIndexKey: static array, order never changes
|
|
43843
43819
|
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { key: index, color: "red", bold: true }, line)))),
|
|
43844
|
-
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .
|
|
43845
|
-
|
|
43820
|
+
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, "Turn your context to the dark side")));
|
|
43821
|
+
}
|
|
43822
|
+
function ToolPicker({ selectedIndex }) {
|
|
43823
|
+
return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", justifyContent: "center", alignItems: "center", paddingY: 2 },
|
|
43824
|
+
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(SithHeader, null),
|
|
43846
43825
|
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 4, paddingY: 1 },
|
|
43847
43826
|
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { marginBottom: 1 },
|
|
43848
43827
|
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { color: "cyan", bold: true }, "Select AI Tool")),
|
|
@@ -43858,12 +43837,8 @@ function ToolPicker({ selectedIndex }) {
|
|
|
43858
43837
|
}
|
|
43859
43838
|
function WelcomeScreen({ tool }) {
|
|
43860
43839
|
const toolLabel = TOOLS.find((t) => t.value === tool)?.label ?? tool;
|
|
43861
|
-
return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", justifyContent: "center", alignItems: "center"
|
|
43862
|
-
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column",
|
|
43863
|
-
// biome-ignore lint/suspicious/noArrayIndexKey: static array, order never changes
|
|
43864
|
-
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { key: index, color: "red", bold: true }, line)))),
|
|
43865
|
-
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", alignItems: "center", marginTop: 1 },
|
|
43866
|
-
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, "Turn your context to the dark side"),
|
|
43840
|
+
return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", justifyContent: "center", alignItems: "center" },
|
|
43841
|
+
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", alignItems: "center" },
|
|
43867
43842
|
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { color: "cyan" },
|
|
43868
43843
|
"Tool: ",
|
|
43869
43844
|
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { bold: true }, toolLabel))),
|
|
@@ -43891,77 +43866,30 @@ function TerminalUI() {
|
|
|
43891
43866
|
const [input, setInput] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)("");
|
|
43892
43867
|
const [messages, setMessages] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)([]);
|
|
43893
43868
|
const [showConfigModal, setShowConfigModal] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);
|
|
43894
|
-
const [
|
|
43869
|
+
const [showSkillsMenu, setShowSkillsMenu] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);
|
|
43870
|
+
const nextMessageId = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(1);
|
|
43895
43871
|
const [selectedTool, setSelectedTool] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(null);
|
|
43896
43872
|
const [toolPickerIndex, setToolPickerIndex] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(0);
|
|
43897
43873
|
const addMessage = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((text, type = "system") => {
|
|
43898
43874
|
const newMessage = {
|
|
43899
|
-
id: nextMessageId
|
|
43875
|
+
id: nextMessageId.current++,
|
|
43900
43876
|
text,
|
|
43901
43877
|
type,
|
|
43902
43878
|
timestamp: new Date(),
|
|
43903
43879
|
};
|
|
43904
43880
|
setMessages((previousMessages) => [...previousMessages, newMessage]);
|
|
43905
|
-
|
|
43906
|
-
}, [nextMessageId]);
|
|
43881
|
+
}, []);
|
|
43907
43882
|
const handleDockerShell = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(async () => {
|
|
43908
43883
|
exit();
|
|
43909
|
-
|
|
43910
|
-
console.log(`Mounting current directory to ${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.workspaceMount}`);
|
|
43911
|
-
console.log('Press Ctrl+D or type "exit" to leave');
|
|
43912
|
-
console.log();
|
|
43913
|
-
const githubToken = await (0,_utils_githubToken_js__WEBPACK_IMPORTED_MODULE_8__/* .getGitHubToken */ .l)();
|
|
43914
|
-
const claudeOauthToken = process.env.CLAUDE_CODE_OAUTH_TOKEN || "";
|
|
43915
|
-
const dockerArgs = (0,_utils_dockerArgs_js__WEBPACK_IMPORTED_MODULE_5__/* .buildDockerShellCommand */ .ac)(githubToken, claudeOauthToken);
|
|
43916
|
-
await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("docker", dockerArgs, { stdio: "inherit", reject: false });
|
|
43917
|
-
console.log();
|
|
43918
|
-
console.log("✅ Exited shell");
|
|
43884
|
+
await (0,_utils_launcher_js__WEBPACK_IMPORTED_MODULE_5__/* .launchShell */ .k1)();
|
|
43919
43885
|
}, [exit]);
|
|
43920
43886
|
const handleOpenCode = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(async (prompt) => {
|
|
43921
43887
|
exit();
|
|
43922
|
-
|
|
43923
|
-
console.log(`Mounting current directory to ${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.workspaceMount}`);
|
|
43924
|
-
if (prompt) {
|
|
43925
|
-
console.log(`Prompt: ${prompt}`);
|
|
43926
|
-
}
|
|
43927
|
-
console.log();
|
|
43928
|
-
const githubToken = await (0,_utils_githubToken_js__WEBPACK_IMPORTED_MODULE_8__/* .getGitHubToken */ .l)();
|
|
43929
|
-
const claudeOauthToken = process.env.CLAUDE_CODE_OAUTH_TOKEN || "";
|
|
43930
|
-
const dockerArgs = (0,_utils_dockerArgs_js__WEBPACK_IMPORTED_MODULE_5__/* .buildDockerOpencodeCommand */ .Xs)(githubToken, prompt, claudeOauthToken);
|
|
43931
|
-
try {
|
|
43932
|
-
await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("docker", dockerArgs, { stdio: "inherit" });
|
|
43933
|
-
console.log();
|
|
43934
|
-
console.log("✅ Exited OpenCode");
|
|
43935
|
-
}
|
|
43936
|
-
catch (error) {
|
|
43937
|
-
const errorMessage = error instanceof Error ? error.message : "Failed to start OpenCode";
|
|
43938
|
-
console.error(`❌ ${errorMessage}`);
|
|
43939
|
-
process.exit(1);
|
|
43940
|
-
}
|
|
43888
|
+
await (0,_utils_launcher_js__WEBPACK_IMPORTED_MODULE_5__/* .launchOpencode */ .Tg)(prompt);
|
|
43941
43889
|
}, [exit]);
|
|
43942
43890
|
const handleClaudeCode = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(async (prompt) => {
|
|
43943
43891
|
exit();
|
|
43944
|
-
|
|
43945
|
-
console.log(`Mounting current directory to ${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.workspaceMount}`);
|
|
43946
|
-
if (prompt) {
|
|
43947
|
-
console.log(`Prompt: ${prompt}`);
|
|
43948
|
-
}
|
|
43949
|
-
console.log();
|
|
43950
|
-
const githubToken = await (0,_utils_githubToken_js__WEBPACK_IMPORTED_MODULE_8__/* .getGitHubToken */ .l)();
|
|
43951
|
-
const claudeOauthToken = process.env.CLAUDE_CODE_OAUTH_TOKEN || "";
|
|
43952
|
-
const dockerArgs = (0,_utils_dockerArgs_js__WEBPACK_IMPORTED_MODULE_5__/* .buildDockerClaudeCodeCommand */ .fn)(githubToken, prompt, claudeOauthToken);
|
|
43953
|
-
try {
|
|
43954
|
-
await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("docker", dockerArgs, { stdio: "inherit" });
|
|
43955
|
-
console.log();
|
|
43956
|
-
console.log("✅ Exited Claude Code");
|
|
43957
|
-
}
|
|
43958
|
-
catch (error) {
|
|
43959
|
-
const errorMessage = error instanceof Error
|
|
43960
|
-
? error.message
|
|
43961
|
-
: "Failed to start Claude Code";
|
|
43962
|
-
console.error(`❌ ${errorMessage}`);
|
|
43963
|
-
process.exit(1);
|
|
43964
|
-
}
|
|
43892
|
+
await (0,_utils_launcher_js__WEBPACK_IMPORTED_MODULE_5__/* .launchClaude */ .Q7)(prompt);
|
|
43965
43893
|
}, [exit]);
|
|
43966
43894
|
const handleSlashCommand = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(async (command, userInput) => {
|
|
43967
43895
|
if (!command) {
|
|
@@ -43973,15 +43901,14 @@ function TerminalUI() {
|
|
|
43973
43901
|
await handleDockerShell();
|
|
43974
43902
|
break;
|
|
43975
43903
|
case "skills":
|
|
43976
|
-
|
|
43977
|
-
(0,_commands_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .skillsCommand */ .a)();
|
|
43904
|
+
setShowSkillsMenu(true);
|
|
43978
43905
|
break;
|
|
43979
43906
|
case "config":
|
|
43980
43907
|
setShowConfigModal(true);
|
|
43981
43908
|
break;
|
|
43982
43909
|
case "help": {
|
|
43983
43910
|
addMessage("Available commands:", "info");
|
|
43984
|
-
const availableCommands = (0,
|
|
43911
|
+
const availableCommands = (0,_utils_slashCommands_js__WEBPACK_IMPORTED_MODULE_8__/* .getAvailableCommands */ .K)();
|
|
43985
43912
|
for (const cmd of availableCommands) {
|
|
43986
43913
|
addMessage(` ${cmd.command} - ${cmd.description}`, "info");
|
|
43987
43914
|
}
|
|
@@ -43996,14 +43923,14 @@ function TerminalUI() {
|
|
|
43996
43923
|
addMessage("Switched to Claude Code", "success");
|
|
43997
43924
|
break;
|
|
43998
43925
|
}
|
|
43999
|
-
}, [addMessage, handleDockerShell
|
|
43926
|
+
}, [addMessage, handleDockerShell]);
|
|
44000
43927
|
const handleSubmit = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(async (value) => {
|
|
44001
43928
|
const trimmedValue = value.trim();
|
|
44002
43929
|
if (!trimmedValue) {
|
|
44003
43930
|
return;
|
|
44004
43931
|
}
|
|
44005
43932
|
setInput("");
|
|
44006
|
-
const command = (0,
|
|
43933
|
+
const command = (0,_utils_slashCommands_js__WEBPACK_IMPORTED_MODULE_8__/* .parseSlashCommand */ .M)(trimmedValue);
|
|
44007
43934
|
if (command) {
|
|
44008
43935
|
await handleSlashCommand(command, trimmedValue);
|
|
44009
43936
|
}
|
|
@@ -44057,13 +43984,17 @@ function TerminalUI() {
|
|
|
44057
43984
|
return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column" },
|
|
44058
43985
|
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_ConfigModal_js__WEBPACK_IMPORTED_MODULE_6__/* .ConfigModal */ .y, { onClose: handleConfigModalClose, onMessage: handleConfigModalMessage })));
|
|
44059
43986
|
}
|
|
43987
|
+
if (showSkillsMenu) {
|
|
43988
|
+
return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column" },
|
|
43989
|
+
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_commands_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .SkillsMenu */ .c, { onClose: () => setShowSkillsMenu(false) })));
|
|
43990
|
+
}
|
|
44060
43991
|
if (selectedTool === null) {
|
|
44061
43992
|
return react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ToolPicker, { selectedIndex: toolPickerIndex });
|
|
44062
43993
|
}
|
|
44063
|
-
const shouldShowWelcome = messages.length === 0;
|
|
44064
43994
|
const recentMessages = messages.slice(-10);
|
|
44065
43995
|
return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", height: "100%" },
|
|
44066
|
-
|
|
43996
|
+
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(SithHeader, null),
|
|
43997
|
+
messages.length === 0 ? (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(WelcomeScreen, { tool: selectedTool })) : (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", flexGrow: 1, marginBottom: 1 }, recentMessages.map((message) => (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(MessageItem, { key: message.id, message: message }))))),
|
|
44067
43998
|
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column" },
|
|
44068
43999
|
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { borderStyle: "single", borderColor: "gray", paddingX: 1 },
|
|
44069
44000
|
react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { color: "cyan", bold: true }, "\u203A"),
|
|
@@ -44097,6 +44028,7 @@ const SKILLS_CATALOG = [
|
|
|
44097
44028
|
name: "caveman",
|
|
44098
44029
|
description: "Ultra-compressed communication (~75% token reduction)",
|
|
44099
44030
|
homepage: "https://github.com/JuliusBrussee/caveman",
|
|
44031
|
+
autoLoad: true,
|
|
44100
44032
|
builtinInstructions: `---
|
|
44101
44033
|
name: caveman
|
|
44102
44034
|
description: Ultra-compressed communication mode (ultra — MAX compression, always active).
|
|
@@ -44181,27 +44113,22 @@ const ASCII_LOGO = [
|
|
|
44181
44113
|
/***/ ((module, __unused_webpack___webpack_exports__, __nccwpck_require__) => {
|
|
44182
44114
|
|
|
44183
44115
|
__nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
44184
|
-
/* harmony import */ var
|
|
44185
|
-
/* harmony import */ var
|
|
44186
|
-
/* harmony import */ var
|
|
44187
|
-
/* harmony import */ var
|
|
44188
|
-
/* harmony import */ var
|
|
44189
|
-
/* harmony import */ var
|
|
44190
|
-
/* harmony import */ var
|
|
44191
|
-
/* harmony import */ var
|
|
44192
|
-
/* harmony import */ var
|
|
44193
|
-
/* harmony import */ var
|
|
44194
|
-
/* harmony import */ var
|
|
44195
|
-
/* harmony import */ var
|
|
44196
|
-
/* harmony import */ var
|
|
44197
|
-
/* harmony import */ var
|
|
44198
|
-
|
|
44199
|
-
|
|
44200
|
-
/* harmony import */ var _utils_githubToken_js__WEBPACK_IMPORTED_MODULE_12__ = __nccwpck_require__(1460);
|
|
44201
|
-
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_commands_docker_js__WEBPACK_IMPORTED_MODULE_5__, _commands_skills_js__WEBPACK_IMPORTED_MODULE_7__, _components_TerminalUI_js__WEBPACK_IMPORTED_MODULE_8__]);
|
|
44202
|
-
([_commands_docker_js__WEBPACK_IMPORTED_MODULE_5__, _commands_skills_js__WEBPACK_IMPORTED_MODULE_7__, _components_TerminalUI_js__WEBPACK_IMPORTED_MODULE_8__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
44203
|
-
|
|
44204
|
-
|
|
44116
|
+
/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3024);
|
|
44117
|
+
/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);
|
|
44118
|
+
/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(6760);
|
|
44119
|
+
/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nccwpck_require__.n(node_path__WEBPACK_IMPORTED_MODULE_1__);
|
|
44120
|
+
/* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(3136);
|
|
44121
|
+
/* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(node_url__WEBPACK_IMPORTED_MODULE_2__);
|
|
44122
|
+
/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(9611);
|
|
44123
|
+
/* harmony import */ var commander__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(2202);
|
|
44124
|
+
/* harmony import */ var update_notifier__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(6213);
|
|
44125
|
+
/* harmony import */ var _commands_docker_js__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(5515);
|
|
44126
|
+
/* harmony import */ var _commands_nix_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(9922);
|
|
44127
|
+
/* harmony import */ var _commands_skills_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(9805);
|
|
44128
|
+
/* harmony import */ var _components_TerminalUI_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(3535);
|
|
44129
|
+
/* harmony import */ var _utils_launcher_js__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(5800);
|
|
44130
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_commands_docker_js__WEBPACK_IMPORTED_MODULE_4__, _commands_skills_js__WEBPACK_IMPORTED_MODULE_6__, _components_TerminalUI_js__WEBPACK_IMPORTED_MODULE_7__]);
|
|
44131
|
+
([_commands_docker_js__WEBPACK_IMPORTED_MODULE_4__, _commands_skills_js__WEBPACK_IMPORTED_MODULE_6__, _components_TerminalUI_js__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
44205
44132
|
|
|
44206
44133
|
|
|
44207
44134
|
|
|
@@ -44214,19 +44141,19 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_com
|
|
|
44214
44141
|
|
|
44215
44142
|
|
|
44216
44143
|
// Import package.json for version and update checks
|
|
44217
|
-
const __filename = (0,
|
|
44218
|
-
const __dirname = (0,
|
|
44219
|
-
const pkg = JSON.parse((0,
|
|
44144
|
+
const __filename = (0,node_url__WEBPACK_IMPORTED_MODULE_2__.fileURLToPath)(import.meta.url);
|
|
44145
|
+
const __dirname = (0,node_path__WEBPACK_IMPORTED_MODULE_1__.dirname)(__filename);
|
|
44146
|
+
const pkg = JSON.parse((0,node_fs__WEBPACK_IMPORTED_MODULE_0__.readFileSync)((0,node_path__WEBPACK_IMPORTED_MODULE_1__.join)(__dirname, "../package.json"), "utf-8"));
|
|
44220
44147
|
const PROGRAM_NAME = "sith";
|
|
44221
44148
|
const PROGRAM_VERSION = pkg.version;
|
|
44222
44149
|
const PROGRAM_DESCRIPTION = "Turn your context to the dark side. Standardize and share your OpenCode setup with a fully dockerized environment, designed for seamless collaboration and CI integration.";
|
|
44223
44150
|
// Check for updates (automatic background check)
|
|
44224
|
-
const notifier = (0,
|
|
44151
|
+
const notifier = (0,update_notifier__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A)({ pkg });
|
|
44225
44152
|
notifier.notify();
|
|
44226
44153
|
async function checkForUpdates() {
|
|
44227
|
-
console.log(
|
|
44154
|
+
console.log(chalk__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Ay.cyan("Checking for updates..."));
|
|
44228
44155
|
// Force update check by setting updateCheckInterval to 0
|
|
44229
|
-
const notifier = (0,
|
|
44156
|
+
const notifier = (0,update_notifier__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .A)({
|
|
44230
44157
|
pkg,
|
|
44231
44158
|
updateCheckInterval: 0,
|
|
44232
44159
|
});
|
|
@@ -44235,16 +44162,16 @@ async function checkForUpdates() {
|
|
|
44235
44162
|
const update = notifier.update;
|
|
44236
44163
|
if (update && update.latest !== pkg.version) {
|
|
44237
44164
|
console.log();
|
|
44238
|
-
console.log(
|
|
44239
|
-
console.log(
|
|
44165
|
+
console.log(chalk__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Ay.green(`Update available: ${chalk__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Ay.dim(pkg.version)} → ${chalk__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Ay.bold(update.latest)}`));
|
|
44166
|
+
console.log(chalk__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Ay.cyan(`Run ${chalk__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Ay.bold(`npm install -g ${pkg.name}`)} to update`));
|
|
44240
44167
|
console.log();
|
|
44241
44168
|
}
|
|
44242
44169
|
else {
|
|
44243
|
-
console.log(
|
|
44170
|
+
console.log(chalk__WEBPACK_IMPORTED_MODULE_10__/* ["default"] */ .Ay.green(`✓ You're on the latest version (${pkg.version})`));
|
|
44244
44171
|
}
|
|
44245
44172
|
}
|
|
44246
44173
|
function createProgram() {
|
|
44247
|
-
const program = new
|
|
44174
|
+
const program = new commander__WEBPACK_IMPORTED_MODULE_3__/* .Command */ .uB();
|
|
44248
44175
|
program
|
|
44249
44176
|
.name(PROGRAM_NAME)
|
|
44250
44177
|
.description(PROGRAM_DESCRIPTION)
|
|
@@ -44262,21 +44189,21 @@ function createProgram() {
|
|
|
44262
44189
|
await checkForUpdates();
|
|
44263
44190
|
}
|
|
44264
44191
|
else if (options.nix) {
|
|
44265
|
-
await (0,
|
|
44192
|
+
await (0,_commands_nix_js__WEBPACK_IMPORTED_MODULE_5__/* .runNixShell */ .nb)();
|
|
44266
44193
|
}
|
|
44267
44194
|
else if (options.nixInstall) {
|
|
44268
|
-
await (0,
|
|
44195
|
+
await (0,_commands_nix_js__WEBPACK_IMPORTED_MODULE_5__/* .nixCommand */ .Dv)({ install: true });
|
|
44269
44196
|
}
|
|
44270
44197
|
else if (options.it) {
|
|
44271
|
-
await (0,
|
|
44198
|
+
await (0,_utils_launcher_js__WEBPACK_IMPORTED_MODULE_8__/* .launchShell */ .k1)();
|
|
44272
44199
|
}
|
|
44273
44200
|
else if (options.legacy || options.pull || options.build) {
|
|
44274
44201
|
// Use legacy menu for explicit pull/build or --legacy flag
|
|
44275
|
-
await (0,
|
|
44202
|
+
await (0,_commands_docker_js__WEBPACK_IMPORTED_MODULE_4__/* .dockerCommand */ .Q)(options);
|
|
44276
44203
|
}
|
|
44277
44204
|
else {
|
|
44278
44205
|
// Default: show new terminal UI
|
|
44279
|
-
(0,
|
|
44206
|
+
(0,_components_TerminalUI_js__WEBPACK_IMPORTED_MODULE_7__/* .renderTerminalUI */ .t)();
|
|
44280
44207
|
}
|
|
44281
44208
|
});
|
|
44282
44209
|
// Docker command - explicit Docker management
|
|
@@ -44286,21 +44213,21 @@ function createProgram() {
|
|
|
44286
44213
|
.option("--pull", "Pull prebuilt Docker image (recommended)")
|
|
44287
44214
|
.option("--build", "Build the Docker image from scratch")
|
|
44288
44215
|
.action(async (options) => {
|
|
44289
|
-
await (0,
|
|
44216
|
+
await (0,_commands_docker_js__WEBPACK_IMPORTED_MODULE_4__/* .dockerCommand */ .Q)(options);
|
|
44290
44217
|
});
|
|
44291
44218
|
// Shell command - direct interactive shell (bypasses menu)
|
|
44292
44219
|
program
|
|
44293
44220
|
.command("shell")
|
|
44294
44221
|
.description("Run interactive shell in Docker container")
|
|
44295
44222
|
.action(async () => {
|
|
44296
|
-
await (0,
|
|
44223
|
+
await (0,_utils_launcher_js__WEBPACK_IMPORTED_MODULE_8__/* .launchShell */ .k1)();
|
|
44297
44224
|
});
|
|
44298
44225
|
// Skills command - install/uninstall skills from catalog
|
|
44299
44226
|
program
|
|
44300
44227
|
.command("skills")
|
|
44301
44228
|
.description("Manage skills (~/.sith/skills/)")
|
|
44302
44229
|
.action(() => {
|
|
44303
|
-
(0,
|
|
44230
|
+
(0,_commands_skills_js__WEBPACK_IMPORTED_MODULE_6__/* .skillsCommand */ .a)();
|
|
44304
44231
|
});
|
|
44305
44232
|
// Nix command - native Nix environment
|
|
44306
44233
|
program
|
|
@@ -44309,7 +44236,7 @@ function createProgram() {
|
|
|
44309
44236
|
.option("--install", "Install Nix package manager")
|
|
44310
44237
|
.option("--shell", "Run Nix shell")
|
|
44311
44238
|
.action(async (options) => {
|
|
44312
|
-
await (0,
|
|
44239
|
+
await (0,_commands_nix_js__WEBPACK_IMPORTED_MODULE_5__/* .nixCommand */ .Dv)(options);
|
|
44313
44240
|
});
|
|
44314
44241
|
// OpenCode command - launch OpenCode in Docker
|
|
44315
44242
|
program
|
|
@@ -44317,10 +44244,7 @@ function createProgram() {
|
|
|
44317
44244
|
.description("Launch OpenCode in Docker")
|
|
44318
44245
|
.option("-p, --prompt <prompt>", "Prompt to pass to OpenCode")
|
|
44319
44246
|
.action(async (options) => {
|
|
44320
|
-
|
|
44321
|
-
const claudeOauthToken = process.env.CLAUDE_CODE_OAUTH_TOKEN || "";
|
|
44322
|
-
const args = (0,_utils_dockerArgs_js__WEBPACK_IMPORTED_MODULE_9__/* .buildDockerOpencodeCommand */ .Xs)(token, options.prompt, claudeOauthToken);
|
|
44323
|
-
(0,node_child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync)("docker", args, { stdio: "inherit" });
|
|
44247
|
+
await (0,_utils_launcher_js__WEBPACK_IMPORTED_MODULE_8__/* .launchOpencode */ .Tg)(options.prompt);
|
|
44324
44248
|
});
|
|
44325
44249
|
// Claude command - launch Claude Code in Docker
|
|
44326
44250
|
program
|
|
@@ -44328,10 +44252,7 @@ function createProgram() {
|
|
|
44328
44252
|
.description("Launch Claude Code in Docker")
|
|
44329
44253
|
.option("-p, --prompt <prompt>", "Prompt to pass to Claude Code")
|
|
44330
44254
|
.action(async (options) => {
|
|
44331
|
-
|
|
44332
|
-
const claudeOauthToken = process.env.CLAUDE_CODE_OAUTH_TOKEN || "";
|
|
44333
|
-
const args = (0,_utils_dockerArgs_js__WEBPACK_IMPORTED_MODULE_9__/* .buildDockerClaudeCodeCommand */ .fn)(token, options.prompt, claudeOauthToken);
|
|
44334
|
-
(0,node_child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync)("docker", args, { stdio: "inherit" });
|
|
44255
|
+
await (0,_utils_launcher_js__WEBPACK_IMPORTED_MODULE_8__/* .launchClaude */ .Q7)(options.prompt);
|
|
44335
44256
|
});
|
|
44336
44257
|
return program;
|
|
44337
44258
|
}
|
|
@@ -44344,39 +44265,49 @@ __webpack_async_result__();
|
|
|
44344
44265
|
|
|
44345
44266
|
/***/ }),
|
|
44346
44267
|
|
|
44347
|
-
/***/
|
|
44268
|
+
/***/ 5800:
|
|
44348
44269
|
/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => {
|
|
44349
44270
|
|
|
44350
|
-
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
|
44351
|
-
/* harmony export */ Xs: () => (/* binding */ buildDockerOpencodeCommand),
|
|
44352
|
-
/* harmony export */ ac: () => (/* binding */ buildDockerShellCommand),
|
|
44353
|
-
/* harmony export */ fn: () => (/* binding */ buildDockerClaudeCodeCommand)
|
|
44354
|
-
/* harmony export */ });
|
|
44355
|
-
/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3024);
|
|
44356
|
-
/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);
|
|
44357
|
-
/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(6878);
|
|
44358
|
-
/* harmony import */ var _skills_js__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(6400);
|
|
44359
44271
|
|
|
44272
|
+
// EXPORTS
|
|
44273
|
+
__nccwpck_require__.d(__webpack_exports__, {
|
|
44274
|
+
Q7: () => (/* binding */ launchClaude),
|
|
44275
|
+
Tg: () => (/* binding */ launchOpencode),
|
|
44276
|
+
k1: () => (/* binding */ launchShell)
|
|
44277
|
+
});
|
|
44278
|
+
|
|
44279
|
+
// EXTERNAL MODULE: ./node_modules/.pnpm/execa@9.6.1/node_modules/execa/index.js + 136 modules
|
|
44280
|
+
var execa = __nccwpck_require__(6181);
|
|
44281
|
+
// EXTERNAL MODULE: ./src/config.ts
|
|
44282
|
+
var config = __nccwpck_require__(6878);
|
|
44283
|
+
// EXTERNAL MODULE: ./src/utils/skills.ts
|
|
44284
|
+
var skills = __nccwpck_require__(6400);
|
|
44285
|
+
;// CONCATENATED MODULE: ./src/utils/dockerArgs.ts
|
|
44360
44286
|
|
|
44361
44287
|
|
|
44362
44288
|
function buildDockerShellCommand(githubToken, claudeOauthToken) {
|
|
44289
|
+
(0,skills/* syncClaudeMd */.RK)();
|
|
44363
44290
|
const args = [
|
|
44364
44291
|
"run",
|
|
44365
44292
|
"--rm",
|
|
44366
44293
|
"-it",
|
|
44367
44294
|
"-v",
|
|
44368
|
-
`${process.cwd()}:${
|
|
44295
|
+
`${process.cwd()}:${config/* DOCKER_CONFIG */.e6.workspaceMount}`,
|
|
44296
|
+
"-v",
|
|
44297
|
+
`${(0,skills/* getSkillsDir */.YJ)()}:${config/* DOCKER_CONFIG */.e6.skillsMount}`,
|
|
44369
44298
|
"-v",
|
|
44370
|
-
`${(0,
|
|
44299
|
+
`${(0,skills/* getSkillsDir */.YJ)()}:${config/* DOCKER_CONFIG */.e6.claudeSkillsMount}`,
|
|
44371
44300
|
"-v",
|
|
44372
|
-
`${(0,
|
|
44301
|
+
`${(0,skills/* getClaudeMdPath */.pF)()}:${config/* DOCKER_CONFIG */.e6.claudeConfigMount}/CLAUDE.md`,
|
|
44302
|
+
"-v",
|
|
44303
|
+
`${(0,skills/* getOpenCodeConfigPath */.Jn)()}:${config/* DOCKER_CONFIG */.e6.opencodeConfigMount}`,
|
|
44373
44304
|
"-e",
|
|
44374
44305
|
`GITHUB_TOKEN=${githubToken}`,
|
|
44375
44306
|
];
|
|
44376
44307
|
if (claudeOauthToken) {
|
|
44377
44308
|
args.push("-e", `CLAUDE_CODE_OAUTH_TOKEN=${claudeOauthToken}`);
|
|
44378
44309
|
}
|
|
44379
|
-
args.push("--entrypoint", "nix-shell",
|
|
44310
|
+
args.push("--entrypoint", "nix-shell", config/* DOCKER_CONFIG */.e6.imageName, config/* DOCKER_CONFIG */.e6.shellEntrypoint);
|
|
44380
44311
|
return args;
|
|
44381
44312
|
}
|
|
44382
44313
|
function buildDockerOpencodeCommand(githubToken, prompt, claudeOauthToken) {
|
|
@@ -44385,18 +44316,18 @@ function buildDockerOpencodeCommand(githubToken, prompt, claudeOauthToken) {
|
|
|
44385
44316
|
"--rm",
|
|
44386
44317
|
"-it",
|
|
44387
44318
|
"-v",
|
|
44388
|
-
`${process.cwd()}:${
|
|
44319
|
+
`${process.cwd()}:${config/* DOCKER_CONFIG */.e6.workspaceMount}`,
|
|
44389
44320
|
"-v",
|
|
44390
|
-
`${(0,
|
|
44321
|
+
`${(0,skills/* getSkillsDir */.YJ)()}:${config/* DOCKER_CONFIG */.e6.skillsMount}`,
|
|
44391
44322
|
"-v",
|
|
44392
|
-
`${(0,
|
|
44323
|
+
`${(0,skills/* getOpenCodeConfigPath */.Jn)()}:${config/* DOCKER_CONFIG */.e6.opencodeConfigMount}`,
|
|
44393
44324
|
"-e",
|
|
44394
44325
|
`GITHUB_TOKEN=${githubToken}`,
|
|
44395
44326
|
];
|
|
44396
44327
|
if (claudeOauthToken) {
|
|
44397
44328
|
args.push("-e", `CLAUDE_CODE_OAUTH_TOKEN=${claudeOauthToken}`);
|
|
44398
44329
|
}
|
|
44399
|
-
args.push("--entrypoint", "bash",
|
|
44330
|
+
args.push("--entrypoint", "bash", config/* DOCKER_CONFIG */.e6.imageName, "-c");
|
|
44400
44331
|
let opencodeCommand = "source /opt/sith/nix/nix-scripts/setup.sh && cd /workspace && opencode -m github-copilot/claude-sonnet-4.6";
|
|
44401
44332
|
if (prompt) {
|
|
44402
44333
|
const escapedPrompt = prompt.replace(/'/g, "'\\''");
|
|
@@ -44406,29 +44337,25 @@ function buildDockerOpencodeCommand(githubToken, prompt, claudeOauthToken) {
|
|
|
44406
44337
|
return args;
|
|
44407
44338
|
}
|
|
44408
44339
|
function buildDockerClaudeCodeCommand(githubToken, prompt, claudeOauthToken) {
|
|
44409
|
-
|
|
44410
|
-
const claudeMdPath = (0,
|
|
44340
|
+
(0,skills/* syncClaudeMd */.RK)();
|
|
44341
|
+
const claudeMdPath = (0,skills/* getClaudeMdPath */.pF)();
|
|
44411
44342
|
const args = [
|
|
44412
44343
|
"run",
|
|
44413
44344
|
"--rm",
|
|
44414
44345
|
"-it",
|
|
44415
44346
|
"-v",
|
|
44416
|
-
`${process.cwd()}:${
|
|
44347
|
+
`${process.cwd()}:${config/* DOCKER_CONFIG */.e6.workspaceMount}`,
|
|
44417
44348
|
"-e",
|
|
44418
44349
|
`GITHUB_TOKEN=${githubToken}`,
|
|
44419
44350
|
];
|
|
44420
44351
|
if (claudeOauthToken) {
|
|
44421
44352
|
args.push("-e", `CLAUDE_CODE_OAUTH_TOKEN=${claudeOauthToken}`);
|
|
44422
44353
|
}
|
|
44423
|
-
// Mount ~/.
|
|
44424
|
-
|
|
44425
|
-
args.push("-v", `${claudeConfigDir}:${_config_js__WEBPACK_IMPORTED_MODULE_1__/* .DOCKER_CONFIG */ .e6.claudeConfigMount}`);
|
|
44426
|
-
}
|
|
44427
|
-
// Skills dir overrides /root/.claude/skills inside the container
|
|
44428
|
-
args.push("-v", `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_2__/* .getSkillsDir */ .YJ)()}:${_config_js__WEBPACK_IMPORTED_MODULE_1__/* .DOCKER_CONFIG */ .e6.claudeSkillsMount}`);
|
|
44354
|
+
// Mount only ~/.sith/ contents — never expose ~/.claude to the container
|
|
44355
|
+
args.push("-v", `${(0,skills/* getSkillsDir */.YJ)()}:${config/* DOCKER_CONFIG */.e6.claudeSkillsMount}`);
|
|
44429
44356
|
// Generated CLAUDE.md (with skill @imports) overrides any CLAUDE.md from ~/.claude
|
|
44430
|
-
args.push("-v", `${claudeMdPath}:${
|
|
44431
|
-
args.push("--entrypoint", "bash",
|
|
44357
|
+
args.push("-v", `${claudeMdPath}:${config/* DOCKER_CONFIG */.e6.claudeConfigMount}/CLAUDE.md`);
|
|
44358
|
+
args.push("--entrypoint", "bash", config/* DOCKER_CONFIG */.e6.imageName, "-c");
|
|
44432
44359
|
let claudeCommand = "source /opt/sith/nix/nix-scripts/setup.sh && cd /workspace && /root/.npm-global/bin/claude";
|
|
44433
44360
|
if (prompt) {
|
|
44434
44361
|
const escapedPrompt = prompt.replace(/'/g, "'\\''");
|
|
@@ -44438,22 +44365,13 @@ function buildDockerClaudeCodeCommand(githubToken, prompt, claudeOauthToken) {
|
|
|
44438
44365
|
return args;
|
|
44439
44366
|
}
|
|
44440
44367
|
|
|
44441
|
-
|
|
44442
|
-
/***/ }),
|
|
44443
|
-
|
|
44444
|
-
/***/ 1460:
|
|
44445
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => {
|
|
44446
|
-
|
|
44447
|
-
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
|
44448
|
-
/* harmony export */ l: () => (/* binding */ getGitHubToken)
|
|
44449
|
-
/* harmony export */ });
|
|
44450
|
-
/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(6181);
|
|
44368
|
+
;// CONCATENATED MODULE: ./src/utils/githubToken.ts
|
|
44451
44369
|
|
|
44452
44370
|
async function getGitHubToken() {
|
|
44453
44371
|
if (process.env.GITHUB_TOKEN)
|
|
44454
44372
|
return process.env.GITHUB_TOKEN;
|
|
44455
44373
|
try {
|
|
44456
|
-
const { stdout } = await (0,
|
|
44374
|
+
const { stdout } = await (0,execa/* execa */.Ho)("gh", ["auth", "token"]);
|
|
44457
44375
|
return stdout.trim();
|
|
44458
44376
|
}
|
|
44459
44377
|
catch {
|
|
@@ -44461,6 +44379,62 @@ async function getGitHubToken() {
|
|
|
44461
44379
|
}
|
|
44462
44380
|
}
|
|
44463
44381
|
|
|
44382
|
+
;// CONCATENATED MODULE: ./src/utils/launcher.ts
|
|
44383
|
+
|
|
44384
|
+
|
|
44385
|
+
|
|
44386
|
+
|
|
44387
|
+
function getClaudeOauthToken() {
|
|
44388
|
+
return process.env.CLAUDE_CODE_OAUTH_TOKEN || "";
|
|
44389
|
+
}
|
|
44390
|
+
async function launchShell() {
|
|
44391
|
+
console.log("🚀 Starting Docker shell...");
|
|
44392
|
+
console.log(`Mounting current directory to ${config/* DOCKER_CONFIG */.e6.workspaceMount}`);
|
|
44393
|
+
console.log('Press Ctrl+D or type "exit" to leave');
|
|
44394
|
+
console.log();
|
|
44395
|
+
const githubToken = await getGitHubToken();
|
|
44396
|
+
const dockerArgs = buildDockerShellCommand(githubToken, getClaudeOauthToken());
|
|
44397
|
+
await (0,execa/* execa */.Ho)("docker", dockerArgs, { stdio: "inherit", reject: false });
|
|
44398
|
+
console.log();
|
|
44399
|
+
console.log("✅ Exited shell");
|
|
44400
|
+
}
|
|
44401
|
+
async function launchOpencode(prompt) {
|
|
44402
|
+
console.log("🚀 Starting OpenCode...");
|
|
44403
|
+
console.log(`Mounting current directory to ${config/* DOCKER_CONFIG */.e6.workspaceMount}`);
|
|
44404
|
+
if (prompt)
|
|
44405
|
+
console.log(`Prompt: ${prompt}`);
|
|
44406
|
+
console.log();
|
|
44407
|
+
const githubToken = await getGitHubToken();
|
|
44408
|
+
const dockerArgs = buildDockerOpencodeCommand(githubToken, prompt, getClaudeOauthToken());
|
|
44409
|
+
try {
|
|
44410
|
+
await (0,execa/* execa */.Ho)("docker", dockerArgs, { stdio: "inherit" });
|
|
44411
|
+
console.log();
|
|
44412
|
+
console.log("✅ Exited OpenCode");
|
|
44413
|
+
}
|
|
44414
|
+
catch (error) {
|
|
44415
|
+
console.error(`❌ ${error instanceof Error ? error.message : "Failed to start OpenCode"}`);
|
|
44416
|
+
process.exit(1);
|
|
44417
|
+
}
|
|
44418
|
+
}
|
|
44419
|
+
async function launchClaude(prompt) {
|
|
44420
|
+
console.log("🤖 Starting Claude Code...");
|
|
44421
|
+
console.log(`Mounting current directory to ${config/* DOCKER_CONFIG */.e6.workspaceMount}`);
|
|
44422
|
+
if (prompt)
|
|
44423
|
+
console.log(`Prompt: ${prompt}`);
|
|
44424
|
+
console.log();
|
|
44425
|
+
const githubToken = await getGitHubToken();
|
|
44426
|
+
const dockerArgs = buildDockerClaudeCodeCommand(githubToken, prompt, getClaudeOauthToken());
|
|
44427
|
+
try {
|
|
44428
|
+
await (0,execa/* execa */.Ho)("docker", dockerArgs, { stdio: "inherit" });
|
|
44429
|
+
console.log();
|
|
44430
|
+
console.log("✅ Exited Claude Code");
|
|
44431
|
+
}
|
|
44432
|
+
catch (error) {
|
|
44433
|
+
console.error(`❌ ${error instanceof Error ? error.message : "Failed to start Claude Code"}`);
|
|
44434
|
+
process.exit(1);
|
|
44435
|
+
}
|
|
44436
|
+
}
|
|
44437
|
+
|
|
44464
44438
|
|
|
44465
44439
|
/***/ }),
|
|
44466
44440
|
|
|
@@ -44506,14 +44480,16 @@ function getMessagePrefix(type) {
|
|
|
44506
44480
|
|
|
44507
44481
|
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
|
44508
44482
|
/* harmony export */ Jn: () => (/* binding */ getOpenCodeConfigPath),
|
|
44509
|
-
/* harmony export */
|
|
44483
|
+
/* harmony export */ RK: () => (/* binding */ syncClaudeMd),
|
|
44510
44484
|
/* harmony export */ YJ: () => (/* binding */ getSkillsDir),
|
|
44511
44485
|
/* harmony export */ j$: () => (/* binding */ isInstalled),
|
|
44486
|
+
/* harmony export */ lJ: () => (/* binding */ setSkillAutoLoad),
|
|
44512
44487
|
/* harmony export */ pF: () => (/* binding */ getClaudeMdPath),
|
|
44513
44488
|
/* harmony export */ rP: () => (/* binding */ installSkill),
|
|
44514
|
-
/* harmony export */ wW: () => (/* binding */ uninstallSkill)
|
|
44489
|
+
/* harmony export */ wW: () => (/* binding */ uninstallSkill),
|
|
44490
|
+
/* harmony export */ z8: () => (/* binding */ getSkillAutoLoad)
|
|
44515
44491
|
/* harmony export */ });
|
|
44516
|
-
/* unused harmony
|
|
44492
|
+
/* unused harmony exports getClaudeConfigDir, findInstructionsFile */
|
|
44517
44493
|
/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3024);
|
|
44518
44494
|
/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);
|
|
44519
44495
|
/* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(8161);
|
|
@@ -44528,8 +44504,9 @@ function getMessagePrefix(type) {
|
|
|
44528
44504
|
|
|
44529
44505
|
|
|
44530
44506
|
const OPENCODE_SCHEMA = "https://opencode.ai/config.json";
|
|
44507
|
+
const DEFAULT_MODEL = "github-copilot/claude-sonnet-4.6";
|
|
44531
44508
|
function defaultConfig() {
|
|
44532
|
-
return { $schema: OPENCODE_SCHEMA, instructions: [] };
|
|
44509
|
+
return { $schema: OPENCODE_SCHEMA, model: DEFAULT_MODEL, instructions: [] };
|
|
44533
44510
|
}
|
|
44534
44511
|
function getSkillsDir() {
|
|
44535
44512
|
const dir = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(node_os__WEBPACK_IMPORTED_MODULE_1___default().homedir(), ".sith", "skills");
|
|
@@ -44537,25 +44514,38 @@ function getSkillsDir() {
|
|
|
44537
44514
|
return dir;
|
|
44538
44515
|
}
|
|
44539
44516
|
function getClaudeConfigDir() {
|
|
44540
|
-
return
|
|
44517
|
+
return path.join(os.homedir(), ".claude");
|
|
44541
44518
|
}
|
|
44542
44519
|
function getClaudeMdPath() {
|
|
44543
44520
|
const claudeMdPath = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(node_os__WEBPACK_IMPORTED_MODULE_1___default().homedir(), ".sith", "CLAUDE.md");
|
|
44544
|
-
|
|
44545
|
-
|
|
44546
|
-
node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(claudeMdPath, "");
|
|
44521
|
+
node_fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().dirname(claudeMdPath), { recursive: true });
|
|
44522
|
+
try {
|
|
44523
|
+
node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(claudeMdPath, "", { flag: "ax" });
|
|
44524
|
+
}
|
|
44525
|
+
catch {
|
|
44526
|
+
// already exists
|
|
44547
44527
|
}
|
|
44548
44528
|
return claudeMdPath;
|
|
44549
44529
|
}
|
|
44550
44530
|
function getOpenCodeConfigPath() {
|
|
44551
44531
|
const configPath = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(node_os__WEBPACK_IMPORTED_MODULE_1___default().homedir(), ".sith", "opencode.json");
|
|
44552
44532
|
// Docker bind-mount creates a directory if the source doesn't exist; ensure it's a file.
|
|
44553
|
-
|
|
44554
|
-
node_fs__WEBPACK_IMPORTED_MODULE_0___default().
|
|
44533
|
+
try {
|
|
44534
|
+
if (node_fs__WEBPACK_IMPORTED_MODULE_0___default().statSync(configPath).isDirectory()) {
|
|
44535
|
+
node_fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(configPath, { recursive: true, force: true });
|
|
44536
|
+
}
|
|
44555
44537
|
}
|
|
44556
|
-
|
|
44557
|
-
|
|
44558
|
-
|
|
44538
|
+
catch {
|
|
44539
|
+
// doesn't exist yet
|
|
44540
|
+
}
|
|
44541
|
+
node_fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().dirname(configPath), { recursive: true });
|
|
44542
|
+
try {
|
|
44543
|
+
node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(configPath, JSON.stringify(defaultConfig(), null, 2), {
|
|
44544
|
+
flag: "ax",
|
|
44545
|
+
});
|
|
44546
|
+
}
|
|
44547
|
+
catch {
|
|
44548
|
+
// already exists
|
|
44559
44549
|
}
|
|
44560
44550
|
return configPath;
|
|
44561
44551
|
}
|
|
@@ -44563,6 +44553,10 @@ function readConfig() {
|
|
|
44563
44553
|
const parsed = JSON.parse(node_fs__WEBPACK_IMPORTED_MODULE_0___default().readFileSync(getOpenCodeConfigPath(), "utf8"));
|
|
44564
44554
|
if (!Array.isArray(parsed.instructions))
|
|
44565
44555
|
parsed.instructions = [];
|
|
44556
|
+
if (!parsed.model) {
|
|
44557
|
+
parsed.model = DEFAULT_MODEL;
|
|
44558
|
+
writeConfig(parsed);
|
|
44559
|
+
}
|
|
44566
44560
|
return parsed;
|
|
44567
44561
|
}
|
|
44568
44562
|
function writeConfig(config) {
|
|
@@ -44576,8 +44570,21 @@ function addInstruction(containerPath) {
|
|
|
44576
44570
|
}
|
|
44577
44571
|
}
|
|
44578
44572
|
function syncClaudeMd() {
|
|
44579
|
-
const
|
|
44580
|
-
const lines =
|
|
44573
|
+
const skillsDir = getSkillsDir();
|
|
44574
|
+
const lines = [];
|
|
44575
|
+
for (const name of node_fs__WEBPACK_IMPORTED_MODULE_0___default().readdirSync(skillsDir)) {
|
|
44576
|
+
const skillDir = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(skillsDir, name);
|
|
44577
|
+
const skillJsonPath = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(skillDir, "skill.json");
|
|
44578
|
+
if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(skillJsonPath))
|
|
44579
|
+
continue;
|
|
44580
|
+
const meta = JSON.parse(node_fs__WEBPACK_IMPORTED_MODULE_0___default().readFileSync(skillJsonPath, "utf8"));
|
|
44581
|
+
if (meta.autoLoad !== true)
|
|
44582
|
+
continue;
|
|
44583
|
+
const instructionsFile = findInstructionsFile(skillDir);
|
|
44584
|
+
if (instructionsFile) {
|
|
44585
|
+
lines.push(`@${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.claudeSkillsMount}/${name}/${instructionsFile}`);
|
|
44586
|
+
}
|
|
44587
|
+
}
|
|
44581
44588
|
node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(getClaudeMdPath(), lines.join("\n") + (lines.length ? "\n" : ""));
|
|
44582
44589
|
}
|
|
44583
44590
|
function removeInstructionsUnder(skillContainerDir) {
|
|
@@ -44599,13 +44606,45 @@ function findInstructionsFile(skillDir) {
|
|
|
44599
44606
|
function isInstalled(name) {
|
|
44600
44607
|
return node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().join(getSkillsDir(), name, "skill.json"));
|
|
44601
44608
|
}
|
|
44609
|
+
function getSkillAutoLoad(name) {
|
|
44610
|
+
const skillJsonPath = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(getSkillsDir(), name, "skill.json");
|
|
44611
|
+
if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(skillJsonPath))
|
|
44612
|
+
return false;
|
|
44613
|
+
const meta = JSON.parse(node_fs__WEBPACK_IMPORTED_MODULE_0___default().readFileSync(skillJsonPath, "utf8"));
|
|
44614
|
+
return meta.autoLoad === true;
|
|
44615
|
+
}
|
|
44616
|
+
function setSkillAutoLoad(name, autoLoad) {
|
|
44617
|
+
const skillDir = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(getSkillsDir(), name);
|
|
44618
|
+
const skillJsonPath = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(skillDir, "skill.json");
|
|
44619
|
+
if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(skillJsonPath))
|
|
44620
|
+
return;
|
|
44621
|
+
const meta = JSON.parse(node_fs__WEBPACK_IMPORTED_MODULE_0___default().readFileSync(skillJsonPath, "utf8"));
|
|
44622
|
+
meta.autoLoad = autoLoad;
|
|
44623
|
+
node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(skillJsonPath, JSON.stringify(meta, null, 2));
|
|
44624
|
+
if (autoLoad) {
|
|
44625
|
+
const instructionsFile = findInstructionsFile(skillDir);
|
|
44626
|
+
if (instructionsFile) {
|
|
44627
|
+
addInstruction(`${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.skillsMount}/${name}/${instructionsFile}`);
|
|
44628
|
+
}
|
|
44629
|
+
}
|
|
44630
|
+
else {
|
|
44631
|
+
removeInstructionsUnder(`${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.skillsMount}/${name}/`);
|
|
44632
|
+
}
|
|
44633
|
+
syncClaudeMd();
|
|
44634
|
+
}
|
|
44602
44635
|
async function installSkill(skill) {
|
|
44603
44636
|
const targetDir = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(getSkillsDir(), skill.name);
|
|
44604
44637
|
if (skill.builtinInstructions) {
|
|
44605
44638
|
node_fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(targetDir, { recursive: true });
|
|
44606
44639
|
node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().join(targetDir, "SKILL.md"), skill.builtinInstructions);
|
|
44607
|
-
node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().join(targetDir, "skill.json"), JSON.stringify({
|
|
44608
|
-
|
|
44640
|
+
node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().join(targetDir, "skill.json"), JSON.stringify({
|
|
44641
|
+
name: skill.name,
|
|
44642
|
+
version: "builtin",
|
|
44643
|
+
autoLoad: skill.autoLoad ?? false,
|
|
44644
|
+
}, null, 2));
|
|
44645
|
+
if (skill.autoLoad === true) {
|
|
44646
|
+
addInstruction(`${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.skillsMount}/${skill.name}/SKILL.md`);
|
|
44647
|
+
}
|
|
44609
44648
|
syncClaudeMd();
|
|
44610
44649
|
return;
|
|
44611
44650
|
}
|
|
@@ -44625,11 +44664,18 @@ async function installSkill(skill) {
|
|
|
44625
44664
|
node_fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(targetDir, { recursive: true, force: true });
|
|
44626
44665
|
node_fs__WEBPACK_IMPORTED_MODULE_0___default().cpSync(extracted, targetDir, { recursive: true });
|
|
44627
44666
|
const skillJson = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(targetDir, "skill.json");
|
|
44628
|
-
|
|
44629
|
-
node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(skillJson, JSON.stringify({
|
|
44667
|
+
try {
|
|
44668
|
+
node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(skillJson, JSON.stringify({
|
|
44669
|
+
name: skill.name,
|
|
44670
|
+
version: "local",
|
|
44671
|
+
autoLoad: skill.autoLoad ?? false,
|
|
44672
|
+
}, null, 2), { flag: "ax" });
|
|
44673
|
+
}
|
|
44674
|
+
catch {
|
|
44675
|
+
// already exists (skill.json bundled in archive)
|
|
44630
44676
|
}
|
|
44631
44677
|
const instructionsFile = findInstructionsFile(targetDir);
|
|
44632
|
-
if (instructionsFile) {
|
|
44678
|
+
if (instructionsFile && skill.autoLoad === true) {
|
|
44633
44679
|
addInstruction(`${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.skillsMount}/${skill.name}/${instructionsFile}`);
|
|
44634
44680
|
}
|
|
44635
44681
|
syncClaudeMd();
|
package/dist/types.d.ts
CHANGED
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,oBAAoB;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,oBAAoB;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dockerArgs.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/utils/dockerArgs.ts"],"names":[],"mappings":"AASA,wBAAgB,uBAAuB,CACtC,WAAW,EAAE,MAAM,EACnB,gBAAgB,CAAC,EAAE,MAAM,GACvB,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"dockerArgs.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/utils/dockerArgs.ts"],"names":[],"mappings":"AASA,wBAAgB,uBAAuB,CACtC,WAAW,EAAE,MAAM,EACnB,gBAAgB,CAAC,EAAE,MAAM,GACvB,MAAM,EAAE,CA6BV;AAED,wBAAgB,0BAA0B,CACzC,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,MAAM,GACvB,MAAM,EAAE,CA6BV;AAED,wBAAgB,4BAA4B,CAC3C,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,MAAM,GACvB,MAAM,EAAE,CAqCV"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launcher.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/utils/launcher.ts"],"names":[],"mappings":"AAaA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBjD;AAED,wBAAsB,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBnE;AAED,wBAAsB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBjE"}
|
package/dist/utils/skills.d.ts
CHANGED
|
@@ -3,8 +3,11 @@ export declare function getSkillsDir(): string;
|
|
|
3
3
|
export declare function getClaudeConfigDir(): string;
|
|
4
4
|
export declare function getClaudeMdPath(): string;
|
|
5
5
|
export declare function getOpenCodeConfigPath(): string;
|
|
6
|
+
export declare function syncClaudeMd(): void;
|
|
6
7
|
export declare function findInstructionsFile(skillDir: string): string | null;
|
|
7
8
|
export declare function isInstalled(name: string): boolean;
|
|
9
|
+
export declare function getSkillAutoLoad(name: string): boolean;
|
|
10
|
+
export declare function setSkillAutoLoad(name: string, autoLoad: boolean): void;
|
|
8
11
|
export declare function installSkill(skill: SkillEntry): Promise<void>;
|
|
9
12
|
export declare function uninstallSkill(name: string): void;
|
|
10
13
|
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/utils/skills.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/utils/skills.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAe9C,wBAAgB,YAAY,IAAI,MAAM,CAIrC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,eAAe,IAAI,MAAM,CASxC;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAmB9C;AAwBD,wBAAgB,YAAY,IAAI,IAAI,CAoBnC;AAUD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYpE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKtD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAkBtE;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA6EnE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAOjD"}
|
|
@@ -1,25 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Respond terse like smart caveman. All technical substance stay. Only fluff die.
|
|
4
|
-
|
|
5
|
-
## Persistence
|
|
6
|
-
|
|
7
|
-
ACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure. Off only: "stop caveman" / "normal mode".
|
|
8
|
-
|
|
9
|
-
## Rules
|
|
10
|
-
|
|
11
|
-
Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not "implement a solution for"). Technical terms exact. Code blocks unchanged. Errors quoted exact.
|
|
12
|
-
|
|
13
|
-
Pattern: `[thing] [action] [reason]. [next step].`
|
|
14
|
-
|
|
15
|
-
## Ultra level
|
|
16
|
-
|
|
17
|
-
Abbreviate (DB/auth/config/req/res/fn/impl), strip conjunctions, arrows for causality (X → Y), one word when one word enough.
|
|
18
|
-
|
|
19
|
-
## Auto-Clarity
|
|
20
|
-
|
|
21
|
-
Drop caveman for: security warnings, irreversible action confirmations, multi-step sequences where fragment order risks misread. Resume caveman after clear part done.
|
|
22
|
-
|
|
23
|
-
## Boundaries
|
|
24
|
-
|
|
25
|
-
Code/commits/PRs: write normal. "stop caveman" or "normal mode": revert.
|
|
1
|
+
@/root/.claude/skills/caveman/SKILL.md
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@m14i/sith",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.22.0",
|
|
4
4
|
"description": "Turn your context to the dark side. Standardize and share your OpenCode setup with a fully dockerized environment, designed for seamless collaboration and CI integration.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
"lint": "biome check src/",
|
|
20
20
|
"typecheck": "tsc --noEmit",
|
|
21
21
|
"clean": "rm -rf dist",
|
|
22
|
-
"prepublishOnly": "pnpm build"
|
|
22
|
+
"prepublishOnly": "pnpm build",
|
|
23
|
+
"prepare": "husky"
|
|
23
24
|
},
|
|
24
25
|
"files": [
|
|
25
26
|
"dist",
|
|
@@ -57,6 +58,8 @@
|
|
|
57
58
|
"@types/update-notifier": "^6.0.8",
|
|
58
59
|
"@vercel/ncc": "^0.38.1",
|
|
59
60
|
"@vitest/coverage-v8": "^4.1.7",
|
|
61
|
+
"husky": "^9.1.7",
|
|
62
|
+
"lint-staged": "^17.0.7",
|
|
60
63
|
"semantic-release": "^24.2.0",
|
|
61
64
|
"tsx": "^4.7.2",
|
|
62
65
|
"typescript": "^5.4.5",
|
|
@@ -65,6 +68,11 @@
|
|
|
65
68
|
"engines": {
|
|
66
69
|
"node": ">=18"
|
|
67
70
|
},
|
|
71
|
+
"lint-staged": {
|
|
72
|
+
"src/**/*.{ts,tsx}": [
|
|
73
|
+
"biome check --write --unsafe"
|
|
74
|
+
]
|
|
75
|
+
},
|
|
68
76
|
"pnpm": {
|
|
69
77
|
"overrides": {
|
|
70
78
|
"esbuild": ">=0.28.1"
|