@agents-ensemble/cli 0.5.3 → 0.6.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 (92) hide show
  1. package/dist/display/create-session-display-sink.d.ts.map +1 -1
  2. package/dist/display/create-session-display-sink.js +1 -0
  3. package/dist/display/create-session-display-sink.js.map +1 -1
  4. package/dist/display/session-display-reducer.d.ts.map +1 -1
  5. package/dist/display/session-display-reducer.js +11 -0
  6. package/dist/display/session-display-reducer.js.map +1 -1
  7. package/dist/display/session-display-state.d.ts +5 -0
  8. package/dist/display/session-display-state.d.ts.map +1 -1
  9. package/dist/display/session-display-state.js +4 -0
  10. package/dist/display/session-display-state.js.map +1 -1
  11. package/dist/issue-command.d.ts.map +1 -1
  12. package/dist/issue-command.js +3 -1
  13. package/dist/issue-command.js.map +1 -1
  14. package/dist/session-log-lines.d.ts.map +1 -1
  15. package/dist/session-log-lines.js +12 -4
  16. package/dist/session-log-lines.js.map +1 -1
  17. package/dist/session-sinks.d.ts.map +1 -1
  18. package/dist/session-sinks.js +1 -0
  19. package/dist/session-sinks.js.map +1 -1
  20. package/dist/tui/compute-operator-input-cursor-y.d.ts +14 -0
  21. package/dist/tui/compute-operator-input-cursor-y.d.ts.map +1 -1
  22. package/dist/tui/compute-operator-input-cursor-y.js +17 -0
  23. package/dist/tui/compute-operator-input-cursor-y.js.map +1 -1
  24. package/dist/tui/create-issue-session-tui-host.d.ts +6 -2
  25. package/dist/tui/create-issue-session-tui-host.d.ts.map +1 -1
  26. package/dist/tui/create-issue-session-tui-host.js +23 -5
  27. package/dist/tui/create-issue-session-tui-host.js.map +1 -1
  28. package/dist/tui/create-issue-session-tui-host.test.js +123 -1
  29. package/dist/tui/create-issue-session-tui-host.test.js.map +1 -1
  30. package/dist/tui/create-tui-telemetry-sink.d.ts +1 -1
  31. package/dist/tui/create-tui-telemetry-sink.d.ts.map +1 -1
  32. package/dist/tui/create-tui-telemetry-sink.js +5 -5
  33. package/dist/tui/create-tui-telemetry-sink.js.map +1 -1
  34. package/dist/tui/format-operator-context.d.ts +26 -4
  35. package/dist/tui/format-operator-context.d.ts.map +1 -1
  36. package/dist/tui/format-operator-context.js +73 -18
  37. package/dist/tui/format-operator-context.js.map +1 -1
  38. package/dist/tui/issue-session-tui-stream-cursor.test.d.ts +2 -0
  39. package/dist/tui/issue-session-tui-stream-cursor.test.d.ts.map +1 -0
  40. package/dist/tui/issue-session-tui-stream-cursor.test.js +47 -0
  41. package/dist/tui/issue-session-tui-stream-cursor.test.js.map +1 -0
  42. package/dist/tui/issue-session-tui-stream.d.ts +11 -0
  43. package/dist/tui/issue-session-tui-stream.d.ts.map +1 -0
  44. package/dist/tui/issue-session-tui-stream.js +117 -0
  45. package/dist/tui/issue-session-tui-stream.js.map +1 -0
  46. package/dist/tui/issue-session-tui-stream.test.d.ts +2 -0
  47. package/dist/tui/issue-session-tui-stream.test.d.ts.map +1 -0
  48. package/dist/tui/issue-session-tui-stream.test.js +380 -0
  49. package/dist/tui/issue-session-tui-stream.test.js.map +1 -0
  50. package/dist/tui/issue-session-tui.d.ts +24 -1
  51. package/dist/tui/issue-session-tui.d.ts.map +1 -1
  52. package/dist/tui/issue-session-tui.js +35 -26
  53. package/dist/tui/issue-session-tui.js.map +1 -1
  54. package/dist/tui/issue-session-tui.test.js +288 -23
  55. package/dist/tui/issue-session-tui.test.js.map +1 -1
  56. package/dist/tui/open-questions-pane.d.ts +2 -0
  57. package/dist/tui/open-questions-pane.d.ts.map +1 -1
  58. package/dist/tui/open-questions-pane.js +5 -3
  59. package/dist/tui/open-questions-pane.js.map +1 -1
  60. package/dist/tui/operator-text-area.d.ts.map +1 -1
  61. package/dist/tui/operator-text-area.js +2 -1
  62. package/dist/tui/operator-text-area.js.map +1 -1
  63. package/dist/tui/operator-text-area.test-double.d.ts.map +1 -1
  64. package/dist/tui/operator-text-area.test-double.js +3 -2
  65. package/dist/tui/operator-text-area.test-double.js.map +1 -1
  66. package/dist/tui/stream-layout.d.ts +20 -0
  67. package/dist/tui/stream-layout.d.ts.map +1 -0
  68. package/dist/tui/stream-layout.js +55 -0
  69. package/dist/tui/stream-layout.js.map +1 -0
  70. package/dist/tui/titled-border-line.d.ts +10 -1
  71. package/dist/tui/titled-border-line.d.ts.map +1 -1
  72. package/dist/tui/titled-border-line.js +62 -12
  73. package/dist/tui/titled-border-line.js.map +1 -1
  74. package/dist/tui/titled-border-pane.d.ts +5 -1
  75. package/dist/tui/titled-border-pane.d.ts.map +1 -1
  76. package/dist/tui/titled-border-pane.ink.test.js +67 -0
  77. package/dist/tui/titled-border-pane.ink.test.js.map +1 -1
  78. package/dist/tui/titled-border-pane.js +32 -3
  79. package/dist/tui/titled-border-pane.js.map +1 -1
  80. package/dist/tui/tui-layout-constants.d.ts +12 -0
  81. package/dist/tui/tui-layout-constants.d.ts.map +1 -1
  82. package/dist/tui/tui-layout-constants.js +12 -0
  83. package/dist/tui/tui-layout-constants.js.map +1 -1
  84. package/dist/tui/tui-layout-mode.d.ts +13 -0
  85. package/dist/tui/tui-layout-mode.d.ts.map +1 -0
  86. package/dist/tui/tui-layout-mode.js +16 -0
  87. package/dist/tui/tui-layout-mode.js.map +1 -0
  88. package/dist/tui/tui-view-model.d.ts +12 -1
  89. package/dist/tui/tui-view-model.d.ts.map +1 -1
  90. package/dist/tui/tui-view-model.js +25 -4
  91. package/dist/tui/tui-view-model.js.map +1 -1
  92. package/package.json +2 -2
