@agents-ensemble/cli 0.5.2 → 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 (110) hide show
  1. package/dist/async-operator-input.d.ts +4 -1
  2. package/dist/async-operator-input.d.ts.map +1 -1
  3. package/dist/async-operator-input.js +7 -3
  4. package/dist/async-operator-input.js.map +1 -1
  5. package/dist/display/create-session-display-sink.d.ts.map +1 -1
  6. package/dist/display/create-session-display-sink.js +1 -0
  7. package/dist/display/create-session-display-sink.js.map +1 -1
  8. package/dist/display/session-display-reducer.d.ts.map +1 -1
  9. package/dist/display/session-display-reducer.js +11 -0
  10. package/dist/display/session-display-reducer.js.map +1 -1
  11. package/dist/display/session-display-state.d.ts +5 -0
  12. package/dist/display/session-display-state.d.ts.map +1 -1
  13. package/dist/display/session-display-state.js +4 -0
  14. package/dist/display/session-display-state.js.map +1 -1
  15. package/dist/issue-command.d.ts.map +1 -1
  16. package/dist/issue-command.js +4 -2
  17. package/dist/issue-command.js.map +1 -1
  18. package/dist/prompt-operator-input.d.ts +1 -1
  19. package/dist/prompt-operator-input.d.ts.map +1 -1
  20. package/dist/prompt-operator-input.js +5 -1
  21. package/dist/prompt-operator-input.js.map +1 -1
  22. package/dist/session-log-lines.d.ts.map +1 -1
  23. package/dist/session-log-lines.js +12 -4
  24. package/dist/session-log-lines.js.map +1 -1
  25. package/dist/session-sinks.d.ts.map +1 -1
  26. package/dist/session-sinks.js +1 -0
  27. package/dist/session-sinks.js.map +1 -1
  28. package/dist/tui/compute-operator-input-cursor-y.d.ts +14 -0
  29. package/dist/tui/compute-operator-input-cursor-y.d.ts.map +1 -1
  30. package/dist/tui/compute-operator-input-cursor-y.js +17 -0
  31. package/dist/tui/compute-operator-input-cursor-y.js.map +1 -1
  32. package/dist/tui/create-issue-session-tui-host.d.ts +6 -2
  33. package/dist/tui/create-issue-session-tui-host.d.ts.map +1 -1
  34. package/dist/tui/create-issue-session-tui-host.js +23 -4
  35. package/dist/tui/create-issue-session-tui-host.js.map +1 -1
  36. package/dist/tui/create-issue-session-tui-host.test.js +130 -1
  37. package/dist/tui/create-issue-session-tui-host.test.js.map +1 -1
  38. package/dist/tui/create-tui-telemetry-sink.d.ts +1 -1
  39. package/dist/tui/create-tui-telemetry-sink.d.ts.map +1 -1
  40. package/dist/tui/create-tui-telemetry-sink.js +5 -5
  41. package/dist/tui/create-tui-telemetry-sink.js.map +1 -1
  42. package/dist/tui/format-operator-context.d.ts +51 -2
  43. package/dist/tui/format-operator-context.d.ts.map +1 -1
  44. package/dist/tui/format-operator-context.js +129 -10
  45. package/dist/tui/format-operator-context.js.map +1 -1
  46. package/dist/tui/ink-test-keys.d.ts +6 -0
  47. package/dist/tui/ink-test-keys.d.ts.map +1 -1
  48. package/dist/tui/ink-test-keys.js +6 -0
  49. package/dist/tui/ink-test-keys.js.map +1 -1
  50. package/dist/tui/issue-session-tui-stream-cursor.test.d.ts +2 -0
  51. package/dist/tui/issue-session-tui-stream-cursor.test.d.ts.map +1 -0
  52. package/dist/tui/issue-session-tui-stream-cursor.test.js +47 -0
  53. package/dist/tui/issue-session-tui-stream-cursor.test.js.map +1 -0
  54. package/dist/tui/issue-session-tui-stream.d.ts +11 -0
  55. package/dist/tui/issue-session-tui-stream.d.ts.map +1 -0
  56. package/dist/tui/issue-session-tui-stream.js +117 -0
  57. package/dist/tui/issue-session-tui-stream.js.map +1 -0
  58. package/dist/tui/issue-session-tui-stream.test.d.ts +2 -0
  59. package/dist/tui/issue-session-tui-stream.test.d.ts.map +1 -0
  60. package/dist/tui/issue-session-tui-stream.test.js +380 -0
  61. package/dist/tui/issue-session-tui-stream.test.js.map +1 -0
  62. package/dist/tui/issue-session-tui.d.ts +28 -2
  63. package/dist/tui/issue-session-tui.d.ts.map +1 -1
  64. package/dist/tui/issue-session-tui.js +40 -26
  65. package/dist/tui/issue-session-tui.js.map +1 -1
  66. package/dist/tui/issue-session-tui.test.js +343 -9
  67. package/dist/tui/issue-session-tui.test.js.map +1 -1
  68. package/dist/tui/open-questions-pane.d.ts +2 -0
  69. package/dist/tui/open-questions-pane.d.ts.map +1 -1
  70. package/dist/tui/open-questions-pane.js +5 -3
  71. package/dist/tui/open-questions-pane.js.map +1 -1
  72. package/dist/tui/operator-text-area-emacs-keys.test.js +89 -4
  73. package/dist/tui/operator-text-area-emacs-keys.test.js.map +1 -1
  74. package/dist/tui/operator-text-area-keyboard-harness.d.ts +70 -0
  75. package/dist/tui/operator-text-area-keyboard-harness.d.ts.map +1 -0
  76. package/dist/tui/operator-text-area-keyboard-harness.js +91 -0
  77. package/dist/tui/operator-text-area-keyboard-harness.js.map +1 -0
  78. package/dist/tui/operator-text-area.d.ts.map +1 -1
  79. package/dist/tui/operator-text-area.js +2 -1
  80. package/dist/tui/operator-text-area.js.map +1 -1
  81. package/dist/tui/operator-text-area.test-double.d.ts.map +1 -1
  82. package/dist/tui/operator-text-area.test-double.js +3 -2
  83. package/dist/tui/operator-text-area.test-double.js.map +1 -1
  84. package/dist/tui/stream-layout.d.ts +20 -0
  85. package/dist/tui/stream-layout.d.ts.map +1 -0
  86. package/dist/tui/stream-layout.js +55 -0
  87. package/dist/tui/stream-layout.js.map +1 -0
  88. package/dist/tui/titled-border-line.d.ts +10 -1
  89. package/dist/tui/titled-border-line.d.ts.map +1 -1
  90. package/dist/tui/titled-border-line.js +62 -12
  91. package/dist/tui/titled-border-line.js.map +1 -1
  92. package/dist/tui/titled-border-pane.d.ts +5 -1
  93. package/dist/tui/titled-border-pane.d.ts.map +1 -1
  94. package/dist/tui/titled-border-pane.ink.test.js +67 -0
  95. package/dist/tui/titled-border-pane.ink.test.js.map +1 -1
  96. package/dist/tui/titled-border-pane.js +32 -3
  97. package/dist/tui/titled-border-pane.js.map +1 -1
  98. package/dist/tui/tui-layout-constants.d.ts +12 -0
  99. package/dist/tui/tui-layout-constants.d.ts.map +1 -1
  100. package/dist/tui/tui-layout-constants.js +12 -0
  101. package/dist/tui/tui-layout-constants.js.map +1 -1
  102. package/dist/tui/tui-layout-mode.d.ts +13 -0
  103. package/dist/tui/tui-layout-mode.d.ts.map +1 -0
  104. package/dist/tui/tui-layout-mode.js +16 -0
  105. package/dist/tui/tui-layout-mode.js.map +1 -0
  106. package/dist/tui/tui-view-model.d.ts +12 -1
  107. package/dist/tui/tui-view-model.d.ts.map +1 -1
  108. package/dist/tui/tui-view-model.js +25 -4
  109. package/dist/tui/tui-view-model.js.map +1 -1
  110. package/package.json +2 -2
