@xmoon76/dsh-pi-tui 0.4.8 → 0.4.9

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.
package/README.en.md CHANGED
@@ -54,12 +54,13 @@ next compatibility range, and fallback paths.
54
54
 
55
55
  | TUI package line | Official DSH tags for the pairing | Notes |
56
56
  |---|---|---|
57
- | `0.4.8` (stable / `@latest`) | `dsh-v0.1.7-rc.1` | Current stable line; 0.1.7-rc.1 minimum |
57
+ | `0.4.9` (stable / `@latest`) | `dsh-v0.1.7-rc.2` | Current stable line; 0.1.7-rc.2 minimum |
58
+ | `0.4.8` (stable, previous) | `dsh-v0.1.7-rc.1` | Previous stable; the compatible TUI for a 0.1.7-rc.1 runtime |
58
59
  | `0.4.6` (stable, previous) | `dsh-v0.1.5-rc.1`, `dsh-v0.1.5-rc.2` | Previous stable; the compatible TUI for a 0.1.5 runtime |
59
60
  | `0.4.7-alpha.2` (next, previous) | `dsh-v0.1.6-alpha.2` | Previous next line; the compatible TUI for a 0.1.6-alpha.2 runtime |
60
61
 
61
- Do not mix the stable and `@next` prerelease lines. The `0.4.8` line unifies its
62
- whole DSH peer floor at `>=0.1.7-rc.1` (the rc.1 preset registry peers
62
+ Do not mix the stable and `@next` prerelease lines. The `0.4.9` line unifies its
63
+ whole DSH peer floor at `>=0.1.7-rc.2` (the rc.2 preset registry peers
63
64
  `dsh-agent` exactly, so a wider legacy floor no longer satisfies a standalone
64
65
  tarball install); older runtimes fail at the normal incompatible-runtime
65
66
  boundary, so install the paired TUI line from the table above. The startup notice
@@ -174,10 +175,31 @@ History results include the Prompt, working directory, timestamp, and Session in
174
175
 
175
176
  Regular `↑` / `↓` history recall is still available for recent input.
176
177
 
177
- ### Subagents and background tasks
178
-
179
- `/tasks` opens the full Task Center for all background work in the current
180
- Session; the Footer's `↓` opens the lightweight Quick Tasks view for running work.
178
+ ### Subagents and the Task Center
179
+
180
+ `/tasks` opens the full Task Center, showing the work the current Session's
181
+ Job Registry / Subagent catalog still tracks; the Footer's `↓` opens the
182
+ lightweight Quick Tasks view for the current active work. Selecting a Job
183
+ opens a detail with the official non-consuming live
184
+ output preview (status, progress and the retained output tail); it never consumes
185
+ the model's `job_output` cursor and never becomes session history.
186
+
187
+ Task Center is a live tracked/control projection, not an execution-history
188
+ list. `ACTIVE` / `TRACKED` are presentation scopes: `ACTIVE` shows only the
189
+ currently active items, `TRACKED` shows everything the current authority
190
+ still lists. DSH `0.1.7` temporarily registers a Job while an ordinary
191
+ foreground `bash` / `pwsh` command runs, so it can be observed and stopped
192
+ from the Task Center; if the command finishes inside the foreground wait,
193
+ DSH removes that temporary record and the final result stays in the
194
+ Transcript's tool card. Explicit `run_in_background: true` jobs (and jobs
195
+ promoted to the background after a foreground timeout) remain visible in
196
+ `TRACKED` after completion as long as the Job Registry keeps their record.
197
+
198
+ `/plugins` opens the active profile's Plugin Manager: installed bundles and
199
+ plugins are grouped into Current TUI / TUI Extensions / DSH Plugins, with
200
+ enable/disable, remove and install; the `dsh-pi-tui` bundle currently providing
201
+ the surface is read-only and cannot be disabled or removed from its own screen.
202
+ The `Plugins Manage…` row in `/settings` opens the same surface on demand.
181
203
 
182
204
  Subagents are shown using their complete lineage, including nested descendants:
183
205
 
@@ -194,14 +216,14 @@ The browser distinguishes:
194
216
  * `one-shot`
195
217
  * running / inactive
196
218
  * nested descendants
197
- * background Jobs
219
+ * Job Registry rows (including running foreground shell work)
198
220
 
199
221
  The Footer's `↓` opens Quick Tasks as a lightweight browsing view: it only
200
222
  supports arrow navigation, left/right expand/collapse, `Tab` type cycling,
