@m14i/sith 1.16.0 → 1.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/commands/__tests__/nix.test.d.ts +2 -0
  2. package/dist/commands/__tests__/nix.test.d.ts.map +1 -0
  3. package/dist/commands/docker.d.ts.map +1 -1
  4. package/dist/commands/nix.d.ts +1 -0
  5. package/dist/commands/nix.d.ts.map +1 -1
  6. package/dist/commands/skills.d.ts.map +1 -1
  7. package/dist/components/ConfigModal.d.ts +1 -1
  8. package/dist/components/ConfigModal.d.ts.map +1 -1
  9. package/dist/components/TerminalUI.d.ts.map +1 -1
  10. package/dist/index.js +479 -416
  11. package/dist/package.json +1 -1
  12. package/dist/types.d.ts.map +1 -1
  13. package/dist/utils/__tests__/dockerArgs.test.d.ts +2 -0
  14. package/dist/utils/__tests__/dockerArgs.test.d.ts.map +1 -0
  15. package/dist/utils/__tests__/githubToken.test.d.ts +2 -0
  16. package/dist/utils/__tests__/githubToken.test.d.ts.map +1 -0
  17. package/dist/utils/__tests__/messageUtils.test.d.ts +2 -0
  18. package/dist/utils/__tests__/messageUtils.test.d.ts.map +1 -0
  19. package/dist/utils/__tests__/skills.test.d.ts +2 -0
  20. package/dist/utils/__tests__/skills.test.d.ts.map +1 -0
  21. package/dist/utils/__tests__/slashCommands.test.d.ts +2 -0
  22. package/dist/utils/__tests__/slashCommands.test.d.ts.map +1 -0
  23. package/dist/utils/dockerArgs.d.ts +3 -0
  24. package/dist/utils/dockerArgs.d.ts.map +1 -0
  25. package/dist/utils/githubToken.d.ts +2 -0
  26. package/dist/utils/githubToken.d.ts.map +1 -0
  27. package/dist/utils/messageUtils.d.ts +4 -0
  28. package/dist/utils/messageUtils.d.ts.map +1 -0
  29. package/dist/utils/skills.d.ts +1 -0
  30. package/dist/utils/skills.d.ts.map +1 -1
  31. package/dist/utils/slashCommands.d.ts.map +1 -1
  32. package/docker/Dockerfile +4 -9
  33. package/docker/nix/nix-scripts/setup.sh +7 -0
  34. package/package.json +8 -3
  35. package/dist/package1.json +0 -137
package/dist/index.js CHANGED
@@ -42969,22 +42969,22 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we
42969
42969
  /* harmony export */ Q: () => (/* binding */ dockerCommand),
42970
42970
  /* harmony export */ l: () => (/* binding */ runShellDirect)
42971
42971
  /* harmony export */ });
42972
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(2864);
42973
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
42974
- /* harmony import */ var ink__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(3816);
42972
+ /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3024);
42973
+ /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);
42974
+ /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(6760);
42975
+ /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nccwpck_require__.n(node_path__WEBPACK_IMPORTED_MODULE_1__);
42976
+ /* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(3136);
42977
+ /* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(node_url__WEBPACK_IMPORTED_MODULE_2__);
42975
42978
  /* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(6181);
42976
- /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(9896);
42977
- /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(fs__WEBPACK_IMPORTED_MODULE_2__);
42978
- /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(6928);
42979
- /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__nccwpck_require__.n(path__WEBPACK_IMPORTED_MODULE_3__);
42980
- /* harmony import */ var url__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(7016);
42981
- /* harmony import */ var url__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__nccwpck_require__.n(url__WEBPACK_IMPORTED_MODULE_4__);
42979
+ /* harmony import */ var ink__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(3816);
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
42982
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(6878);
42983
- /* harmony import */ var _nix_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(9922);
42984
- /* harmony import */ var _utils_skills_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(6400);
42983
+ /* harmony import */ var _utils_skills_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(6400);
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
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([ink__WEBPACK_IMPORTED_MODULE_1__, _skills_js__WEBPACK_IMPORTED_MODULE_8__]);
42987
- ([ink__WEBPACK_IMPORTED_MODULE_1__, _skills_js__WEBPACK_IMPORTED_MODULE_8__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
42986
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([ink__WEBPACK_IMPORTED_MODULE_3__, _skills_js__WEBPACK_IMPORTED_MODULE_8__]);
42987
+ ([ink__WEBPACK_IMPORTED_MODULE_3__, _skills_js__WEBPACK_IMPORTED_MODULE_8__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
42988
42988
 
42989
42989
 
42990
42990
 
@@ -42995,17 +42995,17 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([ink_
42995
42995
 
42996
42996
 
42997
42997
 
42998
- const __dirname = path__WEBPACK_IMPORTED_MODULE_3___default().dirname((0,url__WEBPACK_IMPORTED_MODULE_4__.fileURLToPath)(import.meta.url));
42998
+ const __dirname = node_path__WEBPACK_IMPORTED_MODULE_1___default().dirname((0,node_url__WEBPACK_IMPORTED_MODULE_2__.fileURLToPath)(import.meta.url));
42999
42999
  // Find project root by looking for docker/ folder
43000
43000
  function findProjectRoot(startDir) {
43001
43001
  let currentDir = startDir;
43002
- const rootPath = path__WEBPACK_IMPORTED_MODULE_3___default().parse(currentDir).root;
43002
+ const rootPath = node_path__WEBPACK_IMPORTED_MODULE_1___default().parse(currentDir).root;
43003
43003
  while (currentDir !== rootPath) {
43004
- const dockerPath = path__WEBPACK_IMPORTED_MODULE_3___default().join(currentDir, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.folderName);
43005
- if (fs__WEBPACK_IMPORTED_MODULE_2___default().existsSync(dockerPath) && fs__WEBPACK_IMPORTED_MODULE_2___default().statSync(dockerPath).isDirectory()) {
43004
+ const dockerPath = node_path__WEBPACK_IMPORTED_MODULE_1___default().join(currentDir, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.folderName);
43005
+ if (node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(dockerPath) && node_fs__WEBPACK_IMPORTED_MODULE_0___default().statSync(dockerPath).isDirectory()) {
43006
43006
  return currentDir;
43007
43007
  }
43008
- currentDir = path__WEBPACK_IMPORTED_MODULE_3___default().dirname(currentDir);
43008
+ currentDir = node_path__WEBPACK_IMPORTED_MODULE_1___default().dirname(currentDir);
43009
43009
  }
43010
43010
  throw new Error(`Could not find project root (${_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.folderName}/ folder not found)`);
43011
43011
  }
@@ -43022,34 +43022,36 @@ const configMenuItems = [
43022
43022
  { label: "Back", value: "back", icon: "◀️" },
43023
43023
  ];
43024
43024
  function Logo() {
43025
- return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column", marginBottom: 1 },
43026
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column" }, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .ASCII_LOGO */ .mF.map((line, index) => (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { key: index, color: "red", bold: true }, line)))),
43027
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { borderStyle: "double", borderColor: "red", paddingX: 2, marginTop: 1 },
43028
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { color: "red", bold: true }, "SITH - Docker Manager"))));
43025
+ return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column", marginBottom: 1 },
43026
+ 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) => (
43027
+ // biome-ignore lint/suspicious/noArrayIndexKey: static array, order never changes
43028
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { key: index, color: "red", bold: true }, line)))),
43029
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { borderStyle: "double", borderColor: "red", paddingX: 2, marginTop: 1 },
43030
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { color: "red", bold: true }, "SITH - Docker Manager"))));
43029
43031
  }
43030
43032
  function BuildingSpinner({ step }) {
43031
- const [frame, setFrame] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);
43032
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
43033
+ const [frame, setFrame] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)(0);
43034
+ (0,react__WEBPACK_IMPORTED_MODULE_4__.useEffect)(() => {
43033
43035
  const timer = setInterval(() => {
43034
43036
  setFrame((prev) => (prev + 1) % _config_js__WEBPACK_IMPORTED_MODULE_5__/* .SPINNER_CONFIG */ .ZC.frames.length);
43035
43037
  }, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .SPINNER_CONFIG */ .ZC.interval);
43036
43038
  return () => clearInterval(timer);
43037
43039
  }, []);
43038
- return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column", marginTop: 1 },
43039
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { color: "cyan" },
43040
+ return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column", marginTop: 1 },
43041
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { color: "cyan" },
43040
43042
  _config_js__WEBPACK_IMPORTED_MODULE_5__/* .SPINNER_CONFIG */ .ZC.frames[frame],
43041
43043
  " ",
43042
43044
  step)));
43043
43045
  }
43044
43046
  function Menu() {
43045
- const { exit } = (0,ink__WEBPACK_IMPORTED_MODULE_1__/* .useApp */ .nm)();
43046
- const [selectedIndex, setSelectedIndex] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);
43047
- const [isProcessing, setIsProcessing] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
43048
- const [processStep, setProcessStep] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)("");
43049
- const [processComplete, setProcessComplete] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
43050
- const [processError, setProcessError] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);
43051
- const [currentMenu, setCurrentMenu] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)("main");
43052
- (0,ink__WEBPACK_IMPORTED_MODULE_1__/* .useInput */ .Ge)((_input, key) => {
43047
+ const { exit } = (0,ink__WEBPACK_IMPORTED_MODULE_3__/* .useApp */ .nm)();
43048
+ const [selectedIndex, setSelectedIndex] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)(0);
43049
+ const [isProcessing, setIsProcessing] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)(false);
43050
+ const [processStep, setProcessStep] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)("");
43051
+ const [processComplete, setProcessComplete] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)(false);
43052
+ const [processError, setProcessError] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)(null);
43053
+ const [currentMenu, setCurrentMenu] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)("main");
43054
+ (0,ink__WEBPACK_IMPORTED_MODULE_3__/* .useInput */ .Ge)((_input, key) => {
43053
43055
  if (isProcessing) {
43054
43056
  return;
43055
43057
  }
@@ -43124,8 +43126,8 @@ function Menu() {
43124
43126
  setIsProcessing(true);
43125
43127
  setProcessStep("Installing Nix locally...");
43126
43128
  try {
43127
- await (0,_nix_js__WEBPACK_IMPORTED_MODULE_6__/* .installNix */ .Fh)();
43128
- await (0,_nix_js__WEBPACK_IMPORTED_MODULE_6__/* .copyNixFiles */ .Qi)();
43129
+ await (0,_nix_js__WEBPACK_IMPORTED_MODULE_7__/* .installNix */ .Fh)();
43130
+ await (0,_nix_js__WEBPACK_IMPORTED_MODULE_7__/* .copyNixFiles */ .Qi)();
43129
43131
  setIsProcessing(false);
43130
43132
  setProcessComplete(true);
43131
43133
  setProcessStep("");
@@ -43139,8 +43141,8 @@ function Menu() {
43139
43141
  setIsProcessing(true);
43140
43142
  setProcessStep("Building Docker image from scratch...");
43141
43143
  try {
43142
- const dockerfilePath = path__WEBPACK_IMPORTED_MODULE_3___default().join(rootDir, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.folderName, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.dockerfileName);
43143
- if (!fs__WEBPACK_IMPORTED_MODULE_2___default().existsSync(dockerfilePath)) {
43144
+ 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);
43145
+ if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(dockerfilePath)) {
43144
43146
  throw new Error(`Dockerfile not found at: ${dockerfilePath}`);
43145
43147
  }
43146
43148
  await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("docker", ["build", "-f", dockerfilePath, "-t", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.imageName, rootDir], {
@@ -43157,58 +43159,58 @@ function Menu() {
43157
43159
  }
43158
43160
  // Render error state
43159
43161
  if (processError) {
43160
- return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column" },
43161
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Logo, null),
43162
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { marginTop: 1 },
43163
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { color: "red" },
43162
+ return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column" },
43163
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(Logo, null),
43164
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { marginTop: 1 },
43165
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { color: "red" },
43164
43166
  "\u274C Operation failed: ",
43165
43167
  processError)),
43166
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { marginTop: 1 },
43167
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, "Press any key to exit..."))));
43168
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { marginTop: 1 },
43169
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { dimColor: true }, "Press any key to exit..."))));
43168
43170
  }
