@agi-fans/dsh-tui 0.22.0 → 0.23.1

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 (282) hide show
  1. package/LICENSE +26 -0
  2. package/lib/CHANGELOG.md +219 -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 +99 -32
  38. package/lib/commands/export.js.map +1 -1
  39. package/lib/commands/files.js +11 -9
  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 +212 -128
  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 +116 -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 +115 -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 +1288 -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 +33 -20
  208. package/lib/session/session-controller.js +500 -129
  209. package/lib/session/session-controller.js.map +1 -1
  210. package/lib/session/session-library.d.ts +3 -1
  211. package/lib/session/session-library.js +15 -0
  212. package/lib/session/session-library.js.map +1 -1
  213. package/lib/session/subagent-roster.d.ts +1 -0
  214. package/lib/session/subagent-roster.js +16 -5
  215. package/lib/session/subagent-roster.js.map +1 -1
  216. package/lib/session/subagent-tracker.d.ts +2 -0
  217. package/lib/session/subagent-tracker.js +18 -0
  218. package/lib/session/subagent-tracker.js.map +1 -1
  219. package/lib/session/tui-settings.d.ts +9 -5
  220. package/lib/session/tui-settings.js +3 -1
  221. package/lib/session/tui-settings.js.map +1 -1
  222. package/lib/session/workflow-projection.d.ts +2 -1
  223. package/lib/session/workflow-projection.js +34 -4
  224. package/lib/session/workflow-projection.js.map +1 -1
  225. package/lib/views/autocomplete.d.ts +12 -12
  226. package/lib/views/autocomplete.js +54 -45
  227. package/lib/views/autocomplete.js.map +1 -1
  228. package/lib/views/context-overview.d.ts +4 -0
  229. package/lib/views/context-overview.js +43 -0
  230. package/lib/views/context-overview.js.map +1 -0
  231. package/lib/views/copy-targets.d.ts +6 -2
  232. package/lib/views/copy-targets.js +19 -14
  233. package/lib/views/copy-targets.js.map +1 -1
  234. package/lib/views/document-reader.d.ts +10 -1
  235. package/lib/views/document-reader.js +63 -6
  236. package/lib/views/document-reader.js.map +1 -1
  237. package/lib/views/event-views.js +29 -11
  238. package/lib/views/event-views.js.map +1 -1
  239. package/lib/views/file-actions.js +21 -0
  240. package/lib/views/file-actions.js.map +1 -1
  241. package/lib/views/file-browser.d.ts +98 -0
  242. package/lib/views/file-browser.js +120 -0
  243. package/lib/views/file-browser.js.map +1 -0
  244. package/lib/views/history-search.js +4 -4
  245. package/lib/views/history-search.js.map +1 -1
  246. package/lib/views/hotkey-format.d.ts +3 -2
  247. package/lib/views/hotkey-format.js +4 -3
  248. package/lib/views/hotkey-format.js.map +1 -1
  249. package/lib/views/hotkeys.js +10 -12
  250. package/lib/views/hotkeys.js.map +1 -1
  251. package/lib/views/list-view.js +16 -11
  252. package/lib/views/list-view.js.map +1 -1
  253. package/lib/views/prompt-selector.d.ts +23 -1
  254. package/lib/views/prompt-selector.js +123 -60
  255. package/lib/views/prompt-selector.js.map +1 -1
  256. package/lib/views/settings-list.d.ts +6 -1
  257. package/lib/views/settings-list.js +69 -46
  258. package/lib/views/settings-list.js.map +1 -1
  259. package/lib/views/tool-actions.d.ts +16 -0
  260. package/lib/views/tool-actions.js +29 -0
  261. package/lib/views/tool-actions.js.map +1 -0
  262. package/lib/views/trajectory-timeline.d.ts +5 -6
  263. package/lib/views/trajectory-timeline.js +25 -15
  264. package/lib/views/trajectory-timeline.js.map +1 -1
  265. package/lib/views/trajectory.d.ts +23 -2
  266. package/lib/views/trajectory.js +404 -186
  267. package/lib/views/trajectory.js.map +1 -1
  268. package/lib/views/transcript-render.d.ts +39 -15
  269. package/lib/views/transcript-render.js +406 -208
  270. package/lib/views/transcript-render.js.map +1 -1
  271. package/lib/views/transcript-types.d.ts +3 -2
  272. package/lib/views/transcript-types.js.map +1 -1
  273. package/lib/views/workflow.d.ts +16 -0
  274. package/lib/views/workflow.js +42 -0
  275. package/lib/views/workflow.js.map +1 -0
  276. package/package.json +61 -58
  277. package/lib/chrome/welcome-tips.d.ts +0 -23
  278. package/lib/chrome/welcome-tips.js +0 -24
  279. package/lib/chrome/welcome-tips.js.map +0 -1
  280. package/lib/session/steering.d.ts +0 -3
  281. package/lib/session/steering.js +0 -9
  282. package/lib/session/steering.js.map +0 -1
