@m14i/sith 1.21.0 → 1.21.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.
@@ -1 +1 @@
1
- {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/commands/docker.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEX,oBAAoB,EAEpB,MAAM,aAAa,CAAC;AAqTrB,wBAAsB,aAAa,CAClC,OAAO,EAAE,oBAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpD"}
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/commands/docker.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAEX,oBAAoB,EAEpB,MAAM,aAAa,CAAC;AAsTrB,wBAAsB,aAAa,CAClC,OAAO,EAAE,oBAAoB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAoBf;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpD"}
@@ -1,2 +1,7 @@
1
+ import React from "react";
2
+ declare function SkillsMenu({ onClose }: {
3
+ onClose?: () => void;
4
+ }): React.ReactElement;
5
+ export { SkillsMenu };
1
6
  export declare function skillsCommand(): void;
2
7
  //# sourceMappingURL=skills.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/commands/skills.tsx"],"names":[],"mappings":"AAuIA,wBAAgB,aAAa,IAAI,IAAI,CAEpC"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/commands/skills.tsx"],"names":[],"mappings":"AACA,OAAO,KAAmB,MAAM,OAAO,CAAC;AA+BxC,iBAAS,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,GAAG,KAAK,CAAC,YAAY,CAuI7E;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AAEtB,wBAAgB,aAAa,IAAI,IAAI,CAEpC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TerminalUI.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/components/TerminalUI.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAgC,MAAM,OAAO,CAAC;AA0JrD,wBAAgB,UAAU,IAAI,KAAK,CAAC,YAAY,CA8R/C;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
1
+ {"version":3,"file":"TerminalUI.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/components/TerminalUI.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAiJ7D,wBAAgB,UAAU,IAAI,KAAK,CAAC,YAAY,CAoS/C;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,eAAO,MAAM,cAAc,EAAE,UAAU,EA6CtC,CAAC;AAGF,eAAO,MAAM,aAAa;;;;;;;;;;;CAWhB,CAAC;AAGX,eAAO,MAAM,UAAU;;;;;;CAMb,CAAC;AAGX,eAAO,MAAM,cAAc;;;CAGjB,CAAC;AAGX,eAAO,MAAM,UAAU,mOAOb,CAAC"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,eAAO,MAAM,cAAc,EAAE,UAAU,EA8CtC,CAAC;AAGF,eAAO,MAAM,aAAa;;;;;;;;;;;CAWhB,CAAC;AAGX,eAAO,MAAM,UAAU;;;;;;CAMb,CAAC;AAGX,eAAO,MAAM,cAAc;;;CAGjB,CAAC;AAGX,eAAO,MAAM,UAAU,mOAOb,CAAC"}
package/dist/index.js CHANGED
@@ -42975,16 +42975,18 @@ __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __we
42975
42975
  /* harmony import */ var node_path__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__nccwpck_require__.n(node_path__WEBPACK_IMPORTED_MODULE_1__);
42976
42976
  /* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(3136);
42977
42977
  /* harmony import */ var node_url__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__nccwpck_require__.n(node_url__WEBPACK_IMPORTED_MODULE_2__);
42978
- /* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(6181);
42978
+ /* harmony import */ var execa__WEBPACK_IMPORTED_MODULE_10__ = __nccwpck_require__(6181);
42979
42979
  /* harmony import */ var ink__WEBPACK_IMPORTED_MODULE_3__ = __nccwpck_require__(3816);
42980
42980
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4__ = __nccwpck_require__(2864);
42981
42981
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__nccwpck_require__.n(react__WEBPACK_IMPORTED_MODULE_4__);
42982
42982
  /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __nccwpck_require__(6878);
42983
- /* harmony import */ var _utils_skills_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(6400);
42984
- /* harmony import */ var _nix_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(9922);
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_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__);
42983
+ /* harmony import */ var _utils_dockerArgs_js__WEBPACK_IMPORTED_MODULE_6__ = __nccwpck_require__(4495);
42984
+ /* harmony import */ var _utils_skills_js__WEBPACK_IMPORTED_MODULE_7__ = __nccwpck_require__(6400);
42985
+ /* harmony import */ var _nix_js__WEBPACK_IMPORTED_MODULE_8__ = __nccwpck_require__(9922);
42986
+ /* harmony import */ var _skills_js__WEBPACK_IMPORTED_MODULE_9__ = __nccwpck_require__(9805);
42987
+ var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([ink__WEBPACK_IMPORTED_MODULE_3__, _skills_js__WEBPACK_IMPORTED_MODULE_9__]);
42988
+ ([ink__WEBPACK_IMPORTED_MODULE_3__, _skills_js__WEBPACK_IMPORTED_MODULE_9__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);
42989
+
42988
42990
 
42989
42991
 
42990
42992
 
@@ -43079,7 +43081,7 @@ function Menu() {
43079
43081
  return;
43080
43082
  case "skills":
43081
43083
  exit();
43082
- (0,_skills_js__WEBPACK_IMPORTED_MODULE_8__/* .skillsCommand */ .a)();
43084
+ (0,_skills_js__WEBPACK_IMPORTED_MODULE_9__/* .skillsCommand */ .a)();
43083
43085
  return;
43084
43086
  case "config":
43085
43087
  setCurrentMenu("config");
@@ -43106,11 +43108,11 @@ function Menu() {
43106
43108
  setIsProcessing(true);
43107
43109
  setProcessStep("Pulling prebuilt Docker image...");
43108
43110
  try {
43109
- await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("docker", ["pull", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.prebuiltImage], {
43111
+ await (0,execa__WEBPACK_IMPORTED_MODULE_10__/* .execa */ .Ho)("docker", ["pull", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.prebuiltImage], {
43110
43112
  stdio: "inherit",
43111
43113
  });
43112
43114
  // Tag the pulled image with local name for compatibility
43113
- await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("docker", ["tag", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.prebuiltImage, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.imageName], {
43115
+ await (0,execa__WEBPACK_IMPORTED_MODULE_10__/* .execa */ .Ho)("docker", ["tag", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.prebuiltImage, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.imageName], {
43114
43116
  stdio: "inherit",
43115
43117
  });
43116
43118
  setIsProcessing(false);
@@ -43126,8 +43128,8 @@ function Menu() {
43126
43128
  setIsProcessing(true);
43127
43129
  setProcessStep("Installing Nix locally...");
43128
43130
  try {
43129
- await (0,_nix_js__WEBPACK_IMPORTED_MODULE_7__/* .installNix */ .Fh)();
43130
- await (0,_nix_js__WEBPACK_IMPORTED_MODULE_7__/* .copyNixFiles */ .Qi)();
43131
+ await (0,_nix_js__WEBPACK_IMPORTED_MODULE_8__/* .installNix */ .Fh)();
43132
+ await (0,_nix_js__WEBPACK_IMPORTED_MODULE_8__/* .copyNixFiles */ .Qi)();
43131
43133
  setIsProcessing(false);
43132
43134
  setProcessComplete(true);
43133
43135
  setProcessStep("");
@@ -43145,7 +43147,7 @@ function Menu() {
43145
43147
  if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(dockerfilePath)) {
43146
43148
  throw new Error(`Dockerfile not found at: ${dockerfilePath}`);
43147
43149
  }
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], {
43150
+ await (0,execa__WEBPACK_IMPORTED_MODULE_10__/* .execa */ .Ho)("docker", ["build", "-f", dockerfilePath, "-t", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.imageName, rootDir], {
43149
43151
  stdio: "inherit",
43150
43152
  });
43151
43153
  setIsProcessing(false);
@@ -43240,12 +43242,12 @@ async function pullDocker() {
43240
43242
  console.log(`Source: ${_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.prebuiltImage}`);
43241
43243
  console.log(`Target: ${_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.imageName}`);
43242
43244
  console.log();
43243
- await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("docker", ["pull", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.prebuiltImage], {
43245
+ await (0,execa__WEBPACK_IMPORTED_MODULE_10__/* .execa */ .Ho)("docker", ["pull", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.prebuiltImage], {
43244
43246
  stdio: "inherit",
43245
43247
  });
43246
43248
  console.log();
43247
43249
  console.log("🏷️ Tagging image for local use...");
43248
- await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("docker", ["tag", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.prebuiltImage, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.imageName], {
43250
+ await (0,execa__WEBPACK_IMPORTED_MODULE_10__/* .execa */ .Ho)("docker", ["tag", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.prebuiltImage, _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.imageName], {
43249
43251
  stdio: "inherit",
43250
43252
  });
43251
43253
  console.log();
@@ -43273,7 +43275,7 @@ async function buildDocker() {
43273
43275
  console.log(`Root: ${rootDir}`);
43274
43276
  console.log(`Dockerfile: ${dockerfilePath}`);
43275
43277
  console.log();
43276
- 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], {
43278
+ await (0,execa__WEBPACK_IMPORTED_MODULE_10__/* .execa */ .Ho)("docker", ["build", "-f", dockerfilePath, "-t", _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.imageName, rootDir], {
43277
43279
  stdio: "inherit",
43278
43280
  });
43279
43281
  console.log();
@@ -43291,8 +43293,7 @@ async function buildDocker() {
43291
43293
  }
43292
43294
  }
43293
43295
  async function runShell() {
43294
- const skillsDir = (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_6__/* .getSkillsDir */ .YJ)();
43295
- const opencodeConfigPath = (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_6__/* .getOpenCodeConfigPath */ .Jn)();
43296
+ const skillsDir = (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_7__/* .getSkillsDir */ .YJ)();
43296
43297
  console.log("🚀 Starting interactive shell...");
43297
43298
  console.log(`Mounting workspace to ${_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.workspaceMount}`);
43298
43299
  console.log(`Mounting skills from ${skillsDir} to ${_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.skillsMount}`);
@@ -43302,7 +43303,7 @@ async function runShell() {
43302
43303
  let githubToken = process.env.GITHUB_TOKEN || "";
43303
43304
  if (!githubToken) {
43304
43305
  try {
43305
- const { stdout } = await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("gh", ["auth", "token"]);
43306
+ const { stdout } = await (0,execa__WEBPACK_IMPORTED_MODULE_10__/* .execa */ .Ho)("gh", ["auth", "token"]);
43306
43307
  githubToken = stdout.trim();
43307
43308
  }
43308
43309
  catch {
@@ -43310,27 +43311,8 @@ async function runShell() {
43310
43311
  }
43311
43312
  }
43312
43313
  const claudeOauthToken = process.env.CLAUDE_CODE_OAUTH_TOKEN || "";
43313
- const dockerArgs = [
43314
- "run",
43315
- "--rm",
43316
- "-it",
43317
- "-v",
43318
- `${process.cwd()}:${_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.workspaceMount}`,
43319
- "-v",
43320
- `${skillsDir}:${_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.skillsMount}`,
43321
- "-v",
43322
- `${opencodeConfigPath}:${_config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.opencodeConfigMount}`,
43323
- "-e",
43324
- `GITHUB_TOKEN=${githubToken}`,
43325
- ...(claudeOauthToken
43326
- ? ["-e", `CLAUDE_CODE_OAUTH_TOKEN=${claudeOauthToken}`]
43327
- : []),
43328
- "--entrypoint",
43329
- "nix-shell",
43330
- _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.imageName,
43331
- _config_js__WEBPACK_IMPORTED_MODULE_5__/* .DOCKER_CONFIG */ .e6.shellEntrypoint,
43332
- ];
43333
- await (0,execa__WEBPACK_IMPORTED_MODULE_9__/* .execa */ .Ho)("docker", dockerArgs, {
43314
+ const dockerArgs = (0,_utils_dockerArgs_js__WEBPACK_IMPORTED_MODULE_6__/* .buildDockerShellCommand */ .ac)(githubToken, claudeOauthToken);
43315
+ await (0,execa__WEBPACK_IMPORTED_MODULE_10__/* .execa */ .Ho)("docker", dockerArgs, {
43334
43316
  stdio: "inherit",
43335
43317
  reject: false,
43336
43318
  });
@@ -43536,7 +43518,8 @@ async function nixCommand(options) {
43536
43518
 
43537
43519
  __nccwpck_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {
43538
43520
  /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
43539
- /* harmony export */ a: () => (/* binding */ skillsCommand)
43521
+ /* harmony export */ a: () => (/* binding */ skillsCommand),
43522
+ /* harmony export */ c: () => (/* binding */ SkillsMenu)
43540
43523
  /* harmony export */ });
43541
43524
  /* harmony import */ var ink__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3816);
43542
43525
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(2864);
@@ -43559,11 +43542,12 @@ function statusIcon(row) {
43559
43542
  return row.installed ? "✅" : "☐";
43560
43543
  }
43561
43544
  }
43562
- function SkillsMenu() {
43545
+ function SkillsMenu({ onClose }) {
43563
43546
  const { exit } = (0,ink__WEBPACK_IMPORTED_MODULE_0__/* .useApp */ .nm)();
43564
43547
  const [selectedIndex, setSelectedIndex] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);
43565
43548
  const [rows, setRows] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(_config_js__WEBPACK_IMPORTED_MODULE_2__/* .SKILLS_CATALOG */ .XI.map((s) => ({
43566
43549
  installed: (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .isInstalled */ .j$)(s.name),
43550
+ autoLoad: (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .getSkillAutoLoad */ .z8)(s.name),
43567
43551
  status: "idle",
43568
43552
  message: "",
43569
43553
  })));
@@ -43588,6 +43572,7 @@ function SkillsMenu() {
43588
43572
  await (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .installSkill */ .rP)(skill);
43589
43573
  setRow(index, {
43590
43574
  installed: true,
43575
+ autoLoad: skill.autoLoad ?? false,
43591
43576
  status: "done",
43592
43577
  message: "Installed",
43593
43578
  });
@@ -43616,8 +43601,26 @@ function SkillsMenu() {
43616
43601
  }
43617
43602
  return;
43618
43603
  }
43604
+ if (input === "a") {
43605
+ const row = rows[selectedIndex];
43606
+ if (row.installed && row.status !== "working") {
43607
+ const newAutoLoad = !row.autoLoad;
43608
+ (0,_utils_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .setSkillAutoLoad */ .lJ)(_config_js__WEBPACK_IMPORTED_MODULE_2__/* .SKILLS_CATALOG */ .XI[selectedIndex].name, newAutoLoad);
43609
+ setRow(selectedIndex, {
43610
+ autoLoad: newAutoLoad,
43611
+ status: "done",
43612
+ message: newAutoLoad ? "Auto-load on" : "On-demand",
43613
+ });
43614
+ }
43615
+ return;
43616
+ }
43619
43617
  if (input === "q" || key.escape) {
43620
- exit();
43618
+ if (onClose) {
43619
+ onClose();
43620
+ }
43621
+ else {
43622
+ exit();
43623
+ }
43621
43624
  }
43622
43625
  });
43623
43626
  return (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", paddingX: 1 },
@@ -43634,13 +43637,17 @@ function SkillsMenu() {
43634
43637
  " ",
43635
43638
  skill.name.padEnd(12)),
43636
43639
  react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: !isSelected }, skill.description),
43640
+ row.installed ? (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { color: row.autoLoad ? "green" : "yellow" },
43641
+ " ",
43642
+ row.autoLoad ? "[auto]" : "[on-demand]")) : null,
43637
43643
  row.message ? (react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { color: row.status === "error" ? "red" : "green" },
43638
43644
  " ",
43639
43645
  row.message)) : null));
43640
43646
  }),
43641
43647
  react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { marginTop: 1 },
43642
- react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, "\u2191\u2193 navigate Enter install/uninstall q quit"))));
43648
+ react__WEBPACK_IMPORTED_MODULE_1___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, "\u2191\u2193 navigate Enter install/uninstall a toggle auto-load q quit"))));
43643
43649
  }
43650
+
43644
43651
  function skillsCommand() {
43645
43652
  (0,ink__WEBPACK_IMPORTED_MODULE_0__/* .render */ .XX)(react__WEBPACK_IMPORTED_MODULE_1___default().createElement(SkillsMenu, null));
43646
43653
  }
@@ -43836,13 +43843,16 @@ const TOOLS = [
43836
43843
  },
43837
43844
  { value: "claude", label: "Claude Code", description: "Anthropic Claude" },
43838
43845
  ];
43839
- function ToolPicker({ selectedIndex }) {
43840
- return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", justifyContent: "center", alignItems: "center", paddingY: 2 },
43841
- 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) => (
43846
+ function SithHeader() {
43847
+ return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", alignItems: "center", paddingY: 1 },
43848
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column" }, _config_js__WEBPACK_IMPORTED_MODULE_4__/* .ASCII_LOGO */ .mF.map((line, index) => (
43842
43849
  // biome-ignore lint/suspicious/noArrayIndexKey: static array, order never changes
43843
43850
  react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { key: index, color: "red", bold: true }, line)))),
