@altimateai/altimate-code 0.2.2 → 0.2.4

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