43169
43171
  // Render success state
43170
43172
  if (processComplete) {
43171
- return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column" },
43172
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Logo, null),
43173
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { marginTop: 1 },
43174
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { color: "green" }, "\u2705 Docker image ready!")),
43175
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { marginTop: 1 },
43176
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true },
43173
+ return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column" },
43174
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(Logo, null),
43175
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { marginTop: 1 },
43176
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { color: "green" }, "\u2705 Docker image ready!")),
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, { dimColor: true },
43177
43179
  "Image: ",
43178
43180
  _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.imageName)),
43179
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { marginTop: 1 },
43180
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, "Run: sith --it")),
43181
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { marginTop: 1 },
43182
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, "Press any key to exit..."))));
43181
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { marginTop: 1 },
43182
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { dimColor: true }, "Run: sith --it")),
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 }, "Press any key to exit..."))));
43183
43185
  }
43184
43186
  // Render processing state
43185
43187
  if (isProcessing) {
43186
- return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column" },
43187
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Logo, null),
43188
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(BuildingSpinner, { step: processStep }),
43189
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { marginTop: 1 },
43190
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true },
43188
+ return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column" },
43189
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(Logo, null),
43190
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(BuildingSpinner, { step: processStep }),
43191
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { marginTop: 1 },
43192
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { dimColor: true },
43191
43193
  "Root: ",
43192
43194
  rootDir))));
43193
43195
  }
43194
43196
  // Render menu state
43195
43197
  const items = currentMenu === "main" ? menuItems : configMenuItems;
43196
43198
  const menuTitle = currentMenu === "main" ? "What would you like to do?" : "Configuration";
43197
- return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column" },
43198
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Logo, null),
43199
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column", marginTop: 1 },
43200
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { bold: true }, menuTitle),
43201
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column", marginTop: 1 }, items.map((item, index) => {
43199
+ return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column" },
43200
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(Logo, null),
43201
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column", marginTop: 1 },
43202
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { bold: true }, menuTitle),
43203
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column", marginTop: 1 }, items.map((item, index) => {
43202
43204
  const isSelected = index === selectedIndex;
43203
- return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { key: item.value, marginY: 0 },
43204
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { color: isSelected ? "cyan" : undefined },
43205
+ return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { key: item.value, marginY: 0 },
43206
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { color: isSelected ? "cyan" : undefined },
43205
43207
  isSelected ? "❯ " : " ",
43206
43208
  item.icon,
43207
43209
  " ",
43208
43210
  item.label)));
43209
43211
  }))),
43210
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { marginTop: 1 },
43211
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, "Use arrow keys to navigate, Enter to select"))));
43212
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { marginTop: 1 },
43213
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { dimColor: true }, "Use arrow keys to navigate, Enter to select"))));
43212
43214
  }
43213
43215
  async function dockerCommand(options) {
43214
43216
  if (options.build) {
@@ -43226,7 +43228,7 @@ async function dockerCommand(options) {
43226
43228
  process.exit(1);
43227
43229
  }
43228
43230
  // Render the interactive menu
43229
- (0,ink__WEBPACK_IMPORTED_MODULE_1__/* .render */ .XX)(react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Menu, null));
43231
+ (0,ink__WEBPACK_IMPORTED_MODULE_3__/* .render */ .XX)(react__WEBPACK_IMPORTED_MODULE_4___default().createElement(Menu, null));
43230
43232
  }
43231
43233
  async function runShellDirect() {
43232
43234
  await runShell();
@@ -43264,8 +43266,8 @@ async function buildDocker() {
43264
43266
  console.log("🔨 Building Docker image from scratch...");
43265
43267
  console.log();
43266
43268
  try {
43267
- const dockerfilePath = path__WEBPACK_IMPORTED_MODULE_3___default().join(rootDir, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.folderName, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.dockerfileName);
43268
- if (!fs__WEBPACK_IMPORTED_MODULE_2___default().existsSync(dockerfilePath)) {
43269
+ 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);
43270
+ if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(dockerfilePath)) {
43269
43271
  throw new Error(`Dockerfile not found at: ${dockerfilePath}`);
43270
43272
  }
43271
43273
  console.log(`Root: ${rootDir}`);
@@ -43289,8 +43291,8 @@ async function buildDocker() {
43289
43291
  }
43290
43292
  }
43291
43293
  async function runShell() {
43292
- const skillsDir = (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_7__/* .getSkillsDir */ .YJ)();
43293
- const opencodeConfigPath = (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_7__/* .getOpenCodeConfigPath */ .Jn)();
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)();
43294
43296
  console.log("🚀 Starting interactive shell...");
43295
43297
  console.log(`Mounting workspace to ${_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.workspaceMount}`);
43296
43298
  console.log(`Mounting skills from ${skillsDir} to ${_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.skillsMount}`);
@@ -43352,16 +43354,16 @@ __webpack_async_result__();
43352
43354
  /* harmony export */ Qi: () => (/* binding */ copyNixFiles),
43353
43355
  /* harmony export */ nb: () => (/* binding */ runNixShell)
43354
43356
  /* harmony export */ });
43355
- /* unused harmony export checkNixInstalled */
43357
+ /* unused harmony exports parseNixVersionOutput, checkNixInstalled */
43358
+ /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3024);
43359
+ /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);
43360
+ /* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(8161);
43361
+ /* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nccwpck_require__.n(node_os__WEBPACK_IMPORTED_MODULE_1__);
43362
+ /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(6760);
43363
+ /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(node_path__WEBPACK_IMPORTED_MODULE_2__);
43364
+ /* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(3136);
43365
+ /* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__nccwpck_require__.n(node_url__WEBPACK_IMPORTED_MODULE_3__);
43356
43366
  /* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(6181);
43357
- /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(9896);
43358
- /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__);
43359
- /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(6928);
43360
- /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nccwpck_require__.n(path__WEBPACK_IMPORTED_MODULE_1__);
43361
- /* harmony import */ var os__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(857);
43362
- /* harmony import */ var os__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(os__WEBPACK_IMPORTED_MODULE_2__);
43363
- /* harmony import */ var url__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(7016);
43364
- /* harmony import */ var url__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__nccwpck_require__.n(url__WEBPACK_IMPORTED_MODULE_3__);
43365
43367
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(6878);
43366
43368
 
43367
43369
 
@@ -43369,32 +43371,35 @@ __webpack_async_result__();
43369
43371
 
43370
43372
 
43371
43373
 
43372
- const __dirname = path__WEBPACK_IMPORTED_MODULE_1___default().dirname((0,url__WEBPACK_IMPORTED_MODULE_3__.fileURLToPath)(import.meta.url));
43374
+ const __dirname = node_path__WEBPACK_IMPORTED_MODULE_2___default().dirname((0,node_url__WEBPACK_IMPORTED_MODULE_3__.fileURLToPath)(import.meta.url));
43373
43375
  // Find project root by looking for docker/ folder
