@agi-fans/dsh-tui 0.22.0 → 0.23.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 (279) hide show
  1. package/LICENSE +26 -0
  2. package/lib/CHANGELOG.md +199 -1
  3. package/lib/chrome/box.d.ts +1 -18
  4. package/lib/chrome/box.js +2 -45
  5. package/lib/chrome/box.js.map +1 -1
  6. package/lib/chrome/code-highlight.js +4 -4
  7. package/lib/chrome/code-highlight.js.map +1 -1
  8. package/lib/chrome/command-output.d.ts +0 -1
  9. package/lib/chrome/command-output.js +11 -5
  10. package/lib/chrome/command-output.js.map +1 -1
  11. package/lib/chrome/goal-bar.js +1 -1
  12. package/lib/chrome/goal-bar.js.map +1 -1
  13. package/lib/chrome/main-screen-renderer.js +4 -3
  14. package/lib/chrome/main-screen-renderer.js.map +1 -1
  15. package/lib/chrome/markdown.d.ts +3 -3
  16. package/lib/chrome/markdown.js +85 -36
  17. package/lib/chrome/markdown.js.map +1 -1
  18. package/lib/chrome/md-style.d.ts +5 -2
  19. package/lib/chrome/md-style.js +13 -4
  20. package/lib/chrome/md-style.js.map +1 -1
  21. package/lib/chrome/renderer.d.ts +37 -1
  22. package/lib/chrome/renderer.js.map +1 -1
  23. package/lib/chrome/status-line.d.ts +3 -3
  24. package/lib/chrome/status-line.js +5 -5
  25. package/lib/chrome/status-line.js.map +1 -1
  26. package/lib/chrome/theme.d.ts +8 -3
  27. package/lib/chrome/theme.js +51 -153
  28. package/lib/chrome/theme.js.map +1 -1
  29. package/lib/commands/auth-account.d.ts +9 -0
  30. package/lib/commands/auth-account.js +202 -0
  31. package/lib/commands/auth-account.js.map +1 -0
  32. package/lib/commands/auth.js +238 -414
  33. package/lib/commands/auth.js.map +1 -1
  34. package/lib/commands/diff.js +22 -16
  35. package/lib/commands/diff.js.map +1 -1
  36. package/lib/commands/export.d.ts +0 -1
  37. package/lib/commands/export.js +97 -32
  38. package/lib/commands/export.js.map +1 -1
  39. package/lib/commands/files.js +2 -8
  40. package/lib/commands/files.js.map +1 -1
  41. package/lib/commands/integrations.d.ts +12 -1
  42. package/lib/commands/integrations.js +120 -23
  43. package/lib/commands/integrations.js.map +1 -1
  44. package/lib/commands/jobs-browser.d.ts +3 -0
  45. package/lib/commands/jobs-browser.js +152 -0
  46. package/lib/commands/jobs-browser.js.map +1 -0
  47. package/lib/commands/jobs.d.ts +3 -14
  48. package/lib/commands/jobs.js +26 -18
  49. package/lib/commands/jobs.js.map +1 -1
  50. package/lib/commands/model.d.ts +3 -0
  51. package/lib/commands/model.js +197 -120
  52. package/lib/commands/model.js.map +1 -1
  53. package/lib/commands/open-external.d.ts +2 -0
  54. package/lib/commands/open-external.js +19 -0
  55. package/lib/commands/open-external.js.map +1 -0
  56. package/lib/commands/permission.js +65 -54
  57. package/lib/commands/permission.js.map +1 -1
  58. package/lib/commands/plugins.js +381 -139
  59. package/lib/commands/plugins.js.map +1 -1
  60. package/lib/commands/schedule-catalog.d.ts +12 -0
  61. package/lib/commands/schedule-catalog.js +41 -0
  62. package/lib/commands/schedule-catalog.js.map +1 -0
  63. package/lib/commands/schedule-history.d.ts +4 -0
  64. package/lib/commands/schedule-history.js +62 -0
  65. package/lib/commands/schedule-history.js.map +1 -0
  66. package/lib/commands/schedule.d.ts +12 -15
  67. package/lib/commands/schedule.js +220 -187
  68. package/lib/commands/schedule.js.map +1 -1
  69. package/lib/commands/session-configuration.d.ts +3 -0
  70. package/lib/commands/session-configuration.js +62 -28
  71. package/lib/commands/session-configuration.js.map +1 -1
  72. package/lib/commands/session.js +111 -66
  73. package/lib/commands/session.js.map +1 -1
  74. package/lib/commands/terminal.js +14 -8
  75. package/lib/commands/terminal.js.map +1 -1
  76. package/lib/definition.d.ts +112 -15
  77. package/lib/index.d.ts +1 -0
  78. package/lib/index.js +1 -0
  79. package/lib/index.js.map +1 -1
  80. package/lib/input/actions.d.ts +1 -1
  81. package/lib/input/actions.js +5 -2
  82. package/lib/input/actions.js.map +1 -1
  83. package/lib/input/composer-files.d.ts +2 -0
  84. package/lib/input/composer-files.js +13 -3
  85. package/lib/input/composer-files.js.map +1 -1
  86. package/lib/input/image-paste.d.ts +5 -12
  87. package/lib/input/image-paste.js +32 -28
  88. package/lib/input/image-paste.js.map +1 -1
  89. package/lib/input/key-test.d.ts +5 -0
  90. package/lib/input/key-test.js +19 -0
  91. package/lib/input/key-test.js.map +1 -0
  92. package/lib/input/keys.d.ts +2 -0
  93. package/lib/input/keys.js +4 -1
  94. package/lib/input/keys.js.map +1 -1
  95. package/lib/locale/index.d.ts +6 -0
  96. package/lib/locale/index.js +32 -0
  97. package/lib/locale/index.js.map +1 -0
  98. package/lib/locale/prompt.d.ts +4 -0
  99. package/lib/locale/prompt.js +24 -0
  100. package/lib/locale/prompt.js.map +1 -0
  101. package/lib/locale/zh.d.ts +1114 -0
  102. package/lib/locale/zh.js +1115 -0
  103. package/lib/locale/zh.js.map +1 -0
  104. package/lib/prompt-intents.d.ts +4 -0
  105. package/lib/prompt-intents.js +4 -0
  106. package/lib/prompt-intents.js.map +1 -1
  107. package/lib/runtime/account-settings.d.ts +18 -0
  108. package/lib/runtime/account-settings.js +241 -0
  109. package/lib/runtime/account-settings.js.map +1 -0
  110. package/lib/runtime/agent-profile.d.ts +3 -3
  111. package/lib/runtime/agent-profile.js +4 -4
  112. package/lib/runtime/agent-profile.js.map +1 -1
  113. package/lib/runtime/btw-policy.js +2 -1
  114. package/lib/runtime/btw-policy.js.map +1 -1
  115. package/lib/runtime/btw.js +1 -2
  116. package/lib/runtime/btw.js.map +1 -1
  117. package/lib/runtime/composer-images.d.ts +2 -2
  118. package/lib/runtime/composer-images.js +4 -4
  119. package/lib/runtime/composer-images.js.map +1 -1
  120. package/lib/runtime/composer-shell.js +27 -1
  121. package/lib/runtime/composer-shell.js.map +1 -1
  122. package/lib/runtime/file-browser.d.ts +19 -0
  123. package/lib/runtime/file-browser.js +291 -0
  124. package/lib/runtime/file-browser.js.map +1 -0
  125. package/lib/runtime/file-review.d.ts +6 -9
  126. package/lib/runtime/file-review.js +91 -7
  127. package/lib/runtime/file-review.js.map +1 -1
  128. package/lib/runtime/help-reader.d.ts +12 -0
  129. package/lib/runtime/help-reader.js +50 -0
  130. package/lib/runtime/help-reader.js.map +1 -0
  131. package/lib/runtime/human-interaction.js +1 -1
  132. package/lib/runtime/human-interaction.js.map +1 -1
  133. package/lib/runtime/model-catalog-editor.d.ts +12 -0
  134. package/lib/runtime/model-catalog-editor.js +215 -0
  135. package/lib/runtime/model-catalog-editor.js.map +1 -0
  136. package/lib/runtime/model-settings.d.ts +11 -0
  137. package/lib/runtime/model-settings.js +404 -0
  138. package/lib/runtime/model-settings.js.map +1 -0
  139. package/lib/runtime/plugin-settings.d.ts +4 -1
  140. package/lib/runtime/plugin-settings.js +164 -88
  141. package/lib/runtime/plugin-settings.js.map +1 -1
  142. package/lib/runtime/prompt-browser.d.ts +9 -0
  143. package/lib/runtime/prompt-browser.js +19 -0
  144. package/lib/runtime/prompt-browser.js.map +1 -0
  145. package/lib/runtime/provider-local.d.ts +27 -27
  146. package/lib/runtime/provider-local.js +1264 -308
  147. package/lib/runtime/provider-local.js.map +1 -1
  148. package/lib/runtime/reference-reader.d.ts +15 -0
  149. package/lib/runtime/reference-reader.js +78 -0
  150. package/lib/runtime/reference-reader.js.map +1 -0
  151. package/lib/runtime/runner.js +38 -29
  152. package/lib/runtime/runner.js.map +1 -1
  153. package/lib/runtime/session-runtime.js +1 -1
  154. package/lib/runtime/session-runtime.js.map +1 -1
  155. package/lib/runtime/settings-draft.d.ts +21 -0
  156. package/lib/runtime/settings-draft.js +166 -0
  157. package/lib/runtime/settings-draft.js.map +1 -0
  158. package/lib/runtime/settings-preferences.js +1 -1
  159. package/lib/runtime/settings-preferences.js.map +1 -1
  160. package/lib/runtime/startup-notices.d.ts +0 -1
  161. package/lib/runtime/startup-notices.js +35 -6
  162. package/lib/runtime/startup-notices.js.map +1 -1
  163. package/lib/runtime/subagent-model-selection.js +2 -1
  164. package/lib/runtime/subagent-model-selection.js.map +1 -1
  165. package/lib/runtime/subagent-settings.d.ts +14 -0
  166. package/lib/runtime/subagent-settings.js +288 -0
  167. package/lib/runtime/subagent-settings.js.map +1 -0
  168. package/lib/runtime/terminal-notifications.d.ts +3 -0
  169. package/lib/runtime/terminal-notifications.js +13 -8
  170. package/lib/runtime/terminal-notifications.js.map +1 -1
  171. package/lib/runtime/terminal-probe.d.ts +2 -0
  172. package/lib/runtime/terminal-probe.js +9 -0
  173. package/lib/runtime/terminal-probe.js.map +1 -1
  174. package/lib/runtime/tool-presentation.js.map +1 -1
  175. package/lib/runtime/tool-reader.d.ts +5 -0
  176. package/lib/runtime/tool-reader.js +27 -0
  177. package/lib/runtime/tool-reader.js.map +1 -0
  178. package/lib/runtime/web-settings.d.ts +14 -0
  179. package/lib/runtime/web-settings.js +339 -0
  180. package/lib/runtime/web-settings.js.map +1 -0
  181. package/lib/session/command-attachments.d.ts +17 -0
  182. package/lib/session/command-attachments.js +50 -0
  183. package/lib/session/command-attachments.js.map +1 -0
  184. package/lib/session/context-diagnostics.d.ts +16 -0
  185. package/lib/session/context-diagnostics.js +15 -0
  186. package/lib/session/context-diagnostics.js.map +1 -1
  187. package/lib/session/external-agents.d.ts +3 -1
  188. package/lib/session/external-agents.js +35 -10
  189. package/lib/session/external-agents.js.map +1 -1
  190. package/lib/session/generation-continuation.d.ts +11 -0
  191. package/lib/session/generation-continuation.js +34 -0
  192. package/lib/session/generation-continuation.js.map +1 -0
  193. package/lib/session/goal-controls.d.ts +5 -0
  194. package/lib/session/goal-controls.js +81 -0
  195. package/lib/session/goal-controls.js.map +1 -0
  196. package/lib/session/interaction-adapter.d.ts +7 -3
  197. package/lib/session/interaction-adapter.js +121 -49
  198. package/lib/session/interaction-adapter.js.map +1 -1
  199. package/lib/session/message-queue.d.ts +2 -0
  200. package/lib/session/message-queue.js +102 -17
  201. package/lib/session/message-queue.js.map +1 -1
  202. package/lib/session/pending-inputs.d.ts +30 -0
  203. package/lib/session/pending-inputs.js +183 -0
  204. package/lib/session/pending-inputs.js.map +1 -0
  205. package/lib/session/session-configuration.js +1 -1
  206. package/lib/session/session-configuration.js.map +1 -1
  207. package/lib/session/session-controller.d.ts +32 -13
  208. package/lib/session/session-controller.js +444 -98
  209. package/lib/session/session-controller.js.map +1 -1
  210. package/lib/session/subagent-roster.d.ts +1 -0
  211. package/lib/session/subagent-roster.js +16 -5
  212. package/lib/session/subagent-roster.js.map +1 -1
  213. package/lib/session/subagent-tracker.d.ts +2 -0
  214. package/lib/session/subagent-tracker.js +18 -0
  215. package/lib/session/subagent-tracker.js.map +1 -1
  216. package/lib/session/tui-settings.d.ts +9 -5
  217. package/lib/session/tui-settings.js +3 -1
  218. package/lib/session/tui-settings.js.map +1 -1
  219. package/lib/session/workflow-projection.d.ts +2 -1
  220. package/lib/session/workflow-projection.js +34 -4
  221. package/lib/session/workflow-projection.js.map +1 -1
  222. package/lib/views/autocomplete.d.ts +10 -7
  223. package/lib/views/autocomplete.js +44 -37
  224. package/lib/views/autocomplete.js.map +1 -1
  225. package/lib/views/context-overview.d.ts +4 -0
  226. package/lib/views/context-overview.js +43 -0
  227. package/lib/views/context-overview.js.map +1 -0
  228. package/lib/views/copy-targets.d.ts +6 -2
  229. package/lib/views/copy-targets.js +19 -14
  230. package/lib/views/copy-targets.js.map +1 -1
  231. package/lib/views/document-reader.d.ts +10 -1
  232. package/lib/views/document-reader.js +59 -5
  233. package/lib/views/document-reader.js.map +1 -1
  234. package/lib/views/event-views.js +29 -11
  235. package/lib/views/event-views.js.map +1 -1
  236. package/lib/views/file-actions.js +21 -0
  237. package/lib/views/file-actions.js.map +1 -1
  238. package/lib/views/file-browser.d.ts +98 -0
  239. package/lib/views/file-browser.js +120 -0
  240. package/lib/views/file-browser.js.map +1 -0
  241. package/lib/views/history-search.js +4 -4
  242. package/lib/views/history-search.js.map +1 -1
  243. package/lib/views/hotkey-format.d.ts +3 -2
  244. package/lib/views/hotkey-format.js +4 -3
  245. package/lib/views/hotkey-format.js.map +1 -1
  246. package/lib/views/hotkeys.js +10 -12
  247. package/lib/views/hotkeys.js.map +1 -1
  248. package/lib/views/list-view.js +16 -11
  249. package/lib/views/list-view.js.map +1 -1
  250. package/lib/views/prompt-selector.d.ts +23 -1
  251. package/lib/views/prompt-selector.js +123 -60
  252. package/lib/views/prompt-selector.js.map +1 -1
  253. package/lib/views/settings-list.d.ts +6 -1
  254. package/lib/views/settings-list.js +69 -46
  255. package/lib/views/settings-list.js.map +1 -1
  256. package/lib/views/tool-actions.d.ts +16 -0
  257. package/lib/views/tool-actions.js +29 -0
  258. package/lib/views/tool-actions.js.map +1 -0
  259. package/lib/views/trajectory-timeline.d.ts +5 -6
  260. package/lib/views/trajectory-timeline.js +25 -15
  261. package/lib/views/trajectory-timeline.js.map +1 -1
  262. package/lib/views/trajectory.d.ts +23 -2
  263. package/lib/views/trajectory.js +404 -186
  264. package/lib/views/trajectory.js.map +1 -1
  265. package/lib/views/transcript-render.d.ts +39 -15
  266. package/lib/views/transcript-render.js +406 -208
  267. package/lib/views/transcript-render.js.map +1 -1
  268. package/lib/views/transcript-types.d.ts +3 -2
  269. package/lib/views/transcript-types.js.map +1 -1
  270. package/lib/views/workflow.d.ts +16 -0
  271. package/lib/views/workflow.js +42 -0
  272. package/lib/views/workflow.js.map +1 -0
  273. package/package.json +61 -58
  274. package/lib/chrome/welcome-tips.d.ts +0 -23
  275. package/lib/chrome/welcome-tips.js +0 -24
  276. package/lib/chrome/welcome-tips.js.map +0 -1
  277. package/lib/session/steering.d.ts +0 -3
  278. package/lib/session/steering.js +0 -9
  279. package/lib/session/steering.js.map +0 -1
