@m14i/sith 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -25,14 +25,16 @@ npx @m14i/sith@latest
25
25
  ### Quick Start
26
26
 
27
27
  ```bash
28
- # Interactive menu (recommended)
28
+ # Interactive terminal UI (default)
29
29
  sith
30
- # Options: Enter Shell | Configuration (Pull/Build)
30
+ # Type your prompt to start OpenCode with that task
31
+ # Or use slash commands: /shell, /config, /help
31
32
 
32
- # Direct commands (skip menu)
33
- sith --it # Launch shell immediately
33
+ # Direct commands
34
+ sith --it # Launch Docker shell immediately
34
35
  sith --pull # Pull prebuilt image
35
36
  sith --build # Build from scratch
37
+ sith --legacy # Use legacy menu interface
36
38
  ```
37
39
 
38
40
  ### Distribution Options
@@ -46,12 +48,29 @@ sith --build # Build from scratch
46
48
 
47
49
  | Command | Description |
48
50
  |---------|-------------|
49
- | `sith` | Interactive menu with options |
50
- | `sith --it` | Launch interactive shell in container |
51
+ | `sith` | Interactive terminal UI (Claude Code style) |
52
+ | `sith --it` | Launch Docker shell immediately |
51
53
  | `sith --pull` | Pull prebuilt image from GHCR |
52
54
  | `sith --build` | Build Docker image from scratch |
55
+ | `sith --legacy` | Use legacy menu interface |
53
56
  | `sith --help` | Show all available commands |
54
57
 
58
+ ### Terminal UI Usage
59
+
60
+ When you run `sith`, you get an interactive terminal interface:
61
+
62
+ **Prompt input:**
63
+ - Type any text → Starts OpenCode with that prompt using Claude Sonnet 4.6
64
+ - Example: `Fix authentication bug` → OpenCode launches with this task
65
+
66
+ **Slash commands:**
67
+ - `/shell` → Start Docker shell only (no OpenCode)
68
+ - `/config` → Open configuration menu (pull/build options)
69
+ - `/help` → Show available commands
70
+
71
+ **Navigation:**
72
+ - `Ctrl+C` or `Esc` → Exit terminal UI
73
+
55
74
  ### Prebuilt Image Details
56
75
 
57
76
  **Pull and verify:**
@@ -78,23 +97,24 @@ cosign verify \
78
97
 
79
98
  ## Authentication
80
99
 
81
- Sith uses **GitHub Copilot models by default**. Authentication requires a GitHub token.
100
+ Sith uses **Claude Sonnet 4.6 via GitHub Copilot** by default. Authentication requires a GitHub token with Copilot access.
82
101
 
83
102
  **Automatic (recommended):**
84
103
  If you have GitHub CLI (`gh`) installed and authenticated, Sith automatically fetches your token:
85
104
  ```bash
86
- sith --it # Auto-detects token via gh auth token
105
+ sith # Auto-detects token via gh auth token
87
106
  ```
88
107
 
89
108
  **Manual token:**
90
109
  If you don't have `gh` CLI or prefer manual setup:
91
110
 
92
- 1. Create a token at https://github.com/settings/tokens
93
- 2. Required scopes: `copilot`, `repo`, `read:org`
94
- 3. Export it:
111
+ 1. Ensure you have GitHub Copilot access
112
+ 2. Create a token at https://github.com/settings/tokens
113
+ 3. Required scopes: `copilot`, `repo`, `read:org`
114
+ 4. Export it:
95
115
  ```bash
96
116
  export GITHUB_TOKEN=gho_your_token_here
97
- sith --it
117
+ sith
98
118
  ```
99
119
 
100
120
  **Make it persistent (add to ~/.zshrc or ~/.bashrc):**
@@ -102,13 +122,21 @@ sith --it
102
122
  export GITHUB_TOKEN=$(gh auth token)
