pi-cursor-sdk 0.1.48 → 0.1.49

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,17 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.1.49 - 2026-06-23
6
+
7
+ ### Changed
8
+
9
+ - Update the local pi validation baseline to `@earendil-works/pi-ai`, `@earendil-works/pi-coding-agent`, and `@earendil-works/pi-tui` `0.80.1` after reviewing the Pi 0.80.0 and 0.80.1 changelogs plus current package/provider docs.
10
+ - Move source and test imports that typecheck against old root `@earendil-works/pi-ai` globals to `@earendil-works/pi-ai/compat`, matching the Pi 0.80 migration guidance.
11
+
12
+ ### Validation
13
+
14
+ - Pending in this release train.
15
+
5
16
  ## 0.1.48 - 2026-06-22
6
17
 
7
18
  ### Fixed
package/README.md CHANGED
@@ -51,7 +51,7 @@ If pi started without a key, run `/cursor-refresh-models` after `/login` to refr
51
51
  ## Requirements
52
52
 
53
53
  - Node.js 22.19+
54
- - pi 0.79.10 or newer recommended; pi core peer metadata is intentionally unpinned so newer pi releases are not blocked
54
+ - pi 0.80.1 or newer recommended; pi core peer metadata is intentionally unpinned so newer pi releases are not blocked
55
55
  - a Cursor SDK API key saved through `/login`, available as `CURSOR_API_KEY`, or passed with pi's `--api-key`
56
56
 
57
57
  No global `@cursor/sdk` install is required. This package depends on exact `@cursor/sdk@1.0.19`, so normal package installation brings in the SDK version this extension was built and tested against. It also declares and bundles `@connectrpc/connect-node@1.7.0` with `undici@7.28.0` because Cursor SDK 1.0.19 still dynamically loads the Node ConnectRPC transport during local-agent runs, and npm dependency consumers do not inherit this package's root-only `overrides`. Cursor SDK 1.0.19 removes the older `sqlite3 -> node-gyp@8` dependency chain, so deprecated install warnings for `inflight`, `rimraf`, `glob@7`, `npmlog`, `gauge`, `are-we-there-yet`, and `tar@6` from that chain are no longer expected. This package follows pi package guidance by declaring pi core package peers with `"*"` ranges, so users who update pi before this extension is republished are not blocked by peer metadata. The current recommended and validated pi baseline is 0.79.10 plus Cursor SDK 1.0.19; older pi compatibility paths are best-effort and older Cursor SDK compatibility paths are not maintained.
