@intrect/openswarm 0.10.2 → 0.11.0

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 (82) hide show
  1. package/README.md +13 -61
  2. package/dist/agents/pairPipeline.d.ts.map +1 -1
  3. package/dist/agents/pairPipeline.js +4 -3
  4. package/dist/agents/pairPipeline.js.map +1 -1
  5. package/dist/cli/reviewAudit.d.ts +72 -1
  6. package/dist/cli/reviewAudit.d.ts.map +1 -1
  7. package/dist/cli/reviewAudit.js +96 -4
  8. package/dist/cli/reviewAudit.js.map +1 -1
  9. package/dist/cli/reviewMaxCommand.d.ts +2 -0
  10. package/dist/cli/reviewMaxCommand.d.ts.map +1 -1
  11. package/dist/cli/reviewMaxCommand.js +38 -9
  12. package/dist/cli/reviewMaxCommand.js.map +1 -1
  13. package/dist/cli/reviewProgress.d.ts +8 -5
  14. package/dist/cli/reviewProgress.d.ts.map +1 -1
  15. package/dist/cli/reviewProgress.js +19 -14
  16. package/dist/cli/reviewProgress.js.map +1 -1
  17. package/dist/cli.js +2 -0
  18. package/dist/cli.js.map +1 -1
  19. package/dist/orchestration/taskScheduler.d.ts.map +1 -1
  20. package/dist/orchestration/taskScheduler.js +10 -1
  21. package/dist/orchestration/taskScheduler.js.map +1 -1
  22. package/dist/runners/cliRunner.d.ts.map +1 -1
  23. package/dist/runners/cliRunner.js +21 -5
  24. package/dist/runners/cliRunner.js.map +1 -1
  25. package/dist/support/colors.d.ts +20 -0
  26. package/dist/support/colors.d.ts.map +1 -1
  27. package/dist/support/colors.js +29 -0
  28. package/dist/support/colors.js.map +1 -1
  29. package/dist/support/glyphs.d.ts +9 -0
  30. package/dist/support/glyphs.d.ts.map +1 -0
  31. package/dist/support/glyphs.js +27 -0
  32. package/dist/support/glyphs.js.map +1 -0
  33. package/dist/tui/components/AuditBoard.d.ts.map +1 -1
  34. package/dist/tui/components/AuditBoard.js +3 -8
  35. package/dist/tui/components/AuditBoard.js.map +1 -1
  36. package/dist/tui/components/StageTimeline.d.ts.map +1 -1
  37. package/dist/tui/components/StageTimeline.js +5 -4
  38. package/dist/tui/components/StageTimeline.js.map +1 -1
  39. package/dist/tui/components/Status.d.ts +14 -0
  40. package/dist/tui/components/Status.d.ts.map +1 -0
  41. package/dist/tui/components/Status.js +33 -0
  42. package/dist/tui/components/Status.js.map +1 -0
  43. package/dist/tui/components/SubagentTree.d.ts.map +1 -1
  44. package/dist/tui/components/SubagentTree.js +4 -4
  45. package/dist/tui/components/SubagentTree.js.map +1 -1
  46. package/dist/tui/loadingMessages.d.ts +1 -3
  47. package/dist/tui/loadingMessages.d.ts.map +1 -1
  48. package/dist/tui/loadingMessages.js +3 -5
  49. package/dist/tui/loadingMessages.js.map +1 -1
  50. package/dist/tui/theme.d.ts +17 -3
  51. package/dist/tui/theme.d.ts.map +1 -1
  52. package/dist/tui/theme.js +27 -5
  53. package/dist/tui/theme.js.map +1 -1
  54. package/package.json +1 -1
  55. package/dist/agents/multiLensReview.d.ts +0 -49
  56. package/dist/agents/multiLensReview.d.ts.map +0 -1
  57. package/dist/agents/multiLensReview.js +0 -148
  58. package/dist/agents/multiLensReview.js.map +0 -1
  59. package/dist/automation/backlogGrooming.d.ts +0 -21
  60. package/dist/automation/backlogGrooming.d.ts.map +0 -1
  61. package/dist/automation/backlogGrooming.js +0 -80
  62. package/dist/automation/backlogGrooming.js.map +0 -1
  63. package/dist/automation/localCI.d.ts +0 -24
  64. package/dist/automation/localCI.d.ts.map +0 -1
  65. package/dist/automation/localCI.js +0 -84
  66. package/dist/automation/localCI.js.map +0 -1
  67. package/dist/support/chat.d.ts +0 -3
  68. package/dist/support/chat.d.ts.map +0 -1
  69. package/dist/support/chat.js +0 -313
  70. package/dist/support/chat.js.map +0 -1
  71. package/dist/support/chatTui.d.ts +0 -3
  72. package/dist/support/chatTui.d.ts.map +0 -1
  73. package/dist/support/chatTui.js +0 -1225
  74. package/dist/support/chatTui.js.map +0 -1
  75. package/dist/support/quotaTracker.d.ts +0 -29
  76. package/dist/support/quotaTracker.d.ts.map +0 -1
  77. package/dist/support/quotaTracker.js +0 -89
  78. package/dist/support/quotaTracker.js.map +0 -1
  79. package/dist/tui/components/StatusBar.d.ts +0 -7
  80. package/dist/tui/components/StatusBar.d.ts.map +0 -1
  81. package/dist/tui/components/StatusBar.js +0 -8
  82. package/dist/tui/components/StatusBar.js.map +0 -1
@@ -8,6 +8,8 @@ import { homedir } from 'node:os';
8
8
  import { PairPipeline } from '../agents/pairPipeline.js';
9
9
  import { initLocale } from '../locale/index.js';
10
10
  import { expandPath } from '../core/config.js';
11
+ import { startProgressHeartbeat } from '../cli/reviewProgress.js';
12
+ import { status } from '../support/colors.js';
11
13
  // Helpers
12
14
  // expandPath imported from core/config.ts (with resolveRelative=true for CLI paths)
13
15
  /** Check if Claude CLI is installed */
