@omercnet/paseo-omp 3.0.0-next.278.2 → 3.0.0-next.284.1

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/OVERVIEW.md CHANGED
@@ -2,7 +2,7 @@ OMP adds an agent provider for the OMP coding agent, plus an OMP sidebar and wor
2
2
 
3
3
  ## Setup
4
4
 
5
- - Paseo ^0.12.0.
5
+ - Paseo ^0.12.0 || ^0.13.0.
6
6
  - OMP 18.1.15 or newer on the daemon host, speaking RPC protocol v2. Older runtimes are rejected.
7
7
  - Provider options let you change the OMP command, set environment values, choose an output redaction mode and set a session directory and timeout. Named OMP profiles appear as separate `OMP · <profile>` providers.
8
8
 
package/README.md CHANGED
@@ -24,7 +24,7 @@ before capture.
24
24
 
25
25
  ## Quick start
26
26
 
27
- Requirements: Paseo `^0.12.0`, OMP `18.1.15` or newer, and OMP RPC protocol v2. Workspace discovery passes `includeBackground`, which throws on hosts that do not advertise `features.backgroundWorkspaces` (new in 0.12), so older hosts are not supported.
27
+ Requirements: Paseo `^0.12.0 || ^0.13.0`, OMP `18.1.15` or newer, and OMP RPC protocol v2. Workspace discovery passes `includeBackground`, which throws on hosts that do not advertise `features.backgroundWorkspaces` (new in 0.12), so older hosts are not supported.
28
28
 
