@omercnet/paseo-omp 2.0.2 → 3.0.0-next.278.2
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 +1 -1
- package/README.md +7 -7
- package/index.client.tsx +4 -2
- package/npm-shrinkwrap.json +18 -18
- package/package.json +7 -7
- package/paseo-plugin.json +1 -1
- package/server/package-version.ts +1 -1
- package/server/provider/connection.ts +4 -1
- package/server/provider/prompt-payload.ts +4 -1
- package/server/provider/session.ts +11 -1
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.
|
|
5
|
+
- Paseo ^0.12.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.
|
|
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.
|
|
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
|
- [Release checklist](docs/release-checklist.md)
|
|
42
42
|
|
|
43
|
-
The plugin uses public Paseo 0.
|
|
43
|
+
The plugin uses public Paseo 0.12 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,10 +54,10 @@ 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.
|
|
57
|
+
The capability inventory is pinned to `@getpaseo/plugin` 0.12.0, 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
|
-
also tracks the
|
|
60
|
+
also tracks the registration, screen, and sidebar APIs introduced in 0.11. This measures strict SDK surface
|
|
61
61
|
coverage, not general product quality.
|
|
62
62
|
|
|
63
63
|
**Provider capability completeness: 61.8%.** The provider advertises 11 of 17 capabilities (64.7%); ten are complete and `session.configure` is partial.
|
|
@@ -95,7 +95,7 @@ Provider functionality outside the capability flags is tracked separately:
|
|
|
95
95
|
| --- | ---: | --- |
|
|
96
96
|
| Registration metadata and sanitized SVG icon | **100%** | Stable `omp-plugin` identity, label, description, and bundled icon. |
|
|
97
97
|
| Strict `providerOptionsSchema` | **100%** | Command, literal environment, names-only profile inherited environment, output-redaction mode, session directory, RPC timeout, and role-model options are validated and normalized. Host-wide inherited names are separately persisted and merged at launch. |
|
|
98
|
-
| Availability diagnostics | **50%** | The plugin implements a `checkAvailability` hook with bounded checks that distinguish missing, unrunnable, incompatible, and available OMP runtimes, but Paseo 0.
|
|
98
|
+
| Availability diagnostics | **50%** | The plugin implements a `checkAvailability` hook with bounded checks that distinguish missing, unrunnable, incompatible, and available OMP runtimes, but Paseo 0.12 does not call it. The host uses the `status()` hook below instead, which reuses this probe for the default launch. |
|
|
99
99
|
| Catalog cache identity | **100%** | Hash includes effective options, merged host/profile inherited-environment names, settings, scope, cwd, and default command, but never resolves or fingerprints inherited values. |
|
|
100
100
|
| Models, modes, and thinking catalog | **100%** | Native catalog is mapped to opaque public model IDs with committed defaults and permission-gated modes. |
|
|
101
101
|
| Connection `send` / `onEvent` / `close` lifecycle | **100%** | Request correlation, multi-session ownership, process recovery, teardown, and provider reload/removal are covered. |
|
|
@@ -105,7 +105,7 @@ Provider functionality outside the capability flags is tracked separately:
|
|
|
105
105
|
| Commands and committed session state events | **100%** | Publishes `session.commands`, `session.opened`, `session.config`, `session.ready`, and request completion in protocol order. |
|
|
106
106
|
| Built-in timeline snapshots | **100%** | Assistant, reasoning, tools, todos, notifications, errors, compaction, and friendly MCP labels use stable IDs and complete snapshots. OMP emits client-safe PNG/JPEG when possible; validated legacy WebP images render on capable clients with an explicit per-image fallback elsewhere. |
|
|
107
107
|
| Usage reporting | **100%** | Periodic, post-compaction, fallback, terminal, timeout, and recovered-runtime samples publish `session.usage`. |
|
|
108
|
-
| 0.11 provider `status()` | **75%** | Registered for the plugin-owned default launch (`OMP_COMMAND` or `omp`, plus the fixed `--profile` wrapper for profile providers), using the bounded `--version`/`--help` probe. Only a missing executable reports `available: false`; slow, failing, or unrecognized probes stay available with a diagnostic. An unexpected internal probe error is not caught here, so the host reports it as unavailable. Available results are shared for 30 seconds; an unavailable result is never remembered, so installing `omp` takes effect on the next host call. The request carries only an optional daemon `launch` and never `providerOptions`, so a per-agent `providerOptions.command` or `env` is invisible. **Breaking
|
|
108
|
+
| 0.11 provider `status()` | **75%** | Registered for the plugin-owned default launch (`OMP_COMMAND` or `omp`, plus the fixed `--profile` wrapper for profile providers), using the bounded `--version`/`--help` probe. Only a missing executable reports `available: false`; slow, failing, or unrecognized probes stay available with a diagnostic. An unexpected internal probe error is not caught here, so the host reports it as unavailable. Available results are shared for 30 seconds; an unavailable result is never remembered, so installing `omp` takes effect on the next host call. The request carries only an optional daemon `launch` and never `providerOptions`, so a per-agent `providerOptions.command` or `env` is invisible. **Breaking since 0.11:** the host gates create, resume, and draft commands/features on this status, so a missing default executable blocks them all, including agents configured with an otherwise valid custom command. Any request `launch` is ignored. |
|
|
109
109
|
| 0.11 provider `command` and daemon launch | **0%** | Deliberately not declared. Declaring `command` makes the daemon resolve it against its own `PATH` and reject every `connect` when the default binary is missing. The resulting `launch.env` is the daemon's entire process environment plus overrides, indistinguishable from configured values, so adopting it would defeat names-only `inheritEnv` and the fixed profile store environment. The host never supplies `launch` without a declared `command`; `connect` and `getCatalogCacheKey` do not read it, each pinned by `tests/provider-catalog.test.ts`. Revisit if the host stops gating on the default binary or exposes configured `env` separately from the daemon environment. |
|
|
110
110
|
| 0.11 screens and sidebar items | **100%** | The global config surface migrates to `addScreen({ id: "config" })`, preserving legacy links and encoding profile selection in screen params. The Hub status row uses `addSidebarHeaderItem` + `SidebarRow`, lists processes and tails logs in a reusable popover. The legacy static config row and surface were removed with the 0.11 floor. |
|
|
111
111
|
| 0.11 usage source | **0%** | Not registered. `server/quota.ts` reads OMP's recorded `usage_history`, not live quota, so there is no live fetcher to register. Upstream Claude and Codex sources fetch live quota for the Anthropic and Codex OAuth credentials in the daemon's default or `OMP_PROFILE` store; other providers and named profiles remain covered only by this plugin's historical quota pill. |
|
|
@@ -125,7 +125,7 @@ Existing agents whose provider is `omp` remain owned by the bundled provider. Ne
|
|
|
125
125
|
|
|
126
126
|
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.
|
|
127
127
|
|
|
128
|
-
Paseo 0.
|
|
128
|
+
Paseo 0.12 is the minimum supported release. The controlled Docker canary is pinned to official 0.12.0; nightly SDK checks cover the latest and beta channels. 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.
|
|
129
129
|
|
|
130
130
|
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.
|
|
131
131
|
|
package/index.client.tsx
CHANGED
|
@@ -99,6 +99,7 @@ async function loadAgents(paseo: PaseoApi): Promise<AgentEntry[]> {
|
|
|
99
99
|
let cursor: string | undefined;
|
|
100
100
|
for (let page = 0; page < MAX_PAGES; page += 1) {
|
|
101
101
|
const result = await paseo.agents.list({
|
|
102
|
+
filter: { includeBackground: true },
|
|
102
103
|
sort: [{ key: "updated_at", direction: "desc" }],
|
|
103
104
|
page: { limit: PAGE_LIMIT, ...(cursor ? { cursor } : {}) },
|
|
104
105
|
});
|
|
@@ -137,7 +138,8 @@ export function registerConfigAndHub(
|
|
|
137
138
|
}
|
|
138
139
|
const { HubSidebarItem } = createHubSidebar(() =>
|
|
139
140
|
loadHubSnapshot(
|
|
140
|
-
() =>
|
|
141
|
+
() =>
|
|
142
|
+
client.paseo.workspaces.list({ filter: { includeBackground: true }, page: { limit: 200 } }),
|
|
141
143
|
async (cwd) => (await client.rpc(listHubProcesses, { cwd })).processes,
|
|
142
144
|
),
|
|
143
145
|
);
|
|
@@ -504,7 +506,7 @@ export default function contribute(client: PluginClientContext) {
|
|
|
504
506
|
let unsubscribeAgentDirectory = () => {};
|
|
505
507
|
let releaseAgentDirectory: (() => Promise<void>) | undefined;
|
|
506
508
|
void client.paseo.agents
|
|
507
|
-
.list({ subscribe: {} })
|
|
509
|
+
.list({ subscribe: {}, filter: { includeBackground: true } })
|
|
508
510
|
.then(({ subscription }) => {
|
|
509
511
|
if (!subscription) return;
|
|
510
512
|
if (disposed) {
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omercnet/paseo-omp",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@omercnet/paseo-omp",
|
|
9
|
-
"version": "
|
|
9
|
+
"version": "3.0.0",
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"@getpaseo/protocol": "0.
|
|
11
|
+
"@getpaseo/protocol": "0.12.0",
|
|
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.
|
|
18
|
-
"resolved": "https://registry.npmjs.org/@getpaseo/protocol/-/protocol-0.
|
|
19
|
-
"integrity": "sha512-
|
|
17
|
+
"version": "0.12.0",
|
|
18
|
+
"resolved": "https://registry.npmjs.org/@getpaseo/protocol/-/protocol-0.12.0.tgz",
|
|
19
|
+
"integrity": "sha512-05jivVDeG18jWTpvQZ3yETNxH/AfHpHy9CgnP7O5ZxQLUr3onJIAqaGNzv15dPnGf4fU342UHQBFAE2t2Yc7fQ==",
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"semver": "^7.8.5",
|
|
22
22
|
"zod": "^4.4.3"
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"node_modules/@hono/node-server": {
|
|
26
|
-
"version": "2.1.
|
|
27
|
-
"resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.
|
|
28
|
-
"integrity": "sha512-
|
|
26
|
+
"version": "2.1.5",
|
|
27
|
+
"resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-2.1.5.tgz",
|
|
28
|
+
"integrity": "sha512-MgP/I06GdvsilDspMk/qmRzpk8LOUStP6jFAbSRi40W09DhoyUn+Mj7eyKICPqeYKybOjVFLVIAQzvu1bfIa7Q==",
|
|
29
29
|
"license": "MIT",
|
|
30
30
|
"engines": {
|
|
31
31
|
"node": ">=20"
|
|
@@ -657,9 +657,9 @@
|
|
|
657
657
|
"license": "ISC"
|
|
658
658
|
},
|
|
659
659
|
"node_modules/ip-address": {
|
|
660
|
-
"version": "10.7.
|
|
661
|
-
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.
|
|
662
|
-
"integrity": "sha512-
|
|
660
|
+
"version": "10.7.4",
|
|
661
|
+
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.4.tgz",
|
|
662
|
+
"integrity": "sha512-DWBMKyeM25D70nrIiTkgQth59/G+naKOTep6huF9j+GmeK3DMD60Zvxg5d5qQnz+38AHgou6ean2LECX+lrKDg==",
|
|
663
663
|
"license": "MIT",
|
|
664
664
|
"engines": {
|
|
665
665
|
"node": ">= 12"
|
|
@@ -898,9 +898,9 @@
|
|
|
898
898
|
}
|
|
899
899
|
},
|
|
900
900
|
"node_modules/qs": {
|
|
901
|
-
"version": "6.16.
|
|
902
|
-
"resolved": "https://registry.npmjs.org/qs/-/qs-6.16.
|
|
903
|
-
"integrity": "sha512-
|
|
901
|
+
"version": "6.16.1",
|
|
902
|
+
"resolved": "https://registry.npmjs.org/qs/-/qs-6.16.1.tgz",
|
|
903
|
+
"integrity": "sha512-5Px6J7rfHBAGUhNQ3es4YzcOdBBw0SDcVtThJml4RdnKw4tKs2epA0kPZ+K8X+WiHktT93RHVcQ/3ym5aTCgtg==",
|
|
904
904
|
"license": "BSD-3-Clause",
|
|
905
905
|
"dependencies": {
|
|
906
906
|
"es-define-property": "^1.0.1",
|
|
@@ -1232,9 +1232,9 @@
|
|
|
1232
1232
|
}
|
|
1233
1233
|
},
|
|
1234
1234
|
"node_modules/zod": {
|
|
1235
|
-
"version": "4.6.
|
|
1236
|
-
"resolved": "https://registry.npmjs.org/zod/-/zod-4.6.
|
|
1237
|
-
"integrity": "sha512-
|
|
1235
|
+
"version": "4.6.7",
|
|
1236
|
+
"resolved": "https://registry.npmjs.org/zod/-/zod-4.6.7.tgz",
|
|
1237
|
+
"integrity": "sha512-g8W2D2kU6a8untc053fX1uVBKzM7yqAxW/3zwk83+6RyF2+SKOuV+c0wBDhUwzV1PaGapmZH+rmcUzPf+3CGwg==",
|
|
1238
1238
|
"license": "MIT",
|
|
1239
1239
|
"funding": {
|
|
1240
1240
|
"url": "https://github.com/sponsors/colinhacks"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omercnet/paseo-omp",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0-next.278.2",
|
|
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.
|
|
56
|
+
"@getpaseo/protocol": "0.12.0",
|
|
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.
|
|
63
|
-
"@getpaseo/client": "0.
|
|
64
|
-
"@getpaseo/plugin": "0.
|
|
65
|
-
"@getpaseo/server": "0.
|
|
62
|
+
"@getpaseo/cli": "0.12.0",
|
|
63
|
+
"@getpaseo/client": "0.12.0",
|
|
64
|
+
"@getpaseo/plugin": "0.12.0",
|
|
65
|
+
"@getpaseo/server": "0.12.0",
|
|
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",
|
|
@@ -70,9 +70,9 @@
|
|
|
70
70
|
"@types/react": "^19.2.18",
|
|
71
71
|
"@vitest/coverage-v8": "^5.0.0",
|
|
72
72
|
"esbuild": "0.28.2",
|
|
73
|
+
"pino": "10.3.1",
|
|
73
74
|
"react": "19.1.0",
|
|
74
75
|
"react-native": "0.81.5",
|
|
75
|
-
"pino": "10.3.1",
|
|
76
76
|
"tsx": "^4.20.6",
|
|
77
77
|
"typescript": "^7.0.2",
|
|
78
78
|
"vitest": "^5.0.0",
|
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.
|
|
4
|
+
"requirements": { "paseo": "^0.12.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 = "
|
|
2
|
+
export const PASEO_OMP_PACKAGE_VERSION = "3.0.0-next.278.2"; // x-release-please-version
|
|
@@ -166,7 +166,10 @@ function preflightProviderInput(input: unknown): void {
|
|
|
166
166
|
) {
|
|
167
167
|
throw new OmpPublicError("Prompt output schema is too large");
|
|
168
168
|
}
|
|
169
|
-
if (
|
|
169
|
+
if (
|
|
170
|
+
prompt?.outputSchema !== undefined ||
|
|
171
|
+
(prompt?.clearPendingPermissions === true && prompt.delivery !== "steer")
|
|
172
|
+
) {
|
|
170
173
|
throw new OmpPublicError("OMP does not support structured output or permission controls");
|
|
171
174
|
}
|
|
172
175
|
}
|
|
@@ -183,7 +183,10 @@ function padLineNumber(lineNumber: number | null): string {
|
|
|
183
183
|
}
|
|
184
184
|
|
|
185
185
|
export function promptPayload(input: SessionPromptInput): OmpPromptPayload {
|
|
186
|
-
if (
|
|
186
|
+
if (
|
|
187
|
+
input.prompt.outputSchema !== undefined ||
|
|
188
|
+
(input.prompt.clearPendingPermissions && input.prompt.delivery !== "steer")
|
|
189
|
+
) {
|
|
187
190
|
throw new OmpPublicError("OMP does not support structured output or permission controls");
|
|
188
191
|
}
|
|
189
192
|
if (input.prompt.input.type === "command") {
|
|
@@ -1073,7 +1073,12 @@ export class OmpProviderSession implements OmpOpenedSession {
|
|
|
1073
1073
|
}
|
|
1074
1074
|
|
|
1075
1075
|
if (input.prompt.delivery === "steer") {
|
|
1076
|
-
await this.steer(
|
|
1076
|
+
await this.steer(
|
|
1077
|
+
input.prompt.clientMessageId,
|
|
1078
|
+
payload,
|
|
1079
|
+
undefined,
|
|
1080
|
+
input.prompt.clearPendingPermissions === true,
|
|
1081
|
+
);
|
|
1077
1082
|
return;
|
|
1078
1083
|
}
|
|
1079
1084
|
if (
|
|
@@ -2130,6 +2135,7 @@ export class OmpProviderSession implements OmpOpenedSession {
|
|
|
2130
2135
|
clientMessageId: string,
|
|
2131
2136
|
payload: OmpPromptPayload,
|
|
2132
2137
|
expectedTurn = this.activeTurn,
|
|
2138
|
+
clearPendingPermissions = false,
|
|
2133
2139
|
): Promise<void> {
|
|
2134
2140
|
const turn = expectedTurn;
|
|
2135
2141
|
if (!this.isSteerableTurn(turn)) {
|
|
@@ -2204,6 +2210,10 @@ export class OmpProviderSession implements OmpOpenedSession {
|
|
|
2204
2210
|
this.cancelAmbiguousTerminal(turn);
|
|
2205
2211
|
turn.deferredAgentEnd = undefined;
|
|
2206
2212
|
this.acceptPendingUser(turn, pending);
|
|
2213
|
+
if (clearPendingPermissions) {
|
|
2214
|
+
turn.awaitingPermissionEvidence = false;
|
|
2215
|
+
this.permissions.resolveTurnPermissions(turn.turnId);
|
|
2216
|
+
}
|
|
2207
2217
|
this.emit({
|
|
2208
2218
|
type: "session.prompt_result",
|
|
2209
2219
|
sessionId: this.id,
|