43374
43376
  function findProjectRoot(startDir) {
43375
43377
  let currentDir = startDir;
43376
- const rootPath = path__WEBPACK_IMPORTED_MODULE_1___default().parse(currentDir).root;
43378
+ const rootPath = node_path__WEBPACK_IMPORTED_MODULE_2___default().parse(currentDir).root;
43377
43379
  while (currentDir !== rootPath) {
43378
- const dockerPath = path__WEBPACK_IMPORTED_MODULE_1___default().join(currentDir, "docker");
43379
- if (fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(dockerPath) && fs__WEBPACK_IMPORTED_MODULE_0___default().statSync(dockerPath).isDirectory()) {
43380
+ const dockerPath = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(currentDir, "docker");
43381
+ if (node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(dockerPath) && node_fs__WEBPACK_IMPORTED_MODULE_0___default().statSync(dockerPath).isDirectory()) {
43380
43382
  return currentDir;
43381
43383
  }
43382
- currentDir = path__WEBPACK_IMPORTED_MODULE_1___default().dirname(currentDir);
43384
+ currentDir = node_path__WEBPACK_IMPORTED_MODULE_2___default().dirname(currentDir);
43383
43385
  }
43384
43386
  throw new Error("Could not find project root (docker/ folder not found)");
43385
43387
  }
43386
43388
  const rootDir = findProjectRoot(__dirname);
43389
+ function parseNixVersionOutput(stdout) {
43390
+ const match = stdout.match(/nix \(Nix\) (\d+\.\d+)/);
43391
+ if (!match)
43392
+ return false;
43393
+ const [major, minor] = match[1].split(".").map(Number);
43394
+ const [reqMajor, reqMinor] = _config_js__WEBPACK_IMPORTED_MODULE_4__/* .NIX_CONFIG */ .Z3.requiredVersion
43395
+ .split(".")
43396
+ .map(Number);
43397
+ return major > reqMajor || (major === reqMajor && minor >= reqMinor);
43398
+ }
43387
43399
  async function checkNixInstalled() {
43388
43400
  try {
43389
43401
  const { stdout } = await (0,execa__WEBPACK_IMPORTED_MODULE_5__/* .execa */ .Ho)("nix", ["--version"]);
43390
- const versionMatch = stdout.match(/nix \(Nix\) (\d+\.\d+)/);
43391
- if (versionMatch) {
43392
- const version = versionMatch[1];
43393
- const [major, minor] = version.split(".").map(Number);
43394
- const [reqMajor, reqMinor] = _config_js__WEBPACK_IMPORTED_MODULE_4__/* .NIX_CONFIG */ .Z3.requiredVersion.split(".").map(Number);
43395
- return major > reqMajor || (major === reqMajor && minor >= reqMinor);
43396
- }
43397
- return false;
43402
+ return parseNixVersionOutput(stdout);
43398
43403
  }
43399
43404
  catch {
43400
43405
  return false;
@@ -43409,7 +43414,7 @@ async function installNix() {
43409
43414
  return;
43410
43415
  }
43411
43416
  // Detect OS
43412
- const platform = os__WEBPACK_IMPORTED_MODULE_2___default().platform();
43417
+ const platform = node_os__WEBPACK_IMPORTED_MODULE_1___default().platform();
43413
43418
  if (platform !== "darwin" && platform !== "linux") {
43414
43419
  throw new Error(`Unsupported platform: ${platform}. Nix only supports macOS and Linux.`);
43415
43420
  }
@@ -43432,33 +43437,33 @@ async function installNix() {
43432
43437
  console.log("⚠️ Please restart your shell or run: source ~/.nix-profile/etc/profile.d/nix.sh");
43433
43438
  }
43434
43439
  async function copyNixFiles() {
43435
- const homeDir = os__WEBPACK_IMPORTED_MODULE_2___default().homedir();
43436
- const localConfigDir = path__WEBPACK_IMPORTED_MODULE_1___default().join(homeDir, _config_js__WEBPACK_IMPORTED_MODULE_4__/* .NIX_CONFIG */ .Z3.localConfigDir);
43440
+ const homeDir = node_os__WEBPACK_IMPORTED_MODULE_1___default().homedir();
43441
+ const localConfigDir = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(homeDir, _config_js__WEBPACK_IMPORTED_MODULE_4__/* .NIX_CONFIG */ .Z3.localConfigDir);
43437
43442
  console.log(`📁 Copying Nix configuration to ${localConfigDir}...`);
43438
43443
  // Create directory if it doesn't exist
43439
- if (!fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(localConfigDir)) {
43440
- fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(localConfigDir, { recursive: true });
43444
+ if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(localConfigDir)) {
43445
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(localConfigDir, { recursive: true });
43441
43446
  }
43442
43447
  // Copy shell.nix and flake files
43443
- const sourcePath = path__WEBPACK_IMPORTED_MODULE_1___default().join(rootDir, "docker", "nix");
43448
+ const sourcePath = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(rootDir, "docker", "nix");
43444
43449
  const filesToCopy = ["shell.nix", "flake.nix", "flake.lock"];
43445
43450
  for (const file of filesToCopy) {
43446
- const src = path__WEBPACK_IMPORTED_MODULE_1___default().join(sourcePath, file);
43447
- const dest = path__WEBPACK_IMPORTED_MODULE_1___default().join(localConfigDir, file);
43448
- if (fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(src)) {
43449
- fs__WEBPACK_IMPORTED_MODULE_0___default().copyFileSync(src, dest);
43451
+ const src = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(sourcePath, file);
43452
+ const dest = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(localConfigDir, file);
43453
+ if (node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(src)) {
43454
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().copyFileSync(src, dest);
43450
43455
  console.log(` ✓ Copied ${file}`);
43451
43456
  }
43452
43457
  }
43453
43458
  // Copy nix-config directory
43454
- const configSrc = path__WEBPACK_IMPORTED_MODULE_1___default().join(sourcePath, "nix-config");
43455
- const configDest = path__WEBPACK_IMPORTED_MODULE_1___default().join(localConfigDir, "nix-config");
43456
- if (!fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(configDest)) {
43457
- fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(configDest, { recursive: true });
43459
+ const configSrc = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(sourcePath, "nix-config");
43460
+ const configDest = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(localConfigDir, "nix-config");
43461
+ if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(configDest)) {
43462
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(configDest, { recursive: true });
43458
43463
  }
43459
- const configFiles = fs__WEBPACK_IMPORTED_MODULE_0___default().readdirSync(configSrc);
43464
+ const configFiles = node_fs__WEBPACK_IMPORTED_MODULE_0___default().readdirSync(configSrc);
43460
43465
  for (const file of configFiles) {
43461
- fs__WEBPACK_IMPORTED_MODULE_0___default().copyFileSync(path__WEBPACK_IMPORTED_MODULE_1___default().join(configSrc, file), path__WEBPACK_IMPORTED_MODULE_1___default().join(configDest, file));
43466
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().copyFileSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().join(configSrc, file), node_path__WEBPACK_IMPORTED_MODULE_2___default().join(configDest, file));
43462
43467
  console.log(` ✓ Copied nix-config/${file}`);
43463
43468
  }
43464
43469
  console.log();
@@ -43472,10 +43477,10 @@ async function runNixShell() {
43472
43477
  process.exit(1);
43473
43478
  }
43474
43479
  // Copy files if not already present
43475
- const homeDir = os__WEBPACK_IMPORTED_MODULE_2___default().homedir();
43476
- const localConfigDir = path__WEBPACK_IMPORTED_MODULE_1___default().join(homeDir, _config_js__WEBPACK_IMPORTED_MODULE_4__/* .NIX_CONFIG */ .Z3.localConfigDir);
43477
- const shellNixPath = path__WEBPACK_IMPORTED_MODULE_1___default().join(localConfigDir, "shell.nix");
43478
- if (!fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(shellNixPath)) {
43480
+ const homeDir = node_os__WEBPACK_IMPORTED_MODULE_1___default().homedir();
43481
+ const localConfigDir = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(homeDir, _config_js__WEBPACK_IMPORTED_MODULE_4__/* .NIX_CONFIG */ .Z3.localConfigDir);
43482
+ const shellNixPath = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(localConfigDir, "shell.nix");
43483
+ if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(shellNixPath)) {
43479
43484
  await copyNixFiles();
43480
43485
  }
43481
43486
  console.log("🚀 Starting Nix shell...");
@@ -43537,13 +43542,13 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we
43537
43542
  /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
43538
43543
  /* harmony export */ a: () => (/* binding */ skillsCommand)
43539
43544
  /* harmony export */ });
43540
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(2864);
43541
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
43542
- /* harmony import */ var ink__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(3816);
43545
+ /* harmony import */ var ink__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3816);
43546
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(2864);
43547
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nccwpck_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);
43543
43548
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(6878);
43544
43549
  /* harmony import */ var _utils_skills_js__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(6400);
43545
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([ink__WEBPACK_IMPORTED_MODULE_1__]);
43546
- ink__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
43550
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([ink__WEBPACK_IMPORTED_MODULE_0__]);
43551
+ ink__WEBPACK_IMPORTED_MODULE_0__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
43547
43552
 
43548
43553
 
43549
43554
 
@@ -43559,29 +43564,47 @@ function statusIcon(row) {
43559
43564
  }
43560
43565
  }
43561
43566
  function SkillsMenu() {
43562
- const { exit } = (0,ink__WEBPACK_IMPORTED_MODULE_1__/* .useApp */ .nm)();
43563
- const [selectedIndex, setSelectedIndex] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);
43564
- const [rows, setRows] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(_config_js__WEBPACK_IMPORTED_MODULE_2__/* .SKILLS_CATALOG */ .XI.map((s) => ({ installed: (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .isInstalled */ .j$)(s.name), status: "idle", message: "" })));
43567
+ const { exit } = (0,ink__WEBPACK_IMPORTED_MODULE_0__/* .useApp */ .nm)();
43568
+ const [selectedIndex, setSelectedIndex] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);
43569
+ const [rows, setRows] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(_config_js__WEBPACK_IMPORTED_MODULE_2__/* .SKILLS_CATALOG */ .XI.map((s) => ({
43570
+ installed: (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .isInstalled */ .j$)(s.name),
43571
+ status: "idle",
43572
+ message: "",
43573
+ })));
43565
43574
  function setRow(index, patch) {
43566
43575
  setRows((prev) => prev.map((r, i) => (i === index ? { ...r, ...patch } : r)));
43567
43576
  }
43568
43577
  async function toggleSkill(index, skill, installed) {
43569
- setRow(index, { status: "working", message: installed ? "Uninstalling..." : "Downloading..." });
43578
+ setRow(index, {
43579
+ status: "working",
43580
+ message: installed ? "Uninstalling..." : "Downloading...",
43581
+ });
43570
43582
  try {
43571
43583
  if (installed) {
43572
43584
  (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .uninstallSkill */ .wW)(skill.name);
43573
- setRow(index, { installed: false, status: "done", message: "Uninstalled" });
43585
+ setRow(index, {
43586
+ installed: false,
43587
+ status: "done",
43588
+ message: "Uninstalled",
43589
+ });
43574
43590
  }
43575
43591
  else {
43576
43592
  await (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .installSkill */ .rP)(skill);
43577
- setRow(index, { installed: true, status: "done", message: "Installed" });
43593
+ setRow(index, {
43594
+ installed: true,
43595
+ status: "done",
43596
+ message: "Installed",
43597
+ });
43578
43598
  }
43579
43599
  }
43580
43600
  catch (e) {
43581
- setRow(index, { status: "error", message: e instanceof Error ? e.message : "Failed" });
43601
+ setRow(index, {
43602
+ status: "error",
43603
+ message: e instanceof Error ? e.message : "Failed",
43604
+ });
43582
43605
  }
43583
43606
  }
43584
- (0,ink__WEBPACK_IMPORTED_MODULE_1__/* .useInput */ .Ge)((input, key) => {
43607
+ (0,ink__WEBPACK_IMPORTED_MODULE_0__/* .useInput */ .Ge)((input, key) => {
43585
43608
  if (key.upArrow) {
43586
43609
  setSelectedIndex((p) => (p > 0 ? p - 1 : _config_js__WEBPACK_IMPORTED_MODULE_2__/* .SKILLS_CATALOG */ .XI.length - 1));
43587
43610
  return;
@@ -43601,29 +43624,29 @@ function SkillsMenu() {
43601
43624
  exit();
43602
43625
  }
43603
43626
  });
43604
- return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column", paddingX: 1 },
43605
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { marginBottom: 1 },
43606
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { bold: true, color: "red" }, "Skills Manager"),
43607
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, " (~/.sith/skills/)")),
43627
+ return (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", paddingX: 1 },
43628
+ react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { marginBottom: 1 },
43629
+ react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { bold: true, color: "red" }, "Skills Manager"),
43630
+ react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, " (~/.sith/skills/)")),
43608
43631
  _config_js__WEBPACK_IMPORTED_MODULE_2__/* .SKILLS_CATALOG */ .XI.map((skill, i) => {
43609
43632
  const row = rows[i];
43610
43633
  const isSelected = i === selectedIndex;
43611
- return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { key: skill.name, marginY: 0 },
43612
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { color: isSelected ? "cyan" : undefined },
43634
+ return (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { key: skill.name, marginY: 0 },
43635
+ react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { color: isSelected ? "cyan" : undefined },
43613
43636
  isSelected ? "❯ " : " ",
43614
43637
  statusIcon(row),
43615
43638
  " ",
43616
43639
  skill.name.padEnd(12)),
43617
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: !isSelected }, skill.description),
43618
- row.message ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { color: row.status === "error" ? "red" : "green" },
43619
- " ",
43620
- row.message) : null));
43640
+ react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: !isSelected }, skill.description),
43641
+ row.message ? (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { color: row.status === "error" ? "red" : "green" },
43642
+ " ",
43643
+ row.message)) : null));
43621
43644
  }),
