@mstar-harness/dsh 2.1.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.
Files changed (146) hide show
  1. package/README.i18n.yaml +7 -0
  2. package/README.md +448 -0
  3. package/README.zh.md +221 -0
  4. package/bundle/README.md +312 -0
  5. package/bundle/cordis.patch.yml +17 -0
  6. package/dist/client/index.d.ts +14 -0
  7. package/dist/client/panel/PanelView.d.ts +67 -0
  8. package/dist/client/panel/TabNav.d.ts +28 -0
  9. package/dist/client/panel/graph/event-log.d.ts +76 -0
  10. package/dist/client/panel/graph/project-graph.d.ts +499 -0
  11. package/dist/client/panel/graph/schema.d.ts +224 -0
  12. package/dist/client/panel/guards.d.ts +12 -0
  13. package/dist/client/panel/locale.d.ts +134 -0
  14. package/dist/client/panel/pages/AgentCanvasPage.d.ts +363 -0
  15. package/dist/client/panel/pages/EventLogPage.d.ts +48 -0
  16. package/dist/client/panel/pages/IterationInfoSection.d.ts +80 -0
  17. package/dist/client/panel/pages/IterationTaskPage.d.ts +37 -0
  18. package/dist/client/panel/panel-meta.d.ts +18 -0
  19. package/dist/client/panel/plan-sort.d.ts +54 -0
  20. package/dist/client/panel/sidebar.d.ts +17 -0
  21. package/dist/client/panel/state-section.d.ts +23 -0
  22. package/dist/client/panel/use-mstar-engine-status.d.ts +42 -0
  23. package/dist/client/panel/zones/Legend.d.ts +18 -0
  24. package/dist/client/panel/zones/TaskBoard.d.ts +40 -0
  25. package/dist/client.d.ts +1 -0
  26. package/dist/client.js +4486 -0
  27. package/dist/gates/_shared.d.ts +198 -0
  28. package/dist/gates/adapter.d.ts +131 -0
  29. package/dist/gates/agent-flow.d.ts +320 -0
  30. package/dist/gates/catalog.d.ts +118 -0
  31. package/dist/gates/dispatch.d.ts +152 -0
  32. package/dist/gates/seams.d.ts +152 -0
  33. package/dist/gates/skill-lint.d.ts +87 -0
  34. package/dist/gates/status.d.ts +81 -0
  35. package/dist/gates/tools.d.ts +37 -0
  36. package/dist/index.d.ts +107 -0
  37. package/dist/index.js +5748 -0
  38. package/dist/invariant.d.ts +15 -0
  39. package/dist/invariant.js +29 -0
  40. package/dist/service.d.ts +96 -0
  41. package/dist/types.d.ts +241 -0
  42. package/harness-commands/codebase-audit.md +40 -0
  43. package/harness-commands/iteration-drive.md +129 -0
  44. package/harness-commands/iteration-loop.md +139 -0
  45. package/harness-commands/iteration-start.md +179 -0
  46. package/harness-skills/grill-me/SKILL.md +10 -0
  47. package/harness-skills/mstar-audit/SKILL.md +183 -0
  48. package/harness-skills/mstar-audit/references/audit-playbook.md +130 -0
  49. package/harness-skills/mstar-audit/references/finding-format.md +65 -0
  50. package/harness-skills/mstar-branch-worktree/SKILL.md +219 -0
  51. package/harness-skills/mstar-branch-worktree/references/parallel-writable-pre-dispatch.md +68 -0
  52. package/harness-skills/mstar-coding-behavior/SKILL.md +147 -0
  53. package/harness-skills/mstar-compound/SKILL.md +105 -0
  54. package/harness-skills/mstar-compound/assets/resolution-template.md +94 -0
  55. package/harness-skills/mstar-compound/references/category-mapping.md +37 -0
  56. package/harness-skills/mstar-compound/references/compound-workflow.md +155 -0
  57. package/harness-skills/mstar-compound/references/concepts-vocabulary.md +44 -0
  58. package/harness-skills/mstar-compound/references/schema.yaml +122 -0
  59. package/harness-skills/mstar-compound-refresh/SKILL.md +140 -0
  60. package/harness-skills/mstar-compound-refresh/references/project-knowledge-bootstrap.md +164 -0
  61. package/harness-skills/mstar-design-md/SKILL.md +142 -0
  62. package/harness-skills/mstar-design-md/references/completeness-checklist.md +181 -0
  63. package/harness-skills/mstar-design-md/references/design-md-spec.md +508 -0
  64. package/harness-skills/mstar-design-md/references/vercel-example.md +200 -0
  65. package/harness-skills/mstar-design-md/templates/DESIGN.dark.md.template +354 -0
  66. package/harness-skills/mstar-design-md/templates/DESIGN.md.template +474 -0
  67. package/harness-skills/mstar-dispatch-gates/SKILL.md +128 -0
  68. package/harness-skills/mstar-dispatch-gates/references/leaf-executor-checklist.md +23 -0
  69. package/harness-skills/mstar-harness-core/SKILL.md +180 -0
  70. package/harness-skills/mstar-host/SKILL.md +78 -0
  71. package/harness-skills/mstar-host/references/_shared/host-role-binding-core.md +51 -0
  72. package/harness-skills/mstar-host/references/_shared/plan-mode-bridge-core.md +91 -0
  73. package/harness-skills/mstar-host/references/codex.md +61 -0
  74. package/harness-skills/mstar-host/references/cursor-plan-mode-bridge.md +159 -0
  75. package/harness-skills/mstar-host/references/cursor.md +183 -0
  76. package/harness-skills/mstar-host/references/dsh.md +502 -0
  77. package/harness-skills/mstar-host/references/kimi-plan-mode-bridge.md +36 -0
  78. package/harness-skills/mstar-host/references/kimi.md +136 -0
  79. package/harness-skills/mstar-host/references/omp-plan-mode-bridge.md +32 -0
  80. package/harness-skills/mstar-host/references/omp.md +244 -0
  81. package/harness-skills/mstar-host/references/opencode.md +76 -0
  82. package/harness-skills/mstar-host/references/parallel-dispatch.md +68 -0
  83. package/harness-skills/mstar-host/references/zcode-plan-mode-bridge.md +36 -0
  84. package/harness-skills/mstar-host/references/zcode.md +129 -0
  85. package/harness-skills/mstar-iteration/SKILL.md +393 -0
  86. package/harness-skills/mstar-iteration/references/autonomous-direction-lock.md +90 -0
  87. package/harness-skills/mstar-iteration/references/iteration-artifact-boundaries.md +103 -0
  88. package/harness-skills/mstar-iteration/references/iteration-compass-template.md +142 -0
  89. package/harness-skills/mstar-iteration/references/iteration-corpus-hygiene.md +45 -0
  90. package/harness-skills/mstar-iteration/references/iteration-workspace-readme-template.md +27 -0
  91. package/harness-skills/mstar-iteration/references/phase-2-worktree-lease.md +193 -0
  92. package/harness-skills/mstar-iteration/references/phase-3-iteration-close.md +95 -0
  93. package/harness-skills/mstar-iteration/references/phase-4-5-pr-delivery.md +84 -0
  94. package/harness-skills/mstar-iteration/references/phase5-helper-discovery.md +24 -0
  95. package/harness-skills/mstar-phase-gates/SKILL.md +112 -0
  96. package/harness-skills/mstar-plan-artifacts/SKILL.md +46 -0
  97. package/harness-skills/mstar-plan-artifacts/references/done-compaction.md +88 -0
  98. package/harness-skills/mstar-plan-artifacts/references/knowledge-and-designs.md +100 -0
  99. package/harness-skills/mstar-plan-artifacts/references/plan-files-and-reports.md +99 -0
  100. package/harness-skills/mstar-plan-artifacts/references/plan-quality-bar.md +99 -0
  101. package/harness-skills/mstar-plan-artifacts/references/status-and-residuals.md +570 -0
  102. package/harness-skills/mstar-plan-artifacts/templates/README.md +9 -0
  103. package/harness-skills/mstar-plan-artifacts/templates/notes.empty.json +5 -0
  104. package/harness-skills/mstar-plan-artifacts/templates/plan.main.md +54 -0
  105. package/harness-skills/mstar-plan-artifacts/templates/plans-done.empty.json +3 -0
  106. package/harness-skills/mstar-plan-artifacts/templates/status.empty.json +7 -0
  107. package/harness-skills/mstar-plan-conventions/SKILL.md +165 -0
  108. package/harness-skills/mstar-plan-conventions/references/artifact-storage-paths.md +50 -0
  109. package/harness-skills/mstar-plan-conventions/references/effort-estimation.md +38 -0
  110. package/harness-skills/mstar-plan-conventions/references/harness-bootstrap-and-agents-layering.md +93 -0
  111. package/harness-skills/mstar-review-qc/SKILL.md +60 -0
  112. package/harness-skills/mstar-review-qc/references/review-responsibility-boundaries.md +54 -0
  113. package/harness-skills/mstar-roles/SKILL.md +86 -0
  114. package/harness-skills/mstar-roles/references/_shared/leaf-executor-core.md +46 -0
  115. package/harness-skills/mstar-roles/references/architect.md +114 -0
  116. package/harness-skills/mstar-roles/references/code-reviewer.md +109 -0
  117. package/harness-skills/mstar-roles/references/frontend-dev.md +70 -0
  118. package/harness-skills/mstar-roles/references/fullstack-dev-shared.md +89 -0
  119. package/harness-skills/mstar-roles/references/ops-engineer.md +78 -0
  120. package/harness-skills/mstar-roles/references/product-manager.md +107 -0
  121. package/harness-skills/mstar-roles/references/project-manager/dispatch-and-assignment.md +198 -0
  122. package/harness-skills/mstar-roles/references/project-manager/plan-management.md +61 -0
  123. package/harness-skills/mstar-roles/references/project-manager/qa-trigger-matrix.md +56 -0
  124. package/harness-skills/mstar-roles/references/project-manager/qc-and-residuals.md +98 -0
  125. package/harness-skills/mstar-roles/references/project-manager/routing-and-dev-allocation.md +99 -0
  126. package/harness-skills/mstar-roles/references/project-manager.md +310 -0
  127. package/harness-skills/mstar-roles/references/prompt-engineer.md +71 -0
  128. package/harness-skills/mstar-roles/references/qa-engineer/acceptance-gate.md +62 -0
  129. package/harness-skills/mstar-roles/references/qa-engineer.md +79 -0
  130. package/harness-skills/mstar-roles/references/qc-specialist/deep-review-lenses.md +95 -0
  131. package/harness-skills/mstar-roles/references/qc-specialist/report-template.md +72 -0
  132. package/harness-skills/mstar-roles/references/qc-specialist/reviewer-checklist.md +44 -0
  133. package/harness-skills/mstar-roles/references/qc-specialist/reviewer-workflow.md +57 -0
  134. package/harness-skills/mstar-roles/references/qc-specialist-shared.md +128 -0
  135. package/harness-skills/mstar-roles/references/writing-specialist.md +59 -0
  136. package/harness-skills/mstar-sdd/SKILL.md +133 -0
  137. package/harness-skills/mstar-sdd/references/file-handoffs.md +83 -0
  138. package/harness-skills/mstar-sdd/references/implementer-continuation-prompt.md +44 -0
  139. package/harness-skills/mstar-sdd/references/implementer-prompt.md +56 -0
  140. package/harness-skills/mstar-sdd/references/sticky-implementer-session.md +103 -0
  141. package/harness-skills/mstar-sdd/references/task-reviewer-prompt.md +53 -0
  142. package/harness-skills/mstar-skill-authoring/SKILL.md +162 -0
  143. package/harness-skills/mstar-skill-authoring/references/skillsbench-authoring.md +117 -0
  144. package/harness-skills/mstar-strategy/SKILL.md +130 -0
  145. package/harness-skills/pm/SKILL.md +40 -0
  146. package/package.json +92 -0
