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 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.0-rc.8` |
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.0-rc.8` |
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
+ [![Gitee](https://img.shields.io/badge/Gitee-mirror-c71d23?logo=gitee)](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.0-rc.8` |
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.0-rc.8` |
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
@@ -24,7 +24,7 @@
24
24
 
25
25
  | Surface | Status |
26
26
  |---|---|
27
- | Harness | DeepSeek Harness `0.1.0-rc.8` |
27
+ | Harness | DeepSeek Harness `0.1.1-rc.2` |
28
28
  | Node | `^22.19.0 || >=24.0.0` |
29
29
  | Platforms | 全部(host + Web 客户端) |
30
30
  | Model | 任意(系统提示注入) |
package/lib/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { _ as styleSelectionSchema, 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 styleSelectionViewSchema } from "./invariant-CEWlfnrw.js";
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
- schema: styleSelectionViewSchema,
735
+ stateSchema: styleFoldStateSchema,
736
736
  init: () => EMPTY_STYLE_STATE,
737
737
  apply: applyStyleEvent,
738
- view: (state) => viewStyleSelection(runtime, state),
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 { styleSelectionSchema 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, styleSelectionViewSchema as v };
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-CEWlfnrw.js";
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 };
@@ -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';
@@ -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":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -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 {
@@ -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;AAEjF,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,OAAO,QAAQ,2CAA2C,CAAC;IACzD,UAAU,oBAAoB;QAC5B,KAAK,EAAE,kBAAkB,CAAA;KAC1B;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"}
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.2",
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.0-rc.8"
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.0-rc.8",
127
- "@deepseek-ai/dsh-storage-domain": "0.1.0-rc.8",
128
- "@deepseek-ai/dsh-storage-json": "0.1.0-rc.8",
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.0-rc.8 <0.2.0",
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.0-rc.8",
165
- "@deepseek-ai/dsh-api-remotes": "0.1.0-rc.8",
166
- "@deepseek-ai/dsh-attachment": "0.1.0-rc.8",
167
- "@deepseek-ai/dsh-brand": "0.1.0-rc.8",
168
- "@deepseek-ai/dsh-client-locale": "0.1.0-rc.8",
169
- "@deepseek-ai/dsh-client-runtime": "0.1.0-rc.8",
170
- "@deepseek-ai/dsh-client-ui-commands": "0.1.0-rc.8",
171
- "@deepseek-ai/dsh-client-ui-input-trigger": "0.1.0-rc.8",
172
- "@deepseek-ai/dsh-client-ui-slots": "0.1.0-rc.8",
173
- "@deepseek-ai/dsh-commands": "0.1.0-rc.8",
174
- "@deepseek-ai/dsh-llm": "0.1.0-rc.8",
175
- "@deepseek-ai/dsh-scope": "0.1.0-rc.8",
176
- "@deepseek-ai/dsh-session": "0.1.0-rc.8",
177
- "@deepseek-ai/dsh-session-persistence": "0.1.0-rc.8",
178
- "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.0-rc.8",
179
- "@deepseek-ai/dsh-session-projection": "0.1.0-rc.8",
180
- "@deepseek-ai/dsh-settings": "0.1.0-rc.8",
181
- "@deepseek-ai/dsh-storage": "0.1.0-rc.8",
182
- "@deepseek-ai/dsh-storage-domain": "0.1.0-rc.8",
183
- "@deepseek-ai/dsh-storage-json": "0.1.0-rc.8",
184
- "@deepseek-ai/dsh-system-prompt": "0.1.0-rc.8",
185
- "@deepseek-ai/dsh-timeout": "0.1.0-rc.8",
186
- "@deepseek-ai/dsh-typert-protocol": "0.1.0-rc.8",
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
@@ -40,6 +40,7 @@ export {
40
40
  OFF,
41
41
  OUTPUT_STYLE_DOMAIN,
42
42
  STYLE_SOURCE,
43
+ styleFoldStateSchema,
43
44
  styleSelectionSchema,
44
45
  styleSelectionViewSchema,
45
46
  } from './types.ts'
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
- schema: styleSelectionViewSchema,
421
+ stateSchema: styleFoldStateSchema,
422
422
  init: () => EMPTY_STYLE_STATE,
423
423
  apply: applyStyleEvent,
424
- view: state => viewStyleSelection(runtime, state),
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. */