43622
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { marginTop: 1 },
43623
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, "\u2191\u2193 navigate Enter install/uninstall q quit"))));
43645
+ react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { marginTop: 1 },
43646
+ react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, "\u2191\u2193 navigate Enter install/uninstall q quit"))));
43624
43647
  }
43625
43648
  function skillsCommand() {
43626
- (0,ink__WEBPACK_IMPORTED_MODULE_1__/* .render */ .XX)(react__WEBPACK_IMPORTED_MODULE_0___default().createElement(SkillsMenu, null));
43649
+ (0,ink__WEBPACK_IMPORTED_MODULE_0__/* .render */ .XX)(react__WEBPACK_IMPORTED_MODULE_1___default().createElement(SkillsMenu, null));
43627
43650
  }
43628
43651
 
43629
43652
  __webpack_async_result__();
@@ -43638,19 +43661,19 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we
43638
43661
  /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
43639
43662
  /* harmony export */ y: () => (/* binding */ ConfigModal)
43640
43663
  /* harmony export */ });
43641
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(2864);
43642
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
43643
- /* harmony import */ var ink__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(3816);
43664
+ /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3024);
43665
+ /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);
43666
+ /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(6760);
43667
+ /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nccwpck_require__.n(node_path__WEBPACK_IMPORTED_MODULE_1__);
43668
+ /* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(3136);
43669
+ /* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(node_url__WEBPACK_IMPORTED_MODULE_2__);
43644
43670
  /* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(6181);
43645
- /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(9896);
43646
- /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(fs__WEBPACK_IMPORTED_MODULE_2__);
43647
- /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(6928);
43648
- /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__nccwpck_require__.n(path__WEBPACK_IMPORTED_MODULE_3__);
43649
- /* harmony import */ var url__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(7016);
43650
- /* harmony import */ var url__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__nccwpck_require__.n(url__WEBPACK_IMPORTED_MODULE_4__);
43671
+ /* harmony import */ var ink__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(3816);
43672
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(2864);
43673
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__nccwpck_require__.n(react__WEBPACK_IMPORTED_MODULE_4__);
43651
43674
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(6878);
43652
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([ink__WEBPACK_IMPORTED_MODULE_1__]);
43653
- ink__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
43675
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([ink__WEBPACK_IMPORTED_MODULE_3__]);
43676
+ ink__WEBPACK_IMPORTED_MODULE_3__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];
43654
43677
 
43655
43678
 
43656
43679
 
@@ -43658,16 +43681,16 @@ ink__WEBPACK_IMPORTED_MODULE_1__ = (__webpack_async_dependencies__.then ? (await
43658
43681
 
43659
43682
 
43660
43683
 
43661
- const __dirname = path__WEBPACK_IMPORTED_MODULE_3___default().dirname((0,url__WEBPACK_IMPORTED_MODULE_4__.fileURLToPath)(import.meta.url));
43684
+ const __dirname = node_path__WEBPACK_IMPORTED_MODULE_1___default().dirname((0,node_url__WEBPACK_IMPORTED_MODULE_2__.fileURLToPath)(import.meta.url));
43662
43685
  function findProjectRoot(startDir) {
43663
43686
  let currentDir = startDir;
43664
- const rootPath = path__WEBPACK_IMPORTED_MODULE_3___default().parse(currentDir).root;
43687
+ const rootPath = node_path__WEBPACK_IMPORTED_MODULE_1___default().parse(currentDir).root;
43665
43688
  while (currentDir !== rootPath) {
43666
- const dockerPath = path__WEBPACK_IMPORTED_MODULE_3___default().join(currentDir, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.folderName);
43667
- if (fs__WEBPACK_IMPORTED_MODULE_2___default().existsSync(dockerPath) && fs__WEBPACK_IMPORTED_MODULE_2___default().statSync(dockerPath).isDirectory()) {
43689
+ const dockerPath = node_path__WEBPACK_IMPORTED_MODULE_1___default().join(currentDir, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.folderName);
43690
+ if (node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(dockerPath) && node_fs__WEBPACK_IMPORTED_MODULE_0___default().statSync(dockerPath).isDirectory()) {
43668
43691
  return currentDir;
43669
43692
  }
43670
- currentDir = path__WEBPACK_IMPORTED_MODULE_3___default().dirname(currentDir);
43693
+ currentDir = node_path__WEBPACK_IMPORTED_MODULE_1___default().dirname(currentDir);
43671
43694
  }
43672
43695
  throw new Error(`Could not find project root (${_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.folderName}/ folder not found)`);
43673
43696
  }
@@ -43677,19 +43700,19 @@ const configOptions = [
43677
43700
  { label: "Build Docker image from scratch", value: "build", icon: "🔨" },
43678
43701
  { label: "Back", value: "back", icon: "◀️" },
43679
43702
  ];
43680
- function ConfigModal({ onClose, onMessage }) {
43681
- const [selectedIndex, setSelectedIndex] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);
43682
- const [isProcessing, setIsProcessing] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
43683
- const [processStep, setProcessStep] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)("");
43684
- (0,ink__WEBPACK_IMPORTED_MODULE_1__/* .useInput */ .Ge)((_input, key) => {
43703
+ function ConfigModal({ onClose, onMessage, }) {
43704
+ const [selectedIndex, setSelectedIndex] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)(0);
43705
+ const [isProcessing, setIsProcessing] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)(false);
43706
+ const [processStep, setProcessStep] = (0,react__WEBPACK_IMPORTED_MODULE_4__.useState)("");
43707
+ (0,ink__WEBPACK_IMPORTED_MODULE_3__/* .useInput */ .Ge)((_input, key) => {
43685
43708
  if (isProcessing) {
43686
43709
  return;
43687
43710
  }
43688
43711
  if (key.upArrow) {
43689
- setSelectedIndex((prev) => (prev > 0 ? prev - 1 : configOptions.length - 1));
43712
+ setSelectedIndex((prev) => prev > 0 ? prev - 1 : configOptions.length - 1);
43690
43713
  }
43691
43714
  else if (key.downArrow) {
43692
- setSelectedIndex((prev) => (prev < configOptions.length - 1 ? prev + 1 : 0));
43715
+ setSelectedIndex((prev) => prev < configOptions.length - 1 ? prev + 1 : 0);
43693
43716
  }
43694
43717
  else if (key.return) {
43695
43718
  handleSelection(configOptions[selectedIndex].value);
@@ -43715,7 +43738,9 @@ function ConfigModal({ onClose, onMessage }) {
43715
43738
  setIsProcessing(true);
43716
43739
  setProcessStep("Pulling prebuilt Docker image...");
43717
43740
  try {
43718
- await (0,execa__WEBPACK_IMPORTED_MODULE_6__/* .execa */ .Ho)("docker", ["pull", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.prebuiltImage], { stdio: "inherit" });
43741
+ await (0,execa__WEBPACK_IMPORTED_MODULE_6__/* .execa */ .Ho)("docker", ["pull", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.prebuiltImage], {
43742
+ stdio: "inherit",
43743
+ });
43719
43744
  await (0,execa__WEBPACK_IMPORTED_MODULE_6__/* .execa */ .Ho)("docker", ["tag", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.prebuiltImage, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.imageName], {
43720
43745
  stdio: "inherit",
43721
43746
  });
@@ -43732,8 +43757,8 @@ function ConfigModal({ onClose, onMessage }) {
43732
43757
  setIsProcessing(true);
43733
43758
  setProcessStep("Building Docker image from scratch...");
43734
43759
  try {
43735
- const dockerfilePath = path__WEBPACK_IMPORTED_MODULE_3___default().join(rootDir, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.folderName, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.dockerfileName);
43736
- if (!fs__WEBPACK_IMPORTED_MODULE_2___default().existsSync(dockerfilePath)) {
43760
+ 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);
43761
+ if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(dockerfilePath)) {
43737
43762
  throw new Error(`Dockerfile not found at: ${dockerfilePath}`);
43738
43763
  }
43739
43764
  await (0,execa__WEBPACK_IMPORTED_MODULE_6__/* .execa */ .Ho)("docker", ["build", "-f", dockerfilePath, "-t", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.imageName, rootDir], {
@@ -43749,24 +43774,24 @@ function ConfigModal({ onClose, onMessage }) {
43749
43774
  }
43750
43775
  }
43751
43776
  if (isProcessing) {
43752
- return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", padding: 1 },
43753
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { color: "cyan", bold: true }, "\u2699\uFE0F Configuration"),
43754
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { marginTop: 1 },
43755
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { color: "yellow" }, processStep))));
43756
- }
43757
- return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", padding: 1 },
43758
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { color: "cyan", bold: true }, "\u2699\uFE0F Configuration"),
43759
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column", marginTop: 1 }, configOptions.map((option, index) => {
43777
+ return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", padding: 1 },
43778
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { color: "cyan", bold: true }, "\u2699\uFE0F Configuration"),
43779
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { marginTop: 1 },
43780
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { color: "yellow" }, processStep))));
43781
+ }
43782
+ return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", padding: 1 },
43783
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { color: "cyan", bold: true }, "\u2699\uFE0F Configuration"),
43784
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { flexDirection: "column", marginTop: 1 }, configOptions.map((option, index) => {
43760
43785
  const isSelected = index === selectedIndex;
43761
- return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { key: option.value, marginY: 0 },
43762
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { color: isSelected ? "cyan" : undefined },
43786
+ return (react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { key: option.value, marginY: 0 },
43787
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { color: isSelected ? "cyan" : undefined },
43763
43788
  isSelected ? "❯ " : " ",
43764
43789
  option.icon,
43765
43790
  " ",
43766
43791
  option.label)));
43767
43792
  })),
43768
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { marginTop: 1 },
43769
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, "Use arrow keys to navigate, Enter to select, Esc to close"))));
43793
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Box */ .az, { marginTop: 1 },
43794
+ react__WEBPACK_IMPORTED_MODULE_4___default().createElement(ink__WEBPACK_IMPORTED_MODULE_3__/* .Text */ .EY, { dimColor: true }, "Use arrow keys to navigate, Enter to select, Esc to close"))));
43770
43795
  }