@@ -97,19 +99,33 @@ export async function runCli(options) {
97
99
  console.log('');
98
100
  // 8. Attach event listeners for progress
99
101
  const stageStartTimes = new Map();
102
+ // Every stage (worker included) gets the same animated braille heartbeat the
103
+ // reviewer has, so a running stage never looks frozen. On a non-TTY or in
104
+ // verbose mode (where each tool line is printed) we fall back to plain lines.
105
+ // (INT-2260)
106
+ const liveSpinner = !!process.stdout.isTTY && !options.verbose;
107
+ let heartbeat = null;
108
+ const stopHeartbeat = () => {
109
+ heartbeat?.stop();
110
+ heartbeat = null;
111
+ };
100
112
  pipeline.on('stage:start', ({ stage }) => {
101
113
  stageStartTimes.set(stage, Date.now());
102
- process.stdout.write(` ~ ${stage}...`);
114
+ if (liveSpinner)
115
+ heartbeat = startProgressHeartbeat(`${stage}…`, { write: (s) => process.stdout.write(s) });
116
+ else
117
+ process.stdout.write(` ~ ${stage}...\n`);
103
118
  });
104
119
  pipeline.on('stage:complete', ({ stage, result }) => {
105
- const symbol = result.success ? 'v' : 'x';
120
+ stopHeartbeat();
106
121
  const duration = (result.duration / 1000).toFixed(1);
107
- // Clear the "running" line and replace with result
108
- process.stdout.write(`\r ${symbol} ${stage} (${duration}s)\n`);
122
+ const line = `${stage} (${duration}s)`;
123
+ process.stdout.write(` ${result.success ? status.ok(line) : status.err(line)}\n`);
109
124
  });
110
125
  pipeline.on('stage:fail', ({ stage, result }) => {
126
+ stopHeartbeat();
111
127
  const duration = (result.duration / 1000).toFixed(1);
112
- process.stdout.write(`\r x ${stage} (${duration}s) FAILED\n`);
128
+ process.stdout.write(` ${status.err(`${stage} (${duration}s) FAILED`)}\n`);
113
129
  });
114
130
  pipeline.on('iteration:start', ({ iteration, maxIterations }) => {
115
131
  if (iteration > 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"cliRunner.js","sourceRoot":"","sources":["../../src/runners/cliRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cliRunner.js","sourceRoot":"","sources":["../../src/runners/cliRunner.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type StatusKind } from './glyphs.js';
1
2
  export declare const c: {
2
3
  enabled: boolean;
3
4
  bold: (s: string) => string;
@@ -12,4 +13,23 @@ export declare const c: {
12
13
  /** 24-bit truecolor foreground (for the banner gradient). */
13
14
  rgb: (r: number, g: number, b: number) => (s: string) => string;
14
15
  };
16
+ /**
17
+ * Console status helpers — the plain-output adapter over the shared glyph
18
+ * vocabulary (support/glyphs GLYPH), mirroring the Ink <StatusIcon>. `status.ok(
19
+ * 'saved')` → a green `✓ saved` (stripped under NO_COLOR / non-TTY). Use these
20
+ * instead of hand-writing `console.log('✓ …')` so CLI output can't drift from
21
+ * the TUI. (INT-2260)
22
+ */
23
+ export declare const status: {
24
+ /** Bare colored glyph (no trailing text), e.g. for inline use. */
25
+ glyph: (kind: StatusKind) => string;
26
+ /** `<glyph> <text>`, colored for the kind. */
27
+ line: (kind: StatusKind, text: string) => string;
28
+ ok: (text: string) => string;
29
+ err: (text: string) => string;
30
+ warn: (text: string) => string;
31
+ revise: (text: string) => string;
32
+ running: (text: string) => string;
33
+ info: (text: string) => string;
34
+ };
15
35
  //# sourceMappingURL=colors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/support/colors.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,CAAC;;cAHR,MAAM,KAAG,MAAM;aAAf,MAAM,KAAG,MAAM;aAAf,MAAM,KAAG,MAAM;eAAf,MAAM,KAAG,MAAM;gBAAf,MAAM,KAAG,MAAM;cAAf,MAAM,KAAG,MAAM;iBAAf,MAAM,KAAG,MAAM;cAAf,MAAM,KAAG,MAAM;cAAf,MAAM,KAAG,MAAM;IAcnB,6DAA6D;aAEvD,MAAM,KAAK,MAAM,KAAK,MAAM,MAC/B,GAAG,MAAM,KAAG,MAAM;CAEtB,CAAC"}
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/support/colors.ts"],"names":[],"mappings":"AAOA,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AASrD,eAAO,MAAM,CAAC;;cAHR,MAAM,KAAG,MAAM;aAAf,MAAM,KAAG,MAAM;aAAf,MAAM,KAAG,MAAM;eAAf,MAAM,KAAG,MAAM;gBAAf,MAAM,KAAG,MAAM;cAAf,MAAM,KAAG,MAAM;iBAAf,MAAM,KAAG,MAAM;cAAf,MAAM,KAAG,MAAM;cAAf,MAAM,KAAG,MAAM;IAcnB,6DAA6D;aAEvD,MAAM,KAAK,MAAM,KAAK,MAAM,MAC/B,GAAG,MAAM,KAAG,MAAM;CAEtB,CAAC;AAYF;;;;;;GAMG;AACH,eAAO,MAAM,MAAM;IACjB,kEAAkE;kBACpD,UAAU,KAAG,MAAM;IACjC,8CAA8C;iBACjC,UAAU,QAAQ,MAAM,KAAG,MAAM;eACnC,MAAM,KAAG,MAAM;gBACd,MAAM,KAAG,MAAM;iBACd,MAAM,KAAG,MAAM;mBACb,MAAM,KAAG,MAAM;oBACd,MAAM,KAAG,MAAM;iBAClB,MAAM,KAAG,MAAM;CAC7B,CAAC"}
@@ -4,6 +4,7 @@
4
4
  //
5
5
  // Honors NO_COLOR and non-TTY output (pipes/CI) — colors are stripped so logs
6
6
  // stay clean when redirected. Used by CLI commands (init, doctor, …).
7
+ import { GLYPH } from './glyphs.js';
7
8
  const useColor = !!process.stdout.isTTY && !process.env.NO_COLOR;
8
9
  const wrap = (open, close) => (s) => useColor ? `\x1b[${open}m${s}\x1b[${close}m` : s;
9
10
  export const c = {
@@ -20,4 +21,32 @@ export const c = {
20
21
  /** 24-bit truecolor foreground (for the banner gradient). */
21
22
  rgb: (r, g, b) => (s) => useColor ? `\x1b[38;2;${r};${g};${b}m${s}\x1b[39m` : s,
22
23
  };
24
+ /** Console color per status kind — the plain-output twin of theme.STATUS. */
25
+ const STATUS_PAINT = {
26
+ running: c.cyan,
27
+ ok: c.green,
28
+ warn: c.yellow,
29
+ err: c.red,
30
+ revise: c.magenta,
31
+ info: c.blue,
32
+ };
33
+ /**
34
+ * Console status helpers — the plain-output adapter over the shared glyph
35
+ * vocabulary (support/glyphs GLYPH), mirroring the Ink <StatusIcon>. `status.ok(
36
+ * 'saved')` → a green `✓ saved` (stripped under NO_COLOR / non-TTY). Use these
37
+ * instead of hand-writing `console.log('✓ …')` so CLI output can't drift from
38
+ * the TUI. (INT-2260)
39
+ */
40
+ export const status = {
41
+ /** Bare colored glyph (no trailing text), e.g. for inline use. */
42
+ glyph: (kind) => STATUS_PAINT[kind](GLYPH[kind]),
43
+ /** `<glyph> <text>`, colored for the kind. */
44
+ line: (kind, text) => STATUS_PAINT[kind](`${GLYPH[kind]} ${text}`),
45
+ ok: (text) => STATUS_PAINT.ok(`${GLYPH.ok} ${text}`),
46
+ err: (text) => STATUS_PAINT.err(`${GLYPH.err} ${text}`),
47
+ warn: (text) => STATUS_PAINT.warn(`${GLYPH.warn} ${text}`),
48
+ revise: (text) => STATUS_PAINT.revise(`${GLYPH.revise} ${text}`),
49
+ running: (text) => STATUS_PAINT.running(`${GLYPH.running} ${text}`),
50
+ info: (text) => STATUS_PAINT.info(`${GLYPH.info} ${text}`),
51
+ };
23
52
  //# sourceMappingURL=colors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/support/colors.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,4DAA4D;AAC5D,+CAA+C;AAC/C,EAAE;AACF,8EAA8E;AAC9E,sEAAsE;AAEtE,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AAEjE,MAAM,IAAI,GACR,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAChC,CAAC,CAAS,EAAU,EAAE,CACpB,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,CAAC,GAAG;IACf,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;IACjB,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;IAChB,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IACjB,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IACnB,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IAClB,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IACrB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IAClB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC;IAClB,6DAA6D;IAC7D,GAAG,EACD,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,EAAE,CACpC,CAAC,CAAS,EAAU,EAAE,CACpB,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CAC3D,CAAC"}
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../src/support/colors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /** Semantic status kinds shared across every progress/verdict surface. */
2
+ export type StatusKind = 'running' | 'ok' | 'warn' | 'err' | 'revise' | 'info';
3
+ /** The one glyph vocabulary. Views reference these — never a literal. */
4
+ export declare const GLYPH: Record<StatusKind, string>;
5
+ /** The one braille spinner. Both the CLI heartbeat and the Ink boards use it. */
6
+ export declare const SPINNER_FRAMES: readonly ["⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷"];
7
+ /** Braille spinner glyph for the given tick. Pure. */
8
+ export declare function spinnerFrame(tick: number): string;
9
+ //# sourceMappingURL=glyphs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glyphs.d.ts","sourceRoot":"","sources":["../../src/support/glyphs.ts"],"names":[],"mappings":"AAWA,0EAA0E;AAC1E,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE/E,yEAAyE;AACzE,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAO5C,CAAC;AAEF,iFAAiF;AACjF,eAAO,MAAM,cAAc,mDAAoD,CAAC;AAIhF,sDAAsD;AACtD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD"}
@@ -0,0 +1,27 @@
1
+ // ============================================
2
+ // OpenSwarm - Status glyph + spinner vocabulary (INT-2260)
3
+ // ============================================
4
+ //
5
+ // The SINGLE source of truth for status glyphs and the braille spinner, shared
6
+ // by both render targets: the Ink TUI (via theme.ts STATUS + <StatusIcon>/
7
+ // <Spinner>) and plain console output (via support/colors.ts `status`). Every
8
+ // view renders through one of those two adapters, so no component hand-rolls its
9
+ // own glyph / frame set again — that drift is what left some views without a
10
+ // spinner or with the wrong icon. Context-free on purpose: no Ink, no ANSI here.
11
+ /** The one glyph vocabulary. Views reference these — never a literal. */
12
+ export const GLYPH = {
13
+ running: '◐',
14
+ ok: '✓',
15
+ warn: '⚠',
16
+ err: '✗',
17
+ revise: '✎',
18
+ info: '•',
19
+ };
20
+ /** The one braille spinner. Both the CLI heartbeat and the Ink boards use it. */
21
+ export const SPINNER_FRAMES = ['⣾', '⣽', '⣻', '⢿', '⡿', '⣟', '⣯', '⣷'];
22
+ const mod = (n, m) => ((n % m) + m) % m;
23
+ /** Braille spinner glyph for the given tick. Pure. */
24
+ export function spinnerFrame(tick) {
25
+ return SPINNER_FRAMES[mod(tick, SPINNER_FRAMES.length)];
26
+ }
27
+ //# sourceMappingURL=glyphs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glyphs.js","sourceRoot":"","sources":["../../src/support/glyphs.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,2DAA2D;AAC3D,+CAA+C;AAC/C,EAAE;AACF,+EAA+E;AAC/E,2EAA2E;AAC3E,8EAA8E;AAC9E,iFAAiF;AACjF,6EAA6E;AAC7E,iFAAiF;AAKjF,yEAAyE;AACzE,MAAM,CAAC,MAAM,KAAK,GAA+B;IAC/C,OAAO,EAAE,GAAG;IACZ,EAAE,EAAE,GAAG;IACP,IAAI,EAAE,GAAG;IACT,GAAG,EAAE,GAAG;IACR,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,GAAG;CACV,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAEhF,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAEhE,sDAAsD;AACtD,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AuditBoard.d.ts","sourceRoot":"","sources":["../../../src/tui/components/AuditBoard.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,0BAA0B,CAAC;AASzE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,MAAM,EAAE,YAAY,CAAC;CACtB;AAID,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,eAAe,+BAmEzE"}
1
+ {"version":3,"file":"AuditBoard.d.ts","sourceRoot":"","sources":["../../../src/tui/components/AuditBoard.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,0BAA0B,CAAC;AASzE,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,MAAM,EAAE,YAAY,CAAC;CACtB;AAID,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,eAAe,+BA6DzE"}
@@ -7,11 +7,10 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  // orchestration (runMaxReview) stays ink-free.
8
8
  import { Box, Text } from 'ink';
9
9
  import { useState, useEffect } from 'react';
10
- import { spinnerFrame } from '../loadingMessages.js';
11
- import { theme } from '../theme.js';
10
+ import { theme, ICON } from '../theme.js';
11
+ import { Spinner } from './Status.js';
12
12
  const truncate = (s, n) => (s.length <= n ? s : `${s.slice(0, n - 1)}…`);
13
13
  export function AuditBoard({ areas, concurrency, events }) {
14
- const [tick, setTick] = useState(0);
15
14
  const [statuses, setStatuses] = useState(() => Object.fromEntries(areas.map((a) => [a.label, { status: 'pending' }])));
16
15
  useEffect(() => {
17
16
  const onProgress = (e) => {
@@ -34,10 +33,6 @@ export function AuditBoard({ areas, concurrency, events }) {
34
33
  events.off('progress', onProgress);
35
34
  };
36
35
  }, [events]);
37
- useEffect(() => {
38
- const t = setInterval(() => setTick((x) => x + 1), 120);
39
- return () => clearInterval(t);
40
- }, []);
41
36
  const entries = Object.values(statuses);
42
37
  const done = entries.filter((s) => s.status === 'done' || s.status === 'error').length;
43
38
  const running = Object.entries(statuses).filter(([, s]) => s.status === 'running');
@@ -45,6 +40,6 @@ export function AuditBoard({ areas, concurrency, events }) {
45
40
  const revised = entries.filter((s) => s.decision === 'revise').length;
46
41
  const rejected = entries.filter((s) => s.decision === 'reject').length;
47
42
  const failed = entries.filter((s) => s.status === 'error').length;
48
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [_jsx(Text, { color: theme.accent, children: spinnerFrame(tick) }), _jsx(Text, { bold: true, children: ` Codebase audit · ${done}/${areas.length} areas · concurrency ${concurrency}` })] }), running.map(([label, s]) => (_jsxs(Text, { color: theme.dim, children: [' ', _jsx(Text, { color: theme.accent, children: spinnerFrame(tick) }), ` ${label}`, s.lastLog ? ` ${truncate(s.lastLog, 48)}` : ''] }, label))), _jsxs(Text, { color: theme.dim, children: [' ', _jsx(Text, { color: theme.ok, children: `✓ ${approved} done` }), ' · ', _jsx(Text, { color: theme.accentAlt, children: `✎ ${revised} revise` }), ' · ', _jsx(Text, { color: theme.err, children: `✗ ${rejected} reject` }), failed ? (_jsxs(Text, { children: [' · ', _jsx(Text, { color: theme.warn, children: `⚠ ${failed} failed` })] })) : null] })] }));
43
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [_jsx(Spinner, {}), _jsx(Text, { bold: true, children: ` Codebase audit · ${done}/${areas.length} areas · concurrency ${concurrency}` })] }), running.map(([label, s]) => (_jsxs(Text, { color: theme.dim, children: [' ', _jsx(Spinner, {}), ` ${label}`, s.lastLog ? ` ${truncate(s.lastLog, 48)}` : ''] }, label))), _jsxs(Text, { color: theme.dim, children: [' ', _jsx(Text, { color: theme.ok, children: `${ICON.ok} ${approved} done` }), ' · ', _jsx(Text, { color: theme.accentAlt, children: `${ICON.revise} ${revised} revise` }), ' · ', _jsx(Text, { color: theme.err, children: `${ICON.fail} ${rejected} reject` }), failed ? (_jsxs(Text, { children: [' · ', _jsx(Text, { color: theme.warn, children: `${ICON.warn} ${failed} failed` })] })) : null] })] }));
49
44
  }
