@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
@@ -1,14 +1,11 @@
1
- /**
2
- * Human console over persisted scheduled reminders.
3
- * `/schedule` lists this Session's active tasks, edits a name or instruction,
4
- * opens retained delivery records, and deletes a task. Timing changes stay
5
- * with the model-facing `schedule_update` tool, whose selectors are richer
6
- * than a terminal form should collect.
7
- * @module @agi-fans/dsh-tui/command-schedule
8
- */
1
+ /** Human controls over the Harness-owned schedule and its delivery records. */
2
+ import { createPromptBrowser } from "../runtime/prompt-browser.js";
3
+ import { resolveUiLanguage, uiText } from "../locale/index.js";
4
+ import { scheduleCatalog } from "./schedule-catalog.js";
5
+ import { openScheduleHistory } from "./schedule-history.js";
9
6
  import { formatRelativeUntil } from "../chrome/relative-time.js";
10
7
  import { registerCommands } from "./registration.js";
11
- import { askPrompt } from "../prompt-intents.js";
8
+ import { askPrompt, confirmPrompt } from "../prompt-intents.js";
12
9
  export const name = 'omdsh-command-schedule';
13
10
  export const inject = ['commands', 'schedule', 'tui'];
14
11
  /** UTC instant rendered without locale dependence. */
@@ -16,213 +13,249 @@ export function formatInstant(iso) {
16
13
  const parsed = new Date(iso);
17
14
  return Number.isNaN(parsed.getTime()) ? iso : `${parsed.toISOString().slice(0, 16).replace('T', ' ')} UTC`;
18
15
  }
19
- /**
20
- * The reminder alone, from a catalog entry that also carries its binding.
21
- *
22
- * `catalog()` widens a record with the owning session, its liveness, and the last
23
- * delivery. Those describe the catalog's view, not the reminder, and passing them
24
- * back as `expected` would make an optimistic update compare fields the record
25
- * does not have.
26
- */
27
- function recordOf(entry) {
28
- const { sessionId: _session, status: _status, lastDelivery: _delivery, ...record } = entry;
29
- return record;
30
- }
31
16
  /**
32
17
  * When a reminder fires, as a reader would ask it.
33
18
  *
34
- * `scheduledAt` is the committed next instant while the reminder is active and
35
- * the final one after it stops, so an inactive reminder must not be described as
36
- * pending. The absolute instant stays alongside the relative one: the relative
37
- * reading answers "how soon", the absolute one is what a reader checks against
38
- * their own clock or another zone.
19
+ * `scheduledAt` is the committed next instant while the reminder can still fire
20
+ * and the final one after it ends, so an ended reminder must not be described as
21
+ * pending. A paused reminder retains its stored instant until the Host resumes it, so the
22
+ * reading states the pause instead of hiding the instant. The absolute instant
23
+ * stays alongside the relative one: the relative reading answers "how soon", the
24
+ * absolute one is what a reader checks against their own clock or another zone.
39
25
  */
