@pentoshi/clai 4.14.3 → 4.14.5

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 (190) hide show
  1. package/CONTRIBUTING.md +4 -0
  2. package/PROVIDERS.md +2 -0
  3. package/README.md +27 -1
  4. package/dist/agent/compaction-summary.d.ts +1 -1
  5. package/dist/agent/compaction-summary.js +6 -3
  6. package/dist/agent/compaction-summary.js.map +1 -1
  7. package/dist/agent/context/user-credentials.d.ts +11 -0
  8. package/dist/agent/context/user-credentials.js +34 -1
  9. package/dist/agent/context/user-credentials.js.map +1 -1
  10. package/dist/agent/parser/arg-formatting.js +4 -3
  11. package/dist/agent/parser/arg-formatting.js.map +1 -1
  12. package/dist/agent/parser/terminal-args.d.ts +3 -0
  13. package/dist/agent/parser/terminal-args.js +52 -0
  14. package/dist/agent/parser/terminal-args.js.map +1 -0
  15. package/dist/agent/subagents/read-only-tools.js +2 -2
  16. package/dist/agent/subagents/read-only-tools.js.map +1 -1
  17. package/dist/agent/turn/subagent-inbox.js +2 -2
  18. package/dist/agent/turn/subagent-inbox.js.map +1 -1
  19. package/dist/agent/turn/tool-execution/single-tool.js +1 -0
  20. package/dist/agent/turn/tool-execution/single-tool.js.map +1 -1
  21. package/dist/app/adapters/current-updates-adapter.d.ts +1 -1
  22. package/dist/app/adapters/current-updates-adapter.js +4 -13
  23. package/dist/app/adapters/current-updates-adapter.js.map +1 -1
  24. package/dist/app/controllers/session-controller.d.ts +5 -0
  25. package/dist/app/controllers/session-controller.js +54 -7
  26. package/dist/app/controllers/session-controller.js.map +1 -1
  27. package/dist/app/ports/updates-port.d.ts +1 -1
  28. package/dist/classic/app/action-handlers.js +7 -0
  29. package/dist/classic/app/action-handlers.js.map +1 -1
  30. package/dist/classic/blocks/tool-lines.js +3 -3
  31. package/dist/classic/blocks/tool-lines.js.map +1 -1
  32. package/dist/commands/update/detection.d.ts +20 -0
  33. package/dist/commands/update/detection.js +207 -0
  34. package/dist/commands/update/detection.js.map +1 -0
  35. package/dist/commands/update/download.d.ts +3 -0
  36. package/dist/commands/update/download.js +63 -0
  37. package/dist/commands/update/download.js.map +1 -0
  38. package/dist/commands/update/installers.d.ts +16 -5
  39. package/dist/commands/update/installers.js +12 -513
  40. package/dist/commands/update/installers.js.map +1 -1
  41. package/dist/commands/update/lock.d.ts +6 -0
  42. package/dist/commands/update/lock.js +86 -0
  43. package/dist/commands/update/lock.js.map +1 -0
  44. package/dist/commands/update/metadata.d.ts +6 -0
  45. package/dist/commands/update/metadata.js +36 -0
  46. package/dist/commands/update/metadata.js.map +1 -0
  47. package/dist/commands/update/native.d.ts +3 -0
  48. package/dist/commands/update/native.js +179 -0
  49. package/dist/commands/update/native.js.map +1 -0
  50. package/dist/commands/update/package-managers.d.ts +4 -0
  51. package/dist/commands/update/package-managers.js +158 -0
  52. package/dist/commands/update/package-managers.js.map +1 -0
  53. package/dist/commands/update/process.d.ts +17 -0
  54. package/dist/commands/update/process.js +114 -0
  55. package/dist/commands/update/process.js.map +1 -0
  56. package/dist/commands/update/source-worker.d.ts +2 -0
  57. package/dist/commands/update/source-worker.js +71 -0
  58. package/dist/commands/update/source-worker.js.map +1 -0
  59. package/dist/commands/update/source.d.ts +2 -0
  60. package/dist/commands/update/source.js +79 -0
  61. package/dist/commands/update/source.js.map +1 -0
  62. package/dist/commands/update/verification.d.ts +7 -0
  63. package/dist/commands/update/verification.js +73 -0
  64. package/dist/commands/update/verification.js.map +1 -0
  65. package/dist/commands/update/windows-stage.d.ts +21 -0
  66. package/dist/commands/update/windows-stage.js +186 -0
  67. package/dist/commands/update/windows-stage.js.map +1 -0
  68. package/dist/commands/update-install.d.ts +4 -13
  69. package/dist/commands/update-install.js +20 -152
  70. package/dist/commands/update-install.js.map +1 -1
  71. package/dist/commands/update.d.ts +4 -9
  72. package/dist/commands/update.js +51 -103
  73. package/dist/commands/update.js.map +1 -1
  74. package/dist/index.js +1 -1
  75. package/dist/index.js.map +1 -1
  76. package/dist/interactive-session/cleanup.js +1 -1
  77. package/dist/interactive-session/cleanup.js.map +1 -1
  78. package/dist/interactive-session/manager.d.ts +2 -0
  79. package/dist/interactive-session/manager.js +62 -30
  80. package/dist/interactive-session/manager.js.map +1 -1
  81. package/dist/interactive-session/output-store.d.ts +1 -1
  82. package/dist/interactive-session/output-store.js +4 -1
  83. package/dist/interactive-session/output-store.js.map +1 -1
  84. package/dist/interactive-session/output-view.js +23 -1
  85. package/dist/interactive-session/output-view.js.map +1 -1
  86. package/dist/interactive-session/streaming-redactor.js +1 -1
  87. package/dist/interactive-session/streaming-redactor.js.map +1 -1
  88. package/dist/interactive-session/transport-node-pty.d.ts +2 -1
  89. package/dist/interactive-session/transport-node-pty.js +24 -20
  90. package/dist/interactive-session/transport-node-pty.js.map +1 -1
  91. package/dist/interactive-session/types.d.ts +3 -0
  92. package/dist/interactive-session/types.js.map +1 -1
  93. package/dist/llm/responses-error.d.ts +3 -0
  94. package/dist/llm/responses-error.js +37 -0
  95. package/dist/llm/responses-error.js.map +1 -0
  96. package/dist/llm/responses-http.js +5 -2
  97. package/dist/llm/responses-http.js.map +1 -1
  98. package/dist/llm/responses-replay.d.ts +2 -0
  99. package/dist/llm/responses-replay.js +37 -1
  100. package/dist/llm/responses-replay.js.map +1 -1
  101. package/dist/llm/responses-stream-events.js +3 -20
  102. package/dist/llm/responses-stream-events.js.map +1 -1
  103. package/dist/llm/responses-stream.js +2 -0
  104. package/dist/llm/responses-stream.js.map +1 -1
  105. package/dist/os/bun-runtime.js +2 -1
  106. package/dist/os/bun-runtime.js.map +1 -1
  107. package/dist/os/update-origin.d.ts +7 -0
  108. package/dist/os/update-origin.js +30 -0
  109. package/dist/os/update-origin.js.map +1 -0
  110. package/dist/prompts/embedded.js +2 -2
  111. package/dist/prompts/embedded.js.map +1 -1
  112. package/dist/prompts/index.js +2 -2
  113. package/dist/prompts/system.agent.md +6 -5
  114. package/dist/prompts/system.ask.md +1 -1
  115. package/dist/session-runtime/client.js +2 -1
  116. package/dist/session-runtime/client.js.map +1 -1
  117. package/dist/store/history/jsonl-lock.js +10 -7
  118. package/dist/store/history/jsonl-lock.js.map +1 -1
  119. package/dist/store/history/recovery.js +2 -1
  120. package/dist/store/history/recovery.js.map +1 -1
  121. package/dist/store/history.js +4 -2
  122. package/dist/store/history.js.map +1 -1
  123. package/dist/tools/definitions/fs-read.js +1 -1
  124. package/dist/tools/definitions/fs-read.js.map +1 -1
  125. package/dist/tools/definitions/terminal.js +43 -37
  126. package/dist/tools/definitions/terminal.js.map +1 -1
  127. package/dist/tools/fs/read-input.d.ts +1 -1
  128. package/dist/tools/fs/read-input.js +2 -2
  129. package/dist/tools/fs/read-input.js.map +1 -1
  130. package/dist/tools/interactive-session-tools.js +79 -33
  131. package/dist/tools/interactive-session-tools.js.map +1 -1
  132. package/dist/tools/shell/interactive-probes.d.ts +1 -0
  133. package/dist/tools/shell/interactive-probes.js +35 -0
  134. package/dist/tools/shell/interactive-probes.js.map +1 -0
  135. package/dist/tools/shell.js +11 -2
  136. package/dist/tools/shell.js.map +1 -1
  137. package/dist/tools/tool-types.d.ts +2 -1
  138. package/dist/tui-v2/app/App.js +13 -5
  139. package/dist/tui-v2/app/App.js.map +1 -1
  140. package/dist/tui-v2/components/plan/plan-interaction.d.ts +11 -0
  141. package/dist/tui-v2/components/plan/plan-interaction.js +56 -0
  142. package/dist/tui-v2/components/plan/plan-interaction.js.map +1 -0
  143. package/dist/tui-v2/components/plan/plan-view.d.ts +7 -1
  144. package/dist/tui-v2/components/plan/plan-view.js +78 -175
  145. package/dist/tui-v2/components/plan/plan-view.js.map +1 -1
  146. package/dist/tui-v2/components/plan/task-title.d.ts +9 -0
  147. package/dist/tui-v2/components/plan/task-title.js +17 -0
  148. package/dist/tui-v2/components/plan/task-title.js.map +1 -0
  149. package/dist/tui-v2/components/plan/use-task-disclosure.d.ts +25 -0
  150. package/dist/tui-v2/components/plan/use-task-disclosure.js +125 -0
  151. package/dist/tui-v2/components/plan/use-task-disclosure.js.map +1 -0
  152. package/dist/tui-v2/components/transcript/tool-card.js +2 -2
  153. package/dist/tui-v2/components/transcript/tool-card.js.map +1 -1
  154. package/dist/tui-v2/components/transcript/use-transcript-selection.js +11 -6
  155. package/dist/tui-v2/components/transcript/use-transcript-selection.js.map +1 -1
  156. package/dist/tui-v2/composer/composer-editor.js +3 -0
  157. package/dist/tui-v2/composer/composer-editor.js.map +1 -1
  158. package/dist/ui-core/actions/action-id.d.ts +1 -1
  159. package/dist/ui-core/actions/action-id.js +7 -0
  160. package/dist/ui-core/actions/action-id.js.map +1 -1
  161. package/dist/ui-core/actions/format-shortcuts.js +7 -0
  162. package/dist/ui-core/actions/format-shortcuts.js.map +1 -1
  163. package/dist/ui-core/commands/config-commands.js +12 -6
  164. package/dist/ui-core/commands/config-commands.js.map +1 -1
  165. package/dist/ui-core/commands/prompt-commands.d.ts +1 -1
  166. package/dist/ui-core/commands/prompt-commands.js +12 -2
  167. package/dist/ui-core/commands/prompt-commands.js.map +1 -1
  168. package/dist/ui-core/controllers/selection-controller.js +2 -1
  169. package/dist/ui-core/controllers/selection-controller.js.map +1 -1
  170. package/dist/ui-core/controllers/toast-controller.js +4 -4
  171. package/dist/ui-core/controllers/toast-controller.js.map +1 -1
  172. package/dist/ui-core/rendering/plan-view.js +24 -12
  173. package/dist/ui-core/rendering/plan-view.js.map +1 -1
  174. package/dist/ui-core/rendering/task-disclosure.d.ts +19 -0
  175. package/dist/ui-core/rendering/task-disclosure.js +70 -0
  176. package/dist/ui-core/rendering/task-disclosure.js.map +1 -0
  177. package/dist/ui-core/rendering/terminal-output.d.ts +6 -0
  178. package/dist/ui-core/rendering/terminal-output.js +45 -0
  179. package/dist/ui-core/rendering/terminal-output.js.map +1 -0
  180. package/dist/ui-core/rendering/tool-presenter.d.ts +1 -1
  181. package/dist/ui-core/rendering/tool-presenter.js +21 -4
  182. package/dist/ui-core/rendering/tool-presenter.js.map +1 -1
  183. package/dist/ui-core/rendering/transcript-export.d.ts +2 -0
  184. package/dist/ui-core/rendering/transcript-export.js +1 -0
  185. package/dist/ui-core/rendering/transcript-export.js.map +1 -1
  186. package/dist/ui-core/rendering/transcript-semantic.js +9 -0
  187. package/dist/ui-core/rendering/transcript-semantic.js.map +1 -1
  188. package/dist/version.generated.d.ts +2 -2
  189. package/dist/version.generated.js +2 -2
  190. package/package.json +1 -1
