altimate-code 0.9.0-beta.2 → 0.9.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/CHANGELOG.md +58 -5
- package/README.md +2 -2
- package/package.json +9 -9
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,59 @@ 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.9.2] - 2026-07-20
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **Snowflake Cortex: `claude-sonnet-5`, `claude-opus-4-8`, and OpenAI GPT-5.4 (`openai-gpt-5.4`, `-mini`, `-nano`) in the model picker.** All verified live against Cortex, including prompt caching and tool calling on the new Claude models.
|
|
13
|
+
- **Human-readable tool-call titles and source badges.** Tool calls now render dbt-aware labels — "Reading customers model", "Searching \*\*/\*.sql" — instead of raw paths, and every call carries an authoritative source badge (`builtin` / `altimate` / `mcp`) stamped server-side so all clients (chat webview, TUI) display consistent origins. (#980)
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- **Snowflake Cortex model catalog refreshed against the live service (2026-07-20).** Removed models Snowflake has deprecated (July 8, 2026: `deepseek-r1`, `mistral-large`, `llama3.1-405b`, `snowflake-llama-3.3-70b`) or delisted (`claude-3-7-sonnet`, `claude-3-5-sonnet`, `openai-gpt-5-chat`, `llama4-scout`, `mixtral-8x7b`, `snowflake-llama-3.1-405b`, `gemini-3.1-pro`) — requests to these now hard-fail on Cortex. **If your config pins one of these IDs, the next request fails with `Model not found: snowflake-cortex/<model>. Did you mean: ...?`** — switch to a current model, or re-register the ID via `altimate-code.json` (see the providers docs). Locally registered models are unaffected.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- **Snowflake Cortex prompt caching now activates for Claude models.** Cortex only honors caching markers placed inside content blocks (`messages[].content[].cache_control`), but requests carried them as message-level fields — so every request billed the full input rate (`cache_read_input`/`cache_write_input` stayed NULL in `TOKENS_GRANULAR`). The provider now relocates the markers into content blocks (system prompt + trailing messages, max 4 breakpoints), so repeated prefixes bill at Snowflake's reduced cached-input rate — savings are workload-dependent and largest on long agent sessions with big stable prefixes. If a Cortex account rejects the marked shape, the request is retried once without markers and marker injection pauses for a 5-minute cooldown. Note for Snowflake admins: `cache_read_input`/`cache_write_input` in `TOKENS_GRANULAR` begin populating for these workloads (previously always NULL) — update any dashboard queries that assumed those columns were NULL. (#1009)
|
|
22
|
+
- **Legacy documentation links canonicalized.** `docs.altimate.sh`, `datamates-docs.myaltimate.com`, and `www.altimate.sh/benchmarks` references (including the TUI's docs links and system prompts) now point to `help.altimate.ai` and `altimate.ai/benchmarks`. (#1004)
|
|
23
|
+
|
|
24
|
+
## [0.9.1] - 2026-07-08
|
|
25
|
+
|
|
26
|
+
This release rebases altimate-code onto **upstream OpenCode v1.17.9** (bridged up from v1.4.0 — ~165 upstream commits) behind the fork's own fixes and hardening. It is a larger-than-usual jump from 0.8.10; the upgrade is automatic and in-place (see **Upgrading from 0.8.10** below).
|
|
27
|
+
|
|
28
|
+
### Security
|
|
29
|
+
|
|
30
|
+
- **MCP tool calls now correctly enforce the permission check.** During the v1.17.9 re-home, the MCP tool wrapper awaited a permission `Effect` without running it, so an MCP tool could execute without going through the permission prompt. It was caught in pre-release review and never reached a published stable release; upgrading closes the gap. Users who loosened permissions expecting MCP tools to run unprompted will now see the prompt they were always meant to go through. (`e7ec6a9b29`)
|
|
31
|
+
- **The `sensitive_write` guard now actually fires** on paths it previously let through by defaulting open. (#209 follow-up)
|
|
32
|
+
|
|
33
|
+
### Added
|
|
34
|
+
|
|
35
|
+
- **Bearer-auth remote MCP servers via `headersCommand`.** A remote MCP entry can now compute header values by running a command (argv form, run via `execFile` — no shell), re-resolved on every connect so short-lived bearer tokens refresh automatically. This unlocks token-gated servers such as **Microsoft Fabric Core MCP** and Azure Entra ID without a local proxy. When an `Authorization` header is present (statically or via `headersCommand`) and `oauth` is not explicitly configured, OAuth auto-detection is disabled so the bearer token isn't overridden; servers that return `null` tool-annotation hints (Fabric) are tolerated. See the [MCP servers docs](https://docs.altimate.ai/configure/mcp-servers). (#793, #791, #792)
|
|
36
|
+
- **A `source` field on `session_start` telemetry**, so extension-spawned sessions sharing one `altimate serve` process are distinguishable. (#968)
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
|
|
40
|
+
- **Upstream OpenCode v1.4.0 → v1.17.9 bridge merge.** Config validation moved from Zod to Effect `Schema`, the MCP layer was rewritten onto Effect, and session persistence moved to the core `SessionTable`. Existing config files and local databases are migrated/adapted automatically on first launch. (#964)
|
|
41
|
+
- **Background auto-upgrade now only auto-applies patch releases.** A minor/major release (like this one) shows a notification instead — run `altimate upgrade` explicitly to move onto 0.9.x. This bounds exposure to large jumps.
|
|
42
|
+
- **Model reasoning ("thinking") is collapsed by default.** It could previously render expanded for existing users, which risked showing pasted secrets in the reasoning trace. Toggle full visibility back on with `/thinking`. (`e695b536f4`)
|
|
43
|
+
|
|
44
|
+
### Fixed
|
|
45
|
+
|
|
46
|
+
- **Upgrade-path database-migration hardening.** Fixed a duplicate-column crash on legacy databases created by older binaries, a fresh-install crash, and unbounded migration-journal row growth — so a 0.8.10 database migrates cleanly and idempotently to 0.9.1. (`cf62f1f512`, `57584ed4d8`, `27c490515a`)
|
|
47
|
+
- **TUI and runtime fixes carried in from the bridge**: clicking a truncated URL opens the full URL (#976); Ctrl+A/Ctrl+E and history recall restored in the prompt (#973, #975); `/mcps` autocomplete de-duplicated and the MCP auth command surfaced (#971, #972, #974); reviewer mode made usable (#978); session traces pruned by modification time rather than filename.
|
|
48
|
+
|
|
49
|
+
### Upgrading from 0.8.10
|
|
50
|
+
|
|
51
|
+
- **No manual steps required.** First launch on 0.9.1 runs an automatic, idempotent database migration (validated against mixed old/new-binary databases).
|
|
52
|
+
- Config validation is now stricter (Effect `Schema`). If configured providers, agents, or MCP servers appear to disappear after upgrading, your global config may have failed validation and fallen back to defaults — check the logs for the offending key and report it.
|
|
53
|
+
- As a precaution before a jump this large, you may back up `~/.local/share/altimate-code/opencode.db` for a rollback path.
|
|
54
|
+
|
|
55
|
+
### Internal
|
|
56
|
+
|
|
57
|
+
- Merge-resolution correctness: Fabric annotation-hint tolerance was folded into the gated `listTools` fallback (keyed off the Zod issue-payload shape to avoid false-positive retries), and `headersCommand` was added to the Effect-`Schema` MCP config. Conflict resolutions were verified via Codex deep-review, the full `packages/opencode` suite (10,647 pass), and a v0.9.1 adversarial suite.
|
|
58
|
+
- Release infra: the release version derives from the fork package; prerelease tags publish to the npm `beta` channel; auto-generated release notes now diff against the last stable ancestor tag.
|
|
59
|
+
- Deferred review findings filed as #995–#1000.
|
|
60
|
+
|
|
8
61
|
## [0.8.10] - 2026-06-22
|
|
9
62
|
|
|
10
63
|
### Fixed
|
|
@@ -118,7 +171,7 @@ A plan-mode reliability patch for the hosted gateway and other non-Anthropic mod
|
|
|
118
171
|
### Fixed
|
|
119
172
|
|
|
120
173
|
- **Plan mode no longer refuses benign requests on `altimate-default` and other non-Anthropic models.** The root cause was *how* altimate-code delivers its own plan instructions: a `<system-reminder>`-wrapped block attached as user-role text. Claude is trained to read that tag as authoritative system guidance, but GPT-5.x, Gemini, and other non-Anthropic models pattern-matched the same block — carrying `STRICTLY FORBIDDEN` / `ZERO exceptions` / `MUST` language — as a **prompt-injection attempt** and declined, returning *"I'm sorry, but I cannot assist with that request."* for ordinary developer tasks. altimate-code now **hoists those self-injected reminders into proper `role:"system"` messages** for non-Anthropic models, so they arrive as instructions rather than suspect user input; Anthropic models are unchanged. The hoist is scoped by **provenance** to altimate-code's own reminder parts — user-supplied files, MCP-resource bodies, and `data:`-URL content can never gain system-role priority, even when they begin with `<system-reminder>`. Gateway models are routed by `model.family` (via a shared `familyVendor` classifier) so a Claude- or Gemini-backed gateway model lands on the right base prompt instead of an Anthropic-style fallback. (#887, #888)
|
|
121
|
-
- **The "plan agent used no tools" warning is accurate — and no longer false-fires.** Previously the warning blamed the model's *tool-use capability* (misleading — these models are fully tool-capable) and could fire on the final text-only step of a **successful** multi-step plan session, making a working session look broken. The trip-wire now scans the conversation history for prior tool calls, so a session that already explored the codebase isn't flagged. When it does fire, the copy describes the observed symptom only ("stopped without calling any tools"), lists the likely causes, and offers concrete recoveries — ask it to investigate first, rephrase, or, if it keeps refusing, `/model` to a tier more eager to explore. The plan agent is also now instructed to **read or search the codebase before drafting** any plan, with an explicit escape hatch for trivial, fully-specified changes. See [Plan mode](https://
|
|
174
|
+
- **The "plan agent used no tools" warning is accurate — and no longer false-fires.** Previously the warning blamed the model's *tool-use capability* (misleading — these models are fully tool-capable) and could fire on the final text-only step of a **successful** multi-step plan session, making a working session look broken. The trip-wire now scans the conversation history for prior tool calls, so a session that already explored the codebase isn't flagged. When it does fire, the copy describes the observed symptom only ("stopped without calling any tools"), lists the likely causes, and offers concrete recoveries — ask it to investigate first, rephrase, or, if it keeps refusing, `/model` to a tier more eager to explore. The plan agent is also now instructed to **read or search the codebase before drafting** any plan, with an explicit escape hatch for trivial, fully-specified changes. See [Plan mode](https://help.altimate.ai/code/data-engineering/agent-modes/#plan) and [Troubleshooting](https://help.altimate.ai/code/reference/troubleshooting/). (#888)
|
|
122
175
|
|
|
123
176
|
## [0.8.2] - 2026-06-03
|
|
124
177
|
|
|
@@ -126,7 +179,7 @@ A small correctness patch. The dbt PR reviewer's deterministic engine never requ
|
|
|
126
179
|
|
|
127
180
|
### Fixed
|
|
128
181
|
|
|
129
|
-
- **`dbt_pr_review` no longer implies it needs an altimate API key.** The native `altimate-core` engine behind the reviewer (column-lineage blast radius, query equivalence, PII classification, A–F grade) runs **fully offline** via the bundled napi binary — there is no `altimate_core.init` and no API-key gate in that path. Two tool descriptions (`altimate_core_column_lineage`, `altimate_core_track_lineage`) still carried a stale Python-bridge-era line claiming *"Requires `altimate_core.init()` with API key"*, so a stuck **lint-only** run was mis-diagnosed as missing auth. The descriptions now state the tools run offline with no key. **Lint-only actually means the dbt `manifest.json` didn't resolve** (wrong path, stale manifest, or wrong working directory) — the [dbt PR Review docs](https://
|
|
182
|
+
- **`dbt_pr_review` no longer implies it needs an altimate API key.** The native `altimate-core` engine behind the reviewer (column-lineage blast radius, query equivalence, PII classification, A–F grade) runs **fully offline** via the bundled napi binary — there is no `altimate_core.init` and no API-key gate in that path. Two tool descriptions (`altimate_core_column_lineage`, `altimate_core_track_lineage`) still carried a stale Python-bridge-era line claiming *"Requires `altimate_core.init()` with API key"*, so a stuck **lint-only** run was mis-diagnosed as missing auth. The descriptions now state the tools run offline with no key. **Lint-only actually means the dbt `manifest.json` didn't resolve** (wrong path, stale manifest, or wrong working directory) — the [dbt PR Review docs](https://help.altimate.ai/code/usage/dbt-pr-review/) now spell out how to fix it. The only thing that ever needs a key is the optional advisory LLM lane, which can never block a verdict. (#882)
|
|
130
183
|
|
|
131
184
|
## [0.8.1] - 2026-06-02
|
|
132
185
|
|
|
@@ -134,7 +187,7 @@ A reliability + correctness patch on top of 0.8.0. Highlights: **8 new Snowflake
|
|
|
134
187
|
|
|
135
188
|
### Added
|
|
136
189
|
|
|
137
|
-
- **Snowflake Cortex — 8 new selectable models.** Closes the drift between altimate-code's hardcoded Cortex model list and Snowflake's current regional-availability matrix: adds `claude-opus-4-7`, `openai-gpt-5.1`, `openai-gpt-5.2`, `llama4-scout`, `llama3.3-70b`, `snowflake-llama-3.1-405b`, `mixtral-8x7b`, and `gemini-3.1-pro` (Claude + OpenAI tool-capable; the rest chat-only, the conservative default until tool calling is verified on Cortex). When Cortex adds a model before the next release, you can now add it yourself under `provider["snowflake-cortex"].models` in `altimate-code.json` and it merges into the picker — no fork, no waiting. See [Snowflake Cortex provider docs](https://
|
|
190
|
+
- **Snowflake Cortex — 8 new selectable models.** Closes the drift between altimate-code's hardcoded Cortex model list and Snowflake's current regional-availability matrix: adds `claude-opus-4-7`, `openai-gpt-5.1`, `openai-gpt-5.2`, `llama4-scout`, `llama3.3-70b`, `snowflake-llama-3.1-405b`, `mixtral-8x7b`, and `gemini-3.1-pro` (Claude + OpenAI tool-capable; the rest chat-only, the conservative default until tool calling is verified on Cortex). When Cortex adds a model before the next release, you can now add it yourself under `provider["snowflake-cortex"].models` in `altimate-code.json` and it merges into the picker — no fork, no waiting. See [Snowflake Cortex provider docs](https://help.altimate.ai/code/configure/providers/). (#866)
|
|
138
191
|
|
|
139
192
|
### Fixed
|
|
140
193
|
|
|
@@ -145,7 +198,7 @@ Headlined by **dbt PR Review** — a Cloudflare-style, dbt/SQL-specialized code
|
|
|
145
198
|
|
|
146
199
|
### Added
|
|
147
200
|
|
|
148
|
-
- **dbt PR Review — signed, deterministic verdicts on dbt pull requests.** New `altimate review` CLI command and a composite GitHub Action (`github/review`). The deterministic engine (column-lineage / DAG blast radius, query equivalence on before/after model SQL, PII classification, A–F grade + anti-pattern lint) is the **only** layer that can block; an optional LLM reviewer is clamped to ≤ warning and excluded from the gate, so a `REQUEST_CHANGES` is always provable and replayable. Runs in CI with **zero warehouse access** (consumes `dbt compile` artifacts), and the verdict is HMAC-signable and tamper-evident. `comment` mode never blocks; `gate` mode fails the check on `REQUEST_CHANGES`. The advisory model/credentials are configured on the Action (hosted `altimate_api_key`, or bring-your-own `model` + `model_api_key`); omit them to run deterministic-only. See [dbt PR Review docs](https://
|
|
201
|
+
- **dbt PR Review — signed, deterministic verdicts on dbt pull requests.** New `altimate review` CLI command and a composite GitHub Action (`github/review`). The deterministic engine (column-lineage / DAG blast radius, query equivalence on before/after model SQL, PII classification, A–F grade + anti-pattern lint) is the **only** layer that can block; an optional LLM reviewer is clamped to ≤ warning and excluded from the gate, so a `REQUEST_CHANGES` is always provable and replayable. Runs in CI with **zero warehouse access** (consumes `dbt compile` artifacts), and the verdict is HMAC-signable and tamper-evident. `comment` mode never blocks; `gate` mode fails the check on `REQUEST_CHANGES`. The advisory model/credentials are configured on the Action (hosted `altimate_api_key`, or bring-your-own `model` + `model_api_key`); omit them to run deterministic-only. See [dbt PR Review docs](https://help.altimate.ai/code/usage/dbt-pr-review/) and the copy-paste workflow in `github/review/examples/`. Depends on `@altimateai/altimate-core` ≥ 0.4.0. (#856)
|
|
149
202
|
- **Native Trino driver.** First-class Trino support over HTTP(S) with catalog/schema introspection and None / Basic / Bearer-token auth. **Migration note:** the dbt `trino` adapter previously mapped to the PostgreSQL driver; it now uses the native driver. Existing profiles are auto-aliased (`database` → `catalog`, `token` → `access_token`) and otherwise compatible. `trino-client` is an optional dependency — install it (`npm install trino-client`) to use Trino. (#795)
|
|
150
203
|
- **Completion-gate validator framework.** A new opt-in harness-side check
|
|
151
204
|
that runs after the LLM declares `finish === "stop"`. Two built-in
|
|
@@ -159,7 +212,7 @@ Headlined by **dbt PR Review** — a Cloudflare-style, dbt/SQL-specialized code
|
|
|
159
212
|
caught" rates without blocking). Default is **off** with zero overhead.
|
|
160
213
|
Two new telemetry events (`validator_check`, `validator_retries_exhausted`).
|
|
161
214
|
Configuration via `ALTIMATE_VALIDATORS_{MAX_RETRIES,TIMEOUT_MS,CONCURRENCY,DEBUG}`.
|
|
162
|
-
See [Validators docs](https://
|
|
215
|
+
See [Validators docs](https://help.altimate.ai/code/data-engineering/validators/)
|
|
163
216
|
for the full reference, performance characteristics, and the phased
|
|
164
217
|
rollout plan. (#849)
|
|
165
218
|
|
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ into CI pipelines and orchestration DAGs. Precision data tooling for any LLM.
|
|
|
16
16
|
[](https://www.npmjs.com/package/altimate-code)
|
|
17
17
|
[](./LICENSE)
|
|
18
18
|
[](https://altimate.studio/join-agentic-data-engineering-slack)
|
|
19
|
-
[](https://help.altimate.ai/code)
|
|
20
20
|
[](https://github.com/apps/altimate-code-agent/installations/new)
|
|
21
21
|
[](https://github.com/AltimateAI/dbt-pr-review-demo/pulls)
|
|
22
22
|
|
|
@@ -185,7 +185,7 @@ Each mode has scoped permissions, tool access, and SQL write-access control.
|
|
|
185
185
|
| **Analyst** | Explore data, run SELECT queries, FinOps analysis, and generate insights | Read-only enforced (SELECT only, no file writes) |
|
|
186
186
|
| **Plan** | Outline an approach before acting | Minimal (read files only, no SQL or bash) |
|
|
187
187
|
|
|
188
|
-
> **New to altimate?** Start with **Analyst mode** — it's read-only and safe to run against production connections. Need specialized workflows (validation, migration, research)? Create [custom agent modes](https://
|
|
188
|
+
> **New to altimate?** Start with **Analyst mode** — it's read-only and safe to run against production connections. Need specialized workflows (validation, migration, research)? Create [custom agent modes](https://help.altimate.ai/code).
|
|
189
189
|
|
|
190
190
|
## Supported Warehouses
|
|
191
191
|
|
package/package.json
CHANGED
|
@@ -14,20 +14,20 @@
|
|
|
14
14
|
"scripts": {
|
|
15
15
|
"postinstall": "bun ./postinstall.mjs || node ./postinstall.mjs"
|
|
16
16
|
},
|
|
17
|
-
"version": "0.9.
|
|
17
|
+
"version": "0.9.2",
|
|
18
18
|
"license": "MIT",
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@altimateai/altimate-core": "0.5.1"
|
|
21
21
|
},
|
|
22
22
|
"optionalDependencies": {
|
|
23
|
-
"@altimateai/altimate-code-linux-
|
|
24
|
-
"@altimateai/altimate-code-
|
|
25
|
-
"@altimateai/altimate-code-linux-x64": "0.9.
|
|
26
|
-
"@altimateai/altimate-code-
|
|
27
|
-
"@altimateai/altimate-code-darwin-x64-baseline": "0.9.
|
|
28
|
-
"@altimateai/altimate-code-darwin-arm64": "0.9.
|
|
29
|
-
"@altimateai/altimate-code-
|
|
30
|
-
"@altimateai/altimate-code-
|
|
23
|
+
"@altimateai/altimate-code-linux-arm64": "0.9.2",
|
|
24
|
+
"@altimateai/altimate-code-linux-x64-baseline": "0.9.2",
|
|
25
|
+
"@altimateai/altimate-code-linux-x64": "0.9.2",
|
|
26
|
+
"@altimateai/altimate-code-windows-x64": "0.9.2",
|
|
27
|
+
"@altimateai/altimate-code-darwin-x64-baseline": "0.9.2",
|
|
28
|
+
"@altimateai/altimate-code-darwin-arm64": "0.9.2",
|
|
29
|
+
"@altimateai/altimate-code-darwin-x64": "0.9.2",
|
|
30
|
+
"@altimateai/altimate-code-windows-x64-baseline": "0.9.2"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"pg": ">=8",
|