@@ -0,0 +1,117 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Box, Static, useInput } from 'ink';
3
+ import { useCallback, useEffect, useMemo, useState, useSyncExternalStore, } from 'react';
4
+ import { getTuiOpenQuestions } from './tui-view-model.js';
5
+ import { advanceOpenQuestionSelection, clampOpenQuestionSelectionIndex, resolveOpenQuestionsPaneLayout, } from './open-questions-pane.js';
6
+ import { INPUT_PANE_TITLE, INPUT_PANE_BORDER_COLOR, INPUT_PANE_HINT_COLOR, PANE_PADDING_X, ROUND_BORDER_WIDTH, } from './tui-layout-constants.js';
7
+ import { OperatorTextArea } from './operator-text-area.js';
8
+ import { ActivityLogDisplayLineRow, OpenQuestionsPane, WorkerStatusPane, WrappedTextLines, } from './issue-session-tui.js';
9
+ import { computeInputPaneHeight, computeOperatorInputCursorX, computeStreamOperatorInputCursorY, } from './compute-operator-input-cursor-y.js';
10
+ import { computeMaxInputDisplayLines, trimBlankLinesOnly } from './operator-input-layout.js';
11
+ import { resolveOperatorInputDisplayMode, } from './format-operator-context.js';
12
+ import { buildActivityLogDisplayLines } from './activity-log.js';
13
+ import { getPaneContentWidth, wrapTextToWidth } from './wrap-text-to-width.js';
14
+ import { resolveStreamPaneHeights } from './stream-layout.js';
15
+ import { TitledBorderPane } from './titled-border-pane.js';
16
+ function useStreamContentWidth() {
17
+ return getPaneContentWidth({
18
+ columns: process.stdout.columns ?? 80,
19
+ paddingX: PANE_PADDING_X,
20
+ borderWidth: ROUND_BORDER_WIDTH,
21
+ });
22
+ }
23
+ function useStreamActivityLogWidth() {
24
+ return Math.max(1, process.stdout.columns ?? 80);
25
+ }
26
+ function StaticActivityLog({ activityLog, contentWidth, }) {
27
+ return (_jsx(Static, { items: activityLog, children: (entry, index) => (_jsx(Box, { flexDirection: "column", children: buildActivityLogDisplayLines([entry], contentWidth).map((line, lineIndex) => (_jsx(ActivityLogDisplayLineRow, { line: line }, `activity-line-${index}-${lineIndex}`))) }, `activity-log-${index}`)) }));
28
+ }
29
+ export function IssueSessionTuiStream({ viewModel, onSubmit, issueUrl, issueLinkMode = 'osc8', }) {
30
+ const snapshot = useSyncExternalStore(viewModel.subscribe, viewModel.getSnapshot, viewModel.getSnapshot);
31
+ const [inputValue, setInputValue] = useState('');
32
+ const [inputDisplayLineCount, setInputDisplayLineCount] = useState(1);
33
+ const [selectedQuestionIndex, setSelectedQuestionIndex] = useState(0);
34
+ const contentWidth = useStreamContentWidth();
35
+ const activityLogContentWidth = useStreamActivityLogWidth();
36
+ const terminalRows = process.stdout.rows ?? 24;
37
+ const operatorPrompt = 'operator> ';
38
+ const maxInputDisplayLines = computeMaxInputDisplayLines(terminalRows);
39
+ const openQuestions = getTuiOpenQuestions(snapshot);
40
+ const openQuestionsLayout = useMemo(() => resolveOpenQuestionsPaneLayout({
41
+ openQuestions,
42
+ selectedIndex: selectedQuestionIndex,
43
+ contentWidth,
44
+ terminalRows,
45
+ }), [openQuestions, selectedQuestionIndex, contentWidth, terminalRows]);
46
+ const selectedQuestion = openQuestions[openQuestionsLayout.selectedIndex];
47
+ const operatorInputDisplay = resolveOperatorInputDisplayMode({
48
+ openQuestions,
49
+ selection: selectedQuestion
50
+ ? {
51
+ id: selectedQuestion.id,
52
+ index: openQuestionsLayout.selectedIndex,
53
+ total: openQuestions.length,
54
+ }
55
+ : undefined,
56
+ postLoopWaiting: snapshot.postLoopWaiting,
57
+ shuttingDown: snapshot.shuttingDown,
58
+ });
59
+ const contextHintLines = operatorInputDisplay.hintLines;
60
+ const visibleInputDisplayLineCount = Math.min(inputDisplayLineCount, maxInputDisplayLines);
61
+ const hintLineCount = contextHintLines.reduce((lineCount, line) => lineCount + wrapTextToWidth(line, contentWidth).length, 0);
62
+ const desiredInputPaneHeight = computeInputPaneHeight({
63
+ hintLineCount,
64
+ inputDisplayLineCount: visibleInputDisplayLineCount,
65
+ });
66
+ const openQuestionsPaneHeight = operatorInputDisplay.mode === 'withQuestions' ? openQuestionsLayout.paneHeight : 0;
67
+ const streamPaneHeights = useMemo(() => resolveStreamPaneHeights({
68
+ terminalRows,
69
+ openQuestionsPaneHeight,
70
+ inputPaneHeight: desiredInputPaneHeight,
71
+ }), [terminalRows, openQuestionsPaneHeight, desiredInputPaneHeight]);
72
+ const cursorStart = {
73
+ x: computeOperatorInputCursorX(operatorPrompt),
74
+ y: computeStreamOperatorInputCursorY({
75
+ openQuestionsPaneHeight: streamPaneHeights.openQuestionsPaneHeight,
76
+ hintLineCount,
77
+ }),
78
+ };
79
+ const streamOpenQuestionsLayout = useMemo(() => ({
80
+ ...openQuestionsLayout,
81
+ paneHeight: streamPaneHeights.openQuestionsPaneHeight,
82
+ }), [openQuestionsLayout, streamPaneHeights.openQuestionsPaneHeight]);
83
+ const handleDisplayLineCountChange = useCallback((lineCount) => {
84
+ setInputDisplayLineCount(Math.max(1, lineCount));
85
+ }, []);
86
+ useEffect(() => {
87
+ setSelectedQuestionIndex((current) => clampOpenQuestionSelectionIndex(current, openQuestions.length));
88
+ }, [openQuestions]);
89
+ useInput((_input, key) => {
90
+ if (openQuestions.length === 0 || !key.shift) {
91
+ return;
92
+ }
93
+ if (key.upArrow) {
94
+ setSelectedQuestionIndex((current) => advanceOpenQuestionSelection(current, 'up', openQuestions.length));
95
+ return;
96
+ }
97
+ if (key.downArrow) {
98
+ setSelectedQuestionIndex((current) => advanceOpenQuestionSelection(current, 'down', openQuestions.length));
99
+ }
100
+ });
101
+ const handleSubmit = (value) => {
102
+ if (snapshot.shuttingDown) {
103
+ return;
104
+ }
105
+ const trimmed = trimBlankLinesOnly(value);
106
+ if (!trimmed) {
107
+ return;
108
+ }
109
+ onSubmit(trimmed, selectedQuestion && openQuestions.length > 0
110
+ ? { targetOpenQuestionId: selectedQuestion.id }
111
+ : undefined);
112
+ setInputValue('');
113
+ setInputDisplayLineCount(1);
114
+ };
115
+ return (_jsxs(_Fragment, { children: [_jsx(StaticActivityLog, { activityLog: snapshot.activityLog, contentWidth: activityLogContentWidth }), _jsxs(Box, { flexDirection: "column", width: process.stdout.columns ?? 80, height: streamPaneHeights.dynamicFrameHeight, overflowX: "visible", overflowY: "hidden", children: [operatorInputDisplay.mode === 'withQuestions' ? (_jsx(OpenQuestionsPane, { layout: streamOpenQuestionsLayout })) : null, _jsxs(TitledBorderPane, { title: INPUT_PANE_TITLE, borderStyle: "single", borderColor: INPUT_PANE_BORDER_COLOR, paddingX: PANE_PADDING_X, height: streamPaneHeights.inputPaneHeight, children: [contextHintLines.map((line, index) => (_jsx(WrappedTextLines, { text: line, width: contentWidth, color: INPUT_PANE_HINT_COLOR }, `context-hint-${index}`))), _jsx(OperatorTextArea, { value: inputValue, onChange: setInputValue, onSubmit: handleSubmit, focus: !snapshot.shuttingDown, contentWidth: contentWidth, promptPrefix: operatorPrompt, maxDisplayLines: maxInputDisplayLines, onDisplayLineCountChange: handleDisplayLineCountChange, cursorStart: cursorStart })] }), _jsx(WorkerStatusPane, { workers: snapshot.displayState.workers, dispatchHold: snapshot.displayState.dispatchHold, height: streamPaneHeights.workerPaneHeight, issueUrl: issueUrl, issueLinkMode: issueLinkMode })] })] }));
116
+ }
117
+ //# sourceMappingURL=issue-session-tui-stream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-session-tui-stream.js","sourceRoot":"","sources":["../../src/tui/issue-session-tui-stream.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=issue-session-tui-stream.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-session-tui-stream.test.d.ts","sourceRoot":"","sources":["../../src/tui/issue-session-tui-stream.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,380 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
3
+ vi.mock('./operator-text-area.js', () => import('./operator-text-area.test-double.js'));
4
+ import { cleanup, render } from 'ink-testing-library';
5
+ import { IssueSessionTuiStream } from './issue-session-tui-stream.js';
6
+ import { createTuiViewModel } from './tui-view-model.js';
7
+ import { flushInkStdin, INK_TEST_KEYS } from './ink-test-keys.js';
8
+ function createOpenQuestion(overrides) {
9
+ return {
10
+ responseType: 'text',
11
+ source: 'conductor',
12
+ status: 'open',
13
+ askedAt: 1,
14
+ ...overrides,
15
+ };
16
+ }
17
+ const ISSUE_URL = 'https://github.com/otolab/agents-ensemble/issues/261';
18
+ const NON_CANONICAL_ISSUE_URL = 'http://github.com/otolab/agents-ensemble/issues/261/';
19
+ describe('IssueSessionTuiStream', () => {
20
+ beforeEach(() => {
21
+ Object.defineProperty(process.stdout, 'rows', {
22
+ configurable: true,
23
+ value: 24,
24
+ });
25
+ Object.defineProperty(process.stdout, 'columns', {
26
+ configurable: true,
27
+ value: 80,
28
+ });
29
+ });
30
+ afterEach(() => {
31
+ cleanup();
32
+ vi.restoreAllMocks();
33
+ });
34
+ it('renders activity as unframed static output and keeps the lower panes framed', () => {
35
+ const viewModel = createTuiViewModel();
36
+ viewModel.setDisplayState({
37
+ workers: {
38
+ implementer: { kind: 'implementer', status: 'running' },
39
+ },
40
+ conductorOutput: null,
41
+ openQuestions: [createOpenQuestion({ id: 'inq-1', question: 'Approve?' })],
42
+ dispatchHold: { hold: false, heldEventCount: 0 },
43
+ });
44
+ viewModel.appendActivityLog('operator', 'operator ping');
45
+ viewModel.appendActivityLog('conductor', 'conductor says hi');
46
+ const { lastFrame } = render(_jsx(IssueSessionTuiStream, { viewModel: viewModel, onSubmit: () => { } }));
47
+ const frame = lastFrame() ?? '';
48
+ expect(frame).toContain('[operator] operator ping');
49
+ expect(frame).toContain('[conductor] conductor says hi');
50
+ expect(frame).toContain('Workers');
51
+ expect(frame).toContain('Open questions');
52
+ expect(frame).toContain('Operator input');
53
+ expect(frame).not.toContain('Orchestration');
54
+ expect(frame.indexOf('Open questions')).toBeLessThan(frame.indexOf('Operator input'));
55
+ expect(frame.indexOf('Operator input')).toBeLessThan(frame.indexOf('Workers'));
56
+ expect(frame).toContain('inq-1 (1/1) への回答');
57
+ expect(frame).not.toContain('任意のタイミングで入力 · /exit で終了');
58
+ });
59
+ it('shows dispatch hold count in the Workers pane title', () => {
60
+ const viewModel = createTuiViewModel();
61
+ viewModel.setDisplayState({
62
+ workers: {},
63
+ conductorOutput: null,
64
+ openQuestions: [],
65
+ dispatchHold: { hold: true, heldEventCount: 4 },
66
+ });
67
+ const { lastFrame } = render(_jsx(IssueSessionTuiStream, { viewModel: viewModel, onSubmit: () => { } }));
68
+ expect(lastFrame() ?? '').toContain('conductor dispatch 保留中(4 件)');
69
+ });
70
+ it('shows the single-line post-loop prompt without waiting status', () => {
71
+ const viewModel = createTuiViewModel();
72
+ viewModel.setPostLoopWaiting(true);
73
+ const { lastFrame } = render(_jsx(IssueSessionTuiStream, { viewModel: viewModel, issueUrl: "https://github.com/otolab/agents-ensemble/issues/261", issueLinkMode: "label", onSubmit: () => { } }));
74
+ const frame = lastFrame() ?? '';
75
+ const operatorInputIndex = frame.indexOf('Operator input');
76
+ const instructionHintIndex = frame.indexOf('追加指示を入力するか /exit で終了');
77
+ const workersIndex = frame.indexOf('Workers');
78
+ expect(operatorInputIndex).toBeGreaterThanOrEqual(0);
79
+ expect(frame).not.toContain('Open questions');
80
+ expect(frame).not.toContain('(未回答なし)');
81
+ expect(instructionHintIndex).toBeGreaterThan(operatorInputIndex);
82
+ expect(workersIndex).toBeGreaterThan(operatorInputIndex);
83
+ expect(frame).toContain('追加指示を入力するか /exit で終了');
84
+ expect(frame).toContain('otolab/agents-ensemble#261');
85
+ expect(frame).not.toContain('post-loop 待機中');
86
+ expect(Math.max(...frame.split('\n').map((line) => line.trimEnd().length))).toBeLessThanOrEqual(80);
87
+ });
88
+ it('uses the canonical Issue URL for the Workers header OSC 8 target', () => {
89
+ const viewModel = createTuiViewModel();
90
+ const { lastFrame } = render(_jsx(IssueSessionTuiStream, { viewModel: viewModel, issueUrl: NON_CANONICAL_ISSUE_URL, onSubmit: () => { } }));
91
+ const frame = lastFrame() ?? '';
92
+ expect(frame).toContain('otolab/agents-ensemble#261');
93
+ expect(frame).toContain(`\u001b]8;;${ISSUE_URL}\u0007`);
94
+ expect(frame).not.toContain(`\u001b]8;;${NON_CANONICAL_ISSUE_URL}\u0007`);
95
+ });
96
+ it('renders the canonical Issue URL in the Workers header with URL fallback', () => {
97
+ const viewModel = createTuiViewModel();
98
+ const { lastFrame } = render(_jsx(IssueSessionTuiStream, { viewModel: viewModel, issueUrl: NON_CANONICAL_ISSUE_URL, issueLinkMode: "url", onSubmit: () => { } }));
99
+ const frame = lastFrame() ?? '';
100
+ expect(frame).toContain(`${ISSUE_URL} ─╮`);
101
+ expect(frame).not.toContain('otolab/agents-ensemble#261');
102
+ expect(frame).not.toContain('\u001b]8;;');
103
+ });
104
+ it('keeps the canonical Issue URL in URL fallback at a narrow width', () => {
105
+ Object.defineProperty(process.stdout, 'columns', {
106
+ configurable: true,
107
+ value: 24,
108
+ });
109
+ const viewModel = createTuiViewModel();
110
+ const { lastFrame } = render(_jsx(IssueSessionTuiStream, { viewModel: viewModel, issueUrl: NON_CANONICAL_ISSUE_URL, issueLinkMode: "url", onSubmit: () => { } }));
111
+ const workersBorderLine = (lastFrame() ?? '').split('\n').find((line) => line.includes('Workers')) ?? '';
112
+ expect(workersBorderLine).toContain(ISSUE_URL);
113
+ expect(workersBorderLine).toContain(`${ISSUE_URL} ─╮`);
114
+ expect(workersBorderLine).not.toContain('https:/…');
115
+ expect(workersBorderLine).not.toContain('\u001b]8;;');
116
+ });
117
+ it('keeps the canonical Issue URL in URL fallback across context lifecycle states', async () => {
118
+ Object.defineProperty(process.stdout, 'columns', {
119
+ configurable: true,
120
+ value: 24,
121
+ });
122
+ const viewModel = createTuiViewModel();
123
+ const { lastFrame } = render(_jsx(IssueSessionTuiStream, { viewModel: viewModel, issueUrl: NON_CANONICAL_ISSUE_URL, issueLinkMode: "url", onSubmit: () => { } }));
124
+ const expectCanonicalIssueUrl = () => {
125
+ const workersBorderLine = (lastFrame() ?? '').split('\n').find((line) => line.includes('Workers')) ?? '';
126
+ expect(workersBorderLine).toContain(ISSUE_URL);
127
+ expect(workersBorderLine).toContain(`${ISSUE_URL} ─╮`);
128
+ expect(workersBorderLine).not.toContain('https:/…');
129
+ expect(workersBorderLine).not.toContain('\u001b]8;;');
130
+ };
131
+ expectCanonicalIssueUrl();
132
+ const question = createOpenQuestion({ id: 'inq-1', question: 'Continue?' });
133
+ viewModel.setDisplayState({
134
+ workers: {},
135
+ conductorOutput: null,
136
+ openQuestions: [question],
137
+ dispatchHold: { hold: false, heldEventCount: 0 },
138
+ });
139
+ viewModel.setOperatorContext({
140
+ conductorTurn: 1,
141
+ autonomousTurns: 0,
142
+ maxTurns: null,
143
+ openQuestions: [question],
144
+ });
145
+ await flushInkStdin();
146
+ expectCanonicalIssueUrl();
147
+ expect(lastFrame() ?? '').toContain('inq-1 (1/1)');
148
+ expect(lastFrame() ?? '').toContain('への回答');
149
+ viewModel.setDisplayState({
150
+ workers: {},
151
+ conductorOutput: null,
152
+ openQuestions: [],
153
+ dispatchHold: { hold: false, heldEventCount: 0 },
154
+ });
155
+ viewModel.setOperatorContext({
156
+ conductorTurn: 1,
157
+ autonomousTurns: 0,
158
+ maxTurns: null,
159
+ openQuestions: [],
160
+ });
161
+ viewModel.setPostLoopWaiting(true);
162
+ await flushInkStdin();
163
+ expectCanonicalIssueUrl();
164
+ expect(lastFrame() ?? '').toContain('追加指示を入力するか');
165
+ expect(lastFrame() ?? '').toContain('/exit で終了');
166
+ viewModel.setShuttingDown(true);
167
+ await flushInkStdin();
168
+ expectCanonicalIssueUrl();
169
+ expect(lastFrame() ?? '').toContain('終了しています…');
170
+ });
171
+ it('preserves the canonical Issue URL when dispatch hold adds a title suffix', () => {
172
+ const viewModel = createTuiViewModel();
173
+ viewModel.setDisplayState({
174
+ workers: {},
175
+ conductorOutput: null,
176
+ openQuestions: [],
177
+ dispatchHold: { hold: true, heldEventCount: 4 },
178
+ });
179
+ const { lastFrame } = render(_jsx(IssueSessionTuiStream, { viewModel: viewModel, issueUrl: NON_CANONICAL_ISSUE_URL, issueLinkMode: "url", onSubmit: () => { } }));
180
+ const workersBorderLine = (lastFrame() ?? '').split('\n').find((line) => line.includes('Workers')) ?? '';
181
+ expect(workersBorderLine).toContain(ISSUE_URL);
182
+ expect(workersBorderLine).toContain(`${ISSUE_URL} ─╮`);
183
+ expect(workersBorderLine).not.toContain('https://github.com/otolab/a…');
184
+ expect(workersBorderLine).not.toContain('\u001b]8;;');
185
+ });
186
+ it('closes the narrow Workers header Issue hyperlink before the border', () => {
187
+ Object.defineProperty(process.stdout, 'columns', {
188
+ configurable: true,
189
+ value: 24,
190
+ });
191
+ const viewModel = createTuiViewModel();
192
+ const { lastFrame } = render(_jsx(IssueSessionTuiStream, { viewModel: viewModel, issueUrl: NON_CANONICAL_ISSUE_URL, onSubmit: () => { } }));
193
+ const workersBorderLine = (lastFrame() ?? '').split('\n').find((line) => line.includes('Workers')) ?? '';
194
+ const canonicalOsc8Open = `\u001b]8;;${ISSUE_URL}\u0007`;
195
+ const osc8Close = '\u001b]8;;\u0007';
196
+ const linkOpenIndex = workersBorderLine.indexOf(canonicalOsc8Open);
197
+ const linkCloseIndex = workersBorderLine.indexOf(osc8Close, linkOpenIndex + canonicalOsc8Open.length);
198
+ const closingBorderIndex = workersBorderLine.lastIndexOf('─╮');
199
+ expect(workersBorderLine).toContain(`${canonicalOsc8Open}otolab/a…${osc8Close}`);
200
+ expect(workersBorderLine).not.toContain(`\u001b]8;;${NON_CANONICAL_ISSUE_URL}\u0007`);
201
+ expect(linkCloseIndex).toBeGreaterThan(linkOpenIndex);
202
+ expect(linkCloseIndex).toBeLessThan(closingBorderIndex);
203
+ expect(workersBorderLine.slice(closingBorderIndex)).not.toContain(osc8Close);
204
+ expect(workersBorderLine.match(/\u001b\]8;;/g)).toHaveLength(2);
205
+ });
206
+ it('keeps the canonical Issue URL across stream context lifecycle states', async () => {
207
+ const viewModel = createTuiViewModel();
208
+ const { lastFrame } = render(_jsx(IssueSessionTuiStream, { viewModel: viewModel, issueUrl: NON_CANONICAL_ISSUE_URL, onSubmit: () => { } }));
209
+ const canonicalOsc8Open = `\u001b]8;;${ISSUE_URL}\u0007`;
210
+ const nonCanonicalOsc8Open = `\u001b]8;;${NON_CANONICAL_ISSUE_URL}\u0007`;
211
+ const expectCanonicalIssueLink = () => {
212
+ const frame = lastFrame() ?? '';
213
+ expect(frame).toContain(canonicalOsc8Open);
214
+ expect(frame).not.toContain(nonCanonicalOsc8Open);
215
+ };
216
+ expectCanonicalIssueLink();
217
+ const question = createOpenQuestion({ id: 'inq-1', question: 'Continue?' });
218
+ viewModel.setDisplayState({
219
+ workers: {},
220
+ conductorOutput: null,
221
+ openQuestions: [question],
222
+ dispatchHold: { hold: false, heldEventCount: 0 },
223
+ });
224
+ viewModel.setOperatorContext({
225
+ conductorTurn: 1,
226
+ autonomousTurns: 0,
227
+ maxTurns: null,
228
+ openQuestions: [question],
229
+ });
230
+ await flushInkStdin();
231
+ expectCanonicalIssueLink();
232
+ expect(lastFrame() ?? '').toContain('inq-1 (1/1) への回答');
233
+ viewModel.setDisplayState({
234
+ workers: {},
235
+ conductorOutput: null,
236
+ openQuestions: [],
237
+ dispatchHold: { hold: false, heldEventCount: 0 },
238
+ });
239
+ viewModel.setOperatorContext({
240
+ conductorTurn: 1,
241
+ autonomousTurns: 0,
242
+ maxTurns: null,
243
+ openQuestions: [],
244
+ });
245
+ viewModel.setPostLoopWaiting(true);
246
+ await flushInkStdin();
247
+ expectCanonicalIssueLink();
248
+ expect(lastFrame() ?? '').toContain('追加指示を入力するか /exit で終了');
249
+ viewModel.setShuttingDown(true);
250
+ await flushInkStdin();
251
+ expectCanonicalIssueLink();
252
+ expect(lastFrame() ?? '').toContain('終了しています…');
253
+ });
254
+ it('shows the no-question hint before operator context binds', () => {
255
+ const viewModel = createTuiViewModel();
256
+ const { lastFrame } = render(_jsx(IssueSessionTuiStream, { viewModel: viewModel, issueUrl: "https://github.com/otolab/agents-ensemble/issues/261", issueLinkMode: "label", onSubmit: () => { } }));
257
+ const frame = lastFrame() ?? '';
258
+ expect(frame).toContain('任意のタイミングで入力 · /exit で終了');
259
+ expect(frame).not.toContain('自律ターン');
260
+ });
261
+ it('omits the open-question pane and keeps ordinary input available', async () => {
262
+ const viewModel = createTuiViewModel();
263
+ const onSubmit = vi.fn();
264
+ const { stdin, lastFrame } = render(_jsx(IssueSessionTuiStream, { viewModel: viewModel, issueUrl: "https://github.com/otolab/agents-ensemble/issues/263", issueLinkMode: "label", onSubmit: onSubmit }));
265
+ expect(lastFrame() ?? '').not.toContain('Open questions');
266
+ expect(lastFrame() ?? '').toContain('任意のタイミングで入力 · /exit で終了');
267
+ expect(lastFrame() ?? '').toContain('otolab/agents-ensemble#263');
268
+ expect(lastFrame() ?? '').not.toContain('otolab/agents-ensemble#263 — 任意のタイミングで入力 · /exit で終了');
269
+ stdin.write('follow-up');
270
+ await flushInkStdin();
271
+ stdin.write('\r');
272
+ await flushInkStdin();
273
+ expect(onSubmit).toHaveBeenCalledWith('follow-up', undefined);
274
+ });
275
+ it('appends a later activity entry without replacing the earlier static entry', async () => {
276
+ const viewModel = createTuiViewModel();
277
+ viewModel.appendActivityLog('harness', 'first');
278
+ const { lastFrame } = render(_jsx(IssueSessionTuiStream, { viewModel: viewModel, onSubmit: () => { } }));
279
+ expect(lastFrame() ?? '').toContain('[harness] first');
280
+ viewModel.appendActivityLog('observation', 'second');
281
+ await flushInkStdin();
282
+ const frame = lastFrame() ?? '';
283
+ expect(frame).toContain('[harness] first');
284
+ expect(frame).toContain('[observation] second');
285
+ });
286
+ it('submits input for the selected open question', async () => {
287
+ const viewModel = createTuiViewModel();
288
+ viewModel.setDisplayState({
289
+ workers: {},
290
+ conductorOutput: null,
291
+ openQuestions: [createOpenQuestion({ id: 'inq-1', question: 'Need input' })],
292
+ dispatchHold: { hold: false, heldEventCount: 0 },
293
+ });
294
+ const onSubmit = vi.fn();
295
+ const { stdin } = render(_jsx(IssueSessionTuiStream, { viewModel: viewModel, onSubmit: onSubmit }));
296
+ stdin.write('approved');
297
+ await flushInkStdin();
298
+ stdin.write('\r');
299
+ await flushInkStdin();
300
+ expect(onSubmit).toHaveBeenCalledWith('approved', {
301
+ targetOpenQuestionId: 'inq-1',
302
+ });
303
+ });
304
+ it.each([
305
+ [
306
+ 'one restored question',
307
+ [createOpenQuestion({ id: 'inq-resumed-1', question: 'Resume one?' })],
308
+ ],
309
+ [
310
+ 'multiple restored questions',
311
+ [
312
+ createOpenQuestion({ id: 'inq-resumed-1', question: 'Resume first?' }),
313
+ createOpenQuestion({ id: 'inq-resumed-2', question: 'Resume second?' }),
314
+ ],
315
+ ],
316
+ ])('renders %s from the resumed operator context', async (_name, restoredQuestions) => {
317
+ const viewModel = createTuiViewModel();
318
+ const setOperatorQuestions = (openQuestions) => {
319
+ viewModel.setOperatorContext({
320
+ conductorTurn: 2,
321
+ autonomousTurns: 1,
322
+ maxTurns: null,
323
+ openQuestions,
324
+ });
325
+ };
326
+ setOperatorQuestions(restoredQuestions);
327
+ const selectedIndex = restoredQuestions.length > 1 ? 1 : 0;
328
+ let submittedOptions;
329
+ const { stdin, lastFrame } = render(_jsx(IssueSessionTuiStream, { viewModel: viewModel, onSubmit: (_text, options) => {
330
+ setOperatorQuestions(restoredQuestions.filter((_question, index) => index !== selectedIndex));
331
+ submittedOptions = options;
332
+ } }));
333
+ const initialFrame = lastFrame() ?? '';
334
+ expect(initialFrame).toContain('Open questions');
335
+ expect(initialFrame).toContain('inq-resumed-1');
336
+ expect(initialFrame).not.toContain('任意のタイミングで入力 · /exit で終了');
337
+ if (selectedIndex === 1) {
338
+ stdin.write(INK_TEST_KEYS.shiftDownArrow);
339
+ await flushInkStdin();
340
+ }
341
+ stdin.write('answer');
342
+ await flushInkStdin();
343
+ stdin.write('\r');
344
+ await flushInkStdin();
345
+ expect(submittedOptions).toEqual({
346
+ targetOpenQuestionId: restoredQuestions[selectedIndex]?.id,
347
+ });
348
+ if (restoredQuestions.length === 1) {
349
+ expect(lastFrame() ?? '').not.toContain('Open questions');
350
+ expect(lastFrame() ?? '').toContain('任意のタイミングで入力 · /exit で終了');
351
+ }
352
+ else {
353
+ expect(lastFrame() ?? '').toContain('Open questions');
354
+ expect(lastFrame() ?? '').toContain('inq-resumed-1');
355
+ expect(lastFrame() ?? '').not.toContain('任意のタイミングで入力 · /exit で終了');
356
+ setOperatorQuestions([]);
357
+ await flushInkStdin();
358
+ expect(lastFrame() ?? '').not.toContain('Open questions');
359
+ expect(lastFrame() ?? '').toContain('任意のタイミングで入力 · /exit で終了');
360
+ }
361
+ });
362
+ it('keeps Shift+arrow open-question selection in stream mode', async () => {
363
+ const viewModel = createTuiViewModel();
364
+ viewModel.setDisplayState({
365
+ workers: {},
366
+ conductorOutput: null,
367
+ openQuestions: [
368
+ createOpenQuestion({ id: 'inq-1', question: 'First' }),
369
+ createOpenQuestion({ id: 'inq-2', question: 'Second' }),
370
+ ],
371
+ dispatchHold: { hold: false, heldEventCount: 0 },
372
+ });
373
+ const { stdin, lastFrame } = render(_jsx(IssueSessionTuiStream, { viewModel: viewModel, onSubmit: () => { } }));
374
+ stdin.write(INK_TEST_KEYS.shiftDownArrow);
375
+ await flushInkStdin();
376
+ expect(lastFrame() ?? '').toContain('2/2');
377
+ expect(lastFrame() ?? '').toContain('▸ inq-2');
378
+ });
379
+ });
380
+ //# sourceMappingURL=issue-session-tui-stream.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-session-tui-stream.test.js","sourceRoot":"","sources":["../../src/tui/issue-session-tui-stream.test.tsx"],"names":[],"mappings":"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"}
@@ -1,8 +1,34 @@
1
- import type { TuiViewModel } from './tui-view-model.js';
1
+ import { type TuiViewModel, type TuiViewSnapshot } from './tui-view-model.js';
2
+ import { type IssueLinkMode } from './format-operator-context.js';
3
+ import { type ActivityLogDisplayLine } from './activity-log.js';
2
4
  import type { OperatorInputSubmitOptions } from '@agents-ensemble/core';
