@autonav/core 1.6.0 → 1.7.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 (257) hide show
  1. package/README.md +2 -2
  2. package/dist/adapter/index.d.ts +3 -3
  3. package/dist/adapter/index.d.ts.map +1 -1
  4. package/dist/adapter/index.js +3 -3
  5. package/dist/adapter/index.js.map +1 -1
  6. package/dist/adapter/navigator-adapter.d.ts +196 -0
  7. package/dist/adapter/navigator-adapter.d.ts.map +1 -0
  8. package/dist/adapter/navigator-adapter.js +579 -0
  9. package/dist/adapter/navigator-adapter.js.map +1 -0
  10. package/dist/cli/autonav.d.ts +2 -6
  11. package/dist/cli/autonav.d.ts.map +1 -1
  12. package/dist/cli/autonav.js +32 -53
  13. package/dist/cli/autonav.js.map +1 -1
  14. package/dist/cli/nav-chat.d.ts +2 -1
  15. package/dist/cli/nav-chat.d.ts.map +1 -1
  16. package/dist/cli/nav-chat.js +32 -3
  17. package/dist/cli/nav-chat.js.map +1 -1
  18. package/dist/cli/nav-init.d.ts +2 -1
  19. package/dist/cli/nav-init.d.ts.map +1 -1
  20. package/dist/cli/nav-init.js +12 -4
  21. package/dist/cli/nav-init.js.map +1 -1
  22. package/dist/cli/nav-install.d.ts +2 -1
  23. package/dist/cli/nav-install.d.ts.map +1 -1
  24. package/dist/cli/nav-install.js +4 -2
  25. package/dist/cli/nav-install.js.map +1 -1
  26. package/dist/cli/nav-memento.d.ts +3 -2
  27. package/dist/cli/nav-memento.d.ts.map +1 -1
  28. package/dist/cli/nav-memento.js +12 -6
  29. package/dist/cli/nav-memento.js.map +1 -1
  30. package/dist/cli/nav-mend.d.ts +2 -1
  31. package/dist/cli/nav-mend.d.ts.map +1 -1
  32. package/dist/cli/nav-mend.js +4 -1
  33. package/dist/cli/nav-mend.js.map +1 -1
  34. package/dist/cli/nav-migrate.d.ts +2 -1
  35. package/dist/cli/nav-migrate.d.ts.map +1 -1
  36. package/dist/cli/nav-migrate.js +2 -6
  37. package/dist/cli/nav-migrate.js.map +1 -1
  38. package/dist/cli/nav-query.d.ts +2 -1
  39. package/dist/cli/nav-query.d.ts.map +1 -1
  40. package/dist/cli/nav-query.js +12 -6
  41. package/dist/cli/nav-query.js.map +1 -1
  42. package/dist/cli/nav-standup.d.ts +18 -0
  43. package/dist/cli/nav-standup.d.ts.map +1 -0
  44. package/dist/cli/nav-standup.js +151 -0
  45. package/dist/cli/nav-standup.js.map +1 -0
  46. package/dist/cli/nav-uninstall.d.ts +2 -1
  47. package/dist/cli/nav-uninstall.d.ts.map +1 -1
  48. package/dist/cli/nav-uninstall.js +4 -2
  49. package/dist/cli/nav-uninstall.js.map +1 -1
  50. package/dist/cli/nav-update.d.ts +2 -1
  51. package/dist/cli/nav-update.d.ts.map +1 -1
  52. package/dist/cli/nav-update.js +11 -6
  53. package/dist/cli/nav-update.js.map +1 -1
  54. package/dist/conversation/App.d.ts +9 -2
  55. package/dist/conversation/App.d.ts.map +1 -1
  56. package/dist/conversation/App.js +304 -111
  57. package/dist/conversation/App.js.map +1 -1
  58. package/dist/conversation/index.d.ts +5 -0
  59. package/dist/conversation/index.d.ts.map +1 -1
  60. package/dist/conversation/index.js +17 -2
  61. package/dist/conversation/index.js.map +1 -1
  62. package/dist/harness/chibi-harness.d.ts +36 -0
  63. package/dist/harness/chibi-harness.d.ts.map +1 -0
  64. package/dist/harness/chibi-harness.js +383 -0
  65. package/dist/harness/chibi-harness.js.map +1 -0
  66. package/dist/harness/chibi-plugins/get_plugin_config +64 -0
  67. package/dist/harness/chibi-plugins/query_navigator +114 -0
  68. package/dist/harness/chibi-plugins/submit_answer +38 -0
  69. package/dist/harness/chibi-plugins/update_plugin_config +91 -0
  70. package/dist/harness/claude-code-harness.d.ts +24 -0
  71. package/dist/harness/claude-code-harness.d.ts.map +1 -0
  72. package/dist/harness/claude-code-harness.js +242 -0
  73. package/dist/harness/claude-code-harness.js.map +1 -0
  74. package/dist/harness/ephemeral-home.d.ts +34 -0
  75. package/dist/harness/ephemeral-home.d.ts.map +1 -0
  76. package/dist/harness/ephemeral-home.js +56 -0
  77. package/dist/harness/ephemeral-home.js.map +1 -0
  78. package/dist/harness/factory.d.ts +47 -0
  79. package/dist/harness/factory.d.ts.map +1 -0
  80. package/dist/harness/factory.js +84 -0
  81. package/dist/harness/factory.js.map +1 -0
  82. package/dist/harness/helpers.d.ts +58 -0
  83. package/dist/harness/helpers.d.ts.map +1 -0
  84. package/dist/harness/helpers.js +78 -0
  85. package/dist/harness/helpers.js.map +1 -0
  86. package/dist/harness/index.d.ts +14 -0
  87. package/dist/harness/index.d.ts.map +1 -0
  88. package/dist/harness/index.js +13 -0
  89. package/dist/harness/index.js.map +1 -0
  90. package/dist/harness/opencode-harness.d.ts +79 -0
  91. package/dist/harness/opencode-harness.d.ts.map +1 -0
  92. package/dist/harness/opencode-harness.js +537 -0
  93. package/dist/harness/opencode-harness.js.map +1 -0
  94. package/dist/harness/opencode-tools/get_plugin_config.ts +72 -0
  95. package/dist/harness/opencode-tools/query_navigator.ts +126 -0
  96. package/dist/harness/opencode-tools/submit_answer.ts +40 -0
  97. package/dist/harness/opencode-tools/update_plugin_config.ts +105 -0
  98. package/dist/harness/sandbox.d.ts +59 -0
  99. package/dist/harness/sandbox.d.ts.map +1 -0
  100. package/dist/harness/sandbox.js +152 -0
  101. package/dist/harness/sandbox.js.map +1 -0
  102. package/dist/harness/tool-server.d.ts +50 -0
  103. package/dist/harness/tool-server.d.ts.map +1 -0
  104. package/dist/harness/tool-server.js +27 -0
  105. package/dist/harness/tool-server.js.map +1 -0
  106. package/dist/harness/types.d.ts +168 -0
  107. package/dist/harness/types.d.ts.map +1 -0
  108. package/dist/harness/types.js +12 -0
  109. package/dist/harness/types.js.map +1 -0
  110. package/dist/index.d.ts +3 -2
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +4 -2
  113. package/dist/index.js.map +1 -1
  114. package/dist/interview/App.d.ts +4 -2
  115. package/dist/interview/App.d.ts.map +1 -1
  116. package/dist/interview/App.js +36 -56
  117. package/dist/interview/App.js.map +1 -1
  118. package/dist/interview/index.d.ts +3 -0
  119. package/dist/interview/index.d.ts.map +1 -1
  120. package/dist/interview/index.js +1 -0
  121. package/dist/interview/index.js.map +1 -1
  122. package/dist/interview/prompts.d.ts +3 -1
  123. package/dist/interview/prompts.d.ts.map +1 -1
  124. package/dist/interview/prompts.js +5 -1
  125. package/dist/interview/prompts.js.map +1 -1
  126. package/dist/interview/ui/ChatBanner.d.ts +17 -0
  127. package/dist/interview/ui/ChatBanner.d.ts.map +1 -0
  128. package/dist/interview/ui/ChatBanner.js +30 -0
  129. package/dist/interview/ui/ChatBanner.js.map +1 -0
  130. package/dist/interview/ui/ChatInput.d.ts +36 -0
  131. package/dist/interview/ui/ChatInput.d.ts.map +1 -0
  132. package/dist/interview/ui/ChatInput.js +304 -0
  133. package/dist/interview/ui/ChatInput.js.map +1 -0
  134. package/dist/interview/ui/MarkdownText.d.ts +13 -0
  135. package/dist/interview/ui/MarkdownText.d.ts.map +1 -0
  136. package/dist/interview/ui/MarkdownText.js +107 -0
  137. package/dist/interview/ui/MarkdownText.js.map +1 -0
  138. package/dist/interview/ui/index.d.ts +3 -0
  139. package/dist/interview/ui/index.d.ts.map +1 -1
  140. package/dist/interview/ui/index.js +3 -0
  141. package/dist/interview/ui/index.js.map +1 -1
  142. package/dist/memento/implementer-agent.d.ts +31 -0
  143. package/dist/memento/implementer-agent.d.ts.map +1 -0
  144. package/dist/memento/implementer-agent.js +95 -0
  145. package/dist/memento/implementer-agent.js.map +1 -0
  146. package/dist/memento/index.d.ts +6 -5
  147. package/dist/memento/index.d.ts.map +1 -1
  148. package/dist/memento/index.js +7 -5
  149. package/dist/memento/index.js.map +1 -1
  150. package/dist/memento/loop.d.ts +6 -5
  151. package/dist/memento/loop.d.ts.map +1 -1
  152. package/dist/memento/loop.js +872 -180
  153. package/dist/memento/loop.js.map +1 -1
  154. package/dist/memento/matrix-animation.d.ts +26 -0
  155. package/dist/memento/matrix-animation.d.ts.map +1 -1
  156. package/dist/memento/matrix-animation.js +93 -18
  157. package/dist/memento/matrix-animation.js.map +1 -1
  158. package/dist/memento/nav-protocol.d.ts +2 -2
  159. package/dist/memento/nav-protocol.d.ts.map +1 -1
  160. package/dist/memento/nav-protocol.js +39 -43
  161. package/dist/memento/nav-protocol.js.map +1 -1
  162. package/dist/memento/prompts.d.ts +21 -8
  163. package/dist/memento/prompts.d.ts.map +1 -1
  164. package/dist/memento/prompts.js +79 -39
  165. package/dist/memento/prompts.js.map +1 -1
  166. package/dist/memento/rate-limit.d.ts +85 -0
  167. package/dist/memento/rate-limit.d.ts.map +1 -0
  168. package/dist/memento/rate-limit.js +221 -0
  169. package/dist/memento/rate-limit.js.map +1 -0
  170. package/dist/memento/types.d.ts +6 -6
  171. package/dist/memento/types.d.ts.map +1 -1
  172. package/dist/memento/types.js +3 -3
  173. package/dist/memento/worker-agent.d.ts +4 -1
  174. package/dist/memento/worker-agent.d.ts.map +1 -1
  175. package/dist/memento/worker-agent.js +38 -54
  176. package/dist/memento/worker-agent.js.map +1 -1
  177. package/dist/registry.d.ts +35 -0
  178. package/dist/registry.d.ts.map +1 -0
  179. package/dist/registry.js +87 -0
  180. package/dist/registry.js.map +1 -0
  181. package/dist/repo-analyzer/index.d.ts +2 -1
  182. package/dist/repo-analyzer/index.d.ts.map +1 -1
  183. package/dist/repo-analyzer/index.js +6 -17
  184. package/dist/repo-analyzer/index.js.map +1 -1
  185. package/dist/skill-generator/index.d.ts +142 -0
  186. package/dist/skill-generator/index.d.ts.map +1 -0
  187. package/dist/skill-generator/index.js +510 -0
  188. package/dist/skill-generator/index.js.map +1 -0
  189. package/dist/standup/config.d.ts +19 -0
  190. package/dist/standup/config.d.ts.map +1 -0
  191. package/dist/standup/config.js +42 -0
  192. package/dist/standup/config.js.map +1 -0
  193. package/dist/standup/index.d.ts +24 -0
  194. package/dist/standup/index.d.ts.map +1 -0
  195. package/dist/standup/index.js +29 -0
  196. package/dist/standup/index.js.map +1 -0
  197. package/dist/standup/loop.d.ts +36 -0
  198. package/dist/standup/loop.d.ts.map +1 -0
  199. package/dist/standup/loop.js +508 -0
  200. package/dist/standup/loop.js.map +1 -0
  201. package/dist/standup/prompts.d.ts +62 -0
  202. package/dist/standup/prompts.d.ts.map +1 -0
  203. package/dist/standup/prompts.js +211 -0
  204. package/dist/standup/prompts.js.map +1 -0
  205. package/dist/standup/standup-protocol.d.ts +33 -0
  206. package/dist/standup/standup-protocol.d.ts.map +1 -0
  207. package/dist/standup/standup-protocol.js +189 -0
  208. package/dist/standup/standup-protocol.js.map +1 -0
  209. package/dist/standup/types.d.ts +185 -0
  210. package/dist/standup/types.d.ts.map +1 -0
  211. package/dist/standup/types.js +67 -0
  212. package/dist/standup/types.js.map +1 -0
  213. package/dist/templates/.gitignore.template +26 -0
  214. package/dist/templates/CLAUDE-pack.md.template +114 -0
  215. package/dist/templates/CLAUDE.md.template +153 -0
  216. package/dist/templates/README.md.template +174 -0
  217. package/dist/templates/config-pack.json.template +16 -0
  218. package/dist/templates/config.json.template +11 -0
  219. package/dist/templates/index.d.ts +22 -0
  220. package/dist/templates/index.d.ts.map +1 -0
  221. package/dist/templates/index.js +32 -0
  222. package/dist/templates/index.js.map +1 -0
  223. package/dist/templates/plugins.json.template +33 -0
  224. package/dist/templates/system-configuration.md.template +70 -0
  225. package/dist/tools/cross-nav.d.ts +21 -0
  226. package/dist/tools/cross-nav.d.ts.map +1 -0
  227. package/dist/tools/cross-nav.js +93 -0
  228. package/dist/tools/cross-nav.js.map +1 -0
  229. package/dist/tools/index.d.ts +1 -0
  230. package/dist/tools/index.d.ts.map +1 -1
  231. package/dist/tools/index.js +1 -0
  232. package/dist/tools/index.js.map +1 -1
  233. package/dist/tools/related-navs-config.d.ts +15 -0
  234. package/dist/tools/related-navs-config.d.ts.map +1 -0
  235. package/dist/tools/related-navs-config.js +132 -0
  236. package/dist/tools/related-navs-config.js.map +1 -0
  237. package/dist/tools/related-navs.d.ts +23 -0
  238. package/dist/tools/related-navs.d.ts.map +1 -0
  239. package/dist/tools/related-navs.js +107 -0
  240. package/dist/tools/related-navs.js.map +1 -0
  241. package/dist/tools/response.d.ts +3 -2
  242. package/dist/tools/response.d.ts.map +1 -1
  243. package/dist/tools/response.js +7 -11
  244. package/dist/tools/response.js.map +1 -1
  245. package/dist/tools/self-config.d.ts +2 -1
  246. package/dist/tools/self-config.d.ts.map +1 -1
  247. package/dist/tools/self-config.js +5 -9
  248. package/dist/tools/self-config.js.map +1 -1
  249. package/package.json +4 -1
  250. package/dist/memento/state.d.ts +0 -56
  251. package/dist/memento/state.d.ts.map +0 -1
  252. package/dist/memento/state.js +0 -156
  253. package/dist/memento/state.js.map +0 -1
  254. package/dist/migrations/versions/v1.4.0-rfc2119-skills.d.ts +0 -18
  255. package/dist/migrations/versions/v1.4.0-rfc2119-skills.d.ts.map +0 -1
  256. package/dist/migrations/versions/v1.4.0-rfc2119-skills.js +0 -207
  257. package/dist/migrations/versions/v1.4.0-rfc2119-skills.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/conversation/App.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AA8BH,UAAU,oBAAoB;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,eAAe,CAAC,EAC9B,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,iBAAiB,GAClB,EAAE,oBAAoB,2CAkUtB"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/conversation/App.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,EAAE,KAAK,OAAO,EAA0C,MAAM,qBAAqB,CAAC;AA8L3F,UAAU,oBAAoB;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,0DAA0D;IAC1D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,eAAe,CAAC,EAC9B,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,OAAO,EACP,UAAU,EACV,cAAqB,GACtB,EAAE,oBAAoB,2CAgYtB"}