50
45
  //# sourceMappingURL=AuditBoard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuditBoard.js","sourceRoot":"","sources":["../../../src/tui/components/AuditBoard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AuditBoard.js","sourceRoot":"","sources":["../../../src/tui/components/AuditBoard.tsx"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,+CAA+C;AAC/C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAiBtC,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAEzF,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAmB;IACxE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAA6B,GAAG,EAAE,CACxE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC,CAAC,CAAC,CAChF,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,CAAC,CAAgB,EAAE,EAAE;YACtC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE;gBACnB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,SAAkB,EAAE,CAAC;gBAC5D,IAAI,IAAgB,CAAC;gBACrB,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;oBAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;qBACxD,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK;oBAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;qBACzD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;oBAAE,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;;oBAC/E,IAAI,GAAG,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;gBAC1D,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;YACtC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACrC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IACvF,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IACnF,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;IACxE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IACtE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,MAAM,CAAC;IACvE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;IAElE,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,eACH,KAAC,OAAO,KAAG,EACX,KAAC,IAAI,IAAC,IAAI,kBAAE,qBAAqB,IAAI,IAAI,KAAK,CAAC,MAAM,wBAAwB,WAAW,EAAE,GAAQ,IAC7F,EACN,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAC3B,MAAC,IAAI,IAAa,KAAK,EAAE,KAAK,CAAC,GAAG,aAC/B,IAAI,EACL,KAAC,OAAO,KAAG,EACV,IAAI,KAAK,EAAE,EACX,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAJvC,KAAK,CAKT,CACR,CAAC,EACF,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,GAAG,aACnB,IAAI,EACL,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,EAAE,YAAG,GAAG,IAAI,CAAC,EAAE,IAAI,QAAQ,OAAO,GAAQ,EAC5D,KAAK,EACN,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,SAAS,YAAG,GAAG,IAAI,CAAC,MAAM,IAAI,OAAO,SAAS,GAAQ,EACxE,KAAK,EACN,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,GAAG,YAAG,GAAG,IAAI,CAAC,IAAI,IAAI,QAAQ,SAAS,GAAQ,EACjE,MAAM,CAAC,CAAC,CAAC,CACR,MAAC,IAAI,eACF,KAAK,EACN,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,YAAG,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,SAAS,GAAQ,IAC5D,CACR,CAAC,CAAC,CAAC,IAAI,IACH,IACH,CACP,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"StageTimeline.d.ts","sourceRoot":"","sources":["../../../src/tui/components/StageTimeline.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKvD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,GAAQ,EAAE,EAAE,kBAAkB,+BAqBrE"}