43771
43796
 
43772
43797
  __webpack_async_result__();
@@ -43782,18 +43807,22 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we
43782
43807
  /* harmony export */ t: () => (/* binding */ renderTerminalUI)
43783
43808
  /* harmony export */ });
43784
43809
  /* unused harmony export TerminalUI */
43785
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(2864);
43786
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
43787
- /* harmony import */ var ink__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(3816);
43788
- /* harmony import */ var ink_text_input__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(9046);
43789
- /* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(6181);
43790
- /* harmony import */ var _ConfigModal_js__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(3636);
43791
- /* harmony import */ var _utils_slashCommands_js__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(9987);
43810
+ /* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(6181);
43811
+ /* harmony import */ var ink__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3816);
43812
+ /* harmony import */ var ink_text_input__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(9046);
43813
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(2864);
43814
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
43815
+ /* harmony import */ var _commands_skills_js__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(9805);
43792
43816
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(6878);
43793
- /* harmony import */ var _utils_skills_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(6400);
43794
- /* harmony import */ var _commands_skills_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(9805);
43795
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([ink__WEBPACK_IMPORTED_MODULE_1__, ink_text_input__WEBPACK_IMPORTED_MODULE_2__, _ConfigModal_js__WEBPACK_IMPORTED_MODULE_3__, _commands_skills_js__WEBPACK_IMPORTED_MODULE_6__]);
43796
- ([ink__WEBPACK_IMPORTED_MODULE_1__, ink_text_input__WEBPACK_IMPORTED_MODULE_2__, _ConfigModal_js__WEBPACK_IMPORTED_MODULE_3__, _commands_skills_js__WEBPACK_IMPORTED_MODULE_6__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
43817
+ /* harmony import */ var _utils_dockerArgs_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(4495);
43818
+ /* harmony import */ var _utils_githubToken_js__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(1460);
43819
+ /* harmony import */ var _utils_messageUtils_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(5534);
43820
+ /* harmony import */ var _utils_slashCommands_js__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(9987);
43821
+ /* harmony import */ var _ConfigModal_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(3636);
43822
+ 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__]);
43823
+ ([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__);
43824
+
43825
+
43797
43826
 
43798
43827
 
43799
43828
 
@@ -43804,124 +43833,37 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([ink_
43804
43833
 
43805
43834
 
43806
43835
  function WelcomeScreen() {
43807
- return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column", justifyContent: "center", alignItems: "center", paddingY: 2 },
43808
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column", marginBottom: 2 }, _config_js__WEBPACK_IMPORTED_MODULE_4__/* .ASCII_LOGO */ .mF.map((line, index) => (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { key: index, color: "red", bold: true }, line)))),
43809
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column", alignItems: "center", marginTop: 1 },
43810
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, "Turn your context to the dark side"),
43811
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, "Dockerized OpenCode environment")),
43812
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { marginTop: 2, flexDirection: "column", alignItems: "center" },
43813
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { color: "cyan" }, "Type your prompt to start coding"),
43814
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, "or use slash commands:")),
43815
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column", marginTop: 1, marginLeft: 2 },
43816
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, " /shell - Start Docker shell"),
43817
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, " /skills - Install/uninstall skills"),
43818
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, " /config - Configuration"),
43819
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, " /help - Show help"))));
43820
- }
43821
- function getMessageColor(messageType) {
43822
- switch (messageType) {
43823
- case "success":
43824
- return "green";
43825
- case "error":
43826
- return "red";
43827
- case "info":
43828
- return "cyan";
43829
- case "user":
43830
- return "white";
43831
- case "system":
43832
- return "gray";
43833
- default:
43834
- return undefined;
43835
- }
43836
- }
43837
- function getMessagePrefix(messageType) {
43838
- switch (messageType) {
43839
- case "user":
43840
- return "› ";
43841
- case "system":
43842
- return "⚡ ";
43843
- default:
43844
- return "";
43845
- }
43836
+ return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", justifyContent: "center", alignItems: "center", paddingY: 2 },
43837
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", marginBottom: 2 }, _config_js__WEBPACK_IMPORTED_MODULE_4__/* .ASCII_LOGO */ .mF.map((line, index) => (
43838
+ // biome-ignore lint/suspicious/noArrayIndexKey: static array, order never changes
43839
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { key: index, color: "red", bold: true }, line)))),
43840
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", alignItems: "center", marginTop: 1 },
43841
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, "Turn your context to the dark side"),
43842
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, "Dockerized OpenCode environment")),
43843
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { marginTop: 2, flexDirection: "column", alignItems: "center" },
43844
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { color: "cyan" }, "Type your prompt to start coding"),
43845
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, "or use slash commands:")),
43846
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", marginTop: 1, marginLeft: 2 },
43847
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, " /shell - Start Docker shell"),
43848
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, " /skills - Install/uninstall skills"),
43849
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, " /config - Configuration"),
43850
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, " /help - Show help"))));
43846
43851
  }
43847
43852
  function MessageItem({ message }) {
43848
- const color = getMessageColor(message.type);
43849
- const prefix = getMessagePrefix(message.type);
43850
- return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { marginBottom: 0 },
43851
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { color: color },
43853
+ const color = (0,_utils_messageUtils_js__WEBPACK_IMPORTED_MODULE_7__/* .getMessageColor */ .l)(message.type);
43854
+ const prefix = (0,_utils_messageUtils_js__WEBPACK_IMPORTED_MODULE_7__/* .getMessagePrefix */ .U)(message.type);
43855
+ return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { marginBottom: 0 },
43856
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { color: color },
43852
43857
  prefix,
43853
43858
  message.text)));
43854
43859
  }
