@agentuity/coder 2.0.7 → 2.0.8

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 (113) hide show
  1. package/AGENTS.md +43 -0
  2. package/README.md +75 -37
  3. package/dist/index.d.ts +1 -3
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +1 -1669
  6. package/dist/index.js.map +1 -1
  7. package/package.json +9 -12
  8. package/src/index.ts +51 -1996
  9. package/dist/chain-preview.d.ts +0 -55
  10. package/dist/chain-preview.d.ts.map +0 -1
  11. package/dist/chain-preview.js +0 -472
  12. package/dist/chain-preview.js.map +0 -1
  13. package/dist/client.d.ts +0 -44
  14. package/dist/client.d.ts.map +0 -1
  15. package/dist/client.js +0 -411
  16. package/dist/client.js.map +0 -1
  17. package/dist/commands.d.ts +0 -22
  18. package/dist/commands.d.ts.map +0 -1
  19. package/dist/commands.js +0 -99
  20. package/dist/commands.js.map +0 -1
  21. package/dist/footer.d.ts +0 -34
  22. package/dist/footer.d.ts.map +0 -1
  23. package/dist/footer.js +0 -249
  24. package/dist/footer.js.map +0 -1
  25. package/dist/handlers.d.ts +0 -24
  26. package/dist/handlers.d.ts.map +0 -1
  27. package/dist/handlers.js +0 -83
  28. package/dist/handlers.js.map +0 -1
  29. package/dist/hub-overlay-state.d.ts +0 -31
  30. package/dist/hub-overlay-state.d.ts.map +0 -1
  31. package/dist/hub-overlay-state.js +0 -78
  32. package/dist/hub-overlay-state.js.map +0 -1
  33. package/dist/hub-overlay.d.ts +0 -146
  34. package/dist/hub-overlay.d.ts.map +0 -1
  35. package/dist/hub-overlay.js +0 -2354
  36. package/dist/hub-overlay.js.map +0 -1
  37. package/dist/native-remote-ui-context.d.ts +0 -5
  38. package/dist/native-remote-ui-context.d.ts.map +0 -1
  39. package/dist/native-remote-ui-context.js +0 -30
  40. package/dist/native-remote-ui-context.js.map +0 -1
  41. package/dist/output-viewer.d.ts +0 -49
  42. package/dist/output-viewer.d.ts.map +0 -1
  43. package/dist/output-viewer.js +0 -389
  44. package/dist/output-viewer.js.map +0 -1
  45. package/dist/overlay.d.ts +0 -40
  46. package/dist/overlay.d.ts.map +0 -1
  47. package/dist/overlay.js +0 -225
  48. package/dist/overlay.js.map +0 -1
  49. package/dist/protocol.d.ts +0 -605
  50. package/dist/protocol.d.ts.map +0 -1
  51. package/dist/protocol.js +0 -4
  52. package/dist/protocol.js.map +0 -1
  53. package/dist/remote-lifecycle.d.ts +0 -61
  54. package/dist/remote-lifecycle.d.ts.map +0 -1
  55. package/dist/remote-lifecycle.js +0 -190
  56. package/dist/remote-lifecycle.js.map +0 -1
  57. package/dist/remote-session.d.ts +0 -128
  58. package/dist/remote-session.d.ts.map +0 -1
  59. package/dist/remote-session.js +0 -876
  60. package/dist/remote-session.js.map +0 -1
  61. package/dist/remote-tui.d.ts +0 -40
  62. package/dist/remote-tui.d.ts.map +0 -1
  63. package/dist/remote-tui.js +0 -867
  64. package/dist/remote-tui.js.map +0 -1
  65. package/dist/remote-ui-handler.d.ts +0 -5
  66. package/dist/remote-ui-handler.d.ts.map +0 -1
  67. package/dist/remote-ui-handler.js +0 -53
  68. package/dist/remote-ui-handler.js.map +0 -1
  69. package/dist/renderers.d.ts +0 -34
  70. package/dist/renderers.d.ts.map +0 -1
  71. package/dist/renderers.js +0 -669
  72. package/dist/renderers.js.map +0 -1
  73. package/dist/review.d.ts +0 -15
  74. package/dist/review.d.ts.map +0 -1
  75. package/dist/review.js +0 -154
  76. package/dist/review.js.map +0 -1
  77. package/dist/titlebar.d.ts +0 -3
  78. package/dist/titlebar.d.ts.map +0 -1
  79. package/dist/titlebar.js +0 -59
  80. package/dist/titlebar.js.map +0 -1
  81. package/dist/todo/index.d.ts +0 -3
  82. package/dist/todo/index.d.ts.map +0 -1
  83. package/dist/todo/index.js +0 -3
  84. package/dist/todo/index.js.map +0 -1
  85. package/dist/todo/store.d.ts +0 -6
  86. package/dist/todo/store.d.ts.map +0 -1
  87. package/dist/todo/store.js +0 -43
  88. package/dist/todo/store.js.map +0 -1
  89. package/dist/todo/types.d.ts +0 -13
  90. package/dist/todo/types.d.ts.map +0 -1
  91. package/dist/todo/types.js +0 -2
  92. package/dist/todo/types.js.map +0 -1
  93. package/src/chain-preview.ts +0 -621
  94. package/src/client.ts +0 -527
  95. package/src/commands.ts +0 -132
  96. package/src/footer.ts +0 -305
  97. package/src/handlers.ts +0 -113
  98. package/src/hub-overlay-state.ts +0 -127
  99. package/src/hub-overlay.ts +0 -3037
  100. package/src/native-remote-ui-context.ts +0 -41
  101. package/src/output-viewer.ts +0 -480
  102. package/src/overlay.ts +0 -294
  103. package/src/protocol.ts +0 -758
  104. package/src/remote-lifecycle.ts +0 -270
  105. package/src/remote-session.ts +0 -1080
  106. package/src/remote-tui.ts +0 -1020
  107. package/src/remote-ui-handler.ts +0 -86
  108. package/src/renderers.ts +0 -740
  109. package/src/review.ts +0 -201
  110. package/src/titlebar.ts +0 -63
  111. package/src/todo/index.ts +0 -2
  112. package/src/todo/store.ts +0 -49
  113. package/src/todo/types.ts +0 -14
