mixdog 0.9.85 → 0.9.87

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 (102) hide show
  1. package/README.md +7 -1
  2. package/package.json +4 -3
  3. package/src/defaults/agents.json +12 -0
  4. package/src/defaults/skills/setup/SKILL.md +44 -12
  5. package/src/help.mjs +40 -9
  6. package/src/lib/keychain-cjs.cjs +11 -1
  7. package/src/rules/agent/43-title-agent.md +22 -0
  8. package/src/rules/shared/01-tool.md +3 -3
  9. package/src/runtime/agent/orchestrator/agent-trace-format.mjs +4 -2
  10. package/src/runtime/agent/orchestrator/mcp/client.mjs +24 -0
  11. package/src/runtime/agent/orchestrator/providers/admission-scheduler.mjs +84 -3
  12. package/src/runtime/agent/orchestrator/providers/oauth-usage.mjs +125 -16
  13. package/src/runtime/agent/orchestrator/providers/openai-codex-metadata.mjs +2 -2
  14. package/src/runtime/agent/orchestrator/session/context-utils.mjs +73 -45
  15. package/src/runtime/agent/orchestrator/session/eager-dispatch.mjs +15 -18
  16. package/src/runtime/agent/orchestrator/session/loop/context-overflow.mjs +1 -1
  17. package/src/runtime/agent/orchestrator/session/loop/tool-helpers.mjs +13 -0
  18. package/src/runtime/agent/orchestrator/session/manager/ask-session.mjs +135 -9
  19. package/src/runtime/agent/orchestrator/session/manager/pending-messages.mjs +31 -12
  20. package/src/runtime/agent/orchestrator/session/manager/session-close.mjs +4 -0
  21. package/src/runtime/agent/orchestrator/session/manager/session-lifecycle.mjs +14 -0
  22. package/src/runtime/agent/orchestrator/session/manager/turn-checkpoint.mjs +170 -0
  23. package/src/runtime/agent/orchestrator/session/manager/turn-interruption.mjs +45 -6
  24. package/src/runtime/agent/orchestrator/session/manager.mjs +3 -0
  25. package/src/runtime/agent/orchestrator/session/store-summary-reader.mjs +26 -0
  26. package/src/runtime/agent/orchestrator/session/token-bpe.mjs +42 -0
  27. package/src/runtime/agent/orchestrator/session/token-native.mjs +186 -0
  28. package/src/runtime/agent/orchestrator/session/tool-batch.mjs +15 -5
  29. package/src/runtime/agent/orchestrator/tools/builtin/bash-tool.mjs +20 -0
  30. package/src/runtime/agent/orchestrator/tools/builtin/builtin-tools.mjs +9 -2
  31. package/src/runtime/agent/orchestrator/tools/builtin/shell-job-process.mjs +24 -0
  32. package/src/runtime/agent/orchestrator/tools/env-scrub.mjs +8 -0
  33. package/src/runtime/agent/orchestrator/tools/graph-manifest.json +11 -11
  34. package/src/runtime/agent/orchestrator/tools/lib/pwsh-standby-pool.mjs +286 -0
  35. package/src/runtime/agent/orchestrator/tools/patch-manifest.json +11 -11
  36. package/src/runtime/agent/orchestrator/tools/patch-tool-defs.mjs +4 -3
  37. package/src/runtime/agent/orchestrator/tools/shell-command.mjs +152 -18
  38. package/src/runtime/agent/orchestrator/tools/token-binary-fetcher.mjs +201 -0
  39. package/src/runtime/agent/orchestrator/tools/token-manifest.json +26 -0
  40. package/src/runtime/channels/lib/webhook/relay-tunnel.mjs +3 -3
  41. package/src/runtime/media/adapters/gemini-video.mjs +1 -1
  42. package/src/runtime/media/renditions.mjs +1 -1
  43. package/src/runtime/media/store.mjs +1 -1
  44. package/src/runtime/memory/lib/memory-action-handlers.mjs +4 -1
  45. package/src/runtime/memory/tool-defs.mjs +19 -3
  46. package/src/runtime/shared/atomic-file.mjs +25 -14
  47. package/src/runtime/shared/automation-attachments.mjs +3 -3
  48. package/src/runtime/shared/child-guardian.mjs +15 -5
  49. package/src/runtime/shared/child-spawn-gate.mjs +6 -12
  50. package/src/runtime/shared/resource-admission.mjs +7 -3
  51. package/src/runtime/shared/turn-snapshot.mjs +0 -3
  52. package/src/session-runtime/lifecycle-api.mjs +49 -9
  53. package/src/session-runtime/prewarm.mjs +35 -0
  54. package/src/session-runtime/provider-auth-api.mjs +8 -0
  55. package/src/session-runtime/provider-usage.mjs +30 -5
  56. package/src/session-runtime/remote-control.mjs +8 -47
  57. package/src/session-runtime/remote-transcript.mjs +3 -7
  58. package/src/session-runtime/route-preparation.mjs +24 -0
  59. package/src/session-runtime/runtime-core.mjs +286 -548
  60. package/src/session-runtime/session-lifecycle.mjs +378 -0
  61. package/src/session-runtime/session-turn-api.mjs +9 -2
  62. package/src/session-runtime/workflow-agents-api.mjs +3 -0
  63. package/src/standalone/agent-shard/shard-child.mjs +300 -0
  64. package/src/standalone/agent-shard/shard-pool.mjs +443 -0
  65. package/src/standalone/agent-tool/job-views.mjs +329 -0
  66. package/src/standalone/agent-tool/spawn-flow.mjs +629 -0
  67. package/src/standalone/agent-tool/tag-registry.mjs +340 -0
  68. package/src/standalone/agent-tool.mjs +112 -941
  69. package/src/standalone/channel-daemon-transport.mjs +126 -185
  70. package/src/standalone/channel-daemon.mjs +9 -10
  71. package/src/standalone/usage-dashboard.mjs +23 -1
  72. package/src/tui/App.jsx +362 -2569
  73. package/src/tui/app/app-view.jsx +504 -0
  74. package/src/tui/app/channel-pickers.mjs +3 -8
  75. package/src/tui/app/create-app-pickers.mjs +313 -0
  76. package/src/tui/app/prompt-submit.mjs +501 -0
  77. package/src/tui/app/route-pickers.mjs +117 -152
  78. package/src/tui/app/settings-picker.mjs +90 -89
  79. package/src/tui/app/shell-layout.mjs +563 -0
  80. package/src/tui/app/slash-commands.mjs +7 -7
  81. package/src/tui/app/slash-dispatch.mjs +0 -45
  82. package/src/tui/app/usage-context-panels.mjs +288 -0
  83. package/src/tui/app/use-copy-selection.mjs +56 -0
  84. package/src/tui/app/use-global-key-input.mjs +151 -0
  85. package/src/tui/app/use-pasted-buffers.mjs +115 -0
  86. package/src/tui/app/use-prompt-draft-flow.mjs +167 -0
  87. package/src/tui/app/use-prompt-hint.mjs +58 -0
  88. package/src/tui/app/use-prompt-queue-history.mjs +100 -0
  89. package/src/tui/app/use-terminal-chrome.mjs +72 -0
  90. package/src/tui/app/use-transcript-activity.mjs +131 -0
  91. package/src/tui/app/use-welcome-prompt-hint.mjs +96 -0
  92. package/src/tui/components/StatusLine.jsx +1 -1
  93. package/src/tui/components/tool-execution/ResultBody.jsx +1 -1
  94. package/src/tui/dist/index.mjs +9857 -9159
  95. package/src/tui/engine/session-api-ext.mjs +47 -9
  96. package/src/tui/engine.mjs +7 -1
  97. package/src/tui/figures.mjs +0 -1
  98. package/src/ui/statusline-format.mjs +0 -1
  99. package/src/hooks/lib/permission-evaluator.cjs +0 -24
  100. package/src/lib/config-cjs.cjs +0 -61
  101. package/src/runtime/shared/launcher-control.mjs +0 -258
  102. package/src/runtime/shared/workspace-router.mjs +0 -259
