@oneciel-ai/ciel-runtime 0.2.41 → 0.2.42
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/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,12 @@ capability, followed by the complete commit ledger merged into each release.
|
|
|
5
5
|
|
|
6
6
|
## Unreleased
|
|
7
7
|
|
|
8
|
+
## 0.2.42 — 2026-09-08
|
|
9
|
+
|
|
10
|
+
- Preserve fragmented OSC palette responses and other VT control strings as
|
|
11
|
+
complete frames in the Windows input bridge. Prevent RGB palette replies
|
|
12
|
+
from appearing in the Codex draft; retain literal text and bounded buffering.
|
|
13
|
+
|
|
8
14
|
## 0.2.41 — 2026-09-07
|
|
9
15
|
|
|
10
16
|
- Automatically authenticate Codex model and Ciel MCP requests to LAN-bound
|
|
@@ -6,7 +6,7 @@ from collections.abc import Callable
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
class TerminalInputFrames:
|
|
9
|
-
"""Do not expose a partial
|
|
9
|
+
"""Do not expose a partial VT sequence to a child's keyboard parser.
|
|
10
10
|
|
|
11
11
|
A bounded idle timer preserves a standalone Escape key. Nothing is
|
|
12
12
|
stripped or rewritten, including literal text resembling paste markers.
|
|
@@ -32,13 +32,24 @@ class TerminalInputFrames:
|
|
|
32
32
|
ready.append(byte)
|
|
33
33
|
continue
|
|
34
34
|
self.pending.append(byte)
|
|
35
|
-
|
|
36
|
-
# (including
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
introducer = self.pending[1]
|
|
36
|
+
# OSC (including palette replies) and other control strings
|
|
37
|
+
# end at ST, not at their first printable byte. OSC also
|
|
38
|
+
# accepts BEL. An ESC ending one read may start ST in the next.
|
|
39
|
+
if introducer in b']PX^_':
|
|
40
|
+
complete = (
|
|
41
|
+
self.pending.endswith(b'\x1b\\')
|
|
42
|
+
or (introducer == ord(']') and byte == 0x07)
|
|
43
|
+
or byte in (0x18, 0x1a) # CAN/SUB cancel the sequence.
|
|
44
|
+
or len(self.pending) >= 4096
|
|
45
|
+
)
|
|
46
|
+
else:
|
|
47
|
+
# CSI/SS3 final byte, or a two-byte ESC/Alt key.
|
|
48
|
+
complete = (
|
|
49
|
+
len(self.pending) == 2 and introducer not in b'[O'
|
|
50
|
+
) or (
|
|
51
|
+
len(self.pending) >= 3 and 0x40 <= byte <= 0x7e
|
|
52
|
+
) or len(self.pending) >= 64
|
|
42
53
|
if complete:
|
|
43
54
|
ready.extend(self.pending)
|
|
44
55
|
self.pending.clear()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
title: Windows OSC palette response framing regression
|
|
2
|
+
date: 2026-09-08
|
|
3
|
+
version: 0.2.42
|
|
4
|
+
request: Continue handling user-reported OSC 4 palette strings exposed in console input.
|
|
5
|
+
cause:
|
|
6
|
+
source: TerminalInputFrames treated ESC ] as a complete two-byte key, forwarding the subsequent OSC body separately.
|
|
7
|
+
actual_cli_before: Codex rendered 4;0;rgb:0c0c/0c0c/0c0c followed by the test paste.
|
|
8
|
+
change:
|
|
9
|
+
protocol: Keep OSC, DCS, SOS, PM and APC strings until ST; OSC also accepts BEL; CAN/SUB cancel.
|
|
10
|
+
safety: Never remove literal text; 4096-byte bound and existing 100ms idle flush retained.
|
|
11
|
+
verification:
|
|
12
|
+
actual_cli_after: Both palette and paste tests passed; palette text absent and 1660377 still visible. No model prompt submitted.
|
|
13
|
+
frames: Six tests passed including every control-string split, BEL/ST, plain literal RGB text, bounded malformed strings, standalone Esc and paste.
|
|
14
|
+
static: Ruff passed.
|
|
15
|
+
reference: https://invisible-island.net/xterm/ctlseqs/ctlseqs.html
|
|
16
|
+
limitations: Remote user's terminal not directly manipulated; local real Codex reproduction uses simulated split parent-console reads.
|
|
17
|
+
deployment: Continue main stable release workflow; validate npm artifact after publishing.
|
|
18
|
+
excluded: No Kevin AI Net authentication changes or session restart.
|
package/package.json
CHANGED