@@ -2,6 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { describe, expect, it } from 'vitest';
3
3
  import { Text } from 'ink';
4
4
  import { render } from 'ink-testing-library';
5
+ import stringWidth from 'string-width';
5
6
  import { TitledBorderPane } from './titled-border-pane.js';
6
7
  describe('TitledBorderPane', () => {
7
8
  it('renders embedded title on top border', () => {
@@ -19,5 +20,71 @@ describe('TitledBorderPane', () => {
19
20
  expect(frame).toContain('hello');
20
21
  expect(frame).not.toMatch(/^│ Workers/m);
21
22
  });
23
+ it('keeps a truncated Issue titleRight and OSC 8 target within a narrow width', () => {
24
+ Object.defineProperty(process.stdout, 'columns', {
25
+ configurable: true,
26
+ value: 24,
27
+ });
28
+ Object.defineProperty(process.stdout, 'rows', {
29
+ configurable: true,
30
+ value: 10,
31
+ });
32
+ const issueUrl = 'http://github.com/otolab/agents-ensemble/issues/249/';
33
+ const canonicalIssueUrl = 'https://github.com/otolab/agents-ensemble/issues/249';
34
+ const fullIssueLabel = 'otolab/agents-ensemble#249';
35
+ const truncatedIssueLabel = 'otolab/a…';
36
+ const { lastFrame } = render(_jsx(TitledBorderPane, { title: "Workers", titleRight: fullIssueLabel, titleRightIssueUrl: issueUrl, titleRightLinkMode: "osc8", borderStyle: "round", height: 5, children: _jsx(Text, { children: "hello" }) }));
37
+ const topBorderLine = (lastFrame() ?? '').split('\n')[0] ?? '';
38
+ const osc8Open = `\u001b]8;;${canonicalIssueUrl}\u0007`;
39
+ const osc8Close = '\u001b]8;;\u0007';
40
+ const linkOpenIndex = topBorderLine.indexOf(osc8Open);
41
+ const linkCloseIndex = topBorderLine.indexOf(osc8Close, linkOpenIndex + osc8Open.length);
42
+ const closingBorderIndex = topBorderLine.lastIndexOf('─╮');
43
+ expect(topBorderLine).toContain(`${osc8Open}${truncatedIssueLabel}${osc8Close}`);
44
+ expect(topBorderLine).not.toContain(`\u001b]8;;${issueUrl}\u0007`);
45
+ expect(topBorderLine).not.toContain(fullIssueLabel);
46
+ expect(stringWidth(topBorderLine)).toBe(24);
47
+ expect(linkOpenIndex).toBeGreaterThanOrEqual(0);
48
+ expect(linkCloseIndex).toBeGreaterThan(linkOpenIndex + osc8Open.length);
49
+ expect(linkCloseIndex).toBeLessThan(closingBorderIndex);
50
+ expect(topBorderLine.slice(closingBorderIndex)).not.toContain(osc8Close);
51
+ expect(topBorderLine.match(/\u001b\]8;;/g)).toHaveLength(2);
52
+ });
53
+ it('renders the canonical Issue URL with a plain separator in URL fallback mode', () => {
54
+ Object.defineProperty(process.stdout, 'columns', {
55
+ configurable: true,
56
+ value: 80,
57
+ });
58
+ Object.defineProperty(process.stdout, 'rows', {
59
+ configurable: true,
60
+ value: 10,
61
+ });
62
+ const issueUrl = 'http://github.com/otolab/agents-ensemble/issues/249/';
63
+ const canonicalIssueUrl = 'https://github.com/otolab/agents-ensemble/issues/249';
64
+ const { lastFrame } = render(_jsx(TitledBorderPane, { title: "Workers", titleRight: "otolab/agents-ensemble#249", titleRightIssueUrl: issueUrl, titleRightLinkMode: "url", borderStyle: "round", height: 5, children: _jsx(Text, { children: "hello" }) }));
65
+ const topBorderLine = (lastFrame() ?? '').split('\n')[0] ?? '';
66
+ expect(topBorderLine).toContain(`${canonicalIssueUrl} ─╮`);
67
+ expect(topBorderLine).not.toContain('otolab/agents-ensemble#249');
68
+ expect(topBorderLine).not.toContain('\u001b]8;;');
69
+ expect(stringWidth(topBorderLine)).toBe(80);
70
+ });
71
+ it('preserves the canonical Issue URL in URL fallback mode at a narrow width', () => {
72
+ Object.defineProperty(process.stdout, 'columns', {
73
+ configurable: true,
74
+ value: 24,
75
+ });
76
+ Object.defineProperty(process.stdout, 'rows', {
77
+ configurable: true,
78
+ value: 10,
79
+ });
80
+ const issueUrl = 'http://github.com/otolab/agents-ensemble/issues/249/';
81
+ const canonicalIssueUrl = 'https://github.com/otolab/agents-ensemble/issues/249';
82
+ const { lastFrame } = render(_jsx(TitledBorderPane, { title: "Workers", titleSuffix: " \u2014 conductor dispatch \u4FDD\u7559\u4E2D\uFF083 \u4EF6\uFF09", titleRight: "otolab/agents-ensemble#249", titleRightIssueUrl: issueUrl, titleRightLinkMode: "url", borderStyle: "round", height: 5, children: _jsx(Text, { children: "hello" }) }));
83
+ const topBorderLine = (lastFrame() ?? '').split('\n')[0] ?? '';
84
+ expect(topBorderLine).toContain(canonicalIssueUrl);
85
+ expect(topBorderLine).toContain(`${canonicalIssueUrl} ─╮`);
86
+ expect(topBorderLine).not.toContain('https:/…');
87
+ expect(topBorderLine).not.toContain('\u001b]8;;');
88
+ });
22
89
  });
23
90
  //# sourceMappingURL=titled-border-pane.ink.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"titled-border-pane.ink.test.js","sourceRoot":"","sources":["../../src/tui/titled-border-pane.ink.test.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE;YAC/C,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;YAC5C,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,EAAE;SACV,CAAC,CAAC;QAEH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAC1B,KAAC,gBAAgB,IAAC,KAAK,EAAC,SAAS,EAAC,WAAW,EAAC,OAAO,EAAC,MAAM,EAAE,CAAC,YAC7D,KAAC,IAAI,wBAAa,GACD,CACpB,CAAC;QAEF,MAAM,KAAK,GAAG,SAAS,EAAE,IAAI,EAAE,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"titled-border-pane.ink.test.js","sourceRoot":"","sources":["../../src/tui/titled-border-pane.ink.test.tsx"],"names":[],"mappings":"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"}
@@ -1,16 +1,45 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box, Text } from 'ink';
3
+ import stringWidth from 'string-width';
4
+ import { formatIssueReference, formatOsc8Link, } from './format-operator-context.js';
3
5
  import { buildTitledTopBorderParts, } from './titled-border-line.js';