@@ -1,4 +1,9 @@
1
1
  /** Integration discovery commands registered through dsh-commands. */
2
+ import { createPromptBrowser } from "../runtime/prompt-browser.js";
3
+ import { readReference } from "../runtime/reference-reader.js";
4
+ import { browseTools } from "../runtime/tool-reader.js";
5
+ import { choosePrompt } from "../prompt-intents.js";
6
+ import { resolveUiLanguage, uiText } from "../locale/index.js";
2
7
  import { registerCommands } from "./registration.js";
3
8
  export const name = 'omdsh-command-integrations';
4
9
  export const inject = ['commands', 'tui'];
@@ -7,7 +12,7 @@ function compactDescription(value, maxLength = 140) {
7
12
  return normalized.length <= maxLength ? normalized : normalized.slice(0, maxLength - 1).trimEnd() + '…';
8
13
  }
9
14
  /** Render the MCP subset of the unified Harness tool catalog. */
10
- export function mcpCatalogText(tools) {
15
+ export function mcpCatalogText(tools, t = (source, values) => uiText('en', source, values)) {
11
16
  const servers = new Map();
12
17
  for (const tool of tools) {
13
18
  const match = /^mcp__(.+?)__(.+)$/u.exec(tool.name);
@@ -18,44 +23,136 @@ export function mcpCatalogText(tools) {
18
23
  servers.set(match[1], rows);
19
24
  }
20
25
  if (servers.size === 0) {
21
- return 'No MCP tools are available to this session. This does not establish whether a server is connected.';
26
+ return t('No MCP tools are available to this session. This does not establish whether a server is connected.');
22
27
  }
23
28
  const total = [...servers.values()].reduce((count, rows) => count + rows.length, 0);
24
29
  return [
25
- `MCP Tools · ${servers.size} server${servers.size === 1 ? '' : 's'} represented · ${total} tool${total === 1 ? '' : 's'}`,
30
+ t('MCP tools · Servers: {servers} · Tools: {tools}', { servers: servers.size, tools: total }),
26
31
  ...[...servers].flatMap(([server, rows]) => [
27
32
  '',
28
- `**${server} · ${rows.length} tool${rows.length === 1 ? '' : 's'}**`,
29
- '| Tool | Description |',
33
+ `**${server} · ${t('Tools: {count}', { count: rows.length })}**`,
34
+ `| ${t('Tool')} | ${t('Description')} |`,
30
35
  '|---|---|',
31
- ...rows.map(row => `| \`${row.name.replace(/\|/gu, '\\|')}\` | ${(row.description || 'No description provided.').replace(/\|/gu, '\\|')} |`),
36
+ ...rows.map(row => `| \`${row.name.replace(/\|/gu, '\\|')}\` | ${(row.description || t('No description provided.')).replace(/\|/gu, '\\|')} |`),
32
37
  ]),
33
38
  ].join('\n');
34
39
  }
40
+ /** Historical outcomes never imply that a connection is currently healthy. */
41
+ export function recentMcpCalls(events) {
42
+ const calls = new Map();
43
+ for (const event of events) {
44
+ if (event.type === 'tool/call' && event.data.name.startsWith('mcp__')) {
45
+ calls.set(event.data.callId, { id: event.data.callId, name: event.data.name, seq: event.seq, outcome: 'No result recorded', detail: '' });
46
+ }
47
+ else if (event.type === 'tool/ptc-dispatch-start' && event.data.name.startsWith('mcp__')) {
48
+ calls.set(event.data.subCallId, { id: event.data.subCallId, name: event.data.name, seq: event.seq, outcome: 'No result recorded', detail: '' });
49
+ }
50
+ else if (event.type === 'tool/result' || event.type === 'tool/ptc-dispatch') {
51
+ const result = event.type === 'tool/result' ? event.data.message : event.data;
52
+ const id = event.type === 'tool/result' ? event.data.message.toolCallId : event.data.subCallId;
53
+ let call = calls.get(id);
54
+ if (call === undefined && event.type === 'tool/ptc-dispatch' && event.data.name.startsWith('mcp__')) {
55
+ call = { id, name: event.data.name, seq: event.seq, outcome: 'No result recorded', detail: '' };
56
+ calls.set(id, call);
57
+ }
58
+ if (call !== undefined) {
59
+ call.outcome = result.isError ? 'Returned an error' : 'Completed';
60
+ call.detail = result.isError ? result.content.flatMap(block => block.type === 'text' ? [block.text] : []).join('\n') : '';
61
+ }
62
+ }
63
+ }
64
+ return [...calls.values()].slice(-10).reverse();
65
+ }
35
66
  async function showMcp(ctx, invocation) {
36
67
  if (invocation.rawInput.trim() !== '')
37
68
  return { kind: 'error', text: 'Usage: /mcp' };
38
- const tools = ctx.get('tools')?.schemas(invocation.agent).map(schema => ({
39
- name: schema.name,
40
- description: schema.description,
41
- })) ?? [];
42
- const manager = ctx.get('pluginManager');
43
- const entries = manager === undefined ? undefined : (await manager.listPlugins()).filter(entry => entry.moduleName === '@deepseek-ai/dsh-mcp-client');
44
- invocation.signal.throwIfAborted();
45
- const text = [
46
- '## MCP',
47
- 'Configure project servers in `.dsh/mcp.json` or home servers in `~/.dsh/mcp.json`, then restart omdsh.',
48
- '', '### Plugin registration',
49
- ...(entries === undefined ? ['Registration status is unavailable in this host.'] : entries.length === 0 ? ['No MCP client entries are registered.'] : entries.map(entry => `- \`${entry.entryId}\` · ${entry.enabled ? entry.fiberPhase ?? 'not mounted' : 'disabled'}`)),
50
- '',
51
- 'Plugin registration and tool availability do not verify transport health or authentication.',
52
- '', mcpCatalogText(tools),
69
+ const lifetime = new AbortController();
70
+ const signal = AbortSignal.any([invocation.signal, lifetime.signal]);
71
+ const tui = { prompt: (request) => ctx.tui.prompt({ ...request, signal, onSuperseded: () => lifetime.abort() }),
72
+ ...(ctx.tui.copyText === undefined ? {} : { copyText: (text, label) => ctx.tui.copyText(text, label) }) };
73
+ const t = (source, values) => uiText(resolveUiLanguage(ctx.tui.prefs?.().uiLanguage), source, values);
74
+ const caveat = t('Plugin registration and tool availability do not verify transport health or authentication.');
75
+ const connection = t('Live connection and authentication status are unavailable in this Harness version.');
76
+ const setup = t('Configure project servers in `.dsh/mcp.json` or home servers in `$OMDSH_HOME/mcp.json` (default `~/.dsh/mcp.json`), then restart omdsh.');
77
+ let entries, tools = [], calls = [];
78
+ let loaded = false, error = '';
79
+ const load = async () => {
80
+ try {
81
+ const next = await ctx.get('pluginManager')?.listPlugins();
82
+ signal.throwIfAborted();
83
+ const schemas = ctx.get('tools')?.schemas(invocation.agent) ?? [];
84
+ const nextEntries = next?.filter(entry => entry.moduleName === '@deepseek-ai/dsh-mcp-client');
85
+ const nextTools = schemas.filter(schema => schema.name.startsWith('mcp__')).map(schema => ({ name: schema.name, description: schema.description }));
86
+ const nextCalls = recentMcpCalls(invocation.agent.session.snapshotEvents());
87
+ entries = nextEntries;
88
+ tools = nextTools;
89
+ calls = nextCalls;
90
+ loaded = true;
91
+ error = '';
92
+ }
93
+ catch {
94
+ if (!signal.aborted)
95
+ error = t(loaded ? 'Could not refresh MCP diagnostics. Showing the last loaded state; use Refresh to try again.' : 'Could not load MCP diagnostics. Use Refresh to try again.');
96
+ }
97
+ };
98
+ const phase = (entry) => t(!entry.enabled ? 'disabled' : entry.fiberPhase ?? 'not mounted');
99
+ const document = () => [
100
+ '## MCP', error, setup, '', connection, caveat, '', '### ' + t('Plugin registration'),
101
+ ...(entries === undefined ? [t('Registration status is unavailable in this host.')] : entries.length === 0 ? [t('No MCP client entries are registered.')] : entries.map(entry => `- ${entry.entryId} · ${phase(entry)}${entry.diagnostic ? '\n ' + entry.diagnostic : ''}`)),
102
+ '', mcpCatalogText(tools, t), '', '### ' + t('Recent calls in this session'),
103
+ t('Recorded outcomes are historical; an error may come from the tool rather than the connection.'),
104
+ ...calls.map(call => `${call.name} · ${t(call.outcome)} · #${call.seq}${call.detail ? '\n' + call.detail : ''}`),
105
+ ...(calls.length === 0 ? [t('No MCP calls recorded in this session.')] : []),
53
106
  ].join('\n');
54
- return { kind: 'success', text };
107
+ await load();
108
+ signal.throwIfAborted();
109
+ if (ctx.tui.interactive === false)
110
+ return { kind: error && !loaded ? 'error' : 'success', text: document() };
111
+ const browse = createPromptBrowser(tui.prompt);
112
+ while (!signal.aborted) {
113
+ const servers = [...new Set(tools.map(tool => /^mcp__(.+?)__/u.exec(tool.name)?.[1]).filter((server) => server !== undefined))];
114
+ const answer = await browse(choosePrompt({ title: t('MCP diagnostics'), question: t('Inspect registration, available tools and recent calls'), filterable: true,
115
+ detail: [error, connection, caveat, setup, entries === undefined ? t('Registration status is unavailable in this host.') : entries.length === 0 ? t('No MCP client entries are registered.') : ''].filter(Boolean).join('\n'),
116
+ signal, options: [
117
+ ...servers.map(server => ({ label: server, value: `server:${server}`,
118
+ description: t('Tools: {count}', { count: tools.filter(tool => tool.name.startsWith(`mcp__${server}__`)).length }),
119
+ preview: calls.filter(call => call.name.startsWith(`mcp__${server}__`)).map(call => `${call.name} · ${t(call.outcome)}`).join('\n') })),
120
+ ...(entries ?? []).map((entry, index) => ({ label: String(entry.entryId), value: `entry:${index}`, description: phase(entry),
121
+ ...(entry.diagnostic ? { preview: entry.diagnostic } : {}) })),
122
+ { label: t('Available tools'), value: 'tools', description: String(tools.length) },
123
+ { label: t('Recent calls in this session'), value: 'calls', description: String(calls.length) },
124
+ { label: t('Refresh'), value: 'refresh' },
125
+ ] }));
126
+ if (signal.aborted || answer === null)
127
+ break;
128
+ if (answer === 'refresh') {
129
+ await load();
130
+ continue;
131
+ }
132
+ if (answer === 'tools') {
133
+ await browseTools(tui, tools, resolveUiLanguage(ctx.tui.prefs?.().uiLanguage), signal, 'Available tools');
134
+ continue;
135
+ }
136
+ if (answer.startsWith('server:')) {
137
+ const server = answer.slice(7);
138
+ const serverTools = tools.filter(tool => tool.name.startsWith(`mcp__${server}__`));
139
+ const recent = calls.filter(call => call.name.startsWith(`mcp__${server}__`));
140
+ await readReference(tui, server, [connection, '', mcpCatalogText(serverTools, t), '', '## ' + t('Recent calls in this session'),
141
+ ...recent.map(call => `${call.name} · ${t(call.outcome)}${call.detail ? '\n\n' + call.detail : ''}`),
142
+ ...(recent.length === 0 ? [t('No MCP calls recorded in this session.')] : [])].join('\n'), signal);
143
+ continue;
144
+ }
145
+ const entry = answer.startsWith('entry:') ? entries?.[Number(answer.slice(6))] : undefined;
146
+ const text = entry !== undefined ? [String(entry.entryId), phase(entry), entry.diagnostic, connection, t('Manage plugin configuration in /settings or /plugins.')].filter(Boolean).join('\n\n')
147
+ : answer === 'calls' ? [t('Recorded outcomes are historical; an error may come from the tool rather than the connection.'), ...calls.map(call => `${call.name} · ${t(call.outcome)} · #${call.seq}${call.detail ? '\n' + call.detail : ''}`), ...(calls.length === 0 ? [t('No MCP calls recorded in this session.')] : [])].join('\n\n') : undefined;
148
+ if (text !== undefined)
149
+ await readReference(tui, entry?.entryId ?? t('Recent calls in this session'), text, signal);
150
+ }
151
+ return { kind: 'success' };
55
152
  }
56
153
  export function apply(ctx) {
57
154
  registerCommands(ctx, [
58
- { name: 'mcp', description: 'Inspect MCP registration and available tools', handler: invocation => showMcp(ctx, invocation) },
155
+ { name: 'mcp', description: 'Inspect MCP registration, tools and recent calls', handler: invocation => showMcp(ctx, invocation) },
59
156
  ], 'omdsh integration commands');
60
157
  }
61
158
  //# sourceMappingURL=integrations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/commands/integrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/commands/integrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Context } from '@deepseek-ai/cordis';
2
+ import type { CommandInvocation } from '@deepseek-ai/dsh-commands';
3
+ export declare function browseJobs(ctx: Context, invocation: CommandInvocation, initialId?: string, stop?: boolean): Promise<void>;
@@ -0,0 +1,152 @@
1
+ /** Session-owned job navigation and non-consuming output observation. */
2
+ import { createPromptBrowser } from "../runtime/prompt-browser.js";
3
+ import { confirmPrompt, readPrompt } from "../prompt-intents.js";
4
+ import { resolveUiLanguage, uiText } from "../locale/index.js";
5
+ import { formatDuration } from "../chrome/status-line.js";
6
+ import { JOB_STATUS_WORD } from "../session/job-notice.js";
7
+ const live = (job) => job.status === 'running' || job.status === 'stopping';
8
+ const errorText = (error) => error instanceof Error ? error.message : String(error);
9
+ export async function browseJobs(ctx, invocation, initialId, stop = false) {
10
+ const lifetime = new AbortController();
11
+ const signal = AbortSignal.any([invocation.signal, lifetime.signal]);
12
+ const owner = invocation.agent.session.id;
13
+ const t = (source) => uiText(resolveUiLanguage(ctx.tui.prefs?.().uiLanguage), source);
14
+ const prompt = (request) => ctx.tui.prompt({ ...request, signal, notify: false, onSuperseded: () => lifetime.abort() });
15
+ const browse = createPromptBrowser(prompt);
16
+ let rows = [], diagnostic = '', failed = false, dirty = true;
17
+ const off = ctx.jobs.events.subscribe({ owner }, event => { if (event.type !== 'output')
18
+ dirty = true; });
19
+ const refresh = (force = false) => {
20
+ if (signal.aborted || (!force && !dirty))
21
+ return;
22
+ dirty = false;
23
+ try {
24
+ rows = ctx.jobs.list(owner);
25
+ failed = false;
26
+ diagnostic = '';
27
+ }
28
+ catch (error) {
29
+ failed = true;
30
+ diagnostic = t('Could not refresh jobs. Showing the last loaded state.') + '\n' + errorText(error);
31
+ }
32
+ };
33
+ const current = (id) => { refresh(); return rows.find(row => row.id === id); };
34
+ const status = (job) => [t(JOB_STATUS_WORD[job.status]), formatDuration(Math.max(0, (job.finishedAt ?? Date.now()) - job.startedAt)), live(job) ? job.progress : job.detail].filter(Boolean).join(' · ');
35
+ const cancel = async (id) => {
36
+ refresh(true);
37
+ const job = current(id);
38
+ if (failed || !job || job.status !== 'running' || signal.aborted)
39
+ return;
40
+ if (!await confirmPrompt(prompt, { title: t('Stop job'), question: t('Stop this background job?'), detail: `${job.label || job.kind}\n${job.id}`,
41
+ acceptLabel: t('Stop job'), cancelLabel: t('Keep running'), signal }) || signal.aborted)
42
+ return;
43
+ refresh(true);
44
+ const latest = current(id);
45
+ if (failed || !latest || latest.status !== 'running')
46
+ return;
47
+ try {
48
+ ctx.jobs.kill(latest.id, owner, 'stopped from /jobs');
49
+ dirty = true;
50
+ refresh();
51
+ }
52
+ catch (error) {
53
+ diagnostic = errorText(error);
54
+ }
55
+ };
56
+ const output = async (id) => {
57
+ const job = current(id);
58
+ if (!job || failed)
59
+ return;
60
+ let changed = true, source = { text: '' };
61
+ const unwatch = ctx.jobs.events.subscribe({ owner }, event => {
62
+ if ((event.type === 'output' ? event.id : event.job.id) === id)
63
+ changed = true;
64
+ });
65
+ const read = (following) => {
66
+ if (signal.aborted || !following || !changed)
67
+ return source;
68
+ changed = false;
69
+ try {
70
+ const state = ctx.jobs.get(job.id, owner);
71
+ const retained = ctx.jobs.readAt(job.id, 0, owner);
72
+ const text = retained.chunks.map(chunk => (chunk.gapBefore ? '\n…\n' : '') + chunk.text).join('');
73
+ // The host owns retention. The reader bounds its own snapshot and reports clipping.
74
+ const tail = text.slice(-262_144).split('\n').slice(-10_000).join('\n');
75
+ const clipped = tail.length !== text.length;
76
+ source = { text: [status(state), retained.lossy ? t('Earlier output is no longer retained.') : '',
77
+ clipped ? t('Showing the latest output; earlier text is omitted from this view.') : '',
78
+ tail || t('No retained output for this job.')].filter(Boolean).join('\n\n') };
79
+ }
80
+ catch (error) {
81
+ source = { text: source.text + '\n\n' + t('Output observation stopped:') + ' ' + errorText(error) };
82
+ }
83
+ return source;
84
+ };
85
+ let position;
86
+ const options = () => [
87
+ { label: t('Back'), value: 'back' },
88
+ { label: t('Stop job'), value: 'stop', disabled: failed || current(id)?.status !== 'running' },
89
+ { label: t('Refresh'), value: 'refresh' },
90
+ ];
91
+ try {
92
+ while (!signal.aborted) {
93
+ const action = await prompt({ ...readPrompt({ title: t('Job output'), question: job.label || job.kind, source: read(position?.following !== false),
94
+ tail: true, ...(position === undefined ? {} : { position }), onPosition: value => { position = value; }, signal }),
95
+ options: options(), refreshOptions: options, refreshDocumentSource: read });
96
+ if (signal.aborted || action === null || action === 'back')
97
+ return;
98
+ if (action === 'stop')
99
+ await cancel(id);
100
+ else if (action === 'refresh') {
101
+ refresh(true);
102
+ changed = true;
103
+ read(true);
104
+ }
105
+ }
106
+ }
107
+ finally {
108
+ unwatch();
109
+ }
110
+ };
111
+ try {
112
+ refresh(true);
113
+ if (initialId !== undefined) {
114
+ if (!failed && !current(initialId))
115
+ throw new Error(t('This job is no longer available.'));
116
+ if (stop)
117
+ await cancel(initialId);
118
+ else
119
+ await output(initialId);
120
+ return;
121
+ }
122
+ let selected, key = '', cached = [];
123
+ const options = () => {
124
+ refresh();
125
+ const next = [...rows.filter(live), ...rows.filter(job => !live(job))].map(job => ({ label: job.label || job.kind, value: job.id,
126
+ description: status(job), preview: `${job.id}\n${job.kind}`, disabled: failed }));
127
+ next.push({ label: t('Refresh'), value: '__refresh__', description: '', preview: '', disabled: false });
128
+ const nextKey = JSON.stringify(next);
129
+ if (key !== nextKey) {
130
+ cached = next;
131
+ key = nextKey;
132
+ }
133
+ return cached;
134
+ };
135
+ const overview = () => { refresh(); return diagnostic || (rows.length ? t('Select a job to inspect output or stop it.') : t('No background jobs in this session.')); };
136
+ while (!signal.aborted) {
137
+ const answer = await browse({ title: t('Background jobs'), question: '', detail: overview(), refreshDocument: overview, options: options(), refreshOptions: options,
138
+ ...(selected === undefined ? {} : { initialValue: selected }), filterable: true, allowCustom: false });
139
+ if (signal.aborted || answer === null)
140
+ return;
141
+ selected = answer;
142
+ refresh(true);
143
+ if (answer !== '__refresh__' && !failed)
144
+ await output(answer);
145
+ }
146
+ }
147
+ finally {
148
+ lifetime.abort();
149
+ off();
150
+ }
151
+ }
152
+ //# sourceMappingURL=jobs-browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs-browser.js","sourceRoot":"","sources":["../../src/commands/jobs-browser.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,4 @@
1
- /**
2
- * Human-facing background-job surface over the Harness job registry.
3
- * `/jobs` lists this session's jobs, `/jobs <id>` replays one run's observer-only
4
- * narration, and `/jobs kill <id>` requests cancellation.
5
- *
6
- * Reading `stdout` and `stderr` stays with the model: those channels feed the
7
- * registry's consuming cursor, so a human read would steal the model's next
8
- * `job_output`. The `log` channel is the opposite — the Harness marks it as
9
- * producer narration that only observers see, which is why a workflow's phase
10
- * lines can be replayed here without taking anything from the model.
11
- *
12
- * @module @agi-fans/dsh-tui/command-jobs
13
- */
1
+ /** Background jobs: interactive observation and line-mode narration over Harness ownership. */
14
2
  import type { Context } from '@deepseek-ai/cordis';
15
3
  import { type JobOutputRead, type JobView } from '@deepseek-ai/dsh-jobs';
16
4
  export declare const name = "omdsh-command-jobs";
@@ -22,7 +10,8 @@ export declare function jobsText(jobs: readonly JobView[], now: number): string;
22
10
  *
23
11
  * `readAt` from zero reads retained bytes at absolute offsets without moving the
24
12
  * model's cursor; only `log` chunks are printed, because `stdout` and `stderr`
25
- * belong to the model's own read. A lossy read says so rather than pretending the
13
+ * are omitted from this line-mode narration. The interactive browser observes all
14
+ * channels with the same non-consuming API. A lossy read says so rather than pretending the
26
15
  * run started where retention begins.
27
16
  */
28
17
  export declare function runText(snapshot: JobView, read: JobOutputRead, now: number): string;
@@ -1,22 +1,11 @@
1
- /**
2
- * Human-facing background-job surface over the Harness job registry.
3
- * `/jobs` lists this session's jobs, `/jobs <id>` replays one run's observer-only
4
- * narration, and `/jobs kill <id>` requests cancellation.
5
- *
6
- * Reading `stdout` and `stderr` stays with the model: those channels feed the
7
- * registry's consuming cursor, so a human read would steal the model's next
8
- * `job_output`. The `log` channel is the opposite — the Harness marks it as
9
- * producer narration that only observers see, which is why a workflow's phase
10
- * lines can be replayed here without taking anything from the model.
11
- *
12
- * @module @agi-fans/dsh-tui/command-jobs
13
- */
1
+ /** Background jobs: interactive observation and line-mode narration over Harness ownership. */
14
2
  import { JobId } from '@deepseek-ai/dsh-jobs';
15
3
  import { formatDuration } from "../chrome/status-line.js";
16
4
  import { JOB_STATUS_WORD } from "../session/job-notice.js";
5
+ import { browseJobs } from "./jobs-browser.js";
17
6
  import { registerCommands } from "./registration.js";
18
7
  export const name = 'omdsh-command-jobs';
19
- export const inject = ['commands', 'jobs'];
8
+ export const inject = ['commands', 'jobs', 'tui'];
20
9
  function elapsed(snapshot, now) {
21
10
  const end = snapshot.finishedAt ?? now;
22
11
  return formatDuration(Math.max(0, end - snapshot.startedAt));
@@ -66,7 +55,8 @@ function killJob(ctx, invocation) {
66
55
  *
67
56
  * `readAt` from zero reads retained bytes at absolute offsets without moving the
68
57
  * model's cursor; only `log` chunks are printed, because `stdout` and `stderr`
69
- * belong to the model's own read. A lossy read says so rather than pretending the
58
+ * are omitted from this line-mode narration. The interactive browser observes all
59
+ * channels with the same non-consuming API. A lossy read says so rather than pretending the
70
60
  * run started where retention begins.
71
61
  */
72
62
  export function runText(snapshot, read, now) {
@@ -96,9 +86,13 @@ function showRun(ctx, invocation, id) {
96
86
  return { kind: 'error', text: error instanceof Error ? error.message : String(error) };
97
87
  }
98
88
  }
99
- function showJobs(ctx, invocation) {
89
+ async function showJobs(ctx, invocation) {
100
90
  const raw = invocation.rawInput.trim();
101
91
  if (raw === '') {
92
+ if (ctx.tui.interactive === true) {
93
+ await browseJobs(ctx, invocation);
94
+ return { kind: 'success' };
95
+ }
102
96
  return { kind: 'success', text: jobsText(ctx.jobs.list(invocation.agent.session.id), Date.now()) };
103
97
  }
104
98
  const [verb, ...rest] = raw.split(/\s+/u);
@@ -106,20 +100,34 @@ function showJobs(ctx, invocation) {
106
100
  const id = rest[0];
107
101
  if (id === undefined || rest.length > 1)
108
102
  return { kind: 'error', text: 'Usage: /jobs kill <id>' };
103
+ if (ctx.tui.interactive === true) {
104
+ await browseJobs(ctx, invocation, id, true);
105
+ return { kind: 'success' };
106
+ }
109
107
  return killJob(ctx, { ...invocation, rawInput: id });
110
108
  }
111
- if (rest.length === 0)
109
+ if (rest.length === 0) {
110
+ if (ctx.tui.interactive === true) {
111
+ await browseJobs(ctx, invocation, verb);
112
+ return { kind: 'success' };
113
+ }
112
114
  return showRun(ctx, invocation, verb);
115
+ }
113
116
  return { kind: 'error', text: 'Usage: /jobs [<id>|kill <id>]' };
114
117
  }
115
118
  export function apply(ctx) {
119
+ const closing = new AbortController();
116
120
  registerCommands(ctx, [
117
121
  {
118
122
  name: 'jobs',
119
123
  description: 'List background jobs, replay one run, or stop one',
120
124
  input: { hint: '[<id>|kill <id>]' },
121
- handler: invocation => showJobs(ctx, invocation),
125
+ handler: invocation => {
126
+ const active = ctx.get('omdshSession')?.interactionSignal;
127
+ return showJobs(ctx, { ...invocation, signal: AbortSignal.any([invocation.signal, closing.signal, ...(active ? [active] : [])]) });
128
+ },
122
129
  },
123
130
  ], 'omdsh jobs command');
131
+ ctx.effect(() => () => { closing.abort(); });
124
132
  }
125
133
  //# sourceMappingURL=jobs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/commands/jobs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,KAAK,EAAoC,MAAM,uBAAuB,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,CAAC,MAAM,IAAI,GAAG,oBAAoB,CAAA;AACxC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;AAE1C,SAAS,OAAO,CAAC,QAAiB,EAAE,GAAW;IAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,IAAI,GAAG,CAAA;IACtC,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA;AAC9D,CAAC;AAED,SAAS,UAAU,CAAC,QAAiB,EAAE,GAAW;IAChD,MAAM,KAAK,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;IACxE,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IACtG,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,QAAQ,CAAC,IAAwB,EAAE,GAAW;IAC5D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,qCAAqC,CAAA;IACnE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,CAAA;IAChG,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAA;IACrC,MAAM,OAAO,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,UAAU,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,WAAW,CAAC;SACpG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;SAC3B,IAAI,CAAC,KAAK,CAAC,CAAA;IACd,OAAO;QACL,UAAU,OAAO,EAAE;QACnB,EAAE;QACF,gCAAgC;QAChC,eAAe;QACf,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,EAAE,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;QAChH,EAAE;QACF,iFAAiF;KAClF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,OAAO,CAAC,GAAY,EAAE,UAA6B;IAC1D,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;IACrC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAA;IACvE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAA;QAC3F,OAAO;YACL,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,wBAAwB;SAClF,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;IACxF,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,QAAiB,EAAE,IAAmB,EAAE,GAAW;IACzE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,MAAM,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAA;IAClF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBAC1C,CAAC,CAAC,yCAAyC;gBAC3C,CAAC,CAAC,sEAAsE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxF,CAAC;IACD,OAAO;QACL,MAAM;QACN,EAAE;QACF,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,0CAA0C,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;KACpG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,OAAO,CAAC,GAAY,EAAE,UAA6B,EAAE,EAAU;IACtE,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAA;IAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;IAC5E,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAA;IAC3F,IAAI,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAA;IAC3G,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;IACxF,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,GAAY,EAAE,UAA6B;IAC3D,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;IACtC,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAA;IACpG,CAAC;IACD,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACzC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAClB,IAAI,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAA;QACjG,OAAO,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAA;IACtD,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,IAAK,CAAC,CAAA;IAC7D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAA;AACjE,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,gBAAgB,CAAC,GAAG,EAAE;QACpB;YACE,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,mDAAmD;YAChE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;YACnC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;SACjD;KACF,EAAE,oBAAoB,CAAC,CAAA;AAC1B,CAAC"}
1
+ {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/commands/jobs.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAI/F,OAAO,EAAE,KAAK,EAAoC,MAAM,uBAAuB,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEpD,MAAM,CAAC,MAAM,IAAI,GAAG,oBAAoB,CAAA;AACxC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;AAEjD,SAAS,OAAO,CAAC,QAAiB,EAAE,GAAW;IAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,IAAI,GAAG,CAAA;IACtC,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAA;AAC9D,CAAC;AAED,SAAS,UAAU,CAAC,QAAiB,EAAE,GAAW;IAChD,MAAM,KAAK,GAAG,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAA;IACxE,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IACtG,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,QAAQ,CAAC,IAAwB,EAAE,GAAW;IAC5D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,qCAAqC,CAAA;IACnE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM,CAAA;IAChG,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAA;IACrC,MAAM,OAAO,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,UAAU,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,WAAW,CAAC;SACpG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;SAC3B,IAAI,CAAC,KAAK,CAAC,CAAA;IACd,OAAO;QACL,UAAU,OAAO,EAAE;QACnB,EAAE;QACF,gCAAgC;QAChC,eAAe;QACf,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,EAAE,QAAQ,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;QAChH,EAAE;QACF,iFAAiF;KAClF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,OAAO,CAAC,GAAY,EAAE,UAA6B;IAC1D,MAAM,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;IACrC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAA;IACvE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAA;QAC3F,OAAO;YACL,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,OAAO,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,wBAAwB;SAClF,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;IACxF,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,OAAO,CAAC,QAAiB,EAAE,IAAmB,EAAE,GAAW;IACzE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,IAAI,MAAM,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAA;IAClF,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;gBAC1C,CAAC,CAAC,yCAAyC;gBAC3C,CAAC,CAAC,sEAAsE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxF,CAAC;IACD,OAAO;QACL,MAAM;QACN,EAAE;QACF,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,0CAA0C,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;KACpG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,OAAO,CAAC,GAAY,EAAE,UAA6B,EAAE,EAAU;IACtE,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAA;IAC7C,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;IAC5E,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAA;IAC3F,IAAI,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAA;IAC3G,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;IACxF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,GAAY,EAAE,UAA6B;IACjE,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;IACtC,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;QACf,IAAI,GAAG,CAAC,GAAG,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAAC,MAAM,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;QAAC,CAAC;QACnG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAA;IACpG,CAAC;IACD,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACzC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QAClB,IAAI,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAA;QACjG,IAAI,GAAG,CAAC,GAAG,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAAC,MAAM,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;QAAC,CAAC;QAC7G,OAAO,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAA;IACtD,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,GAAG,CAAC,GAAG,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;YAAC,MAAM,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,IAAK,CAAC,CAAC;YAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;QAAC,CAAC;QAC1G,OAAO,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,IAAK,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAA;AACjE,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAA;IACrC,gBAAgB,CAAC,GAAG,EAAE;QACpB;YACE,IAAI,EAAE,MAAM;YACZ,WAAW,EAAE,mDAAmD;YAChE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE;YACnC,OAAO,EAAE,UAAU,CAAC,EAAE;gBACpB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,iBAAiB,CAAA;gBACzD,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,GAAG,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YACpI,CAAC;SACF;KACF,EAAE,oBAAoB,CAAC,CAAA;IACxB,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAA,CAAC,CAAC,CAAC,CAAA;AAC7C,CAAC"}
@@ -1,5 +1,6 @@
1
1
  /** Model/provider selection command registered through dsh-commands. */
2
2
  import type { Context } from '@deepseek-ai/cordis';
3
+ import type { CommandInvocation, CommandResult } from '@deepseek-ai/dsh-commands';
3
4
  export declare const name = "omdsh-command-model";
4
5
  export declare const inject: string[];
5
6
  /** One public-catalog model row used by query resolution (no private metadata). */
@@ -27,4 +28,6 @@ export type ModelQueryResolution = {
27
28
  * fetches the catalog and performs the side effects.
28
29
  */
29
30
  export declare function resolveModelQuery(query: string, catalog: readonly ModelCatalogEntry[]): ModelQueryResolution;
31
+ /** Shared picker retains favorites, reasoning defaults and session/default scope. */
32
+ export declare function openModelPicker(ctx: Context, invocation: Pick<CommandInvocation, 'agent' | 'signal'>, sessionOnly?: boolean, providerId?: string, favoritesOnly?: boolean): Promise<CommandResult>;
30
33
  export declare function apply(ctx: Context): void;