@code-yeongyu/senpi-codemode 2026.9.22 → 2026.9.23
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 +50 -0
- package/package.json +4 -4
- package/src/index.ts +3 -0
- package/src/tool/render.ts +12 -2
package/CHANGELOG.md
CHANGED
|
@@ -12,6 +12,56 @@
|
|
|
12
12
|
|
|
13
13
|
### Removed
|
|
14
14
|
|
|
15
|
+
## [2026.9.23] - 2026-09-23
|
|
16
|
+
|
|
17
|
+
### Breaking Changes
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
### Removed
|
|
26
|
+
|
|
27
|
+
## [2026.9.22-4] - 2026-09-22
|
|
28
|
+
|
|
29
|
+
### Breaking Changes
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
### Removed
|
|
38
|
+
|
|
39
|
+
## [2026.9.22-3] - 2026-09-22
|
|
40
|
+
|
|
41
|
+
### Breaking Changes
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
|
|
45
|
+
### Changed
|
|
46
|
+
|
|
47
|
+
### Fixed
|
|
48
|
+
|
|
49
|
+
### Removed
|
|
50
|
+
|
|
51
|
+
## [2026.9.22-2] - 2026-09-22
|
|
52
|
+
|
|
53
|
+
### Breaking Changes
|
|
54
|
+
|
|
55
|
+
### Added
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
|
|
59
|
+
### Fixed
|
|
60
|
+
|
|
61
|
+
- `wake_source_state` (live detached eval cells) is now published on the rpc channel as well as the in-process event bus, so out-of-process consumers see live cells the way the TUI footer does (#1943).
|
|
62
|
+
|
|
63
|
+
### Removed
|
|
64
|
+
|
|
15
65
|
## [2026.9.22] - 2026-09-21
|
|
16
66
|
|
|
17
67
|
### Breaking Changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@code-yeongyu/senpi-codemode",
|
|
3
|
-
"version": "2026.9.
|
|
3
|
+
"version": "2026.9.23",
|
|
4
4
|
"description": "Source-only senpi extension package for codemode evaluation tools",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.ts",
|
|
@@ -30,14 +30,14 @@
|
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@babel/parser": "8.0.4",
|
|
33
|
-
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.9.
|
|
33
|
+
"@earendil-works/pi-ai": "npm:@code-yeongyu/senpi-ai@2026.9.23",
|
|
34
34
|
"typebox": "1.3.34"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"@code-yeongyu/senpi": "2026.9.
|
|
37
|
+
"@code-yeongyu/senpi": "2026.9.23"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@code-yeongyu/senpi": "2026.9.
|
|
40
|
+
"@code-yeongyu/senpi": "2026.9.23"
|
|
41
41
|
},
|
|
42
42
|
"keywords": [
|
|
43
43
|
"senpi",
|
package/src/index.ts
CHANGED
|
@@ -114,6 +114,9 @@ export default function senpiCodemode(pi: CodemodeExtensionAPI, options: SenpiCo
|
|
|
114
114
|
statusTicker.sync(entries);
|
|
115
115
|
};
|
|
116
116
|
const emitWakeSourceState = (state: WakeSourceState): void => {
|
|
117
|
+
// Same dual publication as the settle payload below: the in-process bus
|
|
118
|
+
// feeds the TUI footer, the rpc channel feeds out-of-process consumers.
|
|
119
|
+
pi.rpc?.emit(WAKE_SOURCE_STATE_EVENT, state);
|
|
117
120
|
pi.events?.emit(WAKE_SOURCE_STATE_EVENT, state);
|
|
118
121
|
};
|
|
119
122
|
const registerEvalForRuntime = (
|
package/src/tool/render.ts
CHANGED
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
truncateToVisualLines,
|
|
11
11
|
} from "@code-yeongyu/senpi";
|
|
12
12
|
import { formatTruncationWarning, stripOutputNotice, type TruncationMeta } from "../output/output-meta.ts";
|
|
13
|
+
import { clampEvalSummary } from "./eval-request.ts";
|
|
13
14
|
import {
|
|
14
15
|
JSON_TREE_MAX_DEPTH_COLLAPSED,
|
|
15
16
|
JSON_TREE_MAX_DEPTH_EXPANDED,
|
|
@@ -883,6 +884,13 @@ function resultMetadata(
|
|
|
883
884
|
return [{ kind: "text", text: style(theme, "muted", metadata.join(" | ")) }];
|
|
884
885
|
}
|
|
885
886
|
|
|
887
|
+
// The call renderer reads the assistant message's raw arguments, which now keep the provider's
|
|
888
|
+
// original summary (senpi#1472 detached preparation from the message). The advertised display
|
|
889
|
+
// limit is enforced here instead, idempotently: an already-clamped value is returned unchanged.
|
|
890
|
+
function displaySummary(summary: string | undefined): string | undefined {
|
|
891
|
+
return clampEvalSummary(summary);
|
|
892
|
+
}
|
|
893
|
+
|
|
886
894
|
export function renderEvalCall(
|
|
887
895
|
args: EvalToolRequest,
|
|
888
896
|
theme: Theme | undefined,
|
|
@@ -905,7 +913,9 @@ export function renderEvalCall(
|
|
|
905
913
|
const timeout = args.timeout === undefined ? "" : ` timeout ${args.timeout}s`;
|
|
906
914
|
component.setBlocks([
|
|
907
915
|
{ kind: "text", text: style(theme, "toolTitle", `eval ${args.language}${reset}${timeout}`) },
|
|
908
|
-
...(args.summary === undefined
|
|
916
|
+
...(displaySummary(args.summary) === undefined
|
|
917
|
+
? []
|
|
918
|
+
: [{ kind: "text" as const, text: style(theme, "muted", displaySummary(args.summary) ?? "") }]),
|
|
909
919
|
{
|
|
910
920
|
kind: "text",
|
|
911
921
|
text: style(theme, "mdCodeBlock", args.code.trim().length > 0 ? args.code : "..."),
|
|
@@ -930,7 +940,7 @@ export function renderEvalCall(
|
|
|
930
940
|
};
|
|
931
941
|
const cell: EvalCellResult = {
|
|
932
942
|
index: 0,
|
|
933
|
-
...(args.summary === undefined ? {} : { summary: args.summary }),
|
|
943
|
+
...(displaySummary(args.summary) === undefined ? {} : { summary: displaySummary(args.summary) ?? "" }),
|
|
934
944
|
code: args.code,
|
|
935
945
|
language: args.language,
|
|
936
946
|
output: "",
|