@bountyporte/ai-studio 0.25.0 → 0.26.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/INSTALL.md CHANGED
@@ -17,13 +17,17 @@ AI Studio doit être installé **sur la même machine que Claude Code (et Codex)
17
17
  Donc : installe AI Studio là où tu développes. Pour une machine virtuelle,
18
18
  installe AI Studio, Claude Code et tes projets **dans la VM**.
19
19
 
20
- ## Lanceur npm et plugins Claude Code / Codex
20
+ ## Lanceur npm et choix des intégrations
21
21
 
22
- Le paquet npm et les deux formats de plugin sont inclus. Une version publiée
23
- s’installe avec `npx @bountyporte/ai-studio install`. Pour tester une version
24
- avant publication, utilise son archive `.tgz`.
25
- Le [guide de distribution](docs/DISTRIBUTION.md) détaille la commande, Windows/WSL,
26
- la connexion des plugins et les vérifications restant à faire avant publication.
22
+ Le paquet npm et les plugins Claude Code/Codex sont publiés. Lance
23
+ `npx @bountyporte/ai-studio install` dans un terminal interactif pour choisir
24
+ Claude Code, Codex et/ou OpenCode. Le programme ne configure que les intégrations
25
+ choisies. OpenCode doit déjà être installé avec Bun; il n'est pas nécessaire si
26
+ tu n'utilises pas OpenCode.
27
+
28
+ Dans un terminal sans interaction, l'installation conserve le comportement
29
+ historique : Claude Code et ses hooks sont configurés, Codex et OpenCode restent
30
+ désactivés. Utilise `--no-prompt` pour expliciter ce mode.
27
31
 
28
32
  ## Installation automatique
29
33
 
@@ -38,21 +42,27 @@ git clone https://github.com/badrtairlbahrepro/AI-STUDIO.git
38
42
  cd AI-STUDIO && ./install.sh --start
39
43
  ```
40
44
 
41
- Le script installe ce qui manque et garde ce qui est déjà là. Tu peux le
42
- relancer sans risque. Sous Linux, il demande ton mot de passe (`sudo`) pour
43
- les paquets système. Avec `--start`, le serveur démarre ensuite dans ce
44
- terminal ; `Ctrl+C` l’arrête. Sans cette option, lance `./start.sh` après
45
- l’installation.
45
+ Dans un terminal interactif, le script demande quels outils connecter :
46
+ Claude Code, Codex et/ou OpenCode. Il installe les clients Claude/Codex manquants
47
+ si tu les sélectionnes. OpenCode et Bun doivent déjà être installés pour activer
48
+ son plugin. Sans intégration, AI Studio s'installe quand même, mais n'a pas de
49
+ sessions d'agents à afficher. Sous Linux, le script peut demander ton mot de
50
+ passe (`sudo`) pour les paquets système. Avec `--start`, le serveur démarre
51
+ ensuite dans ce terminal ; `Ctrl+C` l’arrête.
46
52
 
47
53
  | Option | Effet |
48
54
  |---|---|
49
- | `--with-codex` | installe aussi Codex |
55
+ | `--with-codex` | installe/configure aussi Codex, sans afficher le choix interactif |
56
+ | `--with-opencode` | active OpenCode (CLI et Bun doivent déjà être installés) |
57
+ | `--no-opencode` | laisse OpenCode désactivé |
50
58
  | `--start` | installe puis lance le serveur dans ce terminal (ou utilise le service avec `--service`) |
51
59
  | `--service` | démarre AI Studio automatiquement à l'ouverture de session |
52
- | `--no-claude` | n'installe pas Claude Code (déjà installé autrement) |
60
+ | `--no-claude` | n'installe/configure pas Claude Code |
53
61
  | `--no-hooks` | ne connecte pas Claude Code à AI Studio |
62
+ | `--no-prompt` | désactive les questions interactives; garde le choix historique Claude par défaut |
54
63
 
55
64
  Exemple : `./install.sh --with-codex --service`
65
+ OpenCode seul, sans Claude : `./install.sh --no-claude --with-opencode`
56
66
 
57
67
  ### Windows
58
68
 
@@ -66,7 +76,10 @@ Debian ; l'interface s'ouvre dans ton navigateur Windows habituel.
66
76
  ```powershell
67
77
  powershell -ExecutionPolicy Bypass -File .\install.ps1