29
29
  ```bash
30
30
  paseo plugin install npm:@omercnet/paseo-omp@<version>
@@ -54,7 +54,7 @@ Profile selection is request-local: concurrent clients cannot change each other'
54
54
 
55
55
  ## Paseo provider SDK coverage
56
56
 
57
- The capability inventory is pinned to `@getpaseo/plugin` 0.12.0, with nightly compatibility checks
57
+ The capability inventory is pinned to `@getpaseo/plugin` 0.13.0-beta.2, with nightly compatibility checks
58
58
  against the latest and beta channels. Provider capability scoring covers
59
59
  all 17 entries in the SDK's `PROVIDER_CAPABILITIES`; the separate provider/client SDK table below
60
60
  also tracks the registration, screen, and sidebar APIs introduced in 0.11. This measures strict SDK surface
@@ -8,15 +8,15 @@
8
8
  "name": "@omercnet/paseo-omp",
9
9
  "version": "3.0.0",
10
10
  "dependencies": {
11
- "@getpaseo/protocol": "0.12.0",
11
+ "@getpaseo/protocol": "0.13.0-beta.2",
12
12
  "@modelcontextprotocol/sdk": "1.30.0",
13
13
  "yaml": "^2.9.0"
14
14
  }
15
15
  },
16
16
  "node_modules/@getpaseo/protocol": {
17
- "version": "0.12.0",
18
- "resolved": "https://registry.npmjs.org/@getpaseo/protocol/-/protocol-0.12.0.tgz",
19
- "integrity": "sha512-05jivVDeG18jWTpvQZ3yETNxH/AfHpHy9CgnP7O5ZxQLUr3onJIAqaGNzv15dPnGf4fU342UHQBFAE2t2Yc7fQ==",
17
+ "version": "0.13.0-beta.2",
18
+ "resolved": "https://registry.npmjs.org/@getpaseo/protocol/-/protocol-0.13.0-beta.2.tgz",
19
+ "integrity": "sha512-1C3nPR4Cj1E12LpTpnQr9g7xFce2ZT/KVGPKzfziNrS+7VPPUFT/oJufiwPtDtndWlV5fN1zTeSWnMCwYnvXpw==",
20
20
  "dependencies": {
21
21
  "semver": "^7.8.5",
22
22
  "zod": "^4.4.3"
@@ -121,18 +121,18 @@
121
121
  }
122
122
  },
123
123
  "node_modules/body-parser": {
124
- "version": "2.3.0",
125
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.3.0.tgz",
126
- "integrity": "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==",
124
+ "version": "2.4.0",
125
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.4.0.tgz",
126
+ "integrity": "sha512-Ifk1KcLrxaGt1occQagQNFNNOqRt1LFuehEnHHzB8Z6cRgIxRU1TBaiIsUiCdA+gy5PL7Y1IX31DNKkRmxtXjQ==",
127
127
  "license": "MIT",
128
128
  "dependencies": {
129
129
  "bytes": "^3.1.2",
130
- "content-type": "^2.0.0",
130
+ "content-type": "^2.1.0",
131
131
  "debug": "^4.4.3",
132
132
  "http-errors": "^2.0.1",
133
- "iconv-lite": "^0.7.2",
133
+ "iconv-lite": "^0.7.3",
134
134
  "on-finished": "^2.4.1",
135
- "qs": "^6.15.2",
135
+ "qs": "^6.16.1",
136
136
  "raw-body": "^3.0.2",
137
137
  "type-is": "^2.1.0"
138
138
  },
@@ -469,9 +469,9 @@
469
469
  "license": "MIT"
470
470
  },
471
471
  "node_modules/fast-uri": {
472
- "version": "3.1.8",
473
- "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.8.tgz",
474
- "integrity": "sha512-GZMtZUTNRpOVIECoXwLNZS5xUGE+mVNbTB8h/7Rwh2TFWcBQiPzTgyZi05BF9UMZKkLJv8XBRJTlU7zg8+ZfMg==",
472
+ "version": "3.1.9",
473
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.9.tgz",
474
+ "integrity": "sha512-hS/0Wt3Ya043oKXs0sIxrMpKQITXhMLIrVAKKXi4gozGC9v7YRWVnXIZzjNPTO02M9BdxLCWqK1yRXgNziVyJQ==",
475
475
  "funding": [
476
476
  {
477
477
  "type": "github",
@@ -687,9 +687,9 @@
687
687
  "license": "ISC"
688
688
  },
689
689
  "node_modules/jose": {
690
- "version": "6.2.12",
691
- "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.12.tgz",
692
- "integrity": "sha512-9NiFmJEex0sy2Dk58j2UGBSHgUs2ypF9eZSu4L6vjOX3Dp96Sw1F3uL+H+D1sx02jZZdzUT0HgvCy59CuvXcWw==",
690
+ "version": "6.2.13",
691
+ "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.13.tgz",
692
+ "integrity": "sha512-7TIg10ZE1x82YediN+lcrPNvGMKge9yFHQD+Qho/b8y2adfugU3AsvvHfxV0fzyFllT6l9xCjf4RWY9g/Z9PJQ==",
693
693
  "license": "MIT",
694
694
  "funding": {
695
695
  "url": "https://github.com/sponsors/panva"
@@ -823,15 +823,19 @@
823
823
  }
824
824
  },
825
825
  "node_modules/on-finished": {
826
- "version": "2.4.1",
827
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
828
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
826
+ "version": "2.4.2",
827
+ "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.2.tgz",
828
+ "integrity": "sha512-ATWUv387i+nLD49EiDoOft5scf32Vsdz3ktrQJG9bi7jRFmaXTssvyvj1EmeKVVgvesbqUtvQQvaS2TpTukAZQ==",
829
829
  "license": "MIT",
830
830
  "dependencies": {
831
831
  "ee-first": "1.1.1"
832
832
  },
833
833
  "engines": {
834
834
  "node": ">= 0.8"
835
+ },
836
+ "funding": {
837
+ "type": "opencollective",
838
+ "url": "https://opencollective.com/express"
835
839
  }
836
840
  },
837
841
  "node_modules/once": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omercnet/paseo-omp",
3
- "version": "3.0.0-next.278.2",
3
+ "version": "3.0.0-next.284.1",
4
4
  "type": "module",
5
5
  "description": "Paseo integration for OMP, including its direct provider and workspace tooling.",
6
6
  "license": "MIT",
@@ -53,16 +53,16 @@
53
53
  "typecheck": "tsc --noEmit -p tsconfig.client.json && tsc --noEmit -p tsconfig.server.json && tsc --noEmit -p tsconfig.tests.json"
54
54
  },
55
55
  "dependencies": {
56
- "@getpaseo/protocol": "0.12.0",
56
+ "@getpaseo/protocol": "0.13.0-beta.2",
57
57
  "@modelcontextprotocol/sdk": "1.30.0",
58
58
  "yaml": "^2.9.0"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@biomejs/biome": "^2.5.10",
62
- "@getpaseo/cli": "0.12.0",
63
- "@getpaseo/client": "0.12.0",
64
- "@getpaseo/plugin": "0.12.0",
65
- "@getpaseo/server": "0.12.0",
62
+ "@getpaseo/cli": "0.13.0-beta.2",
63
+ "@getpaseo/client": "0.13.0-beta.2",
64
+ "@getpaseo/plugin": "0.13.0-beta.2",
65
+ "@getpaseo/server": "0.13.0-beta.2",
66
66
  "@oh-my-pi/pi-agent-core": "18.10.1",
67
67
  "@oh-my-pi/pi-coding-agent": "18.10.1",
68
68
  "@tanstack/react-query": "^5.102.3",
package/paseo-plugin.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "id": "paseo-omp",
3
3
  "description": "Paseo integration for OMP, including its direct provider and workspace tooling.",
4
- "requirements": { "paseo": "^0.12.0" },
4
+ "requirements": { "paseo": "^0.12.0 || ^0.13.0" },
5
5
  "build": [["node", "scripts/prepare-dependencies.mjs"]]
6
6
  }
@@ -1,2 +1,2 @@
1
1
  /** Release Please keeps this bundle-safe constant aligned with package.json. */
2
- export const PASEO_OMP_PACKAGE_VERSION = "3.0.0-next.278.2"; // x-release-please-version
2
+ export const PASEO_OMP_PACKAGE_VERSION = "3.0.0-next.284.1"; // x-release-please-version
@@ -71,6 +71,7 @@ const CHUNK_STALE_MS = 30_000;
71
71
  const MAX_PHYSICAL_FRAME_BYTES = 1024 * 1024;
72
72
  const MAX_STREAM_TEXT_LENGTH = 4 * 1024 * 1024;
73
73
  const MAX_ACTIVE_TOOLS = 64;
74
+ const MAX_ENDED_TOOL_IDS = 1_024;
74
75
  const MAX_PENDING_REQUESTS = 256;
75
76
  const MAX_PENDING_ONE_WAY_WRITES = 256;
76
77
  const MAX_PENDING_WRITE_BYTES = 8 * 1024 * 1024;
@@ -164,6 +165,9 @@ export class OmpRpcProcess {
164
165
  private readonly streamedBlocks = new Map<number, string>();
165
166
  private readonly activeToolCallIds = new Set<string>();
166
167
  private readonly announcedToolCallIds = new Set<string>();
168
+ // Detached background tools keep streaming updates after they return and after turn_end.
169
+ // FIFO-capped: an update for an id evicted after MAX_ENDED_TOOL_IDS later calls is flagged again.
170
+ private readonly endedToolCallIds = new Set<string>();
167
171
  private pendingWriteBytes = 0;
168
172
  private commandTextLength = 0;
169
173
  private lineParts: Buffer[] = [];
@@ -1081,6 +1085,8 @@ export class OmpRpcProcess {
1081
1085
  });
1082
1086
  return;
1083
1087
  }
1088
+ // Emitted once the session has no live or background work. Nothing consumes it yet.
1089
+ if (type === "session_settled") return;
1084
1090
  if (type === "ready") {
1085
1091
  if (this.readyReceived) {
1086
1092
  this.recordProtocolViolation("duplicate-ready", {
@@ -1121,6 +1127,12 @@ export class OmpRpcProcess {
1121
1127
  });
1122
1128
  return;
1123
1129
  }
1130
+ if (
1131
+ event.data.type === "tool_execution_update" &&
1132
+ this.endedToolCallIds.has(event.data.toolCallId)
1133
+ ) {
1134
+ return;
1135
+ }
1124
1136
  if (!this.acceptEventState(event.data)) {
1125
1137
  this.recordProtocolViolation("invalid-event-state", {
1126
1138
  reason: "event-state-transition",
@@ -1188,6 +1200,7 @@ export class OmpRpcProcess {
1188
1200
  return false;
1189
1201
  }
1190
1202
  this.activeToolCallIds.add(event.toolCallId);
1203
+ this.endedToolCallIds.delete(event.toolCallId);
1191
1204
  return true;
1192
1205
  }
1193
1206
  if (event.type === "tool_stream_update") {
@@ -1203,6 +1216,11 @@ export class OmpRpcProcess {
1203
1216
  if (!this.activeToolCallIds.has(event.toolCallId)) return false;
1204
1217
  this.activeToolCallIds.delete(event.toolCallId);
1205
1218
  this.announcedToolCallIds.delete(event.toolCallId);
1219
+ if (this.endedToolCallIds.size >= MAX_ENDED_TOOL_IDS) {
1220
+ const oldest = this.endedToolCallIds.values().next().value;
1221
+ if (oldest !== undefined) this.endedToolCallIds.delete(oldest);
1222
+ }
1223
+ this.endedToolCallIds.add(event.toolCallId);
1206
1224
  return true;
1207
1225
  }
1208
1226
  if (