@altimateai/altimate-code 0.2.1 → 0.2.3
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 +170 -0
- package/package.json +12 -12
- package/postinstall.mjs +37 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [0.2.3] - 2026-03-04
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Postinstall welcome banner and changelog display after upgrade (#48)
|
|
13
|
+
|
|
14
|
+
### Fixed
|
|
15
|
+
|
|
16
|
+
- Security: validate well-known auth command type before execution, add confirmation prompt (#45)
|
|
17
|
+
- CI/CD: SHA-pin all GitHub Actions, per-job least-privilege permissions (#45)
|
|
18
|
+
- MCP: fix copy-paste log messages, log init errors, prefix floating promises (#45)
|
|
19
|
+
- Session compaction: clean up compactionAttempts on abort to prevent memory leak (#45)
|
|
20
|
+
- Telemetry: retry failed flush events once with buffer-size cap (#45, #46)
|
|
21
|
+
- Telemetry: flush events before process exit (#46)
|
|
22
|
+
- TUI: resolve worker startup crash from circular dependency (#47)
|
|
23
|
+
- CLI: define ALTIMATE_CLI build-time constants for correct version reporting (#41)
|
|
24
|
+
- Address 4 issues found in post-v0.2.2 commits (#49)
|
|
25
|
+
- Address remaining code review issues from PR #39 (#43)
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
- CI/CD: optimize pipeline with caching and parallel builds (#42)
|
|
30
|
+
|
|
31
|
+
### Docs
|
|
32
|
+
|
|
33
|
+
- Add security FAQ (#44)
|
|
34
|
+
|
|
35
|
+
## [0.2.2] - 2026-03-05
|
|
36
|
+
|
|
37
|
+
### Fixed
|
|
38
|
+
|
|
39
|
+
- Telemetry init: `Config.get()` failure outside Instance context no longer silently disables telemetry
|
|
40
|
+
- Telemetry init: called early in CLI middleware and worker thread so MCP/engine/auth events are captured
|
|
41
|
+
- Telemetry init: promise deduplication prevents concurrent init race conditions
|
|
42
|
+
- Telemetry: pre-init events are now buffered and flushed (previously silently dropped)
|
|
43
|
+
- Telemetry: user email is SHA-256 hashed before sending (privacy)
|
|
44
|
+
- Telemetry: error message truncation standardized to 500 chars across all event types
|
|
45
|
+
- Telemetry: `ALTIMATE_TELEMETRY_DISABLED` env var now actually checked in init
|
|
46
|
+
- Telemetry: MCP disconnect reports correct transport type instead of hardcoded `stdio`
|
|
47
|
+
- Telemetry: `agent_outcome` now correctly reports `"error"` outcome for failed sessions
|
|
48
|
+
|
|
49
|
+
### Changed
|
|
50
|
+
|
|
51
|
+
- Auth telemetry events use session context when available instead of hardcoded `"cli"`
|
|
52
|
+
|
|
53
|
+
## [0.2.1] - 2026-03-05
|
|
54
|
+
|
|
55
|
+
### Added
|
|
56
|
+
|
|
57
|
+
- Comprehensive telemetry instrumentation: 25 event types across auth, MCP servers, Python engine, provider errors, permissions, upgrades, context utilization, agent outcomes, workflow sequencing, and environment census
|
|
58
|
+
- Telemetry docs page with event table, privacy policy, opt-out instructions, and contributor guide
|
|
59
|
+
- AppInsights endpoint added to network firewall documentation
|
|
60
|
+
- `categorizeToolName()` helper for tool classification (sql, schema, dbt, finops, warehouse, lineage, file, mcp)
|
|
61
|
+
- `bucketCount()` helper for privacy-safe count bucketing
|
|
62
|
+
|
|
63
|
+
### Fixed
|
|
64
|
+
|
|
65
|
+
- Command loading made resilient to MCP/Skill initialization failures
|
|
66
|
+
|
|
67
|
+
### Changed
|
|
68
|
+
|
|
69
|
+
- CLI binary renamed from `altimate-code` to `altimate`
|
|
70
|
+
|
|
71
|
+
## [0.2.0] - 2026-03-04
|
|
72
|
+
|
|
73
|
+
### Added
|
|
74
|
+
|
|
75
|
+
- Context management: auto-compaction with overflow recovery, observation masking, and loop protection
|
|
76
|
+
- Context management: data-engineering-aware compaction template preserving warehouse, schema, dbt, and lineage context
|
|
77
|
+
- Context management: content-aware token estimation (code, JSON, SQL, text heuristics)
|
|
78
|
+
- Context management: observation masking replaces pruned tool outputs with fingerprinted summaries
|
|
79
|
+
- Context management: provider overflow detection for Azure OpenAI patterns
|
|
80
|
+
- CLI observability: telemetry module with session, generation, tool call, and error tracking
|
|
81
|
+
- `/discover` command for data stack setup with project_scan tool
|
|
82
|
+
- User documentation for context management configuration
|
|
83
|
+
|
|
84
|
+
### Fixed
|
|
85
|
+
|
|
86
|
+
- ContextOverflowError now triggers automatic compaction instead of a dead-end error
|
|
87
|
+
- `isOverflow()` correctly reserves headroom for models with separate input/output limits
|
|
88
|
+
- `NamedError.isInstance()` no longer crashes on null input
|
|
89
|
+
- Text part duration tracking now preserves original start timestamp
|
|
90
|
+
- Compaction loop protection: max 3 consecutive attempts per turn, counter resets between turns
|
|
91
|
+
- Negative usable context guard for models where headroom exceeds base capacity
|
|
92
|
+
|
|
93
|
+
### Changed
|
|
94
|
+
|
|
95
|
+
- Removed cost estimation and complexity scoring bindings
|
|
96
|
+
- Docs: redesigned homepage with hero, feature cards, and pill layouts
|
|
97
|
+
- Docs: reorganized sidebar navigation for better discoverability
|
|
98
|
+
|
|
99
|
+
## [0.1.10] - 2026-03-03
|
|
100
|
+
|
|
101
|
+
### Fixed
|
|
102
|
+
|
|
103
|
+
- Build: resolve @opentui/core parser.worker.js via import.meta.resolve for monorepo hoisting
|
|
104
|
+
- Build: output binary as `altimate-code` instead of `opencode`
|
|
105
|
+
- Publish: update Docker/AUR/Homebrew references from anomalyco/opencode to AltimateAI/altimate-code
|
|
106
|
+
- Publish: make Docker/AUR/Homebrew steps non-fatal
|
|
107
|
+
- Bin wrapper: look for `@altimateai/altimate-code-*` scoped platform packages
|
|
108
|
+
- Postinstall: resolve `@altimateai` scoped platform packages
|
|
109
|
+
- Dockerfile: update binary paths and names
|
|
110
|
+
|
|
111
|
+
## [0.1.9] - 2026-03-02
|
|
112
|
+
|
|
113
|
+
### Fixed
|
|
114
|
+
|
|
115
|
+
- Build: fix solid-plugin import to use bare specifier for monorepo hoisting
|
|
116
|
+
- CI: install warehouse extras for Python tests (duckdb, boto3, etc.)
|
|
117
|
+
- CI: restrict pytest collection to tests/ directory
|
|
118
|
+
- CI: fix all ruff lint errors in Python engine
|
|
119
|
+
- CI: fix remaining TypeScript test failures (agent rename, config URLs, Pydantic model)
|
|
120
|
+
- Update theme schema URLs and documentation references to altimate-code.dev
|
|
121
|
+
|
|
122
|
+
## [0.1.8] - 2026-03-02
|
|
123
|
+
|
|
124
|
+
### Changed
|
|
125
|
+
|
|
126
|
+
- Rename npm scope from `@altimate` to `@altimateai` for all packages
|
|
127
|
+
- Wrapper package is now `@altimateai/altimate-code` (no `-ai` suffix)
|
|
128
|
+
|
|
129
|
+
### Fixed
|
|
130
|
+
|
|
131
|
+
- CI: test fixture writes config to correct filename (`altimate-code.json`)
|
|
132
|
+
- CI: add `dev` optional dependency group to Python engine for pytest/ruff
|
|
133
|
+
|
|
134
|
+
## [0.1.7] - 2026-03-02
|
|
135
|
+
|
|
136
|
+
### Changed
|
|
137
|
+
|
|
138
|
+
- Improve TUI logo readability: redesign M, E, T, I letter shapes
|
|
139
|
+
- Add two-tone logo color: ALTIMATE in peach, CODE in purple
|
|
140
|
+
|
|
141
|
+
### Fixed
|
|
142
|
+
|
|
143
|
+
- Release: npm publish glob now finds scoped package directories
|
|
144
|
+
- Release: PyPI publish skips existing versions instead of failing
|
|
145
|
+
|
|
146
|
+
## [0.1.5] - 2026-03-02
|
|
147
|
+
|
|
148
|
+
### Added
|
|
149
|
+
|
|
150
|
+
- Anthropic OAuth plugin ported in-tree
|
|
151
|
+
- Docs site switched from Jekyll to Material for MkDocs
|
|
152
|
+
|
|
153
|
+
### Fixed
|
|
154
|
+
|
|
155
|
+
- Build script: restore `.trim()` on models API JSON to prevent syntax error in generated `models-snapshot.ts`
|
|
156
|
+
- Build script: fix archive path for scoped package names in release tarball/zip creation
|
|
157
|
+
|
|
158
|
+
## [0.1.0] - 2025-06-01
|
|
159
|
+
|
|
160
|
+
### Added
|
|
161
|
+
|
|
162
|
+
- Initial open-source release
|
|
163
|
+
- SQL analysis and formatting via Python engine
|
|
164
|
+
- Column-level lineage tracking
|
|
165
|
+
- dbt integration (profiles, lineage, `+` operator)
|
|
166
|
+
- Warehouse connectivity (Snowflake, BigQuery, Databricks, Postgres, DuckDB, MySQL)
|
|
167
|
+
- AI-powered SQL code review
|
|
168
|
+
- TUI interface with Solid.js
|
|
169
|
+
- MCP (Model Context Protocol) server support
|
|
170
|
+
- Auto-bootstrapping Python engine via uv
|
package/package.json
CHANGED
|
@@ -7,19 +7,19 @@
|
|
|
7
7
|
"scripts": {
|
|
8
8
|
"postinstall": "bun ./postinstall.mjs || node ./postinstall.mjs"
|
|
9
9
|
},
|
|
10
|
-
"version": "v0.2.
|
|
10
|
+
"version": "v0.2.3",
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"optionalDependencies": {
|
|
13
|
-
"@altimateai/altimate-code-linux-x64": "v0.2.
|
|
14
|
-
"@altimateai/altimate-code-linux-arm64-musl": "v0.2.
|
|
15
|
-
"@altimateai/altimate-code-darwin-x64": "v0.2.
|
|
16
|
-
"@altimateai/altimate-code-windows-x64": "v0.2.
|
|
17
|
-
"@altimateai/altimate-code-linux-x64-musl": "v0.2.
|
|
18
|
-
"@altimateai/altimate-code-darwin-x64-baseline": "v0.2.
|
|
19
|
-
"@altimateai/altimate-code-linux-x64-baseline-musl": "v0.2.
|
|
20
|
-
"@altimateai/altimate-code-linux-x64-baseline": "v0.2.
|
|
21
|
-
"@altimateai/altimate-code-linux-arm64": "v0.2.
|
|
22
|
-
"@altimateai/altimate-code-darwin-arm64": "v0.2.
|
|
23
|
-
"@altimateai/altimate-code-windows-x64-baseline": "v0.2.
|
|
13
|
+
"@altimateai/altimate-code-linux-x64": "v0.2.3",
|
|
14
|
+
"@altimateai/altimate-code-linux-arm64-musl": "v0.2.3",
|
|
15
|
+
"@altimateai/altimate-code-darwin-x64": "v0.2.3",
|
|
16
|
+
"@altimateai/altimate-code-windows-x64": "v0.2.3",
|
|
17
|
+
"@altimateai/altimate-code-linux-x64-musl": "v0.2.3",
|
|
18
|
+
"@altimateai/altimate-code-darwin-x64-baseline": "v0.2.3",
|
|
19
|
+
"@altimateai/altimate-code-linux-x64-baseline-musl": "v0.2.3",
|
|
20
|
+
"@altimateai/altimate-code-linux-x64-baseline": "v0.2.3",
|
|
21
|
+
"@altimateai/altimate-code-linux-arm64": "v0.2.3",
|
|
22
|
+
"@altimateai/altimate-code-darwin-arm64": "v0.2.3",
|
|
23
|
+
"@altimateai/altimate-code-windows-x64-baseline": "v0.2.3"
|
|
24
24
|
}
|
|
25
25
|
}
|
package/postinstall.mjs
CHANGED
|
@@ -85,12 +85,48 @@ function prepareBinDirectory(binaryName) {
|
|
|
85
85
|
return { binDir, targetPath }
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
+
function printWelcome(version) {
|
|
89
|
+
const v = `altimate-code v${version} installed`
|
|
90
|
+
const lines = [
|
|
91
|
+
"",
|
|
92
|
+
" Get started:",
|
|
93
|
+
" altimate Open the TUI",
|
|
94
|
+
' altimate run "hello" Run a quick task',
|
|
95
|
+
" altimate --help See all commands",
|
|
96
|
+
"",
|
|
97
|
+
" Docs: https://altimate-code.dev",
|
|
98
|
+
"",
|
|
99
|
+
]
|
|
100
|
+
// Box width: pad all lines to the same length
|
|
101
|
+
const contentWidth = Math.max(v.length, ...lines.map((l) => l.length)) + 2
|
|
102
|
+
const pad = (s) => s + " ".repeat(contentWidth - s.length)
|
|
103
|
+
const top = ` ╭${"─".repeat(contentWidth + 2)}╮`
|
|
104
|
+
const bot = ` ╰${"─".repeat(contentWidth + 2)}╯`
|
|
105
|
+
const empty = ` │ ${" ".repeat(contentWidth)} │`
|
|
106
|
+
const row = (s) => ` │ ${pad(s)} │`
|
|
107
|
+
|
|
108
|
+
console.log(top)
|
|
109
|
+
console.log(empty)
|
|
110
|
+
console.log(row(` ${v}`))
|
|
111
|
+
for (const line of lines) console.log(row(line))
|
|
112
|
+
console.log(bot)
|
|
113
|
+
}
|
|
114
|
+
|
|
88
115
|
async function main() {
|
|
116
|
+
let version
|
|
117
|
+
try {
|
|
118
|
+
const pkgPath = path.join(__dirname, "package.json")
|
|
119
|
+
if (fs.existsSync(pkgPath)) {
|
|
120
|
+
version = JSON.parse(fs.readFileSync(pkgPath, "utf-8")).version
|
|
121
|
+
}
|
|
122
|
+
} catch {}
|
|
123
|
+
|
|
89
124
|
try {
|
|
90
125
|
if (os.platform() === "win32") {
|
|
91
126
|
// On Windows, the .exe is already included in the package and bin field points to it
|
|
92
127
|
// No postinstall setup needed
|
|
93
128
|
console.log("Windows detected: binary setup not needed (using packaged .exe)")
|
|
129
|
+
if (version) printWelcome(version)
|
|
94
130
|
return
|
|
95
131
|
}
|
|
96
132
|
|
|
@@ -105,6 +141,7 @@ async function main() {
|
|
|
105
141
|
fs.copyFileSync(binaryPath, target)
|
|
106
142
|
}
|
|
107
143
|
fs.chmodSync(target, 0o755)
|
|
144
|
+
if (version) printWelcome(version)
|
|
108
145
|
} catch (error) {
|
|
109
146
|
console.error("Failed to setup altimate-code binary:", error.message)
|
|
110
147
|
process.exit(1)
|