@@ -0,0 +1,56 @@
1
+ import { ActionRouter } from "../../../ui-core/actions/action-router.js";
2
+ import { defaultKeymap } from "../../../ui-core/actions/keymap.js";
3
+ const PLAN_BINDINGS = [
4
+ { chord: "down", action: "plan.next-task", context: "plan" },
5
+ { chord: "up", action: "plan.prev-task", context: "plan" },
6
+ { chord: "enter", action: "plan.toggle-task", context: "plan" },
7
+ { chord: "right", action: "plan.expand-task", context: "plan" },
8
+ { chord: "left", action: "plan.collapse-task", context: "plan" },
9
+ { chord: "e", action: "plan.expand-all", context: "plan" },
10
+ { chord: "c", action: "plan.collapse-all", context: "plan" },
11
+ { chord: "pageup", action: "plan.page-up", context: "plan" },
12
+ { chord: "pagedown", action: "plan.page-down", context: "plan" },
13
+ ];
14
+ export const OPEN_TUI_KEYMAP = [
15
+ ...defaultKeymap.filter((binding) => binding.context !== "plan"),
16
+ ...PLAN_BINDINGS,
17
+ ];
18
+ const planRouter = new ActionRouter(PLAN_BINDINGS);
19
+ export function resolvePlanInteraction(chord) {
20
+ return planRouter.resolve(chord, "plan");
21
+ }
22
+ export function handlePlanInteraction(action, port) {
23
+ if (!port)
24
+ return false;
25
+ switch (action) {
26
+ case "plan.next-task":
27
+ port.moveSelection(1);
28
+ return true;
29
+ case "plan.prev-task":
30
+ port.moveSelection(-1);
31
+ return true;
32
+ case "plan.toggle-task":
33
+ port.setSelectedExpanded();
34
+ return true;
35
+ case "plan.expand-task":
36
+ port.setSelectedExpanded(true);
37
+ return true;
38
+ case "plan.collapse-task":
39
+ port.setSelectedExpanded(false);
40
+ return true;
41
+ case "plan.expand-all":
42
+ port.setAllExpanded(true);
43
+ return true;
44
+ case "plan.collapse-all":
45
+ port.setAllExpanded(false);
46
+ return true;
47
+ case "plan.page-up":
48
+ port.page(-1);
49
+ return true;
50
+ case "plan.page-down":
51
+ port.page(1);
52
+ return true;
53
+ default: return false;
54
+ }
55
+ }
56
+ //# sourceMappingURL=plan-interaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-interaction.js","sourceRoot":"","sources":["../../../../src/tui-v2/components/plan/plan-interaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzE,OAAO,EAAE,aAAa,EAAmB,MAAM,oCAAoC,CAAC;AASpF,MAAM,aAAa,GAA0B;IAC3C,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE;IAC5D,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE;IAC1D,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE;IAC/D,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,EAAE;IAC/D,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,EAAE;IAChE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE;IAC1D,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE;IAC5D,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE;IAC5D,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,EAAE;CACjE,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAA0B;IACpD,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC;IAChE,GAAG,aAAa;CACjB,CAAC;AAEF,MAAM,UAAU,GAAG,IAAI,YAAY,CAAC,aAAa,CAAC,CAAC;AAEnD,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAgB,EAAE,IAAgC;IACtF,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,gBAAgB;YAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAC1D,KAAK,gBAAgB;YAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAC3D,KAAK,kBAAkB;YAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAAC,OAAO,IAAI,CAAC;QACjE,KAAK,kBAAkB;YAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QACrE,KAAK,oBAAoB;YAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QACxE,KAAK,iBAAiB;YAAE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAC/D,KAAK,mBAAmB;YAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAClE,KAAK,cAAc;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAChD,KAAK,gBAAgB;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QACjD,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC;IACxB,CAAC;AACH,CAAC"}
@@ -1,13 +1,19 @@
1
1
  /** @jsxImportSource @opentui/react */