package/package.json CHANGED
@@ -1,163 +1,163 @@
1
1
  {
2
- "name": "pi-cursor-sdk",
3
- "version": "0.1.48",
4
- "description": "pi provider extension backed by @cursor/sdk local agents",
5
- "author": "Mitch Fultz (https://github.com/fitchmultz)",
6
- "license": "MIT",
7
- "keywords": [
8
- "pi-package",
9
- "pi",
10
- "pi-extension",
11
- "cursor",
12
- "cursor-sdk",
13
- "ai",
14
- "extension"
15
- ],
16
- "repository": {
17
- "type": "git",
18
- "url": "git+https://github.com/fitchmultz/pi-cursor-sdk.git"
19
- },
20
- "bugs": {
21
- "url": "https://github.com/fitchmultz/pi-cursor-sdk/issues"
22
- },
23
- "homepage": "https://github.com/fitchmultz/pi-cursor-sdk#readme",
24
- "files": [
25
- "shared",
26
- "src",
27
- "scripts/refresh-cursor-model-snapshots.mjs",
28
- "scripts/steering-rpc-smoke.mjs",
29
- "scripts/tmux-live-smoke.sh",
30
- "scripts/visual-tui-smoke.mjs",
31
- "scripts/visual-tui-smoke-self-test.mjs",
32
- "scripts/isolated-cursor-smoke.sh",
33
- "scripts/fixtures/plan-strip-shim",
34
- "scripts/validate-smoke-jsonl.mjs",
35
- "scripts/probe-mcp-coldstart.mjs",
36
- "scripts/debug-sdk-events.mjs",
37
- "scripts/debug-sdk-events.d.mts",
38
- "scripts/debug-provider-events.mjs",
39
- "scripts/debug-provider-events.d.mts",
40
- "platform-smoke.config.mjs",
41
- "scripts/platform-smoke.mjs",
42
- "scripts/platform-smoke/assertions.mjs",
43
- "scripts/platform-smoke/artifacts.mjs",
44
- "scripts/platform-smoke/card-detect.mjs",
45
- "scripts/platform-smoke/crabbox-runner.mjs",
46
- "scripts/platform-smoke/doctor.mjs",
47
- "scripts/platform-smoke/live-suite-runner.mjs",
48
- "scripts/platform-smoke/jsonl-text.mjs",
49
- "scripts/platform-smoke/platform-build-windows.ps1",
50
- "scripts/platform-smoke/pty-capture.mjs",
51
- "scripts/platform-smoke/render-ansi.mjs",
52
- "scripts/platform-smoke/scenarios.mjs",
53
- "scripts/platform-smoke/targets.mjs",
54
- "scripts/platform-smoke/visual-evidence.mjs",
55
- "scripts/lib/cursor-cli-args.mjs",
56
- "scripts/lib/cursor-cli-args.d.mts",
57
- "scripts/lib/cursor-child-process.mjs",
58
- "scripts/lib/cursor-child-process.d.mts",
59
- "scripts/lib/cursor-script-fail.mjs",
60
- "scripts/lib/cursor-script-fail.d.mts",
61
- "scripts/lib/cursor-smoke-env.mjs",
62
- "scripts/lib/cursor-smoke-env.d.mts",
63
- "scripts/lib/cursor-smoke-shell.sh",
64
- "scripts/lib/cursor-visual-manifest.mjs",
65
- "scripts/lib/cursor-visual-manifest.d.mts",
66
- "scripts/lib/cursor-visual-render.mjs",
67
- "scripts/lib/cursor-visual-render.d.mts",
68
- "scripts/lib/cursor-sdk-output-filter.mjs",
69
- "scripts/lib/cursor-sdk-output-filter.d.mts",
70
- "README.md",
71
- "docs/cursor-model-ux-spec.md",
72
- "docs/cursor-tool-surfaces.md",
73
- "docs/cursor-live-smoke-checklist.md",
74
- "docs/cursor-testing-lessons.md",
75
- "docs/cursor-dogfood-checklist.md",
76
- "docs/cursor-native-tool-replay.md",
77
- "docs/cursor-native-tool-visual-audit.md",
78
- "docs/platform-smoke.md",
79
- "LICENSE",
80
- "CHANGELOG.md"
81
- ],
82
- "type": "module",
83
- "engines": {
84
- "node": ">=22.19.0"
85
- },
86
- "scripts": {
87
- "typecheck": "npm run typecheck:src && npm run typecheck:tests && npm run typecheck:replay-compile",
88
- "typecheck:src": "tsc --noEmit",
89
- "typecheck:tests": "tsc -p tsconfig.test.json --noEmit",
90
- "typecheck:replay-compile": "tsc --noEmit -p test/tsconfig.json",
91
- "verify": "npm run check:platform-smoke && npm run typecheck && npm test",
92
- "test": "vitest run",
93
- "test:watch": "vitest",
94
- "refresh:cursor-snapshots": "node scripts/refresh-cursor-model-snapshots.mjs",
95
- "smoke:live": "scripts/tmux-live-smoke.sh",
96
- "smoke:visual": "node scripts/visual-tui-smoke.mjs",
97
- "smoke:isolated": "scripts/isolated-cursor-smoke.sh",
98
- "smoke:steering": "node scripts/steering-rpc-smoke.mjs",
99
- "smoke:jsonl": "node scripts/validate-smoke-jsonl.mjs",
100
- "debug:sdk-events": "node scripts/debug-sdk-events.mjs",
101
- "debug:provider-events": "node scripts/debug-provider-events.mjs",
102
- "debug:mcp-coldstart": "node scripts/probe-mcp-coldstart.mjs",
103
- "check:platform-smoke": "node --check platform-smoke.config.mjs && node --check scripts/platform-smoke.mjs && node --check scripts/platform-smoke/assertions.mjs && node --check scripts/platform-smoke/artifacts.mjs && node --check scripts/platform-smoke/card-detect.mjs && node --check scripts/platform-smoke/crabbox-runner.mjs && node --check scripts/platform-smoke/doctor.mjs && node --check scripts/platform-smoke/jsonl-text.mjs && node --check scripts/platform-smoke/live-suite-runner.mjs && node --check scripts/platform-smoke/pty-capture.mjs && node --check scripts/platform-smoke/render-ansi.mjs && node --check scripts/platform-smoke/scenarios.mjs && node --check scripts/platform-smoke/targets.mjs && node --check scripts/platform-smoke/visual-evidence.mjs && vitest run test/smoke-tooling.test.ts",
104
- "smoke:platform": "node scripts/platform-smoke.mjs",
105
- "smoke:platform:doctor": "node scripts/platform-smoke.mjs doctor",
106
- "smoke:platform:macos": "node scripts/platform-smoke.mjs run --target macos",
107
- "smoke:platform:ubuntu": "node scripts/platform-smoke.mjs run --target ubuntu",
108
- "smoke:platform:windows-native": "node scripts/platform-smoke.mjs run --target windows-native",
109
- "smoke:platform:all": "npm run smoke:platform:doctor && node scripts/platform-smoke.mjs run --target macos,ubuntu,windows-native"
110
- },
111
- "dependencies": {
112
- "@connectrpc/connect-node": "1.7.0",
113
- "@cursor/sdk": "1.0.19",
114
- "@modelcontextprotocol/sdk": "^1.29.0",
115
- "undici": "7.28.0"
116
- },
117
- "bundledDependencies": [
118
- "@connectrpc/connect-node",
119
- "undici"
120
- ],
121
- "peerDependencies": {
122
- "@earendil-works/pi-ai": "*",
123
- "@earendil-works/pi-coding-agent": "*",
124
- "@earendil-works/pi-tui": "*",
125
- "typebox": "*"
126
- },
127
- "devDependencies": {
128
- "@earendil-works/pi-ai": "0.79.10",
129
- "@earendil-works/pi-coding-agent": "0.79.10",
130
- "@earendil-works/pi-tui": "0.79.10",
131
- "@xterm/xterm": "^6.0.0",
132
- "node-pty": "^1.1.0",
133
- "playwright": "^1.60.0",
134
- "typebox": "^1.1.38",
135
- "typescript": "^6.0.3",
136
- "vitest": "^4.1.6"
137
- },
138
- "pi": {
139
- "extensions": [
140
- "./src/index.ts"
141
- ]
142
- },
143
- "overrides": {
144
- "undici": "7.28.0"
145
- },
146
- "allowScripts": {
147
- "node-pty@1.1.0": true
148
- },
149
- "peerDependenciesMeta": {
150
- "@earendil-works/pi-ai": {
151
- "optional": true
152
- },
153
- "@earendil-works/pi-coding-agent": {
154
- "optional": true
155
- },
156
- "@earendil-works/pi-tui": {
157
- "optional": true
158
- },
159
- "typebox": {
160
- "optional": true
161
- }
162
- }
2
+ "name": "pi-cursor-sdk",
3
+ "version": "0.1.49",
4
+ "description": "pi provider extension backed by @cursor/sdk local agents",
5
+ "author": "Mitch Fultz (https://github.com/fitchmultz)",
6
+ "license": "MIT",
7
+ "keywords": [
8
+ "pi-package",
9
+ "pi",
10
+ "pi-extension",
11
+ "cursor",
12
+ "cursor-sdk",
13
+ "ai",
14
+ "extension"
15
+ ],
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/fitchmultz/pi-cursor-sdk.git"
19
+ },
20
+ "bugs": {
21
+ "url": "https://github.com/fitchmultz/pi-cursor-sdk/issues"
22
+ },
23
+ "homepage": "https://github.com/fitchmultz/pi-cursor-sdk#readme",
24
+ "files": [
25
+ "shared",
26
+ "src",
27
+ "scripts/refresh-cursor-model-snapshots.mjs",
28
+ "scripts/steering-rpc-smoke.mjs",
29
+ "scripts/tmux-live-smoke.sh",
30
+ "scripts/visual-tui-smoke.mjs",
31
+ "scripts/visual-tui-smoke-self-test.mjs",
32
+ "scripts/isolated-cursor-smoke.sh",
33
+ "scripts/fixtures/plan-strip-shim",
34
+ "scripts/validate-smoke-jsonl.mjs",
35
+ "scripts/probe-mcp-coldstart.mjs",
36
+ "scripts/debug-sdk-events.mjs",
37
+ "scripts/debug-sdk-events.d.mts",
38
+ "scripts/debug-provider-events.mjs",
39
+ "scripts/debug-provider-events.d.mts",
40
+ "platform-smoke.config.mjs",
41
+ "scripts/platform-smoke.mjs",
42
+ "scripts/platform-smoke/assertions.mjs",
43
+ "scripts/platform-smoke/artifacts.mjs",
44
+ "scripts/platform-smoke/card-detect.mjs",
45
+ "scripts/platform-smoke/crabbox-runner.mjs",
46
+ "scripts/platform-smoke/doctor.mjs",
47
+ "scripts/platform-smoke/live-suite-runner.mjs",
48
+ "scripts/platform-smoke/jsonl-text.mjs",
49
+ "scripts/platform-smoke/platform-build-windows.ps1",
50
+ "scripts/platform-smoke/pty-capture.mjs",
51
+ "scripts/platform-smoke/render-ansi.mjs",
52
+ "scripts/platform-smoke/scenarios.mjs",
53
+ "scripts/platform-smoke/targets.mjs",
54
+ "scripts/platform-smoke/visual-evidence.mjs",
55
+ "scripts/lib/cursor-cli-args.mjs",
56
+ "scripts/lib/cursor-cli-args.d.mts",
57
+ "scripts/lib/cursor-child-process.mjs",
58
+ "scripts/lib/cursor-child-process.d.mts",
59
+ "scripts/lib/cursor-script-fail.mjs",
60
+ "scripts/lib/cursor-script-fail.d.mts",
61
+ "scripts/lib/cursor-smoke-env.mjs",
62
+ "scripts/lib/cursor-smoke-env.d.mts",
63
+ "scripts/lib/cursor-smoke-shell.sh",
64
+ "scripts/lib/cursor-visual-manifest.mjs",
65
+ "scripts/lib/cursor-visual-manifest.d.mts",
66
+ "scripts/lib/cursor-visual-render.mjs",
67
+ "scripts/lib/cursor-visual-render.d.mts",
68
+ "scripts/lib/cursor-sdk-output-filter.mjs",
69
+ "scripts/lib/cursor-sdk-output-filter.d.mts",
70
+ "README.md",
71
+ "docs/cursor-model-ux-spec.md",
72
+ "docs/cursor-tool-surfaces.md",
73
+ "docs/cursor-live-smoke-checklist.md",
74
+ "docs/cursor-testing-lessons.md",
75
+ "docs/cursor-dogfood-checklist.md",
76
+ "docs/cursor-native-tool-replay.md",
77
+ "docs/cursor-native-tool-visual-audit.md",
78
+ "docs/platform-smoke.md",
79
+ "LICENSE",
80
+ "CHANGELOG.md"
81
+ ],
82
+ "type": "module",
83
+ "engines": {
84
+ "node": ">=22.19.0"
85
+ },
86
+ "scripts": {
87
+ "typecheck": "npm run typecheck:src && npm run typecheck:tests && npm run typecheck:replay-compile",
88
+ "typecheck:src": "tsc --noEmit",
89
+ "typecheck:tests": "tsc -p tsconfig.test.json --noEmit",
90
+ "typecheck:replay-compile": "tsc --noEmit -p test/tsconfig.json",
91
+ "verify": "npm run check:platform-smoke && npm run typecheck && npm test",
92
+ "test": "vitest run",
93
+ "test:watch": "vitest",
94
+ "refresh:cursor-snapshots": "node scripts/refresh-cursor-model-snapshots.mjs",
95
+ "smoke:live": "scripts/tmux-live-smoke.sh",
96
+ "smoke:visual": "node scripts/visual-tui-smoke.mjs",
97
+ "smoke:isolated": "scripts/isolated-cursor-smoke.sh",
98
+ "smoke:steering": "node scripts/steering-rpc-smoke.mjs",
99
+ "smoke:jsonl": "node scripts/validate-smoke-jsonl.mjs",
100
+ "debug:sdk-events": "node scripts/debug-sdk-events.mjs",
101
+ "debug:provider-events": "node scripts/debug-provider-events.mjs",
102
+ "debug:mcp-coldstart": "node scripts/probe-mcp-coldstart.mjs",
103
+ "check:platform-smoke": "node --check platform-smoke.config.mjs && node --check scripts/platform-smoke.mjs && node --check scripts/platform-smoke/assertions.mjs && node --check scripts/platform-smoke/artifacts.mjs && node --check scripts/platform-smoke/card-detect.mjs && node --check scripts/platform-smoke/crabbox-runner.mjs && node --check scripts/platform-smoke/doctor.mjs && node --check scripts/platform-smoke/jsonl-text.mjs && node --check scripts/platform-smoke/live-suite-runner.mjs && node --check scripts/platform-smoke/pty-capture.mjs && node --check scripts/platform-smoke/render-ansi.mjs && node --check scripts/platform-smoke/scenarios.mjs && node --check scripts/platform-smoke/targets.mjs && node --check scripts/platform-smoke/visual-evidence.mjs && vitest run test/smoke-tooling.test.ts",
104
+ "smoke:platform": "node scripts/platform-smoke.mjs",
105
+ "smoke:platform:doctor": "node scripts/platform-smoke.mjs doctor",
106
+ "smoke:platform:macos": "node scripts/platform-smoke.mjs run --target macos",
107
+ "smoke:platform:ubuntu": "node scripts/platform-smoke.mjs run --target ubuntu",
108
+ "smoke:platform:windows-native": "node scripts/platform-smoke.mjs run --target windows-native",
109
+ "smoke:platform:all": "npm run smoke:platform:doctor && node scripts/platform-smoke.mjs run --target macos,ubuntu,windows-native"
110
+ },
111
+ "dependencies": {
112
+ "@connectrpc/connect-node": "1.7.0",
113
+ "@cursor/sdk": "1.0.19",
114
+ "@modelcontextprotocol/sdk": "^1.29.0",
115
+ "undici": "7.28.0"
116
+ },
117
+ "bundledDependencies": [
118
+ "@connectrpc/connect-node",
119
+ "undici"
120
+ ],
121
+ "peerDependencies": {
122
+ "@earendil-works/pi-ai": "*",
123
+ "@earendil-works/pi-coding-agent": "*",
124
+ "@earendil-works/pi-tui": "*",
125
+ "typebox": "*"
126
+ },
127
+ "devDependencies": {
128
+ "@earendil-works/pi-ai": "0.80.1",
129
+ "@earendil-works/pi-coding-agent": "0.80.1",
130
+ "@earendil-works/pi-tui": "0.80.1",
131
+ "@xterm/xterm": "^6.0.0",
132
+ "node-pty": "^1.1.0",
133
+ "playwright": "^1.60.0",
134
+ "typebox": "^1.1.38",
135
+ "typescript": "^6.0.3",
136
+ "vitest": "^4.1.6"
137
+ },
138
+ "pi": {
139
+ "extensions": [
140
+ "./src/index.ts"
141
+ ]
142
+ },
143
+ "overrides": {
144
+ "undici": "7.28.0"
145
+ },
146
+ "allowScripts": {
147
+ "node-pty@1.1.0": true
148
+ },
149
+ "peerDependenciesMeta": {
150
+ "@earendil-works/pi-ai": {
151
+ "optional": true
152
+ },
153
+ "@earendil-works/pi-coding-agent": {
154
+ "optional": true
155
+ },
156
+ "@earendil-works/pi-tui": {
157
+ "optional": true
158
+ },
159
+ "typebox": {
160
+ "optional": true
161
+ }
162
+ }
163
163
  }