6
+ function renderTitleRight(params) {
7
+ const { titleRight, titleRightIssueUrl, titleRightLinkMode, borderColor } = params;
8
+ if (!titleRight) {
9
+ return null;
10
+ }
11
+ if (titleRightIssueUrl && titleRightLinkMode === 'osc8') {
12
+ return _jsx(Text, { children: formatOsc8Link(titleRight, titleRightIssueUrl) });
13
+ }
14
+ return _jsx(Text, { color: borderColor, children: titleRight });
15
+ }
4
16
  /** 上枠線にタイトルを埋め込んだ Ink ペイン。内側タイトル行は持たない。 */
5
- export function TitledBorderPane({ title, titleSuffix, borderStyle, borderColor, height, paddingX = 1, titleBold = true, children, }) {
17
+ export function TitledBorderPane({ title, titleSuffix, titleRight, titleRightIssueUrl, titleRightLinkMode = 'label', borderStyle, borderColor, height, paddingX = 1, titleBold = true, children, }) {
6
18
  const totalWidth = process.stdout.columns ?? 80;
19
+ const titleRightText = titleRightIssueUrl && titleRightLinkMode === 'url'
20
+ ? formatIssueReference(titleRightIssueUrl, 'url')
21
+ : titleRight;
7
22
  const parts = buildTitledTopBorderParts({
8
23
  title,
9
24
  suffix: titleSuffix,
25
+ titleRight: titleRightText,
26
+ titleRightGap: titleRightIssueUrl && titleRightLinkMode === 'url' ? ' ' : undefined,
27
+ preserveTitleRight: Boolean(titleRightIssueUrl && titleRightLinkMode === 'url'),
10
28
  totalWidth,
11
29
  borderStyle,
12
30
  });
13
31
  const bodyHeight = Math.max(1, height - 1);
14
- return (_jsxs(Box, { flexDirection: "column", height: height, overflow: "hidden", children: [_jsxs(Text, { children: [_jsx(Text, { color: borderColor, children: parts.left }), titleBold ? (_jsx(Text, { bold: true, color: borderColor, children: parts.title })) : (_jsx(Text, { color: borderColor, children: parts.title })), _jsx(Text, { color: borderColor, children: parts.right })] }), _jsx(Box, { flexGrow: 1, flexDirection: "column", borderStyle: borderStyle, borderTop: false, borderColor: borderColor, paddingX: paddingX, height: bodyHeight, overflow: "hidden", children: children })] }));
32
+ const titleRightPrefix = parts.titleRight ? ` ${parts.titleRight}` : '';
33
+ const titleRightIndex = titleRightPrefix.length > 0 ? parts.right.lastIndexOf(titleRightPrefix) : -1;
34
+ const rightBeforeTitleRight = titleRightIndex >= 0 ? parts.right.slice(0, titleRightIndex + 1) : parts.right;
35
+ const rightAfterTitleRight = titleRightIndex >= 0 ? parts.right.slice(titleRightIndex + titleRightPrefix.length) : '';
36
+ const topBorderLine = `${parts.left}${parts.title}${parts.right}`;
37
+ const preserveUrlFallback = Boolean(titleRightIssueUrl && titleRightLinkMode === 'url');
38
+ return (_jsxs(Box, { flexDirection: "column", height: height, overflowX: "visible", overflowY: "hidden", children: [_jsx(Box, { flexDirection: "row", overflow: "visible", children: preserveUrlFallback ? (_jsx(Box, { flexShrink: 0, width: stringWidth(topBorderLine), overflow: "visible", children: _jsx(Text, { color: borderColor, children: topBorderLine }) })) : (_jsxs(_Fragment, { children: [_jsx(Text, { color: borderColor, children: parts.left }), titleBold ? (_jsx(Text, { bold: true, color: borderColor, children: parts.title })) : (_jsx(Text, { color: borderColor, children: parts.title })), _jsx(Text, { color: borderColor, children: rightBeforeTitleRight }), renderTitleRight({
39
+ titleRight: parts.titleRight,
40
+ titleRightIssueUrl,
41
+ titleRightLinkMode,
42
+ borderColor,
43
+ }), _jsx(Text, { color: borderColor, children: rightAfterTitleRight })] })) }), _jsx(Box, { flexGrow: 1, flexDirection: "column", borderStyle: borderStyle, borderTop: false, borderColor: borderColor, paddingX: paddingX, height: bodyHeight, overflow: "hidden", children: children })] }));
15
44
  }
16
45
  //# sourceMappingURL=titled-border-pane.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"titled-border-pane.js","sourceRoot":"","sources":["../../src/tui/titled-border-pane.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAiB,MAAM,KAAK,CAAC;AAE/C,OAAO,EACL,yBAAyB,GAE1B,MAAM,yBAAyB,CAAC;AAajC,2CAA2C;AAC3C,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,MAAM,EACN,QAAQ,GAAG,CAAC,EACZ,SAAS,GAAG,IAAI,EAChB,QAAQ,GACc;IACtB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAChD,MAAM,KAAK,GAAG,yBAAyB,CAAC;QACtC,KAAK;QACL,MAAM,EAAE,WAAW;QACnB,UAAU;QACV,WAAW;KACZ,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IAE3C,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAC,QAAQ,aAC3D,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,YAAG,KAAK,CAAC,IAAI,GAAQ,EAC5C,SAAS,CAAC,CAAC,CAAC,CACX,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,WAAW,YAC1B,KAAK,CAAC,KAAK,GACP,CACR,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,YAAG,KAAK,CAAC,KAAK,GAAQ,CAC/C,EACD,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,YAAG,KAAK,CAAC,KAAK,GAAQ,IACzC,EACP,KAAC,GAAG,IACF,QAAQ,EAAE,CAAC,EACX,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,KAAK,EAChB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAC,QAAQ,YAEhB,QAAQ,GACL,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"titled-border-pane.js","sourceRoot":"","sources":["../../src/tui/titled-border-pane.tsx"],"names":[],"mappings":"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"}
@@ -14,6 +14,12 @@ export declare const WORKER_PANE_TITLE = "Workers";
14
14
  export declare const OPEN_QUESTIONS_PANE_TITLE = "Open questions";
15
15
  /** Operator input ペインの UI ラベル。 */
16
16
  export declare const INPUT_PANE_TITLE = "Operator input";
17
+ /** Operator input ペイン枠線・タイトル色(他ペインと区別し視認性を確保)。 */
18
+ export declare const INPUT_PANE_BORDER_COLOR = "blue";
19
+ /** Operator input コンテキストヒント行の色。 */
20
+ export declare const INPUT_PANE_HINT_COLOR = "blue";
21
+ /** Operator input プロンプト(`operator> `)の色。 */
22
+ export declare const INPUT_PANE_PROMPT_COLOR = "blue";
17
23
  /** Worker 状態ペインの固定高さ(枠線込み。タイトルは上枠線埋め込み + サマリ 4 行)。 */
18
24
  export declare const WORKER_PANE_HEIGHT = 6;
19
25
  /**
@@ -27,6 +33,12 @@ export declare const OPEN_QUESTIONS_PANE_MAX_HEIGHT_RATIO = 0.35;
27
33
  export declare const OPEN_QUESTIONS_PANE_MAX_DISPLAY_LINES = 8;
28
34
  /** Open questions ペインタイトルに付与する選択操作ヒント。 */
29
35
  export declare const OPEN_QUESTIONS_SELECTION_HINT = " \u2014 Shift+\u2191\u2193\u3067\u9078\u629E";
36
+ /** Open questions がないときに Operator input へ表示する任意入力 prompt。 */
37
+ export declare const OPERATOR_INPUT_DISCRETIONARY_HINT = "\u4EFB\u610F\u306E\u30BF\u30A4\u30DF\u30F3\u30B0\u3067\u5165\u529B \u00B7 /exit \u3067\u7D42\u4E86";
38
+ /** post-loop 待機中に Operator input へ表示する追加入力 prompt。 */
39
+ export declare const OPERATOR_INPUT_POST_LOOP_HINT = "\u8FFD\u52A0\u6307\u793A\u3092\u5165\u529B\u3059\u308B\u304B /exit \u3067\u7D42\u4E86";
40
+ /** 終了処理中に Operator input へ表示する prompt。 */
41
+ export declare const OPERATOR_INPUT_SHUTTING_DOWN_HINT = "\u7D42\u4E86\u3057\u3066\u3044\u307E\u3059\u2026";
30
42
  /** 入力ペインの枠線(上下)行数。`PANE_BORDER_ROWS` と同値。 */
31
43
  export declare const INPUT_PANE_BORDER_ROWS = 2;
32
44
  /** ペイン内水平 padding(`paddingX`)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"tui-layout-constants.d.ts","sourceRoot":"","sources":["../../src/tui/tui-layout-constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yCAAyC;AACzC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,6BAA6B;AAC7B,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,oEAAoE;AACpE,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAE/C,2BAA2B;AAC3B,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAE3C,qDAAqD;AACrD,eAAO,MAAM,yBAAyB,mBAAmB,CAAC;AAE1D,kCAAkC;AAClC,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AAEjD,sDAAsD;AACtD,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD,+CAA+C;AAC/C,eAAO,MAAM,oCAAoC,OAAO,CAAC;AAEzD,sCAAsC;AACtC,eAAO,MAAM,qCAAqC,IAAI,CAAC;AAEvD,0CAA0C;AAC1C,eAAO,MAAM,6BAA6B,iDAAmB,CAAC;AAE9D,6CAA6C;AAC7C,eAAO,MAAM,sBAAsB,IAAmB,CAAC;AAEvD,kCAAkC;AAClC,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,kDAAkD;AAClD,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAAkD,CAAC;AAEvF;;;GAGG;AACH,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD,gCAAgC;AAChC,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAEhD,uBAAuB;AACvB,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,0BAA0B;AAC1B,eAAO,MAAM,4BAA4B,IAAI,CAAC"}
1
+ {"version":3,"file":"tui-layout-constants.d.ts","sourceRoot":"","sources":["../../src/tui/tui-layout-constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yCAAyC;AACzC,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,6BAA6B;AAC7B,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,oEAAoE;AACpE,eAAO,MAAM,eAAe,kBAAkB,CAAC;AAE/C,2BAA2B;AAC3B,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAE3C,qDAAqD;AACrD,eAAO,MAAM,yBAAyB,mBAAmB,CAAC;AAE1D,kCAAkC;AAClC,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AAEjD,kDAAkD;AAClD,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAE9C,mCAAmC;AACnC,eAAO,MAAM,qBAAqB,SAAS,CAAC;AAE5C,4CAA4C;AAC5C,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAE9C,sDAAsD;AACtD,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD,+CAA+C;AAC/C,eAAO,MAAM,oCAAoC,OAAO,CAAC;AAEzD,sCAAsC;AACtC,eAAO,MAAM,qCAAqC,IAAI,CAAC;AAEvD,0CAA0C;AAC1C,eAAO,MAAM,6BAA6B,iDAAmB,CAAC;AAE9D,6DAA6D;AAC7D,eAAO,MAAM,iCAAiC,uGAA4B,CAAC;AAE3E,sDAAsD;AACtD,eAAO,MAAM,6BAA6B,0FAAyB,CAAC;AAEpE,0CAA0C;AAC1C,eAAO,MAAM,iCAAiC,qDAAa,CAAC;AAE5D,6CAA6C;AAC7C,eAAO,MAAM,sBAAsB,IAAmB,CAAC;AAEvD,kCAAkC;AAClC,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC,kDAAkD;AAClD,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAAkD,CAAC;AAEvF;;;GAGG;AACH,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAEhD,gCAAgC;AAChC,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAEhD,uBAAuB;AACvB,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,0BAA0B;AAC1B,eAAO,MAAM,4BAA4B,IAAI,CAAC"}
@@ -14,6 +14,12 @@ export const WORKER_PANE_TITLE = 'Workers';
14
14
  export const OPEN_QUESTIONS_PANE_TITLE = 'Open questions';
15
15
  /** Operator input ペインの UI ラベル。 */
16
16
  export const INPUT_PANE_TITLE = 'Operator input';
17
+ /** Operator input ペイン枠線・タイトル色(他ペインと区別し視認性を確保)。 */
18
+ export const INPUT_PANE_BORDER_COLOR = 'blue';
19
+ /** Operator input コンテキストヒント行の色。 */
20
+ export const INPUT_PANE_HINT_COLOR = 'blue';
21
+ /** Operator input プロンプト(`operator> `)の色。 */
22
+ export const INPUT_PANE_PROMPT_COLOR = 'blue';
17
23
  /** Worker 状態ペインの固定高さ(枠線込み。タイトルは上枠線埋め込み + サマリ 4 行)。 */
18
24
  export const WORKER_PANE_HEIGHT = 6;
19
25
  /**
@@ -27,6 +33,12 @@ export const OPEN_QUESTIONS_PANE_MAX_HEIGHT_RATIO = 0.35;
27
33
  export const OPEN_QUESTIONS_PANE_MAX_DISPLAY_LINES = 8;
28
34
  /** Open questions ペインタイトルに付与する選択操作ヒント。 */
29
35
  export const OPEN_QUESTIONS_SELECTION_HINT = ' — Shift+↑↓で選択';
36
+ /** Open questions がないときに Operator input へ表示する任意入力 prompt。 */
37
+ export const OPERATOR_INPUT_DISCRETIONARY_HINT = '任意のタイミングで入力 · /exit で終了';
38
+ /** post-loop 待機中に Operator input へ表示する追加入力 prompt。 */
39
+ export const OPERATOR_INPUT_POST_LOOP_HINT = '追加指示を入力するか /exit で終了';
40
+ /** 終了処理中に Operator input へ表示する prompt。 */
41
+ export const OPERATOR_INPUT_SHUTTING_DOWN_HINT = '終了しています…';
30
42
  /** 入力ペインの枠線(上下)行数。`PANE_BORDER_ROWS` と同値。 */
31
43
  export const INPUT_PANE_BORDER_ROWS = PANE_BORDER_ROWS;
32
44
  /** ペイン内水平 padding(`paddingX`)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"tui-layout-constants.js","sourceRoot":"","sources":["../../src/tui/tui-layout-constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yCAAyC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC,6BAA6B;AAC7B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAEpC,oEAAoE;AACpE,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;AAE/C,2BAA2B;AAC3B,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAE3C,qDAAqD;AACrD,MAAM,CAAC,MAAM,yBAAyB,GAAG,gBAAgB,CAAC;AAE1D,kCAAkC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD,sDAAsD;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD,+CAA+C;AAC/C,MAAM,CAAC,MAAM,oCAAoC,GAAG,IAAI,CAAC;AAEzD,sCAAsC;AACtC,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC;AAEvD,0CAA0C;AAC1C,MAAM,CAAC,MAAM,6BAA6B,GAAG,gBAAgB,CAAC;AAE9D,6CAA6C;AAC7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AAEvD,kCAAkC;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,kDAAkD;AAClD,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,8BAA8B,GAAG,cAAc,CAAC;AAEvF;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD,gCAAgC;AAChC,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEhD,uBAAuB;AACvB,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAE/C,0BAA0B;AAC1B,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"tui-layout-constants.js","sourceRoot":"","sources":["../../src/tui/tui-layout-constants.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,yCAAyC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAElC,6BAA6B;AAC7B,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAEpC,oEAAoE;AACpE,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC;AAE/C,2BAA2B;AAC3B,MAAM,CAAC,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAE3C,qDAAqD;AACrD,MAAM,CAAC,MAAM,yBAAyB,GAAG,gBAAgB,CAAC;AAE1D,kCAAkC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAEjD,kDAAkD;AAClD,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C,mCAAmC;AACnC,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAE5C,4CAA4C;AAC5C,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAE9C,sDAAsD;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD,+CAA+C;AAC/C,MAAM,CAAC,MAAM,oCAAoC,GAAG,IAAI,CAAC;AAEzD,sCAAsC;AACtC,MAAM,CAAC,MAAM,qCAAqC,GAAG,CAAC,CAAC;AAEvD,0CAA0C;AAC1C,MAAM,CAAC,MAAM,6BAA6B,GAAG,gBAAgB,CAAC;AAE9D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,iCAAiC,GAAG,yBAAyB,CAAC;AAE3E,sDAAsD;AACtD,MAAM,CAAC,MAAM,6BAA6B,GAAG,sBAAsB,CAAC;AAEpE,0CAA0C;AAC1C,MAAM,CAAC,MAAM,iCAAiC,GAAG,UAAU,CAAC;AAE5D,6CAA6C;AAC7C,MAAM,CAAC,MAAM,sBAAsB,GAAG,gBAAgB,CAAC;AAEvD,kCAAkC;AAClC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC,kDAAkD;AAClD,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,8BAA8B,GAAG,cAAc,CAAC;AAEvF;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD,gCAAgC;AAChC,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEhD,uBAAuB;AACvB,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAE/C,0BAA0B;AAC1B,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { TUI_LAYOUT_ENV, type EnsembleConfig, type TuiLayoutMode } from '@agents-ensemble/core';
2
+ export type { TuiLayoutMode };
3
+ export { TUI_LAYOUT_ENV };
4
+ /**
5
+ * Resolve the TUI layout without allowing stream mode to affect non-TTY output.
6
+ * Unknown env values intentionally keep the existing pane layout.
7
+ */
8
+ export declare function resolveTuiLayoutMode(options?: {
9
+ env?: NodeJS.ProcessEnv;
10
+ config?: EnsembleConfig;
11
+ isTty?: boolean;
12
+ }): TuiLayoutMode;
13
+ //# sourceMappingURL=tui-layout-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui-layout-mode.d.ts","sourceRoot":"","sources":["../../src/tui/tui-layout-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EAAE,aAAa,EAAE,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,GAAE;IACP,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACZ,GACL,aAAa,CASf"}
@@ -0,0 +1,16 @@
1
+ import { resolveTuiLayoutSetting, TUI_LAYOUT_ENV, } from '@agents-ensemble/core';
2
+ export { TUI_LAYOUT_ENV };
3
+ /**
4
+ * Resolve the TUI layout without allowing stream mode to affect non-TTY output.
5
+ * Unknown env values intentionally keep the existing pane layout.
6
+ */
7
+ export function resolveTuiLayoutMode(options = {}) {
8
+ if (options.isTty === false) {
9
+ return 'pane';
10
+ }
11
+ return resolveTuiLayoutSetting({
12
+ env: options.env ?? process.env,
13
+ config: options.config,
14
+ });
15
+ }
16
+ //# sourceMappingURL=tui-layout-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tui-layout-mode.js","sourceRoot":"","sources":["../../src/tui/tui-layout-mode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,cAAc,GAGf,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,CAAC;AAE1B;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,UAII,EAAE;IAEN,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,uBAAuB,CAAC;QAC7B,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG;QAC/B,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;AACL,CAAC"}
@@ -8,6 +8,14 @@ export interface TuiViewSnapshot {
8
8
  shuttingDown: boolean;
9
9
  operatorContext: OperatorInputContext | undefined;
10
10
  }
11
+ /**
12
+ * TUI が使う未回答 open question の正本を解決する。
13
+ *
14
+ * `operatorContext` は `OpenQuestionRegistry.listOpen()` のスナップショットで、
15
+ * resume 時にも binding の初期化で設定される。binding 前の描画だけは、イベント
16
+ * reducer が保持する display state をフォールバックとして使う。
17
+ */
18
+ export declare function getTuiOpenQuestions(snapshot: TuiViewSnapshot): TuiViewSnapshot['displayState']['openQuestions'];
11
19
  export interface TuiViewModel {
12
20
  subscribe: (listener: () => void) => () => void;
13
21
  getSnapshot: () => TuiViewSnapshot;
@@ -18,5 +26,8 @@ export interface TuiViewModel {
18
26
  setShuttingDown: (shuttingDown: boolean) => void;
19
27
  setOperatorContext: (context: OperatorInputContext | undefined) => void;
20
28
  }
21
- export declare function createTuiViewModel(): TuiViewModel;
29
+ export declare function createTuiViewModel(options?: {
30
+ /** `null` keeps every entry so Ink's `<Static>` can append monotonically. */
31
+ activityLogWindowSize?: number | null;
32
+ }): TuiViewModel;
22
33
  //# sourceMappingURL=tui-view-model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tui-view-model.d.ts","sourceRoot":"","sources":["../../src/tui/tui-view-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE/E,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAG3B,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,mBAAmB,CAAC;IAClC,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,oBAAoB,GAAG,SAAS,CAAC;CACnD;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,WAAW,EAAE,MAAM,eAAe,CAAC;IACnC,eAAe,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACtD,iBAAiB,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,0BAA0B,EAAE,MAAM,IAAI,CAAC;IACvC,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,kBAAkB,EAAE,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,KAAK,IAAI,CAAC;CACzE;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CA6EjD"}
1
+ {"version":3,"file":"tui-view-model.d.ts","sourceRoot":"","sources":["../../src/tui/tui-view-model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE/E,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAG3B,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,mBAAmB,CAAC;IAClC,WAAW,EAAE,gBAAgB,EAAE,CAAC;IAChC,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,oBAAoB,GAAG,SAAS,CAAC;CACnD;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,eAAe,GACxB,eAAe,CAAC,cAAc,CAAC,CAAC,eAAe,CAAC,CAElD;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAChD,WAAW,EAAE,MAAM,eAAe,CAAC;IACnC,eAAe,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACtD,iBAAiB,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,0BAA0B,EAAE,MAAM,IAAI,CAAC;IACvC,kBAAkB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,eAAe,EAAE,CAAC,YAAY,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,kBAAkB,EAAE,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,KAAK,IAAI,CAAC;CACzE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,GAAE;IAC1C,6EAA6E;IAC7E,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC,GAAG,YAAY,CAyFpB"}
@@ -1,7 +1,20 @@
1
1
  import { INITIAL_SESSION_DISPLAY_STATE } from '../display/session-display-state.js';
2
- import { appendActivityLogEntry, } from './activity-log.js';
2
+ import { ACTIVITY_LOG_WINDOW_SIZE, appendActivityLogEntry, } from './activity-log.js';
3
3
  import { trimBlankLinesOnly } from './operator-input-layout.js';
4
- export function createTuiViewModel() {
4
+ /**
5
+ * TUI が使う未回答 open question の正本を解決する。
6
+ *
7
+ * `operatorContext` は `OpenQuestionRegistry.listOpen()` のスナップショットで、
8
+ * resume 時にも binding の初期化で設定される。binding 前の描画だけは、イベント
9
+ * reducer が保持する display state をフォールバックとして使う。
10
+ */
11
+ export function getTuiOpenQuestions(snapshot) {
12
+ return snapshot.operatorContext?.openQuestions ?? snapshot.displayState.openQuestions;
13
+ }
14
+ export function createTuiViewModel(options = {}) {
15
+ const activityLogWindowSize = options.activityLogWindowSize === undefined
16
+ ? ACTIVITY_LOG_WINDOW_SIZE
17
+ : options.activityLogWindowSize;
5
18
  let displayState = INITIAL_SESSION_DISPLAY_STATE;
6
19
  let activityLog = [];
7
20
  let postLoopWaiting = false;
@@ -49,11 +62,19 @@ export function createTuiViewModel() {
49
62
  if (!trimmed) {
50
63
  return;
51
64
  }
52
- activityLog = appendActivityLogEntry(activityLog, { label, text: trimmed });
65
+ const entry = { label, text: trimmed };
66
+ activityLog =
67
+ activityLogWindowSize === null
68
+ ? [...activityLog, entry]
69
+ : appendActivityLogEntry(activityLog, entry, activityLogWindowSize);
53
70
  notify();
54
71
  },
55
72
  appendActivityLogSeparator() {
56
- activityLog = appendActivityLogEntry(activityLog, { label: 'separator', text: '' });
73
+ const entry = { label: 'separator', text: '' };
74
+ activityLog =
75
+ activityLogWindowSize === null
76
+ ? [...activityLog, entry]
77
+ : appendActivityLogEntry(activityLog, entry, activityLogWindowSize);
57
78
  notify();
58
79
  },
59
80
  setPostLoopWaiting(waiting) {
@@ -1 +1 @@
1
- {"version":3,"file":"tui-view-model.js","sourceRoot":"","sources":["../../src/tui/tui-view-model.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,6BAA6B,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EACL,sBAAsB,GAGvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAqBhE,MAAM,UAAU,kBAAkB;IAChC,IAAI,YAAY,GAAG,6BAA6B,CAAC;IACjD,IAAI,WAAW,GAAuB,EAAE,CAAC;IACzC,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,eAAiD,CAAC;IACtD,IAAI,QAAQ,GAAoB;QAC9B,YAAY;QACZ,WAAW;QACX,eAAe;QACf,YAAY;QACZ,eAAe;KAChB,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;IAExC,MAAM,eAAe,GAAG,GAAG,EAAE;QAC3B,QAAQ,GAAG;YACT,YAAY;YACZ,WAAW;YACX,eAAe;YACf,YAAY;YACZ,eAAe;SAChB,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,eAAe,EAAE,CAAC;QAClB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,SAAS,CAAC,QAAQ;YAChB,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,GAAG,EAAE;gBACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC,CAAC;QACJ,CAAC;QACD,WAAW;YACT,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,eAAe,CAAC,KAAK;YACnB,YAAY,GAAG,KAAK,CAAC;YACrB,MAAM,EAAE,CAAC;QACX,CAAC;QACD,iBAAiB,CAAC,KAAK,EAAE,IAAI;YAC3B,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO;YACT,CAAC;YACD,WAAW,GAAG,sBAAsB,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAC5E,MAAM,EAAE,CAAC;QACX,CAAC;QACD,0BAA0B;YACxB,WAAW,GAAG,sBAAsB,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACpF,MAAM,EAAE,CAAC;QACX,CAAC;QACD,kBAAkB,CAAC,OAAO;YACxB,IAAI,eAAe,KAAK,OAAO,EAAE,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,eAAe,GAAG,OAAO,CAAC;YAC1B,MAAM,EAAE,CAAC;QACX,CAAC;QACD,eAAe,CAAC,IAAI;YAClB,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;gBAC1B,OAAO;YACT,CAAC;YACD,YAAY,GAAG,IAAI,CAAC;YACpB,MAAM,EAAE,CAAC;QACX,CAAC;QACD,kBAAkB,CAAC,OAAO;YACxB,eAAe,GAAG,OAAO,CAAC;YAC1B,MAAM,EAAE,CAAC;QACX,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tui-view-model.js","sourceRoot":"","sources":["../../src/tui/tui-view-model.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agents-ensemble/cli",
3
- "version": "0.5.3",
3
+ "version": "0.6.0",
4
4
  "type": "module",
5
5
  "description": "ensemble CLI — Issue-based agent orchestration",
6
6
  "bin": {
@@ -16,7 +16,7 @@
16
16
  "react": "19.2.0",
17
17
  "react-ink-textarea": "npm:@otolab/react-ink-textarea@0.4.1-otolab.0",
18
18
  "string-width": "8.1.0",
19
- "@agents-ensemble/core": "0.5.3"
19
+ "@agents-ensemble/core": "0.6.0"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@types/js-yaml": "4.0.9",