1
+ {"version":3,"file":"StageTimeline.d.ts","sourceRoot":"","sources":["../../../src/tui/components/StageTimeline.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAKvD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,aAAa,CAAC,EAAE,MAAM,EAAE,GAAQ,EAAE,EAAE,kBAAkB,+BAsBrE"}
@@ -3,16 +3,17 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  // Presentational: takes already-reduced stage entries (parity with the
4
4
  // dashboard's renderStages).
5
5
  import { Box, Text } from 'ink';
6
- import { theme } from '../theme.js';
7
- const ICON = { start: '▶', complete: '✓', fail: '✗' };
8
- const COLOR = { start: theme.running, complete: theme.ok, fail: theme.err };
6
+ import { STATUS } from '../theme.js';
7
+ // Single-sourced glyphs + colors (INT-2260): running → ◐, complete ✓, fail ✗.
8
+ const KIND = { start: 'running', complete: 'ok', fail: 'err' };
9
9
  export function StageTimeline({ stages, max = 12 }) {
10
10
  const shown = stages.slice(-max);
11
11
  return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Pipeline stages" }), shown.length === 0 ? (_jsx(Text, { dimColor: true, children: "(no stage activity yet)" })) : (shown.map((s, i) => {
12
12
  const dur = s.durationMs ? ` ${Math.round(s.durationMs / 1000)}s` : '';
13
13
  const model = s.model ? ` (${s.model})` : '';
14
14
  const decision = s.decision ? ` → ${s.decision}` : '';
15
- return (_jsx(Text, { color: COLOR[s.status], children: `${ICON[s.status]} ${s.stage}${model}${dur}${decision}` }, i));
15
+ const st = STATUS[KIND[s.status]];
16
+ return (_jsx(Text, { color: st.color, children: `${st.icon} ${s.stage}${model}${dur}${decision}` }, i));
16
17
  }))] }));
