@pentoshi/clai 3.0.0 → 3.6.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 (176) hide show
  1. package/README.md +1 -1
  2. package/dist/agent/classic-renderer.js +9 -1
  3. package/dist/agent/classic-renderer.js.map +1 -1
  4. package/dist/agent/context-manager.js +8 -2
  5. package/dist/agent/context-manager.js.map +1 -1
  6. package/dist/agent/events.d.ts +5 -0
  7. package/dist/agent/loop-guard.d.ts +2 -0
  8. package/dist/agent/loop-guard.js +39 -2
  9. package/dist/agent/loop-guard.js.map +1 -1
  10. package/dist/agent/plan-tool.d.ts +22 -0
  11. package/dist/agent/plan-tool.js +434 -49
  12. package/dist/agent/plan-tool.js.map +1 -1
  13. package/dist/agent/project-root.d.ts +33 -0
  14. package/dist/agent/project-root.js +158 -0
  15. package/dist/agent/project-root.js.map +1 -0
  16. package/dist/agent/runner.js +1204 -253
  17. package/dist/agent/runner.js.map +1 -1
  18. package/dist/agent/task-evidence.d.ts +103 -0
  19. package/dist/agent/task-evidence.js +413 -0
  20. package/dist/agent/task-evidence.js.map +1 -0
  21. package/dist/agent/tool-call-parser.d.ts +21 -0
  22. package/dist/agent/tool-call-parser.js +101 -28
  23. package/dist/agent/tool-call-parser.js.map +1 -1
  24. package/dist/agent/tool-history.d.ts +27 -0
  25. package/dist/agent/tool-history.js +150 -0
  26. package/dist/agent/tool-history.js.map +1 -0
  27. package/dist/agent/workspace-orient.d.ts +64 -0
  28. package/dist/agent/workspace-orient.js +418 -0
  29. package/dist/agent/workspace-orient.js.map +1 -0
  30. package/dist/app/adapters/agent-event-adapter.js +5 -0
  31. package/dist/app/adapters/agent-event-adapter.js.map +1 -1
  32. package/dist/app/controllers/session-controller.js +4 -0
  33. package/dist/app/controllers/session-controller.js.map +1 -1
  34. package/dist/app/events/app-event.d.ts +4 -0
  35. package/dist/app/events/app-event.js.map +1 -1
  36. package/dist/commands/doctor.js +14 -1
  37. package/dist/commands/doctor.js.map +1 -1
  38. package/dist/commands/update.js +1 -1
  39. package/dist/index.js +40 -8
  40. package/dist/index.js.map +1 -1
  41. package/dist/llm/adapters/anthropic-tools.d.ts +99 -0
  42. package/dist/llm/adapters/anthropic-tools.js +225 -0
  43. package/dist/llm/adapters/anthropic-tools.js.map +1 -0
  44. package/dist/llm/adapters/gemini-tools.d.ts +54 -0
  45. package/dist/llm/adapters/gemini-tools.js +139 -0
  46. package/dist/llm/adapters/gemini-tools.js.map +1 -0
  47. package/dist/llm/adapters/ollama-tools.d.ts +22 -0
  48. package/dist/llm/adapters/ollama-tools.js +62 -0
  49. package/dist/llm/adapters/ollama-tools.js.map +1 -0
  50. package/dist/llm/adapters/openai-tools.d.ts +39 -0
  51. package/dist/llm/adapters/openai-tools.js +71 -0
  52. package/dist/llm/adapters/openai-tools.js.map +1 -0
  53. package/dist/llm/agentrouter.js +23 -4
  54. package/dist/llm/agentrouter.js.map +1 -1
  55. package/dist/llm/anthropic.js +93 -92
  56. package/dist/llm/anthropic.js.map +1 -1
  57. package/dist/llm/aws-mantle.js +93 -56
  58. package/dist/llm/aws-mantle.js.map +1 -1
  59. package/dist/llm/bynara.js +23 -4
  60. package/dist/llm/bynara.js.map +1 -1
  61. package/dist/llm/capabilities.d.ts +7 -0
  62. package/dist/llm/capabilities.js +74 -0
  63. package/dist/llm/capabilities.js.map +1 -1
  64. package/dist/llm/gemini.js +63 -48
  65. package/dist/llm/gemini.js.map +1 -1
  66. package/dist/llm/groq.js +23 -4
  67. package/dist/llm/groq.js.map +1 -1
  68. package/dist/llm/http.d.ts +22 -17
  69. package/dist/llm/http.js +99 -26
  70. package/dist/llm/http.js.map +1 -1
  71. package/dist/llm/kimchi.js +23 -4
  72. package/dist/llm/kimchi.js.map +1 -1
  73. package/dist/llm/nvidia.js +23 -4
  74. package/dist/llm/nvidia.js.map +1 -1
  75. package/dist/llm/ollama.js +49 -31
  76. package/dist/llm/ollama.js.map +1 -1
  77. package/dist/llm/openai.js +23 -4
  78. package/dist/llm/openai.js.map +1 -1
  79. package/dist/llm/openrouter.js +23 -4
  80. package/dist/llm/openrouter.js.map +1 -1
  81. package/dist/llm/qwen-cloud.js +23 -4
  82. package/dist/llm/qwen-cloud.js.map +1 -1
  83. package/dist/llm/router.js +48 -6
  84. package/dist/llm/router.js.map +1 -1
  85. package/dist/llm/tool-protocol.d.ts +73 -0
  86. package/dist/llm/tool-protocol.js +282 -0
  87. package/dist/llm/tool-protocol.js.map +1 -0
  88. package/dist/modes/ask.js +74 -20
  89. package/dist/modes/ask.js.map +1 -1
  90. package/dist/prompts/index.d.ts +13 -5
  91. package/dist/prompts/index.js +122 -23
  92. package/dist/prompts/index.js.map +1 -1
  93. package/dist/repl.js +7 -0
  94. package/dist/repl.js.map +1 -1
  95. package/dist/store/config.d.ts +7 -0
  96. package/dist/store/config.js +1 -0
  97. package/dist/store/config.js.map +1 -1
  98. package/dist/store/plan.d.ts +2 -0
  99. package/dist/store/plan.js.map +1 -1
  100. package/dist/tools/capabilities.d.ts +2 -0
  101. package/dist/tools/capabilities.js +101 -6
  102. package/dist/tools/capabilities.js.map +1 -1
  103. package/dist/tools/command-intent.d.ts +1 -0
  104. package/dist/tools/command-intent.js +31 -0
  105. package/dist/tools/command-intent.js.map +1 -1
  106. package/dist/tools/definitions.d.ts +20 -0
  107. package/dist/tools/definitions.js +509 -0
  108. package/dist/tools/definitions.js.map +1 -0
  109. package/dist/tools/fs.d.ts +6 -0
  110. package/dist/tools/fs.js +68 -9
  111. package/dist/tools/fs.js.map +1 -1
  112. package/dist/tools/net-ping-sweep.js +69 -16
  113. package/dist/tools/net-ping-sweep.js.map +1 -1
  114. package/dist/tools/nmap-runner.d.ts +8 -7
  115. package/dist/tools/nmap-runner.js +126 -65
  116. package/dist/tools/nmap-runner.js.map +1 -1
  117. package/dist/tools/registry.js +122 -33
  118. package/dist/tools/registry.js.map +1 -1
  119. package/dist/tools/validate.d.ts +11 -0
  120. package/dist/tools/validate.js +53 -0
  121. package/dist/tools/validate.js.map +1 -1
  122. package/dist/tools/web/search.js +48 -4
  123. package/dist/tools/web/search.js.map +1 -1
  124. package/dist/tui/runtime.d.ts +19 -0
  125. package/dist/tui/runtime.js +92 -0
  126. package/dist/tui/runtime.js.map +1 -0
  127. package/dist/tui/state.js +2 -0
  128. package/dist/tui/state.js.map +1 -1
  129. package/dist/tui-v2/app/App.d.ts +3 -3
  130. package/dist/tui-v2/app/App.js +22 -10
  131. package/dist/tui-v2/app/App.js.map +1 -1
  132. package/dist/tui-v2/app/plan-lifecycle.d.ts +6 -0
  133. package/dist/tui-v2/app/plan-lifecycle.js +43 -7
  134. package/dist/tui-v2/app/plan-lifecycle.js.map +1 -1
  135. package/dist/tui-v2/components/modal/confirm-modal.d.ts +5 -6
  136. package/dist/tui-v2/components/modal/confirm-modal.js +60 -21
  137. package/dist/tui-v2/components/modal/confirm-modal.js.map +1 -1
  138. package/dist/tui-v2/components/modal/secret-modal.d.ts +3 -9
  139. package/dist/tui-v2/components/modal/secret-modal.js +17 -17
  140. package/dist/tui-v2/components/modal/secret-modal.js.map +1 -1
  141. package/dist/tui-v2/components/overlay/overlay-host.d.ts +12 -3
  142. package/dist/tui-v2/components/overlay/overlay-host.js +19 -4
  143. package/dist/tui-v2/components/overlay/overlay-host.js.map +1 -1
  144. package/dist/tui-v2/components/plan/plan-view.d.ts +1 -1
  145. package/dist/tui-v2/components/plan/plan-view.js +8 -4
  146. package/dist/tui-v2/components/plan/plan-view.js.map +1 -1
  147. package/dist/tui-v2/components/status/status-line.js +10 -1
  148. package/dist/tui-v2/components/status/status-line.js.map +1 -1
  149. package/dist/tui-v2/components/transcript/assistant-message.js +6 -0
  150. package/dist/tui-v2/components/transcript/assistant-message.js.map +1 -1
  151. package/dist/tui-v2/components/transcript/compacted-row.d.ts +5 -5
  152. package/dist/tui-v2/components/transcript/compacted-row.js +15 -40
  153. package/dist/tui-v2/components/transcript/compacted-row.js.map +1 -1
  154. package/dist/tui-v2/components/transcript/tool-card.js +43 -13
  155. package/dist/tui-v2/components/transcript/tool-card.js.map +1 -1
  156. package/dist/tui-v2/components/transcript/transcript-row.js +8 -1
  157. package/dist/tui-v2/components/transcript/transcript-row.js.map +1 -1
  158. package/dist/tui-v2/rendering/batch-sections.d.ts +12 -0
  159. package/dist/tui-v2/rendering/batch-sections.js +68 -0
  160. package/dist/tui-v2/rendering/batch-sections.js.map +1 -1
  161. package/dist/tui-v2/rendering/strip-tool-surfaces.d.ts +10 -0
  162. package/dist/tui-v2/rendering/strip-tool-surfaces.js +32 -0
  163. package/dist/tui-v2/rendering/strip-tool-surfaces.js.map +1 -0
  164. package/dist/tui-v2/rendering/tool-presenter.d.ts +6 -1
  165. package/dist/tui-v2/rendering/tool-presenter.js +68 -2
  166. package/dist/tui-v2/rendering/tool-presenter.js.map +1 -1
  167. package/dist/tui-v2/state/transcript-hydrate.js +6 -2
  168. package/dist/tui-v2/state/transcript-hydrate.js.map +1 -1
  169. package/dist/tui-v2/state/transcript-reducer.js +74 -16
  170. package/dist/tui-v2/state/transcript-reducer.js.map +1 -1
  171. package/dist/tui-v2/state/transcript-types.d.ts +1 -1
  172. package/dist/types.d.ts +58 -0
  173. package/dist/ui/ansi-box.d.ts +2 -0
  174. package/dist/ui/ansi-box.js +8 -1
  175. package/dist/ui/ansi-box.js.map +1 -1
  176. package/package.json +13 -4