43844
- react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", alignItems: "center", marginTop: 1, marginBottom: 2 },
43845
- react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, "Turn your context to the dark side")),
43851
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, "Turn your context to the dark side")));
43852
+ }
43853
+ function ToolPicker({ selectedIndex }) {
43854
+ return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", justifyContent: "center", alignItems: "center", paddingY: 2 },
43855
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(SithHeader, null),
43846
43856
  react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", borderStyle: "single", borderColor: "gray", paddingX: 4, paddingY: 1 },
43847
43857
  react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { marginBottom: 1 },
43848
43858
  react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { color: "cyan", bold: true }, "Select AI Tool")),
@@ -43858,12 +43868,8 @@ function ToolPicker({ selectedIndex }) {
43858
43868
  }
43859
43869
  function WelcomeScreen({ tool }) {
43860
43870
  const toolLabel = TOOLS.find((t) => t.value === tool)?.label ?? tool;
43861
- return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", justifyContent: "center", alignItems: "center", paddingY: 2 },
43862
- 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) => (
43863
- // biome-ignore lint/suspicious/noArrayIndexKey: static array, order never changes
43864
- react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { key: index, color: "red", bold: true }, line)))),
43865
- react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", alignItems: "center", marginTop: 1 },
43866
- react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { dimColor: true }, "Turn your context to the dark side"),
43871
+ return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", justifyContent: "center", alignItems: "center" },
43872
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", alignItems: "center" },
43867
43873
  react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { color: "cyan" },