@@ -0,0 +1,224 @@
1
+ /**
2
+ * Graph schema constants (spec panel-layout-graph §2.0): the workflow loop
3
+ * (phase ring — mstar-iteration Phase 1–5) and the per-plan status machine
4
+ * (mstar-plan-artifacts) are CLIENT-SIDE DESIGN KNOWLEDGE. They are written
5
+ * once here with their provenance and STRICTLY SEPARATED from catalog
6
+ * evidence (`iteration.gate.transition` / `state.plans[].status`), which
7
+ * `projectGraph` projects onto this skeleton.
8
+ *
9
+ * Known limitation (spec §2.3 — a documented constraint, not a defect): the
10
+ * engine phase gate only evaluates Phase 2→3→4, so the catalog never emits
11
+ * `merge-ready` as current — Step 5 stays schema-only idle. Step 1
12
+ * (`iteration-start`) IS compass-driven current during Phase 1 — the
13
+ * `compassStatus: 'active'` field (plan 20260811-panel-f4-iteration-zone)
14
+ * lights it, so it is NOT a "never current" node; only Step 5 has no source
15
+ * that can light it. The loop edge is planning semantics (one iteration
16
+ * closes, the next begins).
17
+ */
18
+ /** Phase ring node ids in loop order (spec §2.3). */
19
+ export declare const PHASE_IDS: readonly ["iteration-start", "autonomous-execute", "iteration-close", "pr-delivery", "merge-ready"];
20
+ export type PhaseId = (typeof PHASE_IDS)[number];
21
+ /** Plan state machine bucket ids (spec §2.4): 4 known states + the merged
22
+ * `blocked-unknown` catch-all (plan 20260813-panel-quick-fixes Task 1 — the
23
+ * `Blocked` state and the former `unknown` catch-all fold into ONE column). */
24
+ export declare const PLAN_STATE_IDS: readonly ["Todo", "InProgress", "InReview", "Done", "blocked-unknown"];
25
+ export type PlanStateId = (typeof PLAN_STATE_IDS)[number];
26
+ export interface PhaseEdge {
27
+ source: PhaseId;
28
+ target: PhaseId;
29
+ kind: 'forward' | 'loop';
30
+ }
31
+ /** Phase ring edges: forward start→…→merge-ready, plus the loop merge-ready→start (spec §2.3). */
32
+ export declare const PHASE_EDGES: PhaseEdge[];
33
+ /** Plan state machine edges (spec §2.4): `Done` is terminal (no out-edges);
34
+ * `blocked-unknown` keeps the InProgress↔Blocked recovery back-edge (plan
35
+ * 20260813-panel-quick-fixes Task 1 — the merged column docks the Blocked ⇄). */
36
+ export declare const PLAN_STATE_EDGES: {
37
+ source: PlanStateId;
38
+ target: PlanStateId;
39
+ }[];
40
+ /** `gate.transition` → phase id (spec §2.3): the engine emits only these three. */
41
+ export declare const TRANSITION_TO_PHASE: Readonly<Record<string, PhaseId>>;
42
+ /**
43
+ * Expected role pipeline (spec agent-flow-catalog-graph §2.3): WHO is expected
44
+ * to be dispatched in each iteration phase. Like the phase ring / plan state
45
+ * machine above, this is CLIENT-SIDE DESIGN KNOWLEDGE — written once with its
46
+ * provenance and STRICTLY SEPARATED from catalog evidence: `projectGraph`'s
47
+ * flow projection lights this skeleton with `state.agentFlow` dispatch events
48
+ * (stage lit/count) and flags events whose role is NOT in this union
49
+ * (unexpected — e.g. `general` / `scout` or unregistered roles).
50
+ *
51
+ * Provenance (mstar role vocabulary — exact strings, dispatch order):
52
+ * - review-edit-chain: product-manager → architect → writing-specialist —
53
+ * the mstar-iteration §1.6 Review & Edit chain (Prepare-phase design
54
+ * review, Phase 1).
55
+ * - sdd-implement: fullstack-dev / fullstack-dev-2 / frontend-dev /
56
+ * code-reviewer — the mstar-sdd implementer roles PLUS the L2 task
57
+ * reviewer `code-reviewer` (v2.1.1, upstream roles.ts SSOT — the former
58
+ * `generalPurpose` seat; Phase 2 task execution + per-task review).
59
+ * - qc-tri: qc-specialist ×3 — the mstar-sdd plan QC triage (Phase 2).
60
+ * - qa-gate: qa-engineer — the QA gate (Phase 2 closing — the pipeline
61
+ * TERMINAL stage; ops-engineer is NOT in the pipeline).
62
+ * - Phase 3–5 (iteration-close / pr-delivery / merge-ready) dispatch no
63
+ * routine subagents → no stages (spec §2.3).
64
+ *
65
+ * Off-pipeline roles (plan 20260811-panel-f3-agent-general) live in the
66
+ * KNOWN_AGENTS roster with `zone` markers, NOT here: `ops-engineer` and
67
+ * `prompt-engineer` are on-demand dispatches (mstar-roles routing table,
68
+ * as needed) — they stay OUTSIDE this union (their event-log `unexpected`
69
+ * badge is unchanged; bucket membership and expectedness are ORTHOGONAL
70
+ * dimensions — plan 20260812-panel-f5-agent-layout Task 1, see
71
+ * SDD_BUCKET_ROLES). The single `general` bucket (plan
72
+ * 20260811-panel-f3-agent-general) collects every unmatched / anonymous
73
+ * dispatch (role ''), plus stray off-roster roles like `scout`; the SDD
74
+ * per-task reviewer is now the PIPELINE role `code-reviewer` (v2.1.1 — the
75
+ * former `generalPurpose` seat), so the `general` bucket no longer
76
+ * describes a pipeline seat.
77
+ *
78
+ * General-bucket PLACEMENT (plan 20260812-panel-f5-agent-layout Task 1 —
79
+ * user 2026-08-12 decision): the `general` bucket moves to its OWN rightmost
80
+ * UNKNOWN column — the projection still emits `zone: 'general'` entities
81
+ * (semantics unchanged, placement is a RENDER-layer decision), and the
82
+ * render (Task 2) places them in that rightmost column. The earlier F4.2
83
+ * placement (BOTTOM INSIDE the `sdd-implement` column bucket) is
84
+ * superseded by the F5 user decision; the former SDD implement ↔ review
85
+ * skeleton EDGE (sdd-implement → general back-edge, the `loop: true` arrow)
86
+ * stays REMOVED from the projection (plan 20260811-panel-f4-agent-view Task
87
+ * 1); the F5 supervise line is a SEPARATE sub-bucket edge (see
88
+ * project-graph.ts `superviseEdges`).
89
+ *
90
+ * Matching rules (spec §2.3 — implemented by `projectGraph`'s flow
91
+ * projection): `expected` ⟺ `event.role` ∈ the union of ALL `roles` below
92
+ * (EXACT string — `qc-specialist-2` never folds into `qc-specialist`); a role
93
+ * listed in several stages matches the FIRST stage in this constant order;
94
+ * `unexpected` ⟺ role ∉ union. Settle rows carry no role (T1 sets ''), so
95
+ * they never match a stage.
96
+ */
97
+ export interface ExpectedRoleStage {
98
+ /** The iteration phase this pipeline stage belongs to (PhaseId union). */
99
+ phase: PhaseId;
100
+ /** Pipeline-stage id — the render + match key (`${phase}:${stage}`). */
101
+ stage: string;
102
+ /** Expected role ids in dispatch order (mstar-roles / mstar-sdd vocabulary). */
103
+ roles: readonly string[];
104
+ }
105
+ /** Expected role pipeline skeleton: 4 stages (spec agent-flow-catalog-graph
106
+ * §2.3; plan 20260812-panel-f5-agent-layout Task 1 — `code-reviewer` joins
107
+ * the sdd-implement stage: v2.1.1 makes the SDD L2 task reviewer a routine
108
+ * pipeline role, the former `generalPurpose` seat; ops-engineer /
109
+ * prompt-engineer stay OFF the pipeline — on-demand; qa-gate is the
110
+ * terminal stage). */
111
+ export declare const EXPECTED_ROLE_FLOW: readonly ExpectedRoleStage[];
112
+ /**
113
+ * SDD sub-bucket membership (plan 20260812-panel-f5-agent-layout Task 1 —
114
+ * CLIENT-SIDE DESIGN KNOWLEDGE): which roles live in which sub-bucket of the
115
+ * `sdd-implement` column — `implementor` (the implementer roles PLUS the
116
+ * on-demand ops-engineer / prompt-engineer: they are implementor-family
117
+ * dispatches, not a separate stage) and `reviewer` (code-reviewer, the SDD
118
+ * L2 task reviewer — v2.1.1, upstream roles.ts SSOT).
119
+ *
120
+ * ORTHOGONAL to expectedness: sub-bucket membership is a LAYOUT dimension,
121
+ * the `expected` badge follows the EXPECTED_ROLE_FLOW union (a separate
122
+ * dimension). `implementor` ⊇ the sdd-implement union roles (it also holds
123
+ * ops-engineer / prompt-engineer, which stay OUTSIDE the union — their
124
+ * event-log `unexpected` badge is unchanged); `reviewer` ⊆ the union. Do NOT
125
+ * add on-demand roles to EXPECTED_ROLE_FLOW.roles to "fix" their badge —
126
+ * that would silently flip it (compass Non-Goal: no event-log classification
127
+ * changes).
128
+ */
129
+ export declare const SDD_BUCKET_ROLES: {
130
+ implementor: readonly string[];
131
+ reviewer: readonly string[];
132
+ };
133
+ /**
134
+ * The known-agent roster (spec §4 / §6.2 / decision point D3 + plan
135
+ * 20260811-panel-f3-agent-general + plan 20260812-panel-f5-agent-layout Task
136
+ * 1): the static FULL set of ASSIGNABLE roles the panel may ever show —
137
+ * every EXPECTED_ROLE_FLOW role PLUS the off-pipeline roles `prompt-engineer`
138
+ * (in the mstar-roles table but not in the pipeline) and `ops-engineer`
139
+ * (on-demand ops dispatch), PLUS `general` (the single general bucket — see
140
+ * below). Exactly 14 roles (upstream v2.1.1 roles.ts = 13 assignable +
141
+ * project-manager is the semantic SSOT — the roster adds `code-reviewer`,
142
+ * the SDD L2 task reviewer, to reach 14).
143
+ *
144
+ * `explore` is DELIBERATELY NOT in the roster (plan
145
+ * 20260811-panel-f3-agent-general — user F3 feedback): it is a scouting
146
+ * adjunct role with no standalone presentation value, so it is removed from
147
+ * the canvas (a stray `explore` dispatch still folds into the `general`
148
+ * bucket — it is not a KNOWN_AGENTS id).
149
+ *
150
+ * `project-manager` is deliberately NOT in the roster (plan
151
+ * 20260811-panel-f2-quickfix Item 2 — user F2 feedback): it is the PRIMARY
152
+ * orchestration agent (mstar-roles mapping `mode: primary`), the seat that
153
+ * DISPATCHES subagents — never an assignable subagent itself, so it must
154
+ * not appear as a dispatchable entity in the 代理执行 tab.
155
+ *
156
+ * The panel NEVER hides a known agent: every member without dispatch
157
+ * evidence projects as an `idle` entity (spec §6.2 — degraded/empty
158
+ * branches included). `stage` = the role's stage in EXPECTED_ROLE_FLOW
159
+ * (first constant-order match); null for the off-pipeline roles, which
160
+ * carry an explicit `zone` — `on-demand` (ops-engineer / prompt-engineer:
161
+ * implementor-sub-bucket dispatches with an on-demand badge — the render
162
+ * places them inside the `sdd-implement` column's implementor partition,
163
+ * Task 2) or `general` (the general bucket = ANY unmatched / anonymous
164
+ * dispatch (role '') in the projection — the rightmost UNKNOWN column,
165
+ * Task 2).
166
+ *
167
+ * General-bucket placement (plan 20260812-panel-f5-agent-layout Task 1,
168
+ * user 2026-08-12): the `general` bucket gets its OWN rightmost unknown
169
+ * column — the projection keeps emitting `zone: 'general'` entities (the
170
+ * zone VALUE is unchanged — placement is a render-layer decision, Task 2).
171
+ */
172
+ /** The general-bucket id (plan 20260811-panel-f3-agent-general): the single
173
+ * bucket every off-roster / anonymous dispatch folds into — the former SDD
174
+ * per-task reviewer seat is now the PIPELINE role `code-reviewer` (v2.1.1),
175
+ * so `general` is purely the unmatched/anonymous catch-all (role '' +
176
+ * stray roles like `scout`). Single source for the value:
177
+ * `entityKeyOf`'s fallback key, `roleZone` / `idleZone` defaults and the
178
+ * KNOWN_AGENTS roster id ALL derive from it — renaming the bucket changes
179
+ * exactly one constant.
180
+ *
181
+ * Placement (plan 20260812-panel-f5-agent-layout Task 1, user 2026-08-12):
182
+ * the bucket gets its OWN rightmost UNKNOWN canvas column — the render
183
+ * (Task 2) places `zone: 'general'` entities there; the former F4.2
184
+ * placement (BOTTOM INSIDE the `sdd-implement` column) is superseded. The
185
+ * `'general'` literal in the `AgentZone` / `KnownAgent.zone` unions below
186
+ * is the type-level binding (a union member cannot reference a value) —
187
+ * keep them in sync with this constant. */
188
+ export declare const GENERAL_BUCKET: "general";
189
+ /**
190
+ * Agent-entity column zone (plan 20260811-panel-f3-agent-general + plan
191
+ * 20260812-panel-f5-agent-layout Task 1): `'flow'` (stage columns),
192
+ * `'on-demand'` (ops-engineer / prompt-engineer — implementor-sub-bucket
193
+ * dispatches, rendered inside the `sdd-implement` column's implementor
194
+ * partition with an on-demand badge; the standalone on-demand column is
195
+ * REMOVED — Task 2) or `'general'` (the general bucket). Placement
196
+ * semantics (user 2026-08-12 decision): `'general'` renders in its OWN
197
+ * rightmost UNKNOWN column (Task 2). The zone VALUE is projection-owned and
198
+ * unchanged; only the render layout (Task 2) changes.
199
+ */
200
+ export type AgentZone = 'flow' | 'on-demand' | 'general';
201
+ export interface KnownAgent {
202
+ /** Role id — the entity key and the default card title (render may localize). */
203
+ id: string;
204
+ /** Optional display label; render falls back to `id` when absent. */
205
+ displayName?: string;
206
+ /** The role's EXPECTED_ROLE_FLOW stage; null → off-pipeline role. */
207
+ stage?: {
208
+ phase: PhaseId;
209
+ stage: string;
210
+ } | null;
211
+ /** Off-pipeline zone (plan 20260811-panel-f3-agent-general): 'on-demand'
212
+ * for the implementor-sub-bucket on-demand roles (ops-engineer /
213
+ * prompt-engineer — rendered inside the `sdd-implement` column's
214
+ * implementor partition with an on-demand badge, plan
215
+ * 20260812-panel-f5-agent-layout Task 1 / Task 2), 'general' (the default
216
+ * when omitted) for the general bucket. The `'general'` literal is the
217
+ * type-level binding of `GENERAL_BUCKET` (see above) — a union member
218
+ * cannot reference a value. */
219
+ zone?: 'on-demand' | 'general';
220
+ }
221
+ /** Known-agent roster — 14 roles, spec §4 order (project-manager + explore
222
+ * excluded; `code-reviewer` added by plan 20260812-panel-f5-agent-layout
223
+ * Task 1 — upstream v2.1.1 roles.ts is the semantic SSOT). */
224
+ export declare const KNOWN_AGENTS: readonly KnownAgent[];
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Field-level degradation guards for the runtime `mstar-engine-status` source
3
+ * (spec §2.4): the client does not exhaustively validate the union — it
4
+ * narrows by `kind`, then degrades per field. Unknown/missing values render
5
+ * as `unknown`, never as guessed values.
6
+ */
7
+ /** String field: non-empty string, else null (missing → `unknown`). */
8
+ export declare function str(value: unknown): string | null;
9
+ /** Boolean field: real boolean, else null. */
10
+ export declare function bool(value: unknown): boolean | null;
11
+ /** Count field: finite number, else null. */
12
+ export declare function count(value: unknown): number | null;
@@ -0,0 +1,134 @@
1
+ /**
2
+ * `mstar-panel` locale namespace (spec §4.3): en (default) + zh, registered
3
+ * via `ctx.locale.register(NS, { zh, en })` at plugin apply. The key union is
4
+ * merged into the ui-slots `LocaleNamespaceMap` so the framework synthesizes
5
+ * a typed `t` seat for the panel component (dictionary keys are checked
6
+ * against the union by `LocaleDictOf`).
7
+ *
8
+ * T2 (spec panel-zones §2, plan 20260810-panel-canvas-zones): the react-flow
9
+ * graph is replaced by the zone dashboard — the `graph.phase.*` /
10
+ * `graph.state.*` / react-flow `graph.legend.*` key families are gone with
11
+ * the graph library; only `graph.pass` / `graph.fail` remain (the
12
+ * gate-verdict labels reused by the tabs-shell IterationTaskPage head), and
13
+ * the new `zone.*` family covers the three zone titles/placeholders + the
14
+ * zone-semantic legend. The `flow.*` key family (agent-flow event dock) is
15
+ * unchanged. The old footer's violations copy (`graph.violations` /
16
+ * `graph.no-violations`) is carried by the event-log plan — it adds its own
17
+ * dedicated keys when that page lands, NOT reserved in this union.
18
+ *
19
+ * T3 (spec panel-zones §3): the iteration zone is filled in — `zone.phase.*`
20
+ * (the 5 PHASE_IDS names, the `graph.phase.*` wording moved into the zone
21
+ * namespace), `zone.iteration.*` (Step N/5 label, Step N badge, step-state
22
+ * chips) and `zone.branches.*` (the branch panel
23
+ * moved from the sidebar). `zone.iteration.placeholder` is gone with the
24
+ * placeholder.
25
+ *
26
+ * T4 (spec panel-zones §3): the task board kanban is filled in —
27
+ * `zone.state.*` (the 5 PLAN_STATE_IDS column names — en is the raw status
28
+ * word, zh the localized name; `blocked-unknown` is the merged
29
+ * Blocked/unknown column, plan 20260813-panel-quick-fixes Task 1),
30
+ * `zone.tasks.total` (zone header plan total), `zone.tasks.no-plans` (the
31
+ * muted empty note), `zone.tasks.more` (the per-column `+N more` expand
32
+ * affordance) and `zone.tasks.collapse` (the 「收起」 collapse label).
33
+ * `zone.tasks.placeholder` is gone with the placeholder.
34
+ *
35
+ * T2 (spec panel-zones §4, plan 20260810-panel-agent-flow-zone): the agents
36
+ * zone is filled in — `zone.agents.summary` (`N executing · M pending`).
37
+ * `zone.agents.placeholder` is gone with the placeholder; the dashed
38
+ * "待执行" chip (`pending-label`) and the animated next-edge label (`next`)
39
+ * keys were removed with the AgentFlowZone in the agent-canvas QC wave
40
+ * (S-001 — the free canvas renders neither, so they had zero consumers).
41
+ *
42
+ * T3 (same plan): the dock is collapsible (the frame is a native <details>,
43
+ * header = <summary>) and the legend gains the entity-status swatches —
44
+ * `zone.legend.agent-running` / `zone.legend.agent-settled` (the status-dot
45
+ * treatments of the entity cards; the `zone.agents.*` family itself stays
46
+ * minimal — title/summary, both rendered by the canvas, so no
47
+ * `zone.agents.status.*` family is added: a status TEXT on the cards would be
48
+ * dead strings, the spec §4 card shows a status point, and reusing `flow.*`
49
+ * would conflate event status words (dispatched/settled ok) with entity
50
+ * status words).
51
+ *
52
+ * T1 (spec panel-tabs §2/§6.1, plan 20260811-panel-tabs-shell): the panel is
53
+ * re-laid-out as Tabs + Content — `tab.*` covers the 3 fixed MenuTab labels
54
+ * (任务迭代 / 代理执行 / 事件记录) and `page.*.placeholder` the muted
55
+ * placeholder copy for the agents/events tabs (the real pages land with the
56
+ * agent-canvas / event-log plans; Task 3 refines the placeholders).
57
+ *
58
+ * T2 (spec panel-tabs §3, plan 20260811-panel-tabs-shell Task 2): the
59
+ * IterationTaskPage head copy — `page.iteration.*` (the collapsed one-line
60
+ * "not started" note + the expand/collapse toggle hints). The head reuses the
61
+ * existing `zone.iteration.*` (step badge / Step n/5 label / step-state
62
+ * chips), `zone.phase.*` (the 5 PHASE_IDS names) and `zone.branches.*`
63
+ * (branch panel) keys; the kanban reuses `zone.tasks.*` / `zone.state.*`.
64
+ *
65
+ * T3 (spec panel-tabs §4, plan 20260811-panel-agent-canvas Task 3): the
66
+ * legend re-mounts on the agent canvas — `zone.legend.agent-idle` (the idle
67
+ * card treatment) joins the swatch family and the collaboration-edge labels
68
+ * (flow-expected / flow-actual / general) now describe the canvas rendering
69
+ * (dashed/solid lines + the general bucket — plan
70
+ * 20260811-panel-f3-agent-general replaced the former flow-unexpected entry)
71
+ * instead of the retired zone-dashboard stages; `flow.settle-only` is the
72
+ * distinct muted copy for the settle-only canvas note (review T2-Imp-2
73
+ * restored the old zone's separate anchor).
74
+ *
75
+ * T2 (plan 20260811-panel-f4-agent-view): the general bucket has NO column
76
+ * of its own anymore — `zone.agents.general` is REPURPOSED as the small
77
+ * in-bucket label on the general card (which sinks to the bottom of the
78
+ * `sdd-implement` column — the value stays the user-fixed literal 'general'
79
+ * in both locales); `zone.legend.general` rewords to the sink semantics
80
+ * (「general 位于 sdd-implement 桶内底部」).
81
+ *
82
+ * T2 (plan 20260812-panel-f5-agent-layout Task 2 — the layout rework
83
+ * supersedes the F4.2 sink): the general bucket moves to its OWN rightmost
84
+ * UNKNOWN column — `zone.agents.unknown` (the column label, 未知 / unknown);
85
+ * the in-bucket general tag is gone (the general card's title + the unknown
86
+ * column label carry it), so `zone.agents.general` is REMOVED. The
87
+ * `sdd-implement` column splits into sub-buckets — `zone.agents.bucket.*`
88
+ * (implementor / sdd-reviewer caption labels); `zone.agents.on-demand`
89
+ * re-keys as the on-demand BADGE (the implementor-sub-bucket roles, the
90
+ * standalone on-demand column is removed). The legend entries gain
91
+ * `zone.legend.sub-bucket` / `zone.legend.supervise` / `zone.legend.unknown`
92
+ * (the former 'general' entry is replaced by 'unknown'); `zone.legend.general`
93
+ * is REMOVED and `zone.legend.on-demand` rewords to the badge semantics.
94
+ *
95
+ * T5 (plan 20260812-panel-f5-design-system Task 5 — the 2026-08-12 edge
96
+ * rework supersedes the Task-2 unknown COLUMN): the standalone rightmost
97
+ * unknown column is REMOVED (user feedback #3 — FOUR columns total) — the
98
+ * general bucket sinks into an unknown SUB-PARTITION at the bottom of the
99
+ * LAST column, so `zone.agents.unknown` (the old column label) is REMOVED
100
+ * and `zone.agents.unknown-sub` (「unknown / 未匹配角色」) is the sub-partition
101
+ * caption. The legend drops the expected / next entries (both edges are
102
+ * REMOVED, design doc §2.2) and gains `zone.legend.port` (the hover-visible
103
+ * card ports, design doc §2.5); `zone.legend.flow-actual` / `supervise` /
104
+ * `unknown` reword to the bezier / port-anchored / side-gap / sub-partition
105
+ * semantics.
106
+ *
107
+ * T3 (plan 20260812-panel-f5-agent-layout Task 3): the no-harness branch
108
+ * renders a CENTERED inactive-state card (icon + title + hint, no tabs /
109
+ * no sidebar) instead of the left-aligned hint — `empty.no-harness-hint`
110
+ * is the explanatory secondary copy under the reused `empty.no-harness`
111
+ * title.
112
+ *
113
+ * T1 (plan 20260813-panel-agent-canvas-legend-layout Task 1 — 图例精简): the
114
+ * legend narrows to the 3 role-card status entries —
115
+ * `zone.legend.flow-actual` / `port` / `group` / `sub-bucket` / `supervise` /
116
+ * `on-demand` / `unknown` are REMOVED (the collaboration-edge / layout tech
117
+ * entries; the canvas itself keeps the edges / ports / partitions — only the
118
+ * legend copy drops them). `zone.legend.agent-running` / `agent-settled` /
119
+ * `agent-idle` remain.
120
+ */
121
+ import type { LocaleDictOf } from '@deepseek-ai/dsh-client-ui-slots';
122
+ /** Locale namespace id for the workflow-viz panel. */
123
+ export declare const NS = "mstar-panel";
124
+ /** Panel dictionary keys (union of every translatable string the panel renders). */
125
+ export type PanelKey = 'view.mstar-workflow' | 'tab.tasks' | 'tab.agents' | 'tab.events' | 'page.iteration.not-started' | 'page.iteration.expand' | 'page.iteration.collapse' | 'event-log.section.events' | 'event-log.section.violations' | 'event-log.empty' | 'event-log.empty.events' | 'event-log.empty.violations' | 'event-log.field.role' | 'event-log.field.agent' | 'event-log.field.stage' | 'event-log.field.plan' | 'event-log.field.task' | 'event-log.field.category' | 'event-log.field.time' | 'event-log.field.kind' | 'event-log.field.status' | 'event-log.field.expected' | 'event-log.field.settled' | 'event-log.field.duration' | 'event-log.field.severity' | 'event-log.field.code' | 'event-log.field.message' | 'event-log.kind.dispatch' | 'event-log.kind.settle' | 'event-log.yes' | 'event-log.no' | 'empty.waiting' | 'empty.no-harness' | 'empty.no-harness-hint' | 'watermark.version' | 'watermark.harness' | 'watermark.none' | 'panel.unknown' | 'graph.pass' | 'graph.fail' | 'zone.legend.title' | 'zone.legend.agent-running' | 'zone.legend.agent-settled' | 'zone.legend.agent-idle' | 'zone.iteration.step-label' | 'zone.iteration.step-badge' | 'zone.iteration.step.current' | 'zone.iteration.step.next' | 'zone.iteration.step.done' | 'zone.iteration.step.idle' | 'zone.phase.iteration-start' | 'zone.phase.autonomous-execute' | 'zone.phase.iteration-close' | 'zone.phase.pr-delivery' | 'zone.phase.merge-ready' | 'zone.branches.title' | 'zone.branches.iteration-base' | 'zone.branches.target' | 'zone.branches.spec-integration' | 'zone.tasks.title' | 'zone.tasks.total' | 'zone.tasks.no-plans' | 'zone.tasks.more' | 'zone.tasks.collapse' | 'zone.state.Todo' | 'zone.state.InProgress' | 'zone.state.InReview' | 'zone.state.Done' | 'zone.state.blocked-unknown' | 'zone.agents.title' | 'zone.agents.summary' | 'zone.agents.on-demand' | 'zone.agents.unknown-sub' | 'zone.agents.bucket.implementor' | 'zone.agents.bucket.reviewer' | 'zone.agents.group.phase-1' | 'zone.agents.group.phase-2' | 'zone.agents.group.phase-n' | 'zone.agents.group.plan' | 'zone.agents.group.no-plan' | 'zone.agents.group.plan-more' | 'flow.empty' | 'flow.settle-only' | 'flow.degraded' | 'flow.unexpected' | 'flow.in-flight' | 'flow.settled-ok' | 'flow.error' | 'flow.advisory' | 'flow.denied' | 'state.title' | 'state.plans' | 'state.residuals' | 'state.policy' | 'state.leases' | 'state.knowledge' | 'state.direction' | 'state.none' | 'state.enforcement' | 'state.enforcement.hard' | 'state.enforcement.soft' | 'state.plans.more' | 'state.residual.more' | 'state.policy.push' | 'state.policy.worktree' | 'state.policy.control-worktree' | 'state.knowledge.docs' | 'freshness.last-updated' | 'freshness.refresh-note';
126
+ declare module '@deepseek-ai/dsh-client-ui-slots' {
127
+ interface LocaleNamespaceMap {
128
+ 'mstar-panel': PanelKey;
129
+ }
130
+ }
131
+ /** zh dictionary (repo bilingual convention; zh is the stub fallback locale). */
132
+ export declare const zh: LocaleDictOf<'mstar-panel'>;
133
+ /** en dictionary (default locale). */
134
+ export declare const en: LocaleDictOf<'mstar-panel'>;