@@ -6,9 +6,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
6
6
  * Legacy-style layout: scrollable transcript (intro card + messages), optional
7
7
  * plan, completion menu + composer at the bottom, OverlayHost for pickers.
8
8
  *
9
- * Overlays (Ctrl+P pager, pickers, modals) live in a full-bleed absolute host
10
- * outside the padded content column so they never reflow or clip the intro
11
- * card. Plan split/overlay reserves chat width so the agent card stays intact.
9
+ * Confirm/secret dock above the composer (in-flow). Pickers, pager, and jobs
10
+ * live in a full-bleed absolute host so they never reflow the intro card.
11
+ * Plan split/overlay reserves chat width so the agent card stays intact.
12
12
  */
13
13
  import { useEffect, useRef, useState } from "react";
14
14
  import { useKeyboard, useTerminalDimensions } from "@opentui/react";
@@ -89,8 +89,18 @@ export function App() {
89
89
  // overlay both shrink this so the intro card + messages reflow cleanly
90
90
  // instead of overflowing mid-border under Ctrl+H.
91
91
  const contentInnerWidth = Math.max(10, width - horizontalPadding * 2);
92
- const splitPlanW = planVisible && layout.plan.placement === "split" ? layout.plan.width + 1 : 0;
93
- const overlayPlanW = planVisible && layout.plan.placement === "overlay" ? planOverlayWidth(width) + 2 : 0;
92
+ // Breathing room between chat text and the plan/task pane border.
93
+ const planChatGap = planVisible && layout.plan.placement === "split"
94
+ ? 2
95
+ : planVisible && layout.plan.placement === "overlay"
96
+ ? 2
97
+ : 0;
98
+ const splitPlanW = planVisible && layout.plan.placement === "split"
99
+ ? layout.plan.width
100
+ : 0;
101
+ const overlayPlanW = planVisible && layout.plan.placement === "overlay"
102
+ ? planOverlayWidth(width) + planChatGap
103
+ : 0;
94
104
  const chatContentWidth = Math.max(24, contentInnerWidth - splitPlanW - overlayPlanW);
95
105
  useKeyboard((key) => {
96
106
  if (key.eventType === "release" || overlay.kind !== "none")
@@ -269,7 +279,9 @@ export function App() {
269
279
  flexGrow: layout.plan.placement === "split" || overlayPlanW > 0 ? 0 : 1,
270
280
  flexShrink: 1,
271
281
  backgroundColor: theme.background,
272
- }, children: _jsx(TranscriptView, { services: services, theme: theme, focused: focusContext === "transcript" && overlay.kind === "none", contentWidth: chatContentWidth }) }), layout.plan.placement === "split" ? (_jsx("box", { title: " Plan ", border: true, borderStyle: "rounded", style: {
282
+ // Keep transcript text off the plan border when the task pane is open.
283
+ paddingRight: planChatGap > 0 ? planChatGap : 0,
284
+ }, children: _jsx(TranscriptView, { services: services, theme: theme, focused: focusContext === "transcript" && overlay.kind === "none", contentWidth: Math.max(20, chatContentWidth - planChatGap) }) }), layout.plan.placement === "split" ? (_jsx("box", { title: " Plan ", border: true, borderStyle: "rounded", style: {
273
285
  width: layout.plan.width,
274
286
  height: "100%",
275
287
  flexShrink: 0,
@@ -279,7 +291,7 @@ export function App() {
279
291
  }, onMouseDown: () => services.focus.focusRegion("plan"), onMouseScroll: onPlanWheel, children: planPanel })) : null] }), _jsx(QueuePanel, { services: services, theme: theme, width: contentInnerWidth, onEdit: (text) => {
280
292
  setComposerSeed({ token: Date.now(), text });
281
293
  services.focus.focusRegion("composer");
282
- } }), _jsx(ComposerEditor, { services: services, theme: theme, width: contentInnerWidth, height: composerMaxTextRows, focused: composerFocused, maxSuggestions: completionRows, running: session.running, seedDraft: composerSeed }), layout.status.height > 0 ? (_jsx(StatusLine, { session: services.session, theme: theme, activity: transcript.runningStatus, width: contentInnerWidth, planVisible: planVisible, thinkingExpanded: transcript.expandThinkingGlobal, outputExpanded: transcript.expandOutputGlobal, onToggleThinking: () => services.transcript.toggleThinkingGlobal(), onToggleOutput: () => services.transcript.toggleOutputGlobal(), onTogglePlan: () => {
294
+ } }), _jsx(OverlayHost, { services: services, theme: theme, width: contentInnerWidth, height: height, docked: true }), _jsx(ComposerEditor, { services: services, theme: theme, width: contentInnerWidth, height: composerMaxTextRows, focused: composerFocused, maxSuggestions: completionRows, running: session.running, seedDraft: composerSeed }), layout.status.height > 0 ? (_jsx(StatusLine, { session: services.session, theme: theme, activity: transcript.runningStatus, width: contentInnerWidth, planVisible: planVisible, thinkingExpanded: transcript.expandThinkingGlobal, outputExpanded: transcript.expandOutputGlobal, onToggleThinking: () => services.transcript.toggleThinkingGlobal(), onToggleOutput: () => services.transcript.toggleOutputGlobal(), onTogglePlan: () => {
283
295
  // Same path as Ctrl+H — open loads plan from disk when empty.
284
296
  setPlanVisible((v) => {
285
297
  const next = !v;
@@ -298,9 +310,9 @@ export function App() {
298
310
  } })) : null] }), layout.plan.placement === "overlay" && planVisible ? (_jsx("box", { title: " Plan ", border: true, borderStyle: "rounded", style: {
299
311
  position: "absolute",
300
312
  top: Math.max(1, Math.floor(height * 0.08)),
301
- // Sit in the reserved right gutter so it never paints over the
302
- // reflowed intro card / chat column.
303
- right: Math.max(1, horizontalPadding),
313
+ // Sit flush with the right edge of the padded content column
314
+ // so the plan pane aligns with where the input box ends.
315
+ right: horizontalPadding,
304
316
  width: planOverlayWidth(width),
305
317
  height: Math.max(12, Math.floor(height * 0.72)),
306
318
  // CLAI wordmark top-of-"I" magenta (same as agent card frame).
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/tui-v2/app/App.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../../src/tui-v2/app/App.tsx"],"names":[],"mappings":"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"}
@@ -5,8 +5,14 @@
5
5
  * the session policy flag the agent gate reads, then run the implement prompt.
6
6
  * Kept out of `PlanController` (persistence only) and out of components.
7
7
  */
8
+ import type { SessionPlan } from "../../store/plan.js";
8
9
  import type { AppServices } from "../bootstrap/composition-root.js";
10
+ /** Coding / build plans — scaffold + verify. */
11
+ export declare const IMPLEMENT_PROMPT_CODING: string;
12
+ /** Pentest / security plans — no local dev-server assumption. */
13
+ export declare const IMPLEMENT_PROMPT_PENTEST: string;
9
14
  export declare const IMPLEMENT_PROMPT: string;
15
+ export declare function buildImplementPrompt(plan: SessionPlan): string;
10
16
  export declare function implementPlan(services: AppServices): Promise<void>;
11
17
  export declare function discardPlan(services: AppServices): Promise<void>;
12
18
  /**
@@ -5,30 +5,62 @@
5
5
  * the session policy flag the agent gate reads, then run the implement prompt.
6
6
  * Kept out of `PlanController` (persistence only) and out of components.
7
7
  */
8
- export const IMPLEMENT_PROMPT = "I approve the plan. Execute it now in STRICT ORDER. Task 1 (explore) is ALREADY COMPLETE from the planning phase — " +
9
- "do NOT re-list or re-read the directory. Start with the FIRST pending task that still needs implementation work. " +
8
+ /** Coding / build plans scaffold + verify. */
9
+ export const IMPLEMENT_PROMPT_CODING = "I approve the plan. Execute it now in STRICT ORDER. " +
10
+ "Start with the FIRST pending task that still needs work (skip only tasks already marked done). " +
10
11
  "For each task: call task.update {taskId, state:'in_progress'} → do the real work → VERIFY it succeeded → " +
11
12
  "call task.update {taskId, state:'done'}, then move to the NEXT task. " +
12
13
  "If a tool call FAILS, mark the task 'failed', fix the problem, and retry. Do NOT mark a task done when it failed. " +
13
- "Build the project for real with fs.writeMany (create all files in as few calls as possible). " +
14
- "Do NOT call web.search you already know everything needed. " +
15
- "Run real commands (installs, servers, verification) — do not claim anything ran without a successful tool call.";
14
+ "Do NOT skip ahead to later tasks while earlier ones are still pending. " +
15
+ "Build for real with fs.write / fs.writeMany when the plan requires files. " +
16
+ "Run real commands when needed — do not claim anything ran without a successful tool call.";
17
+ /** Pentest / security plans — no local dev-server assumption. */
18
+ export const IMPLEMENT_PROMPT_PENTEST = "I approve the plan. Execute the engagement tasks in STRICT ORDER. " +
19
+ "Start with the FIRST pending task; do NOT skip to later tasks while earlier ones are still pending. " +
20
+ "For each task: task.update in_progress → do the recon/testing work with tools → task.update done (or failed with a note). " +
21
+ "Prefer tool.batch / dns / http.fetch / net.scan for recon; continue when one lookup fails. " +
22
+ "Do NOT start a local dev server, npm run dev, bun run, vite, next, or shell.start. " +
23
+ "Do NOT list or read the clai workspace/package.json as a follow-up. Stay on the remote engagement target/scope. " +
24
+ "When all tasks are done, write the report if needed and STOP with findings — no localhost step.";
25
+ export const IMPLEMENT_PROMPT = IMPLEMENT_PROMPT_CODING;
26
+ /**
27
+ * When the user implements/discards from the plan pane, the chat plan-ready
28
+ * confirm must not also run implement/discard (double-queue / double-discard).
29
+ */
30
+ let planDecisionHandled = false;
31
+ function dismissPlanConfirmIfOpen(services, asYes) {
32
+ const state = services.overlay.getState();
33
+ if (state.kind === "confirm" && state.request.kind === "plan") {
34
+ services.overlay.answerConfirm(asYes);
35
+ }
36
+ }
37
+ export function buildImplementPrompt(plan) {
38
+ if (plan.kind === "pentest")
39
+ return IMPLEMENT_PROMPT_PENTEST;
40
+ return IMPLEMENT_PROMPT_CODING;
41
+ }
16
42
  export async function implementPlan(services) {
17
43
  const plan = services.plan.current();
18
44
  if (!plan)
19
45
  return;
20
46
  if (plan.tasks.length > 0 && plan.tasks.every((t) => t.state === "done"))
21
47
  return;
48
+ // Pane click wins: mark handled, close chat confirm so Y/N can't re-queue.
49
+ planDecisionHandled = true;
50
+ dismissPlanConfirmIfOpen(services, true);
22
51
  await services.plan.approve();
23
52
  services.session.setPlanApproved(true);
53
+ const prompt = buildImplementPrompt(plan);
24
54
  if (services.session.getState().running) {
25
- services.session.enqueue(IMPLEMENT_PROMPT);
55
+ services.session.enqueue(prompt);
26
56
  }
27
57
  else {
28
- await services.session.submit(IMPLEMENT_PROMPT);
58
+ await services.session.submit(prompt);
29
59
  }
30
60
  }
31
61
  export async function discardPlan(services) {
62
+ planDecisionHandled = true;
63
+ dismissPlanConfirmIfOpen(services, false);
32
64
  await services.plan.discard();
33
65
  services.session.setPlanApproved(false);
34
66
  }
@@ -44,6 +76,7 @@ export async function promptPlanApprovalIfNeeded(services) {
44
76
  const plan = services.plan.current();
45
77
  if (!plan || plan.status !== "draft" || plan.tasks.length === 0)
46
78
  return;
79
+ planDecisionHandled = false;
47
80
  const ok = await services.overlay.openConfirm({
48
81
  kind: "plan",
49
82
  prompt: `Implement this plan now? "${plan.goal}" — ${plan.tasks.length} task(s). (Y to implement · N to discard)`,
@@ -51,6 +84,9 @@ export async function promptPlanApprovalIfNeeded(services) {
51
84
  const { formatPlanPagerDocument } = await import("../rendering/plan-view.js");
52
85
  services.overlay.openPager(`Plan · ${plan.goal}`, formatPlanPagerDocument(plan));
53
86
  });
87
+ // Plan pane already implemented/discarded while this confirm was open.
88
+ if (planDecisionHandled)
89
+ return;
54
90
  if (ok)
55
91
  await implementPlan(services);
56
92
  else
@@ -1 +1 @@
1
- {"version":3,"file":"plan-lifecycle.js","sourceRoot":"","sources":["../../../src/tui-v2/app/plan-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,MAAM,CAAC,MAAM,gBAAgB,GAC3B,qHAAqH;IACrH,mHAAmH;IACnH,2GAA2G;IAC3G,uEAAuE;IACvE,oHAAoH;IACpH,+FAA+F;IAC/F,+DAA+D;IAC/D,iHAAiH,CAAC;AAEpH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAqB;IACvD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACrC,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC;QAAE,OAAO;IAEjF,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAEvC,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC;QACxC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAqB;IACrD,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,QAAqB;IACpE,IAAI,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE;QAAE,OAAO;IAC9C,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;QAAE,OAAO;IAEtC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAExE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAC3C;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,6BAA6B,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,2CAA2C;KAClH,EACD,KAAK,IAAI,EAAE;QACT,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAC9C,2BAA2B,CAC5B,CAAC;QACF,QAAQ,CAAC,OAAO,CAAC,SAAS,CACxB,UAAU,IAAI,CAAC,IAAI,EAAE,EACrB,uBAAuB,CAAC,IAAI,CAAC,CAC9B,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,IAAI,EAAE;QAAE,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;;QACjC,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"plan-lifecycle.js","sourceRoot":"","sources":["../../../src/tui-v2/app/plan-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,gDAAgD;AAChD,MAAM,CAAC,MAAM,uBAAuB,GAClC,sDAAsD;IACtD,iGAAiG;IACjG,2GAA2G;IAC3G,uEAAuE;IACvE,oHAAoH;IACpH,yEAAyE;IACzE,4EAA4E;IAC5E,2FAA2F,CAAC;AAE9F,iEAAiE;AACjE,MAAM,CAAC,MAAM,wBAAwB,GACnC,oEAAoE;IACpE,sGAAsG;IACtG,4HAA4H;IAC5H,6FAA6F;IAC7F,qFAAqF;IACrF,kHAAkH;IAClH,iGAAiG,CAAC;AAEpG,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAExD;;;GAGG;AACH,IAAI,mBAAmB,GAAG,KAAK,CAAC;AAEhC,SAAS,wBAAwB,CAAC,QAAqB,EAAE,KAAc;IACrE,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC9D,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAiB;IACpD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,wBAAwB,CAAC;IAC7D,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAqB;IACvD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACrC,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC;QAAE,OAAO;IAEjF,2EAA2E;IAC3E,mBAAmB,GAAG,IAAI,CAAC;IAC3B,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAEzC,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,CAAC;QACxC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAqB;IACrD,mBAAmB,GAAG,IAAI,CAAC;IAC3B,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC1C,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,QAAqB;IACpE,IAAI,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE;QAAE,OAAO;IAC9C,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE;QAAE,OAAO;IAEtC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAExE,mBAAmB,GAAG,KAAK,CAAC;IAE5B,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,WAAW,CAC3C;QACE,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,6BAA6B,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,2CAA2C;KAClH,EACD,KAAK,IAAI,EAAE;QACT,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAC9C,2BAA2B,CAC5B,CAAC;QACF,QAAQ,CAAC,OAAO,CAAC,SAAS,CACxB,UAAU,IAAI,CAAC,IAAI,EAAE,EACrB,uBAAuB,CAAC,IAAI,CAAC,CAC9B,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,uEAAuE;IACvE,IAAI,mBAAmB;QAAE,OAAO;IAEhC,IAAI,EAAE;QAAE,MAAM,aAAa,CAAC,QAAQ,CAAC,CAAC;;QACjC,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC"}
@@ -1,12 +1,9 @@
1
1
  /** @jsxImportSource @opentui/react */
2
2
  /**
3
- * Typed confirmation surface (CORE-002, PICK-002, V2-073).
3
+ * Confirmation surface (CORE-002, PICK-002, V2-073).
4
4
  *
5
- * Ported from the classic TUI's `ConfirmModal`: y/n answer most kinds; reset
6
- * requires the deliberate "r" key instead of "y" so it can't be fat-fingered;
7
- * the plan-ready kind adds "p" to view the full plan without answering yet
8
- * (the confirm promise is intentionally left pending — /implement and
9
- * /discard remain available afterward, matching the classic TUI).
5
+ * Docked above the composer by default compact action bar, not a full-screen
6
+ * black modal. Keys: y/n (or r for reset, i/d/p for plan).
10
7
  */
11
8
  import type { ReactNode } from "react";
12
9
  import type { AppServices } from "../../bootstrap/composition-root.js";
@@ -17,5 +14,7 @@ export interface ConfirmModalProps {
17
14
  readonly theme: Theme;
18
15
  readonly request: ConfirmRequest;
19
16
  readonly onViewPlan?: (() => void) | undefined;
17
+ /** Compact strip above the input (preferred). */
18
+ readonly docked?: boolean | undefined;
20
19
  }
21
20
  export declare function ConfirmModal(props: ConfirmModalProps): ReactNode;
@@ -1,16 +1,17 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "@opentui/react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
2
  import { useKeyboard } from "@opentui/react";
3
+ import { TextAttributes } from "@opentui/core";
3
4
  import { chordFromKeyEvent } from "../../actions/chord-from-key.js";
4
5
  const TITLES = {
5
- tool: "ACTION REQUIRED · CONFIRMATION",
6
- pentest: "ACTION REQUIRED · AUTHORIZATION",
7
- reset: "ACTION REQUIRED · RESET CONFIRMATION",
8
- continue: "STEP LIMIT REACHED",
9
- plan: "PLAN READY · IMPLEMENT OR DISCARD",
10
- switch: "ACTION REQUIRED · CONFIRMATION",
6
+ tool: "CONFIRM ACTION",
7
+ pentest: "AUTHORIZE PENTEST",
8
+ reset: "CONFIRM RESET",
9
+ continue: "STEP LIMIT",
10
+ plan: "PLAN READY",
11
+ switch: "CONFIRM SWITCH",
11
12
  };
12
13
  export function ConfirmModal(props) {
13
- const { services, theme, request, onViewPlan } = props;
14
+ const { services, theme, request, onViewPlan, docked } = props;
14
15
  useKeyboard((key) => {
15
16
  if (key.eventType === "release")
16
17
  return;
@@ -26,8 +27,9 @@ export function ConfirmModal(props) {
26
27
  else if (request.kind === "plan") {
27
28
  if (chord === "y" || chord === "i")
28
29
  services.overlay.answerConfirm(true);
29
- else if (chord === "n" || chord === "d" || chord === "escape")
30
+ else if (chord === "n" || chord === "d" || chord === "escape") {
30
31
  services.overlay.answerConfirm(false);
32
+ }
31
33
  else if (chord === "p")
32
34
  onViewPlan?.();
33
35
  else
@@ -36,36 +38,73 @@ export function ConfirmModal(props) {
36
38
  else {
37
39
  if (chord === "y")
38
40
  services.overlay.answerConfirm(true);
39
- else if (chord === "n" || chord === "escape")
41
+ else if (chord === "n" || chord === "escape") {
40
42
  services.overlay.answerConfirm(false);
43
+ }
41
44
  else
42
45
  return;
43
46
  }
44
47
  key.preventDefault();
45
48
  });
46
- const color = request.kind === "pentest"
49
+ const accent = request.kind === "pentest"
47
50
  ? theme.mode
48
51
  : request.kind === "plan"
49
52
  ? theme.chipTeal
50
53
  : request.kind === "reset"
51
54
  ? theme.queued
52
- : theme.modalBorder;
55
+ : theme.cyan;
53
56
  const hint = request.kind === "reset"
54
- ? "r:reset · esc:cancel"
57
+ ? "r confirm · esc cancel"
55
58
  : request.kind === "plan"
56
- ? "y:implement · n:discard · p:view-plan · esc:cancel"
59
+ ? "y/i implement · n/d discard · p view plan · esc cancel"
57
60
  : request.kind === "continue"
58
- ? "y:continue · n:stop · esc:cancel"
59
- : "y:approve · n:deny · esc:cancel";
61
+ ? "y continue · n stop · esc cancel"
62
+ : "y approve · n deny · esc cancel";
63
+ // Soft-wrap long tool prompts for the dock width.
64
+ const promptLines = wrapPrompt(request.prompt, docked ? 88 : 72);
60
65
  return (_jsxs("box", { border: true, borderStyle: "rounded", style: {
61
66
  flexDirection: "column",
62
- width: "70%",
63
- borderColor: color,
67
+ width: docked ? "100%" : "70%",
68
+ borderColor: accent,
64
69
  backgroundColor: theme.statusBackground,
65
70
  paddingLeft: 1,
66
71
  paddingRight: 1,
67
- paddingTop: 1,
68
- paddingBottom: 1,
69
- }, children: [_jsxs("text", { style: { fg: theme.white, bg: color }, children: [" ", TITLES[request.kind], " "] }), _jsx("text", { content: " " }), _jsx("text", { style: { fg: theme.foreground }, children: request.prompt }), _jsx("text", { content: " " }), _jsx("text", { style: { fg: theme.border }, children: "─".repeat(40) }), _jsx("text", { content: " " }), _jsx("text", { style: { fg: theme.cyan }, children: hint })] }));
72
+ paddingTop: 0,
73
+ paddingBottom: 0,
74
+ }, children: [_jsxs("box", { style: { flexDirection: "row", width: "100%" }, children: [_jsx("text", { style: {
75
+ fg: theme.background,
76
+ bg: accent,
77
+ attributes: TextAttributes.BOLD,
78
+ }, children: ` ${TITLES[request.kind]} ` }), _jsx("text", { content: " " }), _jsx("text", { style: { fg: theme.muted, attributes: TextAttributes.DIM }, children: "awaiting your decision" })] }), promptLines.map((line, i) => (_jsx("text", { style: { fg: theme.foreground }, children: line }, i))), _jsxs("box", { style: { flexDirection: "row", width: "100%", marginTop: 0 }, children: [_jsx("text", { style: { fg: theme.cyan, attributes: TextAttributes.BOLD }, children: "\u203A " }), _jsx("text", { style: { fg: theme.cyan }, children: hint })] })] }));
79
+ }
80
+ function wrapPrompt(text, width) {
81
+ const raw = text.replace(/\r/g, "").trim();
82
+ if (!raw)
83
+ return [""];
84
+ const out = [];
85
+ for (const paragraph of raw.split("\n")) {
86
+ if (!paragraph.trim()) {
87
+ out.push("");
88
+ continue;
89
+ }
90
+ let line = "";
91
+ for (const word of paragraph.split(/\s+/)) {
92
+ if (!word)
93
+ continue;
94
+ if (!line) {
95
+ line = word;
96
+ }
97
+ else if (line.length + 1 + word.length <= width) {
98
+ line += ` ${word}`;
99
+ }
100
+ else {
101
+ out.push(line);
102
+ line = word;
103
+ }
104
+ }
105
+ if (line)
106
+ out.push(line);
107
+ }
108
+ return out.length > 0 ? out : [raw];
70
109
  }
71
110
  //# sourceMappingURL=confirm-modal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"confirm-modal.js","sourceRoot":"","sources":["../../../../src/tui-v2/components/modal/confirm-modal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"confirm-modal.js","sourceRoot":"","sources":["../../../../src/tui-v2/components/modal/confirm-modal.tsx"],"names":[],"mappings":"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"}
@@ -2,15 +2,8 @@
2
2
  /**
3
3
  * Masked secret entry (INPUT-009, CORE-002, V2-073).
4
4
  *
5
- * Ported from the classic TUI's `SecretInputPanel`, append/backspace only
6
- * a password field has no reason to support mid-string cursor movement, and
7
- * disabling it means the cursor never sits on a previously-typed character
8
- * (a moved cursor can reveal its glyph via inverse-video rendering even when
9
- * the glyph's own color matches the background). The real `<input>` still
10
- * owns typing/backspace/unicode natively (proven in `ComposerEditor`); only
11
- * its rendered color is set to the background, and the visible dots are a
12
- * separate `<text>` driven by length alone. The value only leaves this
13
- * component through `onSubmit`'s single call, never through logging.
5
+ * Docked above the composer same chrome as confirmations (no full-screen
6
+ * black wash). Value only leaves via onSubmit / answerSecret.
14
7
  */
15
8
  import { type ReactNode } from "react";
16
9
  import type { AppServices } from "../../bootstrap/composition-root.js";
@@ -20,5 +13,6 @@ export interface SecretModalProps {
20
13
  readonly services: AppServices;
21
14
  readonly theme: Theme;
22
15
  readonly request: SecretRequestView;
16
+ readonly docked?: boolean | undefined;
23
17
  }
24
18
  export declare function SecretModal(props: SecretModalProps): ReactNode;
@@ -1,23 +1,18 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "@opentui/react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
2
2
  /** @jsxImportSource @opentui/react */
3
3
  /**
4
4
  * Masked secret entry (INPUT-009, CORE-002, V2-073).
5
5
  *
6
- * Ported from the classic TUI's `SecretInputPanel`, append/backspace only
7
- * a password field has no reason to support mid-string cursor movement, and
8
- * disabling it means the cursor never sits on a previously-typed character
9
- * (a moved cursor can reveal its glyph via inverse-video rendering even when
10
- * the glyph's own color matches the background). The real `<input>` still
11
- * owns typing/backspace/unicode natively (proven in `ComposerEditor`); only
12
- * its rendered color is set to the background, and the visible dots are a
13
- * separate `<text>` driven by length alone. The value only leaves this
14
- * component through `onSubmit`'s single call, never through logging.
6
+ * Docked above the composer same chrome as confirmations (no full-screen
7
+ * black wash). Value only leaves via onSubmit / answerSecret.
15
8
  */
16
9
  import { useEffect, useRef, useState } from "react";
10
+ import { TextAttributes } from "@opentui/core";
17
11
  import { chordFromKeyEvent } from "../../actions/chord-from-key.js";
18
12
  const BLOCKED_CHORDS = new Set(["left", "right", "home", "end", "up", "down"]);
13
+ const ACCENT = "#e0b000";
19
14
  export function SecretModal(props) {
20
- const { services, theme, request } = props;
15
+ const { services, theme, request, docked } = props;
21
16
  const inputRef = useRef(null);
22
17
  const [length, setLength] = useState(0);
23
18
  useEffect(() => {
@@ -37,14 +32,19 @@ export function SecretModal(props) {
37
32
  const value = inputRef.current?.plainText ?? "";
38
33
  services.overlay.answerSecret(value.length > 0 ? value : undefined);
39
34
  }
40
- return (_jsxs("box", { style: {
35
+ return (_jsxs("box", { border: true, borderStyle: "rounded", style: {
41
36
  flexDirection: "column",
42
- width: "70%",
43
- border: true,
44
- borderColor: theme.border,
45
- backgroundColor: theme.background,
37
+ width: docked ? "100%" : "70%",
38
+ borderColor: ACCENT,
39
+ backgroundColor: theme.statusBackground,
46
40
  paddingLeft: 1,
47
41
  paddingRight: 1,
48
- }, children: [_jsxs("text", { style: { fg: theme.background, bg: "#e0b000" }, children: [" SECURE INPUT \u00B7 ", request.title.toUpperCase(), " "] }), _jsx("text", { style: { fg: theme.foreground }, children: request.prompt }), _jsxs("box", { style: { flexDirection: "row" }, children: [_jsx("text", { style: { fg: "#e0b000" }, children: "password \u203A " }), _jsx("text", { style: { fg: theme.foreground }, children: "•".repeat(length) }), _jsx("input", { ref: inputRef, focused: true, onContentChange: () => setLength(inputRef.current?.plainText.length ?? 0), onSubmit: submit, onKeyDown: onKeyDown, textColor: theme.background, backgroundColor: theme.background, style: { width: 1 } })] }), _jsx("text", { style: { fg: theme.border }, children: "─".repeat(40) }), _jsx("text", { content: " " }), _jsx("text", { style: { fg: theme.muted }, children: "enter:submit \u00B7 esc:cancel \u00B7 never saved or displayed" })] }));
42
+ paddingTop: 0,
43
+ paddingBottom: 0,
44
+ }, children: [_jsxs("box", { style: { flexDirection: "row", width: "100%" }, children: [_jsx("text", { style: {
45
+ fg: theme.background,
46
+ bg: ACCENT,
47
+ attributes: TextAttributes.BOLD,
48
+ }, children: ` SECURE · ${request.title.toUpperCase()} ` }), _jsx("text", { content: " " }), _jsx("text", { style: { fg: theme.muted, attributes: TextAttributes.DIM }, children: "never logged or echoed" })] }), _jsx("text", { style: { fg: theme.foreground }, children: request.prompt }), _jsxs("box", { style: { flexDirection: "row", width: "100%" }, children: [_jsx("text", { style: { fg: ACCENT, attributes: TextAttributes.BOLD }, children: "password \u203A " }), _jsx("text", { style: { fg: theme.foreground }, children: "•".repeat(Math.max(length, 0)) }), _jsx("input", { ref: inputRef, focused: true, onContentChange: () => setLength(inputRef.current?.plainText.length ?? 0), onSubmit: submit, onKeyDown: onKeyDown, textColor: theme.statusBackground, backgroundColor: theme.statusBackground, style: { width: 1 } })] }), _jsxs("box", { style: { flexDirection: "row", width: "100%" }, children: [_jsx("text", { style: { fg: theme.cyan, attributes: TextAttributes.BOLD }, children: "\u203A " }), _jsx("text", { style: { fg: theme.cyan }, children: "enter submit \u00B7 esc cancel" })] })] }));
49
49
  }
50
50
  //# sourceMappingURL=secret-modal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"secret-modal.js","sourceRoot":"","sources":["../../../../src/tui-v2/components/modal/secret-modal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"secret-modal.js","sourceRoot":"","sources":["../../../../src/tui-v2/components/modal/secret-modal.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,13 @@
1
1
  /** @jsxImportSource @opentui/react */
2
2
  /**
3
3
  * Dispatches the one active OverlayController request to its component
4
- * (V2-071..076). Full-screen absolute host with a solid backdrop so chat
5
- * content cannot bleed through pickers/modals, and so open/close never
6
- * reflows the intro card or status chrome underneath.
4
+ * (V2-071..076).
5
+ *
6
+ * Layout policy:
7
+ * - **confirm / secret** — docked as a compact block above the composer
8
+ * (bottom of the screen). No full-screen black wash.
9
+ * - **picker / pager / jobs / prompt-actions** — full-bleed host with solid
10
+ * backdrop so large surfaces stay readable and never reflow the intro card.
7
11
  */
8
12
  import type { ReactNode } from "react";
9
13
  import type { AppServices } from "../../bootstrap/composition-root.js";
@@ -13,5 +17,10 @@ export interface OverlayHostProps {
13
17
  readonly theme: Theme;
14
18
  readonly width: number;
15
19
  readonly height: number;
20
+ /**
21
+ * When set, confirm/secret render as an in-flow dock (passed from App above
22
+ * the composer). Full-screen overlays still use the absolute host.
23
+ */
24
+ readonly docked?: boolean | undefined;
16
25
  }
17
26
  export declare function OverlayHost(props: OverlayHostProps): ReactNode;
@@ -6,11 +6,28 @@ import { PromptActionsModal } from "../modal/prompt-actions-modal.js";
6
6
  import { SecretModal } from "../modal/secret-modal.js";
7
7
  import { Pager } from "../pager/pager.js";
8
8
  import { JobsPanel } from "../jobs/jobs-panel.js";
9
+ function isDockedKind(kind) {
10
+ return kind === "confirm" || kind === "secret";
11
+ }
9
12
  export function OverlayHost(props) {
10
- const { services, theme, width, height } = props;
13
+ const { services, theme, width, height, docked } = props;
11
14
  const state = useOverlayState(services.overlay);
12
15
  if (state.kind === "none")
13
16
  return null;
17
+ // Docked slot (above composer): only confirm + secret.
18
+ if (docked) {
19
+ if (!isDockedKind(state.kind))
20
+ return null;
21
+ return (_jsxs("box", { style: {
22
+ flexDirection: "column",
23
+ width: "100%",
24
+ flexShrink: 0,
25
+ marginBottom: 1,
26
+ }, children: [state.kind === "confirm" ? (_jsx(ConfirmModal, { services: services, theme: theme, request: state.request, onViewPlan: state.onViewPlan, docked: true })) : null, state.kind === "secret" ? (_jsx(SecretModal, { services: services, theme: theme, request: state.request, docked: true })) : null] }));
27
+ }
28
+ // Full-screen host: skip confirm/secret (they live in the dock).
29
+ if (isDockedKind(state.kind))
30
+ return null;
14
31
  return (_jsxs("box", { style: {
15
32
  position: "absolute",
16
33
  top: 0,
@@ -18,11 +35,9 @@ export function OverlayHost(props) {
18
35
  width,
19
36
  height,
20
37
  zIndex: 100,
21
- // Full-bleed fill so the padded shell underneath never shows through
22
- // edges (which used to look like a "broken" CLAI card under Ctrl+P).
23
38
  backgroundColor: theme.background,
24
39
  alignItems: "center",
25
40
  justifyContent: "center",
26
- }, children: [state.kind === "picker" ? (_jsx(Picker, { services: services, theme: theme, request: state.request })) : null, state.kind === "confirm" ? (_jsx(ConfirmModal, { services: services, theme: theme, request: state.request, onViewPlan: state.onViewPlan })) : null, state.kind === "secret" ? (_jsx(SecretModal, { services: services, theme: theme, request: state.request })) : null, state.kind === "prompt-actions" ? (_jsx(PromptActionsModal, { services: services, theme: theme, request: state.request })) : null, state.kind === "pager" ? (_jsx(Pager, { services: services, theme: theme, title: state.title, body: state.body })) : null, state.kind === "jobs" ? _jsx(JobsPanel, { services: services, theme: theme }) : null] }));
41
+ }, children: [state.kind === "picker" ? (_jsx(Picker, { services: services, theme: theme, request: state.request })) : null, state.kind === "prompt-actions" ? (_jsx(PromptActionsModal, { services: services, theme: theme, request: state.request })) : null, state.kind === "pager" ? (_jsx(Pager, { services: services, theme: theme, title: state.title, body: state.body })) : null, state.kind === "jobs" ? _jsx(JobsPanel, { services: services, theme: theme }) : null] }));
27
42
  }
28
43
  //# sourceMappingURL=overlay-host.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"overlay-host.js","sourceRoot":"","sources":["../../../../src/tui-v2/components/overlay/overlay-host.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AASlD,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACjD,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAEvC,OAAO,CACL,eACE,KAAK,EAAE;YACL,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,KAAK;YACL,MAAM;YACN,MAAM,EAAE,GAAG;YACX,qEAAqE;YACrE,qEAAqE;YACrE,eAAe,EAAE,KAAK,CAAC,UAAU;YACjC,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;SACzB,aAEA,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CACzB,KAAC,MAAM,IAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CACrE,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAC1B,KAAC,YAAY,IACX,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,KAAK,CAAC,OAAO,EACtB,UAAU,EAAE,KAAK,CAAC,UAAU,GAC5B,CACH,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CACzB,KAAC,WAAW,IAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CAC1E,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,CACjC,KAAC,kBAAkB,IAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,CACjF,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CACxB,KAAC,KAAK,IAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,GAAI,CAClF,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAC,SAAS,IAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC,CAAC,CAAC,IAAI,IAC3E,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"overlay-host.js","sourceRoot":"","sources":["../../../../src/tui-v2/components/overlay/overlay-host.tsx"],"names":[],"mappings":"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"}