2
- import { type ReactNode } from "react";
2
+ import { type ReactNode, type Ref } from "react";
3
3
  import type { SessionPlan } from "../../../store/plan.js";
4
4
  import type { Theme } from "../../../ui-core/rendering/theme.js";
5
5
  import type { AppServices } from "../../../ui-core/bootstrap/composition-root.js";
6
+ import { type TaskDisclosureBinding } from "./use-task-disclosure.js";
7
+ import type { PlanInteractionPort } from "./plan-interaction.js";
8
+ import "./task-title.js";
6
9
  export interface PlanViewProps {
7
10
  readonly theme: Theme;
8
11
  readonly plan: SessionPlan | undefined;
9
12
  readonly services: AppServices;
10
13
  readonly width?: number | undefined;
14
+ readonly focused?: boolean | undefined;
15
+ readonly interactionRef?: Ref<PlanInteractionPort> | undefined;
16
+ readonly disclosureBinding?: TaskDisclosureBinding | undefined;
11
17
  }
12
18
  declare function PlanViewImpl(props: PlanViewProps): ReactNode;
13
19
  export declare const PlanView: import("react").MemoExoticComponent<typeof PlanViewImpl>;
@@ -1,16 +1,19 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@opentui/react/jsx-runtime";
2
2
  /** @jsxImportSource @opentui/react */
