maestro-flow 0.3.12 → 0.3.13
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/.claude/CLAUDE.md +7 -0
- package/.claude/agents/workflow-analyzer.md +0 -1
- package/.claude/agents/workflow-collab-planner.md +0 -1
- package/.claude/agents/workflow-debugger.md +0 -1
- package/.claude/agents/workflow-integration-checker.md +2 -2
- package/.claude/agents/workflow-nyquist-auditor.md +0 -1
- package/.claude/agents/workflow-phase-researcher.md +2 -2
- package/.claude/agents/workflow-plan-checker.md +1 -1
- package/.claude/agents/workflow-planner.md +1 -2
- package/.claude/agents/workflow-roadmapper.md +1 -1
- package/.claude/agents/workflow-verifier.md +0 -1
- package/.claude/commands/learn-retro.md +2 -2
- package/.claude/commands/learn-second-opinion.md +2 -2
- package/.claude/commands/maestro-analyze.md +10 -2
- package/.claude/commands/maestro-brainstorm.md +1 -1
- package/.claude/commands/maestro-execute.md +21 -4
- package/.claude/commands/maestro-milestone-complete.md +14 -0
- package/.claude/commands/maestro-plan.md +12 -6
- package/.claude/commands/maestro-roadmap.md +1 -1
- package/.claude/commands/maestro-ui-design.md +7 -7
- package/.claude/commands/maestro-update.md +176 -0
- package/.claude/commands/maestro-verify.md +18 -3
- package/.claude/commands/manage-codebase-rebuild.md +0 -1
- package/.claude/commands/manage-harvest.md +1 -1
- package/.claude/commands/manage-learn.md +5 -5
- package/.claude/commands/manage-memory-capture.md +4 -4
- package/.claude/commands/manage-memory.md +1 -1
- package/.claude/commands/manage-wiki.md +62 -0
- package/.claude/commands/quality-business-test.md +2 -2
- package/.claude/commands/quality-debug.md +53 -7
- package/.claude/commands/quality-retrospective.md +5 -5
- package/.claude/commands/quality-review.md +39 -7
- package/.claude/commands/quality-sync.md +1 -1
- package/.claude/commands/quality-test-gen.md +1 -1
- package/.claude/commands/quality-test.md +45 -12
- package/.claude/commands/spec-remove.md +51 -0
- package/.claude/commands/spec-setup.md +1 -3
- package/.claude/commands/wiki-connect.md +9 -5
- package/.claude/commands/wiki-digest.md +6 -3
- package/.codex/skills/maestro/SKILL.md +2 -2
- package/.codex/skills/maestro-analyze/SKILL.md +4 -4
- package/.codex/skills/maestro-brainstorm/SKILL.md +4 -4
- package/.codex/skills/maestro-coordinate/SKILL.md +2 -2
- package/.codex/skills/maestro-execute/SKILL.md +15 -5
- package/.codex/skills/maestro-init/SKILL.md +1 -1
- package/.codex/skills/maestro-milestone-complete/SKILL.md +18 -1
- package/.codex/skills/maestro-plan/SKILL.md +6 -6
- package/.codex/skills/maestro-roadmap/SKILL.md +3 -4
- package/.codex/skills/maestro-spec-generate/SKILL.md +2 -2
- package/.codex/skills/maestro-ui-design/SKILL.md +6 -6
- package/.codex/skills/maestro-verify/SKILL.md +20 -11
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +4 -4
- package/.codex/skills/manage-harvest/SKILL.md +10 -1
- package/.codex/skills/manage-issue-discover/SKILL.md +3 -3
- package/.codex/skills/manage-learn/SKILL.md +3 -2
- package/.codex/skills/manage-memory/SKILL.md +3 -3
- package/.codex/skills/manage-memory-capture/SKILL.md +8 -14
- package/.codex/skills/manage-status/SKILL.md +9 -4
- package/.codex/skills/manage-wiki/SKILL.md +55 -0
- package/.codex/skills/quality-business-test/SKILL.md +8 -6
- package/.codex/skills/quality-debug/SKILL.md +22 -9
- package/.codex/skills/quality-integration-test/SKILL.md +11 -7
- package/.codex/skills/quality-retrospective/SKILL.md +45 -26
- package/.codex/skills/quality-review/SKILL.md +10 -7
- package/.codex/skills/quality-test/SKILL.md +9 -4
- package/.codex/skills/quality-test-gen/SKILL.md +13 -9
- package/.codex/skills/spec-add/SKILL.md +11 -3
- package/.codex/skills/spec-load/SKILL.md +7 -0
- package/.codex/skills/spec-map/SKILL.md +2 -2
- package/.codex/skills/spec-remove/SKILL.md +101 -0
- package/.codex/skills/spec-setup/SKILL.md +4 -8
- package/.codex/skills/wiki-connect/SKILL.md +6 -5
- package/.codex/skills/wiki-digest/SKILL.md +2 -2
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +9 -0
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +109 -9
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.test.js +49 -0
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/index.js +5 -4
- package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +5 -13
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js +97 -155
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.d.ts +11 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +27 -6
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +25 -7
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/graph-analysis.js +8 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/graph-analysis.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/search.js +1 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/search.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.d.ts +29 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js +148 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/spec-entry-parser.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +4 -2
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js +8 -2
- package/dashboard/dist-server/dashboard/src/server/wiki/virtual-wiki-adapters.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.d.ts +5 -0
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +80 -38
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +8 -6
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +40 -5
- package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +21 -23
- package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +33 -3
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +184 -12
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
- package/dashboard/dist-server/src/commands/delegate.js +26 -0
- package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
- package/dashboard/dist-server/src/coordinator/graph-types.d.ts +11 -1
- package/dashboard/dist-server/src/coordinator/graph-walker.js +29 -2
- package/dashboard/dist-server/src/coordinator/graph-walker.js.map +1 -1
- package/dashboard/dist-server/src/coordinator/prompt-assembler.js +3 -2
- package/dashboard/dist-server/src/coordinator/prompt-assembler.js.map +1 -1
- package/dashboard/dist-server/src/hooks/constants.d.ts +29 -60
- package/dashboard/dist-server/src/hooks/constants.js +105 -82
- package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
- package/dashboard/dist-server/src/types/index.d.ts +2 -1
- package/dist/src/commands/delegate.d.ts.map +1 -1
- package/dist/src/commands/delegate.js +26 -0
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/commands/hooks.d.ts +2 -4
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +4 -7
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install-ui/InstallConfirm.d.ts +2 -3
- package/dist/src/commands/install-ui/InstallConfirm.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallConfirm.js +1 -1
- package/dist/src/commands/install-ui/InstallConfirm.js.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallExecution.js +1 -2
- package/dist/src/commands/install-ui/InstallExecution.js.map +1 -1
- package/dist/src/commands/install-ui/InstallFlow.d.ts.map +1 -1
- package/dist/src/commands/install-ui/InstallFlow.js +5 -7
- package/dist/src/commands/install-ui/InstallFlow.js.map +1 -1
- package/dist/src/commands/install-ui/StatuslineConfig.d.ts +3 -6
- package/dist/src/commands/install-ui/StatuslineConfig.d.ts.map +1 -1
- package/dist/src/commands/install-ui/StatuslineConfig.js +21 -17
- package/dist/src/commands/install-ui/StatuslineConfig.js.map +1 -1
- package/dist/src/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +95 -0
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/commands/wiki.d.ts.map +1 -1
- package/dist/src/commands/wiki.js +75 -11
- package/dist/src/commands/wiki.js.map +1 -1
- package/dist/src/coordinator/graph-types.d.ts +11 -1
- package/dist/src/coordinator/graph-types.d.ts.map +1 -1
- package/dist/src/coordinator/graph-walker.d.ts.map +1 -1
- package/dist/src/coordinator/graph-walker.js +29 -2
- package/dist/src/coordinator/graph-walker.js.map +1 -1
- package/dist/src/coordinator/prompt-assembler.d.ts.map +1 -1
- package/dist/src/coordinator/prompt-assembler.js +3 -2
- package/dist/src/coordinator/prompt-assembler.js.map +1 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.d.ts +4 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.d.ts.map +1 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.js +55 -174
- package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -1
- package/dist/src/hooks/constants.d.ts +29 -60
- package/dist/src/hooks/constants.d.ts.map +1 -1
- package/dist/src/hooks/constants.js +105 -82
- package/dist/src/hooks/constants.js.map +1 -1
- package/dist/src/hooks/skill-context.d.ts.map +1 -1
- package/dist/src/hooks/skill-context.js +54 -6
- package/dist/src/hooks/skill-context.js.map +1 -1
- package/dist/src/hooks/statusline.d.ts +11 -8
- package/dist/src/hooks/statusline.d.ts.map +1 -1
- package/dist/src/hooks/statusline.js +284 -182
- package/dist/src/hooks/statusline.js.map +1 -1
- package/dist/src/hooks/workspace.d.ts.map +1 -1
- package/dist/src/hooks/workspace.js +2 -1
- package/dist/src/hooks/workspace.js.map +1 -1
- package/dist/src/migrations/_template.d.ts +12 -0
- package/dist/src/migrations/_template.d.ts.map +1 -0
- package/dist/src/migrations/_template.js +55 -0
- package/dist/src/migrations/_template.js.map +1 -0
- package/dist/src/migrations/index.d.ts +14 -0
- package/dist/src/migrations/index.d.ts.map +1 -0
- package/dist/src/migrations/index.js +20 -0
- package/dist/src/migrations/index.js.map +1 -0
- package/dist/src/migrations/run.d.ts +12 -0
- package/dist/src/migrations/run.d.ts.map +1 -0
- package/dist/src/migrations/run.js +119 -0
- package/dist/src/migrations/run.js.map +1 -0
- package/dist/src/migrations/v1-to-v2.d.ts +10 -0
- package/dist/src/migrations/v1-to-v2.d.ts.map +1 -0
- package/dist/src/migrations/v1-to-v2.js +71 -0
- package/dist/src/migrations/v1-to-v2.js.map +1 -0
- package/dist/src/tools/team-activity.d.ts.map +1 -1
- package/dist/src/tools/team-activity.js +22 -0
- package/dist/src/tools/team-activity.js.map +1 -1
- package/dist/src/tools/transition-recorder.d.ts +2 -17
- package/dist/src/tools/transition-recorder.d.ts.map +1 -1
- package/dist/src/tools/transition-recorder.js +6 -3
- package/dist/src/tools/transition-recorder.js.map +1 -1
- package/dist/src/types/index.d.ts +2 -1
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/utils/migration-registry.d.ts +65 -0
- package/dist/src/utils/migration-registry.d.ts.map +1 -0
- package/dist/src/utils/migration-registry.js +117 -0
- package/dist/src/utils/migration-registry.js.map +1 -0
- package/dist/src/utils/state-schema.d.ts +153 -0
- package/dist/src/utils/state-schema.d.ts.map +1 -0
- package/dist/src/utils/state-schema.js +329 -0
- package/dist/src/utils/state-schema.js.map +1 -0
- package/package.json +1 -1
- package/templates/state.json +17 -39
- package/workflows/brainstorm.md +3 -3
- package/workflows/codebase-rebuild.md +2 -12
- package/workflows/debug.md +7 -8
- package/workflows/execute.md +18 -4
- package/workflows/fork.md +37 -86
- package/workflows/init.md +1 -4
- package/workflows/integration-test.md +4 -5
- package/workflows/issue.md +3 -9
- package/workflows/learn.md +20 -19
- package/workflows/maestro.codex.md +8 -1
- package/workflows/maestro.md +12 -3
- package/workflows/memory.md +26 -71
- package/workflows/merge.md +45 -107
- package/workflows/milestone-complete.md +24 -7
- package/workflows/retrospective.md +77 -109
- package/workflows/review.md +5 -12
- package/workflows/specs-remove.md +115 -0
- package/workflows/specs-setup.md +10 -32
- package/workflows/status.md +291 -290
- package/workflows/sync.md +5 -5
- package/workflows/test.md +4 -5
- package/workflows/ui-style.md +3 -4
- package/workflows/verify.md +2 -2
- package/workflows/wiki-connect.md +188 -0
- package/workflows/wiki-digest.md +221 -0
- package/workflows/wiki-manage.md +204 -0
|
@@ -1,47 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Visual test for
|
|
2
|
+
* Visual test for statusline — colored text mode.
|
|
3
|
+
*
|
|
4
|
+
* Generates an HTML preview that accurately matches the actual terminal output.
|
|
5
|
+
* Uses the same Unicode icons, segment structure, and TEXT_COLORS as the real renderer.
|
|
3
6
|
*
|
|
4
7
|
* Usage: npx tsx src/hooks/__tests__/statusline-visual-test.ts
|
|
5
8
|
*/
|
|
6
9
|
import { writeFileSync } from 'node:fs';
|
|
7
10
|
import { join } from 'node:path';
|
|
8
11
|
import { tmpdir } from 'node:os';
|
|
9
|
-
import {
|
|
10
|
-
// ---------------------------------------------------------------------------
|
|
11
|
-
// SVG Icon Library — unified minimalist line style, 14x14 viewBox
|
|
12
|
-
// ---------------------------------------------------------------------------
|
|
13
|
-
const SVG_ICONS = {
|
|
14
|
-
// Model — sparkle/star
|
|
15
|
-
model: `<svg viewBox="0 0 14 14" class="icon"><path d="M7 1l1.5 4H13l-3.5 2.5L11 12 7 9.5 3 12l1.5-4.5L1 5h4.5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,
|
|
16
|
-
// Milestone — flag
|
|
17
|
-
milestone: `<svg viewBox="0 0 14 14" class="icon"><path d="M3 2v10M3 2h7l-2 3 2 3H3" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round" stroke-linecap="round"/></svg>`,
|
|
18
|
-
// Phase — diamond
|
|
19
|
-
phase: `<svg viewBox="0 0 14 14" class="icon"><path d="M7 2l5 5-5 5-5-5z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,
|
|
20
|
-
// Coordinator — gear
|
|
21
|
-
coord: `<svg viewBox="0 0 14 14" class="icon"><circle cx="7" cy="7" r="2" fill="none" stroke="currentColor" stroke-width="1.2"/><path d="M7 1v1.5M7 11.5V13M1 7h1.5M11.5 7H13M2.8 2.8l1 1M10.2 10.2l1 1M11.2 2.8l-1 1M3.8 10.2l-1 1" stroke="currentColor" stroke-width="1" stroke-linecap="round"/></svg>`,
|
|
22
|
-
// Task — pencil/edit
|
|
23
|
-
task: `<svg viewBox="0 0 14 14" class="icon"><path d="M2 12l1-4L10 1l3 3-7 7zm7-9l3 3" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/></svg>`,
|
|
24
|
-
// Team — people
|
|
25
|
-
team: `<svg viewBox="0 0 14 14" class="icon"><circle cx="5" cy="4" r="2" fill="none" stroke="currentColor" stroke-width="1.1"/><circle cx="10" cy="4" r="1.5" fill="none" stroke="currentColor" stroke-width="1.1"/><path d="M1 12c0-2.5 2-4 4-4s4 1.5 4 4M8 12c0-1.8 1-3 2.5-3s2.5 1.2 2.5 3" fill="none" stroke="currentColor" stroke-width="1.1" stroke-linecap="round"/></svg>`,
|
|
26
|
-
// Directory — folder
|
|
27
|
-
dir: `<svg viewBox="0 0 14 14" class="icon"><path d="M2 3h4l1 1.5H12v7H2z" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></svg>`,
|
|
28
|
-
// Git — branch
|
|
29
|
-
git: `<svg viewBox="0 0 14 14" class="icon"><circle cx="4" cy="4" r="1.5" fill="none" stroke="currentColor" stroke-width="1.1"/><circle cx="4" cy="11" r="1.5" fill="none" stroke="currentColor" stroke-width="1.1"/><circle cx="10" cy="6" r="1.5" fill="none" stroke="currentColor" stroke-width="1.1"/><path d="M4 5.5v4M8.5 6C7 6 4 6 4 8" fill="none" stroke="currentColor" stroke-width="1.1" stroke-linecap="round"/></svg>`,
|
|
30
|
-
// Context — gauge/meter
|
|
31
|
-
ctx: `<svg viewBox="0 0 14 14" class="icon"><path d="M2 10a5.5 5.5 0 1 1 10 0" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round"/><path d="M7 10V5.5" stroke="currentColor" stroke-width="1.3" stroke-linecap="round"/><circle cx="7" cy="10" r="1" fill="currentColor"/></svg>`,
|
|
32
|
-
};
|
|
12
|
+
import { TEXT_COLORS, ICONS, GIT_ICONS, getCtxLevel } from '../constants.js';
|
|
33
13
|
function rgb(c) {
|
|
34
14
|
return `rgb(${c[0]},${c[1]},${c[2]})`;
|
|
35
15
|
}
|
|
36
|
-
|
|
37
|
-
const
|
|
38
|
-
return
|
|
39
|
-
}
|
|
40
|
-
const ctxFg = (pct) => {
|
|
41
|
-
const m = { ok: SEGMENT_FG.ctxOk, warn: SEGMENT_FG.ctxWarn, alert: SEGMENT_FG.ctxAlert, crit: SEGMENT_FG.ctxCrit };
|
|
42
|
-
return m[getCtxLevel(pct)];
|
|
43
|
-
};
|
|
44
|
-
const ctxKey = (pct) => `ctx${getCtxLevel(pct).charAt(0).toUpperCase()}${getCtxLevel(pct).slice(1)}`;
|
|
16
|
+
function ctxKey(pct) {
|
|
17
|
+
const level = getCtxLevel(pct);
|
|
18
|
+
return `ctx${level.charAt(0).toUpperCase()}${level.slice(1)}`;
|
|
19
|
+
}
|
|
45
20
|
function bar(pct) {
|
|
46
21
|
const f = Math.floor(pct / 10);
|
|
47
22
|
return '\u2588'.repeat(f) + '\u2591'.repeat(10 - f);
|
|
@@ -50,134 +25,70 @@ function esc(s) {
|
|
|
50
25
|
return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
|
|
51
26
|
}
|
|
52
27
|
// ---------------------------------------------------------------------------
|
|
53
|
-
// Scenarios
|
|
28
|
+
// Scenarios — segment structure matches formatStatusline() exactly
|
|
54
29
|
// ---------------------------------------------------------------------------
|
|
55
30
|
const scenarios = [
|
|
56
31
|
{
|
|
57
32
|
label: '1. Minimal — solo, no workflow',
|
|
58
33
|
segments: [
|
|
59
|
-
{
|
|
60
|
-
{
|
|
61
|
-
{
|
|
62
|
-
{ icon: 'ctx', key: ctxKey(30), text: `${bar(30)} 30%`, bg: ctxBg(30), fg: ctxFg(30) },
|
|
34
|
+
{ key: 'model', text: `${ICONS.model} Opus 4` },
|
|
35
|
+
{ key: 'dir', text: `${ICONS.dir} maestro2 ${ICONS.git} master ${GIT_ICONS.clean}` },
|
|
36
|
+
{ key: ctxKey(30), text: `${ICONS.ctx} ${bar(30)} 30%` },
|
|
63
37
|
],
|
|
64
38
|
},
|
|
65
39
|
{
|
|
66
40
|
label: '2. With milestone + phase — context warn',
|
|
67
41
|
segments: [
|
|
68
|
-
{
|
|
69
|
-
{
|
|
70
|
-
{
|
|
71
|
-
{
|
|
72
|
-
{
|
|
73
|
-
{ icon: 'ctx', key: ctxKey(54), text: `${bar(54)} 54%`, bg: ctxBg(54), fg: ctxFg(54) },
|
|
42
|
+
{ key: 'model', text: `${ICONS.model} Sonnet 4` },
|
|
43
|
+
{ key: 'milestone', text: `${ICONS.milestone} MVP 1/4` },
|
|
44
|
+
{ key: 'phase', text: `${ICONS.phase} P2.1 [2plan 1run]` },
|
|
45
|
+
{ key: 'dir', text: `${ICONS.dir} maestro2 ${ICONS.git} master ${GIT_ICONS.dirty}` },
|
|
46
|
+
{ key: ctxKey(54), text: `${ICONS.ctx} ${bar(54)} 54%` },
|
|
74
47
|
],
|
|
75
48
|
},
|
|
76
49
|
{
|
|
77
50
|
label: '3. Full — coordinator + task + team',
|
|
78
51
|
segments: [
|
|
79
|
-
{
|
|
80
|
-
{
|
|
81
|
-
{
|
|
82
|
-
{
|
|
83
|
-
{
|
|
84
|
-
{
|
|
85
|
-
{
|
|
86
|
-
{
|
|
87
|
-
{ icon: 'ctx', key: ctxKey(66), text: `${bar(66)} 66%`, bg: ctxBg(66), fg: ctxFg(66) },
|
|
52
|
+
{ key: 'model', text: `${ICONS.model} Opus 4` },
|
|
53
|
+
{ key: 'milestone', text: `${ICONS.milestone} MVP 2/4` },
|
|
54
|
+
{ key: 'phase', text: `${ICONS.phase} P3 [3plan]` },
|
|
55
|
+
{ key: 'coord', text: `${ICONS.coord} full-lifecycle verify [3/6]` },
|
|
56
|
+
{ key: 'task', text: `${ICONS.task} Fixing auth module` },
|
|
57
|
+
{ key: 'team', text: `${ICONS.team} alice (P3/001) | bob +2` },
|
|
58
|
+
{ key: 'dir', text: `${ICONS.dir} maestro2 ${ICONS.git} feat/auth ${GIT_ICONS.dirty}${GIT_ICONS.ahead}2` },
|
|
59
|
+
{ key: ctxKey(66), text: `${ICONS.ctx} ${bar(66)} 66%` },
|
|
88
60
|
],
|
|
89
61
|
},
|
|
90
62
|
{
|
|
91
63
|
label: '4. Critical context — 92%',
|
|
92
64
|
segments: [
|
|
93
|
-
{
|
|
94
|
-
{
|
|
95
|
-
{
|
|
96
|
-
{
|
|
97
|
-
{
|
|
98
|
-
{ icon: 'ctx', key: ctxKey(92), text: `${bar(92)} 92%`, bg: ctxBg(92), fg: ctxFg(92) },
|
|
65
|
+
{ key: 'model', text: `${ICONS.model} Haiku 4.5` },
|
|
66
|
+
{ key: 'milestone', text: `${ICONS.milestone} Production 3/4` },
|
|
67
|
+
{ key: 'phase', text: `${ICONS.phase} P4` },
|
|
68
|
+
{ key: 'dir', text: `${ICONS.dir} maestro2 ${ICONS.git} main ${GIT_ICONS.clean}` },
|
|
69
|
+
{ key: ctxKey(92), text: `${ICONS.ctx} ${bar(92)} 92%` },
|
|
99
70
|
],
|
|
100
71
|
},
|
|
101
72
|
{
|
|
102
73
|
label: '5. No workflow, no context',
|
|
103
74
|
segments: [
|
|
104
|
-
{
|
|
105
|
-
{
|
|
106
|
-
{ icon: 'git', key: 'dir', text: 'develop ⚠↓3', bg: SEGMENT_BG.dir, fg: SEGMENT_FG.dir },
|
|
75
|
+
{ key: 'model', text: `${ICONS.model} Claude` },
|
|
76
|
+
{ key: 'dir', text: `${ICONS.dir} my-project ${ICONS.git} develop ${GIT_ICONS.conflict}${GIT_ICONS.behind}3` },
|
|
107
77
|
],
|
|
108
78
|
},
|
|
109
79
|
];
|
|
110
80
|
// ---------------------------------------------------------------------------
|
|
111
|
-
//
|
|
81
|
+
// Renderer — matches renderColoredText() logic exactly
|
|
112
82
|
// ---------------------------------------------------------------------------
|
|
113
|
-
function
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
let html = '<div class="pl-line">';
|
|
121
|
-
for (let i = 0; i < merged.length; i++) {
|
|
122
|
-
const s = merged[i];
|
|
123
|
-
html += `<span class="pl-seg" style="background:${rgb(s.bg)};color:${rgb(s.fg)}">${s.iconHtml}<span class="seg-text">${esc(s.text)}</span></span>`;
|
|
124
|
-
const nextBg = i < merged.length - 1 ? rgb(merged[i + 1].bg) : '#1e1e2e';
|
|
125
|
-
// Classic Powerline dovetail: right-pointing arrow (current color) on next-bg
|
|
126
|
-
html += `<svg class="pl-arrow" viewBox="0 0 14 28" preserveAspectRatio="none">` +
|
|
127
|
-
`<rect width="14" height="28" fill="${nextBg}"/>` +
|
|
128
|
-
`<polygon points="0,0 14,14 0,28" fill="${rgb(s.bg)}"/>` +
|
|
129
|
-
`</svg>`;
|
|
130
|
-
}
|
|
131
|
-
html += '</div>';
|
|
132
|
-
return html;
|
|
133
|
-
}
|
|
134
|
-
/** Colored text — colored text on dark bg + pipe separators */
|
|
135
|
-
function renderText(segs) {
|
|
136
|
-
const merged = mergeAdjacentDir(segs);
|
|
137
|
-
const parts = merged.map((s) => {
|
|
138
|
-
const ck = s.key;
|
|
139
|
-
const color = TEXT_COLORS[ck] ?? TEXT_COLORS.model;
|
|
140
|
-
return `<span style="color:${rgb(color)}">${s.iconHtml}<span class="seg-text">${esc(s.text)}</span></span>`;
|
|
83
|
+
function renderPreview(segs) {
|
|
84
|
+
const pipeColor = rgb(TEXT_COLORS.separator);
|
|
85
|
+
const pipe = `<span style="color:${pipeColor}"> | </span>`;
|
|
86
|
+
const parts = segs.map((seg) => {
|
|
87
|
+
const colorKey = seg.key;
|
|
88
|
+
const color = TEXT_COLORS[colorKey] ?? TEXT_COLORS.model;
|
|
89
|
+
return `<span style="color:${rgb(color)}">${esc(seg.text)}</span>`;
|
|
141
90
|
});
|
|
142
|
-
|
|
143
|
-
return `<div class="txt-line">${parts.join(pipe)}</div>`;
|
|
144
|
-
}
|
|
145
|
-
/** Terminal preview — simulates actual ❯ character rendering in terminal */
|
|
146
|
-
function renderTerminal(segs) {
|
|
147
|
-
const merged = mergeAdjacentDir(segs);
|
|
148
|
-
let html = '<div class="term-line">';
|
|
149
|
-
for (let i = 0; i < merged.length; i++) {
|
|
150
|
-
const s = merged[i];
|
|
151
|
-
// Segment content with bg color
|
|
152
|
-
html += `<span class="term-seg" style="background:${rgb(s.bg)};color:${rgb(s.fg)}">${s.iconHtml} <span class="seg-text">${esc(s.text)}</span> </span>`;
|
|
153
|
-
// Bold V-arrow separator: fg = current bg, bg = next bg (or transparent for last)
|
|
154
|
-
const nextBg = i < merged.length - 1 ? rgb(merged[i + 1].bg) : '#1e1e2e';
|
|
155
|
-
html += `<span class="term-arrow" style="color:${rgb(s.bg)};background:${nextBg};font-weight:bold">\u276F</span>`;
|
|
156
|
-
}
|
|
157
|
-
html += '</div>';
|
|
158
|
-
return html;
|
|
159
|
-
}
|
|
160
|
-
/** Merge dir+git into one segment to avoid redundant separators */
|
|
161
|
-
function mergeAdjacentDir(segs) {
|
|
162
|
-
const result = [];
|
|
163
|
-
for (let i = 0; i < segs.length; i++) {
|
|
164
|
-
const s = segs[i];
|
|
165
|
-
if (s.icon === 'dir' && i + 1 < segs.length && segs[i + 1].icon === 'git') {
|
|
166
|
-
const g = segs[i + 1];
|
|
167
|
-
result.push({
|
|
168
|
-
...s,
|
|
169
|
-
text: `${s.text} ${g.text}`,
|
|
170
|
-
iconHtml: svgIcon('dir') + `<span class="seg-text">${esc(s.text)}</span> ` + svgIcon('git'),
|
|
171
|
-
});
|
|
172
|
-
// Override: we already embedded text in iconHtml, clear the text field
|
|
173
|
-
result[result.length - 1].text = g.text;
|
|
174
|
-
i++; // skip git segment
|
|
175
|
-
}
|
|
176
|
-
else {
|
|
177
|
-
result.push({ ...s, iconHtml: svgIcon(s.icon) });
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
return result;
|
|
91
|
+
return `<div class="line">${parts.join(pipe)}</div>`;
|
|
181
92
|
}
|
|
182
93
|
// ---------------------------------------------------------------------------
|
|
183
94
|
// HTML
|
|
@@ -185,18 +96,12 @@ function mergeAdjacentDir(segs) {
|
|
|
185
96
|
const rows = scenarios.map(s => `
|
|
186
97
|
<div class="scenario">
|
|
187
98
|
<div class="label">${s.label}</div>
|
|
188
|
-
|
|
189
|
-
${renderTerminal(s.segments)}
|
|
190
|
-
<div class="mode-tag">POWERLINE (SVG ideal)</div>
|
|
191
|
-
${renderPowerline(s.segments)}
|
|
192
|
-
<div class="mode-tag">COLORED TEXT</div>
|
|
193
|
-
${renderText(s.segments)}
|
|
99
|
+
${renderPreview(s.segments)}
|
|
194
100
|
</div>`).join('\n');
|
|
195
|
-
const iconRef = Object.entries(SVG_ICONS).map(([k, v]) => `<div class="icon-item"><span class="icon-preview" style="color:#89b4fa">${v}</span><span class="icon-name">${k}</span></div>`).join('');
|
|
196
101
|
const html = `<!DOCTYPE html>
|
|
197
102
|
<html><head>
|
|
198
103
|
<meta charset="utf-8">
|
|
199
|
-
<title>Maestro Statusline —
|
|
104
|
+
<title>Maestro Statusline — Preview</title>
|
|
200
105
|
<style>
|
|
201
106
|
* { box-sizing: border-box; }
|
|
202
107
|
body {
|
|
@@ -205,51 +110,27 @@ const html = `<!DOCTYPE html>
|
|
|
205
110
|
font-size: 13px; line-height: 1.5;
|
|
206
111
|
}
|
|
207
112
|
h1 { color: #89b4fa; font-size: 18px; margin-bottom: 8px; font-weight: 500; }
|
|
208
|
-
h2 { color: #a6adc8; font-size: 14px; margin: 32px 0 12px; font-weight: 400; }
|
|
209
113
|
.subtitle { color: #585b70; font-size: 11px; margin-bottom: 28px; }
|
|
210
114
|
|
|
211
|
-
.scenario { margin-bottom:
|
|
212
|
-
.label { color: #a6adc8; font-size: 12px; margin-bottom:
|
|
213
|
-
.mode-tag { color: #45475a; font-size: 9px; letter-spacing: 1.5px; margin: 4px 0 3px; text-transform: uppercase; }
|
|
214
|
-
|
|
215
|
-
/* Powerline */
|
|
216
|
-
.pl-line { display: inline-flex; align-items: stretch; height: 28px; }
|
|
217
|
-
.pl-seg { padding: 0 10px; white-space: nowrap; display: inline-flex; align-items: center; gap: 5px; }
|
|
218
|
-
.pl-arrow { width: 14px; height: 28px; flex-shrink: 0; display: block; margin: 0; padding: 0; }
|
|
219
|
-
|
|
220
|
-
/* Colored text */
|
|
221
|
-
.txt-line { display: inline-flex; align-items: center; background: #181825; padding: 4px 14px; border-radius: 6px; height: 28px; gap: 0; }
|
|
222
|
-
.txt-line > span { display: inline-flex; align-items: center; gap: 4px; }
|
|
223
|
-
.pipe { color: rgb(${TEXT_COLORS.separator.join(',')}); margin: 0 8px; }
|
|
224
|
-
|
|
225
|
-
/* Terminal preview */
|
|
226
|
-
.term-line { display: inline-flex; align-items: stretch; height: 28px; font-weight: bold; }
|
|
227
|
-
.term-seg { padding: 0 0 0 8px; white-space: nowrap; display: inline-flex; align-items: center; gap: 4px; }
|
|
228
|
-
.term-arrow { display: inline-flex; align-items: center; justify-content: center; padding: 0 4px; font-size: 15px; font-weight: bold; }
|
|
115
|
+
.scenario { margin-bottom: 24px; }
|
|
116
|
+
.label { color: #a6adc8; font-size: 12px; margin-bottom: 6px; }
|
|
229
117
|
|
|
230
|
-
.
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
.icon-grid { display: flex; gap: 24px; flex-wrap: wrap; margin-top: 8px; }
|
|
237
|
-
.icon-item { display: flex; align-items: center; gap: 6px; }
|
|
238
|
-
.icon-preview .icon { width: 20px; height: 20px; }
|
|
239
|
-
.icon-name { color: #585b70; font-size: 11px; }
|
|
118
|
+
.line {
|
|
119
|
+
display: inline-flex; align-items: center;
|
|
120
|
+
background: #181825; padding: 4px 14px; border-radius: 6px; height: 28px;
|
|
121
|
+
white-space: nowrap;
|
|
122
|
+
}
|
|
123
|
+
.line > span { white-space: nowrap; }
|
|
240
124
|
|
|
241
125
|
.footer { margin-top: 32px; color: #45475a; font-size: 11px; }
|
|
242
|
-
.footer code { color: #89b4fa; }
|
|
243
126
|
</style>
|
|
244
127
|
</head><body>
|
|
245
128
|
<h1>Maestro Statusline</h1>
|
|
246
|
-
<div class="subtitle">
|
|
129
|
+
<div class="subtitle">Colored text mode — Unicode icons, pipe separators (matches actual terminal output)</div>
|
|
247
130
|
${rows}
|
|
248
|
-
<h2>Icon Reference</h2>
|
|
249
|
-
<div class="icon-grid">${iconRef}</div>
|
|
250
131
|
<div class="footer">
|
|
251
|
-
<p
|
|
252
|
-
<p
|
|
132
|
+
<p>Segments are conditionally shown — empty segments are omitted.</p>
|
|
133
|
+
<p>Colors from TEXT_COLORS in constants.ts, icons from ICONS (Unicode set).</p>
|
|
253
134
|
</div>
|
|
254
135
|
</body></html>`;
|
|
255
136
|
const outPath = join(tmpdir(), 'maestro-statusline-test.html');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusline-visual-test.js","sourceRoot":"","sources":["../../../../src/hooks/__tests__/statusline-visual-test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"statusline-visual-test.js","sourceRoot":"","sources":["../../../../src/hooks/__tests__/statusline-visual-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,19 +18,16 @@ export declare const COORD_BRIDGE_PREFIX = "maestro-coord-";
|
|
|
18
18
|
export declare const SPEC_KW_BRIDGE_PREFIX = "maestro-spec-kw-";
|
|
19
19
|
/** Max ms to wait for stdin before exiting (Windows pipe safety) */
|
|
20
20
|
export declare const STDIN_TIMEOUT_MS = 3000;
|
|
21
|
-
/** Powerline right-arrow separator (E0B0 needs Powerline font, fallback to V-chevron) */
|
|
22
|
-
export declare const PL_SEP: string;
|
|
23
|
-
/** Select icon set based on config */
|
|
24
21
|
export declare const ICONS: {
|
|
25
|
-
readonly model: "
|
|
26
|
-
readonly milestone: "
|
|
27
|
-
readonly phase: "
|
|
22
|
+
readonly model: "";
|
|
23
|
+
readonly milestone: "";
|
|
24
|
+
readonly phase: "◆";
|
|
28
25
|
readonly coord: "";
|
|
29
26
|
readonly task: "";
|
|
30
27
|
readonly team: "";
|
|
31
28
|
readonly dir: "";
|
|
32
29
|
readonly git: "";
|
|
33
|
-
readonly ctx: "
|
|
30
|
+
readonly ctx: "";
|
|
34
31
|
} | {
|
|
35
32
|
readonly model: "✎";
|
|
36
33
|
readonly milestone: "⚑";
|
|
@@ -39,47 +36,17 @@ export declare const ICONS: {
|
|
|
39
36
|
readonly task: "▸";
|
|
40
37
|
readonly team: "👥";
|
|
41
38
|
readonly dir: "■";
|
|
42
|
-
readonly git: "
|
|
39
|
+
readonly git: "⎇";
|
|
43
40
|
readonly ctx: "◔";
|
|
44
41
|
};
|
|
45
42
|
/** Git status icons */
|
|
46
43
|
export declare const GIT_ICONS: {
|
|
47
44
|
readonly clean: "✓";
|
|
48
|
-
readonly dirty: "
|
|
45
|
+
readonly dirty: "△";
|
|
49
46
|
readonly conflict: "⚠";
|
|
50
47
|
readonly ahead: "↑";
|
|
51
48
|
readonly behind: "↓";
|
|
52
49
|
};
|
|
53
|
-
/**
|
|
54
|
-
* RGB background colors — muted Notion-inspired palette.
|
|
55
|
-
* Each entry: [R, G, B]
|
|
56
|
-
*/
|
|
57
|
-
export declare const SEGMENT_BG: {
|
|
58
|
-
readonly model: readonly [63, 75, 91];
|
|
59
|
-
readonly milestone: readonly [160, 82, 45];
|
|
60
|
-
readonly phase: readonly [180, 142, 46];
|
|
61
|
-
readonly coord: readonly [58, 126, 200];
|
|
62
|
-
readonly task: readonly [55, 55, 60];
|
|
63
|
-
readonly team: readonly [123, 94, 167];
|
|
64
|
-
readonly dir: readonly [45, 134, 89];
|
|
65
|
-
readonly ctxOk: readonly [45, 134, 89];
|
|
66
|
-
readonly ctxWarn: readonly [180, 142, 46];
|
|
67
|
-
readonly ctxAlert: readonly [200, 122, 42];
|
|
68
|
-
readonly ctxCrit: readonly [196, 64, 64];
|
|
69
|
-
};
|
|
70
|
-
export declare const SEGMENT_FG: {
|
|
71
|
-
readonly model: readonly [255, 255, 255];
|
|
72
|
-
readonly milestone: readonly [255, 255, 255];
|
|
73
|
-
readonly phase: readonly [30, 30, 30];
|
|
74
|
-
readonly coord: readonly [255, 255, 255];
|
|
75
|
-
readonly task: readonly [224, 224, 224];
|
|
76
|
-
readonly team: readonly [255, 255, 255];
|
|
77
|
-
readonly dir: readonly [255, 255, 255];
|
|
78
|
-
readonly ctxOk: readonly [255, 255, 255];
|
|
79
|
-
readonly ctxWarn: readonly [30, 30, 30];
|
|
80
|
-
readonly ctxAlert: readonly [255, 255, 255];
|
|
81
|
-
readonly ctxCrit: readonly [255, 255, 255];
|
|
82
|
-
};
|
|
83
50
|
export type CtxLevel = 'ok' | 'warn' | 'alert' | 'crit';
|
|
84
51
|
export declare function getCtxLevel(usedPct: number): CtxLevel;
|
|
85
52
|
export declare function ansiBg(rgb: readonly [number, number, number]): string;
|
|
@@ -89,27 +56,28 @@ export declare const ANSI_DIM = "\u001B[2m";
|
|
|
89
56
|
export declare const ANSI_BOLD = "\u001B[1m";
|
|
90
57
|
export declare const ANSI_CYAN = "\u001B[36m";
|
|
91
58
|
export declare const ANSI_BLINK = "\u001B[5m";
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
59
|
+
type RGB = readonly [number, number, number];
|
|
60
|
+
interface ThemeColors {
|
|
61
|
+
model: RGB;
|
|
62
|
+
milestone: RGB;
|
|
63
|
+
phase: RGB;
|
|
64
|
+
coord: RGB;
|
|
65
|
+
task: RGB;
|
|
66
|
+
team: RGB;
|
|
67
|
+
dir: RGB;
|
|
68
|
+
git: RGB;
|
|
69
|
+
ctxOk: RGB;
|
|
70
|
+
ctxWarn: RGB;
|
|
71
|
+
ctxAlert: RGB;
|
|
72
|
+
ctxCrit: RGB;
|
|
73
|
+
separator: RGB;
|
|
74
|
+
}
|
|
75
|
+
/** All available themes */
|
|
76
|
+
export declare const THEMES: Record<string, ThemeColors>;
|
|
77
|
+
/** Available theme names for install UI */
|
|
78
|
+
export declare const THEME_NAMES: string[];
|
|
79
|
+
/** Active theme colors — used as foreground on transparent background */
|
|
80
|
+
export declare const TEXT_COLORS: ThemeColors;
|
|
113
81
|
export declare const FACES: {
|
|
114
82
|
readonly happy: "^_^";
|
|
115
83
|
readonly neutral: "-_-";
|
|
@@ -119,4 +87,5 @@ export declare const FACES: {
|
|
|
119
87
|
export type FaceLevel = keyof typeof FACES;
|
|
120
88
|
export declare function getFaceLevel(usedPct: number): FaceLevel;
|
|
121
89
|
export declare const FACE_COLORS: Record<FaceLevel, string>;
|
|
90
|
+
export {};
|
|
122
91
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/hooks/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/hooks/constants.ts"],"names":[],"mappings":"AA2CA,sDAAsD;AACtD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,uDAAuD;AACvD,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,sDAAsD;AACtD,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,kDAAkD;AAClD,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,yDAAyD;AACzD,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C,wCAAwC;AACxC,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAE5C,uDAAuD;AACvD,eAAO,MAAM,aAAa,oBAAoB,CAAC;AAE/C,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,mBAAmB,CAAC;AAEpD,qEAAqE;AACrE,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,OAAO,CAAC;AA8BrC,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;CAAkD,CAAC;AAErE,uBAAuB;AACvB,eAAO,MAAM,SAAS;;;;;;CAMZ,CAAC;AAMX,MAAM,MAAM,QAAQ,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAExD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAKrD;AAMD,wBAAgB,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAErE;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAErE;AAED,eAAO,MAAM,UAAU,cAAY,CAAC;AACpC,eAAO,MAAM,QAAQ,cAAY,CAAC;AAClC,eAAO,MAAM,SAAS,cAAY,CAAC;AACnC,eAAO,MAAM,SAAS,eAAa,CAAC;AACpC,eAAO,MAAM,UAAU,cAAY,CAAC;AAMpC,KAAK,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAE7C,UAAU,WAAW;IACnB,KAAK,EAAM,GAAG,CAAC;IACf,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAM,GAAG,CAAC;IACf,KAAK,EAAM,GAAG,CAAC;IACf,IAAI,EAAO,GAAG,CAAC;IACf,IAAI,EAAO,GAAG,CAAC;IACf,GAAG,EAAQ,GAAG,CAAC;IACf,GAAG,EAAQ,GAAG,CAAC;IACf,KAAK,EAAM,GAAG,CAAC;IACf,OAAO,EAAI,GAAG,CAAC;IACf,QAAQ,EAAG,GAAG,CAAC;IACf,OAAO,EAAI,GAAG,CAAC;IACf,SAAS,EAAE,GAAG,CAAC;CAChB;AAED,2BAA2B;AAC3B,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CA4E9C,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,WAAW,EAA0B,MAAM,EAAE,CAAC;AAE3D,yEAAyE;AACzE,eAAO,MAAM,WAAW,EAAE,WAAsD,CAAC;AAGjF,eAAO,MAAM,KAAK;;;;;CAKR,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,KAAK,CAAC;AAE3C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAKvD;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAKjD,CAAC"}
|