17
18
  }
18
19
  //# sourceMappingURL=StageTimeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StageTimeline.js","sourceRoot":"","sources":["../../../src/tui/components/StageTimeline.tsx"],"names":[],"mappings":";AAAA,0EAA0E;AAC1E,uEAAuE;AACvE,6BAA6B;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,MAAM,IAAI,GAAyC,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAC5F,MAAM,KAAK,GAAyC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;AAOlH,MAAM,UAAU,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,EAAsB;IACpE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,IAAI,sCAAuB,EAChC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACpB,KAAC,IAAI,IAAC,QAAQ,8CAA+B,CAC9C,CAAC,CAAC,CAAC,CACF,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjB,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,OAAO,CACL,KAAC,IAAI,IAAS,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,YACjC,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,QAAQ,EAAE,IAD/C,CAAC,CAEL,CACR,CAAC;YACJ,CAAC,CAAC,CACH,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"StageTimeline.js","sourceRoot":"","sources":["../../../src/tui/components/StageTimeline.tsx"],"names":[],"mappings":";AAAA,0EAA0E;AAC1E,uEAAuE;AACvE,6BAA6B;AAC7B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,kFAAkF;AAClF,MAAM,IAAI,GAA6C,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAOzG,MAAM,UAAU,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,EAAsB;IACpE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,IAAI,sCAAuB,EAChC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACpB,KAAC,IAAI,IAAC,QAAQ,8CAA+B,CAC9C,CAAC,CAAC,CAAC,CACF,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjB,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClC,OAAO,CACL,KAAC,IAAI,IAAS,KAAK,EAAE,EAAE,CAAC,KAAK,YAC1B,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,QAAQ,EAAE,IADxC,CAAC,CAEL,CACR,CAAC;YACJ,CAAC,CAAC,CACH,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { StatusKind } from '../../support/glyphs.js';
