@omercnet/paseo-omp 1.0.3-next.188.1 → 1.0.3
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
|
@@ -133,7 +133,7 @@ Unexpected or internal launch failures use fixed fallback messages rather than s
|
|
|
133
133
|
|
|
134
134
|
The repeatable Docker canary and every validation command are documented in [TESTING.md](TESTING.md). It covers discovery, modes, text, images, tools, MCP, permissions, steering, interruption, persistence, host-wide and scoped session listing, import, resume, subagents, Hub, usage, plugin RPCs, and conversation rewind.
|
|
135
135
|
|
|
136
|
-
Use `Deterministic Canary` for
|
|
136
|
+
Use `canary-mock/Deterministic Canary` for assertions. The optional local Ollama model is exploratory and nondeterministic.
|
|
137
137
|
|
|
138
138
|
## Support
|
|
139
139
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@omercnet/paseo-omp",
|
|
3
|
-
"version": "1.0.3
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Paseo integration for OMP, including its direct provider and workspace tooling.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -68,9 +68,9 @@
|
|
|
68
68
|
"@types/react": "^19.2.18",
|
|
69
69
|
"@vitest/coverage-v8": "^5.0.0",
|
|
70
70
|
"esbuild": "0.28.2",
|
|
71
|
-
"pino": "10.3.1",
|
|
72
71
|
"react": "19.1.0",
|
|
73
72
|
"react-native": "0.81.5",
|
|
73
|
+
"pino": "10.3.1",
|
|
74
74
|
"tsx": "^4.20.6",
|
|
75
75
|
"typescript": "^7.0.2",
|
|
76
76
|
"vitest": "^5.0.0",
|
|
@@ -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
|
|
2
|
+
export const PASEO_OMP_PACKAGE_VERSION = "1.0.3"; // x-release-please-version
|
|
@@ -109,7 +109,7 @@ export function mapOmpModels(
|
|
|
109
109
|
const name = model.name ? serializer.text(model.name, 256) : modelId;
|
|
110
110
|
return {
|
|
111
111
|
id,
|
|
112
|
-
label: name
|
|
112
|
+
label: `${provider}/${name}`,
|
|
113
113
|
description: `${provider}/${modelId}`,
|
|
114
114
|
...(typeof model.contextWindow === "number"
|
|
115
115
|
? { contextWindowMaxTokens: model.contextWindow }
|
|
@@ -2830,22 +2830,6 @@ export class OmpProviderSession {
|
|
|
2830
2830
|
turn.ambiguousTerminalTimer = undefined;
|
|
2831
2831
|
}
|
|
2832
2832
|
|
|
2833
|
-
private async cancelIndeterminateTerminal(
|
|
2834
|
-
turn: ActiveTurn,
|
|
2835
|
-
message: string,
|
|
2836
|
-
invalidateRuntime = false,
|
|
2837
|
-
): Promise<void> {
|
|
2838
|
-
this.recordOperationalFailure({ category: "terminal-outcome", stage: "unresolved" });
|
|
2839
|
-
this.projector.projectPassive({
|
|
2840
|
-
type: "notice",
|
|
2841
|
-
level: "warning",
|
|
2842
|
-
message: "OMP ended before its final response could be confirmed. Partial output was kept.",
|
|
2843
|
-
});
|
|
2844
|
-
if (invalidateRuntime) this.invalidateRuntime(message);
|
|
2845
|
-
this.subsessions?.terminalize("canceled");
|
|
2846
|
-
await this.finishTurn(turn, "canceled", undefined, true, true);
|
|
2847
|
-
}
|
|
2848
|
-
|
|
2849
2833
|
private async settleAmbiguousTerminal(
|
|
2850
2834
|
turn: ActiveTurn,
|
|
2851
2835
|
candidate: TerminalCandidate,
|
|
@@ -2864,19 +2848,16 @@ export class OmpProviderSession {
|
|
|
2864
2848
|
const state = await this.usage.boundedTerminalState(turn, FINAL_USAGE_WAIT_MS);
|
|
2865
2849
|
if (turn.terminal || this.activeTurn !== turn || turn.deferredAgentEnd !== candidate) return;
|
|
2866
2850
|
if (!state) {
|
|
2867
|
-
|
|
2868
|
-
|
|
2869
|
-
"OMP agent_end state could not be confirmed",
|
|
2870
|
-
true,
|
|
2871
|
-
);
|
|
2851
|
+
turn.operationalTerminalStage = "unresolved";
|
|
2852
|
+
this.handleRuntimeFailure("OMP agent_end state could not be confirmed");
|
|
2872
2853
|
return;
|
|
2873
2854
|
}
|
|
2874
2855
|
turn.deferredAgentEnd = undefined;
|
|
2875
2856
|
if (state.isStreaming || state.isCompacting) return;
|
|
2876
|
-
|
|
2877
|
-
|
|
2878
|
-
"OMP unkeyed agent_end could not be correlated to the current prompt",
|
|
2879
|
-
);
|
|
2857
|
+
turn.operationalTerminalStage = "unresolved";
|
|
2858
|
+
await this.finishTurn(turn, "failed", {
|
|
2859
|
+
message: "OMP unkeyed agent_end could not be correlated to the current prompt",
|
|
2860
|
+
});
|
|
2880
2861
|
}
|
|
2881
2862
|
|
|
2882
2863
|
private async completeLocalOnlyTurn(turn: ActiveTurn): Promise<void> {
|
|
@@ -2948,11 +2929,8 @@ export class OmpProviderSession {
|
|
|
2948
2929
|
) {
|
|
2949
2930
|
void this.completeAgentEnd(turn, candidate.event);
|
|
2950
2931
|
} else {
|
|
2951
|
-
|
|
2952
|
-
|
|
2953
|
-
"OMP agent_end state could not be confirmed",
|
|
2954
|
-
true,
|
|
2955
|
-
);
|
|
2932
|
+
turn.operationalTerminalStage = "unresolved";
|
|
2933
|
+
this.handleRuntimeFailure("OMP agent_end state could not be confirmed");
|
|
2956
2934
|
}
|
|
2957
2935
|
}, AGENT_END_SETTLE_MS);
|
|
2958
2936
|
this.finishFromAgentEnd(turn, candidate);
|
|
@@ -3065,11 +3043,8 @@ export class OmpProviderSession {
|
|
|
3065
3043
|
return;
|
|
3066
3044
|
}
|
|
3067
3045
|
if (turn.userEchoObserved) {
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
"OMP agent_end state could not be confirmed",
|
|
3071
|
-
true,
|
|
3072
|
-
);
|
|
3046
|
+
turn.operationalTerminalStage = "unresolved";
|
|
3047
|
+
this.handleRuntimeFailure("OMP agent_end state could not be confirmed");
|
|
3073
3048
|
return;
|
|
3074
3049
|
}
|
|
3075
3050
|
if (turn.agentEndRetryTimer === undefined) {
|
|
@@ -1099,16 +1099,13 @@ export class OmpTimelineProjector {
|
|
|
1099
1099
|
for (const contentIndex of indexes) {
|
|
1100
1100
|
const block = stream.blocks.get(contentIndex);
|
|
1101
1101
|
if (!block) continue;
|
|
1102
|
-
|
|
1102
|
+
const publicText =
|
|
1103
1103
|
block.kind === "image"
|
|
1104
1104
|
? block.text
|
|
1105
1105
|
: truncateUtf8(
|
|
1106
1106
|
this.dataFilter.text(block.text, MAX_REDACTED_STREAM_TEXT_LENGTH),
|
|
1107
1107
|
remainingTextBytes,
|
|
1108
1108
|
);
|
|
1109
|
-
if (block.kind === "assistant_message") {
|
|
1110
|
-
publicText = publicText.replace(/\n*\[System Error\] Provider connection closed\s*$/, "");
|
|
1111
|
-
}
|
|
1112
1109
|
if (block.kind !== "image") {
|
|
1113
1110
|
remainingTextBytes = Math.max(0, remainingTextBytes - utf8Bytes(publicText));
|
|
1114
1111
|
}
|