@agi-fans/dsh-tui 0.21.0 → 0.22.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 (243) hide show
  1. package/lib/CHANGELOG.md +158 -1
  2. package/lib/chrome/box.d.ts +47 -16
  3. package/lib/chrome/box.js +172 -130
  4. package/lib/chrome/box.js.map +1 -1
  5. package/lib/chrome/code-highlight.d.ts +15 -0
  6. package/lib/chrome/code-highlight.js +60 -4
  7. package/lib/chrome/code-highlight.js.map +1 -1
  8. package/lib/chrome/command-output.d.ts +29 -2
  9. package/lib/chrome/command-output.js +100 -4
  10. package/lib/chrome/command-output.js.map +1 -1
  11. package/lib/chrome/main-screen-renderer.d.ts +16 -0
  12. package/lib/chrome/main-screen-renderer.js +53 -5
  13. package/lib/chrome/main-screen-renderer.js.map +1 -1
  14. package/lib/chrome/markdown.js +30 -10
  15. package/lib/chrome/markdown.js.map +1 -1
  16. package/lib/chrome/relative-time.d.ts +17 -0
  17. package/lib/chrome/relative-time.js +36 -0
  18. package/lib/chrome/relative-time.js.map +1 -1
  19. package/lib/chrome/secret-mask.d.ts +35 -0
  20. package/lib/chrome/secret-mask.js +180 -0
  21. package/lib/chrome/secret-mask.js.map +1 -0
  22. package/lib/chrome/status-config.d.ts +161 -51
  23. package/lib/chrome/status-config.js +237 -126
  24. package/lib/chrome/status-config.js.map +1 -1
  25. package/lib/chrome/status-line.d.ts +3 -2
  26. package/lib/chrome/status-line.js +105 -63
  27. package/lib/chrome/status-line.js.map +1 -1
  28. package/lib/chrome/terminal-colors.d.ts +85 -0
  29. package/lib/chrome/terminal-colors.js +230 -0
  30. package/lib/chrome/terminal-colors.js.map +1 -0
  31. package/lib/chrome/terminal-images.d.ts +9 -1
  32. package/lib/chrome/terminal-images.js +27 -4
  33. package/lib/chrome/terminal-images.js.map +1 -1
  34. package/lib/chrome/theme.d.ts +32 -9
  35. package/lib/chrome/theme.js +595 -498
  36. package/lib/chrome/theme.js.map +1 -1
  37. package/lib/chrome/tool-renderers.js +69 -13
  38. package/lib/chrome/tool-renderers.js.map +1 -1
  39. package/lib/chrome/tools-list.d.ts +1 -4
  40. package/lib/chrome/tools-list.js +1 -41
  41. package/lib/chrome/tools-list.js.map +1 -1
  42. package/lib/chrome/welcome-tips.d.ts +20 -8
  43. package/lib/chrome/welcome-tips.js +22 -42
  44. package/lib/chrome/welcome-tips.js.map +1 -1
  45. package/lib/commands/auth-ids.d.ts +25 -0
  46. package/lib/commands/auth-ids.js +27 -0
  47. package/lib/commands/auth-ids.js.map +1 -0
  48. package/lib/commands/auth-input.d.ts +34 -0
  49. package/lib/commands/auth-input.js +96 -0
  50. package/lib/commands/auth-input.js.map +1 -0
  51. package/lib/commands/auth-providers.d.ts +39 -0
  52. package/lib/commands/auth-providers.js +125 -0
  53. package/lib/commands/auth-providers.js.map +1 -0
  54. package/lib/commands/auth.d.ts +12 -20
  55. package/lib/commands/auth.js +42 -229
  56. package/lib/commands/auth.js.map +1 -1
  57. package/lib/commands/btw.d.ts +13 -1
  58. package/lib/commands/btw.js +37 -104
  59. package/lib/commands/btw.js.map +1 -1
  60. package/lib/commands/diff.js +1 -96
  61. package/lib/commands/diff.js.map +1 -1
  62. package/lib/commands/export.d.ts +1 -1
  63. package/lib/commands/export.js +3 -27
  64. package/lib/commands/export.js.map +1 -1
  65. package/lib/commands/files.d.ts +17 -1
  66. package/lib/commands/files.js +67 -107
  67. package/lib/commands/files.js.map +1 -1
  68. package/lib/commands/jobs.d.ts +19 -4
  69. package/lib/commands/jobs.js +50 -7
  70. package/lib/commands/jobs.js.map +1 -1
  71. package/lib/commands/model.js +108 -76
  72. package/lib/commands/model.js.map +1 -1
  73. package/lib/commands/permission.js +15 -16
  74. package/lib/commands/permission.js.map +1 -1
  75. package/lib/commands/plugins.js +133 -16
  76. package/lib/commands/plugins.js.map +1 -1
  77. package/lib/commands/schedule.d.ts +10 -0
  78. package/lib/commands/schedule.js +45 -14
  79. package/lib/commands/schedule.js.map +1 -1
  80. package/lib/commands/session-configuration.js +2 -10
  81. package/lib/commands/session-configuration.js.map +1 -1
  82. package/lib/commands/session.js +14 -38
  83. package/lib/commands/session.js.map +1 -1
  84. package/lib/commands/terminal.d.ts +14 -8
  85. package/lib/commands/terminal.js +19 -178
  86. package/lib/commands/terminal.js.map +1 -1
  87. package/lib/commands/trajectory.js +4 -1
  88. package/lib/commands/trajectory.js.map +1 -1
  89. package/lib/definition.d.ts +122 -22
  90. package/lib/definition.js.map +1 -1
  91. package/lib/index.d.ts +1 -0
  92. package/lib/index.js +1 -0
  93. package/lib/index.js.map +1 -1
  94. package/lib/input/actions.d.ts +51 -0
  95. package/lib/input/actions.js +120 -0
  96. package/lib/input/actions.js.map +1 -0
  97. package/lib/input/editor.d.ts +0 -10
  98. package/lib/input/editor.js +11 -9
  99. package/lib/input/editor.js.map +1 -1
  100. package/lib/input/image-paste.d.ts +19 -1
  101. package/lib/input/image-paste.js +82 -1
  102. package/lib/input/image-paste.js.map +1 -1
  103. package/lib/input/keybindings-config.d.ts +12 -5
  104. package/lib/input/keybindings-config.js +30 -57
  105. package/lib/input/keybindings-config.js.map +1 -1
  106. package/lib/input/keys.d.ts +16 -0
  107. package/lib/input/keys.js +38 -3
  108. package/lib/input/keys.js.map +1 -1
  109. package/lib/input/wheel-scroll.d.ts +46 -0
  110. package/lib/input/wheel-scroll.js +69 -0
  111. package/lib/input/wheel-scroll.js.map +1 -0
  112. package/lib/prompt-intents.d.ts +182 -0
  113. package/lib/prompt-intents.js +127 -0
  114. package/lib/prompt-intents.js.map +1 -0
  115. package/lib/runtime/cancellable.d.ts +75 -0
  116. package/lib/runtime/cancellable.js +76 -0
  117. package/lib/runtime/cancellable.js.map +1 -0
  118. package/lib/runtime/composer-images.js +5 -4
  119. package/lib/runtime/composer-images.js.map +1 -1
  120. package/lib/runtime/composer-shell.d.ts +17 -2
  121. package/lib/runtime/composer-shell.js +109 -43
  122. package/lib/runtime/composer-shell.js.map +1 -1
  123. package/lib/runtime/file-recovery-review.d.ts +0 -1
  124. package/lib/runtime/file-recovery-review.js +29 -30
  125. package/lib/runtime/file-recovery-review.js.map +1 -1
  126. package/lib/runtime/file-recovery-store.js +5 -1
  127. package/lib/runtime/file-recovery-store.js.map +1 -1
  128. package/lib/runtime/file-review.js +1 -1
  129. package/lib/runtime/file-review.js.map +1 -1
  130. package/lib/runtime/hook-settings.d.ts +2 -2
  131. package/lib/runtime/plain-tui.d.ts +2 -0
  132. package/lib/runtime/plain-tui.js +7 -1
  133. package/lib/runtime/plain-tui.js.map +1 -1
  134. package/lib/runtime/plugin-settings.d.ts +1 -1
  135. package/lib/runtime/plugin-settings.js +10 -8
  136. package/lib/runtime/plugin-settings.js.map +1 -1
  137. package/lib/runtime/provider-local.d.ts +57 -15
  138. package/lib/runtime/provider-local.js +1112 -471
  139. package/lib/runtime/provider-local.js.map +1 -1
  140. package/lib/runtime/runner.js +5 -11
  141. package/lib/runtime/runner.js.map +1 -1
  142. package/lib/runtime/settings-preferences.js +1 -1
  143. package/lib/runtime/settings-preferences.js.map +1 -1
  144. package/lib/runtime/startup-notices.js +2 -0
  145. package/lib/runtime/startup-notices.js.map +1 -1
  146. package/lib/runtime/terminal-modes.d.ts +47 -0
  147. package/lib/runtime/terminal-modes.js +86 -0
  148. package/lib/runtime/terminal-modes.js.map +1 -0
  149. package/lib/runtime/terminal-notifications.d.ts +3 -5
  150. package/lib/runtime/terminal-notifications.js +4 -8
  151. package/lib/runtime/terminal-notifications.js.map +1 -1
  152. package/lib/runtime/terminal-probe.d.ts +36 -0
  153. package/lib/runtime/terminal-probe.js +37 -0
  154. package/lib/runtime/terminal-probe.js.map +1 -0
  155. package/lib/runtime/terminal-session.d.ts +57 -0
  156. package/lib/runtime/terminal-session.js +164 -0
  157. package/lib/runtime/terminal-session.js.map +1 -0
  158. package/lib/session/interaction-adapter.js +7 -8
  159. package/lib/session/interaction-adapter.js.map +1 -1
  160. package/lib/session/message-queue.js +1 -1
  161. package/lib/session/message-queue.js.map +1 -1
  162. package/lib/session/package-metadata.d.ts +8 -0
  163. package/lib/session/package-metadata.js +8 -0
  164. package/lib/session/package-metadata.js.map +1 -1
  165. package/lib/session/session-controller.d.ts +10 -11
  166. package/lib/session/session-controller.js +95 -13
  167. package/lib/session/session-controller.js.map +1 -1
  168. package/lib/session/session-tree.d.ts +2 -0
  169. package/lib/session/session-tree.js +2 -0
  170. package/lib/session/session-tree.js.map +1 -1
  171. package/lib/session/tui-settings.d.ts +40 -11
  172. package/lib/session/tui-settings.js +73 -34
  173. package/lib/session/tui-settings.js.map +1 -1
  174. package/lib/views/autocomplete.d.ts +18 -2
  175. package/lib/views/autocomplete.js +51 -38
  176. package/lib/views/autocomplete.js.map +1 -1
  177. package/lib/views/copy-targets.d.ts +12 -13
  178. package/lib/views/copy-targets.js +16 -46
  179. package/lib/views/copy-targets.js.map +1 -1
  180. package/lib/views/document-reader.js +18 -5
  181. package/lib/views/document-reader.js.map +1 -1
  182. package/lib/views/event-views.js +42 -6
  183. package/lib/views/event-views.js.map +1 -1
  184. package/lib/views/history-search.js +15 -21
  185. package/lib/views/history-search.js.map +1 -1
  186. package/lib/views/hotkeys.d.ts +7 -1
  187. package/lib/views/hotkeys.js +49 -25
  188. package/lib/views/hotkeys.js.map +1 -1
  189. package/lib/views/list-navigation.d.ts +62 -0
  190. package/lib/views/list-navigation.js +73 -0
  191. package/lib/views/list-navigation.js.map +1 -0
  192. package/lib/views/list-view.d.ts +99 -0
  193. package/lib/views/list-view.js +165 -0
  194. package/lib/views/list-view.js.map +1 -0
  195. package/lib/views/prompt-selector.d.ts +31 -3
  196. package/lib/views/prompt-selector.js +249 -125
  197. package/lib/views/prompt-selector.js.map +1 -1
  198. package/lib/views/session-files.d.ts +1 -2
  199. package/lib/views/session-files.js +1 -11
  200. package/lib/views/session-files.js.map +1 -1
  201. package/lib/views/settings-list.d.ts +10 -8
  202. package/lib/views/settings-list.js +116 -283
  203. package/lib/views/settings-list.js.map +1 -1
  204. package/lib/views/trajectory-timeline.d.ts +72 -0
  205. package/lib/views/trajectory-timeline.js +133 -0
  206. package/lib/views/trajectory-timeline.js.map +1 -0
  207. package/lib/views/trajectory.d.ts +15 -4
  208. package/lib/views/trajectory.js +557 -123
  209. package/lib/views/trajectory.js.map +1 -1
  210. package/lib/views/transcript-render.d.ts +95 -25
  211. package/lib/views/transcript-render.js +501 -167
  212. package/lib/views/transcript-render.js.map +1 -1
  213. package/lib/views/transcript-search.d.ts +39 -6
  214. package/lib/views/transcript-search.js +46 -11
  215. package/lib/views/transcript-search.js.map +1 -1
  216. package/lib/views/transcript-types.d.ts +63 -5
  217. package/lib/views/transcript-types.js +23 -11
  218. package/lib/views/transcript-types.js.map +1 -1
  219. package/package.json +67 -86
  220. package/lib/commands/advisor.d.ts +0 -15
  221. package/lib/commands/advisor.js +0 -200
  222. package/lib/commands/advisor.js.map +0 -1
  223. package/lib/commands/loop.d.ts +0 -52
  224. package/lib/commands/loop.js +0 -307
  225. package/lib/commands/loop.js.map +0 -1
  226. package/lib/commands/rate.d.ts +0 -33
  227. package/lib/commands/rate.js +0 -212
  228. package/lib/commands/rate.js.map +0 -1
  229. package/lib/commands/steer.d.ts +0 -5
  230. package/lib/commands/steer.js +0 -24
  231. package/lib/commands/steer.js.map +0 -1
  232. package/lib/commands/worktree.d.ts +0 -5
  233. package/lib/commands/worktree.js +0 -103
  234. package/lib/commands/worktree.js.map +0 -1
  235. package/lib/runtime/terminal-reader.d.ts +0 -11
  236. package/lib/runtime/terminal-reader.js +0 -87
  237. package/lib/runtime/terminal-reader.js.map +0 -1
  238. package/lib/views/agent-hub.d.ts +0 -32
  239. package/lib/views/agent-hub.js +0 -209
  240. package/lib/views/agent-hub.js.map +0 -1
  241. package/lib/views/copy-selector.d.ts +0 -54
  242. package/lib/views/copy-selector.js +0 -170
  243. package/lib/views/copy-selector.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"rate.js","sourceRoot":"","sources":["../../src/commands/rate.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- /** Steering command registered through dsh-commands. */
2
- import type { Context } from '@deepseek-ai/cordis';
3
- export declare const name = "omdsh-command-steer";
4
- export declare const inject: string[];
5
- export declare function apply(ctx: Context): void;
@@ -1,24 +0,0 @@
1
- /** Steering command registered through dsh-commands. */
2
- import { steerAgent } from "../session/steering.js";
3
- import { registerCommands } from "./registration.js";
4
- export const name = 'omdsh-command-steer';
5
- export const inject = ['commands'];
6
- function steer(invocation) {
7
- const input = invocation.rawInput.trim();
8
- if (input === '')
9
- return { kind: 'error', text: 'Usage: /steer <message>' };
10
- if (invocation.agent.status !== 'running') {
11
- return {
12
- kind: 'error',
13
- text: 'Steering is only available during an active turn. Send a normal message to start the next turn.',
14
- };
15
- }
16
- steerAgent(invocation.agent, input);
17
- return { kind: 'success', text: "Guidance queued for the current turn's next model step." };
18
- }
19
- export function apply(ctx) {
20
- registerCommands(ctx, [
21
- { name: 'steer', description: 'Guide the active turn before its next model step', input: { hint: '<message>' }, handler: steer },
22
- ], 'omdsh steering commands');
23
- }
24
- //# sourceMappingURL=steer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"steer.js","sourceRoot":"","sources":["../../src/commands/steer.ts"],"names":[],"mappings":"AAAA,wDAAwD;AAIxD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,CAAC,MAAM,IAAI,GAAG,qBAAqB,CAAA;AACzC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,UAAU,CAAC,CAAA;AAElC,SAAS,KAAK,CAAC,UAA6B;IAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;IACxC,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAA;IAC3E,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO;YACL,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,iGAAiG;SACxG,CAAA;IACH,CAAC;IACD,UAAU,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IACnC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,yDAAyD,EAAE,CAAA;AAC7F,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,gBAAgB,CAAC,GAAG,EAAE;QACpB,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,kDAAkD,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;KACjI,EAAE,yBAAyB,CAAC,CAAA;AAC/B,CAAC"}
@@ -1,5 +0,0 @@
1
- /** Human navigation and optional creation of retained Git worktrees. */
2
- import type { Context } from '@deepseek-ai/cordis';
3
- export declare const name = "omdsh-command-worktree";
4
- export declare const inject: string[];
5
- export declare function apply(ctx: Context): void;
@@ -1,103 +0,0 @@
1
- import { registerCommands } from "./registration.js";
2
- import { currentWorkingDirectory } from "../session/working-directory.js";
3
- import { listWorktrees } from "../session/worktrees.js";
4
- export const name = 'omdsh-command-worktree';
5
- export const inject = ['commands', 'tui', 'workingDirectory', 'subprocess', 'sandbox', 'sandboxPolicy'];
6
- async function create(ctx, invocation, signal) {
7
- const service = ctx.get('worktrees');
8
- if (service === undefined)
9
- return;
10
- const name = await ctx.tui.prompt({ title: 'Create worktree', question: 'New branch name', allowCustom: true, signal, notify: false });
11
- if (name === null || signal.aborted)
12
- return;
13
- const from = await ctx.tui.prompt({ title: 'Create worktree', question: 'Local base commit, branch or tag', initialInput: 'HEAD', allowCustom: true, signal, notify: false });
14
- if (from === null || signal.aborted)
15
- return;
16
- const confirm = await ctx.tui.prompt({ title: 'Create worktree', question: `${name.trim() || 'Generated name'} · ${from.trim() || 'HEAD'}`,
17
- detail: 'Creates a new branch and checkout, then enters it. Uncommitted files stay here. Leaving retains the checkout and branch. Current Access applies; dependencies are not installed.',
18
- options: [{ label: 'Create and enter', value: 'create' }], allowCustom: false, signal, notify: false });
19
- if (confirm !== 'create' || signal.aborted)
20
- return;
21
- if (invocation.agent.status !== 'idle')
22
- throw new Error('Finish or interrupt the active turn before creating a worktree.');
23
- const cancellation = new AbortController(), finished = new AbortController();
24
- const pending = ctx.tui.prompt({ title: 'Creating worktree', question: name.trim() || 'New checkout',
25
- detail: 'Enter or Esc cancels. Partial files or branches may remain if creation fails or is cancelled.',
26
- options: [{ label: 'Cancel', value: 'cancel' }], allowCustom: false, notify: false,
27
- signal: AbortSignal.any([signal, finished.signal]) }).then(() => { if (!finished.signal.aborted)
28
- cancellation.abort(new Error('Worktree creation cancelled.')); }, () => { cancellation.abort(); });
29
- try {
30
- const result = await service.create(invocation.agent, { ...(name.trim() === '' ? {} : { name: name.trim() }), from: from.trim() || 'HEAD' }, AbortSignal.any([signal, cancellation.signal]));
31
- ctx.tui.notice(`Entered ${result.branch} · ${result.path}`);
32
- }
33
- finally {
34
- finished.abort();
35
- await pending;
36
- }
37
- }
38
- async function manage(ctx, invocation, signal) {
39
- const argument = invocation.rawInput.trim();
40
- if (argument !== '' && argument !== 'return')
41
- return { kind: 'error', text: 'Usage: /worktree [return]' };
42
- if (invocation.agent.status !== 'idle')
43
- return { kind: 'error', text: 'Finish or interrupt the active turn before changing worktrees.' };
44
- const original = invocation.agent.session.header.cwd ?? ctx.workingDirectory.defaultDirectory;
45
- if (argument === 'return') {
46
- const cwd = await ctx.workingDirectory.set(invocation.agent, original, signal);
47
- return { kind: 'success', text: `Returned to ${cwd}. Worktrees and branches are retained.` };
48
- }
49
- while (!signal.aborted) {
50
- const cwd = currentWorkingDirectory(ctx, invocation.agent.session);
51
- const worktrees = await listWorktrees(ctx, invocation.agent, signal);
52
- if (ctx.tui.interactive !== true)
53
- return { kind: 'success', text: worktrees.map(row => `${row.path === cwd ? '* ' : ''}${row.branch ?? 'detached'} · ${row.path}`).join('\n') };
54
- const selected = await ctx.tui.prompt({ title: 'Worktrees', question: cwd, presentation: 'fullscreen-list', optionLayout: 'compact', filterable: true, allowCustom: false, signal, notify: false,
55
- detail: 'Switching keeps this conversation and current Access. Existing shells keep their directories. Worktrees and branches are retained.',
56
- options: [
57
- ...(ctx.get('worktrees') === undefined ? [{ label: 'Enable worktree creation', value: 'enable', description: 'Uses the shipped Git Worktrees integration; changes this profile' }] : [{ label: 'Create worktree', value: 'create' }]),
58
- ...(cwd === original ? [] : [{ label: 'Return to session directory', value: 'return', description: original }]),
59
- ...worktrees.filter(row => !row.prunable).map((row, index) => ({ label: row.branch ?? 'Detached HEAD', value: `enter:${index}`, description: `${row.path}${row.path === cwd ? ' · current' : ''}${row.locked ? ' · locked' : ''}` })),
60
- ] });
61
- if (selected === null || signal.aborted)
62
- break;
63
- if (selected === 'enable') {
64
- const manager = ctx.get('pluginManager');
65
- if (manager === undefined)
66
- return { kind: 'error', text: 'Worktree creation cannot be enabled in this host.' };
67
- const result = await manager.setBundleEnabled('@deepseek-ai/dsh-experimental-tool-worktree', true);
68
- signal.throwIfAborted();
69
- if (result.error !== undefined || result.application === 'failed')
70
- return { kind: 'error', text: result.error?.diagnostic ?? result.error?.code ?? 'Could not enable worktree creation.' };
71
- if (result.application !== 'applied' || ctx.get('worktrees') === undefined)
72
- return { kind: 'success', text: `Worktree creation: ${result.application}. Restart omdsh if the integration is not available yet.` };
73
- ctx.tui.notice('Worktree creation enabled. Choose Create worktree to create a checkout.');
74
- continue;
75
- }
76
- if (selected === 'create') {
77
- await create(ctx, invocation, signal);
78
- continue;
79
- }
80
- const target = selected === 'return' ? original : worktrees.filter(row => !row.prunable)[Number(selected.slice(6))]?.path;
81
- if (target === undefined || selected !== 'return' && !selected.startsWith('enter:'))
82
- continue;
83
- if (invocation.agent.status !== 'idle')
84
- return { kind: 'error', text: 'Finish or interrupt the active turn before changing worktrees.' };
85
- const entered = await ctx.workingDirectory.set(invocation.agent, target, signal);
86
- ctx.tui.notice(`Current directory: ${entered}`);
87
- }
88
- return { kind: 'success' };
89
- }
90
- export function apply(ctx) {
91
- const closing = new AbortController();
92
- registerCommands(ctx, [{ name: 'worktree', description: 'Create or switch Git worktrees, or return to the session directory', input: { hint: '[return]' }, handler: async (invocation) => {
93
- const signal = AbortSignal.any([invocation.signal, closing.signal]);
94
- try {
95
- return await manage(ctx, invocation, signal);
96
- }
97
- catch (error) {
98
- return { kind: 'error', text: signal.aborted ? 'Worktree operation cancelled.' : error instanceof Error ? error.message : String(error) };
99
- }
100
- } }], 'omdsh worktree commands');
101
- ctx.effect(() => () => { closing.abort(); });
102
- }
103
- //# sourceMappingURL=worktree.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/commands/worktree.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- /** Bounded, paused snapshots over the Harness's newest-relative scrollback pages. */
2
- import type { TerminalReadRequest, TerminalReadResult } from '@deepseek-ai/dsh-terminal';
3
- import type { TuiDocumentSource } from '../definition.ts';
4
- export declare class TerminalReader {
5
- #private;
6
- constructor(read: (request: TerminalReadRequest) => TerminalReadResult);
7
- /** Following returns the latest page; pausing keeps the exact text already displayed. */
8
- refresh(following: boolean): TuiDocumentSource;
9
- /** Prepend an older page only when its overlap still identifies this frozen snapshot. */
10
- loadEarlier(): number;
11
- }
@@ -1,87 +0,0 @@
1
- /** Bounded, paused snapshots over the Harness's newest-relative scrollback pages. */
2
- const PAGE_LINES = 300;
3
- const OVERLAP_LINES = 20;
4
- const MAX_LINES = 10_000;
5
- const MAX_BYTES = 4 * 1024 * 1024;
6
- export class TerminalReader {
7
- #read;
8
- #page;
9
- #lines = [];
10
- #firstLine = 1;
11
- #note = '';
12
- #source;
13
- constructor(read) { this.#read = read; }
14
- /** Following returns the latest page; pausing keeps the exact text already displayed. */
15
- refresh(following) {
16
- if (following || this.#page === undefined) {
17
- const page = this.#read({ offset: 0, count: PAGE_LINES });
18
- if (page.text !== this.#page?.text || page.totalLines !== this.#page.totalLines || page.lineEnd !== this.#page.lineEnd
19
- || page.truncated !== this.#page.truncated || this.#note !== '')
20
- this.#source = undefined;
21
- this.#page = page;
22
- this.#lines = page.lineEnd === page.lineBegin ? [] : page.text.split('\n');
23
- this.#note = '';
24
- const bytes = Buffer.from(page.text);
25
- if (bytes.length > MAX_BYTES) {
26
- this.#lines = bytes.subarray(bytes.length - MAX_BYTES).toString('utf8').split('\n');
27
- this.#page = { ...page, lineEnd: page.lineBegin + this.#lines.length };
28
- this.#note = 'Reader limit: 4 MiB; leading text clipped';
29
- }
30
- this.#firstLine = Math.max(1, page.totalLines - this.#page.lineEnd + 1);
31
- }
32
- return this.#document();
33
- }
34
- /** Prepend an older page only when its overlap still identifies this frozen snapshot. */
35
- loadEarlier() {
36
- if (this.#page === undefined)
37
- this.refresh(false);
38
- const snapshot = this.#page;
39
- if (this.#lines.length >= MAX_LINES)
40
- return this.#stop('Reader limit: 10,000 lines');
41
- if (this.#firstLine <= 1)
42
- return this.#stop('No earlier retained output');
43
- const newest = this.#read({ offset: 0, count: 1 });
44
- const overlap = Math.min(OVERLAP_LINES, this.#lines.length);
45
- const offset = newest.totalLines - snapshot.totalLines + snapshot.lineEnd - overlap;
46
- if (newest.totalLines < snapshot.totalLines || offset < 0)
47
- return this.#expired();
48
- const older = this.#read({ offset, count: Math.min(PAGE_LINES, MAX_LINES - this.#lines.length) + overlap });
49
- const lines = older.lineEnd === older.lineBegin ? [] : older.text.split('\n');
50
- // A capped scrollback can rotate without changing totalLines. Never splice
51
- // pages merely because their numeric offsets happen to line up.
52
- if (older.totalLines !== newest.totalLines || lines.length <= overlap
53
- || lines.slice(-overlap).some((line, at) => line !== this.#lines[at]))
54
- return this.#expired();
55
- const prefix = lines.slice(0, -overlap);
56
- const next = [...prefix, ...this.#lines];
57
- if (Buffer.byteLength(next.join('\n')) > MAX_BYTES)
58
- return this.#stop('Reader limit: 4 MiB');
59
- this.#lines = next;
60
- this.#firstLine = Math.max(1, this.#firstLine - prefix.length);
61
- this.#page = older;
62
- this.#note = '';
63
- this.#source = undefined;
64
- return prefix.length;
65
- }
66
- #expired() {
67
- return this.#stop('History changed or was clipped; End refreshes the latest output');
68
- }
69
- #stop(note) {
70
- if (this.#note !== note)
71
- this.#source = undefined;
72
- this.#note = note;
73
- return 0;
74
- }
75
- #document() {
76
- if (this.#source !== undefined)
77
- return this.#source;
78
- const status = (this.#note === '' ? '' : `${this.#note} · `) + `${this.#lines.length} loaded`
79
- + (this.#page?.truncated === true ? ' · Retention clipped' : '');
80
- // The source renderer removes one terminator; keep a real empty final PTY
81
- // line so registry offsets and the reader's source rows remain identical.
82
- const text = this.#lines.length === 0 ? '' : this.#lines.join('\n') + '\n';
83
- this.#source = { text, firstLine: this.#firstLine, status };
84
- return this.#source;
85
- }
86
- }
87
- //# sourceMappingURL=terminal-reader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"terminal-reader.js","sourceRoot":"","sources":["../../src/runtime/terminal-reader.ts"],"names":[],"mappings":"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"}
@@ -1,32 +0,0 @@
1
- /** Keyboard-first full-screen roster and inspector for descendant subagents. */
2
- import type { KeyEvent } from '../input/keys.ts';
3
- import type { Theme } from '../chrome/theme.ts';
4
- import type { TuiSubagentRoster } from '../definition.ts';
5
- import { type HotkeyRow } from './hotkey-format.ts';
6
- export interface AgentHubState {
7
- roster: TuiSubagentRoster;
8
- selectedId: string | null;
9
- inspector: boolean;
10
- detailScroll: number;
11
- tree: boolean;
12
- }
13
- export type AgentHubCommand = {
14
- state: AgentHubState;
15
- } | {
16
- close: true;
17
- } | {
18
- open: string;
19
- };
20
- export declare function createAgentHub(roster: TuiSubagentRoster): AgentHubState;
21
- export declare function updateAgentHub(state: AgentHubState, roster: TuiSubagentRoster): AgentHubState;
22
- export declare function applyAgentHubEvent(state: AgentHubState, event: KeyEvent): AgentHubCommand;
23
- /** Keys the Agent Hub accepts; `/help` and its toolbar and footer read this list. */
24
- export declare const AGENT_HUB_HOTKEYS: readonly HotkeyRow[];
25
- export declare function renderAgentHub(state: AgentHubState, theme: Theme, width: number, height: number, now?: number): {
26
- lines: string[];
27
- cursor: {
28
- row: number;
29
- column: number;
30
- };
31
- cursorVisible: boolean;
32
- };
@@ -1,209 +0,0 @@
1
- /** Keyboard-first full-screen roster and inspector for descendant subagents. */
2
- import { padToWidth, truncateToWidth, visibleWidth, wrapText } from "../chrome/width.js";
3
- import { formatOverlayHint } from "./hotkey-format.js";
4
- export function createAgentHub(roster) {
5
- return {
6
- roster,
7
- selectedId: roster.agents[0]?.id ?? null,
8
- inspector: false,
9
- detailScroll: 0,
10
- tree: true,
11
- };
12
- }
13
- export function updateAgentHub(state, roster) {
14
- const selectedId = roster.agents.some(agent => agent.id === state.selectedId)
15
- ? state.selectedId
16
- : roster.agents[0]?.id ?? null;
17
- return { ...state, roster, selectedId, detailScroll: selectedId === state.selectedId ? state.detailScroll : 0 };
18
- }
19
- function selectedAgent(state) {
20
- return state.roster.agents.find(agent => agent.id === state.selectedId);
21
- }
22
- function move(state, delta) {
23
- const agents = state.roster.agents;
24
- if (agents.length === 0)
25
- return state;
26
- const current = Math.max(0, agents.findIndex(agent => agent.id === state.selectedId));
27
- const index = Math.max(0, Math.min(agents.length - 1, current + delta));
28
- return { ...state, selectedId: agents[index]?.id ?? null, detailScroll: 0 };
29
- }
30
- export function applyAgentHubEvent(state, event) {
31
- if (event.type === 'text' && event.value.toLowerCase() === 't')
32
- return { state: { ...state, tree: !state.tree } };
33
- if (event.type !== 'key')
34
- return { state };
35
- if (event.id === 'escape' || event.id === 'ctrl+c') {
36
- if (state.inspector)
37
- return { state: { ...state, inspector: false, detailScroll: 0 } };
38
- return { close: true };
39
- }
40
- if (event.id === 'up')
41
- return { state: move(state, -1) };
42
- if (event.id === 'down')
43
- return { state: move(state, 1) };
44
- if (event.id === 'home')
45
- return { state: { ...state, selectedId: state.roster.agents[0]?.id ?? null, detailScroll: 0 } };
46
- if (event.id === 'end')
47
- return { state: { ...state, selectedId: state.roster.agents.at(-1)?.id ?? null, detailScroll: 0 } };
48
- if (event.id === 'pageUp')
49
- return { state: { ...state, detailScroll: Math.max(0, state.detailScroll - 10) } };
50
- if (event.id === 'pageDown')
51
- return { state: { ...state, detailScroll: state.detailScroll + 10 } };
52
- if (event.id === 'tab' || event.id === 'left' || event.id === 'right') {
53
- return { state: { ...state, inspector: !state.inspector, detailScroll: 0 } };
54
- }
55
- if (event.id === 'enter') {
56
- const agent = selectedAgent(state);
57
- if (agent?.mode === 'external')
58
- return { state: { ...state, inspector: true, detailScroll: 0 } };
59
- return agent === undefined ? { state } : { open: agent.id };
60
- }
61
- return { state };
62
- }
63
- // Every key `applyAgentHubEvent` accepts. Rows whose first word is the toolbar
64
- // label are also printed by the overlay's toolbar and footer.
65
- const HOTKEY_NAVIGATE = { keys: '↑↓', action: 'Navigate subagents' };
66
- const HOTKEY_EDGE = { keys: 'Home / End', action: 'Jump to the first or last subagent' };
67
- const HOTKEY_OPEN = { keys: 'Enter', action: 'Transcript — open the selected transcript' };
68
- const HOTKEY_INSPECTOR = { keys: 'Tab', action: 'Inspector — show or hide the detail pane' };
69
- const HOTKEY_INSPECTOR_ARROWS = { keys: '← / →', action: 'Inspector — show or hide the detail pane, like Tab' };
70
- const HOTKEY_SCROLL = { keys: 'PgUp / PgDn', action: 'Scroll — move through the inspector detail' };
71
- const HOTKEY_TREE = { keys: 'T', action: 'Tree — show or hide the depth tree' };
72
- const HOTKEY_CLOSE = { keys: 'Esc / Ctrl+C', action: 'Close — leave the inspector, or the hub' };
73
- /** Keys the Agent Hub accepts; `/help` and its toolbar and footer read this list. */
74
- export const AGENT_HUB_HOTKEYS = [
75
- HOTKEY_NAVIGATE,
76
- HOTKEY_EDGE,
77
- HOTKEY_OPEN,
78
- HOTKEY_INSPECTOR,
79
- HOTKEY_INSPECTOR_ARROWS,
80
- HOTKEY_SCROLL,
81
- HOTKEY_TREE,
82
- HOTKEY_CLOSE,
83
- ];
84
- /** Toolbar gestures, most frequent first; the arrow alias stays in `/help`. */
85
- const AGENT_HUB_TOOLBAR = [
86
- HOTKEY_NAVIGATE,
87
- HOTKEY_OPEN,
88
- HOTKEY_INSPECTOR,
89
- HOTKEY_SCROLL,
90
- HOTKEY_TREE,
91
- HOTKEY_CLOSE,
92
- HOTKEY_EDGE,
93
- ];
94
- /** Footer gestures for the current hub layout; keys keep their catalog spelling. */
95
- function agentHubFooter(wide, inspector) {
96
- return formatOverlayHint(wide || inspector
97
- ? [HOTKEY_SCROLL, HOTKEY_OPEN, HOTKEY_CLOSE]
98
- : [HOTKEY_INSPECTOR, HOTKEY_OPEN, HOTKEY_CLOSE], 'catalog');
99
- }
100
- function phaseColor(phase) {
101
- if (phase === 'running' || phase === 'starting')
102
- return 'accent';
103
- if (phase === 'completed')
104
- return 'success';
105
- if (phase === 'waiting')
106
- return 'warning';
107
- if (phase === 'error')
108
- return 'error';
109
- return 'dim';
110
- }
111
- function duration(agent, now) {
112
- if (agent.startedAt === undefined)
113
- return '—';
114
- const end = agent.phase === 'running' || agent.phase === 'starting' ? now : agent.updatedAt ?? now;
115
- const ms = Math.max(0, end - agent.startedAt);
116
- if (ms < 1_000)
117
- return `${Math.round(ms)}ms`;
118
- if (ms < 60_000)
119
- return `${(ms / 1_000).toFixed(ms < 10_000 ? 1 : 0)}s`;
120
- return `${Math.floor(ms / 60_000)}m${Math.floor((ms % 60_000) / 1_000)}s`;
121
- }
122
- function rosterLine(agent, selected, tree, theme, width, now) {
123
- const marker = selected ? theme.fg('accent', '›') : ' ';
124
- const indent = tree ? ' '.repeat(Math.max(0, agent.depth - 1)) : '';
125
- const phase = theme.fg(phaseColor(agent.phase), agent.phase.padEnd(9));
126
- const elapsed = duration(agent, now).padStart(7);
127
- const prefix = `${marker} ${indent}${phase} ${elapsed} `;
128
- const label = agent.label + (agent.workflow?.phase === undefined ? '' : ` · ${agent.workflow.phase}`);
129
- return prefix + truncateToWidth(label, Math.max(0, width - visibleWidth(prefix)));
130
- }
131
- function rosterRows(state, theme, width, height, now) {
132
- const workflows = (state.roster.workflows ?? []).slice(-3).map(run => truncateToWidth(theme.fg(run.status === 'completed' ? 'success' : run.status === 'open' ? 'accent' : 'warning', ` Workflow · ${run.name} · ${run.status}${run.phase === undefined ? '' : ` · ${run.phase}`}`), width));
133
- height = Math.max(0, height - workflows.length);
134
- if (state.roster.agents.length === 0)
135
- return [...workflows, theme.fg('dim', ' No subagents are available in this session.')];
136
- const selected = Math.max(0, state.roster.agents.findIndex(agent => agent.id === state.selectedId));
137
- const start = Math.max(0, Math.min(state.roster.agents.length - height, selected - Math.floor(height / 2)));
138
- return [...workflows, ...state.roster.agents.slice(start, start + height)
139
- .map(agent => truncateToWidth(rosterLine(agent, agent.id === state.selectedId, state.tree, theme, width, now), width))
140
- ];
141
- }
142
- function inspectorText(agent, now) {
143
- if (agent === undefined)
144
- return 'No subagent selected.';
145
- const current = agent.activity.at(-1);
146
- const activity = agent.activity.length === 0
147
- ? ['No activity recorded.']
148
- : agent.activity.map(item => `${item.status.padEnd(8)} ${item.text}`);
149
- return [
150
- agent.label,
151
- '',
152
- `Status: ${agent.phase}`,
153
- `Mode: ${agent.mode ?? 'unknown'}`,
154
- ...(agent.mode === 'external' ? ['External execution: results appear in the parent session; no local transcript.'] : []),
155
- `Elapsed: ${duration(agent, now)}`,
156
- `Session: ${agent.id}`,
157
- `Parent: ${agent.parentId ?? 'root session'}`,
158
- `Depth: ${agent.depth}`,
159
- ...(agent.workflow === undefined ? [] : [`Workflow: ${agent.workflow.name}`, `Phase: ${agent.workflow.phase ?? '—'}`, `Outcome: ${agent.workflow.outcome ?? 'not recorded'}`]),
160
- `Current: ${current?.text ?? '—'}`,
161
- '',
162
- 'Recent activity',
163
- ...activity,
164
- ].join('\n');
165
- }
166
- function inspectorRows(state, theme, width, height, now) {
167
- const body = wrapText(inspectorText(selectedAgent(state), now), Math.max(1, width - 2));
168
- const viewportHeight = Math.max(0, height - 2);
169
- const maxScroll = Math.max(0, body.length - viewportHeight);
170
- const start = Math.min(state.detailScroll, maxScroll);
171
- const end = Math.min(body.length, start + viewportHeight);
172
- const position = body.length > viewportHeight
173
- ? theme.fg('dim', ` ${start + 1}-${end} / ${body.length} lines · PgUp/PgDn scroll`)
174
- : '';
175
- return [theme.bold(theme.fg('accent', ' Inspector')), truncateToWidth(position, width), ...body.slice(start, end)];
176
- }
177
- export function renderAgentHub(state, theme, width, height, now = Date.now()) {
178
- const safeWidth = Math.max(1, width);
179
- const safeHeight = Math.max(1, height);
180
- const running = state.roster.agents.filter(agent => agent.phase === 'running' || agent.phase === 'starting').length;
181
- const waiting = state.roster.agents.filter(agent => agent.phase === 'waiting').length;
182
- const header = truncateToWidth(theme.bold(' Agent Hub ') + theme.fg('dim', `${state.roster.agents.length} agents · ${running} active · ${waiting} waiting`), safeWidth);
183
- const toolbar = truncateToWidth(theme.fg('dim', ' ' + formatOverlayHint(AGENT_HUB_TOOLBAR, 'catalog')), safeWidth);
184
- const divider = theme.fg('border', '─'.repeat(safeWidth));
185
- const bodyHeight = Math.max(0, safeHeight - 4);
186
- const wide = safeWidth >= 96;
187
- let body;
188
- if (wide) {
189
- const leftWidth = Math.max(36, Math.floor(safeWidth * 0.46));
190
- const rightWidth = Math.max(1, safeWidth - leftWidth - 1);
191
- const left = rosterRows(state, theme, leftWidth, bodyHeight, now);
192
- const right = inspectorRows(state, theme, rightWidth, bodyHeight, now);
193
- body = Array.from({ length: bodyHeight }, (_, index) => padToWidth(left[index] ?? '', leftWidth) + theme.fg('border', '│') + truncateToWidth(right[index] ?? '', rightWidth));
194
- }
195
- else if (state.inspector) {
196
- body = inspectorRows(state, theme, safeWidth, bodyHeight, now);
197
- }
198
- else {
199
- body = rosterRows(state, theme, safeWidth, bodyHeight, now);
200
- }
201
- while (body.length < bodyHeight)
202
- body.push('');
203
- const footer = truncateToWidth(theme.fg('dim', ' ' + agentHubFooter(wide, state.inspector)), safeWidth);
204
- const lines = [header, toolbar, divider, ...body.slice(0, bodyHeight), footer].slice(0, safeHeight);
205
- while (lines.length < safeHeight)
206
- lines.push('');
207
- return { lines, cursor: { row: safeHeight - 1, column: 0 }, cursorVisible: false };
208
- }
209
- //# sourceMappingURL=agent-hub.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-hub.js","sourceRoot":"","sources":["../../src/views/agent-hub.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAIhF,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAExF,OAAO,EAAE,iBAAiB,EAAkB,MAAM,oBAAoB,CAAA;AAYtE,MAAM,UAAU,cAAc,CAAC,MAAyB;IACtD,OAAO;QACL,MAAM;QACN,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI;QACxC,SAAS,EAAE,KAAK;QAChB,YAAY,EAAE,CAAC;QACf,IAAI,EAAE,IAAI;KACX,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAoB,EAAE,MAAyB;IAC5E,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,CAAC;QAC3E,CAAC,CAAC,KAAK,CAAC,UAAU;QAClB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,CAAA;IAChC,OAAO,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACjH,CAAC;AAED,SAAS,aAAa,CAAC,KAAoB;IACzC,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,CAAC,CAAA;AACzE,CAAC;AAED,SAAS,IAAI,CAAC,KAAoB,EAAE,KAAa;IAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAA;IAClC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC,CAAA;IACrF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAA;IACvE,OAAO,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAoB,EAAE,KAAe;IACtE,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,GAAG;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAA;IACjH,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC1C,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QACnD,IAAI,KAAK,CAAC,SAAS;YAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,CAAA;QACtF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAA;IACxB,CAAC;IACD,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;IACxD,IAAI,KAAK,CAAC,EAAE,KAAK,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAA;IACzD,IAAI,KAAK,CAAC,EAAE,KAAK,MAAM;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,CAAA;IACxH,IAAI,KAAK,CAAC,EAAE,KAAK,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,CAAA;IAC3H,IAAI,KAAK,CAAC,EAAE,KAAK,QAAQ;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;IAC7G,IAAI,KAAK,CAAC,EAAE,KAAK,UAAU;QAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,GAAG,EAAE,EAAE,EAAE,CAAA;IAClG,IAAI,KAAK,CAAC,EAAE,KAAK,KAAK,IAAI,KAAK,CAAC,EAAE,KAAK,MAAM,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;QACtE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,CAAA;IAC9E,CAAC;IACD,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;QAClC,IAAI,KAAK,EAAE,IAAI,KAAK,UAAU;YAAE,OAAO,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,CAAA;QAChG,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAA;IAC7D,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,CAAA;AAClB,CAAC;AAED,+EAA+E;AAC/E,8DAA8D;AAC9D,MAAM,eAAe,GAAc,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAA;AAC/E,MAAM,WAAW,GAAc,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAA;AACnG,MAAM,WAAW,GAAc,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,2CAA2C,EAAE,CAAA;AACrG,MAAM,gBAAgB,GAAc,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,0CAA0C,EAAE,CAAA;AACvG,MAAM,uBAAuB,GAAc,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,oDAAoD,EAAE,CAAA;AAC1H,MAAM,aAAa,GAAc,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,4CAA4C,EAAE,CAAA;AAC9G,MAAM,WAAW,GAAc,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAA;AAC1F,MAAM,YAAY,GAAc,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,yCAAyC,EAAE,CAAA;AAE3G,qFAAqF;AACrF,MAAM,CAAC,MAAM,iBAAiB,GAAyB;IACrD,eAAe;IACf,WAAW;IACX,WAAW;IACX,gBAAgB;IAChB,uBAAuB;IACvB,aAAa;IACb,WAAW;IACX,YAAY;CACb,CAAA;AAED,+EAA+E;AAC/E,MAAM,iBAAiB,GAAyB;IAC9C,eAAe;IACf,WAAW;IACX,gBAAgB;IAChB,aAAa;IACb,WAAW;IACX,YAAY;IACZ,WAAW;CACZ,CAAA;AAED,oFAAoF;AACpF,SAAS,cAAc,CAAC,IAAa,EAAE,SAAkB;IACvD,OAAO,iBAAiB,CAAC,IAAI,IAAI,SAAS;QACxC,CAAC,CAAC,CAAC,aAAa,EAAE,WAAW,EAAE,YAAY,CAAC;QAC5C,CAAC,CAAC,CAAC,gBAAgB,EAAE,WAAW,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,CAAA;AAC/D,CAAC;AAED,SAAS,UAAU,CAAC,KAA+B;IACjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,UAAU;QAAE,OAAO,QAAQ,CAAA;IAChE,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,SAAS,CAAA;IAC3C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,OAAO,CAAA;IACrC,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,KAAsB,EAAE,GAAW;IACnD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,GAAG,CAAA;IAC7C,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,GAAG,CAAA;IAClG,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7C,IAAI,EAAE,GAAG,KAAK;QAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAA;IAC5C,IAAI,EAAE,GAAG,MAAM;QAAE,OAAO,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IACvE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAA;AAC3E,CAAC;AAED,SAAS,UAAU,CAAC,KAAsB,EAAE,QAAiB,EAAE,IAAa,EAAE,KAAY,EAAE,KAAa,EAAE,GAAW;IACpH,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACpE,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACtE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,GAAG,KAAK,IAAI,OAAO,IAAI,CAAA;IACzD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;IACrG,OAAO,MAAM,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AACnF,CAAC;AAED,SAAS,UAAU,CAAC,KAAoB,EAAE,KAAY,EAAE,KAAa,EAAE,MAAc,EAAE,GAAW;IAChG,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAClL,eAAe,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;IACxG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAAA;IAC/C,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,8CAA8C,CAAC,CAAC,CAAA;IAC5H,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,CAAC,CAAC,CAAA;IACnG,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC3G,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;aACtE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;KACvH,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAkC,EAAE,GAAW;IACpE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,uBAAuB,CAAA;IACvD,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC1C,CAAC,CAAC,CAAC,uBAAuB,CAAC;QAC3B,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACvE,OAAO;QACL,KAAK,CAAC,KAAK;QACX,EAAE;QACF,WAAW,KAAK,CAAC,KAAK,EAAE;QACxB,SAAS,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE;QAClC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,gFAAgF,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxH,YAAY,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;QAClC,YAAY,KAAK,CAAC,EAAE,EAAE;QACtB,WAAW,KAAK,CAAC,QAAQ,IAAI,cAAc,EAAE;QAC7C,UAAU,KAAK,CAAC,KAAK,EAAE;QACvB,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,UAAU,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,YAAY,KAAK,CAAC,QAAQ,CAAC,OAAO,IAAI,cAAc,EAAE,CAAC,CAAC;QAC9K,YAAY,OAAO,EAAE,IAAI,IAAI,GAAG,EAAE;QAClC,EAAE;QACF,iBAAiB;QACjB,GAAG,QAAQ;KACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,aAAa,CAAC,KAAoB,EAAE,KAAY,EAAE,KAAa,EAAE,MAAc,EAAE,GAAW;IACnG,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAA;IACvF,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAA;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC,CAAA;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;IACrD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,cAAc,CAAC,CAAA;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,cAAc;QAC3C,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,2BAA2B,CAAC;QACnF,CAAC,CAAC,EAAE,CAAA;IACN,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,EAAE,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;AACpH,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAoB,EACpB,KAAY,EACZ,KAAa,EACb,MAAc,EACd,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAEhB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IACpC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,MAAM,CAAA;IACnH,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,MAAM,CAAA;IACrF,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,aAAa,OAAO,aAAa,OAAO,UAAU,CAAC,EAAE,SAAS,CAAC,CAAA;IACvK,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IAClH,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAA;IAC9C,MAAM,IAAI,GAAG,SAAS,IAAI,EAAE,CAAA;IAC5B,IAAI,IAAc,CAAA;IAClB,IAAI,IAAI,EAAE,CAAC;QACT,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAA;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,CAAC,CAAC,CAAA;QACzD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;QACjE,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;QACtE,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CACrD,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC,CAAA;IACzH,CAAC;SAAM,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QAC3B,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;IAChE,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;IAC7D,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,GAAG,UAAU;QAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC9C,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IACvG,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;IACnG,OAAO,KAAK,CAAC,MAAM,GAAG,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,UAAU,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAA;AACpF,CAAC"}
@@ -1,54 +0,0 @@
1
- /**
2
- * `/copy` picker overlay: OMP-style list of transcript copy targets.
3
- * Pure — the provider owns the clipboard write.
4
- * @module @agi-fans/dsh-tui
5
- */
6
- import type { CopyPick } from './copy-targets.ts';
7
- import type { KeyEvent } from '../input/keys.ts';
8
- import { type Theme } from '../chrome/theme.ts';
9
- import { type HotkeyRow } from './hotkey-format.ts';
10
- /** Visible picker rows. */
11
- export declare const COPY_SELECTOR_MAX_VISIBLE = 8;
12
- /** Preview lines under the list. */
13
- export declare const COPY_SELECTOR_PREVIEW_LINES = 4;
14
- /** First overlay-local row that paints a target. */
15
- export declare const COPY_SELECTOR_ITEM_ROW = 3;
16
- /** Live overlay state. */
17
- export interface CopySelectorState {
18
- items: readonly CopyPick[];
19
- selected: number;
20
- search?: string;
21
- }
22
- /** Outcome of one key against the overlay. */
23
- export type CopySelectorCommand = {
24
- kind: 'update';
25
- state: CopySelectorState;
26
- } | {
27
- kind: 'pick';
28
- item: CopyPick;
29
- } | {
30
- kind: 'close';
31
- } | {
32
- kind: 'ignore';
33
- };
34
- /** Open the picker on the assembled targets. */
35
- export declare function createCopySelector(items: readonly CopyPick[], selected?: number): CopySelectorState;
36
- /** Filtered targets matching the active search query. */
37
- export declare function filteredCopyItems(state: CopySelectorState): readonly CopyPick[];
38
- /** Visible item-index window around `selected`. */
39
- export declare function copySelectorVisibleRange(count: number, selected: number, maxVisible?: number): {
40
- start: number;
41
- end: number;
42
- };
43
- /** Apply one decoded event to the overlay. */
44
- export declare function applyCopySelectorEvent(state: CopySelectorState, event: KeyEvent): CopySelectorCommand;
45
- /** Keys the copy picker accepts; `/help` and its bottom hint read this list. */
46
- export declare const COPY_SELECTOR_HOTKEYS: readonly HotkeyRow[];
47
- /** Overlay frame: title, windowed rows, preview, hints. */
48
- export declare function renderCopySelector(state: CopySelectorState, theme: Theme, width: number, maxVisible?: number): {
49
- lines: string[];
50
- cursor: {
51
- row: number;
52
- column: number;
53
- };
54
- };