@bastani/atomic 0.9.3-alpha.3 → 0.9.3-alpha.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 CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.9.3-alpha.4] - 2026-06-28
6
+
7
+ ### Changed
8
+
9
+ - Updated workflow, quickstart, Atomic guide, and workflow-playbook documentation to present workflows as the default path for non-trivial or structured requests with verifiable objectives, explicitly including implementation, build, debugging, bug-fix, migration, new-feature, scoped multi-file, and validation-heavy docs/code prompts alongside loop-shaped prompts such as `do X until Y`, `repeat until`, `iterate until`, and review/fix/test-until-passing.
10
+
5
11
  ## [0.9.3-alpha.3] - 2026-06-27
6
12
 
7
13
  ### Changed
@@ -2,6 +2,19 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.9.3-alpha.4] - 2026-06-28
6
+
7
+ ### Changed
8
+
9
+ - Resolved Cursor model context windows and max output tokens from Atomic's bundled `@earendil-works/pi-ai` model catalog instead of flat placeholder estimates: Atomic matches each Cursor model ID's family/version against pi-ai metadata, preserves any positive limits Cursor sends, ignores non-positive bogus limits, and keeps a conservative 200k context / 64k output estimate only for Cursor-only models (such as `composer-*` and `default`/Auto) with no pi-ai match. Limit resolution matches on IDs only — not generic display names — so it never adds, drops, or mislabels models in the list.
10
+ - Changed the Cursor OAuth login option label to **Cursor (Experimental)** so the `/login` picker clearly marks the private-protocol provider as experimental.
11
+
12
+ ### Fixed
13
+
14
+ - Fixed Cursor models whose discovery only exposes effort-variant ids (for example `gpt-5.5-low/medium/high`, `claude-opus-4-8-*`, `gpt-5.4-*`, `glm-5.2-*`) failing every request with `Cursor stream ended with not_found` when no thinking level was selected. These models are registered under a synthesized base id (`cursor/gpt-5.5`) that Cursor does not accept as a run target; Atomic now records a concrete default variant and sends it for no-thinking requests, so all Cursor models stream on their default setting.
15
+ - Fixed Cursor models with explicit `1M` ids or labels losing their 1,000,000-token floor when the closest pi-ai reference match advertises a smaller base context window, including `-fast`/thinking sibling groups whose own label omits `1M`, and made the pi-ai catalog a Cursor runtime dependency instead of an optional peer so provider startup cannot fail before graceful limit fallback runs.
16
+ - Fixed Cursor effort-only models advertising `xhigh` when Cursor only returned lower effort variants; Atomic now exposes `xhigh` only for Cursor models whose live/estimated catalog includes a true `xhigh` or `max` variant, while older saved `xhigh` selections safely fall back to the nearest sendable Cursor variant instead of failing.
17
+
5
18
  ## [0.9.3-alpha.3] - 2026-06-27
6
19
 
7
20
  ### Changed
@@ -4,7 +4,7 @@ First-party Atomic provider for Cursor subscription models.
4
4
 
5
5
  ## Status
6
6
 
7
- This package registers `cursor` via Atomic's bundled extension provider API. `/login` shows **Cursor** and stores credentials through Atomic OAuth storage (`~/.atomic/agent/auth.json`). The login URL and PKCE polling behavior intentionally match the MIT-licensed [`ndraiman/pi-cursor-provider`](https://github.com/ndraiman/pi-cursor-provider) reference: `callbacks.onAuth({ url: loginUrl })`, no extra login warning/instruction copy, and polling `api2.cursor.sh/auth/poll` until Cursor returns tokens.
7
+ This package registers `cursor` via Atomic's bundled extension provider API. `/login` shows **Cursor (Experimental)** and stores credentials through Atomic OAuth storage (`~/.atomic/agent/auth.json`). The login URL and PKCE polling behavior intentionally match the MIT-licensed [`ndraiman/pi-cursor-provider`](https://github.com/ndraiman/pi-cursor-provider) reference: `callbacks.onAuth({ url: loginUrl })`, no extra login warning/instruction copy, and polling `api2.cursor.sh/auth/poll` until Cursor returns tokens.
8
8
 
9
9
  The runtime protocol is also aligned to `ndraiman/pi-cursor-provider` at commit `82fc4e73f9ae820d87b34ac36713b18989910a36`: Atomic vendors the reference `cursor-models-raw.json` and generated `proto/agent_pb.ts`, and builds Cursor request/control messages through `@bufbuild/protobuf` descriptors instead of hand-maintained protobuf bytes. HTTP/2 itself is handled by the generated `@bastani/atomic-natives` Rust/N-API package rather than a separate local proxy.
10
10
 
@@ -17,6 +17,7 @@ The unavoidable Atomic-specific integration difference is the provider surface:
17
17
  - Cursor's private API may change without notice.
18
18
  - HTTP/2 transport requires the bundled `@bastani/atomic-natives` Rust/N-API native client for the current platform.
19
19
  - Credentials are OAuth-only. Do not pass Cursor tokens via command-line args, environment variables, logs, or local proxy processes.
20
+ - Cursor's private `GetUsableModels` response omits context-window and output-token limits. Atomic preserves positive limits when present and otherwise resolves them from Atomic's bundled `@earendil-works/pi-ai` model catalog by matching the Cursor model ID's family/version, falling back to a conservative 200k context / 64k output estimate for Cursor-only models without a pi-ai match. Cursor IDs or labels that explicitly say `1M` keep a 1,000,000-token context floor even when the nearest reference match advertises a smaller base window. Limit resolution never adds or removes models from the list.
20
21
 
21
22
  ## Attribution
22
23
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/cursor",
3
- "version": "0.9.3-alpha.3",
3
+ "version": "0.9.3-alpha.4",
4
4
  "private": true,
5
5
  "description": "Experimental first-party Atomic extension for Cursor OAuth, model discovery, and streaming provider registration.",
6
6
  "contributors": [
@@ -40,7 +40,8 @@
40
40
  }
41
41
  },
42
42
  "dependencies": {
43
- "@bastani/atomic-natives": "0.9.3-alpha.3",
44
- "@bufbuild/protobuf": "^2.0.0"
43
+ "@bastani/atomic-natives": "0.9.3-alpha.4",
44
+ "@bufbuild/protobuf": "^2.0.0",
45
+ "@earendil-works/pi-ai": "^0.79.10"
45
46
  }
46
47
  }
@@ -1,6 +1,6 @@
1
1
  export const CURSOR_PROVIDER_ID = "cursor";
2
2
  export const CURSOR_PROVIDER_NAME = "Cursor";
3
- export const CURSOR_LOGIN_NAME = "Cursor";
3
+ export const CURSOR_LOGIN_NAME = "Cursor (Experimental)";
4
4
  export const CURSOR_API = "cursor-agent";
5
5
  export const CURSOR_API_BASE_URL = "https://api2.cursor.sh";
6
6
  export const CURSOR_WEB_BASE_URL = "https://cursor.com";