43868
43874
  "Tool: ",
43869
43875
  react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { bold: true }, toolLabel))),
@@ -43891,19 +43897,19 @@ function TerminalUI() {
43891
43897
  const [input, setInput] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)("");
43892
43898
  const [messages, setMessages] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)([]);
43893
43899
  const [showConfigModal, setShowConfigModal] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);
43894
- const [nextMessageId, setNextMessageId] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(1);
43900
+ const [showSkillsMenu, setShowSkillsMenu] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);
43901
+ const nextMessageId = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(1);
43895
43902
  const [selectedTool, setSelectedTool] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(null);
43896
43903
  const [toolPickerIndex, setToolPickerIndex] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(0);
43897
43904
  const addMessage = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)((text, type = "system") => {
43898
43905
  const newMessage = {
43899
- id: nextMessageId,
43906
+ id: nextMessageId.current++,
43900
43907
  text,
43901
43908
  type,
43902
43909
  timestamp: new Date(),
43903
43910
  };
43904
43911
  setMessages((previousMessages) => [...previousMessages, newMessage]);
43905
- setNextMessageId((previousId) => previousId + 1);
43906
- }, [nextMessageId]);
43912
+ }, []);
43907
43913
  const handleDockerShell = (0,react__WEBPACK_IMPORTED_MODULE_2__.useCallback)(async () => {
43908
43914
  exit();
43909
43915
  console.log("🚀 Starting Docker shell...");
@@ -43973,8 +43979,7 @@ function TerminalUI() {
43973
43979
  await handleDockerShell();
43974
43980
  break;
43975
43981
  case "skills":
43976
- exit();
43977
- (0,_commands_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .skillsCommand */ .a)();
43982
+ setShowSkillsMenu(true);
43978
43983
  break;
43979
43984
  case "config":
43980
43985
  setShowConfigModal(true);
@@ -44057,13 +44062,17 @@ function TerminalUI() {
44057
44062
  return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column" },
44058
44063
  react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_ConfigModal_js__WEBPACK_IMPORTED_MODULE_6__/* .ConfigModal */ .y, { onClose: handleConfigModalClose, onMessage: handleConfigModalMessage })));
44059
44064
  }
