@omercnet/paseo-omp 1.0.3-next.188.1 → 1.0.3-next.190.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/README.md CHANGED
@@ -24,7 +24,7 @@ before capture.
24
24
 
25
25
  ## Quick start
26
26
 
27
- Requirements: Paseo `^0.9.2 || ^0.10.0-beta.1`, OMP `18.1.15` or newer, and OMP RPC protocol v2. Paseo 0.9.2 is required for reliable plugin-provider request failure containment, reload cleanup, and daemon shutdown ordering; 0.10.0-beta.1 is verified against the same public plugin contracts.
27
+ Requirements: Paseo `^0.9.2 || ^0.10.0`, OMP `18.1.15` or newer, and OMP RPC protocol v2. Paseo 0.9.2 is required for reliable plugin-provider request failure containment, reload cleanup, and daemon shutdown ordering; 0.10.1 is verified against the same public plugin contracts.
28
28
 
29
29
  ```bash
30
30
  paseo plugin install npm:@omercnet/paseo-omp@<version>
@@ -40,7 +40,7 @@ Open the **OMP** sidebar to review the provider-profile contract, choose which c
40
40
  - [Core-provider issue and parity audit](docs/core-provider-issue-audit.md)
41
41
  - [Alpha release checklist](docs/alpha-release-checklist.md)
42
42
 
43
- The plugin uses public Paseo 0.9 and 0.10 beta provider and client contracts and registers distinct `omp-plugin` and `omp-plugin-<profile>` identities; it does not modify the bundled `omp` provider.
43
+ The plugin uses public Paseo 0.9 and 0.10 provider and client contracts and registers distinct `omp-plugin` and `omp-plugin-<profile>` identities; it does not modify the bundled `omp` provider.
44
44
 
45
45
  ## Named OMP profiles
46
46
 
@@ -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
- This matrix inventories the complete capability set exported by the pinned `@getpaseo/plugin` 0.9.2 provider SDK. Paseo 0.10.0-beta.1 preserves that public provider surface; compatibility is checked nightly against both SDK channels. It measures strict SDK surface coverage, not general product quality.
57
+ This matrix inventories the complete capability set exported by the pinned `@getpaseo/plugin` 0.10.1 provider SDK, whose public provider surface is unchanged since 0.9.0; compatibility is checked nightly against the 0.9, 0.10, and latest SDK channels. It measures strict SDK surface coverage, not general product quality.
58
58
 
59
59
  **Current capability completeness: 61.8%.** The provider advertises 11 of 17 capabilities (64.7%); ten are complete and `session.configure` is partial.
60
60
 
@@ -117,7 +117,7 @@ Existing agents whose provider is `omp` remain owned by the bundled provider. Ne
117
117
 
118
118
  OMP `18.1.15` is the oldest version tested end to end. The direct provider's hard compatibility gate is `rpc-ui` protocol v2: metadata-free legacy ready frames and v1-only runtimes are rejected before a provider session opens because they cannot support the advertised persistence and conversation-rewind capabilities. Typed tool approvals remain capability-gated and fall back as described above. For terminal completion, a matching `agent_end.requestId` is authoritative and mismatches are ignored before state changes. Released OMP 18.2.x builds that omit that field use an ordered fallback requiring a fresh correlated native user entry followed by current-turn assistant activity, an idle non-compacting runtime, and no conflicting permission, tool, steer, or child-session work. Ambiguous events while OMP is active are ignored; unresolved ambiguity after confirmed idle fails only the Paseo turn. This trades a bounded residual same-agent stale-event risk for compatibility with released OMP instead of terminating and lazily restarting the runtime after every later prompt. Paseo clients, including mobile clients inside reconnect grace, do not own or terminate the daemon-managed OMP session.
119
119
 
120
- Paseo 0.9.2 is the minimum supported stable release, and 0.10.0-beta.1 is supported as a prerelease. The controlled Docker canary remains pinned to official 0.9.2; nightly SDK checks cover both 0.9 latest and the 0.10 beta. The canary preserves nested provider-subagent ancestry and spawning-tool links, and validates npm-managed plugin sources, platform-owned external URL opening, and whole-item timeline transforms before Overview grouping.
120
+ Paseo 0.9.2 is the minimum supported stable release, and 0.10.1 is supported. The controlled Docker canary remains pinned to official 0.9.2; nightly SDK checks cover the newest 0.9, 0.10, and latest releases. The canary preserves nested provider-subagent ancestry and spawning-tool links, and validates npm-managed plugin sources, platform-owned external URL opening, and whole-item timeline transforms before Overview grouping.
121
121
 
122
122
  Install, update, disable, or remove `paseo-omp` independently of the bundled provider. Verify the provider snapshot contains `omp-plugin` after installation; a bundled `omp` entry may remain present and is not modified by this plugin.
123
123
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@omercnet/paseo-omp",
3
- "version": "1.0.3-next.188.1",
3
+ "version": "1.0.3-next.190.1",
4
4
  "type": "module",
5
5
  "description": "Paseo integration for OMP, including its direct provider and workspace tooling.",
6
6
  "license": "MIT",
@@ -51,16 +51,16 @@
51
51
  "typecheck": "tsc --noEmit -p tsconfig.client.json && tsc --noEmit -p tsconfig.server.json && tsc --noEmit -p tsconfig.tests.json"
52
52
  },
53
53
  "dependencies": {
54
- "@getpaseo/protocol": "0.9.2",
54
+ "@getpaseo/protocol": "0.10.1",
55
55
  "@modelcontextprotocol/sdk": "1.30.0",
56
56
  "yaml": "^2.9.0"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@biomejs/biome": "^2.5.10",
60
- "@getpaseo/cli": "0.9.2",
61
- "@getpaseo/client": "0.9.2",
62
- "@getpaseo/plugin": "0.9.2",
63
- "@getpaseo/server": "0.9.2",
60
+ "@getpaseo/cli": "0.10.1",
61
+ "@getpaseo/client": "0.10.1",
62
+ "@getpaseo/plugin": "0.10.1",
63
+ "@getpaseo/server": "0.10.1",
64
64
  "@oh-my-pi/pi-agent-core": "18.2.0",
65
65
  "@oh-my-pi/pi-coding-agent": "18.2.0",
66
66
  "@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.9.2 || ^0.10.0-beta.1" },
4
+ "requirements": { "paseo": "^0.9.2 || ^0.10.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 = "1.0.3-next.188.1"; // x-release-please-version
2
+ export const PASEO_OMP_PACKAGE_VERSION = "1.0.3-next.190.1"; // x-release-please-version
@@ -159,6 +159,13 @@ export interface OmpRpcRuntimeOptions {
159
159
  ) => OmpSessionDescriptor[] | Promise<OmpSessionDescriptor[]>;
160
160
  }
161
161
 
162
+ // OMP accepts an empty message when images carry the prompt.
163
+ function promptText(message: string, images: readonly OmpImage[], field: string): string {
164
+ return message === "" && images.length > 0
165
+ ? message
166
+ : validateBoundedText(message, field, MAX_TEXT_LENGTH);
167
+ }
168
+
162
169
  class OmpRpcSession implements OmpRuntimeSession {
163
170
  get maxHostToolFrameBytes(): number {
164
171
  return this.process.outboundFrameLimit;
@@ -495,7 +502,7 @@ class OmpRpcSession implements OmpRuntimeSession {
495
502
  onAccepted?: () => void,
496
503
  onRequested?: (requestId: string) => void,
497
504
  ): Promise<{ requestId: string; agentInvoked?: boolean }> {
498
- const safeMessage = validateBoundedText(message, "prompt", MAX_TEXT_LENGTH);
505
+ const safeMessage = promptText(message, images, "prompt");
499
506
  let acknowledgement: z.infer<typeof OmpPromptAckSchema> | undefined;
500
507
  const request = this.process.startRequest(
501
508
  buildOmpPromptRequest(safeMessage, images),
@@ -511,7 +518,7 @@ class OmpRpcSession implements OmpRuntimeSession {
511
518
  }
512
519
 
513
520
  async steer(message: string, images: readonly OmpImage[] = []): Promise<void> {
514
- const safeMessage = validateBoundedText(message, "steer", MAX_TEXT_LENGTH);
521
+ const safeMessage = promptText(message, images, "steer");
515
522
  await this.process.request({
516
523
  type: "steer",
517
524
  message: safeMessage,
@@ -519,7 +526,7 @@ class OmpRpcSession implements OmpRuntimeSession {
519
526
  });
520
527
  }
521
528
  async followUp(message: string, images: readonly OmpImage[] = []): Promise<void> {
522
- const safeMessage = validateBoundedText(message, "follow-up", MAX_TEXT_LENGTH);
529
+ const safeMessage = promptText(message, images, "follow-up");
523
530
  await this.process.request({
524
531
  type: "follow_up",
525
532
  message: safeMessage,