43855
- async function getGitHubToken() {
43856
- // Check environment variable first
43857
- const envToken = process.env.GITHUB_TOKEN;
43858
- if (envToken) {
43859
- return envToken;
43860
- }
43861
- // Try to get token from gh CLI
43862
- try {
43863
- const { stdout } = await (0,execa__WEBPACK_IMPORTED_MODULE_7__/* .execa */ .Ho)("gh", ["auth", "token"]);
43864
- return stdout.trim();
43865
- }
43866
- catch {
43867
- // Return empty string if gh CLI is not available
43868
- return "";
43869
- }
43870
- }
43871
- function buildDockerShellCommand(githubToken) {
43872
- return [
43873
- "run",
43874
- "--rm",
43875
- "-it",
43876
- "-v",
43877
- `${process.cwd()}:${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.workspaceMount}`,
43878
- "-v",
43879
- `${(0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_5__/* .getSkillsDir */ .YJ)()}:${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.skillsMount}`,
43880
- "-v",
43881
- `${(0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_5__/* .getOpenCodeConfigPath */ .Jn)()}:${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.opencodeConfigMount}`,
43882
- "-e",
43883
- `GITHUB_TOKEN=${githubToken}`,
43884
- "--entrypoint",
43885
- "nix-shell",
43886
- _config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.imageName,
43887
- _config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.shellEntrypoint,
43888
- ];
43889
- }
43890
- function buildDockerOpencodeCommand(githubToken, prompt) {
43891
- const dockerArgs = [
43892
- "run",
43893
- "--rm",
43894
- "-it",
43895
- "-v",
43896
- `${process.cwd()}:${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.workspaceMount}`,
43897
- "-v",
43898
- `${(0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_5__/* .getSkillsDir */ .YJ)()}:${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.skillsMount}`,
43899
- "-v",
43900
- `${(0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_5__/* .getOpenCodeConfigPath */ .Jn)()}:${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.opencodeConfigMount}`,
43901
- "-e",
43902
- `GITHUB_TOKEN=${githubToken}`,
43903
- "--entrypoint",
43904
- "bash",
43905
- _config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.imageName,
43906
- "-c",
43907
- ];
43908
- // Build opencode command - always interactive, use Sonnet 4.6
43909
- let opencodeCommand = "source /opt/sith/nix/nix-scripts/setup.sh && cd /workspace && opencode -m github-copilot/claude-sonnet-4.6";
43910
- if (prompt) {
43911
- // Escape single quotes in prompt and use --prompt flag for interactive mode
43912
- const escapedPrompt = prompt.replace(/'/g, "'\\''");
43913
- opencodeCommand += ` --prompt '${escapedPrompt}'`;
43914
- }
43915
- dockerArgs.push(opencodeCommand);
43916
- return dockerArgs;
43917
- }
43918
43860
  function TerminalUI() {
43919
- const { exit } = (0,ink__WEBPACK_IMPORTED_MODULE_1__/* .useApp */ .nm)();
43920
- const [input, setInput] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)("");
43921
- const [messages, setMessages] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)([]);
43922
- const [showConfigModal, setShowConfigModal] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
43923
- const [nextMessageId, setNextMessageId] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(1);
43924
- const addMessage = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((text, type = "system") => {
43861
+ const { exit } = (0,ink__WEBPACK_IMPORTED_MODULE_0__/* .useApp */ .nm)();
43862
+ const [input, setInput] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)("");
43863
+ const [messages, setMessages] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)([]);
43864
+ const [showConfigModal, setShowConfigModal] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);
43865
+ const [nextMessageId, setNextMessageId] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(1);
43866
+ const addMessage = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((text, type = "system") => {
43925
43867
  const newMessage = {
43926
43868
  id: nextMessageId,
43927
43869
  text,
@@ -43931,16 +43873,16 @@ function TerminalUI() {
43931
43873
  setMessages((previousMessages) => [...previousMessages, newMessage]);
43932
43874
  setNextMessageId((previousId) => previousId + 1);
43933
43875
  }, [nextMessageId]);
43934
- const handleDockerShell = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {
43876
+ const handleDockerShell = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(async () => {
43935
43877
  exit();
43936
43878
  console.log("🚀 Starting Docker shell...");
43937
43879
  console.log(`Mounting current directory to ${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.workspaceMount}`);
43938
43880
  console.log('Press Ctrl+D or type "exit" to leave');
43939
43881
  console.log();
43940
- const githubToken = await getGitHubToken();
43941
- const dockerArgs = buildDockerShellCommand(githubToken);
43882
+ const githubToken = await (0,_utils_githubToken_js__WEBPACK_IMPORTED_MODULE_8__/* .getGitHubToken */ .l)();
43883
+ const dockerArgs = (0,_utils_dockerArgs_js__WEBPACK_IMPORTED_MODULE_5__/* .buildDockerShellCommand */ .a)(githubToken);
43942
43884
  try {
43943
- await (0,execa__WEBPACK_IMPORTED_MODULE_7__/* .execa */ .Ho)("docker", dockerArgs, { stdio: "inherit" });
43885
+ await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("docker", dockerArgs, { stdio: "inherit" });
43944
43886
  console.log();
43945
43887
  console.log("✅ Exited shell");
43946
43888
  }
@@ -43950,7 +43892,7 @@ function TerminalUI() {
43950
43892
  process.exit(1);
43951
43893
  }
43952
43894
  }, [exit]);
43953
- const handleOpenCode = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (prompt) => {
43895
+ const handleOpenCode = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(async (prompt) => {
43954
43896
  exit();
43955
43897
  console.log("🚀 Starting OpenCode...");
43956
43898
  console.log(`Mounting current directory to ${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.workspaceMount}`);
@@ -43958,10 +43900,10 @@ function TerminalUI() {
43958
43900
  console.log(`Prompt: ${prompt}`);
43959
43901
  }
43960
43902
  console.log();
43961
- const githubToken = await getGitHubToken();
43962
- const dockerArgs = buildDockerOpencodeCommand(githubToken, prompt);
43903
+ const githubToken = await (0,_utils_githubToken_js__WEBPACK_IMPORTED_MODULE_8__/* .getGitHubToken */ .l)();
43904
+ const dockerArgs = (0,_utils_dockerArgs_js__WEBPACK_IMPORTED_MODULE_5__/* .buildDockerOpencodeCommand */ .X)(githubToken, prompt);
43963
43905
  try {
43964
- await (0,execa__WEBPACK_IMPORTED_MODULE_7__/* .execa */ .Ho)("docker", dockerArgs, { stdio: "inherit" });
43906
+ await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("docker", dockerArgs, { stdio: "inherit" });
43965
43907
  console.log();
43966
43908
  console.log("✅ Exited OpenCode");
43967
43909
  }
@@ -43971,7 +43913,7 @@ function TerminalUI() {
43971
43913
  process.exit(1);
43972
43914
  }
43973
43915
  }, [exit]);
43974
- const handleSlashCommand = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (command, userInput) => {
43916
+ const handleSlashCommand = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(async (command, userInput) => {
43975
43917
  if (!command) {
43976
43918
  return;
43977
43919
  }
@@ -43982,27 +43924,28 @@ function TerminalUI() {
43982
43924
  break;
43983
43925
  case "skills":
43984
43926
  exit();
43985
- (0,_commands_skills_js__WEBPACK_IMPORTED_MODULE_6__/* .skillsCommand */ .a)();
43927
+ (0,_commands_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .skillsCommand */ .a)();
43986
43928
  break;
43987
43929
  case "config":
43988
43930
  setShowConfigModal(true);
43989
43931
  break;
43990
- case "help":
43932
+ case "help": {
43991
43933
  addMessage("Available commands:", "info");
43992
- const availableCommands = (0,_utils_slashCommands_js__WEBPACK_IMPORTED_MODULE_8__/* .getAvailableCommands */ .K)();
43934
+ const availableCommands = (0,_utils_slashCommands_js__WEBPACK_IMPORTED_MODULE_10__/* .getAvailableCommands */ .K)();
43993
43935
  for (const cmd of availableCommands) {
43994
43936
  addMessage(` ${cmd.command} - ${cmd.description}`, "info");
43995
43937
  }
43996
43938
  break;
43939
+ }
43997
43940
  }
43998
- }, [addMessage, handleDockerShell]);
43999
- const handleSubmit = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (value) => {
43941
+ }, [addMessage, handleDockerShell, exit]);
43942
+ const handleSubmit = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(async (value) => {
44000
43943
  const trimmedValue = value.trim();
44001
43944
  if (!trimmedValue) {
44002
43945
  return;
44003
43946
  }
44004
43947
  setInput("");
44005
- const command = (0,_utils_slashCommands_js__WEBPACK_IMPORTED_MODULE_8__/* .parseSlashCommand */ .M)(trimmedValue);
43948
+ const command = (0,_utils_slashCommands_js__WEBPACK_IMPORTED_MODULE_10__/* .parseSlashCommand */ .M)(trimmedValue);
44006
43949
  if (command) {
44007
43950
  await handleSlashCommand(command, trimmedValue);
44008
43951
  }
@@ -44015,13 +43958,13 @@ function TerminalUI() {
44015
43958
  await handleOpenCode(trimmedValue);
44016
43959
  }
44017
43960
  }, [addMessage, handleOpenCode, handleSlashCommand]);
44018
- const handleConfigModalClose = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
43961
+ const handleConfigModalClose = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(() => {
44019
43962
  setShowConfigModal(false);
44020
43963
  }, []);
44021
- const handleConfigModalMessage = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((text, type) => {
43964
+ const handleConfigModalMessage = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((text, type) => {
44022
43965
  addMessage(text, type || "system");
44023
43966
  }, [addMessage]);
44024
- (0,ink__WEBPACK_IMPORTED_MODULE_1__/* .useInput */ .Ge)((input, key) => {
43967
+ (0,ink__WEBPACK_IMPORTED_MODULE_0__/* .useInput */ .Ge)((input, key) => {
44025
43968
  if (showConfigModal) {
44026
43969
  // Let modal handle input
44027
43970
  return;
@@ -44032,23 +43975,23 @@ function TerminalUI() {
44032
43975
  }
44033
43976
  });
44034
43977
  if (showConfigModal) {
44035
- return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column" },
44036
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ConfigModal_js__WEBPACK_IMPORTED_MODULE_3__/* .ConfigModal */ .y, { onClose: handleConfigModalClose, onMessage: handleConfigModalMessage })));
43978
+ return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column" },
43979
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_ConfigModal_js__WEBPACK_IMPORTED_MODULE_6__/* .ConfigModal */ .y, { onClose: handleConfigModalClose, onMessage: handleConfigModalMessage })));
44037
43980
  }
44038
43981
  const shouldShowWelcome = messages.length === 0;
44039
43982
  const recentMessages = messages.slice(-10);
44040
- return (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column", height: "100%" },
44041
- shouldShowWelcome ? (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(WelcomeScreen, null)) : (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column", flexGrow: 1, marginBottom: 1 }, recentMessages.map((message) => (react__WEBPACK_IMPORTED_MODULE_0___default().createElement(MessageItem, { key: message.id, message: message }))))),
44042
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column" },
44043
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { borderStyle: "single", borderColor: "gray", paddingX: 1 },
44044
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { color: "cyan", bold: true }, "\u203A"),
44045
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, null, " "),
44046
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink_text_input__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A, { value: input, onChange: setInput, onSubmit: handleSubmit, placeholder: "Enter your prompt..." })),
44047
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { marginTop: 1, paddingX: 1 },
44048
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, "Ctrl+C to exit")))));
43983
+ return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", height: "100%" },
43984
+ shouldShowWelcome ? (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(WelcomeScreen, null)) : (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 }))))),
43985
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column" },
43986
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { borderStyle: "single", borderColor: "gray", paddingX: 1 },
43987
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { color: "cyan", bold: true }, "\u203A"),
43988
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, null, " "),
43989
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink_text_input__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .A, { value: input, onChange: setInput, onSubmit: handleSubmit, placeholder: "Enter your prompt..." })),
43990
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { marginTop: 1, paddingX: 1 },
43991
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, "Ctrl+C to exit")))));
44049
43992
  }
44050
43993
  function renderTerminalUI() {
44051
- (0,ink__WEBPACK_IMPORTED_MODULE_1__/* .render */ .XX)(react__WEBPACK_IMPORTED_MODULE_0___default().createElement(TerminalUI, null));
43994
+ (0,ink__WEBPACK_IMPORTED_MODULE_0__/* .render */ .XX)(react__WEBPACK_IMPORTED_MODULE_2___default().createElement(TerminalUI, null));
44052
43995
  }
44053
43996
 
44054
43997
  __webpack_async_result__();