@@ -1,55 +0,0 @@
1
- import type { Theme } from '@mariozechner/pi-coding-agent';
2
- import type { AgentDefinition } from './protocol.ts';
3
- export interface ChainResult {
4
- mode: 'sequential' | 'parallel';
5
- steps: Array<{
6
- agent: string;
7
- task: string;
8
- }>;
9
- }
10
- interface Component {
11
- render(width: number): string[];
12
- handleInput?(data: string): void;
13
- invalidate(): void;
14
- }
15
- interface Focusable {
16
- focused: boolean;
17
- }
18
- type DoneFn = (result: ChainResult | undefined) => void;
19
- export declare class ChainEditorOverlay implements Component, Focusable {
20
- focused: boolean;
21
- private readonly theme;
22
- private readonly done;
23
- private readonly agentByName;
24
- private readonly availableAgents;
25
- private mode;
26
- private screen;
27
- private steps;
28
- private selectedStepIndex;
29
- private statusMessage;
30
- private readonly maxVisibleItems;
31
- private pickerIndex;
32
- private pickerFilter;
33
- private editBuffer;
34
- private editCursor;
35
- private previousTask;
36
- private disposed;
37
- constructor(theme: Theme, agents: AgentDefinition[], done: DoneFn, initialAgents?: string[]);
38
- handleInput(data: string): void;
39
- render(width: number): string[];
40
- invalidate(): void;
41
- dispose(): void;
42
- private buildInitialSteps;
43
- private handleComposeInput;
44
- private handlePickerInput;
45
- private handleEditInput;
46
- private getFilteredAgents;
47
- private renderComposeScreen;
48
- private renderPickerScreen;
49
- private contentLine;
50
- private getStepVisibleRange;
51
- private getPickerVisibleRange;
52
- private close;
53
- }
54
- export {};
55
- //# sourceMappingURL=chain-preview.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chain-preview.d.ts","sourceRoot":"","sources":["../src/chain-preview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AAE3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAGrD,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,YAAY,GAAG,UAAU,CAAC;IAChC,KAAK,EAAE,KAAK,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACb,CAAC,CAAC;CACH;AAED,UAAU,SAAS;IAClB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAChC,WAAW,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,UAAU,IAAI,IAAI,CAAC;CACnB;AAED,UAAU,SAAS;IAClB,OAAO,EAAE,OAAO,CAAC;CACjB;AAOD,KAAK,MAAM,GAAG,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,KAAK,IAAI,CAAC;AAmDxD,qBAAa,kBAAmB,YAAW,SAAS,EAAE,SAAS;IACvD,OAAO,UAAQ;IAEtB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+B;IAC3D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoB;IAEpD,OAAO,CAAC,IAAI,CAAsB;IAClC,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,aAAa,CAAM;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAK;IAErC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,YAAY,CAAM;IAE1B,OAAO,CAAC,QAAQ,CAAS;gBAGxB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,eAAe,EAAE,EACzB,IAAI,EAAE,MAAM,EACZ,aAAa,GAAE,MAAM,EAAO;IAS7B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgB/B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAa/B,UAAU,IAAI,IAAI;IAIlB,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,kBAAkB;IAkF1B,OAAO,CAAC,iBAAiB;IAyDzB,OAAO,CAAC,eAAe;IAgFvB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,mBAAmB;IA2G3B,OAAO,CAAC,kBAAkB;IA8E1B,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,KAAK;CAKb"}
@@ -1,472 +0,0 @@
1
- import { matchesKey } from '@mariozechner/pi-tui';
2
- import { truncateToWidth } from "./renderers.js";
3
- const ANSI_RE = /\x1b\[[0-9;]*m/g;
4
- function visibleWidth(text) {
5
- return text.replace(ANSI_RE, '').length;
6
- }
7
- function padRight(text, width) {
8
- if (width <= 0)
9
- return '';
10
- const truncated = truncateToWidth(text, width);
11
- const remaining = width - visibleWidth(truncated);
12
- return remaining > 0 ? truncated + ' '.repeat(remaining) : truncated;
13
- }
14
- function hLine(width) {
15
- return width > 0 ? '─'.repeat(width) : '';
16
- }
17
- function buildTopBorder(width, title) {
18
- if (width <= 0)
19
- return '';
20
- if (width === 1)
21
- return '╭';
22
- if (width === 2)
23
- return '╭╮';
24
- const inner = width - 2;
25
- const titleText = ` ${title} `;
26
- if (titleText.length >= inner) {
27
- return `╭${hLine(inner)}╮`;
28
- }
29
- const left = Math.floor((inner - titleText.length) / 2);
30
- const right = inner - titleText.length - left;
31
- return `╭${hLine(left)}${titleText}${hLine(right)}╮`;
32
- }
33
- function buildBottomBorder(width) {
34
- if (width <= 0)
35
- return '';
36
- if (width === 1)
37
- return '╰';
38
- if (width === 2)
39
- return '╰╯';
40
- return `╰${hLine(width - 2)}╯`;
41
- }
42
- function parsePrintableChar(data) {
43
- if (!data || data.length !== 1)
44
- return null;
45
- const code = data.charCodeAt(0);
46
- if (code < 32 || code === 127)
47
- return null;
48
- return data;
49
- }
50
- export class ChainEditorOverlay {
51
- focused = true;
52
- theme;
53
- done;
54
- agentByName;
55
- availableAgents;
56
- mode = 'sequential';
57
- screen = 'compose';
58
- steps;
59
- selectedStepIndex = 0;
60
- statusMessage = '';
61
- maxVisibleItems = 6;
62
- pickerIndex = 0;
63
- pickerFilter = '';
64
- editBuffer = '';
65
- editCursor = 0;
66
- previousTask = '';
67
- disposed = false;
68
- constructor(theme, agents, done, initialAgents = []) {
69
- this.theme = theme;
70
- this.done = done;
71
- this.availableAgents = [...agents];
72
- this.agentByName = new Map(agents.map((agent) => [agent.name, agent]));
73
- this.steps = this.buildInitialSteps(initialAgents);
74
- }
75
- handleInput(data) {
76
- if (this.disposed)
77
- return;
78
- if (this.screen === 'picker') {
79
- this.handlePickerInput(data);
80
- return;
81
- }
82
- if (this.screen === 'edit') {
83
- this.handleEditInput(data);
84
- return;
85
- }
86
- this.handleComposeInput(data);
87
- }
88
- render(width) {
89
- const safeWidth = Math.max(4, width);
90
- const termHeight = process.stdout.rows || 40;
91
- // Match overlay maxHeight of 95%, leave margin for overlay chrome
92
- const maxLines = Math.max(10, Math.floor(termHeight * 0.95) - 2);
93
- const lines = this.screen === 'picker'
94
- ? this.renderPickerScreen(safeWidth, maxLines)
95
- : this.renderComposeScreen(safeWidth, maxLines);
96
- return lines.map((line) => truncateToWidth(line, safeWidth));
97
- }
98
- invalidate() {
99
- // Stateless rendering; no cache invalidation required.
100
- }
101
- dispose() {
102
- this.disposed = true;
103
- }
104
- buildInitialSteps(initialAgents) {
105
- const names = initialAgents
106
- .map((name) => name.trim())
107
- .filter((name) => name.length > 0)
108
- .filter((name) => this.agentByName.has(name));
109
- return names.map((agent, index) => ({
110
- agent,
111
- task: index === 0 ? '' : '(from previous step)',
112
- }));
113
- }
114
- handleComposeInput(data) {
115
- if (matchesKey(data, 'escape')) {
116
- this.close(undefined);
117
- return;
118
- }
119
- if (matchesKey(data, 'up')) {
120
- if (this.steps.length > 0) {
121
- this.selectedStepIndex =
122
- (this.selectedStepIndex - 1 + this.steps.length) % this.steps.length;
123
- this.statusMessage = '';
124
- }
125
- this.invalidate();
126
- return;
127
- }
128
- if (matchesKey(data, 'down')) {
129
- if (this.steps.length > 0) {
130
- this.selectedStepIndex = (this.selectedStepIndex + 1) % this.steps.length;
131
- this.statusMessage = '';
132
- }
133
- this.invalidate();
134
- return;
135
- }
136
- if (matchesKey(data, 'a') || data.toLowerCase() === 'a') {
137
- this.screen = 'picker';
138
- this.pickerFilter = '';
139
- this.pickerIndex = 0;
140
- this.statusMessage = '';
141
- this.invalidate();
142
- return;
143
- }
144
- if (matchesKey(data, 'd') || matchesKey(data, 'delete') || data.toLowerCase() === 'd') {
145
- if (this.steps.length > 0) {
146
- this.steps.splice(this.selectedStepIndex, 1);
147
- if (this.selectedStepIndex >= this.steps.length) {
148
- this.selectedStepIndex = Math.max(0, this.steps.length - 1);
149
- }
150
- this.statusMessage = '';
151
- this.invalidate();
152
- }
153
- return;
154
- }
155
- if (matchesKey(data, 'e') || data.toLowerCase() === 'e') {
156
- const selected = this.steps[this.selectedStepIndex];
157
- if (!selected)
158
- return;
159
- this.previousTask = selected.task;
160
- this.editBuffer = selected.task;
161
- this.editCursor = this.editBuffer.length;
162
- this.screen = 'edit';
163
- this.statusMessage = '';
164
- this.invalidate();
165
- return;
166
- }
167
- if (matchesKey(data, 'p') || data.toLowerCase() === 'p') {
168
- this.mode = this.mode === 'sequential' ? 'parallel' : 'sequential';
169
- this.statusMessage = '';
170
- this.invalidate();
171
- return;
172
- }
173
- if (matchesKey(data, 'enter')) {
174
- if (this.steps.length < 2) {
175
- this.statusMessage = 'Need at least 2 steps to run.';
176
- this.invalidate();
177
- return;
178
- }
179
- this.close({
180
- mode: this.mode,
181
- steps: this.steps.map((step) => ({
182
- agent: step.agent,
183
- task: step.task,
184
- })),
185
- });
186
- }
187
- }
188
- handlePickerInput(data) {
189
- if (matchesKey(data, 'escape')) {
190
- this.screen = 'compose';
191
- this.invalidate();
192
- return;
193
- }
194
- const filtered = this.getFilteredAgents();
195
- if (matchesKey(data, 'up')) {
196
- if (filtered.length > 0) {
197
- this.pickerIndex = (this.pickerIndex - 1 + filtered.length) % filtered.length;
198
- }
199
- this.invalidate();
200
- return;
201
- }
202
- if (matchesKey(data, 'down')) {
203
- if (filtered.length > 0) {
204
- this.pickerIndex = (this.pickerIndex + 1) % filtered.length;
205
- }
206
- this.invalidate();
207
- return;
208
- }
209
- if (matchesKey(data, 'backspace')) {
210
- if (this.pickerFilter.length > 0) {
211
- this.pickerFilter = this.pickerFilter.slice(0, -1);
212
- this.pickerIndex = 0;
213
- this.invalidate();
214
- }
215
- return;
216
- }
217
- if (matchesKey(data, 'enter')) {
218
- const selected = filtered[this.pickerIndex];
219
- if (!selected)
220
- return;
221
- this.steps.push({
222
- agent: selected.name,
223
- task: this.steps.length === 0 ? '' : '(from previous step)',
224
- });
225
- this.selectedStepIndex = this.steps.length - 1;
226
- this.screen = 'compose';
227
- this.statusMessage = '';
228
- this.invalidate();
229
- return;
230
- }
231
- const char = parsePrintableChar(data);
232
- if (char) {
233
- this.pickerFilter += char;
234
- this.pickerIndex = 0;
235
- this.invalidate();
236
- }
237
- }
238
- handleEditInput(data) {
239
- const selected = this.steps[this.selectedStepIndex];
240
- if (!selected) {
241
- this.screen = 'compose';
242
- return;
243
- }
244
- if (matchesKey(data, 'escape')) {
245
- selected.task = this.previousTask;
246
- this.screen = 'compose';
247
- this.invalidate();
248
- return;
249
- }
250
- if (matchesKey(data, 'enter')) {
251
- selected.task = this.editBuffer;
252
- this.screen = 'compose';
253
- this.invalidate();
254
- return;
255
- }
256
- if (matchesKey(data, 'left')) {
257
- this.editCursor = Math.max(0, this.editCursor - 1);
258
- this.invalidate();
259
- return;
260
- }
261
- if (matchesKey(data, 'right')) {
262
- this.editCursor = Math.min(this.editBuffer.length, this.editCursor + 1);
263
- this.invalidate();
264
- return;
265
- }
266
- if (matchesKey(data, 'home')) {
267
- this.editCursor = 0;
268
- this.invalidate();
269
- return;
270
- }
271
- if (matchesKey(data, 'end')) {
272
- this.editCursor = this.editBuffer.length;
273
- this.invalidate();
274
- return;
275
- }
276
- if (matchesKey(data, 'backspace')) {
277
- if (this.editCursor > 0) {
278
- this.editBuffer =
279
- this.editBuffer.slice(0, this.editCursor - 1) +
280
- this.editBuffer.slice(this.editCursor);
281
- this.editCursor -= 1;
282
- selected.task = this.editBuffer;
283
- this.invalidate();
284
- }
285
- return;
286
- }
287
- if (matchesKey(data, 'delete')) {
288
- if (this.editCursor < this.editBuffer.length) {
289
- this.editBuffer =
290
- this.editBuffer.slice(0, this.editCursor) +
291
- this.editBuffer.slice(this.editCursor + 1);
292
- selected.task = this.editBuffer;
293
- this.invalidate();
294
- }
295
- return;
296
- }
297
- const char = parsePrintableChar(data);
298
- if (char) {
299
- this.editBuffer =
300
- this.editBuffer.slice(0, this.editCursor) +
301
- char +
302
- this.editBuffer.slice(this.editCursor);
303
- this.editCursor += char.length;
304
- selected.task = this.editBuffer;
305
- this.invalidate();
306
- }
307
- }
308
- getFilteredAgents() {
309
- const query = this.pickerFilter.trim().toLowerCase();
310
- if (!query)
311
- return this.availableAgents;
312
- return this.availableAgents.filter((agent) => {
313
- const haystack = `${agent.name} ${agent.description}`.toLowerCase();
314
- return haystack.includes(query);
315
- });
316
- }
317
- renderComposeScreen(width, maxLines) {
318
- const inner = Math.max(0, width - 2);
319
- // Fixed header (always rendered)
320
- const chainSummary = this.steps.length > 0 ? this.steps.map((step) => step.agent).join(' → ') : '(empty)';
321
- const header = [
322
- buildTopBorder(width, 'Chain Editor'),
323
- this.contentLine('', inner),
324
- this.contentLine(this.theme.fg('text', ` Chain: ${chainSummary}`), inner),
325
- this.contentLine(this.theme.fg('muted', ` Mode: ${this.mode}`), inner),
326
- this.contentLine('', inner),
327
- ];
328
- // Fixed footer (always rendered)
329
- const hintRun = this.steps.length >= 2 ? '[Enter] Run' : '[Enter] Run (needs 2+ steps)';
330
- const footer = [
331
- this.contentLine(this.theme.fg('dim', ` [↑↓] Navigate [e] Edit task [d] Remove`), inner),
332
- this.contentLine(this.theme.fg('dim', ` [a] Add step [p] Toggle mode ${hintRun} [Esc] Cancel`), inner),
333
- buildBottomBorder(width),
334
- ];
335
- // Available lines for scrollable content area
336
- const contentBudget = Math.max(4, maxLines - header.length - footer.length);
337
- if (this.steps.length === 0) {
338
- const content = [
339
- this.contentLine(this.theme.fg('muted', ' No steps yet. Press [a] to add an agent step.'), inner),
340
- this.contentLine('', inner),
341
- ];
342
- return [...header, ...content, ...footer];
343
- }
344
- // Each step takes 3 lines (name+model, task, empty) or 4 lines (with edit hint)
345
- const LINES_PER_STEP = 3;
346
- // Reserve 2 lines for possible scroll indicators + status message
347
- const scrollReserve = this.statusMessage ? 3 : 2;
348
- const maxSteps = Math.max(1, Math.floor((contentBudget - scrollReserve) / LINES_PER_STEP));
349
- const windowSize = Math.min(maxSteps, this.steps.length);
350
- const [startIdx, endIdx] = this.getStepVisibleRange(windowSize);
351
- const content = [];
352
- if (startIdx > 0) {
353
- content.push(this.contentLine(this.theme.fg('dim', ` ↑ ${startIdx} more above`), inner));
354
- }
355
- for (let i = startIdx; i < endIdx; i++) {
356
- const step = this.steps[i];
357
- const selected = i === this.selectedStepIndex;
358
- const marker = selected ? this.theme.fg('accent', '►') : ' ';
359
- const agent = this.agentByName.get(step.agent);
360
- const model = agent?.model ? this.theme.fg('dim', ` [${agent.model}]`) : '';
361
- content.push(this.contentLine(`${marker} ${this.theme.bold(`Step ${i + 1}: ${step.agent}`)}${model}`, inner));
362
- if (this.screen === 'edit' && selected) {
363
- const displayTask = this.editBuffer.slice(0, this.editCursor) +
364
- this.theme.fg('accent', '│') +
365
- this.editBuffer.slice(this.editCursor);
366
- content.push(this.contentLine(this.theme.fg('text', ` task: ${displayTask}`), inner));
367
- content.push(this.contentLine(this.theme.fg('dim', ' editing: [Enter] Save [Esc] Cancel [←→] Move cursor'), inner));
368
- }
369
- else {
370
- const task = step.task || this.theme.fg('muted', '(empty)');
371
- content.push(this.contentLine(this.theme.fg('text', ` task: ${task}`), inner));
372
- }
373
- content.push(this.contentLine('', inner));
374
- }
375
- if (endIdx < this.steps.length) {
376
- content.push(this.contentLine(this.theme.fg('dim', ` ↓ ${this.steps.length - endIdx} more below`), inner));
377
- }
378
- if (this.statusMessage) {
379
- content.push(this.contentLine(this.theme.fg('warning', ` ${this.statusMessage}`), inner));
380
- }
381
- return [...header, ...content, ...footer];
382
- }
383
- renderPickerScreen(width, maxLines) {
384
- const inner = Math.max(0, width - 2);
385
- const filtered = this.getFilteredAgents();
386
- if (this.pickerIndex >= filtered.length) {
387
- this.pickerIndex = Math.max(0, filtered.length - 1);
388
- }
389
- // Fixed header (always rendered)
390
- const header = [
391
- buildTopBorder(width, 'Add Agent Step'),
392
- this.contentLine('', inner),
393
- this.contentLine(this.theme.fg('text', ` Filter: ${this.pickerFilter || '(type to filter)'}`), inner),
394
- this.contentLine('', inner),
395
- ];
396
- // Fixed footer (always rendered)
397
- const footer = [
398
- this.contentLine(this.theme.fg('dim', ' [↑↓] Navigate [Enter] Select [Esc] Back [Backspace] Filter'), inner),
399
- buildBottomBorder(width),
400
- ];
401
- // Available lines for scrollable content area
402
- const contentBudget = Math.max(4, maxLines - header.length - footer.length);
403
- if (filtered.length === 0) {
404
- const content = [
405
- this.contentLine(this.theme.fg('muted', ' No agents match filter.'), inner),
406
- this.contentLine('', inner),
407
- ];
408
- return [...header, ...content, ...footer];
409
- }
410
- // Each agent takes 3 lines: name, description, empty line
411
- const LINES_PER_AGENT = 3;
412
- // Reserve 2 lines for possible scroll indicators
413
- const scrollReserve = 2;
414
- const maxAgents = Math.max(1, Math.floor((contentBudget - scrollReserve) / LINES_PER_AGENT));
415
- const windowSize = Math.min(maxAgents, filtered.length);
416
- const [startIdx, endIdx] = this.getPickerVisibleRange(filtered.length, windowSize);
417
- const content = [];
418
- if (startIdx > 0) {
419
- content.push(this.contentLine(this.theme.fg('dim', ` ↑ ${startIdx} more above`), inner));
420
- }
421
- for (let i = startIdx; i < endIdx; i++) {
422
- const agent = filtered[i];
423
- const selected = i === this.pickerIndex;
424
- const marker = selected ? this.theme.fg('accent', '► ') : ' ';
425
- const model = agent.model ? this.theme.fg('dim', ` [${agent.model}]`) : '';
426
- content.push(this.contentLine(`${marker}${this.theme.bold(agent.name)}${model}`, inner));
427
- content.push(this.contentLine(this.theme.fg('muted', ` ${agent.description || ''}`), inner));
428
- content.push(this.contentLine('', inner));
429
- }
430
- if (endIdx < filtered.length) {
431
- content.push(this.contentLine(this.theme.fg('dim', ` ↓ ${filtered.length - endIdx} more below`), inner));
432
- }
433
- return [...header, ...content, ...footer];
434
- }
435
- contentLine(content, innerWidth) {
436
- return `│${padRight(content, innerWidth)}│`;
437
- }
438
- getStepVisibleRange(windowSize) {
439
- const count = this.steps.length;
440
- const ws = windowSize ?? this.maxVisibleItems;
441
- if (count <= ws)
442
- return [0, count];
443
- const half = Math.floor(ws / 2);
444
- let start = Math.max(0, this.selectedStepIndex - half);
445
- let end = start + ws;
446
- if (end > count) {
447
- end = count;
448
- start = Math.max(0, end - ws);
449
- }
450
- return [start, end];
451
- }
452
- getPickerVisibleRange(count, windowSize) {
453
- const ws = windowSize ?? this.maxVisibleItems;
454
- if (count <= ws)
455
- return [0, count];
456
- const half = Math.floor(ws / 2);
457
- let start = Math.max(0, this.pickerIndex - half);
458
- let end = start + ws;
459
- if (end > count) {
460
- end = count;
461
- start = Math.max(0, end - ws);
462
- }
463
- return [start, end];
464
- }
465
- close(result) {
466
- if (this.disposed)
467
- return;
468
- this.disposed = true;
469
- this.done(result);
470
- }
471
- }
472
- //# sourceMappingURL=chain-preview.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chain-preview.js","sourceRoot":"","sources":["../src/chain-preview.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts DELETED
@@ -1,44 +0,0 @@
1
- import type { HubClientMessage, HubRequest, HubResponse, InitMessage } from './protocol.ts';
2
- export type ConnectionState = 'connected' | 'disconnected' | 'reconnecting' | 'closed';
3
- export declare class HubClient {
4
- private ws;
5
- private reconnectAttempts;
6
- private reconnectTimer;
7
- private intentionallyClosed;
8
- private lastConnectUrl;
9
- private queue;
10
- private connectionStateListeners;
11
- private pending;
12
- connectionState: ConnectionState;
13
- onConnectionStateChange?: (state: ConnectionState) => void;
14
- onBeforeReconnect?: () => Promise<void>;
15
- onInitMessage?: (initMessage: InitMessage) => void;
16
- /** Called when an unsolicited server message arrives (broadcast, presence, hydration). */
17
- onServerMessage?: (message: Record<string, unknown>) => void;
18
- /** API key for Hub authentication (sent as x-agentuity-auth-api-key header) */
19
- apiKey: string | null;
20
- private setConnectionState;
21
- private buildWebSocketUrl;
22
- private enqueue;
23
- private sendRequestNow;
24
- private sendFireAndForgetNow;
25
- private flushQueue;
26
- private handleUnexpectedClose;
27
- private clearReconnectTimer;
28
- private rejectQueuedRequests;
29
- private startReconnectLoop;
30
- private connectInternal;
31
- connect(url: string, opts?: {
32
- sessionId?: string;
33
- role?: string;
34
- origin?: string;
35
- }): Promise<InitMessage>;
36
- private waitForConnection;
37
- nextId(): string;
38
- send(request: HubRequest): Promise<HubResponse>;
39
- sendNoWait(message: HubClientMessage | Record<string, unknown>): void;
40
- waitUntilConnected(timeoutMs?: number): Promise<void>;
41
- close(): void;
42
- get connected(): boolean;
43
- }
44
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AA0B5F,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,cAAc,GAAG,cAAc,GAAG,QAAQ,CAAC;AAmBvF,qBAAa,SAAS;IACrB,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,wBAAwB,CAA+C;IAC/E,OAAO,CAAC,OAAO,CAOX;IAEG,eAAe,EAAE,eAAe,CAAY;IAC5C,uBAAuB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC3D,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,aAAa,CAAC,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1D,0FAA0F;IACnF,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAEpE,+EAA+E;IAExE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEpC,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,OAAO;IAef,OAAO,CAAC,cAAc;IAuBtB,OAAO,CAAC,oBAAoB;YAQd,UAAU;IAyBxB,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,kBAAkB;YA+DZ,eAAe;IAuHvB,OAAO,CACZ,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3D,OAAO,CAAC,WAAW,CAAC;IA6BvB,OAAO,CAAC,iBAAiB;IA4BzB,MAAM,IAAI,MAAM;IAIV,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAiCrD,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAe/D,kBAAkB,CAAC,SAAS,SAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvE,KAAK,IAAI,IAAI;IA6Bb,IAAI,SAAS,IAAI,OAAO,CAEvB;CACD"}