103
123
  ```
104
124
 
125
+ **Inside container:**
126
+ Once OpenCode starts, authenticate with GitHub Copilot:
127
+ ```bash
128
+ opencode providers login
129
+ # Follow prompts to authenticate with GitHub
130
+ ```
131
+
105
132
  ## Features
106
133
 
134
+ - **Claude Code-style UI**: Interactive terminal interface with prompt input and slash commands
135
+ - **OpenCode Integration**: Start coding with a simple text prompt
136
+ - **Model Selection**: Uses Claude Sonnet 4.6 via GitHub Copilot by default
107
137
  - **Prebuilt Images**: Pull verified images from GitHub Container Registry
108
138
  - **Image Signing**: All images signed with cosign for supply chain security
109
139
  - **SBOM Attestation**: Software Bill of Materials included with every image
110
- - **Interactive Menu**: Navigate with arrow keys, select with Enter
111
- - **Direct Commands**: Build or shell access without menu
112
140
  - **Dockerized Environment**: Consistent setup across machines
113
141
  - **Nix Integration**: Full development environment with all tools
114
142
  - **CI-Ready**: Standardize builds across local and CI pipelines
@@ -1 +1 @@
1
- {"version":3,"file":"TerminalUI.d.ts","sourceRoot":"","sources":["file:///home/runner/work/sith/sith/src/components/TerminalUI.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AA0IrD,wBAAgB,UAAU,IAAI,KAAK,CAAC,YAAY,CA6J/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":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AA0JrD,wBAAgB,UAAU,IAAI,KAAK,CAAC,YAAY,CAkL/C;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
package/dist/index.js CHANGED
@@ -43484,7 +43484,7 @@ function WelcomeScreen() {
43484
43484
  react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { color: "cyan" }, "Type your prompt to start coding"),
43485
43485
  react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, "or use slash commands:")),
43486
43486
  react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Box */ .az, { flexDirection: "column", marginTop: 1, marginLeft: 2 },
43487
- react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, " /shell - Start OpenCode shell"),
43487
+ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, " /shell - Start Docker shell"),
43488
43488
  react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, " /config - Configuration"),
43489
43489
  react__WEBPACK_IMPORTED_MODULE_0___default().createElement(ink__WEBPACK_IMPORTED_MODULE_1__/* .Text */ .EY, { dimColor: true }, " /help - Show help"))));
43490
43490
  }
@@ -43538,7 +43538,22 @@ async function getGitHubToken() {
43538
43538
  return "";
43539
43539
  }
43540
43540
  }
43541
- function buildDockerCommand(githubToken, prompt) {
43541
+ function buildDockerShellCommand(githubToken) {
43542
+ return [
43543
+ "run",
43544
+ "--rm",
43545
+ "-it",
43546
+ "-v",
43547
+ `${process.cwd()}:${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.workspaceMount}`,
43548
+ "-e",
43549
+ `GITHUB_TOKEN=${githubToken}`,
43550
+ "--entrypoint",
43551
+ "nix-shell",
43552
+ _config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.imageName,
43553
+ _config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.shellEntrypoint,
43554
+ ];
43555
+ }
43556
+ function buildDockerOpencodeCommand(githubToken, prompt) {
43542
43557
  const dockerArgs = [
43543
43558
  "run",
43544
43559
  "--rm",
@@ -43578,8 +43593,26 @@ function TerminalUI() {
43578
43593
  setMessages((previousMessages) => [...previousMessages, newMessage]);
43579
43594
  setNextMessageId((previousId) => previousId + 1);
43580
43595
  }, [nextMessageId]);
43581
- const handleShellCommand = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (prompt) => {
43582
- // Exit Ink UI before launching shell (it takes over stdio)
43596
+ const handleDockerShell = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async () => {
43597
+ exit();
43598
+ console.log("🚀 Starting Docker shell...");
43599
+ console.log(`Mounting current directory to ${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.workspaceMount}`);
43600
+ console.log('Press Ctrl+D or type "exit" to leave');
43601
+ console.log();
43602
+ const githubToken = await getGitHubToken();
43603
+ const dockerArgs = buildDockerShellCommand(githubToken);
43604
+ try {
43605
+ await (0,execa__WEBPACK_IMPORTED_MODULE_5__/* .execa */ .Ho)("docker", dockerArgs, { stdio: "inherit" });
43606
+ console.log();
43607
+ console.log("✅ Exited shell");
43608
+ }
43609
+ catch (error) {
43610
+ const errorMessage = error instanceof Error ? error.message : "Failed to start shell";
43611
+ console.error(`❌ ${errorMessage}`);
43612
+ process.exit(1);
43613
+ }
43614
+ }, [exit]);
43615
+ const handleOpenCode = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (prompt) => {
43583
43616
  exit();
43584
43617
  console.log("🚀 Starting OpenCode...");
43585
43618
  console.log(`Mounting current directory to ${_config_js__WEBPACK_IMPORTED_MODULE_4__/* .DOCKER_CONFIG */ .e6.workspaceMount}`);
@@ -43588,7 +43621,7 @@ function TerminalUI() {
43588
43621
  }
43589
43622
  console.log();
43590
43623
  const githubToken = await getGitHubToken();
43591
- const dockerArgs = buildDockerCommand(githubToken, prompt);
43624
+ const dockerArgs = buildDockerOpencodeCommand(githubToken, prompt);
43592
43625
  try {
43593
43626
  await (0,execa__WEBPACK_IMPORTED_MODULE_5__/* .execa */ .Ho)("docker", dockerArgs, { stdio: "inherit" });
43594
43627
  console.log();
@@ -43607,7 +43640,7 @@ function TerminalUI() {
43607
43640
  addMessage(userInput, "user");
43608
43641
  switch (command.type) {
43609
43642
  case "shell":
43610
- await handleShellCommand();
43643
+ await handleDockerShell();
43611
43644
  break;
43612
43645
  case "config":
43613
43646
  setShowConfigModal(true);
@@ -43620,7 +43653,7 @@ function TerminalUI() {
43620
43653
  }
43621
43654
  break;
43622
43655
  }
43623
- }, [addMessage, handleShellCommand]);
43656
+ }, [addMessage, handleDockerShell]);
43624
43657
  const handleSubmit = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(async (value) => {
43625
43658
  const trimmedValue = value.trim();
43626
43659
  if (!trimmedValue) {
@@ -43637,9 +43670,9 @@ function TerminalUI() {
43637
43670
  }
43638
43671
  else {
43639
43672
  // Regular text input - start OpenCode with this prompt
43640
- await handleShellCommand(trimmedValue);
43673
+ await handleOpenCode(trimmedValue);
43641
43674
  }
43642
- }, [addMessage, handleShellCommand, handleSlashCommand]);
43675
+ }, [addMessage, handleOpenCode, handleSlashCommand]);
43643
43676
  const handleConfigModalClose = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(() => {
43644
43677
  setShowConfigModal(false);
43645
43678
  }, []);
@@ -43853,7 +43886,7 @@ function parseSlashCommand(input) {
43853
43886
  }
43854
43887
  function getAvailableCommands() {
43855
43888
  return [
43856
- { command: "/shell", description: "Enter interactive shell in Docker container" },
43889
+ { command: "/shell", description: "Start Docker shell (no OpenCode)" },
43857
43890
  { command: "/config", description: "Open configuration menu" },
43858
43891
  { command: "/help", description: "Show available commands" },
43859
43892
  ];
package/dist/package.json CHANGED
@@ -1 +1 @@
1
- {"name":"@m14i/sith","version":"1.12.0","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.","type":"module","repository":{"type":"git","url":"https://github.com/MerzoukeMansouri/sith.git"},"bin":{"sith":"./dist/index.js"},"scripts":{"build":"ncc build src/index.ts -o dist && rm -rf dist/assets && cp -r assets dist/","dev":"tsx src/index.ts","dev:build":"pnpm build && node dist/index.js","dev:shell":"pnpm build && node dist/index.js shell","typecheck":"tsc --noEmit","clean":"rm -rf dist","prepublishOnly":"pnpm build"},"files":["dist","assets","docker"],"keywords":["opencode","docker","ci","automation","cli","nix"],"author":"","license":"MIT","dependencies":{"@inquirer/prompts":"^5.0.0","chalk":"^5.3.0","commander":"^12.1.0","execa":"^9.0.0","ink":"^7.0.3","ink-text-input":"^6.0.0","react":"^19.2.6","update-notifier":"^7.3.1"},"devDependencies":{"@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^11.0.1","@semantic-release/npm":"^12.0.1","@types/node":"^20.12.7","@types/react":"^19.2.14","@types/update-notifier":"^6.0.8","@vercel/ncc":"^0.38.1","semantic-release":"^24.2.0","tsx":"^4.7.2","typescript":"^5.4.5"},"engines":{"node":">=18"}}
1
+ {"name":"@m14i/sith","version":"1.13.0","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.","type":"module","repository":{"type":"git","url":"https://github.com/MerzoukeMansouri/sith.git"},"bin":{"sith":"./dist/index.js"},"scripts":{"build":"ncc build src/index.ts -o dist && rm -rf dist/assets && cp -r assets dist/","dev":"tsx src/index.ts","dev:build":"pnpm build && node dist/index.js","dev:shell":"pnpm build && node dist/index.js shell","typecheck":"tsc --noEmit","clean":"rm -rf dist","prepublishOnly":"pnpm build"},"files":["dist","assets","docker"],"keywords":["opencode","docker","ci","automation","cli","nix"],"author":"","license":"MIT","dependencies":{"@inquirer/prompts":"^5.0.0","chalk":"^5.3.0","commander":"^12.1.0","execa":"^9.0.0","ink":"^7.0.3","ink-text-input":"^6.0.0","react":"^19.2.6","update-notifier":"^7.3.1"},"devDependencies":{"@semantic-release/changelog":"^6.0.3","@semantic-release/git":"^10.0.1","@semantic-release/github":"^11.0.1","@semantic-release/npm":"^12.0.1","@types/node":"^20.12.7","@types/react":"^19.2.14","@types/update-notifier":"^6.0.8","@vercel/ncc":"^0.38.1","semantic-release":"^24.2.0","tsx":"^4.7.2","typescript":"^5.4.5"},"engines":{"node":">=18"}}
@@ -1,14 +1,2 @@
1
1
  #!/bin/bash
2
2
  # Banner and version display
3
-
4
- echo "╔══════════════════════════════════════════════════════════╗"
5
- echo "║ 🚀 OpenCode CI - Nix Environment (CI/CD Ready) ║"
6
- echo "╚══════════════════════════════════════════════════════════╝"
7
- echo ""
8
- echo "📦 Versions installées:"
9
- echo " • Bash: $(bash --version | head -n1)"
10
- echo " • Node.js: $(node --version)"
11
- echo " • Python: $(python3 --version)"
12
- echo " • Git: $(git --version | cut -d' ' -f3)"
13
- echo " • jq: $(jq --version)"
14
- echo ""
@@ -3,16 +3,3 @@
3
3
 
4
4
  # Configurer le PATH pour OpenCode
5
5
  export PATH="$HOME/.opencode/bin:$PATH"
6
-
7
- if command -v opencode &> /dev/null; then
8
- OPENCODE_VERSION=$(opencode --version 2>&1 | head -n1 || echo 'ok')
9
- OPENCODE_PATH=$(command -v opencode)
10
- echo "✅ OpenCode CLI disponible"
11
- echo " Version: $OPENCODE_VERSION"
12
- echo " Chemin: $OPENCODE_PATH"
13
- else
14
- echo "⚠️ OpenCode CLI non trouvé"
15
- echo " Installer: curl -fsSL https://opencode.ai/install | bash"
16
- fi
17
-
18
- echo ""
@@ -1,42 +1,28 @@
1
1
  #!/bin/bash
2
2
  # Token optimization skills installation (RTK + Caveman)
3
3
 
4
- echo "=== Installation des Skills d'Optimisation de Tokens ==="
5
- echo ""
6
-
7
4
  mkdir -p /root/.agents/skills
8
5
 
6
+ # Track installed skills
7
+ declare -a INSTALLED_SKILLS=()
8
+
9
9
  # 1. RTK (Rust Token Killer)
10
- # NOTE: RTK n'est actuellement pas disponible publiquement
11
- # Désactivé par défaut - peut être activé si vous avez le binaire
12
10
  if [ "${RTK_ENABLED:-false}" = "true" ]; then
13
- echo "📦 Installation de RTK (Rust Token Killer)..."
14
-
15
11
  mkdir -p /root/.agents/skills/rtk/bin
16
12
  mkdir -p /root/.agents/skills/rtk/config
17
-
18
- if [ ! -f /root/.agents/skills/rtk/bin/rtk ]; then
19
- echo " ⚠️ RTK binaire non disponible publiquement"
20
- echo " Pour utiliser RTK:"
21
- echo " 1. Copier votre binaire RTK dans l'image"
22
- echo " 2. Ou monter: -v /path/to/rtk:/root/.agents/skills/rtk/bin/rtk"
23
- else
24
- echo " ✅ RTK déjà installé: $(/root/.agents/skills/rtk/bin/rtk --version 2>&1)"
25
- fi
26
-
27
- # Copier la configuration RTK
13
+
28
14
  if [ -f /opt/sith/skills/rtk-config.toml ]; then
29
15
  cp /opt/sith/skills/rtk-config.toml /root/.agents/skills/rtk/config/config.toml
30
16
  mkdir -p /root/.config/rtk
31
17
  ln -sf /root/.agents/skills/rtk/config/config.toml /root/.config/rtk/config.toml
32
- echo " ✅ Configuration RTK prête (binaire requis)"
33
18
  fi
34
-
35
- # Initialiser le hook bash pour RTK
19
+
36
20
  if command -v rtk &> /dev/null; then
21
+ RTK_VERSION=$(rtk --version 2>&1 | head -n1 | awk '{print $2}' || echo "unknown")
22
+ INSTALLED_SKILLS+=("RTK|$RTK_VERSION|https://github.com/rust-token-killer/rtk")
23
+
37
24
  if [ -f /root/.bashrc ] && ! grep -q "rtk hook" /root/.bashrc; then
38
25
  echo 'eval "$(rtk hook bash)"' >> /root/.bashrc
39
- echo " ✅ RTK hook bash configuré"
40
26
  fi
41
27
  eval "$(rtk hook bash)" 2>/dev/null || true
42
28
  fi
@@ -44,20 +30,15 @@ fi
44
30
 
45
31
  # 2. Caveman (mode ultra)
46
32
  if [ "${CAVEMAN_AUTO:-true}" = "true" ]; then
47
- echo "📦 Installation de Caveman skill (mode ultra)..."
48
-
49
33
  mkdir -p /root/.agents/skills
50
34
 
51
- # Download Caveman if not present
52
35
  if [ ! -d /opt/sith/skills/caveman ]; then
53
- echo " 📥 Downloading Caveman from GitHub..."
54
36
  mkdir -p /opt/sith/skills
55
37
  cd /opt/sith/skills
56
- curl -fsSL https://github.com/JuliusBrussee/caveman/archive/refs/heads/main.zip -o caveman.zip
57
- unzip -q caveman.zip
58
- mv caveman-main caveman
59
- rm caveman.zip
60
- echo " ✅ Caveman downloaded"
38
+ curl -fsSL https://github.com/JuliusBrussee/caveman/archive/refs/heads/main.zip -o caveman.zip 2>/dev/null
39
+ unzip -q caveman.zip 2>/dev/null
40
+ mv caveman-main caveman 2>/dev/null
41
+ rm caveman.zip 2>/dev/null
61
42
  fi
62
43
 
63
44
  if [ -d /opt/sith/skills/caveman ]; then
@@ -68,9 +49,8 @@ mode=ultra
68
49
  auto_activate=true
69
50
  EOF
70
51
 
71
- echo " ✅ Caveman installé en mode ultra (compression maximale)"
72
- else
73
- echo " ⚠️ Caveman skill non trouvé - continuant sans Caveman"
52
+ CAVEMAN_VERSION=$(grep -oP '(?<=version: ).*' /root/.agents/skills/caveman/skill.json 2>/dev/null || echo "main")
53
+ INSTALLED_SKILLS+=("Caveman|$CAVEMAN_VERSION|https://github.com/JuliusBrussee/caveman")
74
54
  fi
75
55
  fi
76
56
 
@@ -80,13 +60,18 @@ if [ -f /opt/sith/skills/opencode-skills-config.json ]; then
80
60
  cp /opt/sith/skills/opencode-skills-config.json /root/.local/share/opencode/skills/config.json
81
61
  fi
82
62
 
83
- # Résumé
84
- echo ""
85
- echo "🎯 Skills d'optimisation de tokens:"
86
- if command -v rtk &> /dev/null && [ "${RTK_ENABLED:-true}" = "true" ]; then
87
- echo " RTK: Actif (60-90% réduction sur commandes CLI)"
88
- fi
89
- if [ -d /root/.agents/skills/caveman ] && [ "${CAVEMAN_AUTO:-true}" = "true" ]; then
90
- echo " ✅ Caveman: Mode ultra (75%+ compression de langage)"
63
+ # Display table if any skills installed
64
+ if [ ${#INSTALLED_SKILLS[@]} -gt 0 ]; then
65
+ echo ""
66
+ echo "┌─────────────────┬──────────┬─────────────────────────────────────────┐"
67
+ echo " Skill │ Version │ GitHub │"
68
+ echo "├─────────────────┼──────────┼─────────────────────────────────────────┤"
69
+
70
+ for skill_info in "${INSTALLED_SKILLS[@]}"; do
71
+ IFS='|' read -r name version github <<< "$skill_info"
72
+ printf "│ %-15s │ %-8s │ %-39s │\n" "$name" "$version" "$github"
73
+ done
74
+
75
+ echo "└─────────────────┴──────────┴─────────────────────────────────────────┘"
76
+ echo ""
91
77
  fi
92
- echo ""
@@ -1,6 +1,12 @@
1
1
  #!/bin/bash
2
2
  # Ready message
3
3
 
4
- echo "🎯 Environnement prêt pour CI/CD"
4
+ if command -v catimg &> /dev/null && [ -f /workspace/assets/images/logo.png ]; then
5
+ catimg -w 80 /workspace/assets/images/logo.png 2>/dev/null
6
+ echo ""
7
+ fi
8
+
9
+ echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
10
+ echo " Environment Ready"
5
11
  echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
6
12
  echo ""
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m14i/sith",
3
- "version": "1.12.0",
3
+ "version": "1.13.0",
4
4
  "description": "Turn your context to the dark side. Standardize and share your OpenCode setup with a fully dockerized environment, designed for seamless collaboration and CI integration.",
5
5
  "type": "module",
6
6
  "repository": {