@altimateai/altimate-code 0.11.2 → 0.12.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.
- package/CHANGELOG.md +45 -0
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,51 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.12.1] - 2026-09-21
|
|
9
|
+
|
|
10
|
+
Two workspace-pilot additions that landed right after 0.12.0, plus the fixes their joint review turned up. Numbered as a patch because everything under **Added** is behind `ALTIMATE_WORKSPACE=1`; the only changes that reach every user are two reworded strings under **Changed**. **Heads-up for support (pilot):** a session launched from the VS Code / Cursor extension now follows the workspace picked in the extension's panel for skills and memory — but warehouse tool routing still follows the project's own link (#1337), and the agent says so when asked.
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **The agent states which Altimate Workspace the project is linked to, every turn.** Not only when it is routing warehouse tools: an unlinked project, a link that cannot be verified right now, and a freshly created workspace each get a definite answer ("linked to … id N", "none is linked — here is how to link one", "could not be confirmed"). When the link is served from cache because the server could not be asked, the agent says "last known", and a "none is linked" answered from the five-minute cache says "as of the last check". The instruction is scoped to a genuine identity question ("this/current/active workspace") so an unrelated Databricks conversation gets no linking pitch, and the model is told not to confuse the Altimate Workspace with a Databricks workspace or an IDE workspace folder in either direction. The workspace name is presented as a label chosen by the workspace owner, not an instruction (#1335 tracks structural isolation). Resolved at most once per 30 s per account and project, with a 1.5 s deadline so a slow server never stalls a turn. (#1330, closes #1331)
|
|
15
|
+
- **The IDE extension's workspace selection governs the session it launches.** `altimate-code serve` started by the VS Code / Cursor extension reads `ALTIMATE_PINNED_WORKSPACE_{ID,NAME,ROOT}`; a valid pin outranks the project's stored binding for skills and memory, is validated against the workspaces the signed-in account can see (it selects among them, it grants nothing), is scoped to the folder it was launched for, and is never written to disk. A partial or malformed pin, or one naming a workspace the account cannot see, fails closed rather than falling back to the project's link. A pin is fixed for the life of the process; the extension relaunches `serve` when the selection changes. (#1320)
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- **Routing and identity can no longer contradict each other about the link.** The routing section used to say "this project is bound to workspace X" from a snapshot taken at tool resolution; it now says which workspace *serves* the tools, and only the identity section states the link. (#1330)
|
|
20
|
+
- **A pinned session is described as pinned, with the routing caveat**, and a pin served from the offline grace window is marked "last known" like a cached link. Identity's per-turn memo is keyed on the credential, not only the tenant, so two accounts on one tenant never share that memo; the resolver's own five-minute caches underneath it are still keyed by tenant and host, so a same-tenant account switch can still be answered from the previous account's cached link for up to five minutes (#1339, deferred). Under a pin the deadline fallback never reaches for the project's own cached link. Found in this release's review.
|
|
21
|
+
- **The persistent `shell` tool strips the same host markers as `bash`** (`ALTIMATE_CODE_SERVE`, the pin variables, headless and non-interactive), so a nested `altimate-code serve` started from it cannot inherit a pin it was never given. Found in this release's review.
|
|
22
|
+
- **Pin ids are decimal digits only** — `Number()` also accepted `1e3` and `0x10` — and the identity section's size cap now fits its longest shape with a maximum-length name instead of dropping the name. Found by this release's adversarial tests.
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- **Two strings no longer use "workspace" for something other than the Altimate Workspace** (for every user, not only the pilot): the Databricks credential prompt says `<databricks-workspace-host>`, and the dbt nothing-built validator says "this project is configured to require artifacts". (#1330)
|
|
27
|
+
|
|
28
|
+
### Known limitations (pilot)
|
|
29
|
+
|
|
30
|
+
- Warehouse tool routing does not yet honour the IDE pin (#1337); skills, memory and the identity line do.
|
|
31
|
+
- Switching the pinned workspace does not pull that workspace's skills and memory until the next sync cycle (#1320 notes).
|
|
32
|
+
|
|
33
|
+
## [0.12.0] - 2026-09-18
|
|
34
|
+
|
|
35
|
+
The workspace pilot grows a management surface: the agent knows which workspace it is linked to, the sidebar shows what has and has not synced, a `/workspace` menu handles refresh/sync/unlink, and a locally written skill can be published to the workspace. Everything under **Added** is pilot-only (`ALTIMATE_WORKSPACE=1`); nothing changes for other users. **Heads-up for support:** `upgrade` and `uninstall` now refuse when they cannot tell how the binary was installed, instead of guessing — see the first entry under **Fixed**.
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
|
|
39
|
+
- **The agent knows which workspace it is linked to.** The system prompt names the bound workspace whenever the binding is verified, so "which workspace is this project linked to?" is answerable; unverified states stay unnamed. Server-provided names are stripped of control and line-separator characters and length-bounded before they reach the prompt, so a hostile workspace name cannot open a new heading or role. (#1278)
|
|
40
|
+
- **`/workspace` menu** — shows the binding, then **Refresh** (pull the workspace's skills and memory into this project), **Sync** (re-send local memory the workspace never received) and **Unlink**. Unlink is safe against a relink that lands mid-request and confirms with the server before clearing local state. (#1278)
|
|
41
|
+
- **Sidebar sync status** — two lines under the workspace name: `12 memories · 3 not synced` and `skills synced 6m ago`. Refreshes every 30 s and reacts immediately to a link, unlink or rebind in this process. The memory-enablement check is rate-limited (once per five minutes on "no", never re-asked on "yes") and scoped to the signed-in account, so a tenant switch never pairs one account's counts with another's name. (#1279)
|
|
42
|
+
- **Publish a skill to the workspace** — `altimate-code skill publish <name>`, and a "Publish to workspace" action in the Skills dialog (`ctrl+a` on a skill). Uploads every file in the skill directory, not just `SKILL.md`; re-publishing updates the same workspace skill. Refuses, with a message that says what to do, when the project is not linked, the account does not own the workspace, the skill is built-in, global, or one the workspace sent you, a file is binary or a symlink, the bundle is empty or over 10 MB / 100 files, the name is taken by another of your skills, or the skill was edited in the workspace while you were uploading. Never uploads `.env*`, `.git`, editor swap files, private keys and certificates (`id_rsa`, `*.pem`, `*.key`, `*.p12`, …), `.npmrc`/`.netrc`/`.pypirc`, `credentials.json`, `secrets.*`, or the `.ssh`/`.aws`/`.gnupg`/`.altimate` directories — a filename blocklist, so keep other secrets out of skill folders. Documented in [Skills](docs/docs/configure/skills.md#cli-commands). (#1280, #1313)
|
|
43
|
+
- **Extension tools in the prompt** — when a live VS Code bridge for this project serves extension-type tools (dbt project tools, SQL tools), the `## Workspace integrations` section now names them, so the model can call what the IDE is actually serving. Silent unless both the catalog lists the tool and the bridge is verified alive. (#1291)
|
|
44
|
+
|
|
45
|
+
### Fixed
|
|
46
|
+
|
|
47
|
+
- **`upgrade` and `uninstall` resolve the install from the running binary** instead of asking every package manager and acting on the first that answered. When the method cannot be confirmed — a pinned `ALTIMATE_CODE_BIN_PATH`, an `npx`/`dlx` cache, a scoop or choco install (which only ever targeted upstream's `opencode` package), or an unfamiliar layout — both commands now refuse and print the manual command for each manager, rather than upgrading the wrong package or, for `uninstall`, deleting config, data and cache before failing to remove the binary. Upgrade failures name a reason; subprocess output reaching the log is redacted first. (#1305, #1306)
|
|
48
|
+
- **Compaction, title and summary requests no longer fail with "Could not get a response from the agent."** Those requests declare no tools while summarising a history full of tool calls, which the Altimate gateway rejects. Tool parts are now flattened to readable text for toolless requests only, with assistant turns coalesced so role alternation holds; ordinary turns are untouched. (#1319, closes #1315)
|
|
49
|
+
- **Creating a quick workspace from an already-linked project works.** The atomic create-and-bind call refused before creating anything, so the rebind path never had a target. It now creates unbound, then repoints — and aborts cleanly if the signed-in account changes in between, rather than stranding a new workspace. (#1318)
|
|
50
|
+
- **`skill publish` and the TUI "Publish to workspace" row appear only under the workspace pilot**, like `link`; outside it, the command told users to run a `link` command that did not exist for them. Found in this release's review.
|
|
51
|
+
- **`test/installation/ownership.test.ts` read the developer's real `BUN_INSTALL`** and was red on any machine where bun had ever installed this package globally. Found in this release's review.
|
|
52
|
+
|
|
8
53
|
## [0.11.2] - 2026-09-11
|
|
9
54
|
|
|
10
55
|
Patch on 0.11.1: closes the gap that kept most free-tier users from ever being offered Altimate Base, and makes linked workspace names clickable. **Heads-up for support:** on their next launch, users whose default quietly moved to a public free Zen model after 0.11.0 will now see a one-time dialog asking whether to switch to Altimate Base. Nothing switches without a Yes.
|
package/package.json
CHANGED
|
@@ -7,20 +7,20 @@
|
|
|
7
7
|
"scripts": {
|
|
8
8
|
"postinstall": "bun ./postinstall.mjs || node ./postinstall.mjs"
|
|
9
9
|
},
|
|
10
|
-
"version": "0.
|
|
10
|
+
"version": "0.12.1",
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@altimateai/altimate-core": "0.7.0"
|
|
14
14
|
},
|
|
15
15
|
"optionalDependencies": {
|
|
16
|
-
"@altimateai/altimate-code-darwin-x64-baseline": "0.
|
|
17
|
-
"@altimateai/altimate-code-linux-x64-baseline": "0.
|
|
18
|
-
"@altimateai/altimate-code-linux-arm64": "0.
|
|
19
|
-
"@altimateai/altimate-code-windows-x64-baseline": "0.
|
|
20
|
-
"@altimateai/altimate-code-darwin-arm64": "0.
|
|
21
|
-
"@altimateai/altimate-code-darwin-x64": "0.
|
|
22
|
-
"@altimateai/altimate-code-windows-x64": "0.
|
|
23
|
-
"@altimateai/altimate-code-linux-x64": "0.
|
|
16
|
+
"@altimateai/altimate-code-darwin-x64-baseline": "0.12.1",
|
|
17
|
+
"@altimateai/altimate-code-linux-x64-baseline": "0.12.1",
|
|
18
|
+
"@altimateai/altimate-code-linux-arm64": "0.12.1",
|
|
19
|
+
"@altimateai/altimate-code-windows-x64-baseline": "0.12.1",
|
|
20
|
+
"@altimateai/altimate-code-darwin-arm64": "0.12.1",
|
|
21
|
+
"@altimateai/altimate-code-darwin-x64": "0.12.1",
|
|
22
|
+
"@altimateai/altimate-code-windows-x64": "0.12.1",
|
|
23
|
+
"@altimateai/altimate-code-linux-x64": "0.12.1"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"pg": ">=8",
|