68
78
  ```
69
- Options : `-WithCodex`, `-Service`, `-Start` (installe puis lance).
79
+ En mode interactif, les mêmes choix d'intégration sont proposés dans Debian
80
+ WSL. Options : `-WithCodex`, `-WithOpenCode`, `-NoClaude`, `-NoHooks`,
81
+ `-Service`, `-Start` (installe puis lance). OpenCode et Bun doivent être
82
+ installés dans WSL pour activer son plugin.
70
83
  3. **Première fois seulement** : si WSL n'était pas installé, le script
71
84
  l'installe, puis te demande de redémarrer Windows, d'ouvrir l'application
72
85
  **Debian** une fois pour créer ton utilisateur Linux, et de relancer
@@ -90,8 +103,8 @@ http://localhost:8000.
90
103
 
91
104
  ## Première ouverture (une seule fois)
92
105
 
93
- 1. Connecte Claude Code : lance `claude` dans un terminal et suis la connexion.
94
- Pour Codex : `codex login`.
106
+ 1. Connecte le ou les agents sélectionnés : `claude`, `codex login`, ou
107
+ redémarre OpenCode pour charger son plugin.
95
108
  2. Dans AI Studio, ouvre **Réglages → Connexions** et autorise Claude et/ou
96
109
  Codex ainsi que **les dossiers de tes projets**. Sans cela, les workspaces
97
110
  et les agents ne peuvent pas y travailler.
@@ -179,16 +192,18 @@ Ce que fait `install.sh`, étape par étape :
179
192
  | git, curl, make | — | macOS : `xcode-select --install` · Debian : `sudo apt install git curl make build-essential python3` |
180
193
  | Node.js | 20.9 ou plus (22 conseillé) | macOS : `brew install node@22` ou https://nodejs.org · Debian 12 fournit Node 18, trop ancien : utilise NodeSource (`curl -fsSL https://deb.nodesource.com/setup_22.x \| sudo -E bash -` puis `sudo apt install nodejs`) |
181
194
  | uv | dernière | `curl -LsSf https://astral.sh/uv/install.sh \| sh` (il télécharge Python 3.13 tout seul) |
182
- | Claude Code | dernière | `curl -fsSL https://claude.ai/install.sh \| bash` |
195
+ | Claude Code (facultatif) | dernière | `curl -fsSL https://claude.ai/install.sh \| bash` |
183
196
  | Codex (facultatif) | dernière | `npm install -g @openai/codex` |