@@ -44154,21 +44097,21 @@ const ASCII_LOGO = [
44154
44097
  /***/ ((module, __unused_webpack___webpack_exports__, __nccwpck_require__) => {
44155
44098
 
44156
44099
  __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
44157
- /* harmony import */ var commander__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(2202);
44158
- /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(9896);
44159
- /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nccwpck_require__.n(fs__WEBPACK_IMPORTED_MODULE_1__);
44160
- /* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(7016);
44161
- /* harmony import */ var url__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(url__WEBPACK_IMPORTED_MODULE_2__);
44162
- /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(6928);
44163
- /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__nccwpck_require__.n(path__WEBPACK_IMPORTED_MODULE_3__);
44164
- /* harmony import */ var update_notifier__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(6213);
44100
+ /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3024);
44101
+ /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);
44102
+ /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(6760);
44103
+ /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nccwpck_require__.n(node_path__WEBPACK_IMPORTED_MODULE_1__);
44104
+ /* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(3136);
44105
+ /* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(node_url__WEBPACK_IMPORTED_MODULE_2__);
44165
44106
  /* harmony import */ var chalk__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(9611);
44107
+ /* harmony import */ var commander__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(2202);
44108
+ /* harmony import */ var update_notifier__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(6213);
44166
44109
  /* harmony import */ var _commands_docker_js__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(5515);
44167
44110
  /* harmony import */ var _commands_nix_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(9922);
44168
- /* harmony import */ var _components_TerminalUI_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(3535);
44169
- /* harmony import */ var _commands_skills_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(9805);
44170
- var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_commands_docker_js__WEBPACK_IMPORTED_MODULE_4__, _components_TerminalUI_js__WEBPACK_IMPORTED_MODULE_6__, _commands_skills_js__WEBPACK_IMPORTED_MODULE_7__]);
44171
- ([_commands_docker_js__WEBPACK_IMPORTED_MODULE_4__, _components_TerminalUI_js__WEBPACK_IMPORTED_MODULE_6__, _commands_skills_js__WEBPACK_IMPORTED_MODULE_7__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
44111
+ /* harmony import */ var _commands_skills_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(9805);
44112
+ /* harmony import */ var _components_TerminalUI_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(3535);
44113
+ 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__]);
44114
+ ([_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__);
44172
44115
 
44173
44116
 
44174
44117
 
@@ -44180,21 +44123,21 @@ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_com
44180
44123
 
44181
44124
 
44182
44125
  // Import package.json for version and update checks
44183
- const __filename = (0,url__WEBPACK_IMPORTED_MODULE_2__.fileURLToPath)(import.meta.url);
44184
- const __dirname = (0,path__WEBPACK_IMPORTED_MODULE_3__.dirname)(__filename);
44185
- const pkg = JSON.parse((0,fs__WEBPACK_IMPORTED_MODULE_1__.readFileSync)(__nccwpck_require__.ab + "package.json", 'utf-8'));
44186
- const PROGRAM_NAME = 'sith';
44126
+ const __filename = (0,node_url__WEBPACK_IMPORTED_MODULE_2__.fileURLToPath)(import.meta.url);
44127
+ const __dirname = (0,node_path__WEBPACK_IMPORTED_MODULE_1__.dirname)(__filename);
44128
+ 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"));
44129
+ const PROGRAM_NAME = "sith";
44187
44130
  const PROGRAM_VERSION = pkg.version;
44188
- 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.';
44131
+ 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.";
44189
44132
  // Check for updates (automatic background check)
44190
44133
  const notifier = (0,update_notifier__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)({ pkg });
44191
44134
  notifier.notify();
44192
44135
  async function checkForUpdates() {
44193
- console.log(chalk__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Ay.cyan('Checking for updates...'));
44136
+ console.log(chalk__WEBPACK_IMPORTED_MODULE_9__/* ["default"] */ .Ay.cyan("Checking for updates..."));
44194
44137
  // Force update check by setting updateCheckInterval to 0
44195
44138
  const notifier = (0,update_notifier__WEBPACK_IMPORTED_MODULE_8__/* ["default"] */ .A)({
44196
44139
  pkg,
44197
- updateCheckInterval: 0
44140
+ updateCheckInterval: 0,
44198
44141
  });
44199
44142
  // Fetch the latest version
44200
44143
  await notifier.fetchInfo();
@@ -44210,21 +44153,20 @@ async function checkForUpdates() {
44210
44153
  }
44211
44154
  }
44212
44155
  function createProgram() {
44213
- const program = new commander__WEBPACK_IMPORTED_MODULE_0__/* .Command */ .uB();
44156
+ const program = new commander__WEBPACK_IMPORTED_MODULE_3__/* .Command */ .uB();
44214
44157
  program
44215
44158
  .name(PROGRAM_NAME)
44216
44159
  .description(PROGRAM_DESCRIPTION)
44217
44160
  .version(PROGRAM_VERSION)
44218
- .option('--pull', 'Pull prebuilt Docker image (recommended)')
44219
- .option('--build', 'Build the Docker image from scratch')
44220
- .option('--it', 'Launch interactive shell in Docker container')
44221
- .option('--nix', 'Use native Nix shell (no Docker)')
44222
- .option('--nix-install', 'Install Nix package manager locally')
44223
- .option('--update', 'Check for updates')
44224
- .option('--legacy', 'Use legacy menu interface');
44161
+ .option("--pull", "Pull prebuilt Docker image (recommended)")
44162
+ .option("--build", "Build the Docker image from scratch")
44163
+ .option("--it", "Launch interactive shell in Docker container")
44164
+ .option("--nix", "Use native Nix shell (no Docker)")
44165
+ .option("--nix-install", "Install Nix package manager locally")
44166
+ .option("--update", "Check for updates")
44167
+ .option("--legacy", "Use legacy menu interface");
44225
44168
  // Default action - show terminal UI or legacy menu
44226
- program
44227
- .action(async (options) => {
44169
+ program.action(async (options) => {
44228
44170
  if (options.update) {
44229
44171
  await checkForUpdates();
44230
44172
  }
@@ -44243,38 +44185,38 @@ function createProgram() {
44243
44185
  }
44244
44186
  else {
44245
44187
  // Default: show new terminal UI
44246
- (0,_components_TerminalUI_js__WEBPACK_IMPORTED_MODULE_6__/* .renderTerminalUI */ .t)();
44188
+ (0,_components_TerminalUI_js__WEBPACK_IMPORTED_MODULE_7__/* .renderTerminalUI */ .t)();
44247
44189
  }
44248
44190
  });
44249
44191
  // Docker command - explicit Docker management
44250
44192
  program
44251
- .command('docker')
44252
- .description('Manage Docker environment')
44253
- .option('--pull', 'Pull prebuilt Docker image (recommended)')
44254
- .option('--build', 'Build the Docker image from scratch')
44193
+ .command("docker")
44194
+ .description("Manage Docker environment")
44195
+ .option("--pull", "Pull prebuilt Docker image (recommended)")
44196
+ .option("--build", "Build the Docker image from scratch")
44255
44197
  .action(async (options) => {
44256
44198
  await (0,_commands_docker_js__WEBPACK_IMPORTED_MODULE_4__/* .dockerCommand */ .Q)(options);
44257
44199
  });
44258
44200
  // Shell command - direct interactive shell (bypasses menu)
44259
44201
  program
44260
- .command('shell')
44261
- .description('Run interactive shell in Docker container')
44202
+ .command("shell")
44203
+ .description("Run interactive shell in Docker container")
44262
44204
  .action(async () => {
44263
44205
  await (0,_commands_docker_js__WEBPACK_IMPORTED_MODULE_4__/* .runShellDirect */ .l)();
44264
44206
  });
44265
44207
  // Skills command - install/uninstall skills from catalog
44266
44208
  program
44267
- .command('skills')
44268
- .description('Manage skills (~/.sith/skills/)')
44209
+ .command("skills")
44210
+ .description("Manage skills (~/.sith/skills/)")
44269
44211
  .action(() => {
44270
- (0,_commands_skills_js__WEBPACK_IMPORTED_MODULE_7__/* .skillsCommand */ .a)();
44212
+ (0,_commands_skills_js__WEBPACK_IMPORTED_MODULE_6__/* .skillsCommand */ .a)();
44271
44213
  });
44272
44214
  // Nix command - native Nix environment
44273
44215
  program
44274
- .command('nix')
44275
- .description('Manage native Nix environment')
44276
- .option('--install', 'Install Nix package manager')
44277
- .option('--shell', 'Run Nix shell')
44216
+ .command("nix")
44217
+ .description("Manage native Nix environment")
44218
+ .option("--install", "Install Nix package manager")
44219
+ .option("--shell", "Run Nix shell")
44278
44220
  .action(async (options) => {
44279
44221
  await (0,_commands_nix_js__WEBPACK_IMPORTED_MODULE_5__/* .nixCommand */ .Dv)(options);
44280
44222
  });
@@ -44287,6 +44229,126 @@ program.parse();
44287
44229
  __webpack_async_result__();
44288
44230
  } catch(e) { __webpack_async_result__(e); } });
44289
44231
 
44232
+ /***/ }),
44233
+
44234
+ /***/ 4495:
44235
+ /***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => {
44236
+
44237
+ /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
44238
+ /* harmony export */ X: () => (/* binding */ buildDockerOpencodeCommand),
44239
+ /* harmony export */ a: () => (/* binding */ buildDockerShellCommand)
44240
+ /* harmony export */ });
44241
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(6878);
44242
+ /* harmony import */ var _skills_js__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(6400);
44243
+
44244
+
44245
+ function buildDockerShellCommand(githubToken) {
44246
+ return [
44247
+ "run",
44248
+ "--rm",
44249
+ "-it",
44250
+ "-v",
44251
+ `${process.cwd()}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.workspaceMount}`,
44252
+ "-v",
44253
+ `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_1__/* .getSkillsDir */ .YJ)()}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.skillsMount}`,
44254
+ "-v",
44255
+ `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_1__/* .getOpenCodeConfigPath */ .Jn)()}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.opencodeConfigMount}`,
44256
+ "-e",
44257
+ `GITHUB_TOKEN=${githubToken}`,
44258
+ "--entrypoint",
44259
+ "nix-shell",
44260
+ _config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.imageName,
44261
+ _config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.shellEntrypoint,
44262
+ ];
44263
+ }
44264
+ function buildDockerOpencodeCommand(githubToken, prompt) {
44265
+ const args = [
44266
+ "run",
44267
+ "--rm",
44268
+ "-it",
44269
+ "-v",
44270
+ `${process.cwd()}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.workspaceMount}`,
44271
+ "-v",
44272
+ `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_1__/* .getSkillsDir */ .YJ)()}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.skillsMount}`,
44273
+ "-v",
44274
+ `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_1__/* .getOpenCodeConfigPath */ .Jn)()}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.opencodeConfigMount}`,
44275
+ "-e",
44276
+ `GITHUB_TOKEN=${githubToken}`,
44277
+ "--entrypoint",
44278
+ "bash",
44279
+ _config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.imageName,
44280
+ "-c",
44281
+ ];
44282
+ let opencodeCommand = "source /opt/sith/nix/nix-scripts/setup.sh && cd /workspace && opencode -m github-copilot/claude-sonnet-4.6";
44283
+ if (prompt) {
44284
+ const escapedPrompt = prompt.replace(/'/g, "'\\''");
44285
+ opencodeCommand += ` --prompt '${escapedPrompt}'`;
44286
+ }
44287
+ args.push(opencodeCommand);
44288
+ return args;
44289
+ }
44290
+
44291
+
44292
+ /***/ }),
44293
+
44294
+ /***/ 1460:
44295
+ /***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => {
44296
+
44297
+ /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
44298
+ /* harmony export */ l: () => (/* binding */ getGitHubToken)
44299
+ /* harmony export */ });
44300
+ /* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(6181);
44301
+
44302
+ async function getGitHubToken() {
44303
+ if (process.env.GITHUB_TOKEN)
44304
+ return process.env.GITHUB_TOKEN;
44305
+ try {
44306
+ const { stdout } = await (0,execa__WEBPACK_IMPORTED_MODULE_0__/* .execa */ .Ho)("gh", ["auth", "token"]);
44307
+ return stdout.trim();
44308
+ }
44309
+ catch {
44310
+ return "";
44311
+ }
44312
+ }
44313
+
44314
+
44315
+ /***/ }),
44316
+
44317
+ /***/ 5534:
44318
+ /***/ ((__unused_webpack_module, __webpack_exports__, __nccwpck_require__) => {
44319
+
44320
+ /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
44321
+ /* harmony export */ U: () => (/* binding */ getMessagePrefix),
44322
+ /* harmony export */ l: () => (/* binding */ getMessageColor)
44323
+ /* harmony export */ });
44324
+ function getMessageColor(type) {
44325
+ switch (type) {
44326
+ case "success":
44327
+ return "green";
44328
+ case "error":
44329
+ return "red";
44330
+ case "info":
44331
+ return "cyan";
44332
+ case "user":
44333
+ return "white";
44334
+ case "system":
44335
+ return "gray";
44336
+ default:
44337
+ return undefined;
44338
+ }
44339
+ }
44340
+ function getMessagePrefix(type) {
44341
+ switch (type) {
44342
+ case "user":
44343
+ return "› ";
44344
+ case "system":
44345
+ return "⚡ ";
44346
+ default:
44347
+ return "";
44348
+ }
44349
+ }
44350
+
44351
+
44290
44352
  /***/ }),
44291
44353
 
44292
44354
  /***/ 6400:
@@ -44299,12 +44361,13 @@ __webpack_async_result__();
44299
44361
  /* harmony export */ rP: () => (/* binding */ installSkill),
44300
44362
  /* harmony export */ wW: () => (/* binding */ uninstallSkill)
44301
44363
  /* harmony export */ });
