@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 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.1",
10
+ "version": "v0.2.3",
11
11
  "license": "MIT",
12
12
  "optionalDependencies": {
13
- "@altimateai/altimate-code-linux-x64": "v0.2.1",
14
- "@altimateai/altimate-code-linux-arm64-musl": "v0.2.1",
15
- "@altimateai/altimate-code-darwin-x64": "v0.2.1",
16
- "@altimateai/altimate-code-windows-x64": "v0.2.1",
17
- "@altimateai/altimate-code-linux-x64-musl": "v0.2.1",
18
- "@altimateai/altimate-code-darwin-x64-baseline": "v0.2.1",
19
- "@altimateai/altimate-code-linux-x64-baseline-musl": "v0.2.1",
20
- "@altimateai/altimate-code-linux-x64-baseline": "v0.2.1",
21
- "@altimateai/altimate-code-linux-arm64": "v0.2.1",
22
- "@altimateai/altimate-code-darwin-arm64": "v0.2.1",
23
- "@altimateai/altimate-code-windows-x64-baseline": "v0.2.1"
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)