2
+ /** A themed status glyph (◐ ✓ ✗ ⚠ ✎ •), colored per theme.STATUS. */
3
+ export declare function StatusIcon({ kind }: {
4
+ kind: StatusKind;
5
+ }): import("react").JSX.Element;
6
+ /**
7
+ * A self-animating braille spinner — the one in-progress indicator. Drop it
8
+ * anywhere a running row/line needs to show life; it owns its own timer so
9
+ * callers don't each re-implement a tick.
10
+ */
11
+ export declare function Spinner({ intervalMs }: {
12
+ intervalMs?: number;
13
+ }): import("react").JSX.Element;
14
+ //# sourceMappingURL=Status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Status.d.ts","sourceRoot":"","sources":["../../../src/tui/components/Status.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,qEAAqE;AACrE,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,+BAGxD;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,EAAE,UAAgB,EAAE,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,+BAOpE"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // ============================================
3
+ // OpenSwarm - Shared Ink status primitives (INT-2260)
4
+ // ============================================
5
+ //
6
+ // The Ink adapter over the shared glyph vocabulary. Every board/tree/timeline
7
+ // renders in-progress and terminal status through <Spinner> and <StatusIcon>,
8
+ // so a "running / done / failed / revise" always looks the same and nothing is
9
+ // left static or off-theme. The plain-console twin lives in support/colors
10
+ // (`status`); both read the same GLYPH / theme.STATUS source.
11
+ import { Text } from 'ink';
12
+ import { useState, useEffect } from 'react';
13
+ import { theme, STATUS } from '../theme.js';
14
+ import { spinnerFrame } from '../../support/glyphs.js';
15
+ /** A themed status glyph (◐ ✓ ✗ ⚠ ✎ •), colored per theme.STATUS. */
16
+ export function StatusIcon({ kind }) {
17
+ const s = STATUS[kind];
18
+ return _jsx(Text, { color: s.color, children: s.icon });
19
+ }
20
+ /**
21
+ * A self-animating braille spinner — the one in-progress indicator. Drop it
22
+ * anywhere a running row/line needs to show life; it owns its own timer so
23
+ * callers don't each re-implement a tick.
24
+ */
25
+ export function Spinner({ intervalMs = 120 }) {
26
+ const [tick, setTick] = useState(0);
27
+ useEffect(() => {
28
+ const h = setInterval(() => setTick((t) => t + 1), intervalMs);
29
+ return () => clearInterval(h);
30
+ }, [intervalMs]);
31
+ return _jsx(Text, { color: theme.accent, children: spinnerFrame(tick) });
32
+ }
33
+ //# sourceMappingURL=Status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Status.js","sourceRoot":"","sources":["../../../src/tui/components/Status.tsx"],"names":[],"mappings":";AAAA,+CAA+C;AAC/C,sDAAsD;AACtD,+CAA+C;AAC/C,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,8DAA8D;AAE9D,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAGvD,qEAAqE;AACrE,MAAM,UAAU,UAAU,CAAC,EAAE,IAAI,EAAwB;IACvD,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,YAAG,CAAC,CAAC,IAAI,GAAQ,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,EAAE,UAAU,GAAG,GAAG,EAA2B;IACnE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpC,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAC/D,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACjB,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,YAAG,YAAY,CAAC,IAAI,CAAC,GAAQ,CAAC;AAChE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SubagentTree.d.ts","sourceRoot":"","sources":["../../../src/tui/components/SubagentTree.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,oBAAoB,CAAC;AAK/D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,qCAAqC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,GAAO,EAAE,SAAa,EAAE,EAAE,iBAAiB,+BAqBhF"}
1
+ {"version":3,"file":"SubagentTree.d.ts","sourceRoot":"","sources":["../../../src/tui/components/SubagentTree.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,QAAQ,EAAc,MAAM,oBAAoB,CAAC;AAK/D,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,qCAAqC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,GAAO,EAAE,SAAa,EAAE,EAAE,iBAAiB,+BAqBhF"}
@@ -2,11 +2,11 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // SubagentTree — concurrent tasks as a per-worktree agent tree (S7).
3
3
  // Presentational: takes nodes built by buildSubagentTree.
4
4
  import { Box, Text } from 'ink';
5
- import { theme } from '../theme.js';
6
- const ICON = { start: '◐', complete: '●', fail: '✗' };
7
- const COLOR = { start: theme.running, complete: theme.ok, fail: theme.err };
5
+ import { STATUS } from '../theme.js';
6
+ // Single-sourced glyphs + colors (INT-2260): running → ◐, complete ✓, fail ✗.
7
+ const KIND = { start: 'running', complete: 'ok', fail: 'err' };
8
8
  export function SubagentTree({ tasks, max = 6, maxStages = 5 }) {
9
9
  const shown = tasks.slice(-max);
10
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Agents (by task)" }), shown.length === 0 ? (_jsx(Text, { dimColor: true, children: "(no active agents)" })) : (shown.map((task) => (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: COLOR[task.status], children: `${ICON[task.status]} ${task.taskId.slice(0, 16)}` }), task.stages.slice(-maxStages).map((s, i) => (_jsx(Text, { dimColor: true, children: ` └ ${s.stage}${s.model ? ` (${s.model})` : ''} — ${s.status}` }, i)))] }, task.taskId))))] }));
10
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { bold: true, children: "Agents (by task)" }), shown.length === 0 ? (_jsx(Text, { dimColor: true, children: "(no active agents)" })) : (shown.map((task) => (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: STATUS[KIND[task.status]].color, children: `${STATUS[KIND[task.status]].icon} ${task.taskId.slice(0, 16)}` }), task.stages.slice(-maxStages).map((s, i) => (_jsx(Text, { dimColor: true, children: ` └ ${s.stage}${s.model ? ` (${s.model})` : ''} — ${s.status}` }, i)))] }, task.taskId))))] }));
11
11
  }
12
12
  //# sourceMappingURL=SubagentTree.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SubagentTree.js","sourceRoot":"","sources":["../../../src/tui/components/SubagentTree.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,0DAA0D;AAC1D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,MAAM,IAAI,GAA+B,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAClF,MAAM,KAAK,GAA+B,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;AAUxG,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAqB;IAC/E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,IAAI,uCAAwB,EACjC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACpB,KAAC,IAAI,IAAC,QAAQ,yCAA0B,CACzC,CAAC,CAAC,CAAC,CACF,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAClB,MAAC,GAAG,IAAmB,aAAa,EAAC,QAAQ,aAC3C,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,YAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAQ,EAC3F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAC3C,KAAC,IAAI,IAAS,QAAQ,kBACnB,QAAQ,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,IADxD,CAAC,CAEL,CACR,CAAC,KANM,IAAI,CAAC,MAAM,CAOf,CACP,CAAC,CACH,IACG,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"SubagentTree.js","sourceRoot":"","sources":["../../../src/tui/components/SubagentTree.tsx"],"names":[],"mappings":";AAAA,qEAAqE;AACrE,0DAA0D;AAC1D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,kFAAkF;AAClF,MAAM,IAAI,GAAmC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAU/F,MAAM,UAAU,YAAY,CAAC,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAqB;IAC/E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,IAAI,uCAAwB,EACjC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CACpB,KAAC,IAAI,IAAC,QAAQ,yCAA0B,CACzC,CAAC,CAAC,CAAC,CACF,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAClB,MAAC,GAAG,IAAmB,aAAa,EAAC,QAAQ,aAC3C,KAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,YAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAQ,EACrH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAC3C,KAAC,IAAI,IAAS,QAAQ,kBACnB,QAAQ,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,IADxD,CAAC,CAEL,CACR,CAAC,KANM,IAAI,CAAC,MAAM,CAOf,CACP,CAAC,CACH,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,7 +1,5 @@