@@ -1,14 +1,16 @@
1
- import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  /**
3
3
  * Ink-based TUI for interactive navigator conversation
4
4
  *
5
- * Uses Claude Agent SDK for authentication (leverages Claude Code's OAuth)
5
+ * Uses Harness abstraction for multi-turn conversation, supporting
6
+ * both Claude Code and chibi runtimes. Renders themed UI with markdown
7
+ * support, matrix-style activity animation, and cohesive styling.
6
8
  */
7
- import { useState, useEffect, useCallback, useRef } from "react";
9
+ import { useState, useCallback, useRef, useEffect } from "react";
8
10
  import { Box, Text, useApp, useInput } from "ink";
9
- import TextInput from "ink-text-input";
10
- import { query } from "@anthropic-ai/claude-agent-sdk";
11
+ import { ClaudeCodeHarness } from "../harness/index.js";
11
12
  import { buildConversationSystemPrompt } from "./prompts.js";
13
+ import { ChatBanner, ChatInput, MarkdownText, UserResponse, SystemMessage, ActivityIndicator, Divider, colors, boxChars, } from "../interview/ui/index.js";
12
14
  // Check if debug mode is enabled
13
15
  const DEBUG = process.env.AUTONAV_DEBUG === "1" || process.env.DEBUG === "1";