5
+ import { type OpenQuestionsPaneLayout } from './open-questions-pane.js';
3
6
  export interface IssueSessionTuiProps {
4
7
  viewModel: TuiViewModel;
5
8
  onSubmit: (text: string, options?: OperatorInputSubmitOptions) => void;
9
+ issueUrl?: string;
10
+ issueLinkMode?: IssueLinkMode;
6
11
  }
7
- export declare function IssueSessionTui({ viewModel, onSubmit }: IssueSessionTuiProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function WrappedTextLines({ text, width, dimColor, color, issueUrl, issueLinkMode, }: {
13
+ text: string;
14
+ width: number;
15
+ dimColor?: boolean;
16
+ color?: string;
17
+ issueUrl?: string;
18
+ issueLinkMode?: IssueLinkMode;
19
+ }): import("react/jsx-runtime").JSX.Element;
20
+ export declare function ActivityLogDisplayLineRow({ line }: {
21
+ line: ActivityLogDisplayLine;
22
+ }): import("react/jsx-runtime").JSX.Element;
23
+ export declare function WorkerStatusPane({ workers, dispatchHold, height, issueUrl, issueLinkMode, }: {
24
+ workers: TuiViewSnapshot['displayState']['workers'];
25
+ dispatchHold?: TuiViewSnapshot['displayState']['dispatchHold'];
26
+ height?: number;
27
+ issueUrl?: string;
28
+ issueLinkMode?: IssueLinkMode;
29
+ }): import("react/jsx-runtime").JSX.Element;
30
+ export declare function OpenQuestionsPane({ layout, }: {
31
+ layout: OpenQuestionsPaneLayout;
32
+ }): import("react/jsx-runtime").JSX.Element | null;
33
+ export declare function IssueSessionTui({ viewModel, onSubmit, issueUrl, issueLinkMode, }: IssueSessionTuiProps): import("react/jsx-runtime").JSX.Element;
8
34
  //# sourceMappingURL=issue-session-tui.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"issue-session-tui.d.ts","sourceRoot":"","sources":["../../src/tui/issue-session-tui.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,qBAAqB,CAAC;AAazE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AA8BxE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,YAAY,CAAC;IACxB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,0BAA0B,KAAK,IAAI,CAAC;CACxE;AAgND,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CAwL5E"}
1
+ {"version":3,"file":"issue-session-tui.d.ts","sourceRoot":"","sources":["../../src/tui/issue-session-tui.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAKL,KAAK,sBAAsB,EAI5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,0BAA0B,CAAC;AA0BlC,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,YAAY,CAAC;IACxB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,0BAA0B,KAAK,IAAI,CAAC;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AAUD,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,KAAK,EACL,QAAgB,EAChB,KAAK,EACL,QAAQ,EACR,aAAuB,GACxB,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,2CAuBA;AAeD,wBAAgB,yBAAyB,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,2CA2BnF;AAiCD,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,YAAY,EACZ,MAA2B,EAC3B,QAAQ,EACR,aAAuB,GACxB,EAAE;IACD,OAAO,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC;IACpD,YAAY,CAAC,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,CAAC;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,2CA2BA;AAwDD,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,GACP,EAAE;IACD,MAAM,EAAE,uBAAuB,CAAC;CACjC,kDAwBA;AAED,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,aAAsB,GACvB,EAAE,oBAAoB,2CAyMtB"}