@@ -0,0 +1,313 @@
1
+ // Picker/panel factory wiring, extracted from App.jsx. Every create*Picker
2
+ // factory (theme/effort, resume, core memory, extensions, maintenance,
3
+ // onboarding, channels, provider setup, model, routes, settings) plus the
4
+ // slash dispatcher instantiate here in one scope, preserving the original
5
+ // order and the lazy-getter forward references between them.
6
+ import { createThemeEffortPickers, themeNotice } from './theme-effort-pickers.mjs';
7
+ import { clean, formatSessionMessageCount, formatSessionUpdatedAt, modelSwitchNotice, workflowDisplayName, workflowSwitchNotice } from './app-format.mjs';
8
+ import { createResumePicker } from './resume-picker.mjs';
9
+ import { createCoreMemoryPicker } from './core-memory-picker.mjs';
10
+ import { parseMemoryCommand, parseMemoryCoreRows } from './input-parsers.mjs';
11
+ import { createExtensionPickers } from './extension-pickers.mjs';
12
+ import { theme } from '../theme.mjs';
13
+ import { copyToClipboard } from './clipboard.mjs';
14
+ import { createMaintenancePickers } from './maintenance-pickers.mjs';
15
+ import { formatDuration } from '../time-format.mjs';
16
+ import { createOnboardingSteps } from './onboarding-steps.mjs';
17
+ import { createChannelPickers } from './channel-pickers.mjs';
18
+ import { createProviderSetupPicker } from './provider-setup-picker.mjs';
19
+ import { createModelPicker } from './model-picker.mjs';
20
+ import { createRoutePickers, outputStyleNotice } from './route-pickers.mjs';
21
+ import { agentModelParts, agentModelProfile, routeLabel, routeModelLabel } from './model-options.mjs';
22
+ import { createSettingsPicker } from './settings-picker.mjs';
23
+ import { displayModelName } from '../../ui/model-display.mjs';
24
+ import { createSlashDispatch } from './slash-dispatch.mjs';
25
+ import { normalizeSlashCommandName } from './slash-commands.mjs';
26
+ export function createAppPickers({
27
+ state,
28
+ store,
29
+ setPicker,
30
+ setProviderPrompt,
31
+ setChannelPrompt,
32
+ setHookPrompt,
33
+ setSettingsPrompt,
34
+ setContextPanel,
35
+ setOnboardingActive,
36
+ closeUsagePanel,
37
+ oauthSubmitRef,
38
+ clearModelCaches,
39
+ onboardingRef,
40
+ providerModelsCacheRef,
41
+ searchModelsCacheRef,
42
+ modelPickerRequestRef,
43
+ onboardingPrefetchSeqRef,
44
+ settingsHeavyCacheRef,
45
+ livePickerRef,
46
+ disabledSkills,
47
+ setDisabledSkills,
48
+ enterProject,
49
+ openProjectPicker,
50
+ requestExit,
51
+ openUsagePanel,
52
+ openContextPicker,
53
+ }) {
54
+ // Theme/effort picker cluster — same dep set as the project picker; the
55
+ // destructured openers are used inside handlers defined later in the body.
56
+ const { openThemePicker, openEffortPicker } = createThemeEffortPickers({
57
+ state,
58
+ store,
59
+ setPicker,
60
+ setProviderPrompt,
61
+ setChannelPrompt,
62
+ setHookPrompt,
63
+ setSettingsPrompt,
64
+ setContextPanel,
65
+ closeUsagePanel,
66
+ clean,
67
+ });
68
+ // Resume picker — independent (store + setPicker + two session formatters).
69
+ const { openResumePicker } = createResumePicker({
70
+ store,
71
+ setPicker,
72
+ formatSessionUpdatedAt,
73
+ formatSessionMessageCount,
74
+ });
75
+ // Core-memory picker cluster. The Esc-return target is passed per entry
76
+ // point ({ returnTo }): Settings threads openSettingsPicker, standalone
77
+ // /memory passes null so Esc closes instead of surfacing Settings.
78
+ // Only openMemoryCorePicker is called from the App body; the entry-action /
79
+ // add / edit / delete openers are internal to the factory (reached through
80
+ // the picker's own onSelect closures), so they stay unbound here.
81
+ const { openMemoryCorePicker } = createCoreMemoryPicker({
82
+ store,
83
+ setPicker,
84
+ setSettingsPrompt,
85
+ parseMemoryCoreRows,
86
+ });
87
+ const {
88
+ openMcpServersPicker,
89
+ openMcpPicker,
90
+ openProjectSkillsPicker,
91
+ openSkillsPicker,
92
+ openSkillDetailPicker,
93
+ beginAddPlugin,
94
+ openPluginDetailPicker,
95
+ openInstalledPluginsPicker,
96
+ openPluginsPicker,
97
+ openHooksPicker,
98
+ } = createExtensionPickers({
99
+ store,
100
+ theme,
101
+ clean,
102
+ copyToClipboard,
103
+ setPicker,
104
+ getPicker: () => livePickerRef.current,
105
+ setProviderPrompt,
106
+ setChannelPrompt,
107
+ setHookPrompt,
108
+ setSettingsPrompt,
109
+ getDisabledSkills: () => disabledSkills,
110
+ setDisabledSkills,
111
+ });
112
+ const {
113
+ openUpdatePicker,
114
+ openAutoClearPicker,
115
+ openProfilePicker,
116
+ } = createMaintenancePickers({
117
+ store,
118
+ theme,
119
+ formatDuration,
120
+ setPicker,
121
+ setProviderPrompt,
122
+ setChannelPrompt,
123
+ setHookPrompt,
124
+ setSettingsPrompt,
125
+ setContextPanel,
126
+ closeUsagePanel,
127
+ });
128
+ // Onboarding wizard + channel setup picker factories. Instantiated here —
129
+ // after the onboarding refs above (const-TDZ) — with later-defined openers
130
+ // (openProviderSetupPicker/openOutputStylePicker) threaded as lazy getters
131
+ // that resolve the live binding at call time.
132
+ const { onboardingWarnReopen, openOnboardingAuthStep } = createOnboardingSteps({
133
+ store,
134
+ setPicker,
135
+ setProviderPrompt,
136
+ setChannelPrompt,
137
+ setHookPrompt,
138
+ setSettingsPrompt,
139
+ setOnboardingActive,
140
+ onboardingRef,
141
+ providerModelsCacheRef,
142
+ onboardingPrefetchSeqRef,
143
+ openProviderSetupPicker: (...a) => openProviderSetupPicker(...a),
144
+ openThemePicker,
145
+ openOutputStylePicker: (...a) => openOutputStylePicker(...a),
146
+ });
147
+ const {
148
+ openChannelTypeActionsPicker,
149
+ openChannelSettingTypePicker,
150
+ openChannelSetupPicker,
151
+ } = createChannelPickers({
152
+ store,
153
+ setPicker,
154
+ setProviderPrompt,
155
+ setChannelPrompt,
156
+ setHookPrompt,
157
+ setSettingsPrompt,
158
+ setContextPanel,
159
+ onboardingWarnReopen,
160
+ });
161
+ const { openProviderSetupPicker } = createProviderSetupPicker({
162
+ store,
163
+ setPicker,
164
+ setProviderPrompt,
165
+ setChannelPrompt,
166
+ setHookPrompt,
167
+ setSettingsPrompt,
168
+ setContextPanel,
169
+ closeUsagePanel,
170
+ oauthSubmitRef,
171
+ clearModelCaches,
172
+ });
173
+ const { openModelPicker } = createModelPicker({
174
+ store,
175
+ getState: () => state,
176
+ setPicker,
177
+ setProviderPrompt,
178
+ setChannelPrompt,
179
+ setHookPrompt,
180
+ setSettingsPrompt,
181
+ providerModelsCacheRef,
182
+ searchModelsCacheRef,
183
+ modelPickerRequestRef,
184
+ clearModelCaches,
185
+ modelSwitchNotice,
186
+ openProviderSetupPicker,
187
+ });
188
+ const {
189
+ openSearchPicker,
190
+ openAgentsPicker,
191
+ openWorkflowPicker,
192
+ openOutputStylePicker,
193
+ } = createRoutePickers({
194
+ store,
195
+ state,
196
+ setPicker,
197
+ setProviderPrompt,
198
+ setChannelPrompt,
199
+ setHookPrompt,
200
+ setSettingsPrompt,
201
+ setContextPanel,
202
+ closeUsagePanel,
203
+ clean,
204
+ routeLabel,
205
+ agentModelParts,
206
+ agentModelProfile,
207
+ workflowSwitchNotice,
208
+ openModelPicker: (...a) => openModelPicker(...a),
209
+ });
210
+ const { openSettingsPicker } = createSettingsPicker({
211
+ store,
212
+ state,
213
+ setPicker,
214
+ setProviderPrompt,
215
+ setChannelPrompt,
216
+ setHookPrompt,
217
+ setSettingsPrompt,
218
+ settingsHeavyCacheRef,
219
+ formatDuration,
220
+ displayModelName,
221
+ routeModelLabel,
222
+ workflowDisplayName,
223
+ workflowSwitchNotice,
224
+ themeNotice,
225
+ openModelPicker: (...a) => openModelPicker(...a),
226
+ openSearchPicker: (...a) => openSearchPicker(...a),
227
+ openAgentsPicker: (...a) => openAgentsPicker(...a),
228
+ openWorkflowPicker: (...a) => openWorkflowPicker(...a),
229
+ openOutputStylePicker: (...a) => openOutputStylePicker(...a),
230
+ openProviderSetupPicker: (...a) => openProviderSetupPicker(...a),
231
+ openThemePicker: (...a) => openThemePicker(...a),
232
+ openAutoClearPicker: (...a) => openAutoClearPicker(...a),
233
+ openProfilePicker: (...a) => openProfilePicker(...a),
234
+ openMcpPicker: (...a) => openMcpPicker(...a),
235
+ openPluginsPicker: (...a) => openPluginsPicker(...a),
236
+ openHooksPicker: (...a) => openHooksPicker(...a),
237
+ openSkillsPicker: (...a) => openSkillsPicker(...a),
238
+ openMemoryCorePicker: (...a) => openMemoryCorePicker(...a),
239
+ openUpdatePicker: (...a) => openUpdatePicker(...a),
240
+ openChannelSettingTypePicker: (...a) => openChannelSettingTypePicker(...a),
241
+ });
242
+ const { runSlashCommand } = createSlashDispatch({
243
+ state,
244
+ store,
245
+ normalizeSlashCommandName,
246
+ setContextPanel,
247
+ closeUsagePanel,
248
+ openModelPicker: (...a) => openModelPicker(...a),
249
+ modelSwitchNotice,
250
+ openSearchPicker: (...a) => openSearchPicker(...a),
251
+ openAgentsPicker: (...a) => openAgentsPicker(...a),
252
+ openWorkflowPicker: (...a) => openWorkflowPicker(...a),
253
+ workflowSwitchNotice,
254
+ openOutputStylePicker: (...a) => openOutputStylePicker(...a),
255
+ outputStyleNotice,
256
+ openThemePicker: (...a) => openThemePicker(...a),
257
+ themeNotice,
258
+ openEffortPicker: (...a) => openEffortPicker(...a),
259
+ enterProject: (...a) => enterProject(...a),
260
+ openProjectPicker: (...a) => openProjectPicker(...a),
261
+ openMcpPicker: (...a) => openMcpPicker(...a),
262
+ openSkillsPicker: (...a) => openSkillsPicker(...a),
263
+ openPluginsPicker: (...a) => openPluginsPicker(...a),
264
+ openHooksPicker: (...a) => openHooksPicker(...a),
265
+ openProviderSetupPicker: (...a) => openProviderSetupPicker(...a),
266
+ openChannelSetupPicker: (...a) => openChannelSetupPicker(...a),
267
+ openMemoryCorePicker: (...a) => openMemoryCorePicker(...a),
268
+ parseMemoryCommand,
269
+ openSettingsPicker: (...a) => openSettingsPicker(...a),
270
+ openAutoClearPicker: (...a) => openAutoClearPicker(...a),
271
+ formatDuration,
272
+ openResumePicker: (...a) => openResumePicker(...a),
273
+ openUsagePanel: (...a) => openUsagePanel(...a),
274
+ openContextPicker: (...a) => openContextPicker(...a),
275
+ openProfilePicker: (...a) => openProfilePicker(...a),
276
+ openUpdatePicker: (...a) => openUpdatePicker(...a),
277
+ runDoctor: (...a) => store.runDoctor?.(...a),
278
+ requestExit: (...a) => requestExit(...a),
279
+ });
280
+
281
+ return {
282
+ openThemePicker,
283
+ openEffortPicker,
284
+ openResumePicker,
285
+ openMemoryCorePicker,
286
+ openMcpServersPicker,
287
+ openMcpPicker,
288
+ openProjectSkillsPicker,
289
+ openSkillsPicker,
290
+ openSkillDetailPicker,
291
+ beginAddPlugin,
292
+ openPluginDetailPicker,
293
+ openInstalledPluginsPicker,
294
+ openPluginsPicker,
295
+ openHooksPicker,
296
+ openUpdatePicker,
297
+ openAutoClearPicker,
298
+ openProfilePicker,
299
+ onboardingWarnReopen,
300
+ openOnboardingAuthStep,
301
+ openChannelTypeActionsPicker,
302
+ openChannelSettingTypePicker,
303
+ openChannelSetupPicker,
304
+ openProviderSetupPicker,
305
+ openModelPicker,
306
+ openSearchPicker,
307
+ openAgentsPicker,
308
+ openWorkflowPicker,
309
+ openOutputStylePicker,
310
+ openSettingsPicker,
311
+ runSlashCommand,
312
+ };
313
+ }