3
- import { memo, useEffect, useRef } from "react";
3
+ import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
4
4
  import { countRender } from "../../perf/render-counters.js";
5
5
  import { TextAttributes } from "@opentui/core";
6
- import { activeTaskId, cleanTaskTitle, planStatusChip, planStatusColor, progressBar, progressView, taskGlyph, taskRowColor, taskOwnerChip, orderPlanTasksForDisplay, wrapPlanText, } from "../../../ui-core/rendering/plan-view.js";
6
+ import { activeTaskId, cleanTaskTitle, planStatusChip, planStatusColor, progressBar, progressView, taskGlyph, taskRowColor, taskOwnerChip, wrapPlanText, } from "../../../ui-core/rendering/plan-view.js";
7
7
  import { discardPlan, implementPlan } from "../../../ui-core/plan/plan-lifecycle.js";
8
+ import { hasTaskDetails, taskDetailText, wrapTaskDisclosureTitle, TASK_DISCLOSURE_BUTTON_WIDTH } from "../../../ui-core/rendering/task-disclosure.js";
9
+ import { revealTaskHeader, useTaskDisclosure } from "./use-task-disclosure.js";
10
+ import "./task-title.js";
8
11
  function tokenFg(theme, token) {
9
12
  return theme[token];
10
13
  }