40
- export function scheduleWhen(record, status, now = Date.now()) {
41
- const at = formatInstant(record.scheduledAt);
42
- if (status === 'inactive')
43
- return `ended · was ${at}`;
44
- const parsed = Date.parse(record.scheduledAt);
45
- return Number.isNaN(parsed) ? `next ${at}` : `next ${formatRelativeUntil(parsed, now)} · ${at}`;
26
+ export function scheduleWhen(record, status, now = Date.now(), language = 'en') {
27
+ const t = (source, values) => uiText(language, source, values);
28
+ const instant = record.deliveryFloorEndsAt && Date.parse(record.deliveryFloorEndsAt) > Date.parse(record.scheduledAt) ? record.deliveryFloorEndsAt : record.scheduledAt;
29
+ const at = formatInstant(status === 'ended' ? record.scheduledAt : instant);
30
+ if (status === 'ended')
31
+ return t('ended · was {time}', { time: at });
32
+ const parsed = Date.parse(instant);
33
+ const relative = formatRelativeUntil(parsed, now);
34
+ const until = relative === 'due now' ? t('due now') : t('in {duration}', { duration: relative.slice(3) });
35
+ const next = Number.isNaN(parsed) ? t('next {time}', { time: at }) : t('next {relative} · {time}', { relative: until, time: at });
36
+ return status === 'paused' ? t('paused · {next}', { next }) : next;
46
37
  }
47
38
  /** One-line rule summary; timing edits remain with `schedule_update`. */
48
- export function scheduleRule(record) {
39
+ export function scheduleRule(record, language = 'en') {
40
+ const t = (source, values) => uiText(language, source, values);
49
41
  switch (record.kind) {
50
- case 'after': return `once, ${record.afterSeconds}s after creation`;
51
- case 'at': return `once at ${formatInstant(record.scheduledAt)}`;
52
- case 'every': return `every ${record.everySeconds}s`;
53
- case 'daily': return `daily ${record.time} ${record.timeZone}`;
54
- case 'weekly': return `weekly ${record.weekdays.join(',')} ${record.time} ${record.timeZone}`;
42
+ case 'after': return t('once, {seconds}s after creation', { seconds: record.afterSeconds });
43
+ case 'at': return t('once at {time}', { time: formatInstant(record.scheduledAt) });
44
+ case 'every': return t('every {seconds}s', { seconds: record.everySeconds });
45
+ case 'daily': return t('daily {time} {zone}', { time: record.time, zone: record.timeZone });
46
+ case 'weekly': return t('weekly {days} {time} {zone}', { days: record.weekdays.join(','), time: record.time, zone: record.timeZone });
55
47
  case 'cron': return `cron ${record.expression} ${record.timeZone}`;
48
+ case 'rrule': return `rrule ${record.rrule.replace(/\r?\n/gu, ' ')}`;
56
49
  }
57
50
  }
58
- function historyText(result) {
59
- if ('code' in result) {
60
- return result.code === 'schedule_not_found'
61
- ? 'This reminder no longer exists.'
62
- : 'These delivery records are no longer addressable.';
63
- }
64
- if (result.records.length === 0) {
65
- return 'No deliveries have been recorded yet.\n\nA reminder is recorded after its message reaches this Session\'s durable log.';
66
- }
67
- const rows = result.records.map((record) => `| ${formatInstant(record.deliveredAt)} | ${formatInstant(record.scheduledAt)} | ${(record.prompt ?? '—').replace(/\|/gu, '\\|')} |`);
68
- return [
69
- `Deliveries · newest first · retention ${result.retention.days} days / ${result.retention.records} records`,
70
- '',
71
- '| Delivered | Scheduled | Prompt |',
72
- '|---|---|---|',
73
- ...rows,
74
- '',
75
- ...(result.earlierRecordsUnavailable || result.earlierRecordsPruned
76
- ? ['Earlier records are unavailable; they are never reconstructed from the Session log.']
77
- : []),
78
- ].join('\n');
79
- }
80
- function missText(result) {
81
- if (!('updated' in result) || result.updated)
82
- return undefined;
83
- if (!('code' in result))
84
- return 'The reminder was not updated.';
85
- switch (result.code) {
86
- case 'schedule_not_found': return 'This reminder no longer exists.';
87
- case 'schedule_ended': return 'This reminder has already ended.';
88
- case 'schedule_conflict': return 'The reminder changed elsewhere; reopen /schedule and try again.';
51
+ const text = (ctx, source, values) => uiText(resolveUiLanguage(ctx.tui.prefs().uiLanguage), source, values);
52
+ const list = { allowCustom: false, notify: false };
53
+ const failure = (error) => error instanceof Error ? error.message : String(error);
54
+ function blocked(ctx, record, action) {
55
+ if (record.executionActive)
56
+ return 'This task is queued or running. Manage its execution in the destination conversation.';
57
+ if (action === 'run') {
58
+ if (record.target.kind === 'session' && ctx.get('workspaceRegistry')?.archivedSessionIds.includes(record.target.sessionId))
59
+ return 'The destination conversation is archived. Restore it before running this task.';
60
+ if (record.deliveryFloorEndsAt && Date.parse(record.deliveryFloorEndsAt) > Date.now())
61
+ return text(ctx, 'Run now is available after {time}.', { time: formatInstant(record.deliveryFloorEndsAt) });
89
62
  }
63
+ return undefined;
90
64
  }
91
- async function edit(ctx, invocation, record, field) {
92
- const value = await ctx.tui.prompt(askPrompt({
93
- title: field === 'title' ? 'Reminder name' : 'Reminder instruction',
94
- question: field === 'title' ? 'Rename this reminder' : 'What should the reminder say?',
95
- detail: field === 'title'
96
- ? 'The name appears in the task list and reminder catalog.'
97
- : 'The instruction is delivered to this Session when the reminder fires.',
98
- initialInput: field === 'title' ? record.title : record.prompt,
99
- signal: invocation.signal,
100
- }));
101
- invocation.signal.throwIfAborted();
102
- if (value === null)
103
- return { kind: 'success' };
104
- const result = await ctx.schedule.update({
105
- sessionId: invocation.agent.session.id,
106
- id: record.id,
107
- expected: record,
108
- ...(field === 'title' ? { title: value } : { prompt: value }),
109
- });
110
- if ('code' in result && 'message' in result)
111
- return { kind: 'error', text: result.message };
112
- const miss = missText(result);
113
- if (miss !== undefined)
114
- return { kind: 'error', text: miss };
115
- if (!('updated' in result) || !result.updated)
116
- return { kind: 'error', text: 'The reminder was not updated.' };
117
- return {
118
- kind: 'success',
119
- text: `Updated ${field === 'title' ? 'name' : 'instruction'} for "${result.record.title}".`,
65
+ async function manage(ctx, invocation, catalog, id) {
66
+ const { signal } = invocation;
67
+ const t = (source, values) => text(ctx, source, values);
68
+ let diagnostic = '', initialValue = 'history', rows = [], rowsKey = '';
69
+ const current = () => catalog.snapshot().entries.find(entry => entry.id === id);
70
+ const detail = () => {
71
+ const snapshot = catalog.snapshot(), record = current(), language = resolveUiLanguage(ctx.tui.prefs().uiLanguage);
72
+ return [
73
+ ...(record ? [record.title, scheduleRule(record, language), scheduleWhen(record, record.status, Date.now(), language), record.prompt,
74
+ ...(record.executionActive ? [t(blocked(ctx, record, 'edit'))] : []),
75
+ ...(!record.executionActive && record.deliveryFloorEndsAt && Date.parse(record.deliveryFloorEndsAt) > Date.now() ? [t(blocked(ctx, record, 'run'))] : []),
76
+ ] : [t('This reminder no longer exists.')]),
77
+ ...(snapshot.error ? [t('Could not refresh scheduled tasks. Showing the last loaded state; refresh before making changes.')] : []), diagnostic,
78
+ ].filter(Boolean).join('\n');
120
79
  };
121
- }
122
- async function manage(ctx, invocation, record, status) {
123
- for (;;) {
124
- invocation.signal.throwIfAborted();
125
- const action = await ctx.tui.prompt({
126
- title: `Scheduled · ${record.title}`,
127
- question: `${scheduleRule(record)} · ${scheduleWhen(record, status)}`,
128
- detail: record.prompt,
129
- options: [
130
- { label: 'View delivery history', value: 'history', description: 'Open the retained delivery records for this reminder.' },
131
- { label: 'Edit name', value: 'title', description: 'Rename the reminder without changing its timing.' },
132
- { label: 'Edit instruction', value: 'prompt', description: 'Change what is delivered when it fires.' },
133
- { label: 'Delete reminder', value: 'delete', description: 'Stop future delivery and remove saved records.' },
134
- ],
135
- allowCustom: false,
136
- notify: false,
137
- signal: invocation.signal,
138
- });
139
- invocation.signal.throwIfAborted();
140
- if (action === null)
141
- return { kind: 'success' };
80
+ const options = () => {
81
+ const record = current(), unavailable = catalog.snapshot().error || record === undefined;
82
+ const busy = unavailable || record.executionActive === true;
83
+ const runReason = record && blocked(ctx, record, 'run');
84
+ // Retain row identity when only the countdown changes.
85
+ const key = JSON.stringify([unavailable, busy, record?.status, runReason, resolveUiLanguage(ctx.tui.prefs().uiLanguage)]);
86
+ if (key === rowsKey)
87
+ return rows;
88
+ rowsKey = key;
89
+ rows = [
90
+ { label: t('View delivery history'), value: 'history', disabled: !record },
91
+ { label: t(record?.status === 'active' ? 'Pause reminder' : 'Resume reminder'), value: record?.status === 'active' ? 'pause' : 'resume', disabled: busy || record?.status === 'ended' },
92
+ { label: t('Run now'), value: 'run', disabled: busy || Boolean(record?.target.kind === 'session' && ctx.get('workspaceRegistry')?.archivedSessionIds.includes(record.target.sessionId)),
93
+ description: runReason ? t(runReason) : t('Deliver the instruction now without moving the scheduled occurrence.') },
94
+ { label: t('Edit name'), value: 'title', disabled: busy },
95
+ { label: t('Edit instruction'), value: 'prompt', disabled: busy },
96
+ { label: t('Delete reminder'), value: 'delete', disabled: busy },
97
+ { label: t('Refresh'), value: 'refresh' }, { label: t('Back'), value: 'back' },
98
+ ];
99
+ return rows;
100
+ };
101
+ while (!signal.aborted) {
102
+ const action = await ctx.tui.prompt({ ...list, title: t('Scheduled task'), question: t('Manage this reminder'), detail: detail(), refreshDocument: detail,
103
+ options: options(), refreshOptions: options, initialValue, signal });
104
+ if (signal.aborted || action == null || action === 'back')
105
+ return;
106
+ initialValue = action;
107
+ if (action === 'refresh') {
108
+ diagnostic = '';
109
+ await catalog.refresh();
110
+ continue;
111
+ }
112
+ await catalog.refresh();
113
+ if (signal.aborted)
114
+ return;
115
+ if (catalog.snapshot().error)
116
+ continue;
117
+ const record = current();
118
+ if (!record)
119
+ continue;
142
120
  if (action === 'history') {
143
- const history = await ctx.schedule.history({ sessionId: invocation.agent.session.id, id: record.id, limit: 20 });
144
- await ctx.tui.prompt({
145
- title: `Deliveries · ${record.title}`,
146
- question: scheduleRule(record),
147
- detail: historyText(history),
148
- options: [{ label: 'Back', value: 'back' }],
149
- allowCustom: false,
150
- notify: false,
151
- signal: invocation.signal,
152
- });
121
+ await openScheduleHistory(ctx, record, signal);
153
122
  continue;
154
123
  }
155
- if (action === 'delete') {
156
- const confirm = await ctx.tui.prompt({
157
- title: 'Delete reminder',
158
- question: `Stop "${record.title}" and remove its saved delivery records?`,
159
- options: [{ label: 'Keep reminder', value: 'keep' }, { label: 'Delete reminder', value: 'delete' }],
160
- allowCustom: false,
161
- notify: false,
162
- signal: invocation.signal,
163
- });
164
- invocation.signal.throwIfAborted();
165
- if (confirm !== 'delete')
166
- continue;
167
- const result = await ctx.schedule.delete({ sessionId: invocation.agent.session.id, id: record.id });
168
- if (!result.deleted)
169
- return { kind: 'error', text: 'That reminder is no longer available.' };
170
- return { kind: 'success', text: `Deleted reminder "${record.title}".` };
124
+ const reason = blocked(ctx, record, action);
125
+ if (reason) {
126
+ diagnostic = t(reason);
127
+ continue;
171
128
  }
172
- return edit(ctx, invocation, record, action === 'title' ? 'title' : 'prompt');
129
+ if (!['run', 'pause', 'resume', 'title', 'prompt', 'delete'].includes(action))
130
+ continue;
131
+ try {
132
+ if (action === 'run') {
133
+ const result = await ctx.schedule.run({ id: record.id }, signal);
134
+ if (signal.aborted)
135
+ return;
136
+ diagnostic = 'code' in result ? t(result.code === 'schedule_not_found' ? 'This reminder no longer exists.' : 'The task is already queued, running, or waiting for its minimum run interval.')
137
+ : t('Instruction delivered. This does not mean model execution has completed.');
138
+ }
139
+ else {
140
+ let patch = {};
141
+ if (action === 'pause' || action === 'resume') {
142
+ if ((action === 'pause' && record.status !== 'active') || (action === 'resume' && record.status !== 'paused'))
143
+ continue;
144
+ patch = { active: action === 'resume' };
145
+ }
146
+ else if (action === 'delete') {
147
+ const confirm = await confirmPrompt(request => ctx.tui.prompt(request), { title: t('Delete reminder'), question: t('Delete “{title}” and its saved delivery records?', { title: record.title }),
148
+ detail: t('Sessions and messages already delivered are retained.'), acceptLabel: t('Delete reminder'), cancelLabel: t('Keep reminder'), signal });
149
+ if (!confirm || signal.aborted)
150
+ continue;
151
+ }
152
+ else {
153
+ const value = await ctx.tui.prompt(askPrompt({ title: t(action === 'title' ? 'Reminder name' : 'Reminder instruction'), question: t(action === 'title' ? 'Rename this reminder' : 'What should the reminder say?'),
154
+ initialInput: action === 'title' ? record.title : record.prompt, signal }));
155
+ if (value === null || signal.aborted)
156
+ continue;
157
+ patch = action === 'title' ? { title: value } : { prompt: value };
158
+ }
159
+ // A confirmation or editor can outlive the displayed state. Preserve its CAS baseline.
160
+ await catalog.refresh();
161
+ if (signal.aborted)
162
+ return;
163
+ const latest = current();
164
+ if (catalog.snapshot().error || !latest)
165
+ continue;
166
+ if (latest.executionActive) {
167
+ diagnostic = t(blocked(ctx, latest, action));
168
+ continue;
169
+ }
170
+ const result = await ctx.schedule.edit({ id: record.id, expectedUpdatedAt: record.updatedAt ?? null,
171
+ ...(action === 'delete' ? { action: 'delete' } : { action: 'update', patch }) }, invocation.agent.session.id, signal);
172
+ if (signal.aborted)
173
+ return;
174
+ if ('code' in result)
175
+ diagnostic = t(result.code === 'schedule_not_found' ? 'This reminder no longer exists.' : 'The reminder changed elsewhere. Review its current state and retry.');
176
+ else if ('deleted' in result) {
177
+ ctx.tui.notice(t('Deleted reminder “{title}”.', { title: record.title }), { transient: true });
178
+ await catalog.refresh();
179
+ return;
180
+ }
181
+ else {
182
+ diagnostic = t(action === 'pause' ? 'Reminder paused.' : action === 'resume' ? 'Reminder resumed.' : 'Reminder updated.');
183
+ if (action === 'pause')
184
+ initialValue = 'resume';
185
+ if (action === 'resume')
186
+ initialValue = 'pause';
187
+ }
188
+ }
189
+ }
190
+ catch (error) {
191
+ if (signal.aborted)
192
+ return;
193
+ diagnostic = t('Could not complete the task action: {error}', { error: failure(error) });
194
+ }
195
+ // An acknowledged write stays successful even if this read fails.
196
+ await catalog.refresh();
173
197
  }
174
198
  }
175
199
  export async function scheduleCommand(ctx, invocation) {
176
200
  if (invocation.rawInput.trim() !== '')
177
201
  return { kind: 'error', text: 'Usage: /schedule' };
178
- const sessionId = invocation.agent.session.id;
179
- // The catalog is the only read that reports whether a reminder can still fire;
180
- // `list()` returns the records alone, so a stopped one would read as pending.
181
- const tasks = (await ctx.schedule.catalog()).filter(entry => entry.sessionId === sessionId);
182
- if (tasks.length === 0) {
183
- return {
184
- kind: 'success',
185
- text: 'No scheduled tasks in this session. Ask the agent to create one with `schedule_create`.',
186
- };
187
- }
188
- const selected = await ctx.tui.prompt({
189
- title: 'Scheduled tasks',
190
- question: tasks.length === 1 ? 'Choose the reminder' : `Choose one of ${tasks.length} reminders`,
191
- filterable: true,
192
- allowCustom: false,
193
- notify: false,
194
- emptyText: 'No scheduled tasks in this session. Ask the agent to create one with `schedule_create`.',
195
- signal: invocation.signal,
196
- options: tasks.map(entry => ({
197
- label: entry.title,
198
- value: String(entry.id),
199
- description: `${scheduleRule(entry)} · ${scheduleWhen(entry, entry.status)}`,
200
- })),
201
- });
202
- invocation.signal.throwIfAborted();
203
- if (selected === null)
202
+ const { signal } = invocation, catalog = scheduleCatalog(ctx, invocation.agent.session.id, signal);
203
+ const t = (source) => text(ctx, source);
204
+ const browse = createPromptBrowser(request => ctx.tui.prompt(request));
205
+ let rows = [], key = '', selected = '';
206
+ const options = () => {
207
+ const { entries, error } = catalog.snapshot(), language = resolveUiLanguage(ctx.tui.prefs().uiLanguage);
208
+ const next = [
209
+ ...entries.map(record => ({ label: record.title, value: record.id, description: scheduleWhen(record, record.status, Date.now(), language),
210
+ badge: { label: t(record.executionActive ? 'Queued or running' : record.status === 'active' ? 'Active' : record.status === 'paused' ? 'Paused' : 'Ended'), tone: 'muted' } })),
211
+ ...(error ? [{ label: t('Could not load scheduled tasks. Refresh to retry.'), value: '@error', disabled: true }] : []),
212
+ { label: t('Refresh'), value: '@refresh' },
213
+ ];
214
+ const nextKey = JSON.stringify(next);
215
+ if (nextKey !== key) {
216
+ key = nextKey;
217
+ rows = next;
218
+ }
219
+ return rows;
220
+ };
221
+ const listDetail = () => {
222
+ const snapshot = catalog.snapshot();
223
+ return snapshot.error ? t('Could not refresh scheduled tasks. Showing the last loaded state; refresh before making changes.')
224
+ : snapshot.entries.length ? '' : t('No scheduled tasks in this session. Ask the agent to create one with `schedule_create`.');
225
+ };
226
+ try {
227
+ await catalog.refresh();
228
+ while (!signal.aborted) {
229
+ const answer = await browse({ ...list, title: t('Scheduled tasks'), question: t('Reminders involving this session'), filterable: true,
230
+ detail: listDetail(), refreshDocument: listDetail,
231
+ options: options(), refreshOptions: options, ...(selected ? { initialValue: selected } : {}), signal });
232
+ if (signal.aborted || answer == null)
233
+ break;
234
+ if (answer === '@refresh') {
235
+ await catalog.refresh();
236
+ continue;
237
+ }
238
+ if (answer === '@error')
239
+ continue;
240
+ selected = answer;
241
+ await catalog.refresh();
242
+ if (!signal.aborted && !catalog.snapshot().error && catalog.snapshot().entries.some(record => record.id === answer))
243
+ await manage(ctx, invocation, catalog, answer);
244
+ }
204
245
  return { kind: 'success' };
205
- const record = tasks.find(entry => String(entry.id) === selected);
206
- if (record === undefined)
207
- return { kind: 'error', text: 'That reminder is no longer available.' };
208
- return manage(ctx, invocation, recordOf(record), record.status);
246
+ }
247
+ finally {
248
+ catalog.dispose();
249
+ }
209
250
  }
210
251
  export function apply(ctx) {
211
- registerCommands(ctx, [
212
- {
213
- name: 'schedule',
214
- description: 'Inspect, edit, or delete scheduled reminders',
215
- handler: async (invocation) => {
252
+ registerCommands(ctx, [{ name: 'schedule', description: 'Manage scheduled reminders and delivery history', handler: async (invocation) => {
216
253
  try {
217
254
  return await scheduleCommand(ctx, invocation);
218
255
  }
219
256
  catch (error) {
220
- if (invocation.signal.aborted)
221
- return { kind: 'error', text: 'Scheduled task action cancelled.' };
222
- return { kind: 'error', text: error instanceof Error ? error.message : String(error) };
257
+ return { kind: 'error', text: invocation.signal.aborted ? text(ctx, 'Scheduled task action cancelled.') : failure(error) };
223
258
  }
224
- },
225
- },
226
- ], 'omdsh schedule command');
259
+ } }], 'omdsh schedule command');
227
260
  }
228
261
  //# sourceMappingURL=schedule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/commands/schedule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/commands/schedule.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  /** Agent composition selection and diagnostics. */
2
2
  import type { Context } from '@deepseek-ai/cordis';
3
+ import type { CommandInvocation, CommandResult } from '@deepseek-ai/dsh-commands';
3
4
  import type { AgentPresetRegistry } from '@deepseek-ai/dsh-agent-preset-registry';
4
5
  import type { Agent } from '@deepseek-ai/dsh-agent';
5
6
  export declare const name = "omdsh-command-session-configuration";
6
7
  export declare const inject: string[];
8
+ /** Enter Creator without submitting a prompt or changing the default preset. */
9
+ export declare function startCreator(ctx: Context, invocation: CommandInvocation): Promise<CommandResult>;
7
10
  /** Read current declarations beside the exact composition retained by this Agent. */
8
11
  export declare function presetDiagnostics(registry: AgentPresetRegistry, agent: Agent, requested?: string): Promise<string>;
9
12
  export declare function apply(ctx: Context): void;