@m14i/sith 1.21.1 → 1.23.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/README.md +103 -179
- package/dist/commands/docker.d.ts +0 -1
- package/dist/commands/docker.d.ts.map +1 -1
- package/dist/commands/maintenance.d.ts +5 -0
- package/dist/commands/maintenance.d.ts.map +1 -0
- package/dist/components/TerminalUI.d.ts.map +1 -1
- package/dist/index.js +305 -408
- package/dist/utils/launcher.d.ts +4 -0
- package/dist/utils/launcher.d.ts.map +1 -0
- package/package.json +10 -2
package/dist/index.js
CHANGED
|
@@ -42961,13 +42961,11 @@ which.sync = whichSync
|
|
|
42961
42961
|
|
|
42962
42962
|
/***/ }),
|
|
42963
42963
|
|
|
42964
|
-
/***/
|
|
42965
|
-
/***/ ((
|
|
42964
|
+
/***/ 3361:
|
|
42965
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => {
|
|
42966
42966
|
|
|
42967
|
-
__nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
42968
42967
|
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
|
42969
|
-
/* harmony export */ Q: () => (/* binding */ dockerCommand)
|
|
42970
|
-
/* harmony export */ l: () => (/* binding */ runShellDirect)
|
|
42968
|
+
/* harmony export */ Q: () => (/* binding */ dockerCommand)
|
|
42971
42969
|
/* harmony export */ });
|
|
42972
42970
|
/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3024);
|
|
42973
42971
|
/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);
|
|
@@ -42975,23 +42973,8 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we
|
|
|
42975
42973
|
/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nccwpck_require__.n(node_path__WEBPACK_IMPORTED_MODULE_1__);
|
|
42976
42974
|
/* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(3136);
|
|
42977
42975
|
/* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(node_url__WEBPACK_IMPORTED_MODULE_2__);
|
|
42978
|
-
/* harmony import */ var
|
|
42979
|
-
/* harmony import */ var
|
|
42980
|
-
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(2864);
|
|
42981
|
-
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__nccwpck_require__.n(react__WEBPACK_IMPORTED_MODULE_4__);
|
|
42982
|
-
/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(6878);
|
|
42983
|
-
/* harmony import */ var _utils_dockerArgs_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(4495);
|
|
42984
|
-
/* harmony import */ var _utils_skills_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(6400);
|
|
42985
|
-
/* harmony import */ var _nix_js__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(9922);
|
|
42986
|
-
/* harmony import */ var _skills_js__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(9805);
|
|
42987
|
-
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([ink__WEBPACK_IMPORTED_MODULE_3__, _skills_js__WEBPACK_IMPORTED_MODULE_9__]);
|
|
42988
|
-
([ink__WEBPACK_IMPORTED_MODULE_3__, _skills_js__WEBPACK_IMPORTED_MODULE_9__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
|
|
42989
|
-
|
|
42990
|
-
|
|
42991
|
-
|
|
42992
|
-
|
|
42993
|
-
|
|
42994
|
-
|
|
42976
|
+
/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(6181);
|
|
42977
|
+
/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(6878);
|
|
42995
42978
|
|
|
42996
42979
|
|
|
42997
42980
|
|
|
@@ -43003,217 +42986,15 @@ function findProjectRoot(startDir) {
|
|
|
43003
42986
|
let currentDir = startDir;
|
|
43004
42987
|
const rootPath = node_path__WEBPACK_IMPORTED_MODULE_1___default().parse(currentDir).root;
|
|
43005
42988
|
while (currentDir !== rootPath) {
|
|
43006
|
-
const dockerPath = node_path__WEBPACK_IMPORTED_MODULE_1___default().join(currentDir,
|
|
42989
|
+
const dockerPath = node_path__WEBPACK_IMPORTED_MODULE_1___default().join(currentDir, _config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.folderName);
|
|
43007
42990
|
if (node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(dockerPath) && node_fs__WEBPACK_IMPORTED_MODULE_0___default().statSync(dockerPath).isDirectory()) {
|
|
43008
42991
|
return currentDir;
|
|
43009
42992
|
}
|
|
43010
42993
|
currentDir = node_path__WEBPACK_IMPORTED_MODULE_1___default().dirname(currentDir);
|
|
43011
42994
|
}
|
|
43012
|
-
throw new Error(`Could not find project root (${
|
|
42995
|
+
throw new Error(`Could not find project root (${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.folderName}/ folder not found)`);
|
|
43013
42996
|
}
|
|
43014
42997
|
const rootDir = findProjectRoot(__dirname);
|
|
43015
|
-
const menuItems = [
|
|
43016
|
-
{ label: "Enter Shell", value: "shell", icon: "🚀" },
|
|
43017
|
-
{ label: "Manage Skills", value: "skills", icon: "🧠" },
|
|
43018
|
-
{ label: "Configuration", value: "config", icon: "⚙️" },
|
|
43019
|
-
];
|
|
43020
|
-
const configMenuItems = [
|
|
43021
|
-
{ label: "Pull prebuilt image (recommended)", value: "pull", icon: "📦" },
|
|
43022
|
-
{ label: "Build Docker image from scratch", value: "build", icon: "🔨" },
|
|
43023
|
-
{ label: "Install Nix locally (no Docker)", value: "nix", icon: "❄️" },
|
|
43024
|
-
{ label: "Back", value: "back", icon: "◀️" },
|
|
43025
|
-
];
|
|
43026
|
-
function Logo() {
|
|
43027
|
-
return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column", marginBottom: 1 },
|
|
43028
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column" }, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .ASCII_LOGO */ .mF.map((line, index) => (
|
|
43029
|
-
// biome-ignore lint/suspicious/noArrayIndexKey: static array, order never changes
|
|
43030
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { key: index, color: "red", bold: true }, line)))),
|
|
43031
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { borderStyle: "double", borderColor: "red", paddingX: 2, marginTop: 1 },
|
|
43032
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { color: "red", bold: true }, "SITH - Docker Manager"))));
|
|
43033
|
-
}
|
|
43034
|
-
function BuildingSpinner({ step }) {
|
|
43035
|
-
const [frame, setFrame] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)(0);
|
|
43036
|
-
(0,react__WEBPACK_IMPORTED_MODULE_4__.useEffect)(() => {
|
|
43037
|
-
const timer = setInterval(() => {
|
|
43038
|
-
setFrame((prev) => (prev + 1) % _config_js__WEBPACK_IMPORTED_MODULE_5__/* .SPINNER_CONFIG */ .ZC.frames.length);
|
|
43039
|
-
}, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .SPINNER_CONFIG */ .ZC.interval);
|
|
43040
|
-
return () => clearInterval(timer);
|
|
43041
|
-
}, []);
|
|
43042
|
-
return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column", marginTop: 1 },
|
|
43043
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { color: "cyan" },
|
|
43044
|
-
_config_js__WEBPACK_IMPORTED_MODULE_5__/* .SPINNER_CONFIG */ .ZC.frames[frame],
|
|
43045
|
-
" ",
|
|
43046
|
-
step)));
|
|
43047
|
-
}
|
|
43048
|
-
function Menu() {
|
|
43049
|
-
const { exit } = (0,ink__WEBPACK_IMPORTED_MODULE_3__/* .useApp */ .nm)();
|
|
43050
|
-
const [selectedIndex, setSelectedIndex] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)(0);
|
|
43051
|
-
const [isProcessing, setIsProcessing] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)(false);
|
|
43052
|
-
const [processStep, setProcessStep] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)("");
|
|
43053
|
-
const [processComplete, setProcessComplete] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)(false);
|
|
43054
|
-
const [processError, setProcessError] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)(null);
|
|
43055
|
-
const [currentMenu, setCurrentMenu] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)("main");
|
|
43056
|
-
(0,ink__WEBPACK_IMPORTED_MODULE_3__/* .useInput */ .Ge)((_input, key) => {
|
|
43057
|
-
if (isProcessing) {
|
|
43058
|
-
return;
|
|
43059
|
-
}
|
|
43060
|
-
// Exit on any key press when process is complete or errored
|
|
43061
|
-
if (processComplete || processError) {
|
|
43062
|
-
exit();
|
|
43063
|
-
return;
|
|
43064
|
-
}
|
|
43065
|
-
const items = currentMenu === "main" ? menuItems : configMenuItems;
|
|
43066
|
-
if (key.upArrow) {
|
|
43067
|
-
setSelectedIndex((prev) => (prev > 0 ? prev - 1 : items.length - 1));
|
|
43068
|
-
}
|
|
43069
|
-
else if (key.downArrow) {
|
|
43070
|
-
setSelectedIndex((prev) => (prev < items.length - 1 ? prev + 1 : 0));
|
|
43071
|
-
}
|
|
43072
|
-
else if (key.return) {
|
|
43073
|
-
handleSelection(items[selectedIndex].value);
|
|
43074
|
-
}
|
|
43075
|
-
});
|
|
43076
|
-
async function handleSelection(value) {
|
|
43077
|
-
switch (value) {
|
|
43078
|
-
case "shell":
|
|
43079
|
-
exit();
|
|
43080
|
-
await runShell();
|
|
43081
|
-
return;
|
|
43082
|
-
case "skills":
|
|
43083
|
-
exit();
|
|
43084
|
-
(0,_skills_js__WEBPACK_IMPORTED_MODULE_9__/* .skillsCommand */ .a)();
|
|
43085
|
-
return;
|
|
43086
|
-
case "config":
|
|
43087
|
-
setCurrentMenu("config");
|
|
43088
|
-
setSelectedIndex(0);
|
|
43089
|
-
return;
|
|
43090
|
-
case "back":
|
|
43091
|
-
setCurrentMenu("main");
|
|
43092
|
-
setSelectedIndex(0);
|
|
43093
|
-
return;
|
|
43094
|
-
case "pull":
|
|
43095
|
-
await handlePullCommand();
|
|
43096
|
-
break;
|
|
43097
|
-
case "build":
|
|
43098
|
-
await handleBuildCommand();
|
|
43099
|
-
break;
|
|
43100
|
-
case "nix":
|
|
43101
|
-
await handleNixCommand();
|
|
43102
|
-
break;
|
|
43103
|
-
default:
|
|
43104
|
-
break;
|
|
43105
|
-
}
|
|
43106
|
-
}
|
|
43107
|
-
async function handlePullCommand() {
|
|
43108
|
-
setIsProcessing(true);
|
|
43109
|
-
setProcessStep("Pulling prebuilt Docker image...");
|
|
43110
|
-
try {
|
|
43111
|
-
await (0,execa__WEBPACK_IMPORTED_MODULE_10__/* .execa */ .Ho)("docker", ["pull", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.prebuiltImage], {
|
|
43112
|
-
stdio: "inherit",
|
|
43113
|
-
});
|
|
43114
|
-
// Tag the pulled image with local name for compatibility
|
|
43115
|
-
await (0,execa__WEBPACK_IMPORTED_MODULE_10__/* .execa */ .Ho)("docker", ["tag", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.prebuiltImage, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.imageName], {
|
|
43116
|
-
stdio: "inherit",
|
|
43117
|
-
});
|
|
43118
|
-
setIsProcessing(false);
|
|
43119
|
-
setProcessComplete(true);
|
|
43120
|
-
setProcessStep("");
|
|
43121
|
-
}
|
|
43122
|
-
catch (error) {
|
|
43123
|
-
setIsProcessing(false);
|
|
43124
|
-
setProcessError(error instanceof Error ? error.message : "Pull failed");
|
|
43125
|
-
}
|
|
43126
|
-
}
|
|
43127
|
-
async function handleNixCommand() {
|
|
43128
|
-
setIsProcessing(true);
|
|
43129
|
-
setProcessStep("Installing Nix locally...");
|
|
43130
|
-
try {
|
|
43131
|
-
await (0,_nix_js__WEBPACK_IMPORTED_MODULE_8__/* .installNix */ .Fh)();
|
|
43132
|
-
await (0,_nix_js__WEBPACK_IMPORTED_MODULE_8__/* .copyNixFiles */ .Qi)();
|
|
43133
|
-
setIsProcessing(false);
|
|
43134
|
-
setProcessComplete(true);
|
|
43135
|
-
setProcessStep("");
|
|
43136
|
-
}
|
|
43137
|
-
catch (error) {
|
|
43138
|
-
setIsProcessing(false);
|
|
43139
|
-
setProcessError(error instanceof Error ? error.message : "Nix installation failed");
|
|
43140
|
-
}
|
|
43141
|
-
}
|
|
43142
|
-
async function handleBuildCommand() {
|
|
43143
|
-
setIsProcessing(true);
|
|
43144
|
-
setProcessStep("Building Docker image from scratch...");
|
|
43145
|
-
try {
|
|
43146
|
-
const dockerfilePath = node_path__WEBPACK_IMPORTED_MODULE_1___default().join(rootDir, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.folderName, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.dockerfileName);
|
|
43147
|
-
if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(dockerfilePath)) {
|
|
43148
|
-
throw new Error(`Dockerfile not found at: ${dockerfilePath}`);
|
|
43149
|
-
}
|
|
43150
|
-
await (0,execa__WEBPACK_IMPORTED_MODULE_10__/* .execa */ .Ho)("docker", ["build", "-f", dockerfilePath, "-t", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.imageName, rootDir], {
|
|
43151
|
-
stdio: "inherit",
|
|
43152
|
-
});
|
|
43153
|
-
setIsProcessing(false);
|
|
43154
|
-
setProcessComplete(true);
|
|
43155
|
-
setProcessStep("");
|
|
43156
|
-
}
|
|
43157
|
-
catch (error) {
|
|
43158
|
-
setIsProcessing(false);
|
|
43159
|
-
setProcessError(error instanceof Error ? error.message : "Operation failed");
|
|
43160
|
-
}
|
|
43161
|
-
}
|
|
43162
|
-
// Render error state
|
|
43163
|
-
if (processError) {
|
|
43164
|
-
return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column" },
|
|
43165
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(Logo, null),
|
|
43166
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { marginTop: 1 },
|
|
43167
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { color: "red" },
|
|
43168
|
-
"\u274C Operation failed: ",
|
|
43169
|
-
processError)),
|
|
43170
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { marginTop: 1 },
|
|
43171
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { dimColor: true }, "Press any key to exit..."))));
|
|
43172
|
-
}
|
|
43173
|
-
// Render success state
|
|
43174
|
-
if (processComplete) {
|
|
43175
|
-
return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column" },
|
|
43176
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(Logo, null),
|
|
43177
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { marginTop: 1 },
|
|
43178
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { color: "green" }, "\u2705 Docker image ready!")),
|
|
43179
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { marginTop: 1 },
|
|
43180
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { dimColor: true },
|
|
43181
|
-
"Image: ",
|
|
43182
|
-
_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.imageName)),
|
|
43183
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { marginTop: 1 },
|
|
43184
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { dimColor: true }, "Run: sith --it")),
|
|
43185
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { marginTop: 1 },
|
|
43186
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { dimColor: true }, "Press any key to exit..."))));
|
|
43187
|
-
}
|
|
43188
|
-
// Render processing state
|
|
43189
|
-
if (isProcessing) {
|
|
43190
|
-
return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column" },
|
|
43191
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(Logo, null),
|
|
43192
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(BuildingSpinner, { step: processStep }),
|
|
43193
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { marginTop: 1 },
|
|
43194
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { dimColor: true },
|
|
43195
|
-
"Root: ",
|
|
43196
|
-
rootDir))));
|
|
43197
|
-
}
|
|
43198
|
-
// Render menu state
|
|
43199
|
-
const items = currentMenu === "main" ? menuItems : configMenuItems;
|
|
43200
|
-
const menuTitle = currentMenu === "main" ? "What would you like to do?" : "Configuration";
|
|
43201
|
-
return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column" },
|
|
43202
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(Logo, null),
|
|
43203
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column", marginTop: 1 },
|
|
43204
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { bold: true }, menuTitle),
|
|
43205
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column", marginTop: 1 }, items.map((item, index) => {
|
|
43206
|
-
const isSelected = index === selectedIndex;
|
|
43207
|
-
return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { key: item.value, marginY: 0 },
|
|
43208
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { color: isSelected ? "cyan" : undefined },
|
|
43209
|
-
isSelected ? "❯ " : " ",
|
|
43210
|
-
item.icon,
|
|
43211
|
-
" ",
|
|
43212
|
-
item.label)));
|
|
43213
|
-
}))),
|
|
43214
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { marginTop: 1 },
|
|
43215
|
-
react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { dimColor: true }, "Use arrow keys to navigate, Enter to select"))));
|
|
43216
|
-
}
|
|
43217
42998
|
async function dockerCommand(options) {
|
|
43218
42999
|
if (options.build) {
|
|
43219
43000
|
await buildDocker();
|
|
@@ -43223,36 +43004,25 @@ async function dockerCommand(options) {
|
|
|
43223
43004
|
await pullDocker();
|
|
43224
43005
|
return;
|
|
43225
43006
|
}
|
|
43226
|
-
// Check if stdin supports raw mode (interactive terminal)
|
|
43227
|
-
if (!process.stdin.isTTY) {
|
|
43228
|
-
console.error("Error: Interactive mode requires a TTY terminal");
|
|
43229
|
-
console.error("Use --build or --pull flag for non-interactive mode");
|
|
43230
|
-
process.exit(1);
|
|
43231
|
-
}
|
|
43232
|
-
// Render the interactive menu
|
|
43233
|
-
(0,ink__WEBPACK_IMPORTED_MODULE_3__/* .render */ .XX)(react__WEBPACK_IMPORTED_MODULE_4___default().createElement(Menu, null));
|
|
43234
|
-
}
|
|
43235
|
-
async function runShellDirect() {
|
|
43236
|
-
await runShell();
|
|
43237
43007
|
}
|
|
43238
43008
|
async function pullDocker() {
|
|
43239
43009
|
console.log("📦 Pulling prebuilt Docker image...");
|
|
43240
43010
|
console.log();
|
|
43241
43011
|
try {
|
|
43242
|
-
console.log(`Source: ${
|
|
43243
|
-
console.log(`Target: ${
|
|
43012
|
+
console.log(`Source: ${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.prebuiltImage}`);
|
|
43013
|
+
console.log(`Target: ${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.imageName}`);
|
|
43244
43014
|
console.log();
|
|
43245
|
-
await (0,
|
|
43015
|
+
await (0,execa__WEBPACK_IMPORTED_MODULE_4__/* .execa */ .Ho)("docker", ["pull", _config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.prebuiltImage], {
|
|
43246
43016
|
stdio: "inherit",
|
|
43247
43017
|
});
|
|
43248
43018
|
console.log();
|
|
43249
43019
|
console.log("🏷️ Tagging image for local use...");
|
|
43250
|
-
await (0,
|
|
43020
|
+
await (0,execa__WEBPACK_IMPORTED_MODULE_4__/* .execa */ .Ho)("docker", ["tag", _config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.prebuiltImage, _config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.imageName], {
|
|
43251
43021
|
stdio: "inherit",
|
|
43252
43022
|
});
|
|
43253
43023
|
console.log();
|
|
43254
43024
|
console.log("✅ Docker image ready!");
|
|
43255
|
-
console.log(`Image: ${
|
|
43025
|
+
console.log(`Image: ${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.imageName}`);
|
|
43256
43026
|
console.log();
|
|
43257
43027
|
console.log("Run: sith --it");
|
|
43258
43028
|
}
|
|
@@ -43268,19 +43038,19 @@ async function buildDocker() {
|
|
|
43268
43038
|
console.log("🔨 Building Docker image from scratch...");
|
|
43269
43039
|
console.log();
|
|
43270
43040
|
try {
|
|
43271
|
-
const dockerfilePath = node_path__WEBPACK_IMPORTED_MODULE_1___default().join(rootDir,
|
|
43041
|
+
const dockerfilePath = node_path__WEBPACK_IMPORTED_MODULE_1___default().join(rootDir, _config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.folderName, _config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.dockerfileName);
|
|
43272
43042
|
if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(dockerfilePath)) {
|
|
43273
43043
|
throw new Error(`Dockerfile not found at: ${dockerfilePath}`);
|
|
43274
43044
|
}
|
|
43275
43045
|
console.log(`Root: ${rootDir}`);
|
|
43276
43046
|
console.log(`Dockerfile: ${dockerfilePath}`);
|
|
43277
43047
|
console.log();
|
|
43278
|
-
await (0,
|
|
43048
|
+
await (0,execa__WEBPACK_IMPORTED_MODULE_4__/* .execa */ .Ho)("docker", ["build", "-f", dockerfilePath, "-t", _config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.imageName, rootDir], {
|
|
43279
43049
|
stdio: "inherit",
|
|
43280
43050
|
});
|
|
43281
43051
|
console.log();
|
|
43282
43052
|
console.log("✅ Docker image built successfully!");
|
|
43283
|
-
console.log(`Image: ${
|
|
43053
|
+
console.log(`Image: ${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.imageName}`);
|
|
43284
43054
|
console.log();
|
|
43285
43055
|
console.log("Run: sith --it");
|
|
43286
43056
|
}
|
|
@@ -43292,34 +43062,163 @@ async function buildDocker() {
|
|
|
43292
43062
|
process.exit(1);
|
|
43293
43063
|
}
|
|
43294
43064
|
}
|
|
43295
|
-
|
|
43296
|
-
|
|
43297
|
-
|
|
43298
|
-
|
|
43299
|
-
|
|
43300
|
-
|
|
43065
|
+
|
|
43066
|
+
|
|
43067
|
+
/***/ }),
|
|
43068
|
+
|
|
43069
|
+
/***/ 6656:
|
|
43070
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => {
|
|
43071
|
+
|
|
43072
|
+
|
|
43073
|
+
// EXPORTS
|
|
43074
|
+
__nccwpck_require__.d(__webpack_exports__, {
|
|
43075
|
+
Yb: () => (/* binding */ dockerCleanupCommand),
|
|
43076
|
+
V: () => (/* binding */ nixCleanupCommand),
|
|
43077
|
+
be: () => (/* binding */ nixUninstallCommand),
|
|
43078
|
+
Wd: () => (/* binding */ uninstallCommand)
|
|
43079
|
+
});
|
|
43080
|
+
|
|
43081
|
+
// EXTERNAL MODULE: external "node:child_process"
|
|
43082
|
+
var external_node_child_process_ = __nccwpck_require__(1421);
|
|
43083
|
+
// EXTERNAL MODULE: external "node:fs"
|
|
43084
|
+
var external_node_fs_ = __nccwpck_require__(3024);
|
|
43085
|
+
// EXTERNAL MODULE: external "node:os"
|
|
43086
|
+
var external_node_os_ = __nccwpck_require__(8161);
|
|
43087
|
+
// EXTERNAL MODULE: external "node:path"
|
|
43088
|
+
var external_node_path_ = __nccwpck_require__(6760);
|
|
43089
|
+
;// CONCATENATED MODULE: external "node:readline"
|
|
43090
|
+
const external_node_readline_namespaceObject = __WEBPACK_EXTERNAL_createRequire(import.meta.url)("node:readline");
|
|
43091
|
+
// EXTERNAL MODULE: ./node_modules/.pnpm/chalk@5.6.2/node_modules/chalk/source/index.js + 3 modules
|
|
43092
|
+
var source = __nccwpck_require__(9611);
|
|
43093
|
+
// EXTERNAL MODULE: ./src/config.ts
|
|
43094
|
+
var config = __nccwpck_require__(6878);
|
|
43095
|
+
;// CONCATENATED MODULE: ./src/commands/maintenance.ts
|
|
43096
|
+
|
|
43097
|
+
|
|
43098
|
+
|
|
43099
|
+
|
|
43100
|
+
|
|
43101
|
+
|
|
43102
|
+
|
|
43103
|
+
async function maintenance_confirm(question) {
|
|
43104
|
+
const rl = (0,external_node_readline_namespaceObject.createInterface)({ input: process.stdin, output: process.stdout });
|
|
43105
|
+
return new Promise((resolve) => {
|
|
43106
|
+
rl.question(question, (answer) => {
|
|
43107
|
+
rl.close();
|
|
43108
|
+
resolve(answer.toLowerCase() === "y");
|
|
43109
|
+
});
|
|
43110
|
+
});
|
|
43111
|
+
}
|
|
43112
|
+
async function dockerCleanupCommand() {
|
|
43113
|
+
console.log(source/* default */.Ay.cyan("Cleaning up sith Docker images..."));
|
|
43114
|
+
const images = [config/* DOCKER_CONFIG */.e6.imageName, config/* DOCKER_CONFIG */.e6.prebuiltImage];
|
|
43115
|
+
let removed = 0;
|
|
43116
|
+
for (const image of images) {
|
|
43117
|
+
try {
|
|
43118
|
+
(0,external_node_child_process_.execSync)(`docker image inspect ${image} 2>/dev/null`, {
|
|
43119
|
+
stdio: "ignore",
|
|
43120
|
+
});
|
|
43121
|
+
console.log(source/* default */.Ay.dim(` Removing ${image}...`));
|
|
43122
|
+
(0,external_node_child_process_.execSync)(`docker rmi ${image}`, { stdio: "inherit" });
|
|
43123
|
+
removed++;
|
|
43124
|
+
}
|
|
43125
|
+
catch {
|
|
43126
|
+
// image not present
|
|
43127
|
+
}
|
|
43128
|
+
}
|
|
43129
|
+
if (removed === 0) {
|
|
43130
|
+
console.log(source/* default */.Ay.yellow("No sith Docker images found."));
|
|
43131
|
+
}
|
|
43132
|
+
else {
|
|
43133
|
+
console.log(source/* default */.Ay.green(`✓ Removed ${removed} image(s).`));
|
|
43134
|
+
}
|
|
43135
|
+
}
|
|
43136
|
+
async function nixCleanupCommand() {
|
|
43137
|
+
const nixDir = (0,external_node_path_.join)((0,external_node_os_.homedir)(), ".sith", "nix");
|
|
43138
|
+
console.log(source/* default */.Ay.cyan("Cleaning up sith Nix files..."));
|
|
43139
|
+
if ((0,external_node_fs_.existsSync)(nixDir)) {
|
|
43140
|
+
(0,external_node_fs_.rmSync)(nixDir, { recursive: true, force: true });
|
|
43141
|
+
console.log(source/* default */.Ay.green(`✓ Removed ${nixDir}`));
|
|
43142
|
+
}
|
|
43143
|
+
else {
|
|
43144
|
+
console.log(source/* default */.Ay.yellow(`${nixDir} not found — nothing to remove.`));
|
|
43145
|
+
}
|
|
43146
|
+
console.log(source/* default */.Ay.cyan("Running nix-collect-garbage..."));
|
|
43147
|
+
try {
|
|
43148
|
+
(0,external_node_child_process_.execSync)("nix-collect-garbage -d", { stdio: "inherit" });
|
|
43149
|
+
console.log(source/* default */.Ay.green("✓ Nix store garbage collected."));
|
|
43150
|
+
}
|
|
43151
|
+
catch {
|
|
43152
|
+
console.log(source/* default */.Ay.yellow("nix-collect-garbage failed — Nix may not be installed."));
|
|
43153
|
+
}
|
|
43154
|
+
}
|
|
43155
|
+
async function nixUninstallCommand() {
|
|
43156
|
+
console.log(source/* default */.Ay.yellow("This will fully remove Nix from your system:"));
|
|
43157
|
+
console.log(source/* default */.Ay.dim(" /nix/store, Nix daemon, shell profile entries"));
|
|
43301
43158
|
console.log();
|
|
43302
|
-
|
|
43303
|
-
|
|
43304
|
-
|
|
43159
|
+
const ok = await maintenance_confirm(source/* default */.Ay.red("Continue? [y/N] "));
|
|
43160
|
+
if (!ok) {
|
|
43161
|
+
console.log(source/* default */.Ay.dim("Aborted."));
|
|
43162
|
+
return;
|
|
43163
|
+
}
|
|
43164
|
+
const platform = process.platform;
|
|
43165
|
+
if (platform === "darwin") {
|
|
43166
|
+
console.log(source/* default */.Ay.cyan("Uninstalling Nix (macOS multi-user)..."));
|
|
43305
43167
|
try {
|
|
43306
|
-
|
|
43307
|
-
|
|
43168
|
+
// Official macOS uninstall sequence
|
|
43169
|
+
(0,external_node_child_process_.execSync)("sudo launchctl unload /Library/LaunchDaemons/org.nixos.nix-daemon.plist 2>/dev/null || true", { stdio: "inherit" });
|
|
43170
|
+
(0,external_node_child_process_.execSync)("sudo rm -f /Library/LaunchDaemons/org.nixos.nix-daemon.plist", {
|
|
43171
|
+
stdio: "inherit",
|
|
43172
|
+
});
|
|
43173
|
+
(0,external_node_child_process_.execSync)("sudo diskutil apfs deleteVolume /nix 2>/dev/null || sudo rm -rf /nix", { stdio: "inherit" });
|
|
43174
|
+
(0,external_node_child_process_.execSync)("sudo rm -rf /etc/nix /etc/profile.d/nix.sh /etc/bashrc.d/nix.sh", { stdio: "inherit" });
|
|
43175
|
+
console.log(source/* default */.Ay.green("✓ Nix removed. Remove nix lines from ~/.zshrc / ~/.bashrc manually if present."));
|
|
43176
|
+
}
|
|
43177
|
+
catch (_e) {
|
|
43178
|
+
console.log(source/* default */.Ay.red("Uninstall failed. Run with sudo or check errors above."));
|
|
43179
|
+
}
|
|
43180
|
+
}
|
|
43181
|
+
else if (platform === "linux") {
|
|
43182
|
+
console.log(source/* default */.Ay.cyan("Uninstalling Nix (Linux)..."));
|
|
43183
|
+
try {
|
|
43184
|
+
(0,external_node_child_process_.execSync)("sudo systemctl stop nix-daemon 2>/dev/null || true", {
|
|
43185
|
+
stdio: "inherit",
|
|
43186
|
+
});
|
|
43187
|
+
(0,external_node_child_process_.execSync)("sudo systemctl disable nix-daemon 2>/dev/null || true", {
|
|
43188
|
+
stdio: "inherit",
|
|
43189
|
+
});
|
|
43190
|
+
(0,external_node_child_process_.execSync)("sudo rm -rf /nix /etc/nix", { stdio: "inherit" });
|
|
43191
|
+
console.log(source/* default */.Ay.green("✓ Nix removed. Remove nix lines from ~/.profile / ~/.bashrc manually if present."));
|
|
43308
43192
|
}
|
|
43309
43193
|
catch {
|
|
43310
|
-
|
|
43194
|
+
console.log(source/* default */.Ay.red("Uninstall failed. Run with sudo or check errors above."));
|
|
43311
43195
|
}
|
|
43312
43196
|
}
|
|
43313
|
-
|
|
43314
|
-
|
|
43315
|
-
|
|
43316
|
-
|
|
43317
|
-
|
|
43318
|
-
|
|
43197
|
+
else {
|
|
43198
|
+
console.log(source/* default */.Ay.red(`Unsupported platform: ${platform}. Uninstall manually.`));
|
|
43199
|
+
}
|
|
43200
|
+
}
|
|
43201
|
+
async function uninstallCommand() {
|
|
43202
|
+
const sithDir = (0,external_node_path_.join)((0,external_node_os_.homedir)(), ".sith");
|
|
43203
|
+
console.log(source/* default */.Ay.yellow("This will delete:"));
|
|
43204
|
+
console.log(source/* default */.Ay.dim(` ${sithDir} (skills, config, nix files)`));
|
|
43205
|
+
console.log();
|
|
43206
|
+
const ok = await maintenance_confirm(source/* default */.Ay.red("Continue? [y/N] "));
|
|
43207
|
+
if (!ok) {
|
|
43208
|
+
console.log(source/* default */.Ay.dim("Aborted."));
|
|
43209
|
+
return;
|
|
43210
|
+
}
|
|
43211
|
+
if ((0,external_node_fs_.existsSync)(sithDir)) {
|
|
43212
|
+
(0,external_node_fs_.rmSync)(sithDir, { recursive: true, force: true });
|
|
43213
|
+
console.log(source/* default */.Ay.green(`✓ Removed ${sithDir}`));
|
|
43214
|
+
}
|
|
43215
|
+
else {
|
|
43216
|
+
console.log(source/* default */.Ay.yellow(`${sithDir} not found — nothing to remove.`));
|
|
43217
|
+
}
|
|
43218
|
+
console.log();
|
|
43219
|
+
console.log(source/* default */.Ay.dim(`Run ${source/* default */.Ay.bold("npm uninstall -g sith")} to remove the CLI.`));
|
|
43319
43220
|
}
|
|
43320
43221
|
|
|
43321
|
-
__webpack_async_result__();
|
|
43322
|
-
} catch(e) { __webpack_async_result__(e); } });
|
|
43323
43222
|
|
|
43324
43223
|
/***/ }),
|
|
43325
43224
|
|
|
@@ -43328,11 +43227,9 @@ __webpack_async_result__();
|
|
|
43328
43227
|
|
|
43329
43228
|
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
|
43330
43229
|
/* harmony export */ Dv: () => (/* binding */ nixCommand),
|
|
43331
|
-
/* harmony export */ Fh: () => (/* binding */ installNix),
|
|
43332
|
-
/* harmony export */ Qi: () => (/* binding */ copyNixFiles),
|
|
43333
43230
|
/* harmony export */ nb: () => (/* binding */ runNixShell)
|
|
43334
43231
|
/* harmony export */ });
|
|
43335
|
-
/* unused harmony exports parseNixVersionOutput, checkNixInstalled */
|
|
43232
|
+
/* unused harmony exports parseNixVersionOutput, checkNixInstalled, installNix, copyNixFiles */
|
|
43336
43233
|
/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3024);
|
|
43337
43234
|
/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);
|
|
43338
43235
|
/* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(8161);
|
|
@@ -43810,17 +43707,15 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we
|
|
|
43810
43707
|
/* harmony export */ t: () => (/* binding */ renderTerminalUI)
|
|
43811
43708
|
/* harmony export */ });
|
|
43812
43709
|
/* unused harmony export TerminalUI */
|
|
43813
|
-
/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(6181);
|
|
43814
43710
|
/* harmony import */ var ink__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3816);
|
|
43815
43711
|
/* harmony import */ var ink_text_input__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(9046);
|
|
43816
43712
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(2864);
|
|
43817
43713
|
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
|
|
43818
43714
|
/* harmony import */ var _commands_skills_js__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(9805);
|
|
43819
43715
|
/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(6878);
|
|
43820
|
-
/* harmony import */ var
|
|
43821
|
-
/* harmony import */ var _utils_githubToken_js__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(1460);
|
|
43716
|
+
/* harmony import */ var _utils_launcher_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(5800);
|
|
43822
43717
|
/* harmony import */ var _utils_messageUtils_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(5534);
|
|
43823
|
-
/* harmony import */ var
|
|
43718
|
+
/* harmony import */ var _utils_slashCommands_js__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(9987);
|
|
43824
43719
|
/* harmony import */ var _ConfigModal_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(3636);
|
|
43825
43720
|
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__]);
|
|
43826
43721
|
([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__);
|
|
@@ -43833,8 +43728,6 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([ink_
|
|
|
43833
43728
|
|
|
43834
43729
|
|
|
43835
43730
|
|
|
43836
|
-
|
|
43837
|
-
|
|
43838
43731
|
const TOOLS = [
|
|
43839
43732
|
{
|
|
43840
43733
|
value: "opencode",
|
|
@@ -43912,62 +43805,15 @@ function TerminalUI() {
|
|
|
43912
43805
|
}, []);
|
|
43913
43806
|
const handleDockerShell = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(async () => {
|
|
43914
43807
|
exit();
|
|
43915
|
-
|
|
43916
|
-
console.log(`Mounting current directory to ${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.workspaceMount}`);
|
|
43917
|
-
console.log('Press Ctrl+D or type "exit" to leave');
|
|
43918
|
-
console.log();
|
|
43919
|
-
const githubToken = await (0,_utils_githubToken_js__WEBPACK_IMPORTED_MODULE_8__/* .getGitHubToken */ .l)();
|
|
43920
|
-
const claudeOauthToken = process.env.CLAUDE_CODE_OAUTH_TOKEN || "";
|
|
43921
|
-
const dockerArgs = (0,_utils_dockerArgs_js__WEBPACK_IMPORTED_MODULE_5__/* .buildDockerShellCommand */ .ac)(githubToken, claudeOauthToken);
|
|
43922
|
-
await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("docker", dockerArgs, { stdio: "inherit", reject: false });
|
|
43923
|
-
console.log();
|
|
43924
|
-
console.log("✅ Exited shell");
|
|
43808
|
+
await (0,_utils_launcher_js__WEBPACK_IMPORTED_MODULE_5__/* .launchShell */ .k1)();
|
|
43925
43809
|
}, [exit]);
|
|
43926
43810
|
const handleOpenCode = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(async (prompt) => {
|
|
43927
43811
|
exit();
|
|
43928
|
-
|
|
43929
|
-
console.log(`Mounting current directory to ${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.workspaceMount}`);
|
|
43930
|
-
if (prompt) {
|
|
43931
|
-
console.log(`Prompt: ${prompt}`);
|
|
43932
|
-
}
|
|
43933
|
-
console.log();
|
|
43934
|
-
const githubToken = await (0,_utils_githubToken_js__WEBPACK_IMPORTED_MODULE_8__/* .getGitHubToken */ .l)();
|
|
43935
|
-
const claudeOauthToken = process.env.CLAUDE_CODE_OAUTH_TOKEN || "";
|
|
43936
|
-
const dockerArgs = (0,_utils_dockerArgs_js__WEBPACK_IMPORTED_MODULE_5__/* .buildDockerOpencodeCommand */ .Xs)(githubToken, prompt, claudeOauthToken);
|
|
43937
|
-
try {
|
|
43938
|
-
await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("docker", dockerArgs, { stdio: "inherit" });
|
|
43939
|
-
console.log();
|
|
43940
|
-
console.log("✅ Exited OpenCode");
|
|
43941
|
-
}
|
|
43942
|
-
catch (error) {
|
|
43943
|
-
const errorMessage = error instanceof Error ? error.message : "Failed to start OpenCode";
|
|
43944
|
-
console.error(`❌ ${errorMessage}`);
|
|
43945
|
-
process.exit(1);
|
|
43946
|
-
}
|
|
43812
|
+
await (0,_utils_launcher_js__WEBPACK_IMPORTED_MODULE_5__/* .launchOpencode */ .Tg)(prompt);
|
|
43947
43813
|
}, [exit]);
|
|
43948
43814
|
const handleClaudeCode = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(async (prompt) => {
|
|
43949
43815
|
exit();
|
|
43950
|
-
|
|
43951
|
-
console.log(`Mounting current directory to ${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.workspaceMount}`);
|
|
43952
|
-
if (prompt) {
|
|
43953
|
-
console.log(`Prompt: ${prompt}`);
|
|
43954
|
-
}
|
|
43955
|
-
console.log();
|
|
43956
|
-
const githubToken = await (0,_utils_githubToken_js__WEBPACK_IMPORTED_MODULE_8__/* .getGitHubToken */ .l)();
|
|
43957
|
-
const claudeOauthToken = process.env.CLAUDE_CODE_OAUTH_TOKEN || "";
|
|
43958
|
-
const dockerArgs = (0,_utils_dockerArgs_js__WEBPACK_IMPORTED_MODULE_5__/* .buildDockerClaudeCodeCommand */ .fn)(githubToken, prompt, claudeOauthToken);
|
|
43959
|
-
try {
|
|
43960
|
-
await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("docker", dockerArgs, { stdio: "inherit" });
|
|
43961
|
-
console.log();
|
|
43962
|
-
console.log("✅ Exited Claude Code");
|
|
43963
|
-
}
|
|
43964
|
-
catch (error) {
|
|
43965
|
-
const errorMessage = error instanceof Error
|
|
43966
|
-
? error.message
|
|
43967
|
-
: "Failed to start Claude Code";
|
|
43968
|
-
console.error(`❌ ${errorMessage}`);
|
|
43969
|
-
process.exit(1);
|
|
43970
|
-
}
|
|
43816
|
+
await (0,_utils_launcher_js__WEBPACK_IMPORTED_MODULE_5__/* .launchClaude */ .Q7)(prompt);
|
|
43971
43817
|
}, [exit]);
|
|
43972
43818
|
const handleSlashCommand = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(async (command, userInput) => {
|
|
43973
43819
|
if (!command) {
|
|
@@ -43986,7 +43832,7 @@ function TerminalUI() {
|
|
|
43986
43832
|
break;
|
|
43987
43833
|
case "help": {
|
|
43988
43834
|
addMessage("Available commands:", "info");
|
|
43989
|
-
const availableCommands = (0,
|
|
43835
|
+
const availableCommands = (0,_utils_slashCommands_js__WEBPACK_IMPORTED_MODULE_8__/* .getAvailableCommands */ .K)();
|
|
43990
43836
|
for (const cmd of availableCommands) {
|
|
43991
43837
|
addMessage(` ${cmd.command} - ${cmd.description}`, "info");
|
|
43992
43838
|
}
|
|
@@ -44001,14 +43847,14 @@ function TerminalUI() {
|
|
|
44001
43847
|
addMessage("Switched to Claude Code", "success");
|
|
44002
43848
|
break;
|
|
44003
43849
|
}
|
|
44004
|
-
}, [addMessage, handleDockerShell
|
|
43850
|
+
}, [addMessage, handleDockerShell]);
|
|
44005
43851
|
const handleSubmit = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(async (value) => {
|
|
44006
43852
|
const trimmedValue = value.trim();
|
|
44007
43853
|
if (!trimmedValue) {
|
|
44008
43854
|
return;
|
|
44009
43855
|
}
|
|
44010
43856
|
setInput("");
|
|
44011
|
-
const command = (0,
|
|
43857
|
+
const command = (0,_utils_slashCommands_js__WEBPACK_IMPORTED_MODULE_8__/* .parseSlashCommand */ .M)(trimmedValue);
|
|
44012
43858
|
if (command) {
|
|
44013
43859
|
await handleSlashCommand(command, trimmedValue);
|
|
44014
43860
|
}
|
|
@@ -44096,10 +43942,10 @@ __webpack_async_result__();
|
|
|
44096
43942
|
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
|
44097
43943
|
/* harmony export */ XI: () => (/* binding */ SKILLS_CATALOG),
|
|
44098
43944
|
/* harmony export */ Z3: () => (/* binding */ NIX_CONFIG),
|
|
44099
|
-
/* harmony export */ ZC: () => (/* binding */ SPINNER_CONFIG),
|
|
44100
43945
|
/* harmony export */ e6: () => (/* binding */ DOCKER_CONFIG),
|
|
44101
43946
|
/* harmony export */ mF: () => (/* binding */ ASCII_LOGO)
|
|
44102
43947
|
/* harmony export */ });
|
|
43948
|
+
/* unused harmony export SPINNER_CONFIG */
|
|
44103
43949
|
// Predefined skill catalog — skills are installed to ~/.sith/skills/<name>/
|
|
44104
43950
|
const SKILLS_CATALOG = [
|
|
44105
43951
|
{
|
|
@@ -44191,26 +44037,23 @@ const ASCII_LOGO = [
|
|
|
44191
44037
|
/***/ ((module, __unused_webpack___webpack_exports__, __nccwpck_require__) => {
|
|
44192
44038
|
|
|
44193
44039
|
__nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
|
|
44194
|
-
/* harmony import */ var
|
|
44195
|
-
/* harmony import */ var
|
|
44196
|
-
/* harmony import */ var
|
|
44197
|
-
/* harmony import */ var
|
|
44198
|
-
/* harmony import */ var
|
|
44199
|
-
/* harmony import */ var
|
|
44200
|
-
/* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(3136);
|
|
44201
|
-
/* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__nccwpck_require__.n(node_url__WEBPACK_IMPORTED_MODULE_3__);
|
|
44040
|
+
/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3024);
|
|
44041
|
+
/* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);
|
|
44042
|
+
/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(6760);
|
|
44043
|
+
/* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nccwpck_require__.n(node_path__WEBPACK_IMPORTED_MODULE_1__);
|
|
44044
|
+
/* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(3136);
|
|
44045
|
+
/* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(node_url__WEBPACK_IMPORTED_MODULE_2__);
|
|
44202
44046
|
/* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_11__ = __nccwpck_require__(9611);
|
|
44203
|
-
/* harmony import */ var
|
|
44047
|
+
/* harmony import */ var commander__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(2202);
|
|
44204
44048
|
/* harmony import */ var update_notifier__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(6213);
|
|
44205
|
-
/* harmony import */ var
|
|
44049
|
+
/* harmony import */ var _commands_docker_js__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(3361);
|
|
44050
|
+
/* harmony import */ var _commands_maintenance_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(6656);
|
|
44206
44051
|
/* harmony import */ var _commands_nix_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(9922);
|
|
44207
44052
|
/* harmony import */ var _commands_skills_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(9805);
|
|
44208
44053
|
/* harmony import */ var _components_TerminalUI_js__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(3535);
|
|
44209
|
-
/* harmony import */ var
|
|
44210
|
-
|
|
44211
|
-
|
|
44212
|
-
([_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__);
|
|
44213
|
-
|
|
44054
|
+
/* harmony import */ var _utils_launcher_js__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(5800);
|
|
44055
|
+
var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_commands_skills_js__WEBPACK_IMPORTED_MODULE_7__, _components_TerminalUI_js__WEBPACK_IMPORTED_MODULE_8__]);
|
|
44056
|
+
([_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__);
|
|
44214
44057
|
|
|
44215
44058
|
|
|
44216
44059
|
|
|
@@ -44224,9 +44067,9 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_com
|
|
|
44224
44067
|
|
|
44225
44068
|
|
|
44226
44069
|
// Import package.json for version and update checks
|
|
44227
|
-
const __filename = (0,
|
|
44228
|
-
const __dirname = (0,
|
|
44229
|
-
const pkg = JSON.parse((0,
|
|
44070
|
+
const __filename = (0,node_url__WEBPACK_IMPORTED_MODULE_2__.fileURLToPath)(import.meta.url);
|
|
44071
|
+
const __dirname = (0,node_path__WEBPACK_IMPORTED_MODULE_1__.dirname)(__filename);
|
|
44072
|
+
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"));
|
|
44230
44073
|
const PROGRAM_NAME = "sith";
|
|
44231
44074
|
const PROGRAM_VERSION = pkg.version;
|
|
44232
44075
|
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.";
|
|
@@ -44254,7 +44097,7 @@ async function checkForUpdates() {
|
|
|
44254
44097
|
}
|
|
44255
44098
|
}
|
|
44256
44099
|
function createProgram() {
|
|
44257
|
-
const program = new
|
|
44100
|
+
const program = new commander__WEBPACK_IMPORTED_MODULE_3__/* .Command */ .uB();
|
|
44258
44101
|
program
|
|
44259
44102
|
.name(PROGRAM_NAME)
|
|
44260
44103
|
.description(PROGRAM_DESCRIPTION)
|
|
@@ -44265,10 +44108,25 @@ function createProgram() {
|
|
|
44265
44108
|
.option("--nix", "Use native Nix shell (no Docker)")
|
|
44266
44109
|
.option("--nix-install", "Install Nix package manager locally")
|
|
44267
44110
|
.option("--update", "Check for updates")
|
|
44268
|
-
.option("--
|
|
44269
|
-
|
|
44111
|
+
.option("--docker-cleanup", "Remove sith Docker images from local machine")
|
|
44112
|
+
.option("--nix-cleanup", "Remove ~/.sith/nix and run nix-collect-garbage")
|
|
44113
|
+
.option("--nix-uninstall", "Fully remove Nix from the system (daemon, /nix/store)")
|
|
44114
|
+
.option("--uninstall", "Remove ~/.sith config directory");
|
|
44115
|
+
// Default action - show terminal UI
|
|
44270
44116
|
program.action(async (options) => {
|
|
44271
|
-
if (options.
|
|
44117
|
+
if (options.dockerCleanup) {
|
|
44118
|
+
await (0,_commands_maintenance_js__WEBPACK_IMPORTED_MODULE_5__/* .dockerCleanupCommand */ .Yb)();
|
|
44119
|
+
}
|
|
44120
|
+
else if (options.nixCleanup) {
|
|
44121
|
+
await (0,_commands_maintenance_js__WEBPACK_IMPORTED_MODULE_5__/* .nixCleanupCommand */ .V)();
|
|
44122
|
+
}
|
|
44123
|
+
else if (options.nixUninstall) {
|
|
44124
|
+
await (0,_commands_maintenance_js__WEBPACK_IMPORTED_MODULE_5__/* .nixUninstallCommand */ .be)();
|
|
44125
|
+
}
|
|
44126
|
+
else if (options.uninstall) {
|
|
44127
|
+
await (0,_commands_maintenance_js__WEBPACK_IMPORTED_MODULE_5__/* .uninstallCommand */ .Wd)();
|
|
44128
|
+
}
|
|
44129
|
+
else if (options.update) {
|
|
44272
44130
|
await checkForUpdates();
|
|
44273
44131
|
}
|
|
44274
44132
|
else if (options.nix) {
|
|
@@ -44278,32 +44136,22 @@ function createProgram() {
|
|
|
44278
44136
|
await (0,_commands_nix_js__WEBPACK_IMPORTED_MODULE_6__/* .nixCommand */ .Dv)({ install: true });
|
|
44279
44137
|
}
|
|
44280
44138
|
else if (options.it) {
|
|
44281
|
-
await (0,
|
|
44139
|
+
await (0,_utils_launcher_js__WEBPACK_IMPORTED_MODULE_9__/* .launchShell */ .k1)();
|
|
44282
44140
|
}
|
|
44283
|
-
else if (options.
|
|
44284
|
-
|
|
44285
|
-
await (0,_commands_docker_js__WEBPACK_IMPORTED_MODULE_5__/* .dockerCommand */ .Q)(options);
|
|
44141
|
+
else if (options.pull || options.build) {
|
|
44142
|
+
await (0,_commands_docker_js__WEBPACK_IMPORTED_MODULE_4__/* .dockerCommand */ .Q)(options);
|
|
44286
44143
|
}
|
|
44287
44144
|
else {
|
|
44288
44145
|
// Default: show new terminal UI
|
|
44289
44146
|
(0,_components_TerminalUI_js__WEBPACK_IMPORTED_MODULE_8__/* .renderTerminalUI */ .t)();
|
|
44290
44147
|
}
|
|
44291
44148
|
});
|
|
44292
|
-
// Docker command - explicit Docker management
|
|
44293
|
-
program
|
|
44294
|
-
.command("docker")
|
|
44295
|
-
.description("Manage Docker environment")
|
|
44296
|
-
.option("--pull", "Pull prebuilt Docker image (recommended)")
|
|
44297
|
-
.option("--build", "Build the Docker image from scratch")
|
|
44298
|
-
.action(async (options) => {
|
|
44299
|
-
await (0,_commands_docker_js__WEBPACK_IMPORTED_MODULE_5__/* .dockerCommand */ .Q)(options);
|
|
44300
|
-
});
|
|
44301
44149
|
// Shell command - direct interactive shell (bypasses menu)
|
|
44302
44150
|
program
|
|
44303
44151
|
.command("shell")
|
|
44304
44152
|
.description("Run interactive shell in Docker container")
|
|
44305
44153
|
.action(async () => {
|
|
44306
|
-
await (0,
|
|
44154
|
+
await (0,_utils_launcher_js__WEBPACK_IMPORTED_MODULE_9__/* .launchShell */ .k1)();
|
|
44307
44155
|
});
|
|
44308
44156
|
// Skills command - install/uninstall skills from catalog
|
|
44309
44157
|
program
|
|
@@ -44327,10 +44175,7 @@ function createProgram() {
|
|
|
44327
44175
|
.description("Launch OpenCode in Docker")
|
|
44328
44176
|
.option("-p, --prompt <prompt>", "Prompt to pass to OpenCode")
|
|
44329
44177
|
.action(async (options) => {
|
|
44330
|
-
|
|
44331
|
-
const claudeOauthToken = process.env.CLAUDE_CODE_OAUTH_TOKEN || "";
|
|
44332
|
-
const args = (0,_utils_dockerArgs_js__WEBPACK_IMPORTED_MODULE_9__/* .buildDockerOpencodeCommand */ .Xs)(token, options.prompt, claudeOauthToken);
|
|
44333
|
-
(0,node_child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync)("docker", args, { stdio: "inherit" });
|
|
44178
|
+
await (0,_utils_launcher_js__WEBPACK_IMPORTED_MODULE_9__/* .launchOpencode */ .Tg)(options.prompt);
|
|
44334
44179
|
});
|
|
44335
44180
|
// Claude command - launch Claude Code in Docker
|
|
44336
44181
|
program
|
|
@@ -44338,10 +44183,7 @@ function createProgram() {
|
|
|
44338
44183
|
.description("Launch Claude Code in Docker")
|
|
44339
44184
|
.option("-p, --prompt <prompt>", "Prompt to pass to Claude Code")
|
|
44340
44185
|
.action(async (options) => {
|
|
44341
|
-
|
|
44342
|
-
const claudeOauthToken = process.env.CLAUDE_CODE_OAUTH_TOKEN || "";
|
|
44343
|
-
const args = (0,_utils_dockerArgs_js__WEBPACK_IMPORTED_MODULE_9__/* .buildDockerClaudeCodeCommand */ .fn)(token, options.prompt, claudeOauthToken);
|
|
44344
|
-
(0,node_child_process__WEBPACK_IMPORTED_MODULE_0__.spawnSync)("docker", args, { stdio: "inherit" });
|
|
44186
|
+
await (0,_utils_launcher_js__WEBPACK_IMPORTED_MODULE_9__/* .launchClaude */ .Q7)(options.prompt);
|
|
44345
44187
|
});
|
|
44346
44188
|
return program;
|
|
44347
44189
|
}
|
|
@@ -44354,41 +44196,49 @@ __webpack_async_result__();
|
|
|
44354
44196
|
|
|
44355
44197
|
/***/ }),
|
|
44356
44198
|
|
|
44357
|
-
/***/
|
|
44199
|
+
/***/ 5800:
|
|
44358
44200
|
/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => {
|
|
44359
44201
|
|
|
44360
|
-
|
|
44361
|
-
|
|
44362
|
-
|
|
44363
|
-
|
|
44364
|
-
/*
|
|
44365
|
-
|
|
44366
|
-
|
|
44202
|
+
|
|
44203
|
+
// EXPORTS
|
|
44204
|
+
__nccwpck_require__.d(__webpack_exports__, {
|
|
44205
|
+
Q7: () => (/* binding */ launchClaude),
|
|
44206
|
+
Tg: () => (/* binding */ launchOpencode),
|
|
44207
|
+
k1: () => (/* binding */ launchShell)
|
|
44208
|
+
});
|
|
44209
|
+
|
|
44210
|
+
// EXTERNAL MODULE: ./node_modules/.pnpm/execa@9.6.1/node_modules/execa/index.js + 136 modules
|
|
44211
|
+
var execa = __nccwpck_require__(6181);
|
|
44212
|
+
// EXTERNAL MODULE: ./src/config.ts
|
|
44213
|
+
var config = __nccwpck_require__(6878);
|
|
44214
|
+
// EXTERNAL MODULE: ./src/utils/skills.ts
|
|
44215
|
+
var skills = __nccwpck_require__(6400);
|
|
44216
|
+
;// CONCATENATED MODULE: ./src/utils/dockerArgs.ts
|
|
44367
44217
|
|
|
44368
44218
|
|
|
44369
44219
|
function buildDockerShellCommand(githubToken, claudeOauthToken) {
|
|
44370
|
-
(0,
|
|
44220
|
+
(0,skills/* syncClaudeMd */.RK)();
|
|
44371
44221
|
const args = [
|
|
44372
44222
|
"run",
|
|
44373
44223
|
"--rm",
|
|
44374
44224
|
"-it",
|
|
44375
44225
|
"-v",
|
|
44376
|
-
`${process.cwd()}:${
|
|
44226
|
+
`${process.cwd()}:${config/* DOCKER_CONFIG */.e6.workspaceMount}`,
|
|
44377
44227
|
"-v",
|
|
44378
|
-
`${(0,
|
|
44228
|
+
`${(0,skills/* getSkillsDir */.YJ)()}:${config/* DOCKER_CONFIG */.e6.skillsMount}`,
|
|
44379
44229
|
"-v",
|
|
44380
|
-
`${(0,
|
|
44230
|
+
`${(0,skills/* getSkillsDir */.YJ)()}:${config/* DOCKER_CONFIG */.e6.claudeSkillsMount}`,
|
|
44381
44231
|
"-v",
|
|
44382
|
-
`${(0,
|
|
44232
|
+
`${(0,skills/* getClaudeMdPath */.pF)()}:${config/* DOCKER_CONFIG */.e6.claudeConfigMount}/CLAUDE.md`,
|
|
44383
44233
|
"-v",
|
|
44384
|
-
`${(0,
|
|
44234
|
+
`${(0,skills/* getOpenCodeConfigPath */.Jn)()}:${config/* DOCKER_CONFIG */.e6.opencodeConfigMount}`,
|
|
44385
44235
|
"-e",
|
|
44386
44236
|
`GITHUB_TOKEN=${githubToken}`,
|
|
44387
44237
|
];
|
|
44388
44238
|
if (claudeOauthToken) {
|
|
44389
44239
|
args.push("-e", `CLAUDE_CODE_OAUTH_TOKEN=${claudeOauthToken}`);
|
|
44390
44240
|
}
|
|
44391
|
-
args.push("--entrypoint", "nix-shell",
|
|
44241
|
+
args.push("--entrypoint", "nix-shell", config/* DOCKER_CONFIG */.e6.imageName, config/* DOCKER_CONFIG */.e6.shellEntrypoint);
|
|
44392
44242
|
return args;
|
|
44393
44243
|
}
|
|
44394
44244
|
function buildDockerOpencodeCommand(githubToken, prompt, claudeOauthToken) {
|
|
@@ -44397,18 +44247,18 @@ function buildDockerOpencodeCommand(githubToken, prompt, claudeOauthToken) {
|
|
|
44397
44247
|
"--rm",
|
|
44398
44248
|
"-it",
|
|
44399
44249
|
"-v",
|
|
44400
|
-
`${process.cwd()}:${
|
|
44250
|
+
`${process.cwd()}:${config/* DOCKER_CONFIG */.e6.workspaceMount}`,
|
|
44401
44251
|
"-v",
|
|
44402
|
-
`${(0,
|
|
44252
|
+
`${(0,skills/* getSkillsDir */.YJ)()}:${config/* DOCKER_CONFIG */.e6.skillsMount}`,
|
|
44403
44253
|
"-v",
|
|
44404
|
-
`${(0,
|
|
44254
|
+
`${(0,skills/* getOpenCodeConfigPath */.Jn)()}:${config/* DOCKER_CONFIG */.e6.opencodeConfigMount}`,
|
|
44405
44255
|
"-e",
|
|
44406
44256
|
`GITHUB_TOKEN=${githubToken}`,
|
|
44407
44257
|
];
|
|
44408
44258
|
if (claudeOauthToken) {
|
|
44409
44259
|
args.push("-e", `CLAUDE_CODE_OAUTH_TOKEN=${claudeOauthToken}`);
|
|
44410
44260
|
}
|
|
44411
|
-
args.push("--entrypoint", "bash",
|
|
44261
|
+
args.push("--entrypoint", "bash", config/* DOCKER_CONFIG */.e6.imageName, "-c");
|
|
44412
44262
|
let opencodeCommand = "source /opt/sith/nix/nix-scripts/setup.sh && cd /workspace && opencode -m github-copilot/claude-sonnet-4.6";
|
|
44413
44263
|
if (prompt) {
|
|
44414
44264
|
const escapedPrompt = prompt.replace(/'/g, "'\\''");
|
|
@@ -44418,14 +44268,14 @@ function buildDockerOpencodeCommand(githubToken, prompt, claudeOauthToken) {
|
|
|
44418
44268
|
return args;
|
|
44419
44269
|
}
|
|
44420
44270
|
function buildDockerClaudeCodeCommand(githubToken, prompt, claudeOauthToken) {
|
|
44421
|
-
(0,
|
|
44422
|
-
const claudeMdPath = (0,
|
|
44271
|
+
(0,skills/* syncClaudeMd */.RK)();
|
|
44272
|
+
const claudeMdPath = (0,skills/* getClaudeMdPath */.pF)();
|
|
44423
44273
|
const args = [
|
|
44424
44274
|
"run",
|
|
44425
44275
|
"--rm",
|
|
44426
44276
|
"-it",
|
|
44427
44277
|
"-v",
|
|
44428
|
-
`${process.cwd()}:${
|
|
44278
|
+
`${process.cwd()}:${config/* DOCKER_CONFIG */.e6.workspaceMount}`,
|
|
44429
44279
|
"-e",
|
|
44430
44280
|
`GITHUB_TOKEN=${githubToken}`,
|
|
44431
44281
|
];
|
|
@@ -44433,10 +44283,10 @@ function buildDockerClaudeCodeCommand(githubToken, prompt, claudeOauthToken) {
|
|
|
44433
44283
|
args.push("-e", `CLAUDE_CODE_OAUTH_TOKEN=${claudeOauthToken}`);
|
|
44434
44284
|
}
|
|
44435
44285
|
// Mount only ~/.sith/ contents — never expose ~/.claude to the container
|
|
44436
|
-
args.push("-v", `${(0,
|
|
44286
|
+
args.push("-v", `${(0,skills/* getSkillsDir */.YJ)()}:${config/* DOCKER_CONFIG */.e6.claudeSkillsMount}`);
|
|
44437
44287
|
// Generated CLAUDE.md (with skill @imports) overrides any CLAUDE.md from ~/.claude
|
|
44438
|
-
args.push("-v", `${claudeMdPath}:${
|
|
44439
|
-
args.push("--entrypoint", "bash",
|
|
44288
|
+
args.push("-v", `${claudeMdPath}:${config/* DOCKER_CONFIG */.e6.claudeConfigMount}/CLAUDE.md`);
|
|
44289
|
+
args.push("--entrypoint", "bash", config/* DOCKER_CONFIG */.e6.imageName, "-c");
|
|
44440
44290
|
let claudeCommand = "source /opt/sith/nix/nix-scripts/setup.sh && cd /workspace && /root/.npm-global/bin/claude";
|
|
44441
44291
|
if (prompt) {
|
|
44442
44292
|
const escapedPrompt = prompt.replace(/'/g, "'\\''");
|
|
@@ -44446,22 +44296,13 @@ function buildDockerClaudeCodeCommand(githubToken, prompt, claudeOauthToken) {
|
|
|
44446
44296
|
return args;
|
|
44447
44297
|
}
|
|
44448
44298
|
|
|
44449
|
-
|
|
44450
|
-
/***/ }),
|
|
44451
|
-
|
|
44452
|
-
/***/ 1460:
|
|
44453
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => {
|
|
44454
|
-
|
|
44455
|
-
/* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
|
|
44456
|
-
/* harmony export */ l: () => (/* binding */ getGitHubToken)
|
|
44457
|
-
/* harmony export */ });
|
|
44458
|
-
/* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(6181);
|
|
44299
|
+
;// CONCATENATED MODULE: ./src/utils/githubToken.ts
|
|
44459
44300
|
|
|
44460
44301
|
async function getGitHubToken() {
|
|
44461
44302
|
if (process.env.GITHUB_TOKEN)
|
|
44462
44303
|
return process.env.GITHUB_TOKEN;
|
|
44463
44304
|
try {
|
|
44464
|
-
const { stdout } = await (0,
|
|
44305
|
+
const { stdout } = await (0,execa/* execa */.Ho)("gh", ["auth", "token"]);
|
|
44465
44306
|
return stdout.trim();
|
|
44466
44307
|
}
|
|
44467
44308
|
catch {
|
|
@@ -44469,6 +44310,62 @@ async function getGitHubToken() {
|
|
|
44469
44310
|
}
|
|
44470
44311
|
}
|
|
44471
44312
|
|
|
44313
|
+
;// CONCATENATED MODULE: ./src/utils/launcher.ts
|
|
44314
|
+
|
|
44315
|
+
|
|
44316
|
+
|
|
44317
|
+
|
|
44318
|
+
function getClaudeOauthToken() {
|
|
44319
|
+
return process.env.CLAUDE_CODE_OAUTH_TOKEN || "";
|
|
44320
|
+
}
|
|
44321
|
+
async function launchShell() {
|
|
44322
|
+
console.log("🚀 Starting Docker shell...");
|
|
44323
|
+
console.log(`Mounting current directory to ${config/* DOCKER_CONFIG */.e6.workspaceMount}`);
|
|
44324
|
+
console.log('Press Ctrl+D or type "exit" to leave');
|
|
44325
|
+
console.log();
|
|
44326
|
+
const githubToken = await getGitHubToken();
|
|
44327
|
+
const dockerArgs = buildDockerShellCommand(githubToken, getClaudeOauthToken());
|
|
44328
|
+
await (0,execa/* execa */.Ho)("docker", dockerArgs, { stdio: "inherit", reject: false });
|
|
44329
|
+
console.log();
|
|
44330
|
+
console.log("✅ Exited shell");
|
|
44331
|
+
}
|
|
44332
|
+
async function launchOpencode(prompt) {
|
|
44333
|
+
console.log("🚀 Starting OpenCode...");
|
|
44334
|
+
console.log(`Mounting current directory to ${config/* DOCKER_CONFIG */.e6.workspaceMount}`);
|
|
44335
|
+
if (prompt)
|
|
44336
|
+
console.log(`Prompt: ${prompt}`);
|
|
44337
|
+
console.log();
|
|
44338
|
+
const githubToken = await getGitHubToken();
|
|
44339
|
+
const dockerArgs = buildDockerOpencodeCommand(githubToken, prompt, getClaudeOauthToken());
|
|
44340
|
+
try {
|
|
44341
|
+
await (0,execa/* execa */.Ho)("docker", dockerArgs, { stdio: "inherit" });
|
|
44342
|
+
console.log();
|
|
44343
|
+
console.log("✅ Exited OpenCode");
|
|
44344
|
+
}
|
|
44345
|
+
catch (error) {
|
|
44346
|
+
console.error(`❌ ${error instanceof Error ? error.message : "Failed to start OpenCode"}`);
|
|
44347
|
+
process.exit(1);
|
|
44348
|
+
}
|
|
44349
|
+
}
|
|
44350
|
+
async function launchClaude(prompt) {
|
|
44351
|
+
console.log("🤖 Starting Claude Code...");
|
|
44352
|
+
console.log(`Mounting current directory to ${config/* DOCKER_CONFIG */.e6.workspaceMount}`);
|
|
44353
|
+
if (prompt)
|
|
44354
|
+
console.log(`Prompt: ${prompt}`);
|
|
44355
|
+
console.log();
|
|
44356
|
+
const githubToken = await getGitHubToken();
|
|
44357
|
+
const dockerArgs = buildDockerClaudeCodeCommand(githubToken, prompt, getClaudeOauthToken());
|
|
44358
|
+
try {
|
|
44359
|
+
await (0,execa/* execa */.Ho)("docker", dockerArgs, { stdio: "inherit" });
|
|
44360
|
+
console.log();
|
|
44361
|
+
console.log("✅ Exited Claude Code");
|
|
44362
|
+
}
|
|
44363
|
+
catch (error) {
|
|
44364
|
+
console.error(`❌ ${error instanceof Error ? error.message : "Failed to start Claude Code"}`);
|
|
44365
|
+
process.exit(1);
|
|
44366
|
+
}
|
|
44367
|
+
}
|
|
44368
|
+
|
|
44472
44369
|
|
|
44473
44370
|
/***/ }),
|
|
44474
44371
|
|