package/src/context.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { createHash } from "node:crypto";
2
- import type { Context, Message, ToolCall } from "@earendil-works/pi-ai";
2
+ import type { Context, Message, ToolCall } from "@earendil-works/pi-ai/compat";
3
3
  import { convertToLlm } from "@earendil-works/pi-coding-agent";
4
4
  import type { AgentModeOption, SDKImage } from "@cursor/sdk";
5
5
  import { getCursorReplayPromptLabel } from "./cursor-tool-presentation-registry.js";
@@ -1,4 +1,4 @@
1
- import type { Context } from "@earendil-works/pi-ai";
1
+ import type { Context } from "@earendil-works/pi-ai/compat";
2
2
 
3
3
  /** Tool names from the provider context snapshot at stream start (not live pi.getActiveTools()). */
4
4
  export function getActiveContextToolNames(context: Context): ReadonlySet<string> | undefined {
@@ -1,4 +1,4 @@
1
- import type { Context, Message, ToolResultMessage } from "@earendil-works/pi-ai";
1
+ import type { Context, Message, ToolResultMessage } from "@earendil-works/pi-ai/compat";
2
2
  import { CURSOR_APPROX_CHARS_PER_TOKEN, estimateCursorPromptMessageTokens } from "./context.js";
3
3
 
4
4
  export interface CursorLiveRunAccountingState {
@@ -1,4 +1,4 @@
1
- import type { Context, ToolResultMessage } from "@earendil-works/pi-ai";
1
+ import type { Context, ToolResultMessage } from "@earendil-works/pi-ai/compat";
2
2
  import type { SDKAgent } from "@cursor/sdk";
3
3
  import {
4
4
  consumeCursorLiveToolResults,
@@ -1,6 +1,6 @@
1
1
  import { canRenderCursorToolNatively } from "./cursor-native-tool-display-state.js";
2
2
  import { getActiveContextToolNames } from "./cursor-context-tools.js";
3
- import type { Context } from "@earendil-works/pi-ai";
3
+ import type { Context } from "@earendil-works/pi-ai/compat";
4
4
 
5
5
  export type NativeReplayDisposition = "queue_replay" | "inactive_trace" | "transcript_trace";
6
6
 
@@ -1,4 +1,4 @@
1
- import type { AssistantMessage, AssistantMessageEventStream } from "@earendil-works/pi-ai";
1
+ import type { AssistantMessage, AssistantMessageEventStream } from "@earendil-works/pi-ai/compat";
2
2
 
3
3
  const DEFAULT_THINKING_TRACE_MAX_CHARS = 50000;
4
4
 
@@ -1,5 +1,5 @@
1
1
  import { createHash } from "node:crypto";
2
- import type { Context, ToolResultMessage } from "@earendil-works/pi-ai";
2
+ import type { Context, ToolResultMessage } from "@earendil-works/pi-ai/compat";
3
3
  import type { CallToolResult, Tool } from "@modelcontextprotocol/sdk/types.js";
4
4
  import { buildCursorPiBridgeMcpToolDescription, CURSOR_PI_BRIDGE_MCP_TOOL_PREFIX } from "./cursor-bridge-contract.js";
5
5
  import type { CursorPiBridgeToolDefinition, CursorPiMcpInputSchema } from "./cursor-pi-tool-bridge-types.js";
@@ -1,7 +1,7 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import type { IncomingMessage, ServerResponse } from "node:http";
3
3
  import type { McpServerConfig } from "@cursor/sdk";
4
- import type { Context, ToolResultMessage } from "@earendil-works/pi-ai";
4
+ import type { Context, ToolResultMessage } from "@earendil-works/pi-ai/compat";
5
5
  import { Server as McpProtocolServer } from "@modelcontextprotocol/sdk/server/index.js";
6
6
  import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
7
7
  import {
@@ -1,5 +1,5 @@
1
1
  import type { McpServerConfig } from "@cursor/sdk";
2
- import type { Context, ToolResultMessage } from "@earendil-works/pi-ai";
2
+ import type { Context, ToolResultMessage } from "@earendil-works/pi-ai/compat";
3
3
  import type { CursorSdkEventDebugRecorder } from "./cursor-sdk-event-debug.js";
4
4
  import type {
5
5
  ExtensionAPI,
@@ -6,7 +6,7 @@ import {
6
6
  type Context,
7
7
  type Model,
8
8
  type SimpleStreamOptions,
9
- } from "@earendil-works/pi-ai";
9
+ } from "@earendil-works/pi-ai/compat";
10
10
 
11
11
  function makeProviderLoadErrorMessage(model: Model<Api>, error: unknown): AssistantMessage {
12
12
  return {
@@ -4,7 +4,7 @@ import {
4
4
  type AssistantMessageEventStream,
5
5
  type Context,
6
6
  type Model,
7
- } from "@earendil-works/pi-ai";
7
+ } from "@earendil-works/pi-ai/compat";
8
8
  import { scheduler } from "node:timers/promises";
9
9
  import {
10
10
  CursorLiveRunAbortError,
@@ -1,4 +1,4 @@
1
- import type { AssistantMessage } from "@earendil-works/pi-ai";
1
+ import type { AssistantMessage } from "@earendil-works/pi-ai/compat";
2
2
  import { abandonSessionCursorAgent, cursorLiveRuns } from "./cursor-provider-live-run-drain.js";
3
3
  import {
4
4
  classifyCursorRunEmission,
@@ -1,4 +1,4 @@
1
- import type { AssistantMessage, AssistantMessageEventStream } from "@earendil-works/pi-ai";
1
+ import type { AssistantMessage, AssistantMessageEventStream } from "@earendil-works/pi-ai/compat";
2
2
  import type { InteractionUpdate } from "@cursor/sdk";
3
3
  import type { CursorLiveRun } from "./cursor-live-run-coordinator.js";
4
4
  import { cursorLiveRuns } from "./cursor-provider-live-run-drain.js";
@@ -1,4 +1,4 @@
1
- import type { AssistantMessage, AssistantMessageEventStream } from "@earendil-works/pi-ai";
1
+ import type { AssistantMessage, AssistantMessageEventStream } from "@earendil-works/pi-ai/compat";
2
2
  import type { CursorLiveRun } from "./cursor-live-run-coordinator.js";
3
3
  import { cursorLiveRuns } from "./cursor-provider-live-run-drain.js";
4
4
  import { CursorPartialContentEmitter } from "./cursor-partial-content-emitter.js";
@@ -1,4 +1,4 @@
1
- import type { SimpleStreamOptions } from "@earendil-works/pi-ai";
1
+ import type { SimpleStreamOptions } from "@earendil-works/pi-ai/compat";
2
2
  import { installCursorMcpToolTimeoutOverride } from "./cursor-mcp-timeout-override.js";
3
3
  import { installCursorSdkOutputFilter, suppressCursorSdkOutput } from "./cursor-sdk-output-filter.js";
4
4
  import {
@@ -5,7 +5,7 @@ import type {
5
5
  Context,
6
6
  Model,
7
7
  SimpleStreamOptions,
8
- } from "@earendil-works/pi-ai";
8
+ } from "@earendil-works/pi-ai/compat";
9
9
  import type { AgentModeOption, SDKAgent, SDKImage } from "@cursor/sdk";
10
10
  import type { CursorLiveRun } from "./cursor-live-run-coordinator.js";
11
11
  import type { SessionCursorAgentLease } from "./cursor-session-agent.js";
@@ -6,7 +6,7 @@ import {
6
6
  createAssistantMessageEventStream,
7
7
  type Model,
8
8
  type SimpleStreamOptions,
9
- } from "@earendil-works/pi-ai";
9
+ } from "@earendil-works/pi-ai/compat";
10
10
  import {
11
11
  cursorLiveRuns,
12
12
  DEFAULT_CURSOR_NATIVE_REPLAY_IDLE_DISPOSE_MS,
@@ -1,4 +1,4 @@
1
- import type { AssistantMessage } from "@earendil-works/pi-ai";
1
+ import type { AssistantMessage } from "@earendil-works/pi-ai/compat";
2
2
  import { asRecord, hasUsableText } from "./cursor-record-utils.js";
3
3
 
4
4
  function isCursorTextBoundary(text: string, index: number): boolean {
@@ -1,7 +1,7 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { copyFileSync, existsSync, unlinkSync, writeFileSync } from "node:fs";
3
3
  import { join } from "node:path";
4
- import type { AssistantMessageEventStream } from "@earendil-works/pi-ai";
4
+ import type { AssistantMessageEventStream } from "@earendil-works/pi-ai/compat";
5
5
  import type { AgentModeOption, InteractionUpdate } from "@cursor/sdk";
6
6
  import type { CursorPiToolBridgeDiagnosticEvent } from "./cursor-pi-tool-bridge-diagnostics.js";
7
7
  import { serializeCursorPiToolBridgeDiagnostic } from "./cursor-pi-tool-bridge-diagnostics.js";
@@ -1,6 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import type { AgentModeOption, ModelSelection, SDKAgent, SettingSource } from "@cursor/sdk";
3
- import type { Context } from "@earendil-works/pi-ai";
3
+ import type { Context } from "@earendil-works/pi-ai/compat";
4
4
  import {
5
5
  getRegisteredCursorPiToolBridge,
6
6
  type CursorPiBridgeToolRequest,
@@ -1,4 +1,4 @@
1
- import type { Context } from "@earendil-works/pi-ai";
1
+ import type { Context } from "@earendil-works/pi-ai/compat";
2
2
  import {
3
3
  buildCursorIncrementalPrompt,
4
4
  buildCursorPrompt,
@@ -1,4 +1,4 @@
1
- import type { Api, AssistantMessage, Context, Model } from "@earendil-works/pi-ai";
1
+ import type { Api, AssistantMessage, Context, Model } from "@earendil-works/pi-ai/compat";
2
2
  import {
3
3
  CURSOR_APPROX_CHARS_PER_TOKEN,
4
4
  CURSOR_IMAGE_TOKEN_ESTIMATE,
@@ -5,7 +5,7 @@ import type {
5
5
  ModelSelection,
6
6
  } from "@cursor/sdk";
7
7
  import type { ProviderModelConfig } from "@earendil-works/pi-coding-agent";
8
- import type { ModelThinkingLevel, ThinkingLevelMap } from "@earendil-works/pi-ai";
8
+ import type { ModelThinkingLevel, ThinkingLevelMap } from "@earendil-works/pi-ai/compat";
9
9
  import { loadContextWindowCache } from "./context-window-cache.js";
10
10
  import { loadCursorSdk } from "./cursor-sdk-runtime.js";
11
11
  import { resolveCursorApiKey } from "./cursor-api-key.js";