@@ -0,0 +1,15 @@
1
+ /** Searchable Markdown reference pages built from the shared prompt surfaces. */
2
+ import type { TuiService } from '../definition.ts';
3
+ interface ReferenceSection {
4
+ title: string;
5
+ text: string;
6
+ }
7
+ /** Headings inside fenced examples are content, not navigation. */
8
+ export declare function referenceSections(text: string): ReferenceSection[];
9
+ /** Copyable field values in the two-column diagnostic tables. */
10
+ export declare function referenceFields(text: string): {
11
+ label: string;
12
+ value: string;
13
+ }[];
14
+ export declare function readReference(tui: Pick<TuiService, 'prompt' | 'copyText'>, title: string, text: string, signal?: AbortSignal): Promise<void>;
15
+ export {};
@@ -0,0 +1,78 @@
1
+ import { choosePrompt } from "../prompt-intents.js";
2
+ /** Headings inside fenced examples are content, not navigation. */
3
+ export function referenceSections(text) {
4
+ const lines = text.split('\n');
5
+ const headings = [];
6
+ let fence;
7
+ for (const [row, line] of lines.entries()) {
8
+ const delimiter = /^ {0,3}(`{3,}|~{3,})/u.exec(line)?.[1];
9
+ if (delimiter !== undefined) {
10
+ if (fence === undefined)
11
+ fence = delimiter;
12
+ else if (delimiter[0] === fence[0] && delimiter.length >= fence.length)
13
+ fence = undefined;
14
+ continue;
15
+ }
16
+ if (fence !== undefined)
17
+ continue;
18
+ const match = /^(#{1,6})\s+(.+?)\s*#*\s*$/u.exec(line);
19
+ if (match !== null)
20
+ headings.push({ title: match[2], level: match[1].length, row });
21
+ }
22
+ return headings.map((heading, index) => ({
23
+ title: heading.title,
24
+ text: lines.slice(heading.row, headings.slice(index + 1).find(next => next.level <= heading.level)?.row).join('\n').trim(),
25
+ })).filter(section => section.text !== text.trim());
26
+ }
27
+ /** Copyable field values in the two-column diagnostic tables. */
28
+ export function referenceFields(text) {
29
+ return text.split('\n').flatMap(line => {
30
+ const match = /^\|\s*([^|]+?)\s*\|\s*`([^`]+)`\s*\|\s*$/u.exec(line);
31
+ return match === null ? [] : [{ label: match[1], value: match[2] }];
32
+ });
33
+ }
34
+ export async function readReference(tui, title, text, signal) {
35
+ const abort = new AbortController();
36
+ const active = signal === undefined ? abort.signal : AbortSignal.any([signal, abort.signal]);
37
+ const sections = [{ title: 'All sections', text }, ...referenceSections(text)];
38
+ const positions = new Map();
39
+ let selected = 0;
40
+ const prompt = (request) => tui.prompt({ ...request, signal: active, onSuperseded: () => { abort.abort(); } });
41
+ while (!active.aborted) {
42
+ const section = sections[selected];
43
+ const action = await prompt({
44
+ localize: ['options', 'actions'], title, question: selected === 0 ? '' : section.title, detail: section.text,
45
+ presentation: 'document', allowCustom: false, notify: false,
46
+ options: [{ label: 'Back', value: 'close' }],
47
+ actions: [
48
+ ...(sections.length > 1 ? [{ key: 's', label: 'sections', valuePrefix: 'sections', scope: 'list' }] : []),
49
+ ...(tui.copyText === undefined ? [] : [{ key: 'y', label: 'copy', valuePrefix: 'copy', scope: 'list' }]),
50
+ ],
51
+ ...(positions.has(selected) ? { documentPosition: positions.get(selected) } : {}),
52
+ onDocumentPosition: position => { positions.set(selected, position); },
53
+ });
54
+ if (active.aborted || action === null || action === 'close')
55
+ return;
56
+ if (action === 'sections') {
57
+ const answer = await prompt(choosePrompt({ localize: ['question', 'options'], title, question: 'Choose a section', filterable: true,
58
+ initialValue: String(selected), options: sections.map((item, index) => ({
59
+ label: item.title, value: String(index),
60
+ ...(sections.filter(other => other.title === item.title).length > 1 ? {
61
+ description: item.text.split('\n').find(line => line.trim() !== '' && !line.startsWith('#'))?.replace(/^[-*] /u, '') ?? '',
62
+ } : {}),
63
+ })) }));
64
+ if (answer !== null && sections[Number(answer)] !== undefined)
65
+ selected = Number(answer);
66
+ }
67
+ else if (action === 'copy') {
68
+ const fields = referenceFields(section.text);
69
+ const choices = [{ label: 'This page', value: section.text }, ...fields];
70
+ const answer = fields.length === 0 ? '0' : await prompt(choosePrompt({ localize: ['title', 'question', 'options'], title: 'Copy', question: 'Choose content', filterable: true,
71
+ options: choices.map((item, index) => ({ label: item.label, value: String(index), ...(index === 0 ? {} : { description: item.value }) })) }));
72
+ const choice = answer === null ? undefined : choices[Number(answer)];
73
+ if (!active.aborted && choice !== undefined)
74
+ await tui.copyText?.(choice.value, choice.label);
75
+ }
76
+ }
77
+ }
78
+ //# sourceMappingURL=reference-reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-reader.js","sourceRoot":"","sources":["../../src/runtime/reference-reader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAInD,mEAAmE;AACnE,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC9B,MAAM,QAAQ,GAAoD,EAAE,CAAA;IACpE,IAAI,KAAyB,CAAA;IAC7B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACzD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,KAAK,KAAK,SAAS;gBAAE,KAAK,GAAG,SAAS,CAAA;iBACrC,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM;gBAAE,KAAK,GAAG,SAAS,CAAA;YACzF,SAAQ;QACV,CAAC;QACD,IAAI,KAAK,KAAK,SAAS;YAAE,SAAQ;QACjC,MAAM,KAAK,GAAG,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtD,IAAI,KAAK,KAAK,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;IACvF,CAAC;IACD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;KAC3H,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;AACrD,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACrC,MAAM,KAAK,GAAG,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpE,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAE,EAAE,CAAC,CAAA;IACvE,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAA4C,EAAE,KAAa,EAAE,IAAY,EAAE,MAAoB;IACjI,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAA;IACnC,MAAM,MAAM,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5F,MAAM,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9E,MAAM,SAAS,GAAG,IAAI,GAAG,EAA+B,CAAA;IACxD,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,MAAM,MAAM,GAAG,CAAC,OAA4C,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC,EAAE,CAAC,CAAA;IAClJ,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAE,CAAA;QACnC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC;YAC1B,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI;YAC5G,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK;YAC3D,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YAC5C,OAAO,EAAE;gBACP,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,MAAe,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClH,GAAG,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAe,EAAE,CAAC,CAAC;aAClH;YACD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,kBAAkB,EAAE,QAAQ,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA,CAAC,CAAC;SACtE,CAAC,CAAA;QACF,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,OAAO;YAAE,OAAM;QACnE,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,UAAU,EAAE,IAAI;gBACjI,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;oBACtE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;oBACvC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;wBACpE,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE;qBAC3H,CAAC,CAAC,CAAC,EAAE,CAAC;iBACR,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YACT,IAAI,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,SAAS;gBAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;QAC1F,CAAC;aAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC5C,MAAM,OAAO,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,CAAA;YACxE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI;gBAC5K,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC/I,MAAM,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;YACpE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;QAC/F,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -28,26 +28,23 @@ async function run(ctx, tui, cancelled) {
28
28
  const onCancelled = () => { operation?.abort(new Error('runner unloaded')); };
29
29
  cancelled.addEventListener('abort', onCancelled, { once: true });
30
30
  const offInterrupt = tui.onInterrupt(() => {
31
+ if (controller.interruptVisible())
32
+ return;
31
33
  if (shellActive) {
32
34
  operation?.abort(new Error('Shell interrupted by user'));
33
35
  return;
34
36
  }
35
- if (controller.interruptVisible())
36
- return;
37
37
  operation?.abort(new Error('cancelled by user'));
38
- controller.agent?.cancel({ kind: 'user' });
38
+ controller.agent?.cancel({ kind: 'user' }, { keepInbox: true });
39
39
  });
40
- let queueEditInFlight = false;
41
- const offQueueEdit = tui.onQueueEdit(() => {
42
- if (queueEditInFlight)
43
- return;
44
- queueEditInFlight = true;
45
- void controller.editLatestFollowup().then((submission) => {
46
- tui.resolveQueueEdit(submission ?? null);
40
+ const offQueueEdit = tui.onQueueEdit(request => {
41
+ void controller.editLatestFollowup(request).then(submission => {
42
+ tui.resolveQueueEdit(submission ?? null, request);
47
43
  }).catch((error) => {
48
- tui.resolveQueueEdit(null);
49
- tui.notice(error instanceof Error ? error.message : String(error), { level: 'error' });
50
- }).finally(() => { queueEditInFlight = false; });
44
+ tui.resolveQueueEdit(null, request);
45
+ if (!request?.signal.aborted)
46
+ tui.notice(error instanceof Error ? error.message : String(error), { level: 'error' });
47
+ });
51
48
  });
52
49
  const offRewind = tui.onRewind(() => {
53
50
  if (operation !== undefined || controller.agent?.status !== 'idle')
@@ -88,43 +85,54 @@ async function run(ctx, tui, cancelled) {
88
85
  // Re-check after the read: an unmount may have aborted while it awaited.
89
86
  if (cancelled.aborted)
90
87
  break;
91
- if (submission.text.trim() === '' && submission.images.length === 0 && !submission.files?.length)
88
+ const agent = controller.agent;
89
+ const receipt = tui.pendingInputs?.receipt?.(submission);
90
+ const sessionId = receipt?.sessionId ?? agent?.session?.id;
91
+ if (receipt !== undefined && receipt.sessionId !== agent?.id) {
92
+ tui.restoreInput(submission, receipt.sessionId);
92
93
  continue;
94
+ }
95
+ if (submission.text.trim() === '' && submission.images.length === 0 && !submission.files?.length) {
96
+ tui.pendingInputs?.acknowledge?.(submission);
97
+ continue;
98
+ }
93
99
  const shellCommand = composerShellCommand(submission);
94
100
  if (shellCommand !== undefined) {
95
101
  operation = new AbortController();
96
102
  shellActive = true;
97
103
  try {
98
- const agent = controller.agent;
99
104
  if (agent === undefined)
100
105
  throw new Error('Start a session before running a Shell command.');
101
106
  await runComposerShell(ctx, agent, shellCommand, operation.signal, { share: composerShellShare(submission) });
107
+ tui.pendingInputs?.acknowledge?.(submission);
102
108
  }
103
109
  catch (error) {
104
110
  if (!operation.signal.aborted) {
105
- tui.restoreInput(submission);
111
+ tui.restoreInput(submission, sessionId);
106
112
  tui.notice(error instanceof Error ? error.message : String(error), { level: 'error' });
107
113
  }
114
+ else
115
+ tui.pendingInputs?.acknowledge?.(submission);
108
116
  }
109
117
  finally {
110
118
  shellActive = false;
111
119
  operation = undefined;
112
120
  }
113
121
  }
114
- else if (!submission.literal && !submission.files?.length && looksLikeSlashCommand(submission.text, submission.images)) {
122
+ else if (!submission.literal && looksLikeSlashCommand(submission.text, submission.images)) {
115
123
  operation = new AbortController();
116
124
  try {
117
- const handled = await controller.execute(submission.text, operation.signal, submission.images);
125
+ const handled = await controller.execute(submission, operation.signal);
126
+ if (handled)
127
+ tui.pendingInputs?.acknowledge?.(submission);
118
128
  if (!handled) {
119
- if (submission.images.length > 0)
120
- tui.restoreInput(submission);
129
+ tui.restoreInput(submission, sessionId);
121
130
  const command = stripComposerImageMarkers(submission.text, submission.images).trim();
122
131
  tui.notice(`Unknown command: ${command.split(/\s/u, 1)[0] ?? command}`, { level: 'error' });
123
132
  }
124
133
  }
125
134
  catch (error) {
126
- if (submission.images.length > 0)
127
- tui.restoreInput(submission);
135
+ tui.restoreInput(submission, sessionId);
128
136
  if (!operation.signal.aborted) {
129
137
  tui.notice(error instanceof Error ? error.message : String(error), { level: 'error' });
130
138
  }
@@ -138,18 +146,19 @@ async function run(ctx, tui, cancelled) {
138
146
  // `/loop` used to intercept submissions here. The command is gone: a
139
147
  // repeated prompt is what the agent's own turns are for, and a
140
148
  // process-local resender could run unattended through a token budget.
141
- await controller.send(submission);
149
+ await controller.send(submission, agent);
150
+ tui.pendingInputs?.acknowledge?.(submission);
142
151
  }
143
152
  catch (error) {
144
- tui.restoreInput(submission);
153
+ tui.restoreInput(submission, sessionId);
145
154
  tui.notice(error instanceof Error ? error.message : String(error), { level: 'error' });
146
155
  }
147
156
  }
148
157
  }
149
- if (!cancelled.aborted) {
150
- // EOF means "no more input", not "discard the accepted work". Let the
151
- // active turn and every queued follow-up settle so pipe/CI mode observes
152
- // the same transcript and errors as an interactive terminal.
158
+ if (!cancelled.aborted && !tui.interactive) {
159
+ // Pipe EOF means "no more input", not "discard the accepted work".
160
+ // Interactive quit instead hands shutdown to the host immediately,
161
+ // including when background children have not settled yet.
153
162
  const agent = controller.agent;
154
163
  if (agent !== undefined) {
155
164
  const stopped = Promise.withResolvers();
@@ -170,7 +179,7 @@ async function run(ctx, tui, cancelled) {
170
179
  }
171
180
  }
172
181
  }
173
- else {
182
+ else if (cancelled.aborted) {
174
183
  // An unmount cancel aborts the in-flight command instead of waiting.
175
184
  operation?.abort(new Error('runner unloaded'));
176
185
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runtime/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/runtime/runner.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { SessionRuntime } from "../session/session-controller.js";
6
6
  export const name = 'omdsh-session-runtime';
7
- export const inject = ['tui', 'agentDefaultModel', 'agents', 'agentPresets', 'tools', 'workingDirectory'];
7
+ export const inject = ['tui', 'agentDefaultModel', 'agents', 'agentPresets', 'tools', 'workingDirectory', 'commands'];
8
8
  export function apply(ctx, config = {}) {
9
9
  const tui = ctx.get('tui');
10
10
  if (tui === undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"session-runtime.js","sourceRoot":"","sources":["../../src/runtime/session-runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEjE,MAAM,CAAC,MAAM,IAAI,GAAG,uBAAuB,CAAA;AAC3C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAA;AAkBzG,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,SAAiB,EAAE;IACrD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAA2B,CAAA;IACpD,IAAI,GAAG,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IACjG,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IAChH,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;IACpC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAA;AAC9F,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA"}
1
+ {"version":3,"file":"session-runtime.js","sourceRoot":"","sources":["../../src/runtime/session-runtime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AAEjE,MAAM,CAAC,MAAM,IAAI,GAAG,uBAAuB,CAAA;AAC3C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAA;AAkBrH,MAAM,UAAU,KAAK,CAAC,GAAY,EAAE,SAAiB,EAAE;IACrD,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAA2B,CAAA;IACpD,IAAI,GAAG,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IACjG,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAA;IAChH,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAA;IACpC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAA;AAC9F,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA"}
@@ -0,0 +1,21 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import type { SettingsDescriptor } from '@deepseek-ai/dsh-settings';
3
+ interface DraftField {
4
+ key: string;
5
+ label: string;
6
+ help: string;
7
+ defaultValue: unknown;
8
+ parse(raw: string): unknown;
9
+ format(value: unknown): string;
10
+ validate(value: unknown): void;
11
+ }
12
+ /** Shared status line for staged settings; the count includes pending field writes. */
13
+ export declare function settingsDraftSummary(ctx: Context, count: number): string;
14
+ /** Resolve changed fields against a fresh revision without mutating the caller's draft. */
15
+ export declare function rebaseSettingsDraft(ctx: Context, baseline: SettingsDescriptor, latest: SettingsDescriptor, changes: ReadonlyMap<string, unknown>, fields: readonly Pick<DraftField, 'key' | 'label' | 'defaultValue' | 'format'>[], signal: AbortSignal, prefix?: readonly string[]): Promise<{
16
+ section: SettingsDescriptor;
17
+ changes: Map<string, unknown>;
18
+ } | undefined>;
19
+ /** Cancel drops only this form's draft. Apply writes all changed fields in one mutation. */
20
+ export declare function editSettingsDraft(ctx: Context, section: SettingsDescriptor, title: string, fields: readonly DraftField[], signal: AbortSignal, resetOnly?: boolean): Promise<void>;
21
+ export {};
@@ -0,0 +1,166 @@
1
+ /** A single Harness namespace edited through a staged, revision-fenced form. */
2
+ import { isDeepStrictEqual } from 'node:util';
3
+ import { walkPath } from "../commands/auth-providers.js";
4
+ import { askPrompt } from "../prompt-intents.js";
5
+ import { resolveUiLanguage, uiText } from "../locale/index.js";
6
+ const object = (value) => typeof value === 'object' && value !== null && !Array.isArray(value) ? value : {};
7
+ const list = { allowCustom: false, notify: false, localize: ['title', 'question', 'actions'] };
8
+ /** Shared status line for staged settings; the count includes pending field writes. */
9
+ export function settingsDraftSummary(ctx, count) {
10
+ const language = resolveUiLanguage(ctx.tui.prefs().uiLanguage);
11
+ if (!ctx.settings.writable)
12
+ return uiText(language, 'Profile · Read only');
13
+ if (count === 1)
14
+ return uiText(language, 'Profile · 1 pending change · Apply to save');
15
+ return count === 0 ? uiText(language, 'Profile · No pending changes')
16
+ : uiText(language, 'Profile · {count} pending changes · Apply to save', { count });
17
+ }
18
+ /** Resolve changed fields against a fresh revision without mutating the caller's draft. */
19
+ export async function rebaseSettingsDraft(ctx, baseline, latest, changes, fields, signal, prefix = []) {
20
+ const text = (source) => uiText(resolveUiLanguage(ctx.tui.prefs().uiLanguage), source);
21
+ const next = structuredClone(latest), rebased = new Map(changes);
22
+ for (const field of fields) {
23
+ if (!changes.has(field.key))
24
+ continue;
25
+ const path = [...prefix, field.key];
26
+ const read = (value) => walkPath(value, path);
27
+ const owns = (value) => Object.hasOwn(object(walkPath(value, prefix)), field.key);
28
+ const desired = changes.get(field.key);
29
+ const state = (section) => [read(section.value), read(section.base), owns(section.user), read(section.user),
30
+ section.secrets?.filter(secret => secret.path.slice(0, path.length).join('.') === path.join('.'))];
31
+ const alreadyApplied = desired === undefined ? !owns(next.user) : owns(next.user) && isDeepStrictEqual(read(next.user), desired);
32
+ if (alreadyApplied) {
33
+ rebased.delete(field.key);
34
+ continue;
35
+ }
36
+ if (isDeepStrictEqual(state(baseline), state(next)))
37
+ continue;
38
+ const protectedField = [baseline, next].some(section => section.secrets?.some(secret => path.slice(0, secret.path.length).join('.') === secret.path.join('.') || secret.path.slice(0, path.length).join('.') === path.join('.')));
39
+ const format = (value) => protectedField ? text('Protected value') : field.format(value);
40
+ const answer = await ctx.tui.prompt({ ...list, title: 'Setting changed elsewhere', question: field.label, dismissLabel: 'Back',
41
+ detail: text('Choose which value to keep in the draft. Apply saves the result.'),
42
+ options: [
43
+ { label: text('Keep my change'), value: 'mine', description: format(desired ?? read(next.base) ?? field.defaultValue) + (desired === undefined ? ' · ' + text('Inherited') : '') },
44
+ { label: text('Use latest value'), value: 'latest', description: format(read(next.value) ?? field.defaultValue) },
45
+ ], signal });
46
+ if (answer === null || signal.aborted)
47
+ return undefined;
48
+ if (answer === 'latest')
49
+ rebased.delete(field.key);
50
+ }
51
+ return signal.aborted ? undefined : { section: next, changes: rebased };
52
+ }
53
+ /** Cancel drops only this form's draft. Apply writes all changed fields in one mutation. */
54
+ export async function editSettingsDraft(ctx, section, title, fields, signal, resetOnly = false) {
55
+ if (!fields.length || signal.aborted)
56
+ return;
57
+ let baseline = structuredClone(section);
58
+ const changes = new Map();
59
+ const text = (source) => uiText(resolveUiLanguage(ctx.tui.prefs().uiLanguage), source);
60
+ const inherited = (field) => object(baseline.base)[field.key] ?? field.defaultValue;
61
+ const effective = (field) => changes.has(field.key) ? changes.get(field.key) ?? inherited(field) : object(baseline.value)[field.key] ?? field.defaultValue;
62
+ const summary = (field) => field.format(effective(field)) + ' · ' + text(changes.has(field.key) ? 'Draft' : Object.hasOwn(object(baseline.user), field.key) ? 'Profile override' : 'Inherited');
63
+ let diagnostic = '', focused = fields[0].key, stale = false;
64
+ const reload = async () => {
65
+ const latest = ctx.settings.describe({ redactSecrets: true }).find(item => item.ns === baseline.ns);
66
+ if (latest === undefined) {
67
+ diagnostic = 'These settings are no longer available. Cancel and reopen Settings.';
68
+ return;
69
+ }
70
+ const result = await rebaseSettingsDraft(ctx, baseline, latest, changes, fields, signal);
71
+ if (result === undefined)
72
+ return;
73
+ baseline = result.section;
74
+ changes.clear();
75
+ for (const [key, value] of result.changes)
76
+ changes.set(key, value);
77
+ stale = false;
78
+ diagnostic = 'Latest settings loaded. Your remaining changes are ready to apply.';
79
+ };
80
+ const restore = async () => {
81
+ const choice = await ctx.tui.prompt({ ...list, title, question: 'Choose a setting to restore', detail: text('Restoring inheritance changes the draft. Apply saves it.'), initialValue: focused,
82
+ options: fields.map(field => ({ label: text(field.label), value: field.key, description: summary(field), preview: text(field.help) })), signal });
83
+ const field = fields.find(field => field.key === choice);
84
+ if (field !== undefined && !signal.aborted) {
85
+ changes.set(field.key, undefined);
86
+ focused = field.key;
87
+ diagnostic = '';
88
+ }
89
+ };
90
+ const edit = async (field) => {
91
+ let input = effective(field) === undefined ? '' : field.format(effective(field)), error = '';
92
+ while (!signal.aborted) {
93
+ const raw = await ctx.tui.prompt(askPrompt({ localize: ['title', 'question', 'actions'], title, question: field.label, initialInput: input,
94
+ detail: [text(field.help), text(error || 'Leave empty to restore inheritance.')].join('\n'), signal }));
95
+ if (raw === null)
96
+ return;
97
+ input = raw;
98
+ try {
99
+ const value = raw.trim() ? field.parse(raw) : undefined;
100
+ if (value !== undefined)
101
+ field.validate(value);
102
+ changes.set(field.key, value);
103
+ diagnostic = '';
104
+ return;
105
+ }
106
+ catch (cause) {
107
+ error = cause instanceof Error ? cause.message : String(cause);
108
+ }
109
+ }
110
+ };
111
+ if (resetOnly && ctx.settings.writable)
112
+ await restore();
113
+ while (!signal.aborted) {
114
+ const writable = ctx.settings.writable;
115
+ const choice = await ctx.tui.prompt({ ...list, title, question: 'Edit the draft, then Apply to save', detail: [settingsDraftSummary(ctx, changes.size), text(diagnostic)].filter(Boolean).join('\n'), initialValue: focused,
116
+ options: [...fields.map(field => ({ label: text(field.label), value: field.key, description: summary(field), preview: text(field.help), disabled: !writable })),
117
+ { label: text('Restore inherited setting…'), value: '@restore', disabled: !writable },
118
+ ...(stale ? [{ label: text('Load latest and keep draft'), value: '@reload' }] : []),
119
+ { label: text('Apply'), value: '@apply', disabled: !writable || !changes.size }, { label: text('Cancel'), value: '@cancel' }], signal });
120
+ if (choice === null || choice === '@cancel' || signal.aborted)
121
+ return;
122
+ if (!ctx.settings.writable)
123
+ continue;
124
+ const field = fields.find(field => field.key === choice);
125
+ if (field !== undefined) {
126
+ focused = field.key;
127
+ await edit(field);
128
+ continue;
129
+ }
130
+ if (choice === '@reload') {
131
+ await reload();
132
+ continue;
133
+ }
134
+ if (choice === '@restore') {
135
+ await restore();
136
+ continue;
137
+ }
138
+ if (choice !== '@apply' || !changes.size)
139
+ continue;
140
+ try {
141
+ signal.throwIfAborted();
142
+ const current = ctx.settings.describe({ redactSecrets: true }).find(item => item.ns === baseline.ns);
143
+ if (current === undefined)
144
+ throw new Error('These settings are no longer available. Cancel and reopen Settings.');
145
+ if (current.revision !== baseline.revision) {
146
+ stale = true;
147
+ throw new Error('Configuration changed. Load the latest settings to continue with your draft.');
148
+ }
149
+ for (const field of fields)
150
+ if (changes.has(field.key) && effective(field) !== undefined)
151
+ field.validate(effective(field));
152
+ const ops = [...changes].map(([key, value]) => value === undefined ? { op: 'unset', path: [key] } : { op: 'set', path: [key], value });
153
+ await ctx.settings.mutate(baseline.ns, ops, baseline.revision);
154
+ if (!signal.aborted)
155
+ ctx.tui.notice(`${text(title)}: ${text('Settings saved.')}`);
156
+ return;
157
+ }
158
+ catch (cause) {
159
+ if (signal.aborted)
160
+ return;
161
+ stale = ctx.settings.describe({ redactSecrets: true }).some(item => item.ns === baseline.ns && item.revision !== baseline.revision);
162
+ diagnostic = cause instanceof Error ? cause.message : String(cause);
163
+ }
164
+ }
165
+ }
166
+ //# sourceMappingURL=settings-draft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings-draft.js","sourceRoot":"","sources":["../../src/runtime/settings-draft.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ export function preferencePaths(id) {
27
27
  const status = { statusEnabled: 'enabled', statusLabels: 'labels', statusContextStyle: 'contextStyle' };
28
28
  if (Object.hasOwn(status, id))
29
29
  return [['statusBar', status[id]]];
30
- if (['theme', 'colors', 'motion', 'mathMode', 'mermaidMode', 'hideThinking', 'editor', 'terminalTitle', 'terminalState', 'pasteProtection', 'copyOnSelect', 'mouseInteraction', 'checkUpdates', 'startupChangelog', 'notifications', 'notificationFocus', 'notificationThreshold'].includes(id))
30
+ if (['uiLanguage', 'theme', 'colors', 'motion', 'mathMode', 'mermaidMode', 'hideThinking', 'editor', 'terminalTitle', 'terminalState', 'busyEnter', 'pasteProtection', 'copyOnSelect', 'mouseInteraction', 'checkUpdates', 'startupChangelog', 'notifications', 'notificationFocus', 'notificationThreshold'].includes(id))
31
31
  return [[id]];
32
32
  return undefined;
33
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"settings-preferences.js","sourceRoot":"","sources":["../../src/runtime/settings-preferences.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAG7C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE3D,MAAM,UAAU,iBAAiB,CAAC,QAAkB,EAAE,IAAc;IAClE,MAAM,KAAK,GAAqB,EAAE,CAAA;IAClC,MAAM,IAAI,GAAG,CAAC,MAAe,EAAE,KAAc,EAAE,IAAc,EAAQ,EAAE;QACrE,IAAI,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,OAAM;QAC5C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzE,MAAM,GAAG,GAAG,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAiC,CAAC,CAAC,CAAC,EAAE,CAAA;YAClG,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;QACzF,CAAC;aAAM,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAC/E,CAAC,CAAA;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,IAAI,CAAE,QAA+C,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1H,OAAO,KAAK,CAAA;AACd,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,IAAI,EAAE,KAAK,aAAa;QAAE,OAAO,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAA;IAClE,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACpJ,MAAM,MAAM,GAA2B,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAA;IAC/H,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAAE,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAE,CAAC,CAAC,CAAA;IAClE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,mBAAmB,EAAE,uBAAuB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9S,OAAO,SAAS,CAAA;AAClB,CAAC"}
1
+ {"version":3,"file":"settings-preferences.js","sourceRoot":"","sources":["../../src/runtime/settings-preferences.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAG7C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAE3D,MAAM,UAAU,iBAAiB,CAAC,QAAkB,EAAE,IAAc;IAClE,MAAM,KAAK,GAAqB,EAAE,CAAA;IAClC,MAAM,IAAI,GAAG,CAAC,MAAe,EAAE,KAAc,EAAE,IAAc,EAAQ,EAAE;QACrE,IAAI,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,OAAM;QAC5C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzE,MAAM,GAAG,GAAG,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAiC,CAAC,CAAC,CAAC,EAAE,CAAA;YAClG,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;QACzF,CAAC;aAAM,IAAI,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IAC/E,CAAC,CAAA;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,IAAI,CAAE,QAA+C,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAC1H,OAAO,KAAK,CAAA;AACd,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,IAAI,EAAE,KAAK,aAAa;QAAE,OAAO,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAA;IAClE,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,cAAc,CAAC,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACpJ,MAAM,MAAM,GAA2B,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAA;IAC/H,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAAE,OAAO,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAE,CAAC,CAAC,CAAA;IAClE,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE,eAAe,EAAE,mBAAmB,EAAE,uBAAuB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACzU,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -1,4 +1,3 @@
1
- /** Startup release notes and update-notification Cordis plugin. */
2
1
  import type { Context } from '@deepseek-ai/cordis';
3
2
  export declare const name = "omdsh-startup-notices";
4
3
  export declare const inject: string[];
@@ -1,10 +1,12 @@
1
+ import { choosePrompt } from "../prompt-intents.js";
2
+ import { readReference } from "./reference-reader.js";
1
3
  /** Startup release notes and update-notification Cordis plugin. */
2
4
  import { mkdir, readFile, writeFile } from 'node:fs/promises';
3
5
  import { homedir } from 'node:os';
4
6
  import { join } from 'node:path';
5
7
  import { fileURLToPath } from 'node:url';
6
8
  import { registerCommands } from "../commands/registration.js";
7
- import { changelogText, resolveStartupChangelog } from "../session/release-notes.js";
9
+ import { changelogText, parseChangelog, resolveStartupChangelog } from "../session/release-notes.js";
8
10
  import { APP_VERSION, PACKAGE_NAME } from "../session/package-metadata.js";
9
11
  import { checkForUpdate } from "../session/update-check.js";
10
12
  export const name = 'omdsh-startup-notices';
@@ -109,15 +111,42 @@ class StartupNotices {
109
111
  }
110
112
  }
111
113
  }
112
- async function showChangelog(config, invocation) {
114
+ async function showChangelog(tui, config, invocation) {
113
115
  const input = invocation.rawInput.trim().toLowerCase();
114
116
  if (input !== '' && input !== 'full')
115
117
  return { kind: 'error', text: 'Usage: /changelog [full]' };
116
118
  try {
117
119
  const changelog = await readFile(config.changelogPath, 'utf8');
118
- // Release notes are output, so they belong in the transcript with the rest of
119
- // it; a long one folds behind its first rows instead of taking the screen.
120
- return { kind: 'success', text: changelogText(changelog, input === 'full') };
120
+ if (tui.interactive !== true)
121
+ return { kind: 'success', text: changelogText(changelog, input === 'full') };
122
+ const abort = new AbortController();
123
+ const signal = AbortSignal.any([invocation.signal, abort.signal]);
124
+ const surface = {
125
+ prompt: (request) => tui.prompt({ ...request, signal, onSuperseded: () => { abort.abort(); } }),
126
+ ...(tui.copyText === undefined ? {} : { copyText: (text, label) => tui.copyText(text, label) }),
127
+ };
128
+ const entries = parseChangelog(changelog);
129
+ if (input === 'full' || entries.length === 0) {
130
+ await readReference(surface, 'Changelog', changelogText(changelog, true), signal);
131
+ return { kind: 'success' };
132
+ }
133
+ let selected = entries[0].version;
134
+ while (!signal.aborted) {
135
+ const answer = await surface.prompt(choosePrompt({ localize: ['title', 'question'], title: 'Changelog', question: 'Choose a release', filterable: true, initialValue: selected,
136
+ options: entries.map(entry => ({ label: `v${entry.version}`, value: entry.version,
137
+ description: [entry.markdown.split('\n')[0]?.match(/\d{4}-\d{2}-\d{2}/u)?.[0],
138
+ ...Object.entries(entry.categoryCounts).map(([category, count]) => `${count} ${category.toLowerCase()}`)].filter(Boolean).join(' · '),
139
+ })),
140
+ }));
141
+ if (answer === null || signal.aborted)
142
+ break;
143
+ const entry = entries.find(item => item.version === answer);
144
+ if (entry === undefined)
145
+ break;
146
+ selected = entry.version;
147
+ await readReference(surface, `Changelog · v${entry.version}`, entry.markdown, signal);
148
+ }
149
+ return { kind: 'success' };
121
150
  }
122
151
  catch (error) {
123
152
  return { kind: 'error', text: 'Changelog unavailable: ' + (error instanceof Error ? error.message : String(error)) };
@@ -137,7 +166,7 @@ export function apply(ctx, config = {}) {
137
166
  name: 'changelog',
138
167
  description: 'Show recent release notes',
139
168
  input: { hint: '[full]' },
140
- handler: invocation => showChangelog(resolved, invocation),
169
+ handler: invocation => showChangelog(tui, resolved, invocation),
141
170
  }], 'omdsh changelog command');
142
171
  ctx.provide('omdshStartup', new StartupNotices(tui, resolved));
143
172
  }