44302
- /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(9896);
44303
- /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__);
44304
- /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(6928);
44305
- /* harmony import */ var path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nccwpck_require__.n(path__WEBPACK_IMPORTED_MODULE_1__);
44306
- /* harmony import */ var os__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(857);
44307
- /* harmony import */ var os__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(os__WEBPACK_IMPORTED_MODULE_2__);
44364
+ /* unused harmony export findInstructionsFile */
44365
+ /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3024);
44366
+ /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);
44367
+ /* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(8161);
44368
+ /* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nccwpck_require__.n(node_os__WEBPACK_IMPORTED_MODULE_1__);
44369
+ /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(6760);
44370
+ /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(node_path__WEBPACK_IMPORTED_MODULE_2__);
44308
44371
  /* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(6181);
44309
44372
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(6878);
44310
44373
 
@@ -44317,30 +44380,30 @@ function defaultConfig() {
44317
44380
  return { $schema: OPENCODE_SCHEMA, instructions: [] };
44318
44381
  }
44319
44382
  function getSkillsDir() {
44320
- const dir = path__WEBPACK_IMPORTED_MODULE_1___default().join(os__WEBPACK_IMPORTED_MODULE_2___default().homedir(), ".sith", "skills");
44321
- fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(dir, { recursive: true });
44383
+ const dir = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(node_os__WEBPACK_IMPORTED_MODULE_1___default().homedir(), ".sith", "skills");
44384
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(dir, { recursive: true });
44322
44385
  return dir;
44323
44386
  }
44324
44387
  function getOpenCodeConfigPath() {
44325
- const configPath = path__WEBPACK_IMPORTED_MODULE_1___default().join(os__WEBPACK_IMPORTED_MODULE_2___default().homedir(), ".sith", "opencode.json");
44388
+ const configPath = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(node_os__WEBPACK_IMPORTED_MODULE_1___default().homedir(), ".sith", "opencode.json");
44326
44389
  // Docker bind-mount creates a directory if the source doesn't exist; ensure it's a file.
44327
- if (fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(configPath) && fs__WEBPACK_IMPORTED_MODULE_0___default().statSync(configPath).isDirectory()) {
44328
- fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(configPath, { recursive: true, force: true });
44390
+ if (node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(configPath) && node_fs__WEBPACK_IMPORTED_MODULE_0___default().statSync(configPath).isDirectory()) {
44391
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(configPath, { recursive: true, force: true });
44329
44392
  }
44330
- if (!fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(configPath)) {
44331
- fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(path__WEBPACK_IMPORTED_MODULE_1___default().dirname(configPath), { recursive: true });
44332
- fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(configPath, JSON.stringify(defaultConfig(), null, 2));
44393
+ if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(configPath)) {
44394
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().dirname(configPath), { recursive: true });
44395
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(configPath, JSON.stringify(defaultConfig(), null, 2));
44333
44396
  }
44334
44397
  return configPath;
44335
44398
  }
44336
44399
  function readConfig() {
44337
- const parsed = JSON.parse(fs__WEBPACK_IMPORTED_MODULE_0___default().readFileSync(getOpenCodeConfigPath(), "utf8"));
44400
+ const parsed = JSON.parse(node_fs__WEBPACK_IMPORTED_MODULE_0___default().readFileSync(getOpenCodeConfigPath(), "utf8"));
44338
44401
  if (!Array.isArray(parsed.instructions))
44339
44402
  parsed.instructions = [];
44340
44403
  return parsed;
44341
44404
  }
44342
44405
  function writeConfig(config) {
44343
- fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(getOpenCodeConfigPath(), JSON.stringify(config, null, 2));
44406
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(getOpenCodeConfigPath(), JSON.stringify(config, null, 2));
44344
44407
  }
44345
44408
  function addInstruction(containerPath) {
44346
44409
  const config = readConfig();
@@ -44355,46 +44418,46 @@ function removeInstructionsUnder(skillContainerDir) {
44355
44418
  writeConfig(config);
44356
44419
  }
44357
44420
  function findInstructionsFile(skillDir) {
44358
- const skillName = path__WEBPACK_IMPORTED_MODULE_1___default().basename(skillDir);
44421
+ const skillName = node_path__WEBPACK_IMPORTED_MODULE_2___default().basename(skillDir);
44359
44422
  const candidates = [
44360
44423
  "SKILL.md",
44361
44424
  "CAVEMAN.md",
44362
44425
  "instructions.md",
44363
- path__WEBPACK_IMPORTED_MODULE_1___default().join("skills", skillName, "SKILL.md"),
44426
+ node_path__WEBPACK_IMPORTED_MODULE_2___default().join("skills", skillName, "SKILL.md"),
44364
44427
  "AGENTS.md",
44365
44428
  ];
44366
- return candidates.find((name) => fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(path__WEBPACK_IMPORTED_MODULE_1___default().join(skillDir, name))) ?? null;
44429
+ return (candidates.find((name) => node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().join(skillDir, name))) ?? null);
44367
44430
  }
44368
44431
  function isInstalled(name) {
44369
- return fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(path__WEBPACK_IMPORTED_MODULE_1___default().join(getSkillsDir(), name, "skill.json"));
44432
+ return node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().join(getSkillsDir(), name, "skill.json"));
44370
44433
  }
44371
44434
  async function installSkill(skill) {
44372
- const targetDir = path__WEBPACK_IMPORTED_MODULE_1___default().join(getSkillsDir(), skill.name);
44435
+ const targetDir = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(getSkillsDir(), skill.name);
44373
44436
  if (skill.builtinInstructions) {
44374
- fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(targetDir, { recursive: true });
44375
- fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(path__WEBPACK_IMPORTED_MODULE_1___default().join(targetDir, "SKILL.md"), skill.builtinInstructions);
44376
- fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(path__WEBPACK_IMPORTED_MODULE_1___default().join(targetDir, "skill.json"), JSON.stringify({ name: skill.name, version: "builtin" }, null, 2));
44437
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(targetDir, { recursive: true });
44438
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().join(targetDir, "SKILL.md"), skill.builtinInstructions);
44439
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().join(targetDir, "skill.json"), JSON.stringify({ name: skill.name, version: "builtin" }, null, 2));
44377
44440
  addInstruction(`${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.skillsMount}/${skill.name}/SKILL.md`);
44378
44441
  return;
44379
44442
  }
44380
44443
  if (!skill.source)
44381
44444
  throw new Error(`Skill "${skill.name}" has no source URL`);
44382
- const tmpZip = path__WEBPACK_IMPORTED_MODULE_1___default().join(os__WEBPACK_IMPORTED_MODULE_2___default().tmpdir(), `sith-skill-${skill.name}.zip`);
44383
- const tmpExtract = path__WEBPACK_IMPORTED_MODULE_1___default().join(os__WEBPACK_IMPORTED_MODULE_2___default().tmpdir(), `sith-skill-${skill.name}-extract`);
44445
+ const tmpZip = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(node_os__WEBPACK_IMPORTED_MODULE_1___default().tmpdir(), `sith-skill-${skill.name}.zip`);
44446
+ const tmpExtract = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(node_os__WEBPACK_IMPORTED_MODULE_1___default().tmpdir(), `sith-skill-${skill.name}-extract`);
44384
44447
  try {
44385
44448
  await (0,execa__WEBPACK_IMPORTED_MODULE_4__/* .execa */ .Ho)("curl", ["-fsSL", skill.source, "-o", tmpZip]);
44386
- fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(tmpExtract, { recursive: true });
44449
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(tmpExtract, { recursive: true });
44387
44450
  await (0,execa__WEBPACK_IMPORTED_MODULE_4__/* .execa */ .Ho)("unzip", ["-q", "-o", tmpZip, "-d", tmpExtract]);
44388
- const entries = fs__WEBPACK_IMPORTED_MODULE_0___default().readdirSync(tmpExtract);
44451
+ const entries = node_fs__WEBPACK_IMPORTED_MODULE_0___default().readdirSync(tmpExtract);
44389
44452
  if (entries.length === 0)
44390
44453
  throw new Error("Empty archive");
44391
- const extracted = path__WEBPACK_IMPORTED_MODULE_1___default().join(tmpExtract, entries[0]);
44392
- if (fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(targetDir))
44393
- fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(targetDir, { recursive: true, force: true });
44394
- fs__WEBPACK_IMPORTED_MODULE_0___default().cpSync(extracted, targetDir, { recursive: true });
44395
- const skillJson = path__WEBPACK_IMPORTED_MODULE_1___default().join(targetDir, "skill.json");
44396
- if (!fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(skillJson)) {
44397
- fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(skillJson, JSON.stringify({ name: skill.name, version: "local" }, null, 2));
44454
+ const extracted = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(tmpExtract, entries[0]);
44455
+ if (node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(targetDir))
44456
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(targetDir, { recursive: true, force: true });
44457
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().cpSync(extracted, targetDir, { recursive: true });
44458
+ const skillJson = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(targetDir, "skill.json");
44459
+ if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(skillJson)) {
44460
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(skillJson, JSON.stringify({ name: skill.name, version: "local" }, null, 2));
44398
44461
  }
44399
44462
  const instructionsFile = findInstructionsFile(targetDir);
44400
44463
  if (instructionsFile) {
@@ -44402,15 +44465,15 @@ async function installSkill(skill) {
44402
44465
  }
44403
44466
  }
44404
44467
  finally {
44405
- fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(tmpZip, { force: true });
44406
- fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(tmpExtract, { recursive: true, force: true });
44468
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(tmpZip, { force: true });
44469
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(tmpExtract, { recursive: true, force: true });
44407
44470
  }
44408
44471
  }
44409
44472
  function uninstallSkill(name) {
44410
44473
  removeInstructionsUnder(`${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.skillsMount}/${name}/`);
44411
- const targetDir = path__WEBPACK_IMPORTED_MODULE_1___default().join(getSkillsDir(), name);
44412
- if (fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(targetDir)) {
44413
- fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(targetDir, { recursive: true, force: true });
44474
+ const targetDir = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(getSkillsDir(), name);
44475
+ if (node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(targetDir)) {
44476
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(targetDir, { recursive: true, force: true });
44414
44477
  }
44415
44478
  }
44416
44479
 
@@ -64180,7 +64243,7 @@ let currentUpdatePriority = react_reconciler_constants_js__WEBPACK_IMPORTED_MODU
64180
64243
  let currentRootNode;
64181
64244
  async function loadPackageJson() {
64182
64245
  const fs = await Promise.resolve(/* import() */).then(__nccwpck_require__.t.bind(__nccwpck_require__, 3024, 19));
64183
- const content = fs.readFileSync(__nccwpck_require__.ab + "package1.json", 'utf8');
64246
+ const content = fs.readFileSync(__nccwpck_require__.ab + "package.json", 'utf8');
64184
64247
  const parsedContent = JSON.parse(content);
64185
64248
  return {
64186
64249
  name: parsedContent?.name,