scalix 1.5.0 → 1.5.2
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/.env.example +5 -3
- package/CHANGELOG.md +24 -0
- package/LICENSE +0 -1
- package/README.md +47 -2
- package/dist/agent-presets.js +33 -0
- package/dist/agent.js +358 -42
- package/dist/api-client.js +12 -4
- package/dist/board-context.js +81 -0
- package/dist/browser-access.js +0 -0
- package/dist/cli.js +435 -94
- package/dist/cloud.js +95 -6
- package/dist/config.js +44 -5
- package/dist/constants.js +121 -19
- package/dist/context-builder.js +9 -1
- package/dist/feedback.js +51 -0
- package/dist/headless.js +44 -13
- package/dist/ipc-server.js +362 -99
- package/dist/keychain.js +34 -9
- package/dist/mcp.js +470 -28
- package/dist/openrouter-oauth.js +149 -0
- package/dist/project-index.js +46 -23
- package/dist/sandbox.js +115 -27
- package/dist/sessions.js +12 -0
- package/dist/settings.js +33 -2
- package/dist/slash-commands.js +6 -0
- package/dist/sub-agent.js +3 -2
- package/dist/tools-browser.js +87 -16
- package/dist/tools-extra.js +15 -3
- package/dist/tools-memory.js +74 -0
- package/dist/tools-web.js +67 -6
- package/dist/tools.js +15 -14
- package/dist/workspace-trust.js +7 -1
- package/package.json +3 -1
package/.env.example
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# Required — your Scalix API key
|
|
2
|
-
SCALIX_API_KEY=
|
|
2
|
+
SCALIX_API_KEY=scalix_sk_...
|
|
3
3
|
|
|
4
|
-
# Optional —
|
|
5
|
-
#
|
|
4
|
+
# Optional — API base URL. This is the host root, NOT the /v1 endpoint: the
|
|
5
|
+
# client appends /v1/ai/... itself. Point it at a self-hosted gateway if you
|
|
6
|
+
# have one; the default is Scalix cloud.
|
|
7
|
+
# SCALIX_BASE_URL=https://api.scalix.world
|
|
6
8
|
|
|
7
9
|
# Optional — override the default model
|
|
8
10
|
# SCALIX_MODEL=
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to Scalix Coder will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.5.1] - 2026-08-08
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- **Scalix Cloud key for BYOK sessions.** The platform tools (deploy, database, storage, …) now run on their own credential pair, independent of inference: `SCALIX_CLOUD_API_KEY` / `SCALIX_CLOUD_BASE_URL` env, a keychain slot and settings row in the VS Code extension, and a wizard step in the CLI. Inference on your own endpoint, deploys still on Scalix — the BYOK key never reaches Scalix and the Scalix key never reaches your endpoint. The IPC engine now registers the cloud tools at startup; the GUI previously had none at all, and models asked to deploy invented SDKs and CLI flags instead.
|
|
9
|
+
- **Guided setup.** Full-page setup panel in the extension (provider presets, key/model/limits, engine and terminal-CLI status with an install button) that auto-opens on first run and lands in chat after save; `/setup` slash command in both surfaces.
|
|
10
|
+
- **The agent knows what is at its disposal.** While a cloud connection is live, every request carries a section listing the registered `scalix_*` tool groups and the platform's ~30s per-call execution ceiling, steering long operations to the async pairs (`scalix_build_create` → poll `scalix_build_status`) instead of one blocking call that the transport would kill.
|
|
11
|
+
- **Scope-aware tool catalog.** The catalog is filtered client-side by the API key's scope families, so the model only sees tools its key can plausibly call; `/cloud status` reports "N of M available to this key" and says when the key's own project binding overrides a configured project id (the platform ignores the header for API keys — the key wins).
|
|
12
|
+
- **Key-shape guidance.** Platform tools need a project-scoped key with the `database:query` scope; setup copy now says so everywhere a key is entered, and the two known rejections map to one-line remedies (400 = org-wide key, 403 = missing database scope) in the wizard, `/cloud status`, headless warnings and the extension banner.
|
|
13
|
+
- `/status` marks the context window as *assumed* when neither the user nor the API supplied a spec for the active model, and points at the `/setup` context-window override — no invented numbers.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- **Scalix product steering is gated on connection state.** Full platform guidance only while Scalix Cloud is connected; a single neutral pointer on the Scalix provider while disconnected; nothing Scalix-specific on pure BYOK sessions. Coder is a generic tool — the pitch arrives with the tools, not before.
|
|
17
|
+
- Cloud tool-call budget cut from 120s to 45s: the platform transport ends a call at ~30–35s, so the extra 75s only ever waited on a dead call.
|
|
18
|
+
- Request timeout raised to 300s to match the platform's own walls (env-overridable via `SCALIX_REQUEST_TIMEOUT_MS`).
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
- **Model switching, 24 audited fixes + 3 from dogfooding videos.** `setModel` preserves the failover chain and mutates in place (sub-agents saw stale model lists), and resets the breaker; fresh sends no longer round-robin the chain; BYOK model specs are registered on every switch surface, so no more `max_tokens`-less requests that OpenRouter 400s; the TUI `/model` no longer fires mid-stream via the `/mode` prefix collision and persists chain-preservingly to the global config (project overrides no longer laundered); `/settings` reports live-vs-next-launch truthfully; a `SCALIX_MODEL` override is announced; the IPC engine survives stray rejections — a 429 used to kill the whole session.
|
|
22
|
+
- The system prompt forbids inventing `scalix` packages or CLI flags and explains the `scalix_*` tools, with pinned SDK names (`@scalix-world/sdk` on npm, `scalix-sdk` on PyPI) and exact model ids.
|
|
23
|
+
|
|
24
|
+
### Fixed (VS Code extension)
|
|
25
|
+
- Scalix keys are verified against `/v1/me` before storing — a rejected key gets a dialog with the reason instead of failing silently later. BYOK keys are never probed.
|
|
26
|
+
- Model QuickPick accepts mouse clicks under Antigravity's event ordering; model/command updates broadcast to every chat surface (the editor tab used to go stale); the shared-config watcher ignores its own writes, so adopting a config no longer reverts a fresh model switch; the settings Models tab was rebuilt — stable refresh, live active badge, auto-reload on provider/endpoint/key change.
|
|
27
|
+
- `vsce` packaging: the extension manifest carries the `repository` field CI packaging requires.
|
|
28
|
+
|
|
5
29
|
## [1.5.0] - 2026-08-02
|
|
6
30
|
|
|
7
31
|
### Added
|
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
AI-powered coding agent for the terminal and [VS Code](https://marketplace.visualstudio.com/items?itemName=scalix.scalix) — built by [Scalix World](https://scalix.world).
|
|
4
4
|
|
|
5
|
-
](https://www.npmjs.com/package/scalix)
|
|
6
6
|

|
|
7
7
|

|
|
8
8
|
|
|
@@ -61,12 +61,28 @@ Notes:
|
|
|
61
61
|
|
|
62
62
|
### Install
|
|
63
63
|
|
|
64
|
+
```bash
|
|
65
|
+
npm install -g scalix
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Requires Node 18 or newer. If `npm install -g` needs `sudo` on your machine, that
|
|
69
|
+
is a sign npm's global prefix points somewhere root-owned — point it at your home
|
|
70
|
+
directory (`npm config set prefix ~/.npm-global`) rather than installing as root.
|
|
71
|
+
|
|
72
|
+
<details>
|
|
73
|
+
<summary>From source (contributors)</summary>
|
|
74
|
+
|
|
75
|
+
The repository is private; you need access before this will clone.
|
|
76
|
+
|
|
64
77
|
```bash
|
|
65
78
|
git clone https://github.com/scalixworld/scalix-coder.git && cd scalix-coder
|
|
66
79
|
npm install
|
|
67
|
-
|
|
80
|
+
npm run build
|
|
81
|
+
npm link
|
|
68
82
|
```
|
|
69
83
|
|
|
84
|
+
</details>
|
|
85
|
+
|
|
70
86
|
### Run
|
|
71
87
|
|
|
72
88
|
```bash
|
|
@@ -239,6 +255,35 @@ Config is stored in `~/.scalix-coder/config.json`.
|
|
|
239
255
|
| `.scalix/rules/*.md` | Scoped rules |
|
|
240
256
|
| `mcp-services.json` | MCP server config |
|
|
241
257
|
|
|
258
|
+
### MCP servers
|
|
259
|
+
|
|
260
|
+
Servers listed in `mcp-services.json` (project root, or `.scalix/` as a
|
|
261
|
+
fallback) are connected at startup and their tools are offered to the model as
|
|
262
|
+
`mcp__<server>__<tool>`. Both transports are supported:
|
|
263
|
+
|
|
264
|
+
```json
|
|
265
|
+
{
|
|
266
|
+
"mcpServers": [
|
|
267
|
+
{ "serverLabel": "github", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"],
|
|
268
|
+
"env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_…" } },
|
|
269
|
+
{ "serverLabel": "docs", "serverUrl": "https://docs.example.com/mcp", "authorizationEnv": "DOCS_TOKEN" }
|
|
270
|
+
]
|
|
271
|
+
}
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
The Claude Desktop / VS Code object-map dialect (`"mcpServers": {"github": {…}}`)
|
|
275
|
+
is accepted too, so an existing config can be dropped in unchanged.
|
|
276
|
+
|
|
277
|
+
- `disabled: true` skips an entry without deleting it; `allowedTools.toolNames`
|
|
278
|
+
registers only the named tools from that server.
|
|
279
|
+
- A server that fails to start is logged and skipped — it never takes the run
|
|
280
|
+
down with it. `/mcp` lists the status of each.
|
|
281
|
+
- **Command (stdio) servers only start in a trusted workspace**, because
|
|
282
|
+
spawning one runs arbitrary local code. They get a clean environment, not the
|
|
283
|
+
agent's, so they cannot read its API keys.
|
|
284
|
+
- MCP tools are external, so they require confirmation under the default
|
|
285
|
+
permission mode.
|
|
286
|
+
|
|
242
287
|
## VS Code Extension
|
|
243
288
|
|
|
244
289
|
Install from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=scalix.scalix) — or from [Open VSX](https://open-vsx.org/extension/scalix/scalix) if you use Cursor, Windsurf, or VSCodium:
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export const AGENT_PRESETS = [
|
|
2
|
+
{
|
|
3
|
+
id: 'cloud-architect',
|
|
4
|
+
name: 'Cloud Architect',
|
|
5
|
+
description: 'Full Scalix Cloud tools access with architecture-first planning',
|
|
6
|
+
systemPromptAdditions: 'You are an expert Scalix Cloud Architect. Prioritize robust, scalable infrastructure. Plan changes carefully.',
|
|
7
|
+
permissionMode: 'default'
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: 'dba',
|
|
11
|
+
name: 'Database Administrator',
|
|
12
|
+
description: 'Focused on database migrations and SQL optimization',
|
|
13
|
+
systemPromptAdditions: 'You are a Senior DBA. Prioritize data integrity and query performance. Always verify schemas before altering.',
|
|
14
|
+
permissionMode: 'default'
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
id: 'devops',
|
|
18
|
+
name: 'DevOps Engineer',
|
|
19
|
+
description: 'CI/CD, deployments, and infrastructure management',
|
|
20
|
+
systemPromptAdditions: 'You are a DevOps engineer focused on CI/CD pipelines, containerization, and safe deployments.',
|
|
21
|
+
permissionMode: 'default'
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
id: 'full-access',
|
|
25
|
+
name: 'Full Access (Auto)',
|
|
26
|
+
description: 'All tools enabled, autonomous execution mode',
|
|
27
|
+
systemPromptAdditions: 'You are fully autonomous. Execute the required steps directly.',
|
|
28
|
+
permissionMode: 'auto'
|
|
29
|
+
}
|
|
30
|
+
];
|
|
31
|
+
export function getPreset(id) {
|
|
32
|
+
return AGENT_PRESETS.find(p => p.id === id);
|
|
33
|
+
}
|