1
1
  export declare const LOADING_MESSAGES: readonly ["Initializing cogitator arrays", "Querying data-vault archives", "Accessing servitor protocols", "Compiling neural responses", "Interfacing with the Noosphere", "Scanning data-streams", "Calibrating logic engines", "Decoding transmission packets", "Loading archive databases", "Synchronizing machine protocols", "Analyzing pattern matrices", "Establishing neural link", "Processing data-core output", "Running diagnostics sequence", "Activating response circuits"];
2
- export declare const SPINNER_FRAMES: readonly ["⣾", "⣽", "⣻", "⢿", "⡿", "⣟", "⣯", "⣷"];
3
- /** Braille spinner glyph for the given tick. */
4
- export declare function spinnerFrame(tick: number): string;
2
+ export { SPINNER_FRAMES, spinnerFrame } from '../support/glyphs.js';
5
3
  /**
6
4
  * Loading line for a given tick. The message advances once per `periodMs`
7
5
  * (spinner ticks every `tickMs`); `base` offsets the starting line so each run
@@ -1 +1 @@
1
- {"version":3,"file":"loadingMessages.d.ts","sourceRoot":"","sources":["../../src/tui/loadingMessages.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,gBAAgB,4dAgBnB,CAAC;AAEX,eAAO,MAAM,cAAc,mDAAoD,CAAC;AAIhF,gDAAgD;AAChD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAI,EAAE,QAAQ,SAAO,EAAE,MAAM,SAAM,GAAG,MAAM,CAG5F"}
1
+ {"version":3,"file":"loadingMessages.d.ts","sourceRoot":"","sources":["../../src/tui/loadingMessages.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,gBAAgB,4dAgBnB,CAAC;AAIX,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAI,EAAE,QAAQ,SAAO,EAAE,MAAM,SAAM,GAAG,MAAM,CAG5F"}
@@ -21,12 +21,10 @@ export const LOADING_MESSAGES = [
21
21
  'Running diagnostics sequence',
22
22
  'Activating response circuits',
23
23
  ];
24
- export const SPINNER_FRAMES = ['⣾', '⣽', '⣻', '⢿', '⡿', '⣟', '⣯', '⣷'];
24
+ // Spinner is single-sourced from support/glyphs (INT-2260); re-exported here for
25
+ // the existing TUI importers (AuditBoard, WorkingIndicator).
26
+ export { SPINNER_FRAMES, spinnerFrame } from '../support/glyphs.js';
25
27
  const mod = (n, m) => ((n % m) + m) % m;
26
- /** Braille spinner glyph for the given tick. */
27
- export function spinnerFrame(tick) {
28
- return SPINNER_FRAMES[mod(tick, SPINNER_FRAMES.length)];
29
- }
30
28
  /**
31
29
  * Loading line for a given tick. The message advances once per `periodMs`
32
30
  * (spinner ticks every `tickMs`); `base` offsets the starting line so each run
@@ -1 +1 @@
1
- {"version":3,"file":"loadingMessages.js","sourceRoot":"","sources":["../../src/tui/loadingMessages.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,kDAAkD;AAClD,0EAA0E;AAC1E,6EAA6E;AAC7E,sEAAsE;AACtE,+CAA+C;AAE/C,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,+BAA+B;IAC/B,8BAA8B;IAC9B,8BAA8B;IAC9B,4BAA4B;IAC5B,gCAAgC;IAChC,uBAAuB;IACvB,2BAA2B;IAC3B,+BAA+B;IAC/B,2BAA2B;IAC3B,iCAAiC;IACjC,4BAA4B;IAC5B,0BAA0B;IAC1B,6BAA6B;IAC7B,8BAA8B;IAC9B,8BAA8B;CACtB,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAU,CAAC;AAEhF,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAExD,gDAAgD;AAChD,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,MAAM,GAAG,GAAG;IAClF,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC1D,OAAO,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"loadingMessages.js","sourceRoot":"","sources":["../../src/tui/loadingMessages.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,kDAAkD;AAClD,0EAA0E;AAC1E,6EAA6E;AAC7E,sEAAsE;AACtE,+CAA+C;AAE/C,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,+BAA+B;IAC/B,8BAA8B;IAC9B,8BAA8B;IAC9B,4BAA4B;IAC5B,gCAAgC;IAChC,uBAAuB;IACvB,2BAA2B;IAC3B,+BAA+B;IAC/B,2BAA2B;IAC3B,iCAAiC;IACjC,4BAA4B;IAC5B,0BAA0B;IAC1B,6BAA6B;IAC7B,8BAA8B;IAC9B,8BAA8B;CACtB,CAAC;AAEX,iFAAiF;AACjF,6DAA6D;AAC7D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpE,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAExD;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,IAAI,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,EAAE,MAAM,GAAG,GAAG;IAClF,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC1D,OAAO,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7D,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { type StatusKind } from '../support/glyphs.js';
1
2
  export declare const theme: {
2
3
  readonly accent: "cyan";
3
4
  readonly accentAlt: "magentaBright";
@@ -13,17 +14,30 @@ export declare const theme: {
13
14
  readonly border: "gray";
14
15
  readonly borderActive: "cyan";
15
16
  };
17
+ /** Non-status decoration glyphs + the shared status vocabulary (from GLYPH). */
16
18
  export declare const ICON: {
17
19
  readonly user: "▸";
18
20
  readonly assistant: "◆";
19
21
  readonly system: "•";
20
22
  readonly tool: "⦿";
21
- readonly ok: "✓";
22
- readonly fail: "✗";
23
- readonly running: "◐";
24
23
  readonly prompt: "›";
25
24
  readonly git: "⎇";
25
+ readonly ok: string;
26
+ readonly fail: string;
27
+ readonly running: string;
28
+ readonly warn: string;
29
+ readonly revise: string;
30
+ readonly info: string;
26
31
  };