201
223
  `Enter` open, and `Esc` close. The bottom “Open Task Center” row opens the full
202
224
  Task Center.
203
225
 
204
- The full Task Center additionally offers `A` to toggle Active / All, `/` search,
226
+ The full Task Center additionally offers `A` to toggle Active / Tracked, `/` search,
205
227
  `Tab` / `Shift+Tab` to cycle types in both directions, `S` to stop the selected
206
228
  task after confirmation, and `R` to refresh/retry. Quick Tasks consumes only the
207
229
  whitelist above; every other keystroke is a no-op that never enters search, stop
@@ -573,7 +595,7 @@ This section contains DSH compatibility and CI validation details only; ordinary
573
595
  ### npm mode (current `next`)
574
596
 
575
597
  The current compatibility-train line is npm mode: it targets the published
576
- `dsh-v0.1.7-rc.1` family declared by this checkout's `package.json` and
598
+ `dsh-v0.1.7-rc.2` family declared by this checkout's `package.json` and
577
599
  resolved by its lockfile. The isolated npm driver installs that exact
578
600
  family from the public registry and exercises the TUI build/test/package path:
579
601
 
package/README.md CHANGED
@@ -52,12 +52,13 @@ pnpm compat:dsh:npm
52
52
 
53
53
  | TUI 包版本 | 对应的官方 DSH tags | 说明 |
54
54
  |---|---|---|
55
- | `0.4.8`(stable / `@latest`) | `dsh-v0.1.7-rc.1` | 当前稳定版;最低 0.1.7-rc.1 |
55
+ | `0.4.9`(stable / `@latest`) | `dsh-v0.1.7-rc.2` | 当前稳定版;最低 0.1.7-rc.2 |
56
+ | `0.4.8`(stable,历史) | `dsh-v0.1.7-rc.1` | 上一稳定版;0.1.7-rc.1 runtime 的兼容 TUI |
56
57
  | `0.4.6`(stable,历史) | `dsh-v0.1.5-rc.1`、`dsh-v0.1.5-rc.2` | 上一稳定版;0.1.5 runtime 的兼容 TUI |
57
58
  | `0.4.7-alpha.2`(next,历史) | `dsh-v0.1.6-alpha.2` | 上一条 next 线;0.1.6-alpha.2 runtime 的兼容 TUI |
58
59
 