197
+ | OpenCode (facultatif) | dernière + Bun | [installer OpenCode](https://opencode.ai/docs) et [Bun](https://bun.sh/docs/installation) avant de choisir cette intégration |
184
198
 
185
199
  Puis, dans le dossier du projet :
186
200
 
187
- 1. `make install` — dépendances du serveur, de l'interface et des hooks ;
188
- 2. `cd hooks && ./install.sh` — connecte Claude Code à AI Studio (sous Linux,
189
- ajoute `--strip-prefixes "-home-$USER-"` pour des noms de projets courts) ;
190
- 3. `make build-static` — construit l'interface, servie par le serveur ;
191
- 4. `./start.sh` — lance le tout sur http://localhost:8000.
201
+ 1. `make install-base` — dépendances du serveur, de l'interface et des hooks ;
202
+ 2. si Claude Code est choisi, `cd hooks && ./install.sh` — connecte Claude Code
203
+ à AI Studio (sous Linux, ajoute `--strip-prefixes "-home-$USER-"`) ;
204
+ 3. si OpenCode est choisi, `make opencode-install` — construit et relie son plugin ;
205
+ 4. `make build-static` — construit l'interface, servie par le serveur ;
206
+ 5. `./start.sh` — lance le tout sur http://localhost:8000.
192
207
 
193
208
  ## Désinstaller
194
209
 
package/Makefile CHANGED
@@ -1,4 +1,4 @@
1
- .PHONY: install install-all dev backend frontend simulate checkall lint fmt test typecheck gen-types \
1
+ .PHONY: install install-base opencode-deps install-all dev backend frontend simulate checkall lint fmt test typecheck gen-types \
2
2
  hooks-install hooks-uninstall hooks-reinstall hooks-status hooks-logs hooks-logs-follow hooks-logs-clear \
3
3
  hooks-debug-on hooks-debug-off clean clean-db clean-all \
4
4
  opencode-install opencode-uninstall opencode-reinstall opencode-build \
@@ -12,10 +12,14 @@
12
12
  PKG_MGR := $(shell command -v bun >/dev/null 2>&1 && echo "bun" || echo "npm")
13
13
  PKG_INSTALL := $(shell command -v bun >/dev/null 2>&1 && echo "bun install" || echo "npm install")
14
14
 
15
- install: # Install all component dependencies
15
+ install: install-base opencode-deps # Install all component dependencies (developer setup)
16
+
17
+ install-base: # Install AI Studio, frontend and Claude hook dependencies
16
18
  cd backend && uv sync
17
19
  cd frontend && $(PKG_INSTALL)
18
20
  cd hooks && uv sync
21
+
22
+ opencode-deps: # Install optional OpenCode plugin dependencies
19
23
  cd opencode-plugin && $(PKG_INSTALL)
20
24
 
21
25
  install-all: install hooks-install opencode-install # Install everything including hooks and plugins
package/README.md CHANGED
@@ -28,6 +28,7 @@ demo button. See [setup, supported event formats and limits](docs/CODEX.md).
28
28
  * [What's New](#whats-new)
29
29
  * [Features](#features)
30
30
  * [Quick Start](#quick-start)
31
+ * [npm installation and AI plugins](#npm-installation-and-ai-plugins)
31
32
  * [Prerequisites](#prerequisites)
32
33
  * [Installation](#installation)
33
34
  * [Development](#development)
@@ -148,16 +149,56 @@ For the full release history, see [CHANGELOG.md](CHANGELOG.md).
148
149
 
149
150
  ## Quick Start
150
151
 
151
- **Install on macOS, Linux (Debian/Ubuntu, VMs included) or Windows with one
152
- script: see [INSTALL.md](INSTALL.md)**. From the repository:
152
+ ### Install the published package (recommended)
153
+
154
+ With Node.js 20.9 or newer and npm, install AI Studio with:
155
+
156
+ ```bash
157
+ npx @bountyporte/ai-studio install
158
+ ```
159
+
160
+ The installer sets up the local server and its dependencies. On macOS and Linux,
161
+ the app is stored outside npm's cache. On Windows, the server and agent tools run
162
+ inside Debian on WSL; complete WSL's first-time setup if prompted, then rerun the
163
+ same command. The browser stays on Windows. See
164
+ [Windows and WSL details](docs/DISTRIBUTION.md#windows).
165
+
166
+ In an interactive terminal, the installer asks which agent integrations to set
167
+ up: Claude Code, Codex, and/or OpenCode. OpenCode is optional and requires its
168
+ CLI and Bun to be installed already. If no agent is selected, AI Studio still
169
+ installs and runs, but has no live agent sessions to display. Use `--no-prompt`
170
+ for scripted installs; that mode keeps the legacy Claude Code default.
171
+
172
+ To start the server later, or check its setup:
173
+
174
+ ```bash
175
+ npx @bountyporte/ai-studio start
176
+ npx @bountyporte/ai-studio doctor
177
+ ```
178
+
179
+ Install the AI Studio plugin in either host CLI when you want to manage workspaces
180
+ and missions from Claude Code or Codex:
181
+
182
+ ```bash
183
+ npx @bountyporte/ai-studio plugins claude
184
+ npx @bountyporte/ai-studio plugins codex
185
+ ```
186
+
187
+ Run the command for the CLI you use. Start a new Claude Code or Codex session
188
+ after installation so it loads the plugin and its MCP tools. The plugin can list
189
+ workspaces and missions, create a mission draft, and launch it when requested.
190
+ See [plugin tools and security](docs/DISTRIBUTION.md#plugin-contents).
191
+
192
+ ### Install from a source checkout
193
+
194
+ Alternatively, install from this repository on macOS or Linux:
153
195
 
154
196
  ```bash
155
197
  ./install.sh --start
156
198
  ```
157
199
 
158
- This installs dependencies and hooks, builds the interface and starts the local
159
- server. `scripts/ai-studio setup` is an equivalent entry point. On Windows with
160
- WSL configured, use `install.ps1 -Start`.
200
+ On Windows with WSL configured, use `install.ps1 -Start`. For development, clone
201
+ the repository and use the developer setup below.
161
202
 
162
203
  Diagnose a missing session, hook or server with **`./doctor.sh`** (also
163
204
  `scripts/ai-studio doctor` or `make doctor`). It is read-only, never executes a
@@ -176,20 +217,29 @@ make dev-tmux
176
217
 
177
218
  Then open [http://localhost:3000](http://localhost:3000) and run any Claude Code command to see it visualized.
178
219
 
179
- ### npm launcher and plugins
220
+ ## npm installation and AI plugins
221
+
222
+ The public package is [`@bountyporte/ai-studio`](https://www.npmjs.com/package/@bountyporte/ai-studio).
223
+ The launcher supports `install`, `start`, `update`, `doctor`, `plugins`, and
224
+ `mcp`. `update` refreshes an npm-managed installation; it does not overwrite a
225
+ linked Git checkout. On Windows, AI Studio runs in Debian WSL, while native
226
+ Windows Claude Code or Codex can connect through the installed plugin.
227
+
228
+ For an existing checkout, link it so the plugin uses that installation:
229
+
230
+ ```bash
231
+ npx @bountyporte/ai-studio link /absolute/path/to/AI-STUDIO
232
+ ```
180
233
 
181
- An installable npm archive and local Claude Code/Codex plugins are now included.
182
- Use `npx @bountyporte/ai-studio install` for a published registry release, or
183
- install a reviewed local `.tgz` archive before publication. See
184
- [distribution and Windows/WSL setup](docs/DISTRIBUTION.md), which also covers
185
- plugin registration, persistent data, MCP tools and release verification.
234
+ See [distribution, plugin setup, and Windows/WSL instructions](docs/DISTRIBUTION.md)
235
+ for storage paths, update behavior, MCP tools, and troubleshooting.
186
236
 
187
237
  ## Prerequisites
188
238
 
189
239
  - Python 3.13+
190
240
  - Node.js 20+ (Bun auto-detected if available)
191
241
  - uv (Python package manager)
192
- - Claude Code CLI installed and configured, **or** [OpenCode](https://opencode.ai) with Bun
242
+ - An agent CLI for live sessions (optional during installation): Claude Code or Codex can be installed by the wizard; [OpenCode](https://opencode.ai) and Bun must already be installed to select it
193
243
 
194
244
  ## Installation
195
245
 
@@ -276,7 +326,7 @@ make dev
276
326
 
277
327
  ### OpenCode Integration
278
328
 
279
- This fork adds support for [OpenCode](https://opencode.ai) as an alternative to Claude Code CLI. The `opencode-plugin/` directory contains a plugin that sends OpenCode lifecycle events to the same backend API.
329
+ This fork adds support for [OpenCode](https://opencode.ai) as an alternative to Claude Code CLI. The `opencode-plugin/` directory contains a plugin that sends OpenCode lifecycle events to the same backend API. The standard user installer asks before installing its dependencies or registering the plugin; OpenCode is not required for Claude Code or Codex users.
280
330
 
281
331
  > **⚠ Breaking in v0.24.0:** a non-localhost `AI_STUDIO_API_URL` is now clamped to the local default unless `AI_STUDIO_ALLOW_REMOTE=1` is set (the Claude Code hooks always did this). If your backend runs on another host, set `AI_STUDIO_ALLOW_REMOTE=1` or events will silently post to localhost.
282
332
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ai-studio-backend"
3
- version = "0.25.0"
3
+ version = "0.26.0"
4
4
  description = "AI Studio backend: events, missions and teams for AI coding agents"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
package/backend/uv.lock CHANGED
@@ -4,7 +4,7 @@ requires-python = ">=3.13"
4
4
 
5
5
  [[package]]
6
6
  name = "ai-studio-backend"
7
- version = "0.25.0"
7
+ version = "0.26.0"
8
8
  source = { editable = "." }
9
9
  dependencies = [
10
10
  { name = "ai-studio-hooks" },
@@ -82,7 +82,7 @@ dev = [
82
82
 
83
83
  [[package]]
84
84
  name = "ai-studio-hooks"
85
- version = "0.25.0"
85
+ version = "0.26.0"
86
86
  source = { editable = "../hooks" }
87
87
  dependencies = [
88
88
  { name = "defusedxml" },
@@ -12,8 +12,8 @@ export function windowsPlan(command, args, payload, distro = 'Debian') {
12
12
  if (!/^[A-Za-z0-9_.-]+$/.test(distro)) throw new Error('Invalid WSL distribution name.');
13
13
  if (['install', 'update'].includes(command)) {
14
14
  const mapped = args.map((arg) => {
15
- const flag = { '--with-codex': '-WithCodex', '--service': '-Service', '--no-claude': '-NoClaude', '--no-hooks': '-NoHooks', '--start': '-Start' }[arg];
16
- if (!flag) throw new Error('Unsupported Windows installer option. Use --with-codex, --service, --no-claude or --no-hooks.');
15
+ const flag = { '--with-codex': '-WithCodex', '--with-opencode': '-WithOpenCode', '--no-opencode': '-NoOpenCode', '--no-prompt': '-NoPrompt', '--service': '-Service', '--no-claude': '-NoClaude', '--no-hooks': '-NoHooks', '--start': '-Start' }[arg];
16
+ if (!flag) throw new Error('Unsupported Windows installer option. Use --with-codex, --with-opencode, --no-prompt, --service, --no-claude or --no-hooks.');
17
17
  return flag;
18
18
  });
19
19
  return ['powershell.exe', ['-NoProfile', '-ExecutionPolicy', 'Bypass', '-File', path.join(payload, 'install.ps1'), '-PackageSource', ...(command === 'install' ? ['-Start'] : ['-NoClaude', '-NoHooks']), ...mapped]];
@@ -56,7 +56,7 @@ export async function materialize(source, destination) {
56
56
  export async function main(args = process.argv.slice(2)) {
57
57
  const [command = 'help', ...rest] = args;
58
58
  if (['help', '--help', '-h'].includes(command)) {
59
- console.log('AI Studio\n ai-studio install [installer options]\n ai-studio start [--rebuild]\n ai-studio link /absolute/existing/AI-STUDIO\n ai-studio update\n ai-studio doctor [--json|--offline|--url URL]\n ai-studio plugins claude|codex\n ai-studio mcp\nSources and data are stored outside the npm cache. On Windows, the server runs in Debian WSL (~/AI-STUDIO).');
59
+ console.log('AI Studio\n ai-studio install [--with-codex|--with-opencode|--no-claude|--no-prompt]\n ai-studio start [--rebuild]\n ai-studio link /absolute/existing/AI-STUDIO\n ai-studio update\n ai-studio doctor [--json|--offline|--url URL]\n ai-studio plugins claude|codex\n ai-studio mcp\nInteractive installs ask which agent integrations to configure. OpenCode and Bun must already be installed.\nSources and data are stored outside the npm cache. On Windows, the server runs in Debian WSL (~/AI-STUDIO).');
60
60
  return 0;
61
61
  }
62
62
  if (!commands.includes(command)) throw new Error('Unknown command. Run ai-studio --help.');
@@ -1,28 +1,34 @@
1
1
  # npm launcher and Claude/Codex plugins
2
2
 
3
- ## Current release status
3
+ ## Current release
4
4
 
5
- The source includes an npm package and a local plugin marketplace. A `.tgz`
6
- created by `npm pack` can be installed and tested immediately. The npm identity
7
- is `@bountyporte/ai-studio`; check `npm view @bountyporte/ai-studio version` for
8
- registry availability. Registry access and ownership of that scope are required
9
- for publication. No official plugin-directory listing is created automatically.
5
+ The public npm package is [`@bountyporte/ai-studio`](https://www.npmjs.com/package/@bountyporte/ai-studio).
6
+ Claude Code and Codex plugins are bundled. No official plugin-directory listing
7
+ is created automatically.
10
8
 
11
- ## Install from an archive before public publication
9
+ ## Install from npm
12
10
 
13
11
  With Node.js 20.9+ and npm already available:
14
12
 
15
13
  ```sh
16
- npx --yes --package /absolute/path/to/bountyporte-ai-studio-0.25.0.tgz ai-studio install
14
+ npx @bountyporte/ai-studio install
17
15
  ```
18
16
 
19
- Use the same `--package` prefix for `start`, `update`, `doctor`, or `plugins` below.
20
- The package has no postinstall script and no npm dependencies. Installation runs
21
- only after the user invokes `install`; missing system tools may require the
22
- installer's normal OS privileges. Do not use `--yes` if you want npm's download
23
- confirmation prompt.
17
+ In an interactive terminal, the installer asks whether to configure Claude Code,
18
+ Codex, and/or OpenCode. Only selected integrations are configured. OpenCode must
19
+ already be installed with Bun; AI Studio does not install either of them. If no
20
+ agent is selected, the server and interface still install, but no live sessions
21
+ will appear until an agent is connected. The package has no postinstall script or
22
+ npm dependencies; setup runs only when the user invokes `install`.
23
+
24
+ Non-interactive installs retain the legacy behavior (Claude Code and its hooks
25
+ on; Codex and OpenCode off). Select providers explicitly with `--with-codex`,
26
+ `--with-opencode`, or `--no-claude`; use `--no-prompt` to suppress questions.
27
+ `--with-opencode` requires the OpenCode CLI and Bun to be installed already.
28
+ Flags add to the legacy Claude default; for OpenCode alone, use
29
+ `npx @bountyporte/ai-studio install --no-claude --with-opencode`.
24
30
 
25
- After npm publication, the intended commands are:
31
+ Other commands:
26
32
 
27
33
  ```sh
28
34
  npx @bountyporte/ai-studio install
@@ -33,6 +39,9 @@ npx @bountyporte/ai-studio plugins claude
33
39
  npx @bountyporte/ai-studio plugins codex
34
40
  ```
35
41
 
42
+ To test a local `.tgz`, use
43
+ `npx --package /absolute/path/to/package.tgz ai-studio install`.
44
+
36
45
  On macOS/Linux, sources, environments and runtime data live in
37
46
  `~/.local/share/ai-studio/app` (`$XDG_DATA_HOME/ai-studio/app` when set), outside
38
47
  the npm cache. `AI_STUDIO_DATA_DIR` can choose another absolute data folder;
@@ -57,7 +66,10 @@ copied from the npm payload without requiring a Git checkout. An existing Git
57
66
  checkout at `~/AI-STUDIO` is not overwritten by the npm importer. The server and
58
67
  agent CLIs run inside WSL at `~/AI-STUDIO`; the browser remains on Windows.
59
68
 
60
- On Windows, launcher payload files live in `%LOCALAPPDATA%\AI-Studio\payload`.
69
+ On Windows, the installer asks the integration questions inside Debian WSL when
70
+ the terminal is interactive. OpenCode must be installed in WSL with Bun; the
71
+ native Windows OpenCode CLI is not connected by this WSL integration. Launcher
72
+ payload files live in `%LOCALAPPDATA%\AI-Studio\payload`.
61
73
  The native `plugins claude` / `plugins codex` command installs into the CLI on
62
74
  Windows; its Node MCP process delegates to Debian WSL, including key lookup from
63
75
  `~/AI-STUDIO/backend`. To install into a CLI that itself runs inside WSL, run
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "frontend",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "//": [
5
5
  "Dependency policy (ARC-027, 2026-07): runtime `dependencies` are exact-pinned",
6
6
  "for reproducible builds; `devDependencies` use caret ranges so build tools",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ai-studio-hooks"
3
- version = "0.25.0"
3
+ version = "0.26.0"
4
4
  description = "Hooks for AI Studio"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
package/hooks/uv.lock CHANGED
@@ -4,7 +4,7 @@ requires-python = ">=3.13"
4
4
 
5
5
  [[package]]
6
6
  name = "ai-studio-hooks"
7
- version = "0.25.0"
7
+ version = "0.26.0"
8
8
  source = { editable = "." }
9
9
  dependencies = [
10
10
  { name = "defusedxml" },
package/install.ps1 CHANGED
@@ -4,16 +4,19 @@
4
4
  # avec Debian ; l'interface s'ouvre dans ton navigateur Windows.
5
5
  #
6
6
  # Clic droit sur install.ps1 > "Executer avec PowerShell", ou dans PowerShell :
7
- # powershell -ExecutionPolicy Bypass -File .\install.ps1 [-WithCodex] [-Service] [-Start]
7
+ # powershell -ExecutionPolicy Bypass -File .\install.ps1 [-WithCodex] [-WithOpenCode] [-Service] [-Start]
8
8
  #
9
9
  # Voir INSTALL.md.
10
10
 
11
11
  param(
12
12
  [switch]$WithCodex,
13
+ [switch]$WithOpenCode,
13
14
  [switch]$Service,
14
15
  [switch]$Start,
15
16
  [switch]$NoClaude,
16
17
  [switch]$NoHooks,
18
+ [switch]$NoOpenCode,
19
+ [switch]$NoPrompt,
17
20
  [switch]$PackageSource
18
21
  )
19
22
 
@@ -73,10 +76,13 @@ wsl.exe -d $Distro -- bash -c ($copy -replace "`r", "")
73
76
  Step "Installation dans $Distro (ton mot de passe Linux peut etre demande)"
74
77
  $options = @()
75
78
  if ($WithCodex) { $options += "--with-codex" }
79
+ if ($WithOpenCode) { $options += "--with-opencode" }
76
80
  if ($Service) { $options += "--service" }
77
81
  if ($Start) { $options += "--start" }
78
82
  if ($NoClaude) { $options += "--no-claude" }
79
83
  if ($NoHooks) { $options += "--no-hooks" }
84
+ if ($NoOpenCode) { $options += "--no-opencode" }
85
+ if ($NoPrompt) { $options += "--no-prompt" }
80
86
  wsl.exe -d $Distro -- bash -lc "cd ~/AI-STUDIO && ./install.sh $($options -join ' ')"
81
87
  if ($LASTEXITCODE -ne 0) { throw "L'installation dans $Distro a echoue (voir les messages ci-dessus)." }
82
88
 
package/install.sh CHANGED
@@ -5,6 +5,7 @@
5
5
  #
6
6
  # ./install.sh prerequisites, dependencies, hooks, interface
7
7
  # ./install.sh --with-codex also install the Codex CLI
8
+ # ./install.sh --with-opencode install the OpenCode integration (CLI + Bun required)
8
9
  # ./install.sh --start install, then start in this terminal
9
10
  # ./install.sh --service also start AI Studio automatically at login
10
11
  # ./install.sh --no-claude do not install Claude Code
@@ -17,21 +18,26 @@ set -euo pipefail
17
18
  ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
18
19
  NODE_MAJOR=22
19
20
  WITH_CODEX=0
21
+ WITH_OPENCODE=0
20
22
  WITH_CLAUDE=1
21
23
  WITH_HOOKS=1
22
24
  WITH_SERVICE=0
23
25
  WITH_START=0
24
26
  SERVICE_STARTED=0
27
+ PROMPT_PROVIDERS=1
25
28
 
26
29
  for arg in "$@"; do
27
30
  case "$arg" in
28
- --with-codex) WITH_CODEX=1 ;;
29
- --no-claude) WITH_CLAUDE=0 ;;
30
- --no-hooks) WITH_HOOKS=0 ;;
31
+ --with-codex) WITH_CODEX=1; PROMPT_PROVIDERS=0 ;;
32
+ --with-opencode) WITH_OPENCODE=1; PROMPT_PROVIDERS=0 ;;
33
+ --no-opencode) WITH_OPENCODE=0; PROMPT_PROVIDERS=0 ;;
34
+ --no-claude) WITH_CLAUDE=0; WITH_HOOKS=0; PROMPT_PROVIDERS=0 ;;
35
+ --no-hooks) WITH_HOOKS=0; PROMPT_PROVIDERS=0 ;;
36
+ --no-prompt) PROMPT_PROVIDERS=0 ;;
31
37
  --service) WITH_SERVICE=1 ;;
32
38
  --start) WITH_START=1 ;;
33
39
  -h | --help)
34
- sed -n '2,14p' "$0" | sed 's/^# \{0,1\}//'
40
+ sed -n '2,16p' "$0" | sed 's/^# \{0,1\}//'
35
41
  exit 0
36
42
  ;;
37
43
  *)
@@ -41,6 +47,20 @@ for arg in "$@"; do
41
47
  esac
42
48
  done
43
49
 
50
+ ask_yes_no() {
51
+ local question="$1" default="$2" answer answer_lc prompt
52
+ prompt='y/N'
53
+ [ "$default" = "yes" ] && prompt='Y/n'
54
+ printf '%s [%s] ' "$question" "$prompt" >/dev/tty
55
+ IFS= read -r answer </dev/tty || answer=""
56
+ answer_lc="$(printf '%s' "$answer" | tr '[:upper:]' '[:lower:]')"
57
+ case "$answer_lc" in
58
+ y|yes) return 0 ;;
59
+ n|no) return 1 ;;
60
+ *) [ "$default" = "yes" ] ;;
61
+ esac
62
+ }
63
+
44
64
  step() { printf '\n\033[1;36m==> %s\033[0m\n' "$*"; }
45
65
  ok() { printf ' \033[32m✓\033[0m %s\n' "$*"; }
46
66
  warn() { printf ' \033[33m!\033[0m %s\n' "$*"; }
@@ -52,6 +72,27 @@ die() {
52
72
  # Tools installed in the user's home (uv, Claude Code) live here.
53
73
  export PATH="$HOME/.local/bin:$PATH"
54
74
 
75
+ if [ "$PROMPT_PROVIDERS" = 1 ] && [ -t 0 ] && [ -t 1 ]; then
76
+ echo ""
77
+ echo "Choisis les outils d'agent à connecter à AI Studio. Tu pourras relancer ce script pour en ajouter plus tard."
78
+ claude_default=no; codex_default=no; opencode_default=no
79
+ command -v claude >/dev/null 2>&1 && claude_default=yes
80
+ command -v codex >/dev/null 2>&1 && codex_default=yes
81
+ if ask_yes_no "Configurer Claude Code (l'installer s'il manque) ?" "$claude_default"; then
82
+ WITH_CLAUDE=1; WITH_HOOKS=1
83
+ if ask_yes_no "Installer les hooks AI Studio dans Claude Code ?" yes; then WITH_HOOKS=1; else WITH_HOOKS=0; fi
84
+ else
85
+ WITH_CLAUDE=0; WITH_HOOKS=0
86
+ fi
87
+ if ask_yes_no "Configurer Codex (l'installer s'il manque) ?" "$codex_default"; then WITH_CODEX=1; else WITH_CODEX=0; fi
88
+ if ask_yes_no "Activer l'intégration OpenCode (requiert déjà OpenCode et Bun) ?" "$opencode_default"; then WITH_OPENCODE=1; else WITH_OPENCODE=0; fi
89
+ fi
90
+
91
+ if [ "$WITH_OPENCODE" = 1 ]; then
92
+ command -v opencode >/dev/null 2>&1 || die "OpenCode est sélectionné, mais la commande 'opencode' est introuvable. Installe OpenCode puis relance avec --with-opencode."
93
+ command -v bun >/dev/null 2>&1 || die "OpenCode est sélectionné, mais Bun est introuvable. Installe Bun puis relance avec --with-opencode."
94
+ fi
95
+
55
96
  case "$(uname -s)" in
56
97
  Darwin) OS=mac ;;
57
98
  Linux)
@@ -144,11 +185,18 @@ if [ "$WITH_CODEX" = 1 ]; then
144
185
  fi
145
186
 
146
187
  # ---------------------------------------------------------------------------
147
- step "Dépendances du projet (serveur, interface, hooks)"
188
+ step "Dépendances AI Studio (serveur, interface, hooks)"
148
189
  cd "$ROOT"
149
- make install
190
+ make install-base
150
191
  ok "dépendances installées"
151
192
 
193
+ # ---------------------------------------------------------------------------
194
+ if [ "$WITH_OPENCODE" = 1 ]; then
195
+ step "Intégration OpenCode"
196
+ make opencode-install
197
+ ok "plugin OpenCode installé"
198
+ fi
199
+
152
200
  # ---------------------------------------------------------------------------
153
201
  if [ "$WITH_HOOKS" = 1 ]; then
154
202
  step "Connexion de Claude Code à AI Studio (hooks)"
@@ -207,12 +255,15 @@ cat <<EOF
207
255
  Lancer AI Studio : ./start.sh
208
256
  Puis ouvrir : http://localhost:8000 (la page s'ouvre toute seule si possible)
209
257
 
210
- À faire une seule fois :
211
- - connecte Claude Code en lançant : claude
212
258
  EOF
259
+ [ "$WITH_CLAUDE" = 1 ] && echo " Claude Code : lance claude pour te connecter"
213
260
  [ "$WITH_CODEX" = 1 ] && echo " - connecte Codex avec : codex login"
261
+ [ "$WITH_OPENCODE" = 1 ] && echo " OpenCode : redémarre OpenCode pour charger le plugin"
262
+ if [ "$WITH_CLAUDE" = 0 ] && [ "$WITH_CODEX" = 0 ] && [ "$WITH_OPENCODE" = 0 ]; then
263
+ echo " Aucun agent connecté pour l'instant. Relance ./install.sh pour en choisir un."
264
+ fi
214
265
  cat <<EOF
215
- - dans AI Studio, ouvre Réglages → Connexions et autorise Claude/Codex
266
+ - dans AI Studio, ouvre Réglages → Connexions et autorise les fournisseurs
216
267
  et les dossiers de tes projets.
217
268
 
218
269
  Diagnostic : ./doctor.sh
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-studio",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "description": "Create, launch and follow local AI Studio missions from Claude Code or Codex.",
5
5
  "author": {
6
6
  "name": "AI Studio"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai-studio",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "description": "Create, launch and follow local AI Studio missions from Claude Code or Codex.",
5
5
  "skills": "./skills",
6
6
  "mcpServers": "./codex.mcp.json",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "ai-studio",
4
- "version": "0.25.0",
4
+ "version": "0.26.0",
5
5
  "description": "Create, launch and follow local AI Studio missions from Claude Code or Codex.",
6
6
  "license": "MIT",
7
7
  "homepage": "https://github.com/badrtairlbahrepro/AI-STUDIO",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-ai-studio",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "description": "OpenCode plugin that sends lifecycle events to AI Studio",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bountyporte/ai-studio",
3
- "version": "0.25.0",
3
+ "version": "0.26.0",
4
4
  "description": "Install AI Studio locally and connect Claude Code and Codex through MCP",
5
5
  "type": "module",
6
6
  "bin": {
package/pyproject.toml CHANGED
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ai-studio"
3
- version = "0.25.0"
3
+ version = "0.26.0"
4
4
  description = "Live studio that visualizes and coordinates AI coding agents (Claude Code, Codex, OpenCode)"
5
5
  readme = "README.md"
6
6
  authors = [