@mstar-harness/dsh 3.8.0 → 3.8.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.
@@ -1,10 +1,15 @@
1
1
  /**
2
- * Panel right sidebar (spec panel-zones §5): fixed 300px column, full height,
3
- * flex column — the workspace-state digest scrolls in its own region
4
- * (`flex: 1; min-height: 0; overflow-y: auto`), while the bottom meta dock
5
- * (version + harness dir) stays pinned and does NOT scroll with the digest.
2
+ * Workspace-state digest (plan sidebar §L2.1): the former 300px sidebar
3
+ * column, now IN FLOW at the end of the panel's scroll body — the digest is
4
+ * not a column any more, and its own nested scroller
5
+ * (`data-mstar-sidebar-scroll`) is retired: `[data-mstar-scroll]` is the
6
+ * panel's single scroller and this block is flow content inside it. The
7
+ * bottom meta dock moved to the shell's third zone (PanelView renders it
8
+ * directly), so this component renders ONLY the digest.
9
+ *
10
+ * `data-mstar-sidebar` stays on the digest block (anchor lineage).
6
11
  * Degradation: `state === null` renders the no-state note instead of the
7
- * digest (never a crash); the meta dock still renders from the source.
12
+ * digest (never a crash).
8
13
  */
9
14
  import * as React from 'react';
10
15
  import type { TranslateNS } from '@deepseek-ai/dsh-client-ui-slots';
@@ -1,16 +1,17 @@
1
1
  /**
2
2
  * Data hook for the workflow panel (spec §5): the panel's ONE data path.
3
3
  *
4
- * The persisted catalog row is an ANCHOR, not a data source: since the source
5
- * reduction the row carries exactly `{ kind: 'plugin', plugin:
6
- * 'mstar-engine-status', form: 'catalog' }`, and the structured payload lives
7
- * in the host's per-session snapshot store. So the hook
4
+ * The persisted catalog row is an ANCHOR, not a data source: rows are emitted
5
+ * as `{ kind: 'plugin', plugin: 'mstar-engine', form: 'catalog' }`, and the
6
+ * structured payload lives in the host's per-session snapshot store. So the
7
+ * hook
8
8
  *
9
9
  * 1. finds the LATEST anchor row in the active session's conversation log
10
10
  * (`kind === 'context'` + `form === 'catalog'` + the first-party `plugin`
11
- * arm with this plugin's identity) and takes its message time as the
12
- * refresh key — a re-emission appends a new row, the snapshot bump re-runs
13
- * this selection, and the newest anchor asks for the newest snapshot;
11
+ * arm with one of this plugin's anchor identities) and takes its message
12
+ * time as the refresh key — a re-emission appends a new row, the snapshot
13
+ * bump re-runs this selection, and the newest anchor asks for the newest
14
+ * snapshot;
14
15
  * 2. reads the session's workspace directory from the session standard kit's
15
16
  * session feed (the host cross-checks the asserted `cwd` against the
16
17
  * session AND the stored snapshot, so it must be the real one);
@@ -85,11 +86,11 @@ export type MstarEngineStatusView =
85
86
  };
86
87
  /** The seats the hook needs: the session standard kit + the plugin's client. */