44065
+ if (showSkillsMenu) {
44066
+ return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column" },
44067
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(_commands_skills_js__WEBPACK_IMPORTED_MODULE_3__/* .SkillsMenu */ .c, { onClose: () => setShowSkillsMenu(false) })));
44068
+ }
44060
44069
  if (selectedTool === null) {
44061
44070
  return react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ToolPicker, { selectedIndex: toolPickerIndex });
44062
44071
  }
44063
- const shouldShowWelcome = messages.length === 0;
44064
44072
  const recentMessages = messages.slice(-10);
44065
44073
  return (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", height: "100%" },
44066
- shouldShowWelcome ? (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(WelcomeScreen, { tool: selectedTool })) : (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", flexGrow: 1, marginBottom: 1 }, recentMessages.map((message) => (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(MessageItem, { key: message.id, message: message }))))),
44074
+ react__WEBPACK_IMPORTED_MODULE_2___default().createElement(SithHeader, null),
44075
+ messages.length === 0 ? (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(WelcomeScreen, { tool: selectedTool })) : (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column", flexGrow: 1, marginBottom: 1 }, recentMessages.map((message) => (react__WEBPACK_IMPORTED_MODULE_2___default().createElement(MessageItem, { key: message.id, message: message }))))),
44067
44076
  react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { flexDirection: "column" },
44068
44077
  react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Box */ .az, { borderStyle: "single", borderColor: "gray", paddingX: 1 },
44069
44078
  react__WEBPACK_IMPORTED_MODULE_2___default().createElement(ink__WEBPACK_IMPORTED_MODULE_0__/* .Text */ .EY, { color: "cyan", bold: true }, "\u203A"),
@@ -44097,6 +44106,7 @@ const SKILLS_CATALOG = [
44097
44106
  name: "caveman",
44098
44107
  description: "Ultra-compressed communication (~75% token reduction)",
44099
44108
  homepage: "https://github.com/JuliusBrussee/caveman",
44109
+ autoLoad: true,
44100
44110
  builtinInstructions: `---
44101
44111
  name: caveman
44102
44112
  description: Ultra-compressed communication mode (ultra — MAX compression, always active).
@@ -44352,31 +44362,33 @@ __webpack_async_result__();
44352
44362
  /* harmony export */ ac: () => (/* binding */ buildDockerShellCommand),
44353
44363
  /* harmony export */ fn: () => (/* binding */ buildDockerClaudeCodeCommand)
44354
44364
  /* harmony export */ });
44355
- /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3024);
44356
- /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);
44357
- /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(6878);
44358
- /* harmony import */ var _skills_js__WEBPACK_IMPORTED_MODULE_2__ = __nccwpck_require__(6400);
44359
-
44365
+ /* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(6878);
44366
+ /* harmony import */ var _skills_js__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(6400);
44360
44367
 
44361
44368
 
44362
44369
  function buildDockerShellCommand(githubToken, claudeOauthToken) {
44370
+ (0,_skills_js__WEBPACK_IMPORTED_MODULE_1__/* .syncClaudeMd */ .RK)();
44363
44371
  const args = [
44364
44372
  "run",
44365
44373
  "--rm",
44366
44374
  "-it",
44367
44375
  "-v",
44368
- `${process.cwd()}:${_config_js__WEBPACK_IMPORTED_MODULE_1__/* .DOCKER_CONFIG */ .e6.workspaceMount}`,
44376
+ `${process.cwd()}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.workspaceMount}`,
44377
+ "-v",
44378
+ `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_1__/* .getSkillsDir */ .YJ)()}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.skillsMount}`,
44369
44379
  "-v",
44370
- `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_2__/* .getSkillsDir */ .YJ)()}:${_config_js__WEBPACK_IMPORTED_MODULE_1__/* .DOCKER_CONFIG */ .e6.skillsMount}`,
44380
+ `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_1__/* .getSkillsDir */ .YJ)()}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.claudeSkillsMount}`,
44371
44381
  "-v",
44372
- `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_2__/* .getOpenCodeConfigPath */ .Jn)()}:${_config_js__WEBPACK_IMPORTED_MODULE_1__/* .DOCKER_CONFIG */ .e6.opencodeConfigMount}`,
44382
+ `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_1__/* .getClaudeMdPath */ .pF)()}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.claudeConfigMount}/CLAUDE.md`,
44383
+ "-v",
44384
+ `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_1__/* .getOpenCodeConfigPath */ .Jn)()}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.opencodeConfigMount}`,
44373
44385
  "-e",
44374
44386
  `GITHUB_TOKEN=${githubToken}`,
44375
44387
  ];
44376
44388
  if (claudeOauthToken) {
44377
44389
  args.push("-e", `CLAUDE_CODE_OAUTH_TOKEN=${claudeOauthToken}`);
44378
44390
  }
44379
- args.push("--entrypoint", "nix-shell", _config_js__WEBPACK_IMPORTED_MODULE_1__/* .DOCKER_CONFIG */ .e6.imageName, _config_js__WEBPACK_IMPORTED_MODULE_1__/* .DOCKER_CONFIG */ .e6.shellEntrypoint);
44391
+ args.push("--entrypoint", "nix-shell", _config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.imageName, _config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.shellEntrypoint);
44380
44392
  return args;
44381
44393
  }
44382
44394
  function buildDockerOpencodeCommand(githubToken, prompt, claudeOauthToken) {
@@ -44385,18 +44397,18 @@ function buildDockerOpencodeCommand(githubToken, prompt, claudeOauthToken) {
44385
44397
  "--rm",
44386
44398
  "-it",
44387
44399
  "-v",
44388
- `${process.cwd()}:${_config_js__WEBPACK_IMPORTED_MODULE_1__/* .DOCKER_CONFIG */ .e6.workspaceMount}`,
44400
+ `${process.cwd()}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.workspaceMount}`,
44389
44401
  "-v",
44390
- `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_2__/* .getSkillsDir */ .YJ)()}:${_config_js__WEBPACK_IMPORTED_MODULE_1__/* .DOCKER_CONFIG */ .e6.skillsMount}`,
44402
+ `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_1__/* .getSkillsDir */ .YJ)()}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.skillsMount}`,
44391
44403
  "-v",
44392
- `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_2__/* .getOpenCodeConfigPath */ .Jn)()}:${_config_js__WEBPACK_IMPORTED_MODULE_1__/* .DOCKER_CONFIG */ .e6.opencodeConfigMount}`,
44404
+ `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_1__/* .getOpenCodeConfigPath */ .Jn)()}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.opencodeConfigMount}`,
44393
44405
  "-e",
44394
44406
  `GITHUB_TOKEN=${githubToken}`,
44395
44407
  ];
44396
44408
  if (claudeOauthToken) {
44397
44409
  args.push("-e", `CLAUDE_CODE_OAUTH_TOKEN=${claudeOauthToken}`);
44398
44410
  }
44399
- args.push("--entrypoint", "bash", _config_js__WEBPACK_IMPORTED_MODULE_1__/* .DOCKER_CONFIG */ .e6.imageName, "-c");
44411
+ args.push("--entrypoint", "bash", _config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.imageName, "-c");
44400
44412
  let opencodeCommand = "source /opt/sith/nix/nix-scripts/setup.sh && cd /workspace && opencode -m github-copilot/claude-sonnet-4.6";
44401
44413
  if (prompt) {
44402
44414
  const escapedPrompt = prompt.replace(/'/g, "'\\''");
@@ -44406,29 +44418,25 @@ function buildDockerOpencodeCommand(githubToken, prompt, claudeOauthToken) {
44406
44418
  return args;
44407
44419
  }
44408
44420
  function buildDockerClaudeCodeCommand(githubToken, prompt, claudeOauthToken) {
44409
- const claudeConfigDir = (0,_skills_js__WEBPACK_IMPORTED_MODULE_2__/* .getClaudeConfigDir */ .K1)();
44410
- const claudeMdPath = (0,_skills_js__WEBPACK_IMPORTED_MODULE_2__/* .getClaudeMdPath */ .pF)();
44421
+ (0,_skills_js__WEBPACK_IMPORTED_MODULE_1__/* .syncClaudeMd */ .RK)();
44422
+ const claudeMdPath = (0,_skills_js__WEBPACK_IMPORTED_MODULE_1__/* .getClaudeMdPath */ .pF)();
44411
44423
  const args = [
44412
44424
  "run",
44413
44425
  "--rm",
44414
44426
  "-it",
44415
44427
  "-v",
44416
- `${process.cwd()}:${_config_js__WEBPACK_IMPORTED_MODULE_1__/* .DOCKER_CONFIG */ .e6.workspaceMount}`,
44428
+ `${process.cwd()}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.workspaceMount}`,
44417
44429
  "-e",
44418
44430
  `GITHUB_TOKEN=${githubToken}`,
44419
44431
  ];
44420
44432
  if (claudeOauthToken) {
44421
44433
  args.push("-e", `CLAUDE_CODE_OAUTH_TOKEN=${claudeOauthToken}`);
44422
44434
  }
44423
- // Mount ~/.claude first so subsequent mounts can shadow entries within it
44424
- if (node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(claudeConfigDir)) {
44425
- args.push("-v", `${claudeConfigDir}:${_config_js__WEBPACK_IMPORTED_MODULE_1__/* .DOCKER_CONFIG */ .e6.claudeConfigMount}`);
44426
- }
44427
- // Skills dir overrides /root/.claude/skills inside the container
44428
- args.push("-v", `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_2__/* .getSkillsDir */ .YJ)()}:${_config_js__WEBPACK_IMPORTED_MODULE_1__/* .DOCKER_CONFIG */ .e6.claudeSkillsMount}`);
44435
+ // Mount only ~/.sith/ contents never expose ~/.claude to the container
44436
+ args.push("-v", `${(0,_skills_js__WEBPACK_IMPORTED_MODULE_1__/* .getSkillsDir */ .YJ)()}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.claudeSkillsMount}`);
44429
44437
  // Generated CLAUDE.md (with skill @imports) overrides any CLAUDE.md from ~/.claude
44430
- args.push("-v", `${claudeMdPath}:${_config_js__WEBPACK_IMPORTED_MODULE_1__/* .DOCKER_CONFIG */ .e6.claudeConfigMount}/CLAUDE.md`);
44431
- args.push("--entrypoint", "bash", _config_js__WEBPACK_IMPORTED_MODULE_1__/* .DOCKER_CONFIG */ .e6.imageName, "-c");
44438
+ args.push("-v", `${claudeMdPath}:${_config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.claudeConfigMount}/CLAUDE.md`);
44439
+ args.push("--entrypoint", "bash", _config_js__WEBPACK_IMPORTED_MODULE_0__/* .DOCKER_CONFIG */ .e6.imageName, "-c");
44432
44440
  let claudeCommand = "source /opt/sith/nix/nix-scripts/setup.sh && cd /workspace && /root/.npm-global/bin/claude";
44433
44441
  if (prompt) {
44434
44442
  const escapedPrompt = prompt.replace(/'/g, "'\\''");
@@ -44506,14 +44514,16 @@ function getMessagePrefix(type) {
44506
44514
 
44507
44515
  /* harmony export */ __nccwpck_require__.d(__webpack_exports__, {
44508
44516
  /* harmony export */ Jn: () => (/* binding */ getOpenCodeConfigPath),
44509
- /* harmony export */ K1: () => (/* binding */ getClaudeConfigDir),
44517
+ /* harmony export */ RK: () => (/* binding */ syncClaudeMd),
44510
44518
  /* harmony export */ YJ: () => (/* binding */ getSkillsDir),
44511
44519
  /* harmony export */ j$: () => (/* binding */ isInstalled),
44520
+ /* harmony export */ lJ: () => (/* binding */ setSkillAutoLoad),
44512
44521
  /* harmony export */ pF: () => (/* binding */ getClaudeMdPath),
44513
44522
  /* harmony export */ rP: () => (/* binding */ installSkill),
44514
- /* harmony export */ wW: () => (/* binding */ uninstallSkill)
44523
+ /* harmony export */ wW: () => (/* binding */ uninstallSkill),
44524
+ /* harmony export */ z8: () => (/* binding */ getSkillAutoLoad)
44515
44525
  /* harmony export */ });
44516
- /* unused harmony export findInstructionsFile */
44526
+ /* unused harmony exports getClaudeConfigDir, findInstructionsFile */
44517
44527
  /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0__ = __nccwpck_require__(3024);
44518
44528
  /* harmony import */ var node_fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__nccwpck_require__.n(node_fs__WEBPACK_IMPORTED_MODULE_0__);
44519
44529
  /* harmony import */ var node_os__WEBPACK_IMPORTED_MODULE_1__ = __nccwpck_require__(8161);
@@ -44528,8 +44538,9 @@ function getMessagePrefix(type) {
44528
44538
 
44529
44539
 
44530
44540
  const OPENCODE_SCHEMA = "https://opencode.ai/config.json";
44541
+ const DEFAULT_MODEL = "github-copilot/claude-sonnet-4.6";
44531
44542
  function defaultConfig() {
44532
- return { $schema: OPENCODE_SCHEMA, instructions: [] };
44543
+ return { $schema: OPENCODE_SCHEMA, model: DEFAULT_MODEL, instructions: [] };
44533
44544
  }
44534
44545
  function getSkillsDir() {
44535
44546
  const dir = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(node_os__WEBPACK_IMPORTED_MODULE_1___default().homedir(), ".sith", "skills");
@@ -44537,25 +44548,38 @@ function getSkillsDir() {
44537
44548
  return dir;
44538
44549
  }
44539
44550
  function getClaudeConfigDir() {
44540
- return node_path__WEBPACK_IMPORTED_MODULE_2___default().join(node_os__WEBPACK_IMPORTED_MODULE_1___default().homedir(), ".claude");
44551
+ return path.join(os.homedir(), ".claude");
44541
44552
  }
44542
44553
  function getClaudeMdPath() {
44543
44554
  const claudeMdPath = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(node_os__WEBPACK_IMPORTED_MODULE_1___default().homedir(), ".sith", "CLAUDE.md");
44544
- if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(claudeMdPath)) {
44545
- node_fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().dirname(claudeMdPath), { recursive: true });
44546
- node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(claudeMdPath, "");
44555
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().dirname(claudeMdPath), { recursive: true });
44556
+ try {
44557
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(claudeMdPath, "", { flag: "ax" });
44558
+ }
44559
+ catch {
44560
+ // already exists
44547
44561
  }
44548
44562
  return claudeMdPath;
44549
44563
  }
44550
44564
  function getOpenCodeConfigPath() {
44551
44565
  const configPath = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(node_os__WEBPACK_IMPORTED_MODULE_1___default().homedir(), ".sith", "opencode.json");
44552
44566
  // Docker bind-mount creates a directory if the source doesn't exist; ensure it's a file.
44553
- if (node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(configPath) && node_fs__WEBPACK_IMPORTED_MODULE_0___default().statSync(configPath).isDirectory()) {
44554
- node_fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(configPath, { recursive: true, force: true });
44567
+ try {
44568
+ if (node_fs__WEBPACK_IMPORTED_MODULE_0___default().statSync(configPath).isDirectory()) {
44569
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(configPath, { recursive: true, force: true });
44570
+ }
44555
44571
  }
44556
- if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(configPath)) {
44557
- node_fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().dirname(configPath), { recursive: true });
44558
- node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(configPath, JSON.stringify(defaultConfig(), null, 2));
44572
+ catch {
44573
+ // doesn't exist yet
44574
+ }
44575
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().dirname(configPath), { recursive: true });
44576
+ try {
44577
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(configPath, JSON.stringify(defaultConfig(), null, 2), {
44578
+ flag: "ax",
44579
+ });
44580
+ }
44581
+ catch {
44582
+ // already exists
44559
44583
  }
44560
44584
  return configPath;
44561
44585
  }
@@ -44563,6 +44587,10 @@ function readConfig() {
44563
44587
  const parsed = JSON.parse(node_fs__WEBPACK_IMPORTED_MODULE_0___default().readFileSync(getOpenCodeConfigPath(), "utf8"));
44564
44588
  if (!Array.isArray(parsed.instructions))
44565
44589
  parsed.instructions = [];
44590
+ if (!parsed.model) {
44591
+ parsed.model = DEFAULT_MODEL;
44592
+ writeConfig(parsed);
44593
+ }
44566
44594
  return parsed;
44567
44595
  }
44568
44596
  function writeConfig(config) {
@@ -44576,8 +44604,21 @@ function addInstruction(containerPath) {
44576
44604
  }
44577
44605
  }
44578
44606
  function syncClaudeMd() {
44579
- const config = readConfig();
44580
- const lines = config.instructions.map((p) => `@${p.replace(_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.skillsMount, _config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.claudeSkillsMount)}`);
44607
+ const skillsDir = getSkillsDir();
44608
+ const lines = [];
44609
+ for (const name of node_fs__WEBPACK_IMPORTED_MODULE_0___default().readdirSync(skillsDir)) {
44610
+ const skillDir = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(skillsDir, name);
44611
+ const skillJsonPath = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(skillDir, "skill.json");
44612
+ if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(skillJsonPath))
44613
+ continue;
44614
+ const meta = JSON.parse(node_fs__WEBPACK_IMPORTED_MODULE_0___default().readFileSync(skillJsonPath, "utf8"));
44615
+ if (meta.autoLoad !== true)
44616
+ continue;
44617
+ const instructionsFile = findInstructionsFile(skillDir);
44618
+ if (instructionsFile) {
44619
+ lines.push(`@${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.claudeSkillsMount}/${name}/${instructionsFile}`);
44620
+ }
44621
+ }
44581
44622
  node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(getClaudeMdPath(), lines.join("\n") + (lines.length ? "\n" : ""));
44582
44623
  }
44583
44624
  function removeInstructionsUnder(skillContainerDir) {
@@ -44599,13 +44640,45 @@ function findInstructionsFile(skillDir) {
44599
44640
  function isInstalled(name) {
44600
44641
  return node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().join(getSkillsDir(), name, "skill.json"));
44601
44642
  }
44643
+ function getSkillAutoLoad(name) {
44644
+ const skillJsonPath = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(getSkillsDir(), name, "skill.json");
44645
+ if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(skillJsonPath))
44646
+ return false;
44647
+ const meta = JSON.parse(node_fs__WEBPACK_IMPORTED_MODULE_0___default().readFileSync(skillJsonPath, "utf8"));
44648
+ return meta.autoLoad === true;
44649
+ }
44650
+ function setSkillAutoLoad(name, autoLoad) {
44651
+ const skillDir = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(getSkillsDir(), name);
44652
+ const skillJsonPath = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(skillDir, "skill.json");
44653
+ if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(skillJsonPath))
44654
+ return;
44655
+ const meta = JSON.parse(node_fs__WEBPACK_IMPORTED_MODULE_0___default().readFileSync(skillJsonPath, "utf8"));
44656
+ meta.autoLoad = autoLoad;
44657
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(skillJsonPath, JSON.stringify(meta, null, 2));
44658
+ if (autoLoad) {
44659
+ const instructionsFile = findInstructionsFile(skillDir);
44660
+ if (instructionsFile) {
44661
+ addInstruction(`${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.skillsMount}/${name}/${instructionsFile}`);
44662
+ }
44663
+ }
44664
+ else {
44665
+ removeInstructionsUnder(`${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.skillsMount}/${name}/`);
44666
+ }
44667
+ syncClaudeMd();
44668
+ }
44602
44669
  async function installSkill(skill) {
44603
44670
  const targetDir = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(getSkillsDir(), skill.name);
44604
44671
  if (skill.builtinInstructions) {
44605
44672
  node_fs__WEBPACK_IMPORTED_MODULE_0___default().mkdirSync(targetDir, { recursive: true });
44606
44673
  node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().join(targetDir, "SKILL.md"), skill.builtinInstructions);
44607
- node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().join(targetDir, "skill.json"), JSON.stringify({ name: skill.name, version: "builtin" }, null, 2));
44608
- addInstruction(`${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.skillsMount}/${skill.name}/SKILL.md`);
44674
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(node_path__WEBPACK_IMPORTED_MODULE_2___default().join(targetDir, "skill.json"), JSON.stringify({
44675
+ name: skill.name,
44676
+ version: "builtin",
44677
+ autoLoad: skill.autoLoad ?? false,
44678
+ }, null, 2));
44679
+ if (skill.autoLoad === true) {
44680
+ addInstruction(`${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.skillsMount}/${skill.name}/SKILL.md`);
44681
+ }
44609
44682
  syncClaudeMd();
44610
44683
  return;
44611
44684
  }
@@ -44625,11 +44698,18 @@ async function installSkill(skill) {
44625
44698
  node_fs__WEBPACK_IMPORTED_MODULE_0___default().rmSync(targetDir, { recursive: true, force: true });
44626
44699
  node_fs__WEBPACK_IMPORTED_MODULE_0___default().cpSync(extracted, targetDir, { recursive: true });
44627
44700
  const skillJson = node_path__WEBPACK_IMPORTED_MODULE_2___default().join(targetDir, "skill.json");
44628
- if (!node_fs__WEBPACK_IMPORTED_MODULE_0___default().existsSync(skillJson)) {
44629
- node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(skillJson, JSON.stringify({ name: skill.name, version: "local" }, null, 2));
44701
+ try {
44702
+ node_fs__WEBPACK_IMPORTED_MODULE_0___default().writeFileSync(skillJson, JSON.stringify({
44703
+ name: skill.name,
44704
+ version: "local",
44705
+ autoLoad: skill.autoLoad ?? false,
44706
+ }, null, 2), { flag: "ax" });
44707
+ }
44708
+ catch {
44709
+ // already exists (skill.json bundled in archive)
44630
44710
  }
44631
44711
  const instructionsFile = findInstructionsFile(targetDir);
44632
- if (instructionsFile) {
44712
+ if (instructionsFile && skill.autoLoad === true) {
44633
44713
  addInstruction(`${_config_js__WEBPACK_IMPORTED_MODULE_3__/* .DOCKER_CONFIG */ .e6.skillsMount}/${skill.name}/${instructionsFile}`);
44634
44714
  }
44635
44715
  syncClaudeMd();
package/dist/types.d.ts CHANGED
@@ -20,4 +20,5 @@ export interface SkillEntry {
20
20
  source?: string;
21
21
  homepage: string;
22
22
  builtinInstructions?: string;
23
+ autoLoad?: boolean;
23
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,oBAAoB;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC7B"}
1
+ {"version":3,"file":"","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,oBAAoB;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"dockerArgs.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/utils/dockerArgs.ts"],"names":[],"mappings":"AASA,wBAAgB,uBAAuB,CACtC,WAAW,EAAE,MAAM,EACnB,gBAAgB,CAAC,EAAE,MAAM,GACvB,MAAM,EAAE,CAwBV;AAED,wBAAgB,0BAA0B,CACzC,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,MAAM,GACvB,MAAM,EAAE,CA6BV;AAED,wBAAgB,4BAA4B,CAC3C,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,MAAM,GACvB,MAAM,EAAE,CA0CV"}
1
+ {"version":3,"file":"dockerArgs.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/utils/dockerArgs.ts"],"names":[],"mappings":"AASA,wBAAgB,uBAAuB,CACtC,WAAW,EAAE,MAAM,EACnB,gBAAgB,CAAC,EAAE,MAAM,GACvB,MAAM,EAAE,CA6BV;AAED,wBAAgB,0BAA0B,CACzC,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,MAAM,GACvB,MAAM,EAAE,CA6BV;AAED,wBAAgB,4BAA4B,CAC3C,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,MAAM,GACvB,MAAM,EAAE,CAqCV"}
@@ -3,8 +3,11 @@ export declare function getSkillsDir(): string;
3
3
  export declare function getClaudeConfigDir(): string;
4
4
  export declare function getClaudeMdPath(): string;
5
5
  export declare function getOpenCodeConfigPath(): string;
6
+ export declare function syncClaudeMd(): void;
6
7
  export declare function findInstructionsFile(skillDir: string): string | null;
7
8
  export declare function isInstalled(name: string): boolean;
9
+ export declare function getSkillAutoLoad(name: string): boolean;
10
+ export declare function setSkillAutoLoad(name: string, autoLoad: boolean): void;
8
11
  export declare function installSkill(skill: SkillEntry): Promise<void>;
9
12
  export declare function uninstallSkill(name: string): void;
10
13
  //# sourceMappingURL=skills.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/utils/skills.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAa9C,wBAAgB,YAAY,IAAI,MAAM,CAIrC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,eAAe,IAAI,MAAM,CAOxC;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAW9C;AAwCD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYpE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAwDnE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAOjD"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/utils/skills.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAe9C,wBAAgB,YAAY,IAAI,MAAM,CAIrC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,eAAe,IAAI,MAAM,CASxC;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CAmB9C;AAwBD,wBAAgB,YAAY,IAAI,IAAI,CAoBnC;AAUD,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYpE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAKtD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAkBtE;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA6EnE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAOjD"}
@@ -1,25 +1 @@
1
- CAVEMAN MODE ACTIVE — level: ultra
2
-
3
- Respond terse like smart caveman. All technical substance stay. Only fluff die.
4
-
5
- ## Persistence
6
-
7
- ACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure. Off only: "stop caveman" / "normal mode".
8
-
9
- ## Rules
10
-
11
- Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries (sure/certainly/of course/happy to), hedging. Fragments OK. Short synonyms (big not extensive, fix not "implement a solution for"). Technical terms exact. Code blocks unchanged. Errors quoted exact.
12
-
13
- Pattern: `[thing] [action] [reason]. [next step].`
14
-
15
- ## Ultra level
16
-
17
- Abbreviate (DB/auth/config/req/res/fn/impl), strip conjunctions, arrows for causality (X → Y), one word when one word enough.
18
-
19
- ## Auto-Clarity
20
-
21
- Drop caveman for: security warnings, irreversible action confirmations, multi-step sequences where fragment order risks misread. Resume caveman after clear part done.
22
-
23
- ## Boundaries
24
-
25
- Code/commits/PRs: write normal. "stop caveman" or "normal mode": revert.
1
+ @/root/.claude/skills/caveman/SKILL.md
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m14i/sith",
3
- "version": "1.21.0",
3
+ "version": "1.21.1",
4
4
  "description": "Turn your context to the dark side. Standardize and share your OpenCode setup with a fully dockerized environment, designed for seamless collaboration and CI integration.",
5
5
  "type": "module",
6
6
  "repository": {