@a1hvdy/cc-openclaw 0.17.0 → 0.18.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 +0 -14
- package/dist/src/channels/telegram/completion-summary.js +24 -2
- package/dist/src/channels/telegram/completion-summary.js.map +1 -1
- package/dist/src/channels/telegram/event-reducer.js +15 -3
- package/dist/src/channels/telegram/event-reducer.js.map +1 -1
- package/dist/src/channels/telegram/live-card.d.ts +90 -7
- package/dist/src/channels/telegram/live-card.js +286 -25
- package/dist/src/channels/telegram/live-card.js.map +1 -1
- package/dist/src/channels/telegram/tool-tracker.d.ts +16 -2
- package/dist/src/channels/telegram/tool-tracker.js +81 -18
- package/dist/src/channels/telegram/tool-tracker.js.map +1 -1
- package/dist/src/config/loader.js +2 -0
- package/dist/src/config/loader.js.map +1 -1
- package/dist/src/config/schema.d.ts +20 -1
- package/dist/src/config/schema.js +12 -1
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/constants.d.ts +13 -1
- package/dist/src/constants.js +13 -1
- package/dist/src/constants.js.map +1 -1
- package/dist/src/engines/index.d.ts +0 -2
- package/dist/src/engines/index.js +0 -3
- package/dist/src/engines/index.js.map +1 -1
- package/dist/src/engines/persistent-session.d.ts +0 -9
- package/dist/src/engines/persistent-session.js +0 -39
- package/dist/src/engines/persistent-session.js.map +1 -1
- package/dist/src/lib/config.d.ts +6 -0
- package/dist/src/lib/config.js +81 -0
- package/dist/src/lib/config.js.map +1 -1
- package/dist/src/lib/sysprompt-strip.d.ts +14 -0
- package/dist/src/lib/sysprompt-strip.js +79 -2
- package/dist/src/lib/sysprompt-strip.js.map +1 -1
- package/dist/src/lib/trajectory.d.ts +1 -10
- package/dist/src/lib/trajectory.js +6 -37
- package/dist/src/lib/trajectory.js.map +1 -1
- package/dist/src/lib/turn-trace.d.ts +34 -0
- package/dist/src/lib/turn-trace.js +75 -0
- package/dist/src/lib/turn-trace.js.map +1 -0
- package/dist/src/observability/event-bus.d.ts +0 -21
- package/dist/src/observability/event-bus.js.map +1 -1
- package/dist/src/openai-compat/insight-format.d.ts +36 -0
- package/dist/src/openai-compat/insight-format.js +140 -0
- package/dist/src/openai-compat/insight-format.js.map +1 -0
- package/dist/src/openai-compat/non-streaming-handler.js +38 -58
- package/dist/src/openai-compat/non-streaming-handler.js.map +1 -1
- package/dist/src/openai-compat/openai-compat.js +23 -0
- package/dist/src/openai-compat/openai-compat.js.map +1 -1
- package/dist/src/openai-compat/response-formatter.d.ts +6 -1
- package/dist/src/openai-compat/response-formatter.js +9 -2
- package/dist/src/openai-compat/response-formatter.js.map +1 -1
- package/dist/src/openai-compat/streaming-handler.js +35 -120
- package/dist/src/openai-compat/streaming-handler.js.map +1 -1
- package/dist/src/patches/cache-parity-registry.d.ts +0 -83
- package/dist/src/patches/cache-parity-registry.js +1 -151
- package/dist/src/patches/cache-parity-registry.js.map +1 -1
- package/dist/src/session/session-manager.d.ts +8 -4
- package/dist/src/session/session-manager.js +86 -76
- package/dist/src/session/session-manager.js.map +1 -1
- package/dist/src/session-bootstrap/cwd-patch.js +35 -0
- package/dist/src/session-bootstrap/cwd-patch.js.map +1 -1
- package/mcp-tools.json +1 -1
- package/package.json +1 -1
- package/dist/src/engines/heartbeat-guard.d.ts +0 -91
- package/dist/src/engines/heartbeat-guard.js +0 -120
- package/dist/src/engines/heartbeat-guard.js.map +0 -1
- package/dist/src/engines/subprocess-pool.d.ts +0 -78
- package/dist/src/engines/subprocess-pool.js +0 -200
- package/dist/src/engines/subprocess-pool.js.map +0 -1
- package/dist/src/lib/cost-rollup.d.ts +0 -36
- package/dist/src/lib/cost-rollup.js +0 -125
- package/dist/src/lib/cost-rollup.js.map +0 -1
- package/dist/src/lifecycle/safe-restart.d.ts +0 -99
- package/dist/src/lifecycle/safe-restart.js +0 -132
- package/dist/src/lifecycle/safe-restart.js.map +0 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// phase: v0.15.0 | pillar: Observability | agent: Primary
|
|
2
|
+
/**
|
|
3
|
+
* turn-trace — per-session disk sink for cc-openclaw trajectory events.
|
|
4
|
+
*
|
|
5
|
+
* Mirrors every `trajectory.emit()` call into a per-session JSONL file at
|
|
6
|
+
* `~/.openclaw/workspace/debug/turn-trace/<sessionId>.jsonl`. The global
|
|
7
|
+
* trajectory log keeps working as before; this sink adds shardable output
|
|
8
|
+
* for debugging "what did session X actually see and emit".
|
|
9
|
+
*
|
|
10
|
+
* Motivation: v0.14.0's NO_REPLY 4-layer defense interacted badly with
|
|
11
|
+
* short questions, producing greeting-only output ("Hey A1.") that looked
|
|
12
|
+
* just as broken as silence. A1 needs ground-truth to tune the classifier
|
|
13
|
+
* without guessing — this sink captures the data.
|
|
14
|
+
*
|
|
15
|
+
* Default OFF — set OPENCLAW_TURN_TRACE=1 in env to opt in. Independent
|
|
16
|
+
* from CC_OPENCLAW_TRAJECTORY (the global sink); either, both, or neither
|
|
17
|
+
* can run.
|
|
18
|
+
*
|
|
19
|
+
* v0.15.0 ships per-session sharding (one file per sessionId lifecycle).
|
|
20
|
+
* v0.15.1 will switch to per-turn sharding once a turnId is threaded
|
|
21
|
+
* through the request_in → response_complete event chain.
|
|
22
|
+
*/
|
|
23
|
+
import { appendFileSync, mkdirSync } from 'node:fs';
|
|
24
|
+
import { join } from 'node:path';
|
|
25
|
+
import { homedir } from 'node:os';
|
|
26
|
+
// ─── Config ──────────────────────────────────────────────────────────────────
|
|
27
|
+
const DEFAULT_DIR = join(homedir(), '.openclaw', 'workspace', 'debug', 'turn-trace');
|
|
28
|
+
function isEnabled() {
|
|
29
|
+
const v = process.env.OPENCLAW_TURN_TRACE;
|
|
30
|
+
if (!v)
|
|
31
|
+
return false;
|
|
32
|
+
return v === '1' || v.toLowerCase() === 'true' || v.toLowerCase() === 'on';
|
|
33
|
+
}
|
|
34
|
+
function getDir() {
|
|
35
|
+
return process.env.OPENCLAW_TURN_TRACE_DIR || DEFAULT_DIR;
|
|
36
|
+
}
|
|
37
|
+
// ─── Sink ────────────────────────────────────────────────────────────────────
|
|
38
|
+
let _ensuredDir = false;
|
|
39
|
+
/**
|
|
40
|
+
* Append a trajectory event to the per-session JSONL file. No-op if disabled
|
|
41
|
+
* or if the event has no sessionId (can't shard without a key).
|
|
42
|
+
*
|
|
43
|
+
* Writes are sync (matches trajectory.emit semantics — preserves ordering).
|
|
44
|
+
* File-system errors are swallowed: observability must never break prod.
|
|
45
|
+
*/
|
|
46
|
+
export function capture(event) {
|
|
47
|
+
if (!isEnabled())
|
|
48
|
+
return;
|
|
49
|
+
if (!event.sessionId)
|
|
50
|
+
return;
|
|
51
|
+
try {
|
|
52
|
+
const dir = getDir();
|
|
53
|
+
if (!_ensuredDir) {
|
|
54
|
+
mkdirSync(dir, { recursive: true });
|
|
55
|
+
_ensuredDir = true;
|
|
56
|
+
}
|
|
57
|
+
const safeKey = event.sessionId.replace(/[^a-zA-Z0-9_.-]/g, '_');
|
|
58
|
+
const path = join(dir, `${safeKey}.jsonl`);
|
|
59
|
+
appendFileSync(path, JSON.stringify(event) + '\n', 'utf8');
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// observability — never break production
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// ─── Test helpers ────────────────────────────────────────────────────────────
|
|
66
|
+
/** Reset module state for tests (re-creates dir on next capture). */
|
|
67
|
+
export function _resetForTests() {
|
|
68
|
+
_ensuredDir = false;
|
|
69
|
+
}
|
|
70
|
+
/** Compute the on-disk path a given sessionId would resolve to. Test-only. */
|
|
71
|
+
export function _pathForSession(sessionId) {
|
|
72
|
+
const safeKey = sessionId.replace(/[^a-zA-Z0-9_.-]/g, '_');
|
|
73
|
+
return join(getDir(), `${safeKey}.jsonl`);
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=turn-trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-trace.js","sourceRoot":"","sources":["../../../src/lib/turn-trace.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAW,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGlC,gFAAgF;AAEhF,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AAErF,SAAS,SAAS;IAChB,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC1C,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC;AAC7E,CAAC;AAED,SAAS,MAAM;IACb,OAAO,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,WAAW,CAAC;AAC5D,CAAC;AAED,gFAAgF;AAEhF,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,KAAsB;IAC5C,IAAI,CAAC,SAAS,EAAE;QAAE,OAAO;IACzB,IAAI,CAAC,KAAK,CAAC,SAAS;QAAE,OAAO;IAE7B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpC,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,QAAQ,CAAC,CAAC;QAC3C,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,yCAAyC;IAC3C,CAAC;AACH,CAAC;AAED,gFAAgF;AAEhF,qEAAqE;AACrE,MAAM,UAAU,cAAc;IAC5B,WAAW,GAAG,KAAK,CAAC;AACtB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAC3D,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,QAAQ,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -35,16 +35,6 @@ export type EventMap = {
|
|
|
35
35
|
name: SessionName;
|
|
36
36
|
tokens: number;
|
|
37
37
|
};
|
|
38
|
-
/**
|
|
39
|
-
* Emitted when a session subprocess closes outside an explicit stop() —
|
|
40
|
-
* v0.14.1 root-cause observability for the stale-session class of bugs.
|
|
41
|
-
* `code` is the OS exit code (null when killed by signal). The reaper in
|
|
42
|
-
* SessionManager.sendMessage restarts the subprocess on the next turn.
|
|
43
|
-
*/
|
|
44
|
-
'session.died': {
|
|
45
|
-
name: SessionName;
|
|
46
|
-
code: number | null;
|
|
47
|
-
};
|
|
48
38
|
/** Emitted on every tool_use event within a session turn. */
|
|
49
39
|
'session.tool-use': {
|
|
50
40
|
name: SessionName;
|
|
@@ -65,17 +55,6 @@ export type EventMap = {
|
|
|
65
55
|
'boot.ready': {
|
|
66
56
|
config: Config;
|
|
67
57
|
};
|
|
68
|
-
/**
|
|
69
|
-
* Emitted by cache-parity-registry when a namespace mismatch is detected
|
|
70
|
-
* and automatically self-recovered (task-005, v0.16).
|
|
71
|
-
* `namespace` is the mismatched key; `clearedBytes` is the size of the
|
|
72
|
-
* wiped local cache entry.
|
|
73
|
-
*/
|
|
74
|
-
'cache-parity.namespace-mismatch-recovered': {
|
|
75
|
-
namespace: string;
|
|
76
|
-
clearedBytes: number;
|
|
77
|
-
restartCycle: number;
|
|
78
|
-
};
|
|
79
58
|
};
|
|
80
59
|
type Listener<K extends keyof EventMap> = (payload: EventMap[K]) => void;
|
|
81
60
|
export declare class EventBus {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../src/observability/event-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,iFAAiF;AAEjF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"event-bus.js","sourceRoot":"","sources":["../../../src/observability/event-bus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,iFAAiF;AAEjF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,GAAY,CAAC;AA6BvD,iFAAiF;AAEjF,MAAM,OAAO,QAAQ;IACF,SAAS,GAAG,IAAI,GAAG,EAAiD,CAAC;IAEtF;;;OAGG;IACH,EAAE,CAA2B,KAAQ,EAAE,QAAqB;QAC1D,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,wEAAwE;QACvE,GAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExC,OAAO,GAAG,EAAE;YACT,GAAwB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,IAAI,CAA2B,KAAQ,EAAE,OAAoB;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG;YAAE,OAAO;QACjB,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE,CAAC;YAC1B,QAAwB,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,wDAAwD;IACxD,IAAI,aAAa;QACf,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1C,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC;QACpB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Insight + greeting filters applied to model output before it's emitted to
|
|
3
|
+
* the OpenAI-compat client. Three pure transforms, gated by env flags:
|
|
4
|
+
*
|
|
5
|
+
* 1. `stripEmptyInsights` — v0.14.0. Removes ★ Insight ─ blocks that are
|
|
6
|
+
* empty, filler ("memory loaded"), or oversized. Server-side backstop
|
|
7
|
+
* for SOUL.md NO_EMPTY_INSIGHT.
|
|
8
|
+
*
|
|
9
|
+
* 2. `stripGreeting` — v0.18 Slice 1 / Track A3. Strips opener lines like
|
|
10
|
+
* "Hey A1.", "Hi A1,", "Sure thing A1 —" from the very start of an
|
|
11
|
+
* assistant message. Belt-and-suspenders for SOUL.md NO_GREET.
|
|
12
|
+
* Telemetry event: `no_greet_strip`.
|
|
13
|
+
*
|
|
14
|
+
* 3. `normalizeInsightFences` — v0.17 F2. Rewrites long U+2500 fences
|
|
15
|
+
* to exactly 3 chars so mobile Telegram doesn't wrap the divider.
|
|
16
|
+
*
|
|
17
|
+
* Pure transforms — no I/O. `stripEmptyInsights` and `stripGreeting`
|
|
18
|
+
* emit trajectory events when they remove content, but trajectory is
|
|
19
|
+
* append-only and observability-only.
|
|
20
|
+
*
|
|
21
|
+
* Apply order: strip empty → strip greeting → normalize fences. Empty
|
|
22
|
+
* blocks must be removed before fence normalization so the normalized
|
|
23
|
+
* block doesn't tempt the next emit pass to keep it.
|
|
24
|
+
*/
|
|
25
|
+
export declare function stripEmptyInsights(text: string, sessionId: string): string;
|
|
26
|
+
export declare function stripGreeting(text: string, sessionId: string): string;
|
|
27
|
+
export declare function isInsightNormalizeEnabled(): boolean;
|
|
28
|
+
export declare function normalizeInsightFences(text: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* Apply all three filters in the canonical order:
|
|
31
|
+
* strip empty insights → strip greeting → normalize fences.
|
|
32
|
+
*
|
|
33
|
+
* Call this at every emit site instead of stitching the three calls by
|
|
34
|
+
* hand. Single source of truth for the order.
|
|
35
|
+
*/
|
|
36
|
+
export declare function applyInsightAndGreetingFilters(text: string, sessionId: string): string;
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Insight + greeting filters applied to model output before it's emitted to
|
|
3
|
+
* the OpenAI-compat client. Three pure transforms, gated by env flags:
|
|
4
|
+
*
|
|
5
|
+
* 1. `stripEmptyInsights` — v0.14.0. Removes ★ Insight ─ blocks that are
|
|
6
|
+
* empty, filler ("memory loaded"), or oversized. Server-side backstop
|
|
7
|
+
* for SOUL.md NO_EMPTY_INSIGHT.
|
|
8
|
+
*
|
|
9
|
+
* 2. `stripGreeting` — v0.18 Slice 1 / Track A3. Strips opener lines like
|
|
10
|
+
* "Hey A1.", "Hi A1,", "Sure thing A1 —" from the very start of an
|
|
11
|
+
* assistant message. Belt-and-suspenders for SOUL.md NO_GREET.
|
|
12
|
+
* Telemetry event: `no_greet_strip`.
|
|
13
|
+
*
|
|
14
|
+
* 3. `normalizeInsightFences` — v0.17 F2. Rewrites long U+2500 fences
|
|
15
|
+
* to exactly 3 chars so mobile Telegram doesn't wrap the divider.
|
|
16
|
+
*
|
|
17
|
+
* Pure transforms — no I/O. `stripEmptyInsights` and `stripGreeting`
|
|
18
|
+
* emit trajectory events when they remove content, but trajectory is
|
|
19
|
+
* append-only and observability-only.
|
|
20
|
+
*
|
|
21
|
+
* Apply order: strip empty → strip greeting → normalize fences. Empty
|
|
22
|
+
* blocks must be removed before fence normalization so the normalized
|
|
23
|
+
* block doesn't tempt the next emit pass to keep it.
|
|
24
|
+
*/
|
|
25
|
+
import { emit as emitTrajectory } from '../lib/trajectory.js';
|
|
26
|
+
// ─── Empty-insight stripper ───────────────────────────────────────────────────
|
|
27
|
+
// v0.18 Slice 1: use `[ \t]*` (horizontal whitespace) instead of `\s*`
|
|
28
|
+
// around the opening and closing fence newlines. The original v0.14.0
|
|
29
|
+
// regex used `\s*` which crosses newlines, causing an empty insight
|
|
30
|
+
// followed by another insight (Hey A1 → empty insight → substantive
|
|
31
|
+
// insight) to swallow BOTH blocks as one huge non-greedy match instead
|
|
32
|
+
// of stripping the empty one and keeping the substantive one. Switching
|
|
33
|
+
// to horizontal-only whitespace anchors each fence to its own line.
|
|
34
|
+
const INSIGHT_BLOCK_RE = /★\s*Insight\s*[─\-]{3,}[ \t]*\n([\s\S]*?)\n[ \t]*[─\-]{3,}/g;
|
|
35
|
+
const INSIGHT_FILLER_RE = /^(memory loaded|session active|ready|loading|done)\.?$/i;
|
|
36
|
+
export function stripEmptyInsights(text, sessionId) {
|
|
37
|
+
if (!text || text.indexOf('★') === -1)
|
|
38
|
+
return text;
|
|
39
|
+
let stripped = false;
|
|
40
|
+
let reason = '';
|
|
41
|
+
let result = text.replace(INSIGHT_BLOCK_RE, (match, inner) => {
|
|
42
|
+
const innerTrimmed = (inner ?? '').trim();
|
|
43
|
+
let shouldStrip = false;
|
|
44
|
+
if (innerTrimmed.length < 20) {
|
|
45
|
+
shouldStrip = true;
|
|
46
|
+
reason = 'empty-or-short';
|
|
47
|
+
}
|
|
48
|
+
else if (INSIGHT_FILLER_RE.test(innerTrimmed)) {
|
|
49
|
+
shouldStrip = true;
|
|
50
|
+
reason = 'filler-phrase';
|
|
51
|
+
}
|
|
52
|
+
else if (match.length > 600) {
|
|
53
|
+
shouldStrip = true;
|
|
54
|
+
reason = 'oversized';
|
|
55
|
+
}
|
|
56
|
+
if (shouldStrip) {
|
|
57
|
+
stripped = true;
|
|
58
|
+
return '';
|
|
59
|
+
}
|
|
60
|
+
return match;
|
|
61
|
+
});
|
|
62
|
+
if (stripped) {
|
|
63
|
+
result = result.replace(/\n{3,}/g, '\n\n').trim();
|
|
64
|
+
try {
|
|
65
|
+
emitTrajectory('insight_strip', { event: 'insight-strip', reason, lenIn: text.length, lenOut: result.length }, sessionId);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
// Trajectory is observability — must never break production
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
// ─── NO_GREET stripper (Track A3) ─────────────────────────────────────────────
|
|
74
|
+
/**
|
|
75
|
+
* Match a greeting opener at the very start of the message. Examples:
|
|
76
|
+
* "Hey A1.\n..."
|
|
77
|
+
* "Hi A1,"
|
|
78
|
+
* "Sure, A1 — ..."
|
|
79
|
+
* "Hey there A1!"
|
|
80
|
+
* "Hello A1: ..."
|
|
81
|
+
*
|
|
82
|
+
* The pattern requires the greeting word + an optional separator + the
|
|
83
|
+
* literal token "A1" + a small trailing punctuation/whitespace set. It
|
|
84
|
+
* is anchored to the message start (`^`) with `s` flag DISABLED so that
|
|
85
|
+
* "A1" mid-paragraph is never matched (we only strip the opener line).
|
|
86
|
+
*
|
|
87
|
+
* The trailing `(?:\n+|\s*—\s*|\s*-\s*)` swallows the line-break (or
|
|
88
|
+
* em-dash continuation) that joined the greeting to the substantive
|
|
89
|
+
* reply, so the cleaned text starts at the real content.
|
|
90
|
+
*/
|
|
91
|
+
const GREETING_RE = /^(?:Hey there|Hey|Hi there|Hi|Hello|Sure thing|Sure|Of course|Okay|OK)[,!:.\s]+A1\b[.,!:]?(?:\n+|\s*—\s*|\s*-\s*)/i;
|
|
92
|
+
export function stripGreeting(text, sessionId) {
|
|
93
|
+
if (!text)
|
|
94
|
+
return text;
|
|
95
|
+
const match = text.match(GREETING_RE);
|
|
96
|
+
if (!match)
|
|
97
|
+
return text;
|
|
98
|
+
const result = text.slice(match[0].length).replace(/^\s+/, '');
|
|
99
|
+
try {
|
|
100
|
+
emitTrajectory('no_greet_strip', { matched: match[0].slice(0, 80), lenIn: text.length, lenOut: result.length }, sessionId);
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Trajectory is observability — must never break production
|
|
104
|
+
}
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
// ─── Insight fence normalization (v0.17 F2, unchanged) ───────────────────────
|
|
108
|
+
/** Short fence used in normalized output. 3 chars satisfies the
|
|
109
|
+
* extractor regex `[─—\-]{3,}` and avoids the wrap-to-`<hr>` glitch. */
|
|
110
|
+
const SHORT_FENCE = '───';
|
|
111
|
+
const INSIGHT_FENCE_RE = /(★\s*Insight\s*)[─—\-]{3,}([ \t]*\r?\n[\s\S]*?\r?\n[ \t]*)[─—\-]{3,}([ \t]*)$/gm;
|
|
112
|
+
export function isInsightNormalizeEnabled() {
|
|
113
|
+
return process.env.CC_OPENCLAW_INSIGHT_NORMALIZE !== '0';
|
|
114
|
+
}
|
|
115
|
+
export function normalizeInsightFences(text) {
|
|
116
|
+
if (!text)
|
|
117
|
+
return text;
|
|
118
|
+
if (!isInsightNormalizeEnabled())
|
|
119
|
+
return text;
|
|
120
|
+
if (text.indexOf('★') === -1)
|
|
121
|
+
return text;
|
|
122
|
+
return text.replace(INSIGHT_FENCE_RE, (_match, header, body, trailing) => `${header}${SHORT_FENCE}${body}${SHORT_FENCE}${trailing}`);
|
|
123
|
+
}
|
|
124
|
+
// ─── Composite filter ─────────────────────────────────────────────────────────
|
|
125
|
+
/**
|
|
126
|
+
* Apply all three filters in the canonical order:
|
|
127
|
+
* strip empty insights → strip greeting → normalize fences.
|
|
128
|
+
*
|
|
129
|
+
* Call this at every emit site instead of stitching the three calls by
|
|
130
|
+
* hand. Single source of truth for the order.
|
|
131
|
+
*/
|
|
132
|
+
export function applyInsightAndGreetingFilters(text, sessionId) {
|
|
133
|
+
if (!text)
|
|
134
|
+
return text;
|
|
135
|
+
let out = stripEmptyInsights(text, sessionId);
|
|
136
|
+
out = stripGreeting(out, sessionId);
|
|
137
|
+
out = normalizeInsightFences(out);
|
|
138
|
+
return out;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=insight-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insight-format.js","sourceRoot":"","sources":["../../../src/openai-compat/insight-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,10 +23,14 @@
|
|
|
23
23
|
import { reportStatus, getToolDescription } from './status-reporter.js';
|
|
24
24
|
import { parseToolCallsFromText } from './tool-calls-parser.js';
|
|
25
25
|
import { formatCompletionResponse } from './response-formatter.js';
|
|
26
|
-
import { getSurfaceThinkingEnabled, getTtsAutoMode } from '../lib/config.js';
|
|
27
|
-
import { emit as emitTrajectory
|
|
26
|
+
import { getSurfaceThinkingEnabled, getTtsAutoMode, isDoneBackstopEnabled } from '../lib/config.js';
|
|
27
|
+
import { emit as emitTrajectory } from '../lib/trajectory.js';
|
|
28
28
|
import { formatError, ERROR_CODES } from '../lib/error-formatter.js';
|
|
29
29
|
import { applyVoiceRecovery, _logVoiceDebug, detectVoiceIntent, hasTtsMarkers } from './voice-recovery.js';
|
|
30
|
+
import { applyInsightAndGreetingFilters } from './insight-format.js';
|
|
31
|
+
// v0.14.0 _stripEmptyInsights and v0.17 normalizeInsightFences were
|
|
32
|
+
// consolidated into `applyInsightAndGreetingFilters` in insight-format.ts
|
|
33
|
+
// as of v0.18 Slice 1. See that module for canonical order + telemetry.
|
|
30
34
|
/** Coerce a userMessage (string | UserMessageBlock[]) to a flat string
|
|
31
35
|
* for voice-intent detection. Tool-result blocks aren't user prompts. */
|
|
32
36
|
function userMessageToText(msg) {
|
|
@@ -47,11 +51,6 @@ function userMessageToText(msg) {
|
|
|
47
51
|
export async function handleNonStreaming(manager, sessionName, model,
|
|
48
52
|
// Phase 2 R4 wire-up: accepts native content-block arrays in tool-stream mode.
|
|
49
53
|
userMessage, completionId, res, hasTools) {
|
|
50
|
-
// v0.14.0 turn-trace probe: capture wall-clock duration of the turn.
|
|
51
|
-
const turnStartMs = Date.now();
|
|
52
|
-
// v0.15.0 Slice 1: hoist userText so the catch-path probe emit can reference
|
|
53
|
-
// it (originally declared inside try at line ~133, post-recovery-pipeline).
|
|
54
|
-
const probeUserText = userMessageToText(userMessage);
|
|
55
54
|
try {
|
|
56
55
|
reportStatus('thinking', 'Processing request...');
|
|
57
56
|
// v0.7.1: accumulate thinking-block content when surfaceThinking is on.
|
|
@@ -138,41 +137,48 @@ userMessage, completionId, res, hasTools) {
|
|
|
138
137
|
emitTrajectory('tool_use', { name: '_voice_recovery', inputKeys: [recovery.via] }, sessionName);
|
|
139
138
|
}
|
|
140
139
|
}
|
|
140
|
+
// v0.18 Slice 1 — composite filter: strip empty insights →
|
|
141
|
+
// strip greeting opener → normalize fence runs.
|
|
142
|
+
// Env opt-outs (per filter): CC_OPENCLAW_INSIGHT_NORMALIZE=0
|
|
143
|
+
// (fence normalization). The strip-empty and strip-greeting
|
|
144
|
+
// passes are always on; they emit telemetry but never trim
|
|
145
|
+
// content that doesn't match the strict regex.
|
|
146
|
+
outputText = applyInsightAndGreetingFilters(outputText, sessionName);
|
|
147
|
+
// v0.17.0: trajectory emission for the "Done." backstop condition
|
|
148
|
+
// — fires when text is empty AND no tool_calls exist (i.e. the
|
|
149
|
+
// formatter would have inserted "Done."). See plan F1+F6. Emitted
|
|
150
|
+
// whether the backstop is enabled or suppressed so the rate can be
|
|
151
|
+
// measured independently. Helper inlined to avoid carrying state
|
|
152
|
+
// out of the branches below.
|
|
153
|
+
const backstopEnabled = isDoneBackstopEnabled();
|
|
154
|
+
const emitBackstopTrace = (toolCallsCount, finalText) => {
|
|
155
|
+
const wouldFire = finalText.length === 0 && toolCallsCount === 0;
|
|
156
|
+
if (!wouldFire)
|
|
157
|
+
return;
|
|
158
|
+
emitTrajectory('false_done_backstop', {
|
|
159
|
+
path: 'non-streaming',
|
|
160
|
+
suppressed: !backstopEnabled,
|
|
161
|
+
model,
|
|
162
|
+
toolCallsEmitted: toolCallsCount,
|
|
163
|
+
bufferedLen: finalText.length,
|
|
164
|
+
hasTools,
|
|
165
|
+
}, sessionName);
|
|
166
|
+
};
|
|
141
167
|
// Parse tool_calls from response text when caller provided tools
|
|
142
|
-
let traceToolCount = 0;
|
|
143
|
-
let traceFinishReason = 'stop';
|
|
144
|
-
let traceFinalText = '';
|
|
145
168
|
if (hasTools) {
|
|
146
169
|
const parsed = parseToolCallsFromText(outputText);
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
const response = formatCompletionResponse(completionId, model, traceFinalText, tokensIn, tokensOut, traceToolCount > 0 ? parsed.toolCalls : undefined, surfaceThinking ? thinkingBuffer : undefined);
|
|
170
|
+
const parsedText = parsed.textContent ?? '';
|
|
171
|
+
emitBackstopTrace(parsed.toolCalls.length, parsedText);
|
|
172
|
+
const response = formatCompletionResponse(completionId, model, parsedText, tokensIn, tokensOut, parsed.toolCalls.length > 0 ? parsed.toolCalls : undefined, surfaceThinking ? thinkingBuffer : undefined, backstopEnabled);
|
|
151
173
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
152
174
|
res.end(JSON.stringify(response));
|
|
153
175
|
}
|
|
154
176
|
else {
|
|
155
|
-
|
|
156
|
-
const response = formatCompletionResponse(completionId, model, outputText, tokensIn, tokensOut, undefined, surfaceThinking ? thinkingBuffer : undefined);
|
|
177
|
+
emitBackstopTrace(0, outputText);
|
|
178
|
+
const response = formatCompletionResponse(completionId, model, outputText, tokensIn, tokensOut, undefined, surfaceThinking ? thinkingBuffer : undefined, backstopEnabled);
|
|
157
179
|
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
158
180
|
res.end(JSON.stringify(response));
|
|
159
181
|
}
|
|
160
|
-
// v0.14.0 turn-trace probe: emit per-turn diagnostic. No-op unless
|
|
161
|
-
// CC_OPENCLAW_TURN_TRACE=1 (or CC_OPENCLAW_TRAJECTORY=1) is set.
|
|
162
|
-
emitTurnTrace({
|
|
163
|
-
path: 'non-streaming',
|
|
164
|
-
model,
|
|
165
|
-
userTextPreview: userText.slice(0, 500),
|
|
166
|
-
userTextLen: userText.length,
|
|
167
|
-
hasTools,
|
|
168
|
-
toolCallCount: traceToolCount,
|
|
169
|
-
outputTextPreview: traceFinalText.slice(0, 500),
|
|
170
|
-
outputTextLen: traceFinalText.length,
|
|
171
|
-
finishReason: traceFinishReason,
|
|
172
|
-
tokensIn,
|
|
173
|
-
tokensOut,
|
|
174
|
-
durationMs: Date.now() - turnStartMs,
|
|
175
|
-
}, sessionName);
|
|
176
182
|
}
|
|
177
183
|
catch (err) {
|
|
178
184
|
reportStatus('idle', 'Request failed');
|
|
@@ -180,32 +186,6 @@ userMessage, completionId, res, hasTools) {
|
|
|
180
186
|
formatError(err, { code: ERROR_CODES.SESSION_ERROR, sessionId: sessionName, details: { phase: 'handleNonStreaming' } });
|
|
181
187
|
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
182
188
|
res.end(JSON.stringify({ error: { message: err.message, type: 'server_error' } }));
|
|
183
|
-
// v0.15.0 Slice 1: turn-trace probe on the error-exit path. Same
|
|
184
|
-
// rationale as streaming-handler — without this, error turns vanish
|
|
185
|
-
// from the trajectory and we can't diagnose greeting-only / broken
|
|
186
|
-
// turns that exit via session-crash or timeout. tokensIn/Out and
|
|
187
|
-
// outputText are zeroed because the request never produced a body.
|
|
188
|
-
try {
|
|
189
|
-
emitTurnTrace({
|
|
190
|
-
path: 'non-streaming',
|
|
191
|
-
model,
|
|
192
|
-
userTextPreview: probeUserText.slice(0, 500),
|
|
193
|
-
userTextLen: probeUserText.length,
|
|
194
|
-
hasTools,
|
|
195
|
-
toolCallCount: 0,
|
|
196
|
-
outputTextPreview: '',
|
|
197
|
-
outputTextLen: 0,
|
|
198
|
-
finishReason: 'error',
|
|
199
|
-
tokensIn: 0,
|
|
200
|
-
tokensOut: 0,
|
|
201
|
-
durationMs: Date.now() - turnStartMs,
|
|
202
|
-
errorMessage: err.message,
|
|
203
|
-
errorName: err.name,
|
|
204
|
-
}, sessionName);
|
|
205
|
-
}
|
|
206
|
-
catch {
|
|
207
|
-
/* Probe must never throw inside catch. */
|
|
208
|
-
}
|
|
209
189
|
}
|
|
210
190
|
}
|
|
211
191
|
//# sourceMappingURL=non-streaming-handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"non-streaming-handler.js","sourceRoot":"","sources":["../../../src/openai-compat/non-streaming-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"non-streaming-handler.js","sourceRoot":"","sources":["../../../src/openai-compat/non-streaming-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -155,6 +155,29 @@ export async function handleChatCompletion(manager, body, headers, res) {
|
|
|
155
155
|
res.end(JSON.stringify({ error: { message: err.message, type: 'invalid_request_error' } }));
|
|
156
156
|
return;
|
|
157
157
|
}
|
|
158
|
+
// v0.14.0 — pre-flight checklist trace. Emitted unconditionally (trajectory
|
|
159
|
+
// gated internally). Token estimate: rough 4 chars/token from system + user msgs.
|
|
160
|
+
try {
|
|
161
|
+
const syspromptText = extracted.systemPrompt ?? '';
|
|
162
|
+
const userText = typeof extracted.userMessage === 'string'
|
|
163
|
+
? extracted.userMessage
|
|
164
|
+
: JSON.stringify(extracted.userMessage);
|
|
165
|
+
const promptTokensEstimate = Math.ceil((syspromptText.length + userText.length) / 4);
|
|
166
|
+
const memoryChecked = syspromptText.includes('MEMORY.md') || syspromptText.includes('## Memory');
|
|
167
|
+
const syspromptValidated = syspromptText.length > 0;
|
|
168
|
+
const expectedLatencyUnderBudget = promptTokensEstimate < 50_000;
|
|
169
|
+
emitTrajectory('turn_preflight', {
|
|
170
|
+
turnId: randomUUID(),
|
|
171
|
+
memory_checked: memoryChecked,
|
|
172
|
+
sysprompt_validated: syspromptValidated,
|
|
173
|
+
expected_latency_under_budget: expectedLatencyUnderBudget,
|
|
174
|
+
promptTokensEstimate,
|
|
175
|
+
model: resolvedModel,
|
|
176
|
+
}, sessionName);
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
// Preflight trace is observability — must never block the turn
|
|
180
|
+
}
|
|
158
181
|
// Check if session exists
|
|
159
182
|
const existingSessions = manager.listSessions().map((s) => s.name);
|
|
160
183
|
const sessionExists = existingSessions.includes(sessionName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-compat.js","sourceRoot":"","sources":["../../../src/openai-compat/openai-compat.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openai-compat.js","sourceRoot":"","sources":["../../../src/openai-compat/openai-compat.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,7 +26,12 @@ export declare function formatCompletionResponse(id: string, model: string, text
|
|
|
26
26
|
* (mirrors OpenAI o1/o3 schema). Caller must already be gated on
|
|
27
27
|
* `getSurfaceThinkingEnabled()` from `lib/config.ts` — this function does
|
|
28
28
|
* not re-check the flag. Pass empty string or undefined to omit. */
|
|
29
|
-
reasoning?: string
|
|
29
|
+
reasoning?: string,
|
|
30
|
+
/** v0.17.0: when false, suppress the empty-text "Done." backstop and
|
|
31
|
+
* return an empty string instead. Caller is responsible for the
|
|
32
|
+
* `isDoneBackstopEnabled()` check and for the trajectory event.
|
|
33
|
+
* Defaults true for backcompat with the 12+ existing call sites. */
|
|
34
|
+
backstopEnabled?: boolean): OpenAIChatCompletionResponse;
|
|
30
35
|
export declare function formatCompletionChunk(id: string, model: string, delta: {
|
|
31
36
|
role?: string;
|
|
32
37
|
content?: string;
|
|
@@ -25,7 +25,12 @@ export function formatCompletionResponse(id, model, text, tokensIn, tokensOut, t
|
|
|
25
25
|
* (mirrors OpenAI o1/o3 schema). Caller must already be gated on
|
|
26
26
|
* `getSurfaceThinkingEnabled()` from `lib/config.ts` — this function does
|
|
27
27
|
* not re-check the flag. Pass empty string or undefined to omit. */
|
|
28
|
-
reasoning
|
|
28
|
+
reasoning,
|
|
29
|
+
/** v0.17.0: when false, suppress the empty-text "Done." backstop and
|
|
30
|
+
* return an empty string instead. Caller is responsible for the
|
|
31
|
+
* `isDoneBackstopEnabled()` check and for the trajectory event.
|
|
32
|
+
* Defaults true for backcompat with the 12+ existing call sites. */
|
|
33
|
+
backstopEnabled = true) {
|
|
29
34
|
const hasToolCalls = toolCalls && toolCalls.length > 0;
|
|
30
35
|
const hasReasoning = typeof reasoning === 'string' && reasoning.length > 0;
|
|
31
36
|
// v0.7.2 backstop: openclaw upstream's "incomplete terminal response" classifier
|
|
@@ -37,7 +42,9 @@ reasoning) {
|
|
|
37
42
|
// tool_calls (i.e. CLI built-ins fired but legacy XML extraction yielded nothing),
|
|
38
43
|
// emit a minimal acknowledgement so the upstream classifier sees a payload.
|
|
39
44
|
// Tool_calls turns are exempt — those are openai-spec-correct with `content: null`.
|
|
40
|
-
|
|
45
|
+
//
|
|
46
|
+
// v0.17.0: `backstopEnabled=false` suppresses the "Done." fallback (text → '').
|
|
47
|
+
const safeContent = text || (hasToolCalls ? null : backstopEnabled ? 'Done.' : '');
|
|
41
48
|
return {
|
|
42
49
|
id,
|
|
43
50
|
object: 'chat.completion',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-formatter.js","sourceRoot":"","sources":["../../../src/openai-compat/response-formatter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAQH,MAAM,UAAU,wBAAwB,CACtC,EAAU,EACV,KAAa,EACb,IAAY,EACZ,QAAgB,EAChB,SAAiB,EACjB,SAA4B;AAC5B;;;qEAGqE;AACrE,SAAkB;
|
|
1
|
+
{"version":3,"file":"response-formatter.js","sourceRoot":"","sources":["../../../src/openai-compat/response-formatter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAQH,MAAM,UAAU,wBAAwB,CACtC,EAAU,EACV,KAAa,EACb,IAAY,EACZ,QAAgB,EAChB,SAAiB,EACjB,SAA4B;AAC5B;;;qEAGqE;AACrE,SAAkB;AAClB;;;qEAGqE;AACrE,kBAA2B,IAAI;IAE/B,MAAM,YAAY,GAAG,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3E,iFAAiF;IACjF,oFAAoF;IACpF,kFAAkF;IAClF,+EAA+E;IAC/E,+EAA+E;IAC/E,mFAAmF;IACnF,mFAAmF;IACnF,4EAA4E;IAC5E,oFAAoF;IACpF,EAAE;IACF,gFAAgF;IAChF,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACnF,OAAO;QACL,EAAE;QACF,MAAM,EAAE,iBAAiB;QACzB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACtC,KAAK;QACL,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,CAAC;gBACR,OAAO,EAAE;oBACP,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,WAAW;oBACpB,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClD,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACvC;gBACD,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM;aACpD;SACF;QACD,KAAK,EAAE;YACL,aAAa,EAAE,QAAQ;YACvB,iBAAiB,EAAE,SAAS;YAC5B,YAAY,EAAE,QAAQ,GAAG,SAAS;SACnC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,EAAU,EACV,KAAa,EACb,KAA0C,EAC1C,YAA2B;IAE3B,OAAO;QACL,EAAE;QACF,MAAM,EAAE,uBAAuB;QAC/B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QACtC,KAAK;QACL,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC"}
|