87
88
  export interface MstarEngineStatusSeats {
88
- /** Selector hook over the chat target snapshot (the `conversation.view` kit). */
89
+ /** Selector hook over the chat target snapshot (the session standard kit's chat face). */
89
90
  useChat: SnapshotSelectorHook<ChatSnapshot>;
90
91
  /**
91
92
  * Selector hook over the Host session list (the global standard seat). The
92
- * view ring always hands it to a `conversation.view` entry; it stays
93
+ * session-scope slot dispatch always hands it to the panel; it stays
93
94
  * optional here because a program without the ui-session adapter does not
94
95
  * see the declaration merge (the panel then reports `session-cwd-unknown`).
95
96
  */
@@ -99,7 +100,7 @@ export interface MstarEngineStatusSeats {
99
100
  /** The plugin's engine-status client (absent in a composition without one). */
100
101
  engineStatus: MstarEngineStatusClient | undefined;
101
102
  }
102
- /** Latest `mstar-engine-status` anchor row in snapshot order, or null. */
103
+ /** Latest engine-status anchor row (either accepted identity) in snapshot order, or null. */
103
104
  export declare function latestEngineStatusRow(nodes: readonly ConversationNode[]): ContextMessageNode | null;
104
105
  /** Anchor row message time, or null when the log carries no anchor row. */
105
106
  export declare function selectAnchorTime(snapshot: ChatSnapshot): number | null;
@@ -1,8 +1,10 @@
1
1
  /**
2
2
  * Legend (spec panel-tabs §4/§6.2):
3
- * mounted on the AgentCanvasPage (the zone-dashboard footer legend is gone
4
- * with the WorkflowCanvas — spec §6.1). Describes ONLY the role-card status
5
- * treatments of the agent canvas — plan
3
+ * mounted on the AgentListPage, IN FLOW below the grouped list (the
4
+ * zone-dashboard footer legend is gone with the WorkflowCanvas — spec §6.1;
5
+ * the list page keeps the legend placement the canvas page established,
6
+ * after the content). Describes ONLY the role-card status
7
+ * treatments of the agent rows — plan
6
8
  * Task 1 (图例精简): the 7
7
9
  * collaboration-edge / layout entries (flow-actual / port / group /
8
10
  * sub-bucket / supervise / on-demand / unknown) are REMOVED — the legend is
@@ -1,13 +1,17 @@
1
1
  /**
2
2
  * TaskBoard — the tasks-zone kanban: the 5
3
- * PLAN_STATE_IDS columns (Todo / InProgress / InReview / Done /
4
- * blocked-unknown, in the projection's constant order), each with a localized
5
- * state-name header + count badge, plan cards (mono ellipsized id + status
6
- * chip — the `data-plan-id` / `data-plan-status` anchors shared with the
7
- * sidebar plan board), the dim inter-column flow arrows (spec §2.4:
8
- * Todo→InProgress→InReview→Done plus the InProgress↔Blocked back-edge, now
9
- * docking at the merged blocked-unknown column), the per-column 「更多」
10
- * expand affordance, and the muted "no plans" empty state.
3
+ * PLAN_STATE_IDS groups (Todo / InProgress / InReview / Done /
4
+ * blocked-unknown, in the projection's constant order) STACKED in flow (plan
5
+ * sidebar §L4.2 — the horizontal 5-column row cannot fit the 300px column),
6
+ * each with a header row carrying the flow glyph (the
7
+ * `data-kanban-arrow` labels + the `⇄` back-edge glyph: Todo→InProgress→
8
+ * InReview→Done plus the InProgress↔Blocked back-edge, docking at the merged
9
+ * blocked-unknown group), the localized state-name + count badge, plan cards
10
+ * (mono ellipsized id + status chip — the `data-plan-id` /
11
+ * `data-plan-status` anchors shared with the sidebar plan board), and the
12
+ * per-group 「更多」 expand affordance. The board rides the shell's shared
13
+ * `.groupGrid` class, so the ≥720px container spread reaches the groups
14
+ * (plan sidebar §L4.3 — one wide rule, not a second layout).
11
15
  *
12
16
  * The projection KEEPS every row (`column.plans` = the full column) and
13
17
  * reports `column.capped` (PLAN_CAP) when a column overflows. This render
@@ -19,7 +23,7 @@
19
23
  * keeps input order.
20
24
  *
21
25
  * Degradation (spec §8): state null / plans missing project to the same
22
- * 5-column skeleton with count 0 — the board renders it with a muted
26
+ * 5-group skeleton with count 0 — the board renders it with a muted
23
27
  * "no plans" note (`data-zone-empty="no-plans"`), NEVER an orange warn box.
24
28
  */
25
29
  import * as React from 'react';