14
16
  // Model to use for conversation
@@ -18,116 +20,254 @@ function debugLog(...args) {
18
20
  console.error("[DEBUG]", ...args);
19
21
  }
20
22
  }
21
- export function ConversationApp({ navigatorName, navigatorPath, navigatorSystemPrompt, knowledgeBasePath, }) {
23
+ /** Format tool use into a compact hacker-aesthetic display string */
24
+ function formatToolParams(toolName, input) {
25
+ // Pick the most interesting params for each tool type
26
+ const name = toolName.toLowerCase();
27
+ const parts = [toolName];
28
+ if (name.includes("read") || name === "cat") {
29
+ if (input.file_path)
30
+ parts.push(String(input.file_path));
31
+ }
32
+ else if (name.includes("write") || name.includes("edit")) {
33
+ if (input.file_path)
34
+ parts.push(String(input.file_path));
35
+ }
36
+ else if (name.includes("grep") || name.includes("search")) {
37
+ if (input.pattern)
38
+ parts.push(`/${String(input.pattern)}/`);
39
+ if (input.path)
40
+ parts.push(String(input.path));
41
+ }
42
+ else if (name.includes("glob")) {
43
+ if (input.pattern)
44
+ parts.push(String(input.pattern));
45
+ }
46
+ else if (name.includes("bash")) {
47
+ if (input.command) {
48
+ const cmd = String(input.command);
49
+ parts.push(cmd.length > 60 ? cmd.slice(0, 57) + "..." : cmd);
50
+ }
51
+ }
52
+ else {
53
+ // Generic: show first string param value
54
+ for (const val of Object.values(input)) {
55
+ if (typeof val === "string" && val.length > 0) {
56
+ parts.push(val.length > 50 ? val.slice(0, 47) + "..." : val);
57
+ break;
58
+ }
59
+ }
60
+ }
61
+ return parts.join(" → ");
62
+ }
63
+ // ── Mood message pools ──────────────────────────────────────────────────────
64
+ const MOOD_START = [
65
+ "Getting oriented...",
66
+ "Surveying the landscape...",
67
+ "Scanning the terrain...",
68
+ ];
69
+ const MOOD_EXPLORING = [
70
+ "Deep in thought...",
71
+ "Connecting the dots...",
72
+ "Piecing it together...",
73
+ "Following the thread...",
74
+ "Traversing the knowledge graph...",
75
+ ];
76
+ const MOOD_THOROUGH = [
77
+ "Leaving no stone unturned...",
78
+ "Going deeper...",
79
+ "Thoroughly investigating...",
80
+ "Down the rabbit hole...",
81
+ ];
82
+ const MOOD_READING = [
83
+ "Studying the blueprints...",
84
+ "Reading between the lines...",
85
+ "Parsing the signal...",
86
+ "Absorbing context...",
87
+ ];
88
+ const MOOD_WRITING = [
89
+ "Fingers flying...",
90
+ "In the zone...",
91
+ "Crafting code...",
92
+ "Shaping the solution...",
93
+ "Reshaping reality...",
94
+ ];
95
+ const MOOD_BUILDING = [
96
+ "Moment of truth...",
97
+ "Compiling hopes and dreams...",
98
+ "Building...",
99
+ ];
100
+ const MOOD_TESTING = [
101
+ "Crossing fingers...",
102
+ "Testing fate...",
103
+ "Validating...",
104
+ ];
105
+ const MOOD_FLOWING = [
106
+ "On a roll!",
107
+ "Flow state achieved...",
108
+ "Unstoppable...",
109
+ "In the matrix...",
110
+ ];
111
+ const MOOD_ERROR = [
112
+ "Plot twist!",
113
+ "Hmm, that's odd...",
114
+ "Recalibrating...",
115
+ "Unexpected terrain...",
116
+ "Adjusting approach...",
117
+ ];
118
+ function randomFrom(pool) {
119
+ return pool[Math.floor(Math.random() * pool.length)] ?? pool[0];
120
+ }
121
+ function isReadTool(toolName) {
122
+ const n = toolName.toLowerCase();
123
+ return n.includes("read") || n === "glob" || n === "grep" || n === "cat";
124
+ }
125
+ function isWriteTool(toolName) {
126
+ const n = toolName.toLowerCase();
127
+ return n.includes("write") || n.includes("edit");
128
+ }
129
+ function isBuildCommand(toolName, input) {
130
+ if (toolName.toLowerCase() !== "bash")
131
+ return false;
132
+ const cmd = String(input.command || "");
133
+ return /\b(build|compile|tsc|webpack|esbuild)\b/.test(cmd);
134
+ }
135
+ function isTestCommand(toolName, input) {
136
+ if (toolName.toLowerCase() !== "bash")
137
+ return false;
138
+ const cmd = String(input.command || "");
139
+ return /\b(test|jest|vitest|check|lint)\b/.test(cmd);
140
+ }
141
+ function pickMood(toolName, input, state) {
142
+ if (state.lastError)
143
+ return randomFrom(MOOD_ERROR);
144
+ if (state.consecutiveSuccess >= 8)
145
+ return randomFrom(MOOD_FLOWING);
146
+ if (state.toolCount <= 2)
147
+ return randomFrom(MOOD_START);
148
+ if (isBuildCommand(toolName, input))
149
+ return randomFrom(MOOD_BUILDING);
150
+ if (isTestCommand(toolName, input))
151
+ return randomFrom(MOOD_TESTING);
152
+ if (isWriteTool(toolName))
153
+ return randomFrom(MOOD_WRITING);
154
+ if (isReadTool(toolName))
155
+ return randomFrom(MOOD_READING);
156
+ if (state.toolCount >= 10)
157
+ return randomFrom(MOOD_THOROUGH);
158
+ return randomFrom(MOOD_EXPLORING);
159
+ }
160
+ export function ConversationApp({ navigatorName, navigatorPath, navigatorSystemPrompt, knowledgeBasePath, harness, mcpServers, sandboxEnabled = true, }) {
22
161
  const [messages, setMessages] = useState([]);
23
162
  const [input, setInput] = useState("");
24
163
  const [isLoading, setIsLoading] = useState(false);
25
164
  const [activity, setActivity] = useState(null);
26
165
  const [error, setError] = useState(null);
27
- const queryRef = useRef(null);
166
+ const sessionRef = useRef(null);
167
+ const harnessRef = useRef(harness ?? new ClaudeCodeHarness());
168
+ const streamingTextRef = useRef("");
169
+ const hadToolsSinceTextRef = useRef(false);
170
+ const moodRef = useRef({ toolCount: 0, lastError: false, consecutiveSuccess: 0 });
171
+ const lastCtrlCRef = useRef(0);
172
+ const exitHintTimerRef = useRef(null);
173
+ const [exitHint, setExitHint] = useState(false);
28
174
  const { exit } = useApp();
29
- // Helper to determine activity type from tool name
30
- const getActivityFromTool = (toolName) => {
31
- const name = toolName.toLowerCase();
32
- if (name.includes("read") || name === "cat") {
33
- return { type: "reading", detail: toolName };
34
- }
35
- if (name.includes("write") || name.includes("edit")) {
36
- return { type: "writing", detail: toolName };
37
- }
38
- if (name.includes("grep") || name.includes("glob") || name.includes("search") || name.includes("find")) {
39
- return { type: "searching", detail: toolName };
40
- }
41
- return { type: "tool", detail: toolName };
42
- };
43
- // Format activity for display
44
- const formatActivity = (act) => {
45
- switch (act.type) {
46
- case "thinking":
47
- return "Thinking...";
48
- case "reading":
49
- return `Reading ${act.detail || "file"}...`;
50
- case "writing":
51
- return `Writing ${act.detail || "file"}...`;
52
- case "searching":
53
- return `Searching ${act.detail || ""}...`;
54
- case "tool":
55
- return `Running ${act.detail || "tool"}...`;
56
- default:
57
- return "Working...";
58
- }
59
- };
60
175
  // Build the full system prompt
61
176
  const systemPrompt = buildConversationSystemPrompt(navigatorName, navigatorSystemPrompt, knowledgeBasePath);
62
- // Process messages from Claude
63
- const processResponse = useCallback(async () => {
64
- const queryInstance = queryRef.current;
65
- if (!queryInstance)
66
- return;
177
+ // Process events from harness session
178
+ const processEvents = useCallback(async (events) => {
67
179
  try {
68
- debugLog("Waiting for Claude response...");
180
+ debugLog("Waiting for response...");
69
181
  setActivity({ type: "thinking" });
70
- for await (const message of queryInstance) {
71
- debugLog("Received message type:", message.type);
72
- if (message.type === "assistant") {
73
- // Extract text content and tool use from the assistant message
74
- const content = message.message.content;
75
- // Check for tool use blocks first
76
- const toolUseBlocks = content.filter((b) => b.type === "tool_use");
77
- // Update activity based on tool calls
78
- for (const toolBlock of toolUseBlocks) {
79
- const toolActivity = getActivityFromTool(toolBlock.name);
80
- setActivity(toolActivity);
81
- // Add activity message to show what's happening
82
- setMessages((prev) => [
83
- ...prev,
84
- { role: "activity", content: `⚙️ ${toolBlock.name}` },
85
- ]);
86
- }
87
- // Extract text content
88
- const textBlocks = content.filter((b) => b.type === "text");
89
- const text = textBlocks.map((b) => b.text).join("\n");
90
- if (text) {
91
- setActivity({ type: "thinking" });
92
- setMessages((prev) => [
93
- ...prev,
94
- { role: "assistant", content: text },
95
- ]);
96
- }
182
+ streamingTextRef.current = "";
183
+ hadToolsSinceTextRef.current = false;
184
+ // Reset mood state for each turn
185
+ moodRef.current = { toolCount: 0, lastError: false, consecutiveSuccess: 0 };
186
+ for await (const event of events) {
187
+ debugLog("Received event type:", event.type);
188
+ if (event.type === "tool_use") {
189
+ moodRef.current.toolCount += 1;
190
+ moodRef.current.consecutiveSuccess += 1;
191
+ moodRef.current.lastError = false;
192
+ const mood = pickMood(event.name, event.input, moodRef.current);
193
+ setActivity({ type: "tool", detail: mood });
194
+ hadToolsSinceTextRef.current = true;
195
+ // Format tool params for display
196
+ const paramSummary = formatToolParams(event.name, event.input);
197
+ setMessages((prev) => [
198
+ ...prev,
199
+ { role: "activity", content: paramSummary },
200
+ ]);
201
+ }
202
+ else if (event.type === "tool_result" && event.isError) {
203
+ moodRef.current.lastError = true;
204
+ moodRef.current.consecutiveSuccess = 0;
97
205
  }
98
- else if (message.type === "tool_progress") {
99
- // Tool execution happening
100
- debugLog("Tool progress:", message);
101
- // The tool_progress event has a tool_name property
102
- const toolName = message.tool_name;
103
- if (toolName) {
104
- setActivity(getActivityFromTool(toolName));
206
+ else if (event.type === "text") {
207
+ if (event.text && event.text.trim()) {
208
+ setActivity(null);
209
+ // If tools ran since last text, finalize previous message
210
+ // and start a new one so tool calls appear between text blocks
211
+ if (hadToolsSinceTextRef.current && streamingTextRef.current) {
212
+ // Finalize the previous streaming message
213
+ setMessages((prev) => prev.map((m) => m.streaming ? { ...m, streaming: false } : m));
214
+ streamingTextRef.current = "";
215
+ }
216
+ hadToolsSinceTextRef.current = false;
217
+ // Accumulate text for current block
218
+ if (streamingTextRef.current) {
219
+ streamingTextRef.current += "\n\n" + event.text;
220
+ }
221
+ else {
222
+ streamingTextRef.current = event.text;
223
+ }
224
+ const accumulated = streamingTextRef.current;
225
+ setMessages((prev) => {
226
+ // Find existing streaming message to update (search from end)
227
+ let lastStreamingIdx = -1;
228
+ for (let j = prev.length - 1; j >= 0; j--) {
229
+ if (prev[j]?.role === "assistant" && prev[j]?.streaming) {
230
+ lastStreamingIdx = j;
231
+ break;
232
+ }
233
+ }
234
+ if (lastStreamingIdx >= 0) {
235
+ // Update existing streaming message
236
+ const updated = [...prev];
237
+ updated[lastStreamingIdx] = {
238
+ role: "assistant",
239
+ content: accumulated,
240
+ streaming: true,
241
+ };
242
+ return updated;
243
+ }
244
+ // Create new streaming message
245
+ return [
246
+ ...prev,
247
+ { role: "assistant", content: accumulated, streaming: true },
248
+ ];
249
+ });
105
250
  }
106
251
  }
107
- else if (message.type === "result") {
108
- debugLog("Result received:", message.subtype);
252
+ else if (event.type === "result") {
253
+ debugLog("Result received:", event.success);
254
+ // Mark streaming message as complete
255
+ setMessages((prev) => prev.map((m) => m.streaming ? { ...m, streaming: false } : m));
109
256
  break;
110
257
  }
111
258
  }
259
+ streamingTextRef.current = "";
112
260
  setActivity(null);
113
261
  setIsLoading(false);
114
262
  }
115
263
  catch (err) {
116
264
  debugLog("Error processing response:", err);
117
265
  setError(err instanceof Error ? err.message : "Error communicating with Claude");
266
+ streamingTextRef.current = "";
118
267
  setActivity(null);
119
268
  setIsLoading(false);
120
269
  }
121
- }, [getActivityFromTool]);
122
- // Send initial greeting
123
- useEffect(() => {
124
- setMessages([
125
- {
126
- role: "system",
127
- content: `Connected to ${navigatorName}. Type /help for commands, or start chatting.`,
128
- },
129
- ]);
130
- }, [navigatorName]);
270
+ }, []);
131
271
  // Handle special commands
132
272
  const handleCommand = useCallback((command) => {
133
273
  const cmd = command.toLowerCase().trim();
@@ -161,6 +301,11 @@ Model: ${CONVERSATION_MODEL}`,
161
301
  return true;
162
302
  }
163
303
  if (cmd === "/clear") {
304
+ // Close existing session so next message starts fresh
305
+ if (sessionRef.current) {
306
+ sessionRef.current.close().catch(() => { });
307
+ sessionRef.current = null;
308
+ }
164
309
  setMessages([
165
310
  {
166
311
  role: "system",
@@ -170,6 +315,9 @@ Model: ${CONVERSATION_MODEL}`,
170
315
  return true;
171
316
  }
172
317
  if (cmd === "/exit") {
318
+ if (sessionRef.current) {
319
+ sessionRef.current.close().catch(() => { });
320
+ }
173
321
  exit();
174
322
  return true;
175
323
  }
@@ -192,38 +340,83 @@ Model: ${CONVERSATION_MODEL}`,
192
340
  setError(null);
193
341
  try {
194
342
  debugLog("Sending user message:", value);
195
- // Build conversation history for context
196
- const conversationHistory = messages
197
- .filter((m) => m.role !== "system")
198
- .map((m) => `${m.role === "user" ? "User" : "Assistant"}: ${m.content}`)
199
- .join("\n\n");
200
- const fullPrompt = conversationHistory
201
- ? `${conversationHistory}\n\nUser: ${value}`
202
- : value;
203
- const queryInstance = query({
204
- prompt: fullPrompt,
205
- options: {
343
+ let events;
344
+ if (sessionRef.current) {
345
+ // Multi-turn: send follow-up to existing session
346
+ events = sessionRef.current.send(value);
347
+ }
348
+ else {
349
+ // First message: create new session
350
+ const session = harnessRef.current.run({
206
351
  model: CONVERSATION_MODEL,
207
352
  systemPrompt,
208
- permissionMode: "acceptEdits", // Allow file operations
209
- cwd: navigatorPath, // Set working directory to navigator
210
- },
211
- });
212
- queryRef.current = queryInstance;
213
- await processResponse();
353
+ permissionMode: "acceptEdits",
354
+ cwd: navigatorPath,
355
+ mcpServers,
356
+ // Per-nav sandbox: chat defaults to enabled (read-only access)
357
+ ...(sandboxEnabled ? {
358
+ sandbox: {
359
+ readPaths: [navigatorPath],
360
+ },
361
+ } : {}),
362
+ }, value);
363
+ sessionRef.current = session;
364
+ events = session;
365
+ }
366
+ await processEvents(events);
214
367
  }
215
368
  catch (err) {
216
369
  debugLog("Error sending message:", err);
217
370
  setError(err instanceof Error ? err.message : "Failed to send message");
218
371
  setIsLoading(false);
219
372
  }
220
- }, [isLoading, messages, systemPrompt, navigatorPath, handleCommand, processResponse]);
221
- // Handle Ctrl+C or Ctrl+D to exit
373
+ }, [isLoading, systemPrompt, navigatorPath, handleCommand, processEvents]);
374
+ // Handle Ctrl+C / Ctrl+D (double-tap same key within 7s to exit)
375
+ const lastExitKeyRef = useRef(null);
222
376
  useInput((input, key) => {
223
377
  if (key.ctrl && (input === "c" || input === "d")) {
224
- exit();
378
+ const pressedKey = input;
379
+ const now = Date.now();
380
+ if (now - lastCtrlCRef.current < 7000 && lastExitKeyRef.current === pressedKey) {
381
+ // Second press of same key within 7 seconds — exit
382
+ if (sessionRef.current) {
383
+ sessionRef.current.close().catch(() => { });
384
+ }
385
+ exit();
386
+ }
387
+ else {
388
+ // First press (or switched keys) — show hint matching the key they pressed
389
+ lastCtrlCRef.current = now;
390
+ lastExitKeyRef.current = pressedKey;
391
+ setExitHint(pressedKey);
392
+ if (exitHintTimerRef.current)
393
+ clearTimeout(exitHintTimerRef.current);
394
+ const timer = setTimeout(() => {
395
+ setExitHint(false);
396
+ lastExitKeyRef.current = null;
397
+ }, 7000);
398
+ timer.unref(); // Don't keep the event loop alive after Ink unmounts
399
+ exitHintTimerRef.current = timer;
400
+ }
225
401
  }
226
402
  });
227
- return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsxs(Box, { marginBottom: 1, children: [_jsxs(Text, { bold: true, color: "cyan", children: ["\uD83D\uDCAC ", navigatorName] }), _jsx(Text, { color: "gray", children: " - conversation mode" })] }), _jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "gray", children: "Type /help for commands. Press Ctrl+C or Ctrl+D to exit." }) }), messages.map((msg, i) => (_jsx(Box, { marginBottom: 1, flexDirection: "column", children: msg.role === "user" ? (_jsxs(Box, { children: [_jsx(Text, { color: "green", children: "you › " }), _jsx(Text, { children: msg.content })] })) : msg.role === "assistant" ? (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: "blue", children: [navigatorName, ":"] }), _jsx(Box, { marginLeft: 2, children: _jsx(Text, { children: msg.content }) })] })) : msg.role === "activity" ? (_jsx(Box, { children: _jsx(Text, { color: "yellow", dimColor: true, children: msg.content }) })) : (_jsx(Box, { children: _jsx(Text, { color: "gray", dimColor: true, children: msg.content }) })) }, i))), error && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: "red", children: ["Error: ", error] }) })), isLoading && activity && (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "cyan", children: formatActivity(activity) }) })), !isLoading && (_jsxs(Box, { children: [_jsx(Text, { color: "green", children: "you › " }), _jsx(TextInput, { value: input, onChange: setInput, onSubmit: handleSubmit, placeholder: "Type a message..." })] }))] }));
403
+ // Clean up timers on unmount so Node can exit
404
+ useEffect(() => {
405
+ return () => {
406
+ if (exitHintTimerRef.current)
407
+ clearTimeout(exitHintTimerRef.current);
408
+ };
409
+ }, []);
410
+ // Determine if we should show the banner (only when no messages yet)
411
+ const showBanner = messages.length === 0;
412
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [showBanner && (_jsx(ChatBanner, { navigatorName: navigatorName, model: CONVERSATION_MODEL })), messages.map((msg, i) => {
413
+ // Check if this is the last message before a role switch (for dividers)
414
+ const next = messages[i + 1];
415
+ const isEndOfTurn = msg.role === "assistant" &&
416
+ !msg.streaming &&
417
+ next !== undefined &&
418
+ next.role !== "activity";
419
+ return (_jsxs(Box, { flexDirection: "column", children: [msg.role === "user" ? (_jsx(UserResponse, { content: msg.content })) : msg.role === "assistant" ? (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { marginBottom: 0, children: _jsxs(Text, { color: colors.accent, children: [boxChars.single.vertical, " ", navigatorName] }) }), _jsx(Box, { marginLeft: 2, children: _jsx(MarkdownText, { content: msg.content }) })] })) : msg.role === "activity" ? (_jsx(Box, { marginLeft: 4, marginBottom: 0, children: _jsxs(Text, { color: colors.dimmed, children: [boxChars.single.vertical, " ", "\u2699\uFE0F", " ", msg.content] }) })) : (_jsx(SystemMessage, { content: msg.content })), isEndOfTurn && _jsx(Divider, {})] }, i));
420
+ }), error && (_jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: colors.error, children: ["Error: ", error] }) })), isLoading && activity && (_jsx(Box, { marginBottom: 1, marginLeft: 2, children: _jsx(ActivityIndicator, { lines: 1, width: 30, message: activity.type === "thinking" ? "thinking..." : (activity.detail ?? "working...") }) })), exitHint && (_jsx(Box, { marginBottom: 0, children: _jsxs(Text, { color: colors.warning, children: ["Press Ctrl+", exitHint === "d" ? "D" : "C", " again to exit"] }) })), !isLoading && (_jsx(ChatInput, { value: input, onChange: setInput, onSubmit: handleSubmit, placeholder: "Type a message..." }))] }));
228
421
  }
229
422
  //# sourceMappingURL=App.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/conversation/App.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/conversation/App.tsx"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * Exports the runConversationTUI function which launches an Ink-based
5
5
  * conversational interface for managing navigators.
6
6
  */
7
+ import type { Harness } from "../harness/index.js";
7
8
  export { buildConversationSystemPrompt } from "./prompts.js";
8
9
  /**
9
10
  * Check if the current environment supports interactive TTY input
@@ -17,6 +18,10 @@ export interface ConversationOptions {
17
18
  navigatorPath: string;
18
19
  navigatorSystemPrompt: string;
19
20
  knowledgeBasePath: string;
21
+ harness?: Harness;
22
+ mcpServers?: Record<string, unknown>;
23
+ /** Whether sandbox is enabled for chat (default: true) */
24
+ sandboxEnabled?: boolean;
20
25
  }
21
26
  /**
22
27
  * Run the interactive conversation TUI
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAE7D;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAM/C;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB9E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEnD,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAE7D;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAM/C;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,0DAA0D;IAC1D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC9E"}
@@ -28,15 +28,30 @@ export function runConversationTUI(options) {
28
28
  if (!isInteractiveTerminal()) {
29
29
  return Promise.reject(new Error("Interactive conversation requires a TTY terminal."));
30
30
  }
31
+ // Suppress default SIGINT during the Ink session.
32
+ // In raw mode Ctrl+C goes through useInput, but during startup/teardown
33
+ // SIGINT can still slip through. Double-press within 2s forces immediate exit.
34
+ let lastSigint = 0;
35
+ const sigintHandler = () => {
36
+ const now = Date.now();
37
+ if (now - lastSigint < 2000) {
38
+ process.exit(0);
39
+ }
40
+ lastSigint = now;
41
+ };
42
+ process.on("SIGINT", sigintHandler);
31
43
  return new Promise((resolve, reject) => {
32
44
  try {
33
- const instance = render(React.createElement(ConversationApp, options));
34
- // Wait for the app to exit
45
+ const instance = render(React.createElement(ConversationApp, options), { exitOnCtrlC: false });
46
+ // Wait for the app to exit, then restore terminal state
35
47
  instance.waitUntilExit().then(() => {
48
+ process.removeListener("SIGINT", sigintHandler);
49
+ instance.cleanup();
36
50
  resolve();
37
51
  });
38
52
  }
39
53
  catch (err) {
54
+ process.removeListener("SIGINT", sigintHandler);
40
55
  reject(err);
41
56
  }
42
57
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAE7D;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,OAAO,CACZ,OAAO,CAAC,KAAK,CAAC,KAAK;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK;QACpB,OAAO,CAAC,KAAK,CAAC,UAAU,CACzB,CAAC;AACJ,CAAC;AAYD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA4B;IAC7D,oDAAoD;IACpD,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAC7B,mDAAmD,CACpD,CAAC,CAAC;IACL,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,CACrB,KAAK,CAAC,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,CAC9C,CAAC;YAEF,2BAA2B;YAC3B,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACjC,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/conversation/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAE7D;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,OAAO,CACZ,OAAO,CAAC,KAAK,CAAC,KAAK;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK;QACpB,OAAO,CAAC,KAAK,CAAC,UAAU,CACzB,CAAC;AACJ,CAAC;AAgBD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA4B;IAC7D,oDAAoD;IACpD,IAAI,CAAC,qBAAqB,EAAE,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAC7B,mDAAmD,CACpD,CAAC,CAAC;IACL,CAAC;IAED,kDAAkD;IAClD,wEAAwE;IACxE,+EAA+E;IAC/E,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,MAAM,aAAa,GAAG,GAAG,EAAE;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,GAAG,GAAG,UAAU,GAAG,IAAI,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,UAAU,GAAG,GAAG,CAAC;IACnB,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAEpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,CACrB,KAAK,CAAC,aAAa,CAAC,eAAe,EAAE,OAAO,CAAC,EAC7C,EAAE,WAAW,EAAE,KAAK,EAAE,CACvB,CAAC;YAEF,wDAAwD;YACxD,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBACjC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAChD,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAChD,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}