32
+ /**
33
+ * Status semantic → { glyph, Ink color token }. The one map the Ink status
34
+ * primitives (<StatusIcon>) read, so every board/tree/timeline colors and
35
+ * glyphs a "running / done / failed / revise" the same way.
36
+ */
37
+ export declare const STATUS: Record<StatusKind, {
38
+ icon: string;
39
+ color: string;
40
+ }>;
27
41
  /** Gradient stops for the OpenSwarm wordmark (ink-gradient `colors`). */
28
42
  export declare const LOGO_GRADIENT: string[];
29
43
  //# sourceMappingURL=theme.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/tui/theme.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;CAcR,CAAC;AAEX,eAAO,MAAM,IAAI;;;;;;;;;;CAUP,CAAC;AAEX,yEAAyE;AACzE,eAAO,MAAM,aAAa,UAAoC,CAAC"}
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../../src/tui/theme.ts"],"names":[],"mappings":"AAQA,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE9D,eAAO,MAAM,KAAK;;;;;;;;;;;;;;CAcR,CAAC;AAEX,gFAAgF;AAChF,eAAO,MAAM,IAAI;;;;;;;;;;;;;CAeP,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAOtE,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,aAAa,UAAoC,CAAC"}
package/dist/tui/theme.js CHANGED
@@ -1,8 +1,11 @@
1
1
  // ============================================
2
- // OpenSwarm - TUI theme (INT-1943)
2
+ // OpenSwarm - TUI theme (INT-1943, INT-2260)
3
3
  // Single source of colors + glyphs for the Ink cockpit, so the chat-first
4
- // redesign stays visually consistent.
4
+ // redesign stays visually consistent. Status glyphs + the spinner come from the
5
+ // context-free `support/glyphs` so plain console output (support/colors `status`)
6
+ // shares the exact same vocabulary — no view redeclares its own icons.
5
7
  // ============================================
8
+ import { GLYPH } from '../support/glyphs.js';
6
9
  export const theme = {
7
10
  accent: 'cyan',
8
11
  accentAlt: 'magentaBright',
@@ -18,16 +21,35 @@ export const theme = {
18
21
  border: 'gray',
19
22
  borderActive: 'cyan',
20
23
  };
24
+ /** Non-status decoration glyphs + the shared status vocabulary (from GLYPH). */
21
25
  export const ICON = {
22
26
  user: '▸',
23
27
  assistant: '◆',
24
28
  system: '•',
25
29
  tool: '⦿',
26
- ok: '✓',
27
- fail: '✗',
28
- running: '◐',
29
30
  prompt: '›',
30
31
  git: '⎇',
32
+ // Status glyphs — single-sourced from support/glyphs. `fail` kept as the
33
+ // established alias for the error glyph.
34
+ ok: GLYPH.ok,
35
+ fail: GLYPH.err,
36
+ running: GLYPH.running,
37
+ warn: GLYPH.warn,
38
+ revise: GLYPH.revise,
39
+ info: GLYPH.info,
40
+ };
41
+ /**
42
+ * Status semantic → { glyph, Ink color token }. The one map the Ink status
43
+ * primitives (<StatusIcon>) read, so every board/tree/timeline colors and
44
+ * glyphs a "running / done / failed / revise" the same way.
45
+ */
46
+ export const STATUS = {
47
+ running: { icon: GLYPH.running, color: theme.running },
48
+ ok: { icon: GLYPH.ok, color: theme.ok },
49
+ warn: { icon: GLYPH.warn, color: theme.warn },
50
+ err: { icon: GLYPH.err, color: theme.err },
51
+ revise: { icon: GLYPH.revise, color: theme.accentAlt },
52
+ info: { icon: GLYPH.info, color: theme.info },
31
53
  };
32
54
  /** Gradient stops for the OpenSwarm wordmark (ink-gradient `colors`). */
33
55
  export const LOGO_GRADIENT = ['#22d3ee', '#3b82f6', '#a855f7'];
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/tui/theme.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,mCAAmC;AACnC,0EAA0E;AAC1E,sCAAsC;AACtC,+CAA+C;AAE/C,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,MAAM,EAAE,MAAM;IACd,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,OAAO;IAClB,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,MAAM;IACX,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,MAAM;CACZ,CAAC;AAEX,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,IAAI,EAAE,GAAG;IACT,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,GAAG;IACT,EAAE,EAAE,GAAG;IACP,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE,GAAG;IACX,GAAG,EAAE,GAAG;CACA,CAAC;AAEX,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/tui/theme.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,6CAA6C;AAC7C,0EAA0E;AAC1E,gFAAgF;AAChF,kFAAkF;AAClF,uEAAuE;AACvE,+CAA+C;AAE/C,OAAO,EAAE,KAAK,EAAmB,MAAM,sBAAsB,CAAC;AAE9D,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,MAAM,EAAE,MAAM;IACd,SAAS,EAAE,eAAe;IAC1B,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,OAAO;IAClB,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,MAAM;IACX,EAAE,EAAE,OAAO;IACX,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,KAAK;IACV,OAAO,EAAE,QAAQ;IACjB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,MAAM;IACd,YAAY,EAAE,MAAM;CACZ,CAAC;AAEX,gFAAgF;AAChF,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,IAAI,EAAE,GAAG;IACT,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,GAAG;IACX,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,GAAG;IACX,GAAG,EAAE,GAAG;IACR,yEAAyE;IACzE,yCAAyC;IACzC,EAAE,EAAE,KAAK,CAAC,EAAE;IACZ,IAAI,EAAE,KAAK,CAAC,GAAG;IACf,OAAO,EAAE,KAAK,CAAC,OAAO;IACtB,IAAI,EAAE,KAAK,CAAC,IAAI;IAChB,MAAM,EAAE,KAAK,CAAC,MAAM;IACpB,IAAI,EAAE,KAAK,CAAC,IAAI;CACR,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,MAAM,GAAwD;IACzE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE;IACtD,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE;IACvC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;IAC7C,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE;IAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE;IACtD,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;CAC9C,CAAC;AAEF,yEAAyE;AACzE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intrect/openswarm",
3
- "version": "0.10.2",
3
+ "version": "0.11.0",
4
4
  "description": "Autonomous AI agent orchestrator — Claude, GPT, Codex, and local models (Ollama/LMStudio/llama.cpp)",
5
5
  "license": "MIT",
6
6
  "type": "module",