59
- 不要把稳定线与 `@next` 预发布线混装。`0.4.8` 的整个 DSH peer floor 统一为
60
- `>=0.1.7-rc.1`(rc.1 的 preset registry 精确 peer `dsh-agent`,更宽的旧
60
+ 不要把稳定线与 `@next` 预发布线混装。`0.4.9` 的整个 DSH peer floor 统一为
61
+ `>=0.1.7-rc.2`(rc.2 的 preset registry 精确 peer `dsh-agent`,更宽的旧
61
62
  floor 已无法满足独立 tarball 安装);旧 runtime 会在正常的不兼容边界以非零状态失败,
62
63
  请按上表安装配对的 TUI 线。完整的历史兼容矩阵和 fallback 命令见
63
64
  [兼容性文档](docs/dsh-compatibility.md);要查看 `@next` 的最新集成状态,请看
@@ -167,9 +168,13 @@ Rewind 会从选中的历史 User Turn 创建新的 Child Session,并把对应
167
168
 
168
169
  普通的 `↑` / `↓` 仍用于快速浏览最近输入。
169
170
 
170
- ### Subagent 与后台任务
171
+ ### Subagent 与 Task Center
171
172
 
172
- `/tasks` 打开完整 Task Center(当前 Session 的所有后台工作);Footer 的 `↓` 直接打开轻量 Quick Tasks(只看正在运行的工作)。
173
+ `/tasks` 打开完整 Task Center,显示当前 Session 中仍由 Job Registry / Subagent catalog 跟踪的工作;Footer 的 `↓` 打开轻量 Quick Tasks,只看当前活动(active)工作。选中 Job 后,详情会显示官方非消耗式的实时输出预览(状态、进度与保留的输出尾部),不会消耗模型的 `job_output` 游标,也不写入会话历史。
174
+
175
+ Task Center 的 `ACTIVE` / `TRACKED` 是展示范围:`ACTIVE` 只显示当前活动项,`TRACKED` 显示当前跟踪源(Job Registry / Subagent catalog)仍列出的全部项;`TRACKED` 不是 Session 执行历史。DSH `0.1.7` 会在普通前台 `bash` / `pwsh` 执行期间临时注册 Job,使其可以在 Task Center 中观察和停止;如果命令在前台等待内完成,DSH 会移除该临时记录,最终结果仍保留在 Transcript 的 tool card 中。显式 `run_in_background: true` 或被提升为后台的 Job 在完成后,只要 Job Registry 继续保留其记录,就仍可在 `TRACKED` 中查看。
176
+
177
+ `/plugins` 打开当前 profile 的 Plugin Manager:按 Current TUI / TUI Extensions / DSH Plugins 分区查看已安装的 bundle 与插件,并执行启用/禁用、删除与安装;正在提供当前界面的 `dsh-pi-tui` 只读且不可从自身界面禁用或移除。`/settings` 中的 `Plugins Manage…` 按需打开同一界面。
173
178
 
174
179
  Subagent 按完整 lineage 显示,包括嵌套创建的 descendant:
175
180
 
@@ -186,11 +191,11 @@ main
186
191
  * `one-shot`
187
192
  * running / inactive
188
193
  * nested descendant
189
- * 后台 Job
194
+ * Job Registry 跟踪的 Job(含运行中的前台 shell)
190
195
 
191
196
  Footer `↓` 打开的 Quick Tasks 是轻量浏览视图,只提供方向键导航、左右展开/折叠、`Tab` 类型过滤、`Enter` 打开和 `Esc` 关闭。底部 “Open Task Center” 行可进入完整 Task Center。
192
197
 
193
- 完整 Task Center 额外提供 `A` 切换 Active / All、`/` 搜索、`Tab` / `Shift+Tab` 双向切换类型、`S`(确认后)停止所选任务以及 `R` 刷新 / 重试。Quick Tasks 只消费上述白名单按键,其余输入一律 no-op,不会进入搜索、停止确认或任务管理状态,因此 `Esc` 始终一层关闭。
198
+ 完整 Task Center 额外提供 `A` 切换 Active / Tracked、`/` 搜索、`Tab` / `Shift+Tab` 双向切换类型、`S`(确认后)停止所选任务以及 `R` 刷新 / 重试。Quick Tasks 只消费上述白名单按键,其余输入一律 no-op,不会进入搜索、停止确认或任务管理状态,因此 `Esc` 始终一层关闭。
194
199
 
195
200
  已经结束的 one-shot Subagent 仍可以打开并查看持久化 Transcript。
196
201
 
@@ -544,7 +549,7 @@ dsh --profile pi-tui-dev
544
549
  ### npm 模式(当前 `next`)
545
550
 
546
551
  当前兼容列车线是 npm 模式:以本 checkout 的 `package.json` 声明、
547
- lockfile 解析的已发布 `dsh-v0.1.7-rc.1` family 为兼容目标。隔离的 npm
552
+ lockfile 解析的已发布 `dsh-v0.1.7-rc.2` family 为兼容目标。隔离的 npm
548
553
  驱动从公共 registry 安装该精确 family,并跑完整 build/test/package 路径:
549
554
 
550
555
  ```sh
package/cordis.patch.yml CHANGED
@@ -32,10 +32,25 @@
32
32
  # can fork. The row below is this bundle's own, so the dependency is
33
33
  # self-contained and a profile that disables it fails loud instead of
34
34
  # silently forking without workspace inheritance.
35
- inject: [tuiStartup, piTuiExtensions, authorization, workspaceRegistry]
35
+ # `pluginManager` is injected for the P1-A Plugin Manager surface: the
36
+ # dsh-base layer already mounts it (disabled only without a profile),
37
+ # so this is an explicit lifecycle ordering dependency, never a second
38
+ # package-manager row.
39
+ inject: [tuiStartup, piTuiExtensions, authorization, workspaceRegistry, pluginManager, jobController]
36
40
  config:
37
41
  sessionId: ''
38
42
 
43
+ # One background Job's observation stream (P1-B): the official Host
44
+ # controller wraps `jobs.events` + `jobs.readAt()` into a
45
+ # NON-CONSUMING follow stream (never `jobs.read()`), so the selected Job
46
+ # detail can render a live retained-output tail without touching the
47
+ # model's `job_output` cursor or completion notices. The rc.1 web bundle
48
+ # mounts this same row; the dsh-base layer does not, so the TUI inserts
49
+ # it. This is NOT M3: same process, same Host Context, no Client Context,
50
+ # no Connection, no transport.
51
+ - id: job-controller
52
+ name: '@deepseek-ai/dsh-api-job-controller'
53
+
39
54
  # Host-owned workspace membership (`ctx.workspaceRegistry`): D2.4 Direct
40
55
  # fork mirrors the official Host rule (use the source's directly owning
41
56
  # workspace, else the nearest ancestor workspace of a subagent source) and
@@ -74,6 +89,39 @@
74
89
  config:
75
90
  default: standard
76
91
 
92
+ # Production hardening for per-session preset composition. A live Agent
93
+ # whose standing preset generation disappears (the DSH registry owns that
94
+ # lifetime; the TUI must not remount/reparent/recreate an Agent) would
95
+ # otherwise keep addressing the model with only its Agent-own rows — the
96
+ # observed failure mode was a request whose tool list had collapsed to
97
+ # `subagent` alone, with no error anywhere. This official companion turns
98
+ # that into a loud, early failure at the next prompt assembly instead.
99
+ #
100
+ # The allowlist is deliberate and minimal: this bundle introduces exactly
101
+ # ONE production invariant, so a future layer shipping another invariant
102
+ # companion cannot silently enable itself here. The companion's own
103
+ # `/invariant` entry declares `inject = ['invariants']`; no second
104
+ # dependency management is written here.
105
+ #
106
+ # DEPENDENCY CONTRACT: `@deepseek-ai/dsh-invariants` is a COMPOSITION row
107
+ # resolved by the dsh Host (the package ships inside the dsh installation),
108
+ # not a module-graph peer — exactly like `@deepseek-ai/dsh-agent-preset`,
109
+ # which the same rule keeps in devDependencies. It therefore carries an
110
+ # exact devDependency pin for the real-mount tests and deliberately NO
111
+ # peerDependency: `scripts/naming-gate.mjs` rejects a `@deepseek-ai/*` peer
112
+ # that `src/` never imports as a dead peer, and a phantom peer would invite
113
+ # duplicate in-box copies in the profile. The companion subpath below is
114
+ # covered by the registry's own runtime peer.
115
+ - id: invariants
116
+ name: '@deepseek-ai/dsh-invariants'
117
+ config:
118
+ enabled: true
119
+ package_allowlist:
120
+ - '^@deepseek-ai/dsh-agent-preset-registry$'
121
+
122
+ - id: agent-preset-registry-invariant
123
+ name: '@deepseek-ai/dsh-agent-preset-registry/invariant'
124
+
77
125
  # The official standard preset composes its `subagent` tool with
78
126
  # `modelSelectionSettings: true`, which injects this Host-owned setting
79
127
  # service — the row is required for the standard composition to mount.
package/dist/builtins.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { B as PI_TUI_EXTENSIONS_SERVICE, I as dshVersion } from "./src-R8SVGB-L.mjs";
2
- import { n as TUI_STARTUP_SERVICE } from "./startup-Cd07dCyh.mjs";
1
+ import { L as dshVersion, V as PI_TUI_EXTENSIONS_SERVICE } from "./src-BAwPimrH.mjs";
2
+ import { n as TUI_STARTUP_SERVICE } from "./startup-xTIOW90U.mjs";
3
3
  import { readFileSync } from "node:fs";
4
4
  import { join } from "node:path";
5
5
  //#region src/builtins.ts
@@ -1,2 +1,2 @@
1
- import { B as PI_TUI_EXTENSIONS_SERVICE, H as describeKey, L as apply, R as inject, V as API_VERSION, z as name } from "./src-R8SVGB-L.mjs";
1
+ import { B as name, H as API_VERSION, R as apply, U as describeKey, V as PI_TUI_EXTENSIONS_SERVICE, z as inject } from "./src-BAwPimrH.mjs";
2
2
  export { API_VERSION, PI_TUI_EXTENSIONS_SERVICE, apply, describeKey, inject, name };
package/dist/index.d.mts CHANGED
@@ -756,20 +756,43 @@ declare function foldQueueRows(messages: readonly QueueInboxMessage[], mode: 'fo
756
756
  */
757
757
  declare function dangerCommand(command: string): boolean;
758
758
  /**
759
- * The dsh profile this process was launched with (the `--profile` flag),
760
- * so the exit-time resume hint names the profile the TUI actually runs
761
- * under. Falls back to `pi-tui` when the flag is absent (the TUI bundle
762
- * cannot load without a profile, so this is defensive only).
759
+ * The dsh profile named by the `--profile` flag in `argv`, in both spellings.
760
+ * This is the ARGV-ONLY fallback: it cannot see the positional `dsh <name>`
761
+ * launch form, because the launcher consumes that bare name by synthesizing
762
+ * `['--profile', ...argv]` for its OWN commander parse and leaves
763
+ * `process.argv` untouched. Prefer {@link hostRunningProfile}, which reads the
764
+ * Host's profile identity instead of scraping the command line.
763
765
  * @param argv - the process argument vector.
764
766
  * @param fallback - the default profile.
765
767
  */
766
768
  declare function runningProfile(argv?: readonly string[], fallback?: string): string;
769
+ /** The one context read {@link hostRunningProfile} needs (a cordis Context satisfies it). */
770
+ interface ProfileContextReadLike {
771
+ get(name: string): unknown;
772
+ }
773
+ /**
774
+ * The profile this process actually runs — the official Host
775
+ * `profileContext.name` when it is composed, else {@link runningProfile}'s
776
+ * argv scrape.
777
+ *
778
+ * `profileContext.name` is the launcher's own profile identity, so it is
779
+ * correct for EVERY launch form: `--profile <name>`, `--profile=<name>`, the
780
+ * positional `dsh <name>`, and `--from-default-profile <name>`. The argv
781
+ * scrape only knows the flag form, which is why it is the fallback for a
782
+ * profile-less mount (tests, an embedded surface) rather than the primary
783
+ * source.
784
+ * @param ctx - the plugin context (or any structural `get`-only stand-in).
785
+ * @param argv - the process argument vector for the fallback path.
786
+ * @param fallback - the default profile for the fallback path.
787
+ * @returns the running profile name.
788
+ */
789
+ declare function hostRunningProfile(ctx: ProfileContextReadLike, argv?: readonly string[], fallback?: string): string;
767
790
  /**
768
791
  * The interactive-quit resume hint (pi parity): `dsh --profile <p>
769
792
  * --session <id>`, printed after the terminal restores so the user can
770
793
  * re-enter the session later. Returns undefined when there is no session
771
794
  * to resume (deferred start never created one).
772
- * @param profile - the running profile ({@link runningProfile}).
795
+ * @param profile - the running profile ({@link hostRunningProfile}).
773
796
  * @param sessionId - the live session id.
774
797
  * @returns the resume command line, or undefined without a session.
775
798
  */
@@ -922,4 +945,4 @@ declare function recordedPreset(ctx: Context, sessionId: string): Promise<string
922
945
  */
923
946
  declare function apply(ctx: Context, config: Config): void;
924
947
  //#endregion
925
- export { AgentComposition, CompactionFold, CompactionSettleSurface, Config, HOST_COMMAND_CATALOG, InitialCatalogResolution, InterruptAgentLike, InterruptWriteOutcome, InterruptWriterLike, LOCAL_COMMANDS, PendingSubagentCall, QueueFoldResult, QueueInboxMessage, ResolveInitialCatalogOptions, SESSIONLESS_COMMANDS, ViewerOpenToken, apply, busyAfterTurnBoundary, commandIsLocalForAttachments, commandRejectsImages, compactingFromLog, composeAgent, contextRefreshKind, createViewerOpenToken, dangerCommand, foldCompactionEvent, foldQueueRows, inject, interruptAgent, isBareCommandLine, isLocalCommandLine, isPlainExitPrompt, matchPendingSubagentCall, name, normalizeSkillInvocation, recordedPreset, resolveInitialCatalog, resolveSubmitDelivery, resumeCommand, runningProfile, settleCompactionSurface, shouldConsumeAdvertisedMiss, subagentJobTranscriptId, subagentJobViewHint, taskRowSelectionDisposition, teardownViewerForSessionSwap, viewerActionCapability };
948
+ export { AgentComposition, CompactionFold, CompactionSettleSurface, Config, HOST_COMMAND_CATALOG, InitialCatalogResolution, InterruptAgentLike, InterruptWriteOutcome, InterruptWriterLike, LOCAL_COMMANDS, PendingSubagentCall, ProfileContextReadLike, QueueFoldResult, QueueInboxMessage, ResolveInitialCatalogOptions, SESSIONLESS_COMMANDS, ViewerOpenToken, apply, busyAfterTurnBoundary, commandIsLocalForAttachments, commandRejectsImages, compactingFromLog, composeAgent, contextRefreshKind, createViewerOpenToken, dangerCommand, foldCompactionEvent, foldQueueRows, hostRunningProfile, inject, interruptAgent, isBareCommandLine, isLocalCommandLine, isPlainExitPrompt, matchPendingSubagentCall, name, normalizeSkillInvocation, recordedPreset, resolveInitialCatalog, resolveSubmitDelivery, resumeCommand, runningProfile, settleCompactionSurface, shouldConsumeAdvertisedMiss, subagentJobTranscriptId, subagentJobViewHint, taskRowSelectionDisposition, teardownViewerForSessionSwap, viewerActionCapability };
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { A as shouldConsumeAdvertisedMiss, C as normalizeSkillInvocation, D as resumeCommand, E as resolveSubmitDelivery, F as viewerActionCapability, M as subagentJobViewHint, N as taskRowSelectionDisposition, O as runningProfile, P as teardownViewerForSessionSwap, S as name, T as resolveInitialCatalog, _ as interruptAgent, a as apply, b as isPlainExitPrompt, c as commandRejectsImages, d as contextRefreshKind, f as createViewerOpenToken, g as inject, h as foldQueueRows, i as SESSIONLESS_COMMANDS, j as subagentJobTranscriptId, k as settleCompactionSurface, l as compactingFromLog, m as foldCompactionEvent, n as HOST_COMMAND_CATALOG, o as busyAfterTurnBoundary, p as dangerCommand, r as LOCAL_COMMANDS, s as commandIsLocalForAttachments, t as Config, u as composeAgent, v as isBareCommandLine, w as recordedPreset, x as matchPendingSubagentCall, y as isLocalCommandLine } from "./src-R8SVGB-L.mjs";
2
- export { Config, HOST_COMMAND_CATALOG, LOCAL_COMMANDS, SESSIONLESS_COMMANDS, apply, busyAfterTurnBoundary, commandIsLocalForAttachments, commandRejectsImages, compactingFromLog, composeAgent, contextRefreshKind, createViewerOpenToken, dangerCommand, foldCompactionEvent, foldQueueRows, inject, interruptAgent, isBareCommandLine, isLocalCommandLine, isPlainExitPrompt, matchPendingSubagentCall, name, normalizeSkillInvocation, recordedPreset, resolveInitialCatalog, resolveSubmitDelivery, resumeCommand, runningProfile, settleCompactionSurface, shouldConsumeAdvertisedMiss, subagentJobTranscriptId, subagentJobViewHint, taskRowSelectionDisposition, teardownViewerForSessionSwap, viewerActionCapability };
1
+ import { A as settleCompactionSurface, C as name, D as resolveSubmitDelivery, E as resolveInitialCatalog, F as teardownViewerForSessionSwap, I as viewerActionCapability, M as subagentJobTranscriptId, N as subagentJobViewHint, O as resumeCommand, P as taskRowSelectionDisposition, S as matchPendingSubagentCall, T as recordedPreset, _ as inject, a as apply, b as isLocalCommandLine, c as commandRejectsImages, d as contextRefreshKind, f as createViewerOpenToken, g as hostRunningProfile, h as foldQueueRows, i as SESSIONLESS_COMMANDS, j as shouldConsumeAdvertisedMiss, k as runningProfile, l as compactingFromLog, m as foldCompactionEvent, n as HOST_COMMAND_CATALOG, o as busyAfterTurnBoundary, p as dangerCommand, r as LOCAL_COMMANDS, s as commandIsLocalForAttachments, t as Config, u as composeAgent, v as interruptAgent, w as normalizeSkillInvocation, x as isPlainExitPrompt, y as isBareCommandLine } from "./src-BAwPimrH.mjs";
2
+ export { Config, HOST_COMMAND_CATALOG, LOCAL_COMMANDS, SESSIONLESS_COMMANDS, apply, busyAfterTurnBoundary, commandIsLocalForAttachments, commandRejectsImages, compactingFromLog, composeAgent, contextRefreshKind, createViewerOpenToken, dangerCommand, foldCompactionEvent, foldQueueRows, hostRunningProfile, inject, interruptAgent, isBareCommandLine, isLocalCommandLine, isPlainExitPrompt, matchPendingSubagentCall, name, normalizeSkillInvocation, recordedPreset, resolveInitialCatalog, resolveSubmitDelivery, resumeCommand, runningProfile, settleCompactionSurface, shouldConsumeAdvertisedMiss, subagentJobTranscriptId, subagentJobViewHint, taskRowSelectionDisposition, teardownViewerForSessionSwap, viewerActionCapability };