@femtomc/mu-agent 26.2.101 → 26.2.102

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/README.md CHANGED
@@ -66,7 +66,7 @@ Current stack:
66
66
 
67
67
  - `brandingExtension` — mu compact header/footer branding + default theme
68
68
  - `eventLogExtension` — event tail + watch widget
69
- - `hudExtension` — HUD surface for skill-directed planning/subagents communication (`/mu hud ...`, `mu_hud`)
69
+ - `hudExtension` — HUD surface for skill-directed planning/subagents communication (`/mu hud ...`, `mu_hud`) with tone/style-aware TUI widget rows, including `metadata.style_preset` support for `planning|subagents` (plain deterministic snapshots remain available via `/mu hud snapshot`)
70
70
 
71
71
  Extensions emit contract-valid `hud_docs` (`HudDoc`) so control-plane/server renderers can provide a consistent cross-surface HUD experience.
72
72
 
@@ -1 +1 @@
1
- {"version":3,"file":"hud.d.ts","sourceRoot":"","sources":["../../src/extensions/hud.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,+BAA+B,CAAC;AA8QpF,wBAAgB,YAAY,CAAC,EAAE,EAAE,YAAY,QAuE5C;AAED,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"hud.d.ts","sourceRoot":"","sources":["../../src/extensions/hud.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,+BAA+B,CAAC;AA0fpF,wBAAgB,YAAY,CAAC,EAAE,EAAE,YAAY,QAuE5C;AAED,eAAe,YAAY,CAAC"}
@@ -1,8 +1,89 @@
1
- import { HudDocSchema, normalizeHudDocs, serializeHudDocsTextFallback } from "@femtomc/mu-core";
1
+ import { applyHudStylePreset, hudStylePresetWarnings, HudDocSchema, normalizeHudDocs, serializeHudDocsTextFallback, } from "@femtomc/mu-core";
2
2
  import { registerMuSubcommand } from "./mu-command-dispatcher.js";
3
3
  const HUD_DISPLAY_DOCS_MAX = 16;
4
4
  const HUD_STORE_DOCS_MAX = 64;
5
5
  const HUD_LINE_MAX = 120;
6
+ const HUD_CHIPS_MAX = 8;
7
+ const HUD_SECTION_ITEMS_MAX = 6;
8
+ const HUD_ACTIONS_MAX = 4;
9
+ const HUD_LABEL_MAX = 28;
10
+ const HUD_VALUE_MAX = 84;
11
+ function themeBold(theme, text) {
12
+ if (typeof theme.bold === "function") {
13
+ return theme.bold(text);
14
+ }
15
+ return text;
16
+ }
17
+ function themeItalic(theme, text) {
18
+ if (typeof theme.italic === "function") {
19
+ return theme.italic(text);
20
+ }
21
+ return text;
22
+ }
23
+ function themeInverse(theme, text) {
24
+ if (typeof theme.inverse === "function") {
25
+ return theme.inverse(text);
26
+ }
27
+ return text;
28
+ }
29
+ function applyHudTextStyle(theme, text, style, opts = {}) {
30
+ let out = text;
31
+ const weight = style?.weight ?? opts.defaultWeight;
32
+ const italic = style?.italic ?? opts.defaultItalic ?? false;
33
+ const code = style?.code ?? opts.defaultCode ?? false;
34
+ if (code) {
35
+ out = themeInverse(theme, out);
36
+ }
37
+ if (italic) {
38
+ out = themeItalic(theme, out);
39
+ }
40
+ if (weight === "strong") {
41
+ out = themeBold(theme, out);
42
+ }
43
+ return out;
44
+ }
45
+ function toneColor(tone) {
46
+ switch (tone) {
47
+ case "success":
48
+ return "success";
49
+ case "warning":
50
+ return "warning";
51
+ case "error":
52
+ return "error";
53
+ case "muted":
54
+ return "muted";
55
+ case "dim":
56
+ return "dim";
57
+ case "accent":
58
+ return "accent";
59
+ case "info":
60
+ default:
61
+ return "text";
62
+ }
63
+ }
64
+ function actionKindColor(kind) {
65
+ switch (kind) {
66
+ case "primary":
67
+ return "accent";
68
+ case "danger":
69
+ return "error";
70
+ case "secondary":
71
+ default:
72
+ return "dim";
73
+ }
74
+ }
75
+ function sectionFallbackTitle(kind) {
76
+ switch (kind) {
77
+ case "kv":
78
+ return "Details";
79
+ case "checklist":
80
+ return "Checklist";
81
+ case "activity":
82
+ return "Activity";
83
+ case "text":
84
+ return "Notes";
85
+ }
86
+ }
6
87
  function createDefaultState() {
7
88
  return {
8
89
  enabled: false,
@@ -23,6 +104,113 @@ function short(text, max = HUD_LINE_MAX) {
23
104
  }
24
105
  return `${normalized.slice(0, max - 1)}…`;
25
106
  }
107
+ function sectionHeading(theme, section) {
108
+ const title = short(section.title ?? sectionFallbackTitle(section.kind), 48);
109
+ const styledTitle = applyHudTextStyle(theme, title, section.title_style, { defaultWeight: "strong" });
110
+ return [theme.fg("accent", styledTitle), theme.fg("dim", `(${section.kind})`)].join(" ");
111
+ }
112
+ function renderHudWidgetLines(theme, docs) {
113
+ const lines = [];
114
+ for (const [docIndex, doc] of docs.entries()) {
115
+ if (docIndex > 0) {
116
+ lines.push(theme.fg("muted", "─".repeat(26)));
117
+ }
118
+ const title = short(doc.title, 64);
119
+ const hudId = short(doc.hud_id, 32);
120
+ const styledTitle = applyHudTextStyle(theme, title, doc.title_style, { defaultWeight: "strong" });
121
+ lines.push(`${theme.fg("accent", styledTitle)} ${theme.fg("dim", `[${hudId}]`)}`);
122
+ if (doc.scope) {
123
+ lines.push(`${theme.fg("dim", "scope:")} ${theme.fg("muted", short(doc.scope, HUD_LINE_MAX - 7))}`);
124
+ }
125
+ if (doc.chips.length > 0) {
126
+ const visible = doc.chips.slice(0, HUD_CHIPS_MAX);
127
+ const chips = visible.map((chip) => {
128
+ const color = toneColor(chip.tone);
129
+ const label = short(chip.label, 28);
130
+ const chipLabel = applyHudTextStyle(theme, label, chip.style, {
131
+ defaultWeight: color === "muted" || color === "dim" ? "normal" : "strong",
132
+ });
133
+ return theme.fg(color, chipLabel);
134
+ });
135
+ const hiddenCount = doc.chips.length - visible.length;
136
+ if (hiddenCount > 0) {
137
+ chips.push(theme.fg("dim", `+${hiddenCount}`));
138
+ }
139
+ lines.push(chips.join(theme.fg("muted", " · ")));
140
+ }
141
+ for (const section of doc.sections) {
142
+ lines.push(sectionHeading(theme, section));
143
+ switch (section.kind) {
144
+ case "kv": {
145
+ const visible = section.items.slice(0, HUD_SECTION_ITEMS_MAX);
146
+ for (const item of visible) {
147
+ const keyLabel = short(item.label, HUD_LABEL_MAX);
148
+ const valueMax = Math.max(16, HUD_LINE_MAX - keyLabel.length - 8);
149
+ const valueLabel = short(item.value, Math.min(HUD_VALUE_MAX, valueMax));
150
+ const styledValue = applyHudTextStyle(theme, valueLabel, item.value_style);
151
+ lines.push(` ${theme.fg("muted", "-")} ${theme.fg("dim", `${keyLabel}:`)} ${theme.fg(toneColor(item.tone), styledValue)}`);
152
+ }
153
+ const hiddenCount = section.items.length - visible.length;
154
+ if (hiddenCount > 0) {
155
+ lines.push(theme.fg("dim", ` … (+${hiddenCount} more)`));
156
+ }
157
+ break;
158
+ }
159
+ case "checklist": {
160
+ const visible = section.items.slice(0, HUD_SECTION_ITEMS_MAX);
161
+ for (const item of visible) {
162
+ const marker = item.done ? theme.fg("success", "[x]") : theme.fg("dim", "[ ]");
163
+ const textColor = item.done ? "dim" : "text";
164
+ const label = short(item.label, HUD_LINE_MAX - 8);
165
+ const styledLabel = applyHudTextStyle(theme, label, item.style);
166
+ lines.push(` ${marker} ${theme.fg(textColor, styledLabel)}`);
167
+ }
168
+ const hiddenCount = section.items.length - visible.length;
169
+ if (hiddenCount > 0) {
170
+ lines.push(theme.fg("dim", ` … (+${hiddenCount} more)`));
171
+ }
172
+ break;
173
+ }
174
+ case "activity": {
175
+ const visible = section.lines.slice(0, HUD_SECTION_ITEMS_MAX);
176
+ for (const line of visible) {
177
+ lines.push(` ${theme.fg("muted", "-")} ${theme.fg("dim", short(line, HUD_LINE_MAX - 6))}`);
178
+ }
179
+ const hiddenCount = section.lines.length - visible.length;
180
+ if (hiddenCount > 0) {
181
+ lines.push(theme.fg("dim", ` … (+${hiddenCount} more)`));
182
+ }
183
+ break;
184
+ }
185
+ case "text": {
186
+ const text = short(section.text, HUD_LINE_MAX - 4);
187
+ const styledText = applyHudTextStyle(theme, text, section.style);
188
+ lines.push(` ${theme.fg(toneColor(section.tone), styledText)}`);
189
+ break;
190
+ }
191
+ }
192
+ }
193
+ if (doc.actions.length > 0) {
194
+ lines.push(theme.fg("accent", applyHudTextStyle(theme, "Actions", undefined, { defaultWeight: "strong" })));
195
+ const visible = doc.actions.slice(0, HUD_ACTIONS_MAX);
196
+ for (const action of visible) {
197
+ const color = actionKindColor(action.kind);
198
+ const label = short(action.label, HUD_LABEL_MAX);
199
+ const styledLabel = applyHudTextStyle(theme, label, action.style, { defaultWeight: "strong" });
200
+ const commandText = short(action.command_text, HUD_VALUE_MAX);
201
+ lines.push(` ${theme.fg(color, styledLabel)} ${theme.fg("dim", commandText)}`);
202
+ }
203
+ const hiddenCount = doc.actions.length - visible.length;
204
+ if (hiddenCount > 0) {
205
+ lines.push(theme.fg("dim", ` … (+${hiddenCount} more)`));
206
+ }
207
+ }
208
+ const snapshotText = short(doc.snapshot_compact, HUD_LINE_MAX - 10);
209
+ const styledSnapshot = applyHudTextStyle(theme, snapshotText, doc.snapshot_style, { defaultItalic: true });
210
+ lines.push(`${theme.fg("dim", "snapshot:")} ${theme.fg("muted", styledSnapshot)}`);
211
+ }
212
+ return lines;
213
+ }
26
214
  function activeDocs(state, maxDocs = HUD_DISPLAY_DOCS_MAX) {
27
215
  return normalizeHudDocs([...state.docsById.values()], { maxDocs });
28
216
  }
@@ -53,18 +241,9 @@ function renderHud(ctx, state) {
53
241
  ctx.ui.theme.fg("muted", "·"),
54
242
  ctx.ui.theme.fg("dim", idLabel),
55
243
  ].join(" "));
56
- const snapshot = serializeHudDocsTextFallback(docs, {
57
- mode: "multiline",
58
- maxDocs: HUD_DISPLAY_DOCS_MAX,
59
- maxSectionItems: 6,
60
- maxActions: 4,
61
- maxChars: 8_000,
62
- });
63
- const lines = snapshot
64
- .split(/\r?\n/)
65
- .map((line) => short(line, HUD_LINE_MAX))
66
- .filter((line) => line.length > 0);
67
- ctx.ui.setWidget("mu-hud", lines.length > 0 ? lines : ["(hud enabled, no docs)"], { placement: "belowEditor" });
244
+ const docsForRender = docs.map((doc) => applyHudStylePreset(doc) ?? doc);
245
+ const lines = renderHudWidgetLines(ctx.ui.theme, docsForRender);
246
+ ctx.ui.setWidget("mu-hud", lines.length > 0 ? lines : [ctx.ui.theme.fg("dim", "(hud enabled, no docs)")], { placement: "belowEditor" });
68
247
  }
69
248
  function parseHudDoc(input) {
70
249
  const parsed = HudDocSchema.safeParse(input);
@@ -87,6 +266,23 @@ function parseHudDocList(input) {
87
266
  }
88
267
  return { ok: true, docs: normalizeHudDocs(docs, { maxDocs: HUD_STORE_DOCS_MAX }) };
89
268
  }
269
+ function presetWarningsExtraForDoc(doc) {
270
+ const warnings = hudStylePresetWarnings(doc);
271
+ if (warnings.length === 0) {
272
+ return {};
273
+ }
274
+ return { preset_warnings: warnings };
275
+ }
276
+ function presetWarningsExtraForDocs(docs) {
277
+ const byHudId = {};
278
+ for (const doc of docs) {
279
+ const warnings = hudStylePresetWarnings(doc);
280
+ if (warnings.length > 0) {
281
+ byHudId[doc.hud_id] = warnings;
282
+ }
283
+ }
284
+ return Object.keys(byHudId).length > 0 ? { preset_warnings: byHudId } : {};
285
+ }
90
286
  function hudToolResult(opts) {
91
287
  const docs = activeDocs(opts.state, HUD_STORE_DOCS_MAX);
92
288
  return {
@@ -146,7 +342,7 @@ function applyHudAction(params, state) {
146
342
  ok: true,
147
343
  action: params.action,
148
344
  message: `HUD doc set: ${parsed.doc.hud_id}`,
149
- extra: { hud_id: parsed.doc.hud_id },
345
+ extra: { hud_id: parsed.doc.hud_id, ...presetWarningsExtraForDoc(parsed.doc) },
150
346
  };
151
347
  }
152
348
  case "replace": {
@@ -159,7 +355,12 @@ function applyHudAction(params, state) {
159
355
  state.docsById.set(doc.hud_id, doc);
160
356
  }
161
357
  state.enabled = true;
162
- return { ok: true, action: "replace", message: `HUD docs replaced (${parsed.docs.length}).` };
358
+ return {
359
+ ok: true,
360
+ action: "replace",
361
+ message: `HUD docs replaced (${parsed.docs.length}).`,
362
+ extra: presetWarningsExtraForDocs(parsed.docs),
363
+ };
163
364
  }
164
365
  case "remove": {
165
366
  const hudId = (params.hud_id ?? "").trim();
@@ -63,6 +63,14 @@ export declare const OperatorBackendTurnResultSchema: z.ZodDiscriminatedUnion<[z
63
63
  v: z.ZodDefault<z.ZodLiteral<1>>;
64
64
  hud_id: z.ZodString;
65
65
  title: z.ZodString;
66
+ title_style: z.ZodOptional<z.ZodObject<{
67
+ weight: z.ZodOptional<z.ZodEnum<{
68
+ normal: "normal";
69
+ strong: "strong";
70
+ }>>;
71
+ italic: z.ZodOptional<z.ZodBoolean>;
72
+ code: z.ZodOptional<z.ZodBoolean>;
73
+ }, z.core.$strict>>;
66
74
  scope: z.ZodDefault<z.ZodNullable<z.ZodString>>;
67
75
  chips: z.ZodDefault<z.ZodArray<z.ZodObject<{
68
76
  key: z.ZodString;
@@ -76,10 +84,26 @@ export declare const OperatorBackendTurnResultSchema: z.ZodDiscriminatedUnion<[z
76
84
  accent: "accent";
77
85
  dim: "dim";
78
86
  }>>;
87
+ style: z.ZodOptional<z.ZodObject<{
88
+ weight: z.ZodOptional<z.ZodEnum<{
89
+ normal: "normal";
90
+ strong: "strong";
91
+ }>>;
92
+ italic: z.ZodOptional<z.ZodBoolean>;
93
+ code: z.ZodOptional<z.ZodBoolean>;
94
+ }, z.core.$strict>>;
79
95
  }, z.core.$strict>>>;
80
96
  sections: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
81
97
  kind: z.ZodLiteral<"kv">;
82
98
  title: z.ZodOptional<z.ZodString>;
99
+ title_style: z.ZodOptional<z.ZodObject<{
100
+ weight: z.ZodOptional<z.ZodEnum<{
101
+ normal: "normal";
102
+ strong: "strong";
103
+ }>>;
104
+ italic: z.ZodOptional<z.ZodBoolean>;
105
+ code: z.ZodOptional<z.ZodBoolean>;
106
+ }, z.core.$strict>>;
83
107
  items: z.ZodDefault<z.ZodArray<z.ZodObject<{
84
108
  key: z.ZodString;
85
109
  label: z.ZodString;
@@ -93,22 +117,62 @@ export declare const OperatorBackendTurnResultSchema: z.ZodDiscriminatedUnion<[z
93
117
  accent: "accent";
94
118
  dim: "dim";
95
119
  }>>;
120
+ value_style: z.ZodOptional<z.ZodObject<{
121
+ weight: z.ZodOptional<z.ZodEnum<{
122
+ normal: "normal";
123
+ strong: "strong";
124
+ }>>;
125
+ italic: z.ZodOptional<z.ZodBoolean>;
126
+ code: z.ZodOptional<z.ZodBoolean>;
127
+ }, z.core.$strict>>;
96
128
  }, z.core.$strict>>>;
97
129
  }, z.core.$strict>, z.ZodObject<{
98
130
  kind: z.ZodLiteral<"checklist">;
99
131
  title: z.ZodOptional<z.ZodString>;
132
+ title_style: z.ZodOptional<z.ZodObject<{
133
+ weight: z.ZodOptional<z.ZodEnum<{
134
+ normal: "normal";
135
+ strong: "strong";
136
+ }>>;
137
+ italic: z.ZodOptional<z.ZodBoolean>;
138
+ code: z.ZodOptional<z.ZodBoolean>;
139
+ }, z.core.$strict>>;
100
140
  items: z.ZodDefault<z.ZodArray<z.ZodObject<{
101
141
  id: z.ZodString;
102
142
  label: z.ZodString;
103
143
  done: z.ZodBoolean;
144
+ style: z.ZodOptional<z.ZodObject<{
145
+ weight: z.ZodOptional<z.ZodEnum<{
146
+ normal: "normal";
147
+ strong: "strong";
148
+ }>>;
149
+ italic: z.ZodOptional<z.ZodBoolean>;
150
+ code: z.ZodOptional<z.ZodBoolean>;
151
+ }, z.core.$strict>>;
104
152
  }, z.core.$strict>>>;
105
153
  }, z.core.$strict>, z.ZodObject<{
106
154
  kind: z.ZodLiteral<"activity">;
107
155
  title: z.ZodOptional<z.ZodString>;
156
+ title_style: z.ZodOptional<z.ZodObject<{
157
+ weight: z.ZodOptional<z.ZodEnum<{
158
+ normal: "normal";
159
+ strong: "strong";
160
+ }>>;
161
+ italic: z.ZodOptional<z.ZodBoolean>;
162
+ code: z.ZodOptional<z.ZodBoolean>;
163
+ }, z.core.$strict>>;
108
164
  lines: z.ZodDefault<z.ZodArray<z.ZodString>>;
109
165
  }, z.core.$strict>, z.ZodObject<{
110
166
  kind: z.ZodLiteral<"text">;
111
167
  title: z.ZodOptional<z.ZodString>;
168
+ title_style: z.ZodOptional<z.ZodObject<{
169
+ weight: z.ZodOptional<z.ZodEnum<{
170
+ normal: "normal";
171
+ strong: "strong";
172
+ }>>;
173
+ italic: z.ZodOptional<z.ZodBoolean>;
174
+ code: z.ZodOptional<z.ZodBoolean>;
175
+ }, z.core.$strict>>;
112
176
  text: z.ZodString;
113
177
  tone: z.ZodOptional<z.ZodEnum<{
114
178
  error: "error";
@@ -119,6 +183,14 @@ export declare const OperatorBackendTurnResultSchema: z.ZodDiscriminatedUnion<[z
119
183
  accent: "accent";
120
184
  dim: "dim";
121
185
  }>>;
186
+ style: z.ZodOptional<z.ZodObject<{
187
+ weight: z.ZodOptional<z.ZodEnum<{
188
+ normal: "normal";
189
+ strong: "strong";
190
+ }>>;
191
+ italic: z.ZodOptional<z.ZodBoolean>;
192
+ code: z.ZodOptional<z.ZodBoolean>;
193
+ }, z.core.$strict>>;
122
194
  }, z.core.$strict>], "kind">>>;
123
195
  actions: z.ZodDefault<z.ZodArray<z.ZodObject<{
124
196
  id: z.ZodString;
@@ -129,8 +201,24 @@ export declare const OperatorBackendTurnResultSchema: z.ZodDiscriminatedUnion<[z
129
201
  secondary: "secondary";
130
202
  danger: "danger";
131
203
  }>>;
204
+ style: z.ZodOptional<z.ZodObject<{
205
+ weight: z.ZodOptional<z.ZodEnum<{
206
+ normal: "normal";
207
+ strong: "strong";
208
+ }>>;
209
+ italic: z.ZodOptional<z.ZodBoolean>;
210
+ code: z.ZodOptional<z.ZodBoolean>;
211
+ }, z.core.$strict>>;
132
212
  }, z.core.$strict>>>;
133
213
  snapshot_compact: z.ZodString;
214
+ snapshot_style: z.ZodOptional<z.ZodObject<{
215
+ weight: z.ZodOptional<z.ZodEnum<{
216
+ normal: "normal";
217
+ strong: "strong";
218
+ }>>;
219
+ italic: z.ZodOptional<z.ZodBoolean>;
220
+ code: z.ZodOptional<z.ZodBoolean>;
221
+ }, z.core.$strict>>;
134
222
  snapshot_multiline: z.ZodOptional<z.ZodString>;
135
223
  updated_at_ms: z.ZodNumber;
136
224
  metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -176,6 +264,14 @@ export declare const OperatorBackendTurnResultSchema: z.ZodDiscriminatedUnion<[z
176
264
  v: z.ZodDefault<z.ZodLiteral<1>>;
177
265
  hud_id: z.ZodString;
178
266
  title: z.ZodString;
267
+ title_style: z.ZodOptional<z.ZodObject<{
268
+ weight: z.ZodOptional<z.ZodEnum<{
269
+ normal: "normal";
270
+ strong: "strong";
271
+ }>>;
272
+ italic: z.ZodOptional<z.ZodBoolean>;
273
+ code: z.ZodOptional<z.ZodBoolean>;
274
+ }, z.core.$strict>>;
179
275
  scope: z.ZodDefault<z.ZodNullable<z.ZodString>>;
180
276
  chips: z.ZodDefault<z.ZodArray<z.ZodObject<{
181
277
  key: z.ZodString;
@@ -189,10 +285,26 @@ export declare const OperatorBackendTurnResultSchema: z.ZodDiscriminatedUnion<[z
189
285
  accent: "accent";
190
286
  dim: "dim";
191
287
  }>>;
288
+ style: z.ZodOptional<z.ZodObject<{
289
+ weight: z.ZodOptional<z.ZodEnum<{
290
+ normal: "normal";
291
+ strong: "strong";
292
+ }>>;
293
+ italic: z.ZodOptional<z.ZodBoolean>;
294
+ code: z.ZodOptional<z.ZodBoolean>;
295
+ }, z.core.$strict>>;
192
296
  }, z.core.$strict>>>;
193
297
  sections: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
194
298
  kind: z.ZodLiteral<"kv">;
195
299
  title: z.ZodOptional<z.ZodString>;
300
+ title_style: z.ZodOptional<z.ZodObject<{
301
+ weight: z.ZodOptional<z.ZodEnum<{
302
+ normal: "normal";
303
+ strong: "strong";
304
+ }>>;
305
+ italic: z.ZodOptional<z.ZodBoolean>;
306
+ code: z.ZodOptional<z.ZodBoolean>;
307
+ }, z.core.$strict>>;
196
308
  items: z.ZodDefault<z.ZodArray<z.ZodObject<{
197
309
  key: z.ZodString;
198
310
  label: z.ZodString;
@@ -206,22 +318,62 @@ export declare const OperatorBackendTurnResultSchema: z.ZodDiscriminatedUnion<[z
206
318
  accent: "accent";
207
319
  dim: "dim";
208
320
  }>>;
321
+ value_style: z.ZodOptional<z.ZodObject<{
322
+ weight: z.ZodOptional<z.ZodEnum<{
323
+ normal: "normal";
324
+ strong: "strong";
325
+ }>>;
326
+ italic: z.ZodOptional<z.ZodBoolean>;
327
+ code: z.ZodOptional<z.ZodBoolean>;
328
+ }, z.core.$strict>>;
209
329
  }, z.core.$strict>>>;
210
330
  }, z.core.$strict>, z.ZodObject<{
211
331
  kind: z.ZodLiteral<"checklist">;
212
332
  title: z.ZodOptional<z.ZodString>;
333
+ title_style: z.ZodOptional<z.ZodObject<{
334
+ weight: z.ZodOptional<z.ZodEnum<{
335
+ normal: "normal";
336
+ strong: "strong";
337
+ }>>;
338
+ italic: z.ZodOptional<z.ZodBoolean>;
339
+ code: z.ZodOptional<z.ZodBoolean>;
340
+ }, z.core.$strict>>;
213
341
  items: z.ZodDefault<z.ZodArray<z.ZodObject<{
214
342
  id: z.ZodString;
215
343
  label: z.ZodString;
216
344
  done: z.ZodBoolean;
345
+ style: z.ZodOptional<z.ZodObject<{
346
+ weight: z.ZodOptional<z.ZodEnum<{
347
+ normal: "normal";
348
+ strong: "strong";
349
+ }>>;
350
+ italic: z.ZodOptional<z.ZodBoolean>;
351
+ code: z.ZodOptional<z.ZodBoolean>;
352
+ }, z.core.$strict>>;
217
353
  }, z.core.$strict>>>;
218
354
  }, z.core.$strict>, z.ZodObject<{
219
355
  kind: z.ZodLiteral<"activity">;
220
356
  title: z.ZodOptional<z.ZodString>;
357
+ title_style: z.ZodOptional<z.ZodObject<{
358
+ weight: z.ZodOptional<z.ZodEnum<{
359
+ normal: "normal";
360
+ strong: "strong";
361
+ }>>;
362
+ italic: z.ZodOptional<z.ZodBoolean>;
363
+ code: z.ZodOptional<z.ZodBoolean>;
364
+ }, z.core.$strict>>;
221
365
  lines: z.ZodDefault<z.ZodArray<z.ZodString>>;
222
366
  }, z.core.$strict>, z.ZodObject<{
223
367
  kind: z.ZodLiteral<"text">;
224
368
  title: z.ZodOptional<z.ZodString>;
369
+ title_style: z.ZodOptional<z.ZodObject<{
370
+ weight: z.ZodOptional<z.ZodEnum<{
371
+ normal: "normal";
372
+ strong: "strong";
373
+ }>>;
374
+ italic: z.ZodOptional<z.ZodBoolean>;
375
+ code: z.ZodOptional<z.ZodBoolean>;
376
+ }, z.core.$strict>>;
225
377
  text: z.ZodString;
226
378
  tone: z.ZodOptional<z.ZodEnum<{
227
379
  error: "error";
@@ -232,6 +384,14 @@ export declare const OperatorBackendTurnResultSchema: z.ZodDiscriminatedUnion<[z
232
384
  accent: "accent";
233
385
  dim: "dim";
234
386
  }>>;
387
+ style: z.ZodOptional<z.ZodObject<{
388
+ weight: z.ZodOptional<z.ZodEnum<{
389
+ normal: "normal";
390
+ strong: "strong";
391
+ }>>;
392
+ italic: z.ZodOptional<z.ZodBoolean>;
393
+ code: z.ZodOptional<z.ZodBoolean>;
394
+ }, z.core.$strict>>;
235
395
  }, z.core.$strict>], "kind">>>;
236
396
  actions: z.ZodDefault<z.ZodArray<z.ZodObject<{
237
397
  id: z.ZodString;
@@ -242,8 +402,24 @@ export declare const OperatorBackendTurnResultSchema: z.ZodDiscriminatedUnion<[z
242
402
  secondary: "secondary";
243
403
  danger: "danger";
244
404
  }>>;
405
+ style: z.ZodOptional<z.ZodObject<{
406
+ weight: z.ZodOptional<z.ZodEnum<{
407
+ normal: "normal";
408
+ strong: "strong";
409
+ }>>;
410
+ italic: z.ZodOptional<z.ZodBoolean>;
411
+ code: z.ZodOptional<z.ZodBoolean>;
412
+ }, z.core.$strict>>;
245
413
  }, z.core.$strict>>>;
246
414
  snapshot_compact: z.ZodString;
415
+ snapshot_style: z.ZodOptional<z.ZodObject<{
416
+ weight: z.ZodOptional<z.ZodEnum<{
417
+ normal: "normal";
418
+ strong: "strong";
419
+ }>>;
420
+ italic: z.ZodOptional<z.ZodBoolean>;
421
+ code: z.ZodOptional<z.ZodBoolean>;
422
+ }, z.core.$strict>>;
247
423
  snapshot_multiline: z.ZodOptional<z.ZodString>;
248
424
  updated_at_ms: z.ZodNumber;
249
425
  metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
@@ -1 +1 @@
1
- {"version":3,"file":"operator.d.ts","sourceRoot":"","sources":["../src/operator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operator.d.ts","sourceRoot":"","sources":["../src/operator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@femtomc/mu-agent",
3
- "version": "26.2.101",
3
+ "version": "26.2.102",
4
4
  "description": "Shared operator runtime for mu assistant sessions and serve extensions.",
5
5
  "keywords": [
6
6
  "mu",
@@ -24,7 +24,7 @@
24
24
  "themes/**"
25
25
  ],
26
26
  "dependencies": {
27
- "@femtomc/mu-core": "26.2.101",
27
+ "@femtomc/mu-core": "26.2.102",
28
28
  "@mariozechner/pi-agent-core": "^0.53.0",
29
29
  "@mariozechner/pi-ai": "^0.53.0",
30
30
  "@mariozechner/pi-coding-agent": "^0.53.0",
@@ -44,6 +44,7 @@ Notes:
44
44
  - `set` and `update` are both upsert-style single-doc writes.
45
45
  - `replace` is whole-inventory replacement.
46
46
  - Tool results include normalized `hud_docs` for downstream transport/rendering.
47
+ - Advisory preset-shape warnings are surfaced in tool `details.preset_warnings` when `metadata.style_preset` and doc shape diverge (non-blocking).
47
48
 
48
49
  ### Command (`/mu hud ...`)
49
50
 
@@ -72,14 +73,15 @@ Minimum practical fields:
72
73
  Common optional fields:
73
74
 
74
75
  - `scope` (for root/session/issue scoping)
75
- - `chips` (`[{key,label,tone?}]`)
76
+ - `title_style` / `snapshot_style` (`{weight?:"normal|strong", italic?:boolean, code?:boolean}`)
77
+ - `chips` (`[{key,label,tone?,style?}]`)
76
78
  - `sections`:
77
- - `kv` (key/value)
78
- - `checklist` (checkbox-style progress)
79
- - `activity` (recent lines)
80
- - `text` (free text)
81
- - `actions` (`[{id,label,command_text,kind?}]`)
82
- - `metadata` (machine-readable extras)
79
+ - `kv` (key/value; supports `title_style` + item `value_style`)
80
+ - `checklist` (checkbox-style progress; supports `title_style` + item `style`)
81
+ - `activity` (recent lines; supports `title_style`)
82
+ - `text` (free text; supports `title_style` + `style`)
83
+ - `actions` (`[{id,label,command_text,kind?,style?}]`)
84
+ - `metadata` (machine-readable extras; optional `style_preset` convention: `planning|subagents`)
83
85
 
84
86
  Example checklist doc:
85
87
 
@@ -92,7 +94,7 @@ Example checklist doc:
92
94
  "title": "Planning HUD",
93
95
  "scope": "mu-root-123",
94
96
  "chips": [
95
- { "key": "phase", "label": "phase:drafting", "tone": "accent" },
97
+ { "key": "phase", "label": "phase:drafting", "tone": "accent", "style": { "weight": "strong" } },
96
98
  { "key": "steps", "label": "steps:2/5", "tone": "dim" }
97
99
  ],
98
100
  "sections": [
@@ -107,11 +109,11 @@ Example checklist doc:
107
109
  }
108
110
  ],
109
111
  "actions": [
110
- { "id": "snapshot", "label": "Snapshot", "command_text": "/mu hud snapshot", "kind": "secondary" }
112
+ { "id": "snapshot", "label": "Snapshot", "command_text": "/mu hud snapshot", "kind": "secondary", "style": { "italic": true } }
111
113
  ],
112
114
  "snapshot_compact": "HUD(plan) · phase=drafting · steps=2/5",
113
115
  "updated_at_ms": 1771853115000,
114
- "metadata": { "phase": "drafting" }
116
+ "metadata": { "style_preset": "planning", "phase": "drafting" }
115
117
  }
116
118
  }
117
119
  ```
@@ -117,12 +117,13 @@ Tool contract (preferred when tools are available):
117
117
  - `kv` status block (`phase`, `root`, `waiting_on_user`, `confidence`, `next_action`, `blocker`)
118
118
  - `checklist` block for plan milestones
119
119
  - actions: include useful follow-ups (for example, `snapshot`)
120
+ - metadata: include `style_preset:"planning"` for consistent renderer emphasis without repeating style hints
120
121
 
121
122
  Example tool calls:
122
123
  - Turn HUD on:
123
124
  - `{"action":"on"}`
124
125
  - Set/replace planning doc after investigation pass:
125
- - `{"action":"set","doc":{"v":1,"hud_id":"planning","title":"Planning HUD","scope":"mu-root-123","chips":[{"key":"phase","label":"phase:investigating","tone":"dim"},{"key":"steps","label":"steps:1/4","tone":"accent"},{"key":"waiting","label":"waiting:no","tone":"dim"},{"key":"confidence","label":"conf:medium","tone":"accent"}],"sections":[{"kind":"kv","title":"Status","items":[{"key":"phase","label":"phase","value":"investigating"},{"key":"root","label":"root","value":"mu-root-123"},{"key":"waiting","label":"waiting_on_user","value":"no"},{"key":"confidence","label":"confidence","value":"medium"},{"key":"next","label":"next_action","value":"Draft root DAG"},{"key":"blocker","label":"blocker","value":"(none)"}]},{"kind":"checklist","title":"Checklist","items":[{"id":"1","label":"Investigate relevant code/docs/state","done":true},{"id":"2","label":"Create root + child issue DAG","done":false},{"id":"3","label":"Present plan + tradeoffs","done":false},{"id":"4","label":"Refine until approved","done":false}]}],"actions":[{"id":"snapshot","label":"Snapshot","command_text":"/mu hud snapshot","kind":"secondary"}],"snapshot_compact":"HUD(plan) · phase=investigating · steps=1/4 · waiting=no · conf=medium","updated_at_ms":1771853115000,"metadata":{"phase":"investigating","waiting_on_user":false,"confidence":"medium"}}}`
126
+ - `{"action":"set","doc":{"v":1,"hud_id":"planning","title":"Planning HUD","scope":"mu-root-123","chips":[{"key":"phase","label":"phase:investigating","tone":"dim"},{"key":"steps","label":"steps:1/4","tone":"accent"},{"key":"waiting","label":"waiting:no","tone":"dim"},{"key":"confidence","label":"conf:medium","tone":"accent"}],"sections":[{"kind":"kv","title":"Status","items":[{"key":"phase","label":"phase","value":"investigating"},{"key":"root","label":"root","value":"mu-root-123"},{"key":"waiting","label":"waiting_on_user","value":"no"},{"key":"confidence","label":"confidence","value":"medium"},{"key":"next","label":"next_action","value":"Draft root DAG"},{"key":"blocker","label":"blocker","value":"(none)"}]},{"kind":"checklist","title":"Checklist","items":[{"id":"1","label":"Investigate relevant code/docs/state","done":true},{"id":"2","label":"Create root + child issue DAG","done":false},{"id":"3","label":"Present plan + tradeoffs","done":false},{"id":"4","label":"Refine until approved","done":false}]}],"actions":[{"id":"snapshot","label":"Snapshot","command_text":"/mu hud snapshot","kind":"secondary"}],"snapshot_compact":"HUD(plan) · phase=investigating · steps=1/4 · waiting=no · conf=medium","updated_at_ms":1771853115000,"metadata":{"style_preset":"planning","phase":"investigating","waiting_on_user":false,"confidence":"medium"}}}`
126
127
  - Human-facing status line:
127
128
  - `{"action":"snapshot","snapshot_format":"compact"}`
128
129
 
@@ -192,8 +192,9 @@ Tool: `mu_hud`
192
192
  - chips: health, mode, paused
193
193
  - sections: queue counts + recent activity lines
194
194
  - actions: refresh/spawn command hooks (if desired)
195
+ - metadata: include `style_preset:"subagents"` for consistent renderer emphasis
195
196
  - Example update:
196
- - `{"action":"set","doc":{"v":1,"hud_id":"subagents","title":"Subagents HUD","scope":"mu-root-123","chips":[{"key":"health","label":"healthy","tone":"success"},{"key":"mode","label":"mode:operator","tone":"dim"},{"key":"paused","label":"paused:no","tone":"dim"}],"sections":[{"kind":"kv","title":"Queue","items":[{"key":"ready","label":"Ready","value":"3"},{"key":"active","label":"Active","value":"2"},{"key":"sessions","label":"Sessions","value":"2"}]},{"kind":"activity","title":"Activity","lines":["Spawned worker for mu-abc123","Posted ORCH_PASS update"]}],"actions":[{"id":"refresh","label":"Refresh","command_text":"/mu hud snapshot","kind":"secondary"}],"snapshot_compact":"HUD(subagents) · healthy · mode=operator · ready=3 · active=2","updated_at_ms":1771853115000,"metadata":{"spawn_mode":"operator","spawn_paused":false}}}`
197
+ - `{"action":"set","doc":{"v":1,"hud_id":"subagents","title":"Subagents HUD","scope":"mu-root-123","chips":[{"key":"health","label":"healthy","tone":"success"},{"key":"mode","label":"mode:operator","tone":"dim"},{"key":"paused","label":"paused:no","tone":"dim"}],"sections":[{"kind":"kv","title":"Queue","items":[{"key":"ready","label":"Ready","value":"3"},{"key":"active","label":"Active","value":"2"},{"key":"sessions","label":"Sessions","value":"2"}]},{"kind":"activity","title":"Activity","lines":["Spawned worker for mu-abc123","Posted ORCH_PASS update"]}],"actions":[{"id":"refresh","label":"Refresh","command_text":"/mu hud snapshot","kind":"secondary"}],"snapshot_compact":"HUD(subagents) · healthy · mode=operator · ready=3 · active=2","updated_at_ms":1771853115000,"metadata":{"style_preset":"subagents","spawn_mode":"operator","spawn_paused":false}}}`
197
198
 
198
199
  ## Evaluation scenarios
199
200