dsh-output-styles 0.4.2 → 0.4.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/CHANGELOG.md +20 -0
- package/README.es.md +1 -1
- package/README.hi.md +1 -1
- package/README.md +2 -1
- package/README.pt.md +1 -1
- package/README.zh.md +1 -1
- package/lib/index.js +7 -4
- package/lib/{invariant-CEWlfnrw.js → invariant-ExQ574yb.js} +14 -1
- package/lib/invariant.js +1 -1
- package/lib/types/index.d.ts +1 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/runtime.d.ts.map +1 -1
- package/lib/types/types.d.ts +21 -0
- package/lib/types/types.d.ts.map +1 -1
- package/package.json +29 -29
- package/src/index.ts +1 -0
- package/src/runtime.ts +6 -3
- package/src/types.ts +21 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,26 @@ All notable changes to this project are documented in this file. The format
|
|
|
4
4
|
follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the
|
|
5
5
|
project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
|
+
## [0.4.3] - 2026-08-22
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- **rc2 compatibility**: every `@deepseek-ai/dsh-*` dependency moves to
|
|
12
|
+
`0.1.1-rc.2` (devDependencies and the runtime storage dependencies pinned);
|
|
13
|
+
the `@deepseek-ai/dsh-session-projection` peer range raises to
|
|
14
|
+
`>=0.1.1-rc.2 <0.2.0` because the projection unit now uses the rc2-only
|
|
15
|
+
`stateSchema` + `wire` definition. The five README compatibility rows, the
|
|
16
|
+
`dshWorkshop` compatibility claim, the compat workflow's rc pins, and the
|
|
17
|
+
workspace `minimumReleaseAgeExclude` follow.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- **rc2 session-projection definition**: the `style` projection registers a
|
|
22
|
+
`stateSchema` (persisted fold-state validator) and a client `wire`
|
|
23
|
+
(`viewSchema` + `view`) instead of the rc8 top-level `schema`/`view`, and
|
|
24
|
+
declares its `SessionProjectionStateMap` merge so the `register` overload
|
|
25
|
+
resolves the client-visible unit.
|
|
26
|
+
|
|
7
27
|
## [0.4.2] - 2026-08-21
|
|
8
28
|
|
|
9
29
|
### Changed
|
package/README.es.md
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
| Surface | Status |
|
|
26
26
|
|---|---|
|
|
27
|
-
| Harness | DeepSeek Harness `0.1.
|
|
27
|
+
| Harness | DeepSeek Harness `0.1.1-rc.2` |
|
|
28
28
|
| Node | `^22.19.0 || >=24.0.0` |
|
|
29
29
|
| Platforms | Todas (host + cliente web) |
|
|
30
30
|
| Model | Cualquiera (inyección en el prompt del sistema) |
|
package/README.hi.md
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
| Surface | Status |
|
|
26
26
|
|---|---|
|
|
27
|
-
| Harness | DeepSeek Harness `0.1.
|
|
27
|
+
| Harness | DeepSeek Harness `0.1.1-rc.2` |
|
|
28
28
|
| Node | `^22.19.0 || >=24.0.0` |
|
|
29
29
|
| Platforms | सभी (host + वेब क्लाइंट) |
|
|
30
30
|
| Model | कोई भी (सिस्टम-प्रॉम्प्ट इंजेक्शन) |
|
package/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
3
|
# 🎨 dsh-output-styles
|
|
4
|
+
[](https://gitee.com/perrylink/dsh-output-styles)
|
|
4
5
|
|
|
5
6
|
**Claude Code `outputStyles` for DeepSeek Harness** — switch the model's output style at runtime, per session, durably.
|
|
6
7
|
|
|
@@ -24,7 +25,7 @@
|
|
|
24
25
|
|
|
25
26
|
| Surface | Status |
|
|
26
27
|
|---|---|
|
|
27
|
-
| Harness | DeepSeek Harness `0.1.
|
|
28
|
+
| Harness | DeepSeek Harness `0.1.1-rc.2` |
|
|
28
29
|
| Node | `^22.19.0 || >=24.0.0` |
|
|
29
30
|
| Platforms | All (host + web client) |
|
|
30
31
|
| Model | Any (system-prompt injection) |
|
package/README.pt.md
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
|
|
25
25
|
| Surface | Status |
|
|
26
26
|
|---|---|
|
|
27
|
-
| Harness | DeepSeek Harness `0.1.
|
|
27
|
+
| Harness | DeepSeek Harness `0.1.1-rc.2` |
|
|
28
28
|
| Node | `^22.19.0 || >=24.0.0` |
|
|
29
29
|
| Platforms | Todas (host + cliente web) |
|
|
30
30
|
| Model | Qualquer (injeção no prompt do sistema) |
|
package/README.zh.md
CHANGED
package/lib/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as
|
|
1
|
+
import { _ as styleFoldStateSchema, c as loadStyleLibrary, d as STYLE_COMMAND, f as applyStyleEvent, g as STYLE_SOURCE, h as OUTPUT_STYLE_DOMAIN, i as installInvariant, l as truncateStyle, m as OFF, o as STYLE_NAME_RE, p as parseStyleInput, s as isValidStyleName, t as PACKAGE_NAME, u as EMPTY_STYLE_STATE, v as styleSelectionSchema, y as styleSelectionViewSchema } from "./invariant-ExQ574yb.js";
|
|
2
2
|
import z from "@deepseek-ai/schemastery";
|
|
3
3
|
import { resolve } from "node:path";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
@@ -732,10 +732,13 @@ async function apply(ctx, config) {
|
|
|
732
732
|
ctx.inject(["sessionProjections"], (projectionCtx) => {
|
|
733
733
|
projectionCtx.sessionProjections.register({
|
|
734
734
|
key: "style",
|
|
735
|
-
|
|
735
|
+
stateSchema: styleFoldStateSchema,
|
|
736
736
|
init: () => EMPTY_STYLE_STATE,
|
|
737
737
|
apply: applyStyleEvent,
|
|
738
|
-
|
|
738
|
+
wire: {
|
|
739
|
+
viewSchema: styleSelectionViewSchema,
|
|
740
|
+
view: (state) => viewStyleSelection(runtime, state)
|
|
741
|
+
},
|
|
739
742
|
stateVersion: 2
|
|
740
743
|
});
|
|
741
744
|
});
|
|
@@ -857,4 +860,4 @@ const name = "dsh-output-styles";
|
|
|
857
860
|
*/
|
|
858
861
|
const inject = ["systemPrompt", "storageDomain"];
|
|
859
862
|
//#endregion
|
|
860
|
-
export { Config, DEFAULT_STYLES_DIR, EMPTY_STYLE_STATE, OFF, OUTPUT_STYLE_DOMAIN, OutputStyleRuntime, PACKAGE_NAME, STYLE_COMMAND, STYLE_NAME_RE, STYLE_SECTION_NAME, STYLE_SOURCE, apply, applyStyleEvent, inject, installInvariant, isValidStyleName, loadStyleLibrary, name, parseStyleInput, resolveConfig, styleSelectionSchema, styleSelectionViewSchema, truncateStyle };
|
|
863
|
+
export { Config, DEFAULT_STYLES_DIR, EMPTY_STYLE_STATE, OFF, OUTPUT_STYLE_DOMAIN, OutputStyleRuntime, PACKAGE_NAME, STYLE_COMMAND, STYLE_NAME_RE, STYLE_SECTION_NAME, STYLE_SOURCE, apply, applyStyleEvent, inject, installInvariant, isValidStyleName, loadStyleLibrary, name, parseStyleInput, resolveConfig, styleFoldStateSchema, styleSelectionSchema, styleSelectionViewSchema, truncateStyle };
|
|
@@ -53,6 +53,19 @@ const styleSelectionViewSchema = z.object({
|
|
|
53
53
|
})),
|
|
54
54
|
currentValue: z.string().min(1).nullable()
|
|
55
55
|
});
|
|
56
|
+
/**
|
|
57
|
+
* Validates the `style` projection's persisted fold state before it seeds a
|
|
58
|
+
* fold (the `stateSchema` of the registered unit). The state is plain JSON:
|
|
59
|
+
* the settled selection (`current`, null when off) plus the in-flight switch
|
|
60
|
+
* parked by `command/run` and resolved by its paired `command/done`.
|
|
61
|
+
*/
|
|
62
|
+
const styleFoldStateSchema = z.object({
|
|
63
|
+
current: z.string().min(1).nullable(),
|
|
64
|
+
pending: z.object({
|
|
65
|
+
commandId: z.string().min(1),
|
|
66
|
+
target: z.union([z.object({ name: z.string().min(1) }), z.object({ off: z.literal(true) })])
|
|
67
|
+
}).nullable()
|
|
68
|
+
});
|
|
56
69
|
//#endregion
|
|
57
70
|
//#region lib/types/style-command.js
|
|
58
71
|
/**
|
|
@@ -495,4 +508,4 @@ function getInvariantRegistry(ctx) {
|
|
|
495
508
|
*/
|
|
496
509
|
const apply = (ctx) => Promise.resolve(getInvariantRegistry(ctx).register(PACKAGE_NAME, installInvariant(COMPANION_FACTS)));
|
|
497
510
|
//#endregion
|
|
498
|
-
export {
|
|
511
|
+
export { styleFoldStateSchema as _, name as a, loadStyleLibrary as c, STYLE_COMMAND as d, applyStyleEvent as f, STYLE_SOURCE as g, OUTPUT_STYLE_DOMAIN as h, installInvariant as i, truncateStyle as l, OFF as m, apply as n, STYLE_NAME_RE as o, parseStyleInput as p, inject as r, isValidStyleName as s, PACKAGE_NAME as t, EMPTY_STYLE_STATE as u, styleSelectionSchema as v, styleSelectionViewSchema as y };
|
package/lib/invariant.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as name, i as installInvariant, n as apply, r as inject, t as PACKAGE_NAME } from "./invariant-
|
|
1
|
+
import { a as name, i as installInvariant, n as apply, r as inject, t as PACKAGE_NAME } from "./invariant-ExQ574yb.js";
|
|
2
2
|
export { PACKAGE_NAME, apply, inject, installInvariant, name };
|
package/lib/types/index.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export { applyStyleEvent, EMPTY_STYLE_STATE, parseStyleInput, STYLE_COMMAND, } f
|
|
|
23
23
|
export type { StyleFoldState, StyleInput } from './style-command.js';
|
|
24
24
|
export { isValidStyleName, loadStyleLibrary, STYLE_NAME_RE, truncateStyle, } from './style-library.js';
|
|
25
25
|
export type { OutputStyle } from './style-library.js';
|
|
26
|
-
export { OFF, OUTPUT_STYLE_DOMAIN, STYLE_SOURCE, styleSelectionSchema, styleSelectionViewSchema, } from './types.js';
|
|
26
|
+
export { OFF, OUTPUT_STYLE_DOMAIN, STYLE_SOURCE, styleFoldStateSchema, styleSelectionSchema, styleSelectionViewSchema, } from './types.js';
|
|
27
27
|
export type { StyleOption, StyleSelection, StyleSelectionView } from './types.js';
|
|
28
28
|
export { installInvariant, PACKAGE_NAME } from './invariant.js';
|
|
29
29
|
export type { InvariantFacts, InvariantInstaller, InvariantRegistry } from './invariant.js';
|
package/lib/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,6DAA6D;AAC7D,eAAO,MAAM,IAAI,sBAAsB,CAAA;AAEvC;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,UAAoC,CAAA;AAEvD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACnD,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAChG,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,aAAa,GACd,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EACL,GAAG,EACH,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACjF,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC/D,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAG3F,mBAAmB,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,6DAA6D;AAC7D,eAAO,MAAM,IAAI,sBAAsB,CAAA;AAEvC;;;;;;GAMG;AACH,eAAO,MAAM,MAAM,UAAoC,CAAA;AAEvD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACnD,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAChG,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,aAAa,GACd,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpE,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,aAAa,GACd,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EACL,GAAG,EACH,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACjF,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC/D,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAG3F,mBAAmB,YAAY,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAKlE,OAAO,KAAK,EAAE,MAAM,EAA2B,MAAM,iCAAiC,CAAA;AAGtF,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EAAmC,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEtF,OAAO,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/lib/types/types.d.ts
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
import type { SessionId } from '@deepseek-ai/dsh-session';
|
|
11
11
|
import { z as zod } from 'zod';
|
|
12
12
|
import type { OutputRenderer, RenderContext, RenderedText } from './renderers.js';
|
|
13
|
+
import type { StyleFoldState } from './style-command.js';
|
|
13
14
|
/** The reserved switch target that removes a session's selection. */
|
|
14
15
|
export declare const OFF = "off";
|
|
15
16
|
/**
|
|
@@ -71,10 +72,30 @@ export declare const styleSelectionViewSchema: zod.ZodObject<{
|
|
|
71
72
|
}, zod.core.$strip>>;
|
|
72
73
|
currentValue: zod.ZodNullable<zod.ZodString>;
|
|
73
74
|
}, zod.core.$strip>;
|
|
75
|
+
/**
|
|
76
|
+
* Validates the `style` projection's persisted fold state before it seeds a
|
|
77
|
+
* fold (the `stateSchema` of the registered unit). The state is plain JSON:
|
|
78
|
+
* the settled selection (`current`, null when off) plus the in-flight switch
|
|
79
|
+
* parked by `command/run` and resolved by its paired `command/done`.
|
|
80
|
+
*/
|
|
81
|
+
export declare const styleFoldStateSchema: zod.ZodObject<{
|
|
82
|
+
current: zod.ZodNullable<zod.ZodString>;
|
|
83
|
+
pending: zod.ZodNullable<zod.ZodObject<{
|
|
84
|
+
commandId: zod.ZodString;
|
|
85
|
+
target: zod.ZodUnion<readonly [zod.ZodObject<{
|
|
86
|
+
name: zod.ZodString;
|
|
87
|
+
}, zod.core.$strip>, zod.ZodObject<{
|
|
88
|
+
off: zod.ZodLiteral<true>;
|
|
89
|
+
}, zod.core.$strip>]>;
|
|
90
|
+
}, zod.core.$strip>>;
|
|
91
|
+
}, zod.core.$strip>;
|
|
74
92
|
declare module '@deepseek-ai/dsh-session-projection/types' {
|
|
75
93
|
interface SessionProjectionMap {
|
|
76
94
|
style: StyleSelectionView;
|
|
77
95
|
}
|
|
96
|
+
interface SessionProjectionStateMap {
|
|
97
|
+
style: StyleFoldState;
|
|
98
|
+
}
|
|
78
99
|
}
|
|
79
100
|
/** The `ctx.outputRenderers` service: the output.render.* renderer registry. */
|
|
80
101
|
export interface OutputRenderersService {
|
package/lib/types/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,CAAC,IAAI,GAAG,EAAE,MAAM,KAAK,CAAA;AAE9B,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,CAAC,IAAI,GAAG,EAAE,MAAM,KAAK,CAAA;AAE9B,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,qEAAqE;AACrE,eAAO,MAAM,GAAG,QAAQ,CAAA;AAExB;;;;GAIG;AACH,eAAO,MAAM,YAAY;;;CAA2D,CAAA;AAEpF,gDAAgD;AAChD,eAAO,MAAM,oBAAoB;;;;;;mBAQ/B,CAAA;AAEF,kDAAkD;AAClD,MAAM,WAAW,cAAe,SAAQ,GAAG,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC;CAAG;AAEjF;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;;;CAM9B,CAAA;AAEF,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAA;IACb,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAA;IACnB,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC/B;AAED,0DAA0D;AAC1D,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,iFAAiF;AACjF,eAAO,MAAM,wBAAwB;;;;;;;;mBAQnC,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;mBAS/B,CAAA;AAEF,OAAO,QAAQ,2CAA2C,CAAC;IACzD,UAAU,oBAAoB;QAC5B,KAAK,EAAE,kBAAkB,CAAA;KAC1B;IACD,UAAU,yBAAyB;QACjC,KAAK,EAAE,cAAc,CAAA;KACtB;CACF;AAED,gFAAgF;AAChF,MAAM,WAAW,sBAAsB;IACrC,iFAAiF;IACjF,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,IAAI,CAAA;IAC9C,wFAAwF;IACxF,IAAI,IAAI,cAAc,EAAE,CAAA;IACxB,4DAA4D;IAC5D,OAAO,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,EAAE,CAAA;IACjD,gGAAgG;IAChG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;CACxE;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,2EAA2E;QAC3E,eAAe,EAAE,sBAAsB,CAAA;KACxC;IACD,UAAU,MAAM;QACd;;;;WAIG;QACH,sBAAsB,CAAC,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,aAAa,CAAA;SAAE,EAAE,IAAI,EAAE,CAAC,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,aAAa,CAAA;SAAE,KAAK,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;KACrL;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-output-styles",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.3",
|
|
4
4
|
"description": "Claude Code outputStyles-equivalent runtime output-style switching for DeepSeek Harness",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
],
|
|
107
107
|
"compatibility": {
|
|
108
108
|
"dshVersions": [
|
|
109
|
-
"0.1.
|
|
109
|
+
"0.1.1-rc.2"
|
|
110
110
|
]
|
|
111
111
|
},
|
|
112
112
|
"capability": {
|
|
@@ -123,16 +123,16 @@
|
|
|
123
123
|
}
|
|
124
124
|
},
|
|
125
125
|
"dependencies": {
|
|
126
|
-
"@deepseek-ai/dsh-storage": "0.1.
|
|
127
|
-
"@deepseek-ai/dsh-storage-domain": "0.1.
|
|
128
|
-
"@deepseek-ai/dsh-storage-json": "0.1.
|
|
126
|
+
"@deepseek-ai/dsh-storage": "0.1.1-rc.2",
|
|
127
|
+
"@deepseek-ai/dsh-storage-domain": "0.1.1-rc.2",
|
|
128
|
+
"@deepseek-ai/dsh-storage-json": "0.1.1-rc.2",
|
|
129
129
|
"yaml": "^2.8.0",
|
|
130
130
|
"zod": "^4.4.3"
|
|
131
131
|
},
|
|
132
132
|
"peerDependencies": {
|
|
133
133
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
134
134
|
"@deepseek-ai/dsh-session": ">=0.1.0-rc.8 <0.2.0",
|
|
135
|
-
"@deepseek-ai/dsh-session-projection": ">=0.1.
|
|
135
|
+
"@deepseek-ai/dsh-session-projection": ">=0.1.1-rc.2 <0.2.0",
|
|
136
136
|
"@deepseek-ai/dsh-settings": ">=0.1.0-rc.8 <0.2.0",
|
|
137
137
|
"@deepseek-ai/dsh-storage-domain": ">=0.1.0-rc.8 <0.2.0",
|
|
138
138
|
"@deepseek-ai/schemastery": "^3.18.1"
|
|
@@ -161,29 +161,29 @@
|
|
|
161
161
|
"@deepseek-ai/cordis": "4.0.1",
|
|
162
162
|
"@deepseek-ai/cordis-plugin-include": "1.0.6",
|
|
163
163
|
"@deepseek-ai/cordis-plugin-loader": "1.0.2",
|
|
164
|
-
"@deepseek-ai/dsh-agent": "0.1.
|
|
165
|
-
"@deepseek-ai/dsh-api-remotes": "0.1.
|
|
166
|
-
"@deepseek-ai/dsh-attachment": "0.1.
|
|
167
|
-
"@deepseek-ai/dsh-brand": "0.1.
|
|
168
|
-
"@deepseek-ai/dsh-client-locale": "0.1.
|
|
169
|
-
"@deepseek-ai/dsh-client-runtime": "0.1.
|
|
170
|
-
"@deepseek-ai/dsh-client-ui-commands": "0.1.
|
|
171
|
-
"@deepseek-ai/dsh-client-ui-input-trigger": "0.1.
|
|
172
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.1.
|
|
173
|
-
"@deepseek-ai/dsh-commands": "0.1.
|
|
174
|
-
"@deepseek-ai/dsh-llm": "0.1.
|
|
175
|
-
"@deepseek-ai/dsh-scope": "0.1.
|
|
176
|
-
"@deepseek-ai/dsh-session": "0.1.
|
|
177
|
-
"@deepseek-ai/dsh-session-persistence": "0.1.
|
|
178
|
-
"@deepseek-ai/dsh-session-persistence-jsonl": "0.1.
|
|
179
|
-
"@deepseek-ai/dsh-session-projection": "0.1.
|
|
180
|
-
"@deepseek-ai/dsh-settings": "0.1.
|
|
181
|
-
"@deepseek-ai/dsh-storage": "0.1.
|
|
182
|
-
"@deepseek-ai/dsh-storage-domain": "0.1.
|
|
183
|
-
"@deepseek-ai/dsh-storage-json": "0.1.
|
|
184
|
-
"@deepseek-ai/dsh-system-prompt": "0.1.
|
|
185
|
-
"@deepseek-ai/dsh-timeout": "0.1.
|
|
186
|
-
"@deepseek-ai/dsh-typert-protocol": "0.1.
|
|
164
|
+
"@deepseek-ai/dsh-agent": "0.1.1-rc.2",
|
|
165
|
+
"@deepseek-ai/dsh-api-remotes": "0.1.1-rc.2",
|
|
166
|
+
"@deepseek-ai/dsh-attachment": "0.1.1-rc.2",
|
|
167
|
+
"@deepseek-ai/dsh-brand": "0.1.1-rc.2",
|
|
168
|
+
"@deepseek-ai/dsh-client-locale": "0.1.1-rc.2",
|
|
169
|
+
"@deepseek-ai/dsh-client-runtime": "0.1.1-rc.2",
|
|
170
|
+
"@deepseek-ai/dsh-client-ui-commands": "0.1.1-rc.2",
|
|
171
|
+
"@deepseek-ai/dsh-client-ui-input-trigger": "0.1.1-rc.2",
|
|
172
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.1-rc.2",
|
|
173
|
+
"@deepseek-ai/dsh-commands": "0.1.1-rc.2",
|
|
174
|
+
"@deepseek-ai/dsh-llm": "0.1.1-rc.2",
|
|
175
|
+
"@deepseek-ai/dsh-scope": "0.1.1-rc.2",
|
|
176
|
+
"@deepseek-ai/dsh-session": "0.1.1-rc.2",
|
|
177
|
+
"@deepseek-ai/dsh-session-persistence": "0.1.1-rc.2",
|
|
178
|
+
"@deepseek-ai/dsh-session-persistence-jsonl": "0.1.1-rc.2",
|
|
179
|
+
"@deepseek-ai/dsh-session-projection": "0.1.1-rc.2",
|
|
180
|
+
"@deepseek-ai/dsh-settings": "0.1.1-rc.2",
|
|
181
|
+
"@deepseek-ai/dsh-storage": "0.1.1-rc.2",
|
|
182
|
+
"@deepseek-ai/dsh-storage-domain": "0.1.1-rc.2",
|
|
183
|
+
"@deepseek-ai/dsh-storage-json": "0.1.1-rc.2",
|
|
184
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.1-rc.2",
|
|
185
|
+
"@deepseek-ai/dsh-timeout": "0.1.1-rc.2",
|
|
186
|
+
"@deepseek-ai/dsh-typert-protocol": "0.1.1-rc.2",
|
|
187
187
|
"@deepseek-ai/schemastery": "3.18.1",
|
|
188
188
|
"@types/node": "^22.20.0",
|
|
189
189
|
"@vitest/coverage-v8": "4.1.10",
|
package/src/index.ts
CHANGED
package/src/runtime.ts
CHANGED
|
@@ -23,7 +23,7 @@ import { resolveConfig, type Config } from './config.ts'
|
|
|
23
23
|
import { installInvariant, PACKAGE_NAME, type InvariantFacts, type InvariantRegistry } from './invariant.ts'
|
|
24
24
|
import { loadStyleLibrary, truncateStyle, type OutputStyle } from './style-library.ts'
|
|
25
25
|
import { applyStyleEvent, EMPTY_STYLE_STATE, parseStyleInput, STYLE_COMMAND, type StyleFoldState } from './style-command.ts'
|
|
26
|
-
import { OUTPUT_STYLE_DOMAIN, STYLE_SOURCE, styleSelectionViewSchema, type StyleSelection, type StyleSelectionView } from './types.ts'
|
|
26
|
+
import { OUTPUT_STYLE_DOMAIN, STYLE_SOURCE, styleFoldStateSchema, styleSelectionViewSchema, type StyleSelection, type StyleSelectionView } from './types.ts'
|
|
27
27
|
import { BUILTIN_RENDERERS, RendererRegistry, type OutputRenderer, type RenderContext, type RenderedText, type StyleRule } from './renderers.ts'
|
|
28
28
|
import { conversationLines, renderExport } from './export.ts'
|
|
29
29
|
|
|
@@ -418,10 +418,13 @@ export async function apply(ctx: Context, config: Config): Promise<void> {
|
|
|
418
418
|
ctx.inject(['sessionProjections'], (projectionCtx) => {
|
|
419
419
|
projectionCtx.sessionProjections.register<'style', StyleFoldState>({
|
|
420
420
|
key: 'style',
|
|
421
|
-
|
|
421
|
+
stateSchema: styleFoldStateSchema,
|
|
422
422
|
init: () => EMPTY_STYLE_STATE,
|
|
423
423
|
apply: applyStyleEvent,
|
|
424
|
-
|
|
424
|
+
wire: {
|
|
425
|
+
viewSchema: styleSelectionViewSchema,
|
|
426
|
+
view: state => viewStyleSelection(runtime, state),
|
|
427
|
+
},
|
|
425
428
|
stateVersion: 2,
|
|
426
429
|
})
|
|
427
430
|
})
|
package/src/types.ts
CHANGED
|
@@ -12,6 +12,7 @@ import type { SessionId } from '@deepseek-ai/dsh-session'
|
|
|
12
12
|
import { z as zod } from 'zod'
|
|
13
13
|
import { defineDomain, domainTable } from '@deepseek-ai/dsh-storage-domain'
|
|
14
14
|
import type { OutputRenderer, RenderContext, RenderedText } from './renderers.ts'
|
|
15
|
+
import type { StyleFoldState } from './style-command.ts'
|
|
15
16
|
|
|
16
17
|
/** The reserved switch target that removes a session's selection. */
|
|
17
18
|
export const OFF = 'off'
|
|
@@ -80,10 +81,30 @@ export const styleSelectionViewSchema = zod.object({
|
|
|
80
81
|
currentValue: zod.string().min(1).nullable(),
|
|
81
82
|
})
|
|
82
83
|
|
|
84
|
+
/**
|
|
85
|
+
* Validates the `style` projection's persisted fold state before it seeds a
|
|
86
|
+
* fold (the `stateSchema` of the registered unit). The state is plain JSON:
|
|
87
|
+
* the settled selection (`current`, null when off) plus the in-flight switch
|
|
88
|
+
* parked by `command/run` and resolved by its paired `command/done`.
|
|
89
|
+
*/
|
|
90
|
+
export const styleFoldStateSchema = zod.object({
|
|
91
|
+
current: zod.string().min(1).nullable(),
|
|
92
|
+
pending: zod.object({
|
|
93
|
+
commandId: zod.string().min(1),
|
|
94
|
+
target: zod.union([
|
|
95
|
+
zod.object({ name: zod.string().min(1) }),
|
|
96
|
+
zod.object({ off: zod.literal(true) }),
|
|
97
|
+
]),
|
|
98
|
+
}).nullable(),
|
|
99
|
+
})
|
|
100
|
+
|
|
83
101
|
declare module '@deepseek-ai/dsh-session-projection/types' {
|
|
84
102
|
interface SessionProjectionMap {
|
|
85
103
|
style: StyleSelectionView
|
|
86
104
|
}
|
|
105
|
+
interface SessionProjectionStateMap {
|
|
106
|
+
style: StyleFoldState
|
|
107
|
+
}
|
|
87
108
|
}
|
|
88
109
|
|
|
89
110
|
/** The `ctx.outputRenderers` service: the output.render.* renderer registry. */
|