11
14
  function Chip(props) {
12
15
  const { label, fg, bg } = props;
13
- return (_jsx("text", { content: ` ${label} `, style: {
16
+ return (_jsx("text", { selectable: false, content: ` ${label} `, style: {
14
17
  fg,
15
18
  bg,
16
19
  height: 1,
@@ -19,12 +22,14 @@ function Chip(props) {
19
22
  } }));
20
23
  }
21
24
  function ActionChip(props) {
22
- const { label, fg, bg, onClick } = props;
23
- return (_jsx("box", { onMouseDown: (event) => {
25
+ const { id, label, fg, bg, onClick } = props;
26
+ return (_jsx("box", { id: id, onMouseDown: (event) => {
27
+ if (event.button !== 0)
28
+ return;
24
29
  event.preventDefault();
25
30
  event.stopPropagation();
26
31
  onClick();
27
- }, style: { flexShrink: 0 }, children: _jsx("text", { content: ` ${label} `, style: {
32
+ }, style: { flexShrink: 0 }, children: _jsx("text", { selectable: false, content: ` ${label} `, style: {
28
33
  fg,
29
34
  bg,
30
35
  height: 1,
@@ -33,189 +38,87 @@ function ActionChip(props) {
33
38
  }
34
39
  function PlanViewImpl(props) {
35
40
  countRender("PlanView");
36
- const { theme, plan, services, width: widthProp } = props;
41
+ const { theme, plan, services, width: widthProp, interactionRef } = props;
42
+ const focused = props.focused ?? services.focus.activeContext() === "plan";
37
43
  const scrollRef = useRef(null);
38
44
  const activeId = plan ? activeTaskId(plan) : undefined;
39
- const innerW = Math.max(14, (widthProp ?? 36) - 4);
40
- const displayTasks = plan ? orderPlanTasksForDisplay(plan.tasks) : [];
45
+ const innerW = Math.max(1, (widthProp ?? 36) - 4);
46
+ const disclosure = useTaskDisclosure(plan, scrollRef, interactionRef, props.disclosureBinding);
47
+ const displayTasks = disclosure.tasks;
48
+ const revealedTaskId = focused ? disclosure.selectedId : activeId;
41
49
  useEffect(() => {
42
- if (activeId) {
43
- scrollRef.current?.scrollChildIntoView(`plan-task-${activeId}`);
44
- }
45
- }, [activeId, plan?.tasks.length, plan?.updatedAt]);
50
+ if (revealedTaskId)
51
+ revealTaskHeader(scrollRef.current, revealedTaskId);
52
+ }, [revealedTaskId]);
53
+ const toggleTask = useCallback((id) => {
54
+ if (services.overlay.isOpen())
55
+ return;
56
+ services.focus.focusRegion("plan");
57
+ disclosure.toggleTask(id);
58
+ }, [services.focus, services.overlay, disclosure.toggleTask]);
59
+ function setAllExpanded(expanded) {
60
+ if (services.overlay.isOpen())
61
+ return;
62
+ services.focus.focusRegion("plan");
63
+ disclosure.setAllExpanded(expanded);
64
+ }
46
65
  function trapWheel(event) {
47
66
  if (!event.scroll)
48
67
  return;
49
68
  event.stopPropagation();
69
+ disclosure.hideKeyboardFocus();
50
70
  services.focus.focusRegion("plan");
51
71
  }
52
- if (!plan) {
53
- return (_jsx("box", { style: {
54
- flexDirection: "column",
55
- flexGrow: 1,
56
- width: "100%",
57
- height: "100%",
58
- justifyContent: "center",
59
- alignItems: "center",
60
- backgroundColor: theme.statusBackground,
61
- }, onMouseScroll: trapWheel, onMouseDown: () => services.focus.focusRegion("plan"), children: _jsxs("box", { style: {
62
- flexDirection: "column",
63
- alignItems: "center",
64
- flexShrink: 0,
65
- paddingLeft: 1,
66
- paddingRight: 1,
67
- }, children: [_jsx("text", { content: "\u25C7", style: { fg: theme.magenta, height: 1, attributes: TextAttributes.BOLD } }), _jsx("text", { content: " ", style: { height: 1 } }), _jsx("text", { content: "No tasks yet", style: {
68
- fg: theme.foreground,
69
- height: 1,
70
- attributes: TextAttributes.BOLD,
71
- } }), _jsx("text", { content: " ", style: { height: 1 } }), _jsx("text", { content: "Plan a multi-step job,", style: { fg: theme.muted, height: 1 } }), _jsx("text", { content: "then /implement.", style: { fg: theme.muted, height: 1 } }), _jsx("text", { content: " ", style: { height: 1 } }), _jsx("text", { content: "Ctrl+H toggle \u00B7 Ctrl+P detail", style: { fg: theme.cyan, height: 1 } })] }) }));
72
- }
72
+ return (_jsx("box", { id: "plan-pane", style: { flexDirection: "column", flexGrow: 1, width: "100%", height: "100%", backgroundColor: theme.statusBackground }, onMouseDown: (event) => event.preventDefault(), onMouseScroll: trapWheel, children: plan ? (_jsxs(_Fragment, { children: [_jsx(PlanHeader, { theme: theme, plan: plan, services: services, width: innerW, summary: disclosure.summary, onSetAllExpanded: setAllExpanded }), _jsxs("scrollbox", { id: "plan-tasks", ref: scrollRef, stickyScroll: false, viewportCulling: true, scrollY: true, scrollX: false, scrollbarOptions: { visible: false, showArrows: false }, onMouseScroll: trapWheel, style: { flexGrow: 1, flexShrink: 1, width: "100%", minHeight: 1, backgroundColor: theme.statusBackground, paddingLeft: 1, paddingRight: 1 }, children: [displayTasks.map((task, index) => (_jsx(TaskRow, { task: task, theme: theme, width: innerW, active: task.id === activeId, selected: focused && disclosure.keyboardFocusVisible && task.id === disclosure.selectedId, expanded: disclosure.expanded.has(task.id), index: index, onToggle: toggleTask }, task.id))), displayTasks.length === 0 ? _jsx("text", { selectable: false, content: "No tasks yet", style: { fg: theme.muted, height: 1 } }) : null] })] })) : (_jsxs("box", { style: { flexDirection: "column", flexGrow: 1, justifyContent: "center", alignItems: "center", paddingLeft: 1, paddingRight: 1 }, children: [_jsx("text", { selectable: false, content: "\u25C7", style: { fg: theme.magenta, height: 1, attributes: TextAttributes.BOLD } }), _jsx("text", { selectable: false, content: "No tasks yet", style: { fg: theme.foreground, height: 1, attributes: TextAttributes.BOLD, marginTop: 1 } }), _jsx("text", { selectable: false, content: "Plan a multi-step job,", style: { fg: theme.muted, height: 1, marginTop: 1 } }), _jsx("text", { selectable: false, content: "then /implement.", style: { fg: theme.muted, height: 1 } }), _jsx("text", { selectable: false, content: "Ctrl+H toggle \u00B7 Ctrl+P detail", style: { fg: theme.cyan, height: 1, marginTop: 1 } })] })) }));
73
+ }
74
+ function PlanHeader(props) {
75
+ const { theme, plan, services, width, summary, onSetAllExpanded } = props;
73
76
  const progress = progressView(plan);
74
77
  const statusFg = tokenFg(theme, planStatusColor(plan.status));
75
- const statusBg = plan.status === "completed"
76
- ? theme.diffAddBg
77
- : plan.status === "in_progress" || plan.status === "approved"
78
- ? theme.queued
79
- : plan.status === "draft"
80
- ? theme.chipTeal
81
- : theme.chip;
82
- const goalLines = wrapPlanText(plan.goal, innerW);
83
- const barWidth = Math.max(6, Math.min(14, innerW - 12));
84
- const bar = progressBar(progress.done, progress.total, barWidth);
85
- const countLabel = progress.total === 0
86
- ? "0 tasks"
87
- : `${progress.done}/${progress.total}`;
88
- return (_jsxs("box", { style: {
89
- flexDirection: "column",
90
- flexGrow: 1,
91
- width: "100%",
92
- height: "100%",
93
- backgroundColor: theme.statusBackground,
94
- }, onMouseScroll: trapWheel, onMouseDown: () => services.focus.focusRegion("plan"), children: [_jsxs("box", { style: {
95
- flexDirection: "column",
96
- width: "100%",
97
- flexShrink: 0,
98
- paddingLeft: 1,
99
- paddingRight: 1,
100
- paddingTop: 1,
101
- backgroundColor: theme.statusBackground,
102
- }, children: [goalLines.map((line, i) => (_jsx("text", { content: line, style: {
103
- fg: theme.foreground,
104
- height: 1,
105
- attributes: TextAttributes.BOLD,
106
- } }, `g-${i}`))), _jsx("text", { content: " ", style: { height: 1 } }), _jsxs("box", { style: {
107
- flexDirection: "row",
108
- width: "100%",
109
- height: 1,
110
- alignItems: "center",
111
- flexShrink: 0,
112
- }, children: [_jsx(Chip, { label: planStatusChip(plan.status), fg: theme.white, bg: statusBg, theme: theme }), _jsx("text", { content: " ", style: { height: 1 } }), _jsx("text", { content: plan.kind || "general", style: { fg: theme.muted, height: 1 } })] }), _jsxs("box", { style: {
113
- flexDirection: "row",
114
- width: "100%",
115
- height: 1,
116
- marginTop: 1,
117
- alignItems: "center",
118
- flexShrink: 0,
119
- }, children: [_jsx("text", { content: bar, style: {
120
- fg: progress.done === progress.total && progress.total > 0
121
- ? theme.success
122
- : theme.cyan,
123
- height: 1,
124
- flexShrink: 0,
125
- } }), _jsx("text", { content: " ", style: { height: 1 } }), _jsx("text", { content: countLabel, style: {
126
- fg: statusFg,
127
- height: 1,
128
- attributes: TextAttributes.BOLD,
129
- } })] }), plan.status === "draft" ? (_jsxs("box", { style: {
130
- flexDirection: "row",
131
- width: "100%",
132
- height: 1,
133
- marginTop: 1,
134
- flexShrink: 0,
135
- alignItems: "center",
136
- }, children: [_jsx(ActionChip, { label: "Implement", fg: theme.white, bg: theme.success, onClick: () => void implementPlan(services) }), _jsx("text", { content: " ", style: { height: 1 } }), _jsx(ActionChip, { label: "Discard", fg: theme.foreground, bg: theme.chip, onClick: () => void discardPlan(services) })] })) : null, _jsx("text", { content: "─".repeat(Math.max(8, innerW)), style: { fg: theme.border, height: 1, marginTop: 1 } })] }), _jsxs("scrollbox", { ref: scrollRef, stickyScroll: false, viewportCulling: true, scrollY: true, scrollX: false, scrollbarOptions: { visible: false, showArrows: false }, onMouseScroll: trapWheel, style: {
137
- flexGrow: 1,
138
- flexShrink: 1,
139
- width: "100%",
140
- minHeight: 4,
141
- backgroundColor: theme.statusBackground,
142
- paddingLeft: 1,
143
- paddingRight: 1,
144
- paddingTop: 0,
145
- }, children: [displayTasks.map((task, index) => (_jsx(TaskRow, { task: task, theme: theme, width: innerW, active: task.id === activeId, index: index }, task.id))), _jsx("text", { content: " ", style: { height: 1 } })] })] }));
78
+ const statusBg = plan.status === "completed" ? theme.diffAddBg : plan.status === "draft" ? theme.chipTeal : theme.chip;
79
+ const countLabel = progress.total === 0 ? "0 tasks" : `${progress.done}/${progress.total}`;
80
+ const canExpand = summary.expanded < summary.total;
81
+ const canCollapse = summary.expanded > 0;
82
+ const controlsWidth = (canExpand ? 12 : 0) + (canCollapse ? 14 : 0) + (canExpand && canCollapse ? 1 : 0);
83
+ const inline = width >= controlsWidth + countLabel.length + 7;
84
+ const barWidth = Math.max(4, Math.min(14, width - countLabel.length - (inline ? controlsWidth + 3 : 1)));
85
+ const controls = summary.total > 0 ? (_jsxs("box", { style: { flexDirection: width >= controlsWidth ? "row" : "column", flexShrink: 0, gap: width >= controlsWidth ? 1 : 0 }, children: [canExpand ? _jsx(ActionChip, { id: "plan-expand-all", label: "Expand all", fg: theme.foreground, bg: theme.chip, onClick: () => onSetAllExpanded(true) }) : null, canCollapse ? _jsx(ActionChip, { id: "plan-collapse-all", label: "Collapse all", fg: theme.foreground, bg: theme.chip, onClick: () => onSetAllExpanded(false) }) : null] })) : null;
86
+ return (_jsxs("box", { id: "plan-header", style: { flexDirection: "column", width: "100%", flexShrink: 0, paddingLeft: 1, paddingRight: 1, paddingTop: 1 }, children: [wrapPlanText(plan.goal, width).map((line, index) => (_jsx("text", { selectable: false, content: line, style: { fg: theme.foreground, height: 1, attributes: TextAttributes.BOLD } }, `goal-${index}`))), _jsxs("box", { style: { flexDirection: "row", width: "100%", height: 1, marginTop: 1, flexShrink: 0, gap: 1 }, children: [_jsx(Chip, { label: planStatusChip(plan.status), fg: plan.status === "draft" ? theme.white : theme.foreground, bg: statusBg, theme: theme }), _jsx("text", { selectable: false, content: wrapPlanText(plan.kind || "general", Math.max(1, width - planStatusChip(plan.status).length - 3))[0] ?? "", style: { fg: theme.muted, height: 1, flexShrink: 1 } })] }), _jsxs("box", { id: "plan-progress", style: { flexDirection: "row", width: "100%", height: 1, marginTop: 1, alignItems: "center", flexShrink: 0, gap: 1 }, children: [_jsx("text", { selectable: false, content: progressBar(progress.done, progress.total, barWidth), style: { fg: progress.done === progress.total && progress.total > 0 ? theme.success : theme.cyan, height: 1, flexShrink: 0 } }), _jsx("text", { selectable: false, content: countLabel, style: { fg: statusFg, height: 1, flexShrink: 0, attributes: TextAttributes.BOLD } }), inline && controls ? _jsx("box", { style: { flexGrow: 1 } }) : null, inline ? controls : null] }), !inline && controls ? _jsx("box", { style: { flexShrink: 0, marginTop: 1 }, children: controls }) : null, plan.status === "draft" ? (_jsxs("box", { style: { flexDirection: width >= 21 ? "row" : "column", width: "100%", marginTop: 1, flexShrink: 0, gap: width >= 21 ? 1 : 0 }, children: [_jsx(ActionChip, { id: "plan-implement", label: "Implement", fg: theme.foreground, bg: theme.diffAddBg, onClick: () => void implementPlan(services) }), _jsx(ActionChip, { id: "plan-discard", label: "Discard", fg: theme.foreground, bg: theme.chip, onClick: () => void discardPlan(services) })] })) : null, _jsx("text", { selectable: false, content: "─".repeat(width), style: { fg: theme.border, height: 1, marginTop: 1, marginBottom: 1 } })] }));
146
87
  }
147
- function TaskRow(props) {
148
- const { task, theme, width, active, index } = props;
149
- const state = task.state;
88
+ function TaskDisclosureButton(props) {
89
+ const { taskId, theme, bg, selected, expanded, onToggle } = props;
90
+ const [hovered, setHovered] = useState(false);
91
+ const highlighted = selected || hovered;
92
+ const id = `plan-task-${taskId}-disclosure`;
93
+ return (_jsx("box", { id: id, onMouseOver: () => setHovered(true), onMouseOut: () => setHovered(false), onMouseDown: (event) => {
94
+ if (event.button !== 0)
95
+ return;
96
+ event.preventDefault();
97
+ event.stopPropagation();
98
+ onToggle(taskId);
99
+ }, style: { width: TASK_DISCLOSURE_BUTTON_WIDTH, height: 1, flexShrink: 0, justifyContent: "center", alignItems: "center", backgroundColor: bg }, children: _jsx("text", { selectable: false, id: `${id}-label`, wrapMode: "none", content: expanded ? "−" : "+", style: { fg: highlighted ? theme.cyan : theme.foreground, bg, width: 1, height: 1, flexShrink: 0, attributes: TextAttributes.BOLD } }) }));
100
+ }
101
+ const TaskRow = memo(function TaskRow(props) {
102
+ const { task, theme, width, active, selected, expanded, index, onToggle } = props;
150
103
  const stateColor = tokenFg(theme, taskRowColor(task));
151
- const titleColor = state === "pending" || state === "skipped"
152
- ? theme.foreground
153
- : stateColor;
154
- const glyph = taskGlyph(task);
155
- const bg = active || (state === "in_progress" && !task.responderOwned)
104
+ const titleColor = task.state === "pending" || task.state === "skipped" ? theme.foreground : stateColor;
105
+ const bg = active || (task.state === "in_progress" && !task.responderOwned)
156
106
  ? theme.rowA
157
- : index % 2 === 0
158
- ? theme.rowB
159
- : theme.statusBackground;
107
+ : index % 2 === 0 ? theme.rowB : theme.statusBackground;
160
108
  const ownerChip = taskOwnerChip(task);
161
- const title = `${task.parentTaskId ? "↳ " : ""}` +
162
- `${ownerChip ? `[${ownerChip}] ` : ""}${cleanTaskTitle(task)}`;
163
- const titleBudget = Math.max(8, width - 5);
164
- const titleLines = wrapPlanText(title, titleBudget);
165
- const jobLabel = task.jobId
166
- ? `job=${task.jobId}${task.processId ? ` pid=${task.processId}` : ""}`
167
- : undefined;
168
- const noteText = [jobLabel, task.note?.trim()].filter(Boolean).join(" · ");
169
- const noteLines = noteText
170
- ? wrapPlanText(noteText, Math.max(8, width - 6))
171
- : [];
172
- const firstTitle = titleLines[0] ?? "";
173
- const titleAttributes = state === "in_progress" || active
174
- ? TextAttributes.BOLD
175
- : TextAttributes.NONE;
176
- return (_jsxs("box", { id: `plan-task-${task.id}`, style: {
177
- flexDirection: "column",
178
- width: "100%",
179
- flexShrink: 0,
180
- }, children: [_jsxs("box", { style: {
181
- flexDirection: "row",
182
- width: "100%",
183
- flexShrink: 0,
184
- alignItems: "stretch",
185
- backgroundColor: bg,
186
- }, children: [_jsx("box", { style: {
187
- width: 1,
188
- flexShrink: 0,
189
- alignSelf: "stretch",
190
- backgroundColor: stateColor,
191
- minHeight: 1,
192
- } }), _jsxs("box", { style: {
193
- flexDirection: "column",
194
- flexGrow: 1,
195
- flexShrink: 1,
196
- minWidth: 0,
197
- justifyContent: "center",
198
- paddingLeft: 1,
199
- paddingRight: 1,
200
- paddingTop: 1,
201
- paddingBottom: 1,
202
- backgroundColor: bg,
203
- }, children: [_jsx("text", { content: `${glyph} ${firstTitle}`, style: {
204
- fg: titleColor,
205
- bg,
206
- height: 1,
207
- attributes: titleAttributes,
208
- } }), titleLines.slice(1).map((line, i) => (_jsx("text", { content: ` ${line}`, style: {
209
- fg: titleColor,
210
- bg,
211
- height: 1,
212
- attributes: titleAttributes,
213
- } }, `t-${task.id}-${i}`))), noteLines.map((line, i) => (_jsx("text", { content: line, style: {
214
- fg: theme.muted,
215
- bg,
216
- height: 1,
217
- attributes: TextAttributes.DIM,
218
- } }, `n-${task.id}-${i}`)))] })] }), _jsx("text", { content: " ", style: { bg: theme.statusBackground, height: 1, width: "100%" } })] }));
109
+ const title = `${task.parentTaskId ? "↳ " : ""}${ownerChip ? `[${ownerChip}] ` : ""}${cleanTaskTitle(task)}`;
110
+ const expandable = hasTaskDetails(task);
111
+ const titleLines = wrapTaskDisclosureTitle(title, width, expandable);
112
+ const titleAttributes = task.state === "in_progress" || active ? TextAttributes.BOLD : TextAttributes.NONE;
113
+ return (_jsxs("box", { id: `plan-task-${task.id}`, style: { flexDirection: "column", width: "100%", flexShrink: 0 }, children: [_jsxs("box", { style: { flexDirection: "row", width: "100%", flexShrink: 0, alignItems: "stretch", backgroundColor: bg }, children: [_jsx("box", { style: { width: 1, flexShrink: 0, alignSelf: "stretch", backgroundColor: stateColor, minHeight: 1 } }), _jsxs("box", { style: { flexDirection: "column", flexGrow: 1, flexShrink: 1, minWidth: 0, justifyContent: "center", paddingLeft: 1, paddingRight: 1, paddingTop: 1, paddingBottom: 1, backgroundColor: bg }, children: [_jsx("task-title", { id: `plan-task-${task.id}-header`, style: { flexDirection: "column", width: "100%", flexShrink: 0 }, children: titleLines.map((line, lineIndex) => {
114
+ const last = lineIndex === titleLines.length - 1;
115
+ return (_jsxs("box", { style: { flexDirection: "row", flexShrink: 0 }, children: [_jsx("text", { selectable: false, id: `plan-task-${task.id}-title-${last ? "end" : lineIndex}`, wrapMode: "none", content: `${lineIndex === 0 ? taskGlyph(task) : " "} ${line}`, style: { fg: titleColor, bg, height: 1, flexShrink: 0, attributes: titleAttributes } }), last && expandable ? (_jsxs(_Fragment, { children: [_jsx("text", { selectable: false, content: " ", style: { bg, height: 1, flexShrink: 0 } }), _jsx(TaskDisclosureButton, { taskId: task.id, theme: theme, bg: bg, selected: selected, expanded: expanded, onToggle: onToggle })] })) : null] }, `title-${lineIndex}`));
116
+ }) }), expanded && expandable ? _jsx(TaskDetails, { task: task, theme: theme, width: Math.max(1, width - 6), bg: bg }) : null] })] }), _jsx("text", { selectable: false, content: " ", style: { bg: theme.statusBackground, height: 1, width: "100%" } })] }));
117
+ });
118
+ function TaskDetails(props) {
119
+ const { task, theme, width, bg } = props;
120
+ const lines = useMemo(() => wrapPlanText(taskDetailText(task), width), [task, width]);
121
+ return (_jsx("box", { id: `plan-task-${task.id}-details`, style: { flexDirection: "column", flexShrink: 0, width: "100%" }, children: lines.map((line, index) => _jsx("text", { selectable: false, content: line, style: { fg: theme.muted, bg, height: 1, attributes: TextAttributes.DIM } }, `body-${index}`)) }));
219
122
  }
220
123
  export const PlanView = memo(PlanViewImpl);
221
124
  //# sourceMappingURL=plan-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan-view.js","sourceRoot":"","sources":["../../../../src/tui-v2/components/plan/plan-view.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan-view.js","sourceRoot":"","sources":["../../../../src/tui-v2/components/plan/plan-view.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { BoxRenderable } from "@opentui/core";
2
+ export declare class TaskTitleRenderable extends BoxRenderable {
3
+ protected _getVisibleChildren(): number[];
4
+ }
5
+ declare module "@opentui/react" {
6
+ interface OpenTUIComponents {
7
+ "task-title": typeof TaskTitleRenderable;
8
+ }
9
+ }
@@ -0,0 +1,17 @@
1
+ import { BoxRenderable, ScrollBoxRenderable } from "@opentui/core";
2
+ import { extend } from "@opentui/react";
3
+ export class TaskTitleRenderable extends BoxRenderable {
4
+ _getVisibleChildren() {
5
+ let ancestor = this.parent;
6
+ while (ancestor && !(ancestor instanceof ScrollBoxRenderable))
7
+ ancestor = ancestor.parent;
8
+ if (!ancestor)
9
+ return super._getVisibleChildren();
10
+ const viewport = ancestor.viewport;
11
+ const fits = this.height <= viewport.height;
12
+ const clipped = this.y < viewport.y || this.y + this.height > viewport.y + viewport.height;
13
+ return fits && clipped ? [] : super._getVisibleChildren();
14
+ }
15
+ }
16
+ extend({ "task-title": TaskTitleRenderable });
17
+ //# sourceMappingURL=task-title.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-title.js","sourceRoot":"","sources":["../../../../src/tui-v2/components/plan/task-title.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAmB,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IACjC,mBAAmB;QACpC,IAAI,QAAQ,GAAsB,IAAI,CAAC,MAAM,CAAC;QAC9C,OAAO,QAAQ,IAAI,CAAC,CAAC,QAAQ,YAAY,mBAAmB,CAAC;YAAE,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC1F,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC3F,OAAO,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;IAC5D,CAAC;CACF;AAQD,MAAM,CAAC,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { type Dispatch, type Ref, type RefObject, type SetStateAction } from "react";
2
+ import type { ScrollBoxRenderable } from "@opentui/core";
3
+ import type { PlanTask, SessionPlan } from "../../../store/plan.js";
4
+ import { type TaskDisclosureState } from "../../../ui-core/rendering/task-disclosure.js";
5
+ import type { PlanInteractionPort } from "./plan-interaction.js";
6
+ export interface TaskDisclosureBinding {
7
+ readonly state: TaskDisclosureState;
8
+ readonly tasks: readonly PlanTask[];
9
+ readonly setState: Dispatch<SetStateAction<TaskDisclosureState>>;
10
+ }
11
+ export declare function useTaskDisclosureBinding(plan: SessionPlan | undefined, inherited?: TaskDisclosureBinding): TaskDisclosureBinding;
12
+ export declare function revealTaskHeader(scroll: ScrollBoxRenderable | null, taskId: string): void;
13
+ export declare function useTaskDisclosure(plan: SessionPlan | undefined, scrollRef: RefObject<ScrollBoxRenderable | null>, interactionRef: Ref<PlanInteractionPort> | undefined, inherited?: TaskDisclosureBinding): {
14
+ tasks: readonly PlanTask[];
15
+ expanded: ReadonlySet<string>;
16
+ selectedId: string | undefined;
17
+ keyboardFocusVisible: boolean;
18
+ summary: {
19
+ readonly total: number;
20
+ readonly expanded: number;
21
+ };
22
+ toggleTask: (id: string) => void;
23
+ setAllExpanded: (expanded: boolean, keyboardFocusVisible?: boolean) => void;